Files
obsidian-vault/wiki/personal-os-catchup-plan-2026-04-27.md

126 lines
5.6 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
---
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 19 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 12 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]]