--- source: raw/personal-os-catchup-plan-2026-04-27.md content_hash: 5081ceb719104e1b7c6b5edd642c1daf38b3fd7cf1a96442a00516e7cdb15379 namespace: work last_synced: 2026-05-31 confidence: 0.9 tags: [personal-os, planning, executor, catch-up-plan] --- # Personal OS — Catch-Up Plan (2026-04-27) Handoff plan to the executor agent — what to build next and why. Companion to [[personal-os-state-2026-04-27]] (current state). ## Context Alex is a macOS Browser DRI at DuckDuckGo, ADHD profile, fully async work. The Personal OS holds work context outside Alex's head so comments don't get lost, the day doesn't drift, and career goals don't get crushed by the current project. Four-agent design: **Стратег** (Strategist, ✅), **Тактик** (Tactician, 🟡 partial), **Ретроспектор** (Retrospector, ✅), **Исполнитель** (Executor, 🟡 v1 only). ## Architectural Principle **No new YAML files, shell scripts, or launchd plists.** Everything extends what's there: Postgres tables, `generate-status.js` queries, prompts in `agent/prompts/`, and Eagle's `SOUL.md`. The system has enough moving parts. ## Nine Deliverables (dependency-ordered) ### 1.1 Schema migration Three changes (see [[personal-os-schema]]): - `corrections_log` table — Tactic records pushback, Retrospector aggregates patterns by `reason_tag` / `week_number`. - `executor_runs` table — state machine for autonomous Executor work (states: `analyzing → awaiting_analysis_approval → fixing → pr_open → ci_running → ci_failed → awaiting_user → complete | abandoned`). - `activity_daily.quadrant` column — `project | aor | career | strategy | other`. ### 1.2 generate-status.js — three new query blocks - **Career: Advisor Opportunities** — ILIKE `%Project Advisor%` notes, modified ≤14d. Empty → omit section. - **Visibility: Active Assessments** without Alex's input in 7+ days. - **Quadrant classification** at AW write time, dynamic top-priority project read from config (iOS toggle today won't be the TP in June). ### 1.3 inbox-triage.md — STEP 0 gating - **0a Focus check** — read latest `activity_daily`, check MS365 calendar for active meeting. Active meeting OR `focus_score>60 AND current_app IN (Xcode,Cursor,VSCode) AND >20m no switch` → exit silently unless `status.md` has 🔴 sections >3h. - **0b Scope filter** — `#inbox` is NEW SIGNAL ONLY. Exclude overdue (lives in daily-brief), system events, already-responded tasks. Include only new human comments, new assignments, ship/TD status changes, mentions in untracked tasks. Gating in the prompt (not a wrapper) so the agent can override on edge cases (e.g. Dominik directly tagging Alex during deep focus). ### 1.4 retrospector.md — three SQL blocks Replaces the markdown `corrections_log.md`. Surfaces correction patterns (≥3 in 4 weeks by `reason_tag`), quadrant drift (4-week × 4-quadrant pivot, flag <5% for 3+ weeks), and visibility this week (strategic comment count). ### 1.5 Eagle SOUL.md — corrections_log writeback On pushback in any channel, Eagle classifies (`discord_pushback | morning_brief_correction | manual`), tags the reason (`ship-review-crunch | urgent-bug | meeting-day | ...`), INSERTs a row via psql, then responds normally without announcing the insert. ### 1.6 Executor v2 — draft-PR autonomous flow Single human gate: **Analysis approval.** After that, autonomous. Pipeline: Analysis → STOP → Fix → Build (`xcodebuild`) → Test → `executor/-` branch → push → `gh pr create --draft --assignee @me --title "[executor] ..."` (NO `--reviewer`) → self-review → CI poll every 10 min (max 3 auto-fix attempts). Hard prohibitions: no push to main/develop/release, no non-draft PRs, no `--reviewer`, no `gh pr merge`, no force-push, no `.github/` or CI config edits. Draft + assignee=@me + no reviewers because the goal is **durable surface, not interruption.** Discord scrolls; GitHub doesn't. ### 1.7 MS365 MCP wired into Hermes Calendar access for `inbox-triage`, `weekly-plan`, `daily-brief`. Only needs `outlook_calendar_search` between now and now+1h. Wire once at Hermes config layer, not per-prompt. ### 1.8 Vault consolidation Move process docs into `~/obsidian/work/wiki/`. Decision rule: **process/conventions/workflows → vault; runtime configs read by agents → leave in place.** `.cursor/*.mdc` files are **copied** (not moved) because Cursor IDE still reads them from `apple-browsers/.cursor/`. Frontmatter notes the original path. Verification after every move is non-negotiable (silent skill breakage is the failure mode). ### 1.9 Executor PR template (Option B inline) Adapted variant — team template requires manual confirmation of task/reviewer/description; Executor knows all three deterministically. Inline the template in the prompt rather than checking a file into `.github/`. The draft state IS the safety net. ## Order of Execution Items 1–9 in any order. Item 10 (Executor v2 prompt) needs schema (1.1) + vault consolidation (1.8) + PR template (1.9) done first. **No new Discord channels needed.** Existing seven cover everything. ## Open Questions — All Resolved - macOS repo: `~/DuckDuckGo/apple-browsers/main`, sibling executor worktrees. - Xcode scheme: one-time discovery during Executor v2 setup, hardcoded into config. - GitHub remote: `gh` CLI auto-detects from worktree. - No CODEOWNERS file → no auto-assigned reviewers. - Team OK with `[executor]` drafts on Alex only. Postponed: NAS, personal, Phase 2-family. ## Definition of Done 1. Friday retrospector says specific things ("deferred bug work 4× for ship-review-crunch", "career quadrant <5% three weeks"). 2. `#inbox` shows only new human signal; silent during meetings. 3. `status.md` has `## ⚡ Career` section, empty when nothing. 4. Pushing back on Discord adds one `corrections_log` row, no ceremony. 5. `fix [task]` in `#executor` → analysis post → approval → draft PR in GitHub within 30 min for trivial bugs. 6. Vault contains UI skill, all `.cursor/*.mdc`, and process docs, all reachable via `obsidian-mcp`. ## Related [[personal-os-state-2026-04-27]] [[personal-os-schema]] [[wiki-ingest-process]] [[ddg-asana-workflow]]