--- source: raw/personal-os-catchup-plan-2026-04-27.md content_hash: 5081ceb719104e1b7c6b5edd642c1daf38b3fd7cf1a96442a00516e7cdb15379 namespace: work last_synced: 2026-05-30 confidence: 0.9 tags: [personal-os, plan, executor, catchup, 2026-04-27] --- # Personal OS — Catch-Up Plan (2026-04-27) Handoff document for the executor agent: what to build next, in what order, and why. Companion to [[personal-os-state-2026-04-27]] which tracks live state. By 2026-04-28 every item below shipped except the partial MS365 MCP wiring (item 1.7). ## Context Alex is a macOS Browser DRI at DuckDuckGo with an ADHD profile and a fully-async workflow (Asana + Slack). The Personal OS holds work context outside Alex's head — preventing lost comments, runaway projects, and silent collapse of the career quadrant. Original four-agent design from `personal-os-design-1.md`: 1. **Стратег** — scheduled Claude reads Asana, writes `status.md`. 2. **Тактик** — reactive layer over `status.md` + ActivityWatch + Calendar; protects focus. 3. **Ретроспектор** — Friday-only, multi-week patterns. 4. **Исполнитель** — on-demand worker that drafts diffs and comments. Pre-plan status: Стратег ✅, Тактик 🟡 (no focus gating, no Calendar), Ретроспектор ✅, Исполнитель 🟡 (v1 only, manual STOP gates). **Architectural principle (re-confirmed):** no new YAML, no new shell scripts, no new launchd plists. Everything extends what already exists — Postgres tables, `generate-status.js` queries, prompt files in `agent/prompts/`, Eagle's SOUL.md rules. ## Deliverables (dependency-ordered) ### 1.1 Schema migration (single SQL file) Adds `corrections_log` (date, week_number, source, original_plan, correction, deferred_gids[], reason_tag), `executor_runs` (state machine for autonomous executor: `analyzing → awaiting_analysis_approval → fixing → pr_open → ci_running → ci_failed → awaiting_user → complete`), and a `quadrant TEXT` column on `activity_daily` (`project|aor|career|strategy|other`). Tables over markdown because Retrospector needs aggregates, not narrative. See [[personal-os-schema]]. ### 1.2 `generate-status.js` — three new query blocks Career advisor pipeline (open tasks where notes mention "Project Advisor: Set the custom field"), visibility gaps (Assessments / O-N / O-L tasks where Alex hasn't commented in 7+ days), and quadrant classification at AW write time (project→quadrant map; top-priority project is dynamic via config). Empty sections are omitted, not labelled "No opportunities" — noise discipline. ### 1.3 `inbox-triage.md` STEP 0 — focus gating + scope filter Prompt-level gate (not a wrapper script) so the agent retains override judgment. Reads latest `activity_daily` focus_score / current_app, plus MS365 calendar for active meetings. Skips when in a meeting, or when focus_score > 60 in Xcode/Cursor/VSCode for 20+ minutes (unless `status.md` has 🔴 sections older than 3h). Scope filter: inbox = NEW signal only; overdue stays in daily-brief. ### 1.4 `retrospector.md` — three SQL blocks Correction patterns (`reason_tag` counts over 4 weeks ≥ 3), quadrant drift (4-week × 4-quadrant pivot; flag career under 5% for 3+ weeks), and visibility-this-week (count of comments in Assessment/Objective tasks vs prior 4 weeks). ### 1.5 Eagle SOUL.md — `corrections_log` writeback On any pushback in any channel: Eagle identifies pushback type and a hyphen-tagged `reason_tag`, then silently `INSERT`s into `corrections_log` before responding. Capture happens at the moment of correction; no separate hook needed. ### 1.6 Executor v2 — draft-PR autonomous flow Replaces v1 (STOP gates everywhere) with a **single** STOP gate after the Analysis phase, then autonomous through build → test → branch → push → `gh pr create --draft --assignee @me` (no reviewers) → self-review → CI loop. Hard prohibitions: never push to main/develop/release/*, never open a non-draft PR, never `--reviewer`, never `gh pr merge`, never touch `.github/` or CI configs without explicit thread confirmation. CI loop polls every 10 min; max 3 fix attempts before state→`awaiting_user`. ### 1.7 MS365 MCP in Hermes Wire `outlook_calendar_search` into Hermes for `inbox-triage`, `weekly-plan`, and `daily-brief`. STEP 0 query: events with start ≤ now ≤ end + 1h. By 04-28 this was still 🟡 — cloud connector works in Claude Code, no local npm package yet. ### 1.8 Vault consolidation Process docs + UI testing skill + `apple-browsers/.cursor/*.mdc` files all moved into `~/obsidian/work/wiki/`. Rule of thumb: process docs → vault, runtime configs → original location. `.mdc` files are **copied** (not moved) so Cursor IDE still finds them at the expected path. Each moved file is verified by re-running the agent prompt or skill that references it. ### 1.9 Executor-specific PR template (Option B inline) Team's `.cursor/*.mdc` template requires manual confirmation of task / reviewer / description — all known by definition in the autonomous flow. Executor generates the PR body inline: Task (Asana link from `executor_runs.task_gid`), Root Cause (from analysis), Fix Summary, Testing block (build + unit + UI), Self-review checklist, Notes for review. Draft state IS the "needs polish" signal. ## Order of execution 1, 2 → 3 → 4, 5 → 6, 7 → 8 → 9 → 10. Items 1-9 are independent in practice; 10 (Executor v2 prompt) needs the schema (1), vault consolidation (8), and PR template (9). **No new Discord channels required** — existing seven channels cover every surface. ## Why these choices - **Postgres over markdown / YAML / shell**: extends existing components, aggregable, recoverable after crashes. - **STEP 0 in the prompt, not a wrapper**: ADHD-aware override at the edge cases ("focus is high but Dominik is tagging you directly"). - **Career as a forcing function**: when not surfaced every week, the career quadrant predictably collapses to 0%. - **Draft PR > Discord thread**: durable surface that doesn't scroll away. - **Single STOP gate**: root-cause identification is the consequential decision; mechanical CI re-pushes don't need human approval. - **`executor_runs` table**: enables crash recovery, brief surfacing, and Retrospector throughput counts. ## Definition of done Six observable signals: targeted Retrospector callouts, signal-dense inbox channel, populated Career section in `status.md`, single-row `corrections_log` writes on pushback, autonomous draft PRs from `#executor` within 30 min, and vault-resident process docs reachable via obsidian-mcp. ## Related [[personal-os-state-2026-04-27]] [[personal-os-schema]] [[wiki-ingest-process]] [[ddg-asana-workflow]]