Files
reliquary/docs/workpad/reports/2026-10-17-00-guidance-pass-review.md

62 lines
8.5 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.
# Guidance pass review (parts A–D)
- **Date**: Sat Oct 17 00:37:25 WEDT 2026
- **Model**: claude-opus-5-5
- **Scope**: `git diff d605daa HEAD -- plugins/ .claude/` (22 files), against the [handoff](../plans/2026-10-17-00-spire-guidance-pass-handoff.md)'s three review questions. Paths are relative to `plugins/spire/`.
- **Checks run**: `wc -w` on every bundle file; read the full diff and the current planner/attacker/reviewer/athanor/igor/implementation/workpad/zathras text; grepped every part C sentence, every audit class-e item, "fork", the old handoff fields; resolved every `skills:` entry and every file path in added lines.
## Findings
No Critical findings.
**Important**
1. `agents/attacker.md:28-34`: the attacker no longer preloads implementation, whose :32 said a plan holds "the code structure … the main signatures". The Reshape list never says to carry the planner's code structure and size estimate into the build plan. Its :32 "code only where its exact form is the decision" leaves out the signatures exception, so the attacker may strip them. The reviewer (`reviewer.md:22`) and the run log (`run-log.md:42`) then measure size against an estimate that may not exist in the build plan. **Fix:** add a Reshape bullet: "carry over the plan's code structure (signatures included) and per-module size estimate, adjusted where the attack changes them."
2. `skills/gremlins/preamble.md:16,18`: the gremlin handoff template still has the pre-C fields "Done: in a few lines" and "Flagged for review: <anything the reviewer should look at>". It has no "findings, not narration" and no "'none' is the normal answer". Complex blocks, the main build path, never get the part C rewrite of `run-log.md:34,41-43`. **Fix:** copy the run-log.md handoff note (the :34 sentence plus the :41-43 fields) into the preamble.
3. `agents/reviewer.md:18-23`: the counterweight to implementation:39 ("a test for each behaviour and failure path the plan names … never cut a test a plan box needs") has no checker. The reviewer lost that text with the implementation preload. Its diff check catches weakened or deleted tests, but not a named failure path that never got a test. **Fix:** add a Review bullet: "a behaviour or failure path the plan names with no test is a finding."
**Minor**
4. `skills/implementation/references/spawning-claude-code.md:17`: "Igor may `SendMessage` … the Athanor between phases" contradicts part C (`igor/SKILL.md:90`, `athanor.md:45`: a fresh Athanor per phase), and this file is now the declared home of harness rules. **Fix:** "(the Athanor for the fix pass, an adept)".
5. `spawning-claude-code.md:62,64`: the Fork table still says "the Athanor as trunk can fork it" and "check … before relying on trunk and forks". These are descriptive, not an instruction, but they point at the dead path. **Fix:** add a row "not used by Spire since 2026-10-16; trunk + gremlins replaces it", or drop the trunk mention.
6. `agents/attacker.md:31`: the per-block owner model comes from "defaults from `spire:project` `## Build`". Reliquary's `## Build` sets none, and the attacker no longer sees implementation:47 (gremlin for complex blocks, fresh Sonnet/Haiku for mechanical ones). The Athanor re-routes at :33, so the effect is small. **Fix:** add one clause naming the two owner kinds.
7. `skills/zathras/SKILL.md:56,63`: it points to `skills/igor/SKILL.md`, which Zathras never loads. Its own table has no planner/attacker/reviewer rows, yet :63 assumes "an attacked, reshaped plan". The no-Fable rule is also absent at :67. This is not a regression: the earlier pointer went to the equally unloaded model-tiers.md. **Fix:** add the three pinned cycle agents to Zathras's table, and add "never Fable" to :67.
8. `agents/athanor.md:39`: "if a fix changed a test, name it". A test changed by a child inside a block, not in a fallout fix, is not covered. The reviewer's whole-diff check catches it. **Fix:** "if any block or fix changed or deleted an existing test, name it in the phase close."
9. `agents/reviewer.md:20`: "Read every flag" does not require checking it, so a flagged doubt can be read and left uninvestigated. **Fix:** "Check every flag …; report one only where it changes a finding or a verdict."
## 1. Bundle sizes
Confirmed exactly: Igor 4726, Athanor 6754, planner 879, attacker 859, reviewer 793.
- **Igor: missed by ~730.** Fixed parts: workpad 1385 (kept preloaded per decision 4), project + project.md + CLAUDE.md 439, igor.md + adepts + journal-template 293. That leaves igor SKILL at 2425 and mindset at 184. The largest remaining blocks are the Development Cycle with its decision tree and queuing (igor SKILL:71-92, ~600), workpad Ticket context (:46-66, ~350) and Adepts (igor:94-110, ~270). All of these are class a, so the remaining gap is a scope choice (workpad preload, cycle detail), not filler.
- **Planner +79, attacker +59: met in substance.** 439 of each bundle is fixed project text, and the bodies are 382 and 367 words without frontmatter. The overage is part C's added bullets (inventory, structure, size) plus D's cadence line in the attacker. Reviewer met.
- Athanor: no target. Implementation SKILL grew 1395 → 1446 and athanor.md 980 → 1156 (part C and gremlins).
## 2. Rules that lost their only home
None lost outright. Every §3 rule still has its home stating it, and each dispatcher (Igor, Athanor via the mandated spawning read, Zathras) still loads a file stating the stamp, pin and leaf rules. Planner, attacker and reviewer each keep: output path from the brief (Igor:77 names `plans/`/`reports/`, and Igor loads workpad), stamp, separation, Critical/Important/Minor, fix pass and re-check (reviewer:29), gate/test cadence (attacker:31) and the full attack checklist (attacker:19-24). Their leaf lines went, but none of the three has the Agent tool. What they lost and still need is findings 1, 3 and 6. All part B fixes and all part C sentences are still present, the reviewer stage-6 sentence now living in `reviewer.md`. The exception is the gremlin copy of the handoff note (finding 2), which part C never reached.
## 3. Over-steering
No new sentence licenses under-building on its own. Each carries its counterweight, and the size estimate is a budget, not a cap. Verdicts on the C author's three:
- **"a test for each behaviour and failure path the plan names, not one per branch"**: keep. It is safe only if the plan names failure paths (planner:27 requires that) and someone checks coverage. The check is missing after D (finding 3).
- **Athanor reports green only from its own run and names changed tests**: keep. Weakened-check detection now rests on the reviewer's diff check, which is mandatory and covers the whole phase. Widen the naming to child changes (finding 8).
- **Reviewer answers a flag only where it changes a verdict**: keep. The residual risk is that "read" can mean skimming a doubt the builder raised; change it to "check" (finding 9).
D trims that changed meaning were checked: implementation's "what pays for dropping per-task review", the "Do this yourself" lines in tool-less agents, and the researcher/search/scout prohibitions now enforced by their tool lists. None weakens a test, a review or error handling.
Part A done-criterion: met. No Spire text tells an agent to fork itself through the Agent tool (only the spawning claims table, finding 5). The gremlins sequence is `athanor.md:33-37` (5 lines), and `spire:gremlins` is preloaded. All `skills:` entries and the referenced paths resolve.
## Fix pass
Commits: fixes `0f2aee6`, version bump `6ab4dd0` (Spire 0.3.0 in `.claude-plugin/plugin.json` and `.codex-plugin/plugin.json`; no CHANGELOG exists, the marketplace manifest carries no version).
1. Fixed: attacker Reshape bullet carries over code structure (signatures) and size estimate.
2. Fixed: gremlin `preamble.md` handoff note now matches `run-log.md` (findings not narration, "none" is normal, Done/Deviations/Flagged fields).
3. Fixed: reviewer bullet "a behaviour or failure path the plan names with no test is a finding".
4. Fixed: `spawning-claude-code.md` rule of thumb now says the Athanor for the fix pass, an adept.
5. Fixed: Fork table notes Spire has not used the Agent-tool fork since 2026-10-16 (trunk + gremlins replaces it); trunk mention dropped from the preflight row.
6. Fixed: attacker owner clause names the two owner kinds (gremlin for complex, fresh Sonnet or Haiku for mechanical).
7. Fixed: Zathras table gains a planner/attacker/reviewer row; "never Fable unless the user asks" added to the model rule.
8. Fixed: Athanor names any test a block or fix changed or deleted.
9. Fixed: reviewer "Check every flag"; report one only where it changes a finding or a verdict.