99 lines
5.3 KiB
Markdown
99 lines
5.3 KiB
Markdown
---
|
||
source: raw/personal-os-state-2026-04-27.md
|
||
content_hash: 1640cb63145b49263b9476e2c39fe443ac561fdf6c27faccc50cfc8568552614
|
||
namespace: work
|
||
last_synced: 2026-05-29
|
||
confidence: 0.8
|
||
tags: [personal-os, state, architecture, hermes, executor]
|
||
---
|
||
|
||
# Personal OS — State Snapshot (2026-04-27)
|
||
|
||
Supersedes `state-2026-04-27.md` and `personal-os-plan-v3.md`. Reflects the catch-up plan executed on 2026-04-27. See [[personal-os-catchup-plan-2026-04-27]] for the deliverables that produced this state.
|
||
|
||
## What's built
|
||
|
||
### Infrastructure
|
||
- **PostgreSQL** on Mac — see [[personal-os-schema]] for tables.
|
||
- **`sync.js`** — 4-source Asana fetch (`my_tasks`, `following`, `delegated`, `project:*`), incremental deltas, `sweepRecentlyCompleted()`.
|
||
- **`generate-status.js`** — DB → `status.md` + `asana_context.md`. `possibly_deleted` filter fixed; now also writes advisor + visibility + executor queue blocks, and the quadrant column on `activity_daily`.
|
||
- **ActivityWatch** — DDG browser watcher + Xcode watcher running.
|
||
- **Hermes v0.11.x** — launchd daemon `ai.hermes.gateway`, Claude Code OAuth, model `claude-sonnet-4-6`.
|
||
- **Discord bot Орёл#0898** — no @-mention needed. Channels: `#daily-brief #inbox #focus #executor #projects #journal #retrospector`.
|
||
|
||
### Hermes cron schedule
|
||
| Job | Schedule | Channel |
|
||
|-----|----------|---------|
|
||
| data-pipeline | */30 7–21 workdays | silent |
|
||
| morning-brief | 08:30 workdays | #daily-brief |
|
||
| eod-summary | 18:00 workdays | #daily-brief |
|
||
| inbox-check | */30 9–19 workdays | #inbox |
|
||
| weekly-plan | Mon 08:00 | #daily-brief |
|
||
| weekly-review | Fri 17:00 | #daily-brief |
|
||
| retrospector | Fri 17:30 | #retrospector |
|
||
| commit-vault | 23:00 daily | silent |
|
||
|
||
### launchd agents (fire on wake)
|
||
- `personal.os.heartbeat` — `:05` hourly. Reads `jobs.json`, fires any missed once-per-day Hermes jobs.
|
||
- `personal.os.wiki-ingest` — 22:00 daily. `claude -p` subprocess writes `~/obsidian/wiki/`. See [[wiki-ingest-process]].
|
||
|
||
### Scripts
|
||
- `run-pipeline.sh`, `run-wiki-ingest.sh`, `commit-vault.sh`, `hermes-heartbeat.sh`.
|
||
|
||
### Vault layout (`~/obsidian/`)
|
||
- `wiki/` — mix of LLM-generated and `confidence: 1.0` human notes.
|
||
- `raw/` — symlinks to source files for ingest.
|
||
- `work/`, `personal/` — Eagle write-allowed; `family/` exists.
|
||
- Git remote on ZFS data pool: `ssh://truenas_admin@mallexxx.duckdns.org/mnt/RED_2TB/storage/git/obsidian-vault.git`.
|
||
|
||
### Agent prompts (`~/Developer/personal-os/agent/prompts/`)
|
||
`daily-brief.md`, `weekly-plan.md`, `weekly-review.md`, `inbox-triage.md`, `generate-status.md`, `wiki-ingest.md`, `executor-bug-fix.md`, `executor-td-review.md`.
|
||
|
||
### Retrospector (Phase 3 — live)
|
||
Friday-only. Surfaces: correction patterns (3+ times), velocity vs scope, vault git activity, exactly one decision question.
|
||
|
||
## What's not done
|
||
|
||
| Item | Status |
|
||
|------|--------|
|
||
| Phase 2-family (VPS, family Hermes, iCloud sync) | Deferred until after Phase 4 |
|
||
| `work/projects/` notes | Empty — Eagle fills on first use |
|
||
| Executor v2 end-to-end live run | Prompt written, not tested on real task |
|
||
| MS365 MCP in Hermes | Cloud connector works in Claude Code; no local npm package |
|
||
|
||
Catch-up plan 2026-04-27 items 1, 3–10 ✅; item 2 (MS365) 🟡.
|
||
|
||
## Executor v2 — architecture summary
|
||
|
||
User-initiated in `#executor` ("fix [task]"), scheduled via Friday weekly-review, or status-driven via `## ⚡ Executor Queue`. Worker spawns in a Discord thread, streams progress, opens a **draft** PR assigned to Alex (never tags humans), runs a CI polling loop (every 10 min, max 3 auto-fix attempts). Full state machine in `executor_runs` table. See [[personal-os-catchup-plan-2026-04-27]] for design rationale.
|
||
|
||
Worktrees live at `~/DuckDuckGo/apple-browsers.git/.claude/worktrees/executor-{gid}-{slug}/`. Scheme: `DuckDuckGo macOS` in `.xcworkspace`, `xcbeautify` required. UI tests via `ddg-vm` MCP (VirtualBuddy).
|
||
|
||
## Decisions divergent from plan v3
|
||
|
||
1. Wiki-ingest moved from Hermes cron → launchd subprocess (needs local FS access).
|
||
2. `personal-wiki` MCP replaced with `obsidian-mcp` — DB tables dropped.
|
||
3. Single `personal.os.heartbeat` instead of per-job launchd plists.
|
||
4. Retrospector extracted from weekly-review → own prompt, cron, channel.
|
||
5. NAS git path moved to `/mnt/RED_2TB/storage/git/` (ZFS data pool, not boot pool).
|
||
6. Phase 2-family deferred until after Phase 4.
|
||
7. Executor v1 prompts manual-only with STOP gates (v2 adds autonomy).
|
||
8. wiki-ingest rewritten file-based (SHA256 in frontmatter) — DB tables superseded.
|
||
|
||
## Known issues / tech debt
|
||
|
||
- Morning brief never smoke-tested (medium).
|
||
- Executor v1 prompts manual-only — replace with v2 (medium).
|
||
- `wiki-ingest` uses `claude -p` without `--allowedTools` (low).
|
||
- NAS SSH key still in boot pool `/home/` — must move to `/mnt/RED_2TB/` before next TrueNAS update (**high**).
|
||
- Hermes memory `~/.hermes/memory/` not backed up.
|
||
|
||
## Key Points
|
||
- Postgres + Hermes + launchd + Obsidian vault are the four pillars; everything extends one of those.
|
||
- All 10 catch-up items shipped except MS365 MCP in Hermes (cloud-only).
|
||
- Executor v2 = single STOP gate at Analysis, then autonomous draft PR + CI loop.
|
||
- Boot-pool-vs-data-pool distinction matters: persistent data must live under `/mnt/RED_2TB/`.
|
||
|
||
## Related
|
||
[[personal-os-catchup-plan-2026-04-27]] [[personal-os-schema]] [[wiki-ingest-process]]
|