6.6 KiB
source, content_hash, namespace, last_synced, confidence, tags
| source | content_hash | namespace | last_synced | confidence | tags | |||||
|---|---|---|---|---|---|---|---|---|---|---|
| raw/personal-os-catchup-plan-2026-04-27.md | 5081ceb719104e1b7c6b5edd642c1daf38b3fd7cf1a96442a00516e7cdb15379 | work | 2026-05-30 | 0.9 |
|
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:
- Стратег — scheduled Claude reads Asana, writes
status.md. - Тактик — reactive layer over
status.md+ ActivityWatch + Calendar; protects focus. - Ретроспектор — Friday-only, multi-week patterns.
- Исполнитель — 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 INSERTs 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_runstable: 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