# 2026-02-23 — Builder Daily Log

## Agent Memory Infrastructure Fix (Priority Task from Michael)

### Root Cause Found
5 agents (sentinel, harper, radar, herald, cog) had NO profile-specific clawdbot configs (`~/.clawdbot-{profile}/clawdbot.json`). Without these:
- Workspace resolved to builder's `/home/ccuser/the-50-dollar-app` (from shared default config)
- Agents received **Builder's** SOUL.md, AGENTS.md, HEARTBEAT.md in their system prompts
- They thought they were Builder, not themselves
- Memory files were created in the right dirs (via SystemD WorkingDirectory cwd) but context was wrong

### The Fix
Created `~/.clawdbot-{agent}/clawdbot.json` for all 5 agents with correct workspace paths:
- sentinel → `/home/ccuser/sentinel`
- harper → `/home/ccuser/harper`  
- radar → `/home/ccuser/radar`
- herald → `/home/ccuser/herald`
- cog → `/home/ccuser/cog`

Restarted all 5 services. All came back active.

### Other Findings
- Builder missing today's daily log (created now) and Feb 21
- Rivet has good memory coverage (daily logs + fleet-doctor)
- Susan has excellent coverage (daily logs with 90+ lines)
- The `/home/ccuser/rateright-growth/{agent}` directories are empty shells — real workspaces are at `/home/ccuser/{agent}`

## Feature Implementation — Priority 1 & 2 (SMS + No-Show)

### Built (commit c968115)
1. **SMS Service** (`src/lib/sms.ts`):
   - Twilio integration with lazy-init client
   - AU phone number normalization (E.164)
   - SMS templates for all notification events
   - 480-char truncation for multi-segment safety

2. **SMS wired into existing flows**:
   - Worker applies → SMS to contractor
   - Worker hired (payment confirmed) → SMS to worker
   - No-show detected → SMS to both parties

3. **No-Show API** (`/api/match/no-show`):
   - 48-hour grace period from start_date (or hired_at fallback)
   - Contractor-only access (verified via job ownership)
   - Flags match, creates in-app notification, sends SMS to both parties
   - Idempotent (can't double-report)

4. **No-Show UI** on contractor hired detail page:
   - Report button with confirmation dialog
   - Shows "already reported" state
   - Grace period enforcement with human-readable error

### BLOCKED
- DB migration `supabase/add-no-show-columns.sql` needs manual run
- DATABASE_URL auth is stale (password rotated?)
- Columns needed: `no_show`, `no_show_reported_at`, `no_show_reported_by` on matches table
- **Rocky needs to run the SQL in Supabase dashboard or reset the DB password**
