2026-04-28: autonomous executor — architecture, queue table, commands

- Update personal-os-architecture.md: document autonomous executor mode, executor_queue table, Eagle commands in #executor
This commit is contained in:
Alexey Martemyanov
2026-04-28 01:16:48 +06:00
parent 9303eb1bb7
commit 81992bc142
+32 -6
View File
@@ -22,7 +22,7 @@ See: `personal-os-purpose.md`
### Орёл / Eagle (Tactician + reactive layer) — Hermes v0.11.x Discord bot
- Reads `~/context/status.md`, daily/weekly briefs, vault via obsidian MCP
- Discord channels: `#daily-brief` `#inbox` `#focus` `#executor` `#projects` `#journal` `#retrospector`
- Cron jobs: morning-brief (08:30 MTWRF), eod-summary (18:00 MTWRF), inbox-check (30 min 0919 MTWRF), weekly-plan (Mon 08:00), weekly-review (Fri 17:00), retrospector (Fri 17:30), commit-vault (23:00 daily)
- Cron jobs: morning-brief (08:30 MTWRF), eod-summary (18:00 MTWRF), inbox-check (30 min 0919 MTWRF), weekly-plan (Mon 08:00), weekly-review (Fri 17:00), retrospector (Fri 17:30), executor-autonomous (hourly 0918 MTWRF), commit-vault (23:00 daily)
- Logs corrections to `corrections_log` table (SQL INSERT, silently on pushback)
- **Never accesses Asana API directly** — only reads pre-rendered markdown and DB
@@ -31,14 +31,39 @@ See: `personal-os-purpose.md`
- Sources: corrections_log table, status.md subtask counts, obsidian git log, activity_daily quadrants, stories visibility metric
- Prompt: `~/Developer/personal-os/agent/prompts/retrospector.md`
### Исполнитель (Executor) — on-demand autonomous worker
- Triggered by explicit "fix bug [GID]" in #executor — never autonomous
- Creates git worktree at `~/DuckDuckGo/apple-browsers.git/.claude/worktrees/executor-{gid}-{slug}/`
### Исполнитель (Executor) — two modes
**Manual mode**: triggered by "fix bug [GID]" in #executor
- Single STOP gate after analysis; then autonomous: fix → build → test → draft PR → CI loop
- State machine in `executor_runs` table
- Prompt: `~/Developer/personal-os/agent/prompts/executor-bug-fix.md`
**Autonomous mode**: hourly cron (0918 workdays) → #executor
- Maintains a queue from: My Hack Days, Watched, O-L Backlog, stale My Tasks
- Analyzes tasks → posts "[Auto] Ready to start" with complexity/feasibility
- Waits for "go {gid}" to start; no reply = moves to next analysis
- Max 1 active fix at a time; handles CI/review on open draft PRs
- Stops touching a PR once Alex moves it out of draft or pushes commits
- No Asana comments; no touching other people's PRs
- Queue state in `executor_queue` table; live plan: `~/Developer/personal-os/briefs/executor-queue.md`
- Prompt: `~/Developer/personal-os/agent/prompts/executor-autonomous.md`
**Shared**:
- Worktree at `~/DuckDuckGo/apple-browsers.git/.claude/worktrees/executor-{gid}-{slug}/`
- Always `git fetch origin main` + branch from `origin/main`
- State machine in `executor_runs` table
- For UI tests: spins VM via ddg-vm MCP (virfield), cleans up on PR close/merge
**Eagle commands in #executor**:
| Command | Effect |
|---------|--------|
| `fix bug {gid}` | Spawn manual executor (separate agent) |
| `go {gid}` | Approve autonomous task → starts next tick |
| `skip {gid}` | Skip task in queue |
| `stop` | Pause current autonomous task |
| `next` | Pause current, analyze next |
| `resume {gid}` | Re-queue paused task |
| `queue` | Show current executor-queue.md |
## Data Flow
```
@@ -92,7 +117,8 @@ Executor runs
| task_annotations | manual / Eagle | generate-status.js irrelevant filter |
| activity_daily | generate-status.js | retrospector quadrant drift |
| corrections_log | Eagle on pushback | retrospector pattern analysis |
| executor_runs | executor | generate-status.js active runs, executor state machine |
| executor_runs | executor (manual + autonomous) | generate-status.js active runs, executor state machine |
| executor_queue | executor-autonomous | generate-status.js queue display, autonomous tick state |
## MCP Servers