6.8 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-29 | 0.8 |
|
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_QUADRANTmap 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_taggrouped 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
storiesjoined 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/<gid>-<slug> → 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
- Friday retrospector says specific things ("deferred 4× for ship-review-crunch", "career <5% three weeks").
- Inbox = only new human signal; empty during meetings.
status.mdhas## ⚡ Career(empty when nothing).- Pushback → one
corrections_logrow, no ceremony. - "fix [task]" → thread → analysis → approval → draft PR within 30 min for trivial bugs; CI runs solo.
- 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