Files
reliquary/docs/workpad/research/2026-10-05-21-athanor-usage-dirigent.md
g4borg b0b315136e 📝 Add lean Athanor workpad (goal, journal, research, reports)
Captures the lean-build redesign work: goal, session journal, Athanor
usage research from dirigent and spacecraft, and the implementation
and review reports.
2026-10-05 22:21:55 +02:00

225 lines
15 KiB
Markdown
Raw Permalink 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.
# Athanor usage reports in dirigent
Research pass over `/home/g4b/Projects/dirigent` for documents reporting on how athanor
(the spire orchestration agent, pinned to Opus 4.6, "the oven") has actually been used:
experience reports, retrospectives, post-mortems, journals discussing athanor runs,
problems, costs, model behaviour, delegation issues, proposed changes. Read-only; no
dirigent files were touched.
Method: `grep -ril -i athanor` under `docs/workpad/` (36 hits, mostly reports/journals/
plans), ranked by hit density and date, cross-checked against `git log --grep=athanor`
(no commit *messages* mention athanor — the word only appears in document bodies). Also
searched for local `.claude/` overrides of an `athanor` agent/skill file (none found by
name).
## 1. Ranked list of relevant files
**Primary report (read in full):**
1. `/home/g4b/Projects/dirigent/docs/workpad/reports/2026-10-01-lean-process-report.md`
(2026-10-01, with an **addendum dated 2026-10-05**) — 41 mentions of athanor. The
definitive retrospective: compares a step-by-step baseline run against a new "lean
process" run, both using athanor as implementation orchestrator; the 2026-10-05
addendum is explicitly addressed "to authors of the spire/reliquary plugin" and lays
out settled rules, delegation boundaries, and open tensions for athanor's design.
**This is the report the user is thinking of.**
**Important secondary reports:**
2. `/home/g4b/Projects/dirigent/docs/workpad/reports/2026-09-23-14-stalled-agents-forensics.md`
(2026-09-23) — 9 mentions. A post-mortem on three athanor instances (one implementation,
two planning) that died mid-run when the session hit a monthly spend/rate limit;
documents how far each got, what could be resumed, and a dispatcher/preflight decision
athanor made.
3. `/home/g4b/Projects/dirigent/docs/workpad/reports/2026-09-29-13-w1c-tasks-1-7-run.md`
(2026-09-29) — 5 mentions. A run report for tasks executed under the (then-current)
per-task review flow; useful contrast data point feeding into the 2026-10-01 report's
baseline comparison.
**Other files containing "athanor" (lower signal — mostly plans/journals that mention
athanor only in passing, e.g. naming it as the dispatcher, or copying boilerplate from the
skill). Listed for completeness, newest first:**
4. `/home/g4b/Projects/dirigent/docs/workpad/journals/2026-10-05-12-continue-implementations.md`
(2026-10-05) — source journal behind the lean-process report's addendum; records the
12:36/12:40 correction about who dispatches blocks (Igor vs athanor).
5. `/home/g4b/Projects/dirigent/docs/workpad/reports/2026-10-05-w3-run.md` (2026-10-05) — 1 mention.
6. `/home/g4b/Projects/dirigent/docs/workpad/reports/2026-09-30-10-delivered-and-roadmap.md` (2026-09-30) — 1 mention.
7. `/home/g4b/Projects/dirigent/docs/workpad/reports/2026-09-30-11-w1c-tasks-8-10-run.md` (2026-09-30) — 1 mention.
8. `/home/g4b/Projects/dirigent/docs/workpad/reports/2026-09-29-12-w1c-capture-findings.md` (2026-09-29) — 1 mention.
9. `/home/g4b/Projects/dirigent/docs/workpad/reports/2026-09-24-impl-run6-thoughts-y6-w2b.md` (2026-09-24) — 1 mention.
10. `/home/g4b/Projects/dirigent/docs/workpad/reports/2026-09-23-15-impl-qw-w4.md` (2026-09-23) — 1 mention.
11. `/home/g4b/Projects/dirigent/docs/workpad/reports/2026-09-25-roadmap-birds-eye.md` (2026-09-25) — 1 mention.
12. `/home/g4b/Projects/dirigent/docs/workpad/plans/2026-09-23-01-planning-index-A.md`,
`.../plans/2026-09-23-01-planning-index-B.md` (2026-09-23) — plan indices written by/for
planning athanors (subject of report #2 above).
13. Various journals mentioning athanor in passing (session coordination narration, not
retrospective analysis): `2026-09-22-09-acp-session-loading-debug.md`,
`2026-09-22-21-session-system-evaluation.md`, `2026-09-24-14-continue-work.md`,
`2026-09-25-18-windows-smoke-continue.md`, `2026-09-16-14-session.md`,
`2026-09-20-meta-harness-bugfixing.md`, `2026-10-01-11-bugfixing-on-main.md`,
`2026-09-22-split-meta-ui-bugfixes.md`, `2026-09-29-13-w1c-live-acp-tasks-1-7.md`,
`2026-09-23-14-resume-stalled-planning.md`, `2026-09-21-meta-harness-ui-split.md`,
`2026-09-21-11-meta-ui-bugfix-round3.md`, `2026-09-18-18-meta-harness-implementation.md`,
`2026-09-30-10-status-check.md`, `2026-09-28-15-current-branch-efforts.md`.
14. Goal/design docs naming athanor only as the execution mechanism, not reporting on it:
`goals/meta-harness-ui-round2.md`, `goals/meta-harness-implementation-run.md`,
`goals/meta-harness-bugfix-and-completion.md`, `plans/2026-09-23-12-w1c-live-acp-path.md`,
`plans/2026-09-23-00-session-system-roadmap.md`, `plans/2026-09-23-12-w6-v1-feature-backlog.md`,
`designs/2026-09-23-w1-message-representation.md`.
No file or commit message anywhere in the repo is literally named `athanor*`; it is never
the filename, only content.
## 2. Dense summaries of the top documents
### 2.1 `2026-10-01-lean-process-report.md` (+ 2026-10-05 addendum) — PRIMARY
**Core comparison.** Baseline (step-by-step, per-task review, Sonnet implementers + Opus
review/fix) vs. "lean" (one Opus-5.5 plan → 6 blocks → compile-gate only between blocks →
one test run → one end review → one fix pass → one re-check). Athanor ran the lean
blocks and its own end review; Igor ran everything else.
**Measured result.** Lean was ~35–40% faster in wall clock (3h11m vs ~5–5.7h) for similar
first-draft size, with far less fix churn (+1,417 fix lines in 1 commit vs +3,439 in 10
commits). The earlier "5x faster" claim told to the user was wrong — it came from a
journal clock that drifted ~2.5x from real git timestamps.
**Athanor's end review failed.** Quote: *"Athanor ran the blocks and the end review.
Athanor is the spire orchestration agent ('the oven') and is pinned to Opus 4.6."*
Athanor's internal end review returned **zero findings** ("Pass"). An independent review
dispatched directly by Igor on verified Opus 5.5 found **6 Important + 11 Minor** findings
in ~20 minutes, including a data-loss bug (I1, half-streamed messages dropped from the
archive) that the handoff notes had already flagged and athanor's reviewer still missed.
Quote: *"The review read like a confirmation of the checklist, not a search for bugs...
Its model is unknown."* Because athanor is pinned to Opus 4.6, nobody could verify what
model its internal `opus` alias resolved to when told to use Opus 5.5 — *"the zero-finding
result is either a 4.6 review or a weak, checklist-bound 5.5 review. Either way, it does
not count."*
**Model behaviour / assignment.** The Sonnet-first-draft experiment was ended on this
evidence: all 6 Important findings sat in complex code Sonnet drafted; Sonnet also hit
500k–750k token contexts on long single-implementer passes. New settled rule: complex/
hotspot blocks (state, concurrency, archive format, retention, event handling, read-path
precedence) go to Opus 5.5; mechanical blocks (field sweeps, renames, wiring, docs) go to
Sonnet; Haiku stays on compiles/tests/commits/summaries. Plans and all reviews are Opus
5.5, never athanor's pinned 4.6.
**Recommended/proposed changes (§5.2, §5.4, and Addendum A.1–A.11), aimed explicitly at
spire/athanor's design:**
- End review must be a **verified** Opus 5.5 role dispatched by Igor directly, outside
athanor's pin, with the exact model id stamped in the report header — "a review without
a stamped id does not count."
- End review must be adversarial and must answer every "flagged for review" line in
implementer handoff notes one by one, not just run a checklist.
- Every plan block carries an explicit **owner model**; athanor dispatches with that model
and must not pick or change it itself.
- Athanor should not write implementation plans — plans come from Igor-dispatched Opus 5.5
general-purpose (write-capable) agents, never from athanor's own Opus-4.6 default.
- Athanor's job ends at "blocks done, tests run once, run log complete" — it should not
run its own end review unless it can be pinned by full model id.
- Never carry one implementer across blocks; fresh context per block, each block's handoff
note states done/deviations/flagged-for-review/left-for-later/expected-broken
crates/model id/start-end times from `date`.
- **"Background grandchildren" hazard (settled 2026-09-29):** when athanor's subagents run
in the background, their completion reports go to Igor, not athanor, and athanor stalls
waiting — sequential steps must run in the foreground inside athanor; if athanor stalls,
Igor must check the agent list and feed it the result manually. Quote: *"This is a
harness behaviour athanor should be designed around."*
- No worktrees for this project (worktree cargo targets hit 83–111 GB on an 88%-full
`/home`); athanor and implementers must verify the branch named in the brief and stop if
not on it, and stage explicit paths only (`git add <file>`, never `-A`), since other
agents may commit concurrently.
- User's own open remark (§5.4): spire needs **guard rails for pinned models** — pin role
agents (reviewer, planner) by full model id instead of per-call aliases, forbid model
aliases in athanor briefs, require reviewers to stamp the exact model id, and update the
model-tiers reference. Explicitly filed as belonging to "the user or a spire session (the
reliquary repo), not to dirigent."
- Open tensions deliberately left unresolved for "the user or spire authors" (§A.10):
whether a scoped mid-run hotspot review is still allowed under lean; whether fix rounds
resume the original per-block implementer or go to one fresh Opus fixer; athanor keeps
orchestrating blocks today only to keep the H0–H3 comparison clean, not as an endorsement
of Opus 4.6 for orchestration — "if 4.6 also mis-handles handoff flags or model choice,
the guard rails in §5.4 become urgent."
**Model versions mentioned:** `claude-opus-5-5` (Opus 5.5, planner/reviewer/fixer, author
of this report and its addendum), Opus 4.6 (athanor's pin), Sonnet (implementers, generic
tier), Haiku (housekeeping tier). No "Fable" mention anywhere in dirigent's athanor
material.
### 2.2 `2026-09-23-14-stalled-agents-forensics.md` — secondary
Post-mortem after the whole session hit a monthly Claude spend limit (HTTP 429) in a
3-minute window on 2026-09-23, killing six agents mid-task, three of them athanor
instances (one implementation athanor, two planning athanors). Findings relevant to
athanor usage:
- Implementation athanor "QW+W4" got T1–T3 committed and reviewed, but T4's child finished
writing code and passed its own tests, then died before the **parent athanor** could
review, commit, or run `just check-all` — so a fully-working diff sat unreviewed/
uncommitted in the working tree. Quote: *"the athanor died in the same window, right as
it received the child's truncated hand-back — it never reviewed T4... and never wrote a
report file."*
- A dispatcher/preflight ruling by this athanor explicitly deferred a roadmap-status edit
("dispatcher applies the listed text edits by hand") rather than doing it inline — an
example of athanor making its own scoping decisions mid-run.
- Two planning athanors (A and B) each landed most of their substantive plan edits but
left "closing loop" steps undone (a re-check that never ran; an index never updated with
late fixes) when they were cut off — illustrating that athanor runs can leave partially-
closed process state (ledgers, indices) that a resuming session must reconcile by hand.
- No model-version commentary here; this report predates the Opus 4.6 pin/Opus 5.5 split
discussed in the October reports.
### 2.3 `2026-09-29-13-w1c-tasks-1-7-run.md` — secondary
A run log from the per-task review era (pre-lean), one of the baseline data points the
2026-10-01 report later cites when reconstructing the "~5–6h baseline" figure. Only 5
athanor mentions; it is primarily a task-by-task execution/review log rather than a
retrospective on athanor's behaviour, so it is evidentiary input to document #1 rather
than an independent report. Not separately summarized in depth here; see the 2026-10-01
report's §2.2–2.3 for the extracted, corrected numbers.
## 3. Local overrides vs. the upstream spire plugin
- No `.claude/agents/athanor*.md` or `.claude/skills/*athanor*` file exists in dirigent —
i.e., dirigent has **not** forked/overridden athanor's agent definition locally; it
still runs the upstream spire athanor.
- Dirigent **does** carry its own pre-spire orchestrator agent at
`/home/g4b/Projects/dirigent/.claude/skills/orchestrator/SKILL.md` ("Plan Execution
Orchestrator" / "dirigate of implementation") plus
`/home/g4b/Projects/dirigent/.claude/agents/rust-task-implementer.md` and
`/home/g4b/Projects/dirigent/.claude/agents/task-writer.md`. This looks like an earlier,
parallel orchestration scheme (one-implementer-at-a-time, phase summaries, task
checklists) that predates/coexists with spire's athanor rather than a modification of
athanor itself — worth noting as a potential source of the "sequential dispatch,
one-at-a-time" rule the lean report's addendum (A.8) says is "settled 2026-09-19."
- Several **project-level behavioural overrides of spire/Igor defaults** are recorded as
settled rules in the 2026-10-05 addendum (§A.6, §A.8, §A.10) rather than as code changes:
- No worktrees for code runs, even though "the Igor skill suggests them for code runs;
this project overrides that" (§A.6).
- "Don't start work from topic alone" relaxed for read-only research that itself answers
the session's stated topic (§A.8).
- These are documented as standing per-project exceptions Igor applies, not as edits to
the spire plugin's shipped skill files — the addendum explicitly frames this as
something "skills should make... per-project settings rather than fixed rules" (§A.10
item 10), i.e. a gap to close upstream in spire, not something dirigent has patched
locally in plugin files.
- The dirigent project memory directory `~/.claude/projects/-home-g4b-Projects-dirigent/memory/`
(outside the dirigent git repo, not inspected directly here but cited extensively by the
addendum) holds the actual settled/experiment rules (`feedback_review_by_risk`,
`feedback_sonnet_first_draft`, `feedback_planner_agents`, etc.) that function as de facto
local overrides of spire defaults for this project.
## Summary
Primary report: `docs/workpad/reports/2026-10-01-lean-process-report.md` (with its
2026-10-05 addendum) in `/home/g4b/Projects/dirigent`, written for "authors of the spire/
reliquary plugin." It shows athanor's internal end review (pinned Opus 4.6) missed 6
Important findings — including an archive data-loss bug — that an independently-dispatched
Opus 5.5 review caught, and it proposes concrete athanor design changes: model-id guard
rails, reviews/plans kept outside athanor's pin, per-block owner models, and foreground-
only sequential subagent dispatch to avoid orchestrator stalls. A secondary post-mortem,
`docs/workpad/reports/2026-09-23-14-stalled-agents-forensics.md`, documents three athanor
instances dying mid-run from a rate limit and the unreviewed/unclosed work they left
behind. Full findings, quotes, and a complete ranked file list are in the output document.