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

6.6 KiB
Raw Blame History

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
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 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_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.

personal-os-state-2026-04-27 personal-os-schema wiki-ingest-process ddg-asana-workflow