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

93 lines
6.8 KiB
Markdown
Raw 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-05-29
confidence: 0.8
tags: [personal-os, catchup, plan, executor, retrospector, schema]
---
# 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_QUADRANT` map 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_tag` grouped 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 `stories` joined 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 19 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
1. Friday retrospector says specific things ("deferred 4× for ship-review-crunch", "career <5% three weeks").
2. Inbox = only new human signal; empty during meetings.
3. `status.md` has `## ⚡ Career` (empty when nothing).
4. Pushback → one `corrections_log` row, no ceremony.
5. "fix [task]" → thread → analysis → approval → draft PR within 30 min for trivial bugs; CI runs solo.
6. 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]]