diff --git a/docs/workpad/reports/2026-10-17-00-guidance-pass-c-steering.md b/docs/workpad/reports/2026-10-17-00-guidance-pass-c-steering.md new file mode 100644 index 0000000..a3f157b --- /dev/null +++ b/docs/workpad/reports/2026-10-17-00-guidance-pass-c-steering.md @@ -0,0 +1,63 @@ +# Guidance pass C: steering sentences + +- **Date**: Sat Oct 17 00:24:15 WEDT 2026 +- **Model**: claude-opus-5-5 +- **Scope**: handoff [part C](../plans/2026-10-17-00-spire-guidance-pass-handoff.md), audit §4, framing from the brainstorm's "Steering sentences cut both ways" +- **Commit**: 46dbc86 (skill and agent text). Line numbers are after that commit. Paths are relative to `plugins/spire/`. + +## Changes + +| file:line | before | after | counterweight | +|---|---|---|---| +| agents/reviewer.md:22 | "Answer **every** deviation and flag … one by one" | "Read every flag …; answer one … only where it changes a finding or a verdict" | every flag is still read | +| agents/reviewer.md:23 | "Hunt **weakened checks** … tests that cannot fail" | "Check the phase's diff for weakened checks (… deleted tests) …; each one you find is a finding" | the check stays mandatory; its scope is the diff | +| agents/reviewer.md:24 | "List what was built that the plan did not ask for. On record only" | short "Size and unrequested surface" section, one line each; "You list; Igor and the user decide" | an unplanned addition may be good; the reviewer never removes | +| agents/reviewer.md:27 | "Grade findings Critical, Important or Minor …" | "Findings come first … Name the gates and tests you ran in one line; do not list what you checked and found fine" | evidence of what ran stays | +| agents/reviewer.md:38 | "and the unplanned additions" | "and the size and unrequested-surface lines" | (follows :24) | +| skills/implementation/SKILL.md:54 | "answers every deviation and flag … one by one. It looks specifically for weakened checks" | "reads every flag …, answering one only where it changes a finding or a verdict. In the phase's diff it looks for …" | same as reviewer :22–23 | +| skills/implementation/SKILL.md:55 | "It lists what was built that the plan did not ask for" | "short size and unrequested surface section … The reviewer lists; Igor and the user decide" | same as reviewer :24 | +| skills/implementation/SKILL.md:26 | "consumers of changed semantics … (… callers in other crates)" | "+ every direct reader or caller of what the change touches, and further only where the changed meaning is passed on" | every direct consumer still covered | +| skills/implementation/SKILL.md:34 | "A plan holds decisions, contracts, invariants and the scope fence" | "+ the code structure … (… the main signatures)" | code still only where its form is the decision | +| skills/implementation/SKILL.md:41 | (missing: tests per block) | "a test for each behaviour and failure path the plan names, not one per branch, and never cut a test a plan box needs to save size" | named failure paths get tests; size never cuts one | +| skills/implementation/SKILL.md:62 | "If you cannot write the failing test, keep investigating" | "investigate further; if it still will not reproduce …, fix on the evidence you have and say so in the handoff note" | still investigates; the gap is recorded | +| skills/implementation/SKILL.md:63 | "Explore before you focus. Look one or two layers up …" | "… when the cause is not plain: … and stop exploring once you can name the cause" | exploring stays the default for unclear bugs | +| skills/implementation/references/run-log.md:34 | (no length expectation) | "A few lines per block: findings, not narration. 'none' is the normal answer …" | "a real deviation or doubt is never left out" | +| run-log.md:41 | "Done: … in a few lines" | "in one or two lines" | (inside the :34 rule) | +| run-log.md:42 | "Deviations from plan: " | "+ including size well over the plan's estimate" | size budget gets explained, not obeyed | +| run-log.md:43 | "Flagged for review: " | " — or 'none'" | an unsure point is still flagged | +| run-log.md:56 | "Flags for the reviewer: every deviation and every … line above, one per bullet" | "the deviations and flags from the block notes above, one line each … or 'none'" | nothing from the notes is dropped | +| run-log.md:57 | "Not run / untested: " | " — or 'none'" | named behaviour gaps still listed | +| agents/attacker.md:23 | "Consumers of changed semantics …: other readers, stats, migrations, callers …" | "every direct reader or caller of what the change touches (…), and further only where the changed meaning is passed on" | every direct consumer still covered | +| agents/attacker.md:25 | "Missing function: …, error handling, security" | "something a goal box needs that the plan does not deliver, … or the error handling and security that box implies" | error handling and security stay in scope where a box implies them | +| agents/attacker.md:26 | (new) | "A function no box needs is not missing: propose it under the open decisions with a one-line reason" | proposed, not silently dropped | +| agents/attacker.md:34 | "Scope cut back to the goal." | "… each block traces to a box, and cutting never removes a failure path or a test a box names" | cutting is bounded | +| agents/planner.md:23 | (new) ecosystem inventory | "what the harness, CLI output, the stdlib and the project's existing tools already provide … build only what the boxes need and the inventory does not cover" | "a one-line reason where a listed tool falls short" | +| agents/planner.md:24 | (new) code structure | "modules, the data model, the main interfaces (signatures …, no bodies) and where the special cases live" | "no more than the boxes need" | +| agents/planner.md:25 | (new) size estimate | "per module, in lines: a budget the builder explains deviations from in the run log" | "not a cap that justifies dropping a failure path or a test" | +| agents/planner.md:29 | "Phases that each end in a testable state; … steps with a completion criterion each" | "+ happy path end to end before the failure paths the boxes name (order, not priority); a step no box needs carries a one-line reason" | failure paths still built; extra steps allowed with a reason | +| agents/planner.md:32 | "(a schema, a wire format, a state machine)" | "+ the signatures in the code structure" | bodies still left to the builder | +| agents/athanor.md:32 | (missing: digest check) | "If you write a contract digest …, check it once against the plan and the code before any block builds on it" | "a gap that needs a design decision goes back to Igor, not into the digest" | +| agents/athanor.md:33 | "A mechanical or distant block goes to a fresh Agent-tool agent" | "+ on a cheaper model (Sonnet, or Haiku for a scripted transform)" | "unless the block needs design judgment" | +| agents/athanor.md:39 | "read the fix's diff for loosened assertions or deleted checks before you report green" | "report green only from your own test run, and if a fix changed a test, name it in the phase close" | changed tests reach the reviewer | +| agents/athanor.md:40 | "phase close with every deviation and flag listed for the reviewer" | "One short handoff note per block …; 'none' is a normal answer" | "a real deviation is never left out" | +| agents/athanor.md:45 | "When Igor resumes you for the next phase, start again at intake" | "The next phase goes to a fresh Athanor, which starts at intake from the run log and trunk notes you leave behind" | state carries over through the files | +| agents/athanor.md:52 | (missing: time budget) | "Every block brief carries a time budget" | "never a skipped gate or test" | +| agents/athanor.md:59 | (missing: re-plan) | "A broken premise stops the phase … hand back for a re-plan instead of documenting it" | a detail-level surprise stays a default plus flag | +| agents/athanor.md:75 | "room left for the fix pass and the next phase" | "room left for the fix pass" | (follows :45) | +| skills/igor/SKILL.md:61 | "**Best over fastest.** … finishing well, not finishing first" | "**Right over fast.** … finishing well means what the goal asks for, built and checked, not more" | "built and checked" | +| skills/igor/SKILL.md:90 | (missing: time budget) | "Every Athanor brief carries a time budget for the phase: an estimate it reports against" | "never a reason to skip a gate or a test" | +| skills/igor/SKILL.md:98 | "it answers every handoff flag, hunts weakened checks …" | "reads every handoff flag and answers one only where it changes a verdict, checks the phase's diff …, lists size and unrequested surface for you and the user to decide" | same as reviewer | +| skills/igor/SKILL.md:105 | "Approach is wrong … back to design" | "+ includes a preflight or block that removed a premise the design rests on: re-plan instead of documenting it" | "a result that only shifts a detail stays a flag" | +| skills/igor/SKILL.md:111 | "Between phases, and for the fix pass, Igor resumes the same Athanor" | "For the fix pass, … resumes the same Athanor … Each new phase gets a fresh Athanor started from the run log and trunk notes" | the fix pass keeps the builder's context | +| skills/research-tree/SKILL.md:41 | "List every sub-topic …, even ones that feel redundant" | "List the sub-topics the question needs answered, including ones you are unsure about; merge or drop the redundant ones" | unsure topics still listed | + +## §4 items left alone + +- igor SKILL:92 stamp-check and its 11 repeats: part D. +- igor SKILL:186 wrap-up (adept handoffs, accretion, graduation): runs once per session and is Igor's guard against forgetting; part D can trim the wording. +- adept.md:61/81 handoff refresh after state-changing consultations: capped at ~40 lines, a few lines per refresh, and it is what survives an abrupt end. +- adept "Don't guess" search dispatches: cheap, and it prevents stale priors. +- Missing "smallest change that meets the goal" / "prefer deleting to adding": deliberately not added. The brainstorm warns that these fire the other way. Tracing to boxes plus the size budget covers them. +- Missing size caps for plans, build plans, journals: not added as caps. The per-module size estimate, short handoff notes and a short review section are the budget instead. +- implementation:58 and igor:109 "extra reviews need a stated reason": already balanced. +- run-log.md trunk notes "every consumer of a changed semantic": already bounded by "a page".