--- source: raw/personal-os-catchup-plan-2026-04-27.md content_hash: 5081ceb719104e1b7c6b5edd642c1daf38b3fd7cf1a96442a00516e7cdb15379 namespace: work last_synced: 2026-05-29 confidence: 0.8 tags: [personal-os, catchup, plan, executor, retrospector, schema] --- # Personal OS — Catch-Up Plan (2026-04-27) Handoff for the executor agent: what to build next, in what order, why. Companion to [[personal-os-state-2026-04-27]]. ## Context Alex is a macOS Browser developer / DRI at DuckDuckGo. ADHD profile, fully async, primary channels Asana + Slack. The Personal OS holds work context outside Alex's head so comments aren't lost, daily focus survives, and career goals don't get crushed by the current project. Four-agent design from the original spec: **Стратег** (strategist — status writer, ✅), **Тактик** (reactive, ADHD-aware, 🟡 partial), **Ретроспектор** (Friday-only patterns, ✅), **Исполнитель** (executor, 🟡 v1 only). What's being caught up: career tracking, inbox hygiene, focus-aware ping gating, structured corrections (table not file), quadrants, Executor v2 (draft-PR + CI loop), MS365 wiring, vault consolidation, executor PR template variant. **Architectural principle (hard):** no new YAML files, shell scripts, or launchd plists. Extend the existing four components — Postgres, `generate-status.js`, prompt files, Eagle's SOUL.md. See [[personal-os-state-2026-04-27]]. ## Deliverables ### 1.1 Schema migration Three changes: new `corrections_log` (date, week, source, original_plan, correction, deferred_gids, reason_tag); new `executor_runs` (state machine: `analyzing | awaiting_analysis_approval | fixing | pr_open | ci_running | ci_failed | awaiting_user | complete | abandoned`); `activity_daily.quadrant TEXT` (project | aor | career | strategy | other). Tables not markdown because Retrospector needs aggregates. ### 1.2 `generate-status.js` blocks - **Career — Advisor pipeline**: filter on `notes ILIKE '%Project Advisor: Set the custom field%'`, recent 14d. Omit section if empty (no noise). - **Visibility — Active Assessments without Alex's input**: 14d-active tasks named Assessment/O-N/O-L where Alex hasn't commented in 7d. - **Quadrant classification at AW write time**: static `PROJECT_TO_QUADRANT` map plus dynamic "current top priority project" read from config/status (not hardcoded — top priority shifts). ### 1.3 `inbox-triage.md` STEP 0 Two-part gating in the prompt itself (not a wrapper — agent retains override): focus check (`focus_score > 60` + Xcode/Cursor + 20 min stable → exit unless 🔴 sections older than 3h; active calendar meeting → exit silently); scope filter (NEW SIGNAL ONLY — no overdue, no system events, no Alex-already-responded). Empty → write "Inbox quiet — nothing new." ### 1.4 `retrospector.md` SQL blocks - **Correction patterns** — `reason_tag` grouped by 4w, threshold ≥3. - **Quadrant drift** — 4w × 4-quadrant pivot from `activity_daily`. Flag career quadrant <5% for 3+ weeks. - **Visibility this week** — count Alex's strategic comments via `stories` joined on Assessment/Objective/project tasks. ### 1.5 Eagle SOUL.md — corrections writeback On any user pushback in Discord, Eagle infers `reason_tag`, runs `INSERT INTO corrections_log` silently, then replies. Replaces markdown log. Natural capture moment is in-conversation, not via a separate hook. ### 1.6 Executor v2 — draft-PR autonomous flow **Single STOP gate: Analysis approval.** After approval, autonomously: fix → build → test → branch `executor/-` → `gh pr create --draft --assignee @me` (no `--reviewer`!) → self-review comment → CI polling loop (10 min, max 3 auto-retry attempts → `awaiting_user`). Hard prohibitions: never push to main/develop/release; always `--draft`; never `--reviewer`; never `gh pr merge`; no force-push outside own branch; no edits to `.github/` or dependency manifests without thread confirmation. Existing Discord channels suffice — no new ones. Rationale: draft PRs are durable surface (vs. ephemeral Discord threads), don't trigger reviewer pings, easy one-click flip to ready. ADHD-friendly. ### 1.7 MS365 MCP into Hermes Calendar gating needs `outlook_calendar_search(afterDateTime: "now", beforeDateTime: "now + 1h")`. Wire once at Hermes config layer so inbox-triage, weekly-plan, daily-brief all benefit. Microsoft 365 (not Google) — that's what's in the workspace. ### 1.8 Vault consolidation Move process docs from Personal OS → `~/obsidian/work/wiki/`. Move/copy UI testing skill and 43 `apple-browsers/.cursor/*.mdc` files (copy `.mdc` — Cursor needs originals in place). Verification: invoke each moved skill/prompt end-to-end after move. Decision rule: "process/convention/workflow → vault; read-at-runtime → original location." Both → canonical in vault, stub or symlink at runtime path. ### 1.9 Executor PR template (Option B) Executor inlines the template — task link (auto from `executor_runs.task_gid`), reviewer = Alex, description auto-generated from analysis + diff. Draft state is the "needs polish" signal. Sections: Task / Root Cause / Fix Summary / Testing (build, unit, UI) / Self-review / Notes. Footer: "Generated by Executor — DRAFT until Alex flips to ready-for-review." ## Execution order Dependency-ordered. Items 1–9 can run in parallel; item 10 (Executor v2 prompt rewrite) needs #1 (executor_runs), #8 (vault has .mdc + UI skill), #9 (PR template). The implementing agent does one-time discovery (reads `.cursor/*.mdc` + GHA workflows + UI testing skill in vault) and **hardcodes** Xcode scheme + test command + UI runner specifics into config — Hermes does not re-discover every run. ## Open questions All resolved. Repo at `~/DuckDuckGo/apple-browsers/main`. Worktrees as siblings. Scheme `DuckDuckGo macOS`. No CODEOWNERS. Team OK with `[executor]`-tagged drafts on Alex only. Postponed: NAS migration (done), personal, Phase 2-family. ## "Done" looks like 1. Friday retrospector says specific things ("deferred 4× for ship-review-crunch", "career <5% three weeks"). 2. Inbox = only new human signal; empty during meetings. 3. `status.md` has `## ⚡ Career` (empty when nothing). 4. Pushback → one `corrections_log` row, no ceremony. 5. "fix [task]" → thread → analysis → approval → draft PR within 30 min for trivial bugs; CI runs solo. 6. Vault has UI skill + `.mdc` + process docs, all searchable via obsidian-mcp. ## Key Points - Extend existing components; add no new shell scripts, plists, or YAML. - Postgres tables (not markdown) for anything Retrospector needs to aggregate. - STEP 0 gating lives in the prompt, not a wrapper — agent keeps judgment. - Executor v2 has exactly one human gate (Analysis approval); rest is autonomous to draft PR + CI green. - Draft PRs > Discord-only handoff — durable surface, no reviewer pings. ## Related [[personal-os-state-2026-04-27]] [[personal-os-schema]] [[wiki-ingest-process]]