# 2026-03-05

## 08:46 AEDT — Incident plan checkpoint (Rocky)

Rocky requested that the recovery plan be persisted so we can resume without losing place and finish by lunchtime.

### Agreed execution order
1. Task 1 — Rivet auth/model recovery (remove Anthropic dependency and fix heartbeat/subagent model paths)
2. Task 2 — Control Centre live wiring (minimum viable live pages first)
3. Task 3 — Documentation cleanup

### Safety constraints locked in
- Use Rivet config path: `/root/.clawdbot/openclaw.json`
- Do **not** wipe `sessions.json` during active incident (backup only)
- Rivet target model chain now:
  - primary: `openrouter/openai/gpt-5.3-codex`
  - fallbacks: `minimax/MiniMax-M2.5`, `openrouter/openai/gpt-5.2`
  - heartbeat.model: `openrouter/openai/gpt-5.3-codex`
  - subagents.model: `minimax/MiniMax-M2.5`
- Gemini fallback only after explicit model-id validation on this account route

### Tonight/lunchtime minimum deliverables
- No OAuth refresh failures in gateway logs
- Successful heartbeat cycle
- Control Centre showing real (non-demo) rows on core pages
- Proof-based closeout with logs + URL + resumed interrupted task

### Product boundary decision (Rocky)
- Control Centre should live in Growth Engine/internal private app, **not** on the public marketplace site.
- Treat this as architecture direction for wiring/routing decisions today.

### Related fixes shipped this morning (builder)
- UI spacing fix on contractor profile edit page to stop save bar blocking website field
- Website normalization: auto-prefix `https://` when users save `www...` URLs
- Redirect `/cor/*` -> `/contractor/*`
- Website discovery hardened to avoid unrelated domain autofill (e.g., `lf.net` false match)


## 17:47 AEDT — Durable memory flush (Control Centre + CCVPS bridge + memory architecture)

### Control Centre execution state
- Confirmed correct Command Centre repo/path is `/home/ccuser/opsman-control-centre` (not `/ceo` on public app).
- Milestone 2 delivered there: `src/hooks/useSupabase.js` created with cc_* queries/mutations.
- Commit in CC repo: `aae9ba2` — `feat: add Supabase query and mutation hooks for control centre live data`.
- Core page wiring milestones (CommandCentre/Tasks/Council realtime + deploy proof) remained pending at this checkpoint.

### CCVPS direct bridge restoration
- Added direct `ccvps` target/actions to Builder bridge script:
  - File: `/home/ccuser/the-50-dollar-app/scripts/agent-bridge.js`
  - Actions: `ccvps run`, `ccvps inbox`, `ccvps logs`, `ccvps status`
  - Improved failure diagnostics by surfacing latest CCVPS log tail.
- Commit in app repo: `95a8a84` — `feat: add direct ccvps bridge actions and actionable failure logs`.

### CCVPS auth incident + fix outcome
- Initial direct bridge runs failed with Anthropic OAuth expiry (`401 OAuth token has expired`) from CCVPS trigger path.
- Rocky copied refreshed Claude credentials to VPS users (`/root/.claude/.credentials.json` and `/home/ccuser/.claude/.credentials.json`).
- Post-fix verification succeeded from Builder side:
  - `agent-bridge.js ccvps run "..."` returned `BRIDGE_OK`, exit code 0.
  - Verified log at `/home/ccuser/rateright-growth/rivet/logs/ccvps/task_20260305_172428.log`.
- Durable rule: CCVPS trigger path is now operational again via `trigger-ccvps.sh` bridge.

### Collaboration model decision (Rocky)
- Preferred operating model: Rocky/Builder supervise + define acceptance/KPIs, Claude Code executes quickly.
- Builder role explicitly expected as senior dev QA gate: enforce criteria/KPI checks before closure.

### Memory system direction (strategic)
- Rocky strongly aligned with markdown-file-first memory architecture; "markdown files are the oxygen" framing.
- Requested investigation of prior staged memory plans; likely references old 3-4 stage/system architecture design.
- Located relevant archived design: `/home/ccuser/rateright-growth/rivet/archive/SYSTEM-ARCHITECTURE.md` with phased memory/knowledge-layer approach (topic files, hybrid search, session indexing, daily consolidation, Notion structured layer).
- Requested next: unify old staged memory design with modern Obsidian + Claude Code workflow and SOP.

### Local CloudCode bridge intent
- Rocky wants Builder to talk to both CCVPS and local CloudCode.
- Confirmed requirement: local machine must expose reachable/authenticated bridge endpoint before Builder can orchestrate it remotely.
- Planned pattern: `localcc` target in agent bridge with fallback to `ccvps` when local is offline.

