plan-recon already had a Non-compile-checked sweep, but it was gated
behind signature/variant/removal scopes (omittable otherwise). The
raw-buf.2 failure was a module addition that shifted a workspace-listing
hash pinned in two test files — no signature change — so the sweep was
legitimately skipped and the twin pin was missed.
Adds "Content-pin-perturbing scopes" to Step 5: when the iteration
shifts a content-addressed/hashed/snapshot value a test pins, the
Non-compile-checked sweep is MANDATORY and must enumerate EVERY test
file that grep-matches the perturbed constant — not just the first.
Updates the omission clause accordingly, leans on the CLAUDE.md
lockstep-invariant pairs (no new profile slot), and adds a Common
Rationalisation plus two Red Flags. Embedded in the agent's own file
so the discipline does not depend on orchestrator memory.
refs #1
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Adds self-review check #9 to planner Step 5, symmetric to Fix 1: when
the profile declares `spec_validation.parsers`, every verbatim code
body the plan inlines into a task step whose fence label has an entry
must parse clean against the live tool before hand-off. Non-zero exit
is a plan failure — the last defensive line before implementer
dispatch. Trace goes into the planner session.
Targets the surface-language snippets the plan lifts verbatim from the
spec (the compound-hallucination bytes); source-language test/impl
bodies are out of scope — the implement compile gate catches those.
Also adds a Common Rationalisation ("came straight from the spec") and
a Red Flag (configured parser, no trace in session).
refs #1
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Sixth skill via the boss pattern. planner is the spec→executable-
plan transformation; plan-recon is its read-only file-mapper.
Vocabulary substitutions:
- AILang → "this project"
- milestone → cycle
- Boss → orchestrator
- ailang-plan-recon → plan-recon
- "the architect's Lockstep invariants table" → "the project's
CLAUDE.md lockstep-invariant pairs" (the lockstep pairs are
project-specific; the plugin only carries the pattern that
the orchestrator may declare them)
AILang-specific bits dropped or generalized:
- `docs/specs/<milestone>.md` / `docs/plans/NNNN-<iteration>.md`
→ `paths.spec_dir` / `paths.plan_dir`
- `cargo test --workspace -p <crate>` → "the project's test
command from commands.test, scoped to this test" + generic
template
- `cargo check`, `cargo expand` → "the project's type-checker
/ compiler" and "the project's macro-expansion tool" with
Rust/TypeScript examples in parentheses
- Rust code-snippet template in Step 3 → language-neutral
placeholder with `(exact source code here)` annotations
- Specific past-iter references (loop-recur.1, loop-recur.2,
loop-recur.tidy, remove-mut-var-assign.1, form_a.md,
iter-revert Concern 2, iter effect-doc-honesty Task 2, iter
loop-recur.3 Concern) → generic "recurring defect family
in this project's history" (the discipline survives; the
AILang iter codes that wouldn't parse for a plugin reader
go away)
- `error[E0061]` Rust-specific compiler error code → "hard
compile error" (universal)
Universal substance preserved verbatim:
- Iron Law (3 lines)
- Six-step process (read spec → map structure → write tasks
→ header → self-review → hand off)
- Step 5 self-review checklist — all 8 calibrated checks
(spec coverage, placeholder scan, type consistency, step
granularity, no commit steps, pin/replacement substring
contiguity, compile-gate vs deferred-caller ordering,
verification-command filter strings must resolve)
- All 6 Common Rationalisations rows
- All 6 Red Flags bullets
- plan-recon's nine-step process incl. compile-driven
enumeration (Step 5) and spec-named-path existence table
(Step 6)
- plan-recon's output format including all five sections
(Files, Compile-driven site set, Non-compile-checked
sites, Spec-named-path existence table, Anchors not yet
present)
- plan-recon's 8 Common Rationalisations rows and 9 Red
Flags bullets
Calibrated discipline kept (per memory feedback_dont_strip_
repeated_discipline.md): the three plan-defect families flagged
by user memory (pin/replacement soft-wrap, compile-gate vs
deferred caller, verification filter must resolve) all stay
verbatim — they are project-history scaffolding, just
de-AILang'd in the references.