--- source: raw/personal-os-catchup-plan-2026-04-27.md content_hash: 5081ceb719104e1b7c6b5edd642c1daf38b3fd7cf1a96442a00516e7cdb15379 namespace: work last_synced: 2026-06-01 confidence: 0.8 tags: [personal-os, planning, executor, catchup] --- # Personal OS — Catch-Up Plan (2026-04-27) Handoff doc for the executor agent: what to build next and why. Companion to [[personal-os-state-2026-04-27]] (state snapshot). All open questions resolved at write time; postponed: NAS migration, personal, Phase 2-family. ## Architectural Principle **No new YAML files, no new shell scripts, no new launchd plists.** Everything extends existing components: postgres tables, `generate-status.js` queries, prompt files in `agent/prompts/`, Eagle's SOUL.md rules. The system has enough moving parts. ## Nine Deliverables (Dependency Order) ### 1. Schema migration Three additions to [[personal-os-schema]]: - `corrections_log` — Tactic records pushback by `reason_tag`, Retrospector aggregates patterns. Table beats markdown because Retrospector needs `GROUP BY`. - `executor_runs` — state machine for autonomous executor work (`analyzing → awaiting_analysis_approval → fixing → pr_open → ci_running → ci_failed → awaiting_user → complete`). Survives worker crashes mid-run. - `activity_daily.quadrant` column — `project | aor | career | strategy | other` for Retrospector drift detection. ### 2. `generate-status.js` — three new query blocks - **Advisor pipeline**: last 14d advisor-tagged tasks → new `## ⚡ Career` section. Empty result → omit (no noise). - **Visibility gaps**: open Assessment / O-N / O-L tasks where Alex hasn't commented in 7+ days → `## 📊 Visibility` section. - **Quadrant classification at AW write time**: map project → quadrant using a static map plus a *dynamic* "current top priority" slot read from config so it shifts as focus shifts. ### 3. `inbox-triage.md` STEP 0 Gating + scope filter at prompt level (not wrapper) so the agent can override on edge cases: - Active calendar meeting → silent exit. - `focus_score > 60` + Xcode/Cursor + 20+ min uninterrupted → silent unless 🔴 section is 3h+ stale. - Scope: only **new** signal (new human comments, new assignments, Ship/TD status changes, new mentions). **Never** overdue tasks (those belong in `daily-brief`, not `#inbox`). ### 4. `retrospector.md` — SQL-based blocks - Correction patterns: `reason_tag` count ≥ 3 in last 4 weeks. - Quadrant drift: pivot weeks × quadrants; flag any quadrant < 5% for 3+ weeks. Career quadrant gets strongest flag — it's first to collapse. - Visibility: weekly count of strategic comments — measurable proxy for the "thin Strategic Leadership" EP3 gap. ### 5. Eagle SOUL.md — corrections_log writeback On any user pushback, classify `reason_tag` and `INSERT INTO corrections_log` *before* responding. Eagle writes, no separate hook — the natural moment to capture a correction is during the conversation. ### 6. Executor v2 — draft-PR flow **Single human gate**: Analysis approval. Then autonomous: worktree → build → test → branch → push → `gh pr create --draft --assignee @me` (no `--reviewer`) → self-review comment → CI loop (poll every 10 min, auto-fix up to 3 attempts, escalate on exhaustion). Hard prohibitions baked into the prompt: never push to `main` / `develop` / `release/*`, never non-draft PR, never `--reviewer`, never `gh pr merge`, never modify `.github/` or CI configs without explicit thread confirmation. Draft + `assignee=@me` + no reviewers = durable surface visible in "assigned to me" without dragging the team into WIP work. ### 7. Microsoft 365 MCP into Hermes Wire `outlook_calendar_search` into the Hermes MCP config so `inbox-triage`, `weekly-plan`, and `daily-brief` can all check for active meetings. STEP 0 gating depends on this. Wire once at the config layer, not per prompt. ### 8. Vault consolidation Move process docs from `~/Developer/personal-os/` into `~/obsidian/work/wiki/`. Runtime files (`system-prompt.md`, `agent/prompts/*.md`, SOUL/IDENTITY) **stay in place**. **Decision rule**: process/convention → vault; runtime config → original location. **Copy** (don't move) `apple-browsers/.cursor/*.mdc` files because Cursor IDE still reads them in-tree. Verification step is non-negotiable — run each prompt/skill end-to-end after the move. ### 9. Executor PR template (Option B — inline) Team PR template requires manual confirmation of task / reviewer / description. For the autonomous flow all three are deterministic. Inline a variant in the executor prompt that auto-generates the body (task link, root cause, fix summary, build/test status, self-review checklist, notes for reviewer). Draft state is the safety net. ## Execution Order Items 1–9 are largely independent; only Executor v2 (item 6 prompt rewrite) requires schema (1), vault consolidation (8), and PR template (9) first. Each step ends with a concrete test (insert a row, run a query, post to thread, etc.). ## "Done" Looks Like 1. Retrospector says specific things ("deferred 4×", "Career <5% for 3 weeks", "3 strategic comments vs 0"). 2. `#inbox` stays signal-dense — empty or 1–2 entries most days, no pings during meetings. 3. `status.md` has a `## ⚡ Career` section. 4. Pushback in any channel → one DB row, no ceremony. 5. "fix [task]" in `#executor` → analysis → approval → draft PR within 30 min for trivial bugs, CI runs autonomously. 6. Vault is the one searchable surface for `.mdc`, UI testing skill, and process docs via [[obsidian-mcp]]. ## Related [[personal-os-state-2026-04-27]] [[personal-os-schema]] [[wiki-ingest-process]] [[ddg-asana-workflow]]