ailang-plan-recon site-undercount countermeasure #9

Closed
opened 2026-05-20 13:21:57 +02:00 by Brummel · 0 comments
Owner

Escalated — now a structural recon-contract defect, no longer a single-milestone curiosity. The recon agent hand-lists the change blast radius and has under-counted it four times across two milestones, through a different site type each time: loop-recur.1 walker arms, loop-recur.2 cross-module synth callers, loop-recur.tidy implicit, and now remove-mut-var-assign.1 (in-source mod tests fns + a drift-pin fn + 5 orphaned .ail.json carve-outs + a non-enumerated codegen_import_map_fallback_pin.rs E0599) plus a spec-named doc the recon was told did not exist (crates/ailang-core/specs/form_a.md — the spec listed it for deletion; a Boss plan-time grep checked only docs/form_a.md, concluded "no such file", and propagated that into the recon brief; caught only at milestone-close audit).

Two distinct gaps: (a) the compile-driven sweep catches exhaustive-match/caller misses but not non-compile-checked sites (docs, fixtures, drift pins) — those need a separate "every spec-named path is verified to exist and is handled" cross-check; (b) a recon brief must never inherit an unverified "X does not exist" — existence claims feeding a recon are themselves load-bearing and must be tree-wide, not dir-scoped.

Tighten skills/planner/agents/ailang-plan-recon.md: for any signature-change / enum-variant / removal scope the recon REPORTS the compile-driven enumeration as the authoritative code-site set (hand-list advisory) AND emits a spec-named-path existence table (every path the spec names, ls-verified, with its handling task). No language change; an agent-definition discipline fix.

context: loop/recur close audit (architect [low], 2026-05-18) + remove-mut-var-assign close audit (architect [high] form_a.md + [medium] process-drift, 2026-05-18); pairs with planner Step-5 items 7+8 (those scrub the plan; this scrubs the recon and the recon brief).

**Escalated** — now a structural recon-contract defect, no longer a single-milestone curiosity. The recon agent hand-lists the change blast radius and has under-counted it **four times across two milestones, through a different site type each time**: loop-recur.1 walker arms, loop-recur.2 cross-module `synth` callers, loop-recur.tidy implicit, and now remove-mut-var-assign.1 (in-source `mod tests` fns + a drift-pin fn + 5 orphaned `.ail.json` carve-outs + a non-enumerated `codegen_import_map_fallback_pin.rs` E0599) **plus a spec-named doc the recon was told did not exist** (`crates/ailang-core/specs/form_a.md` — the spec listed it for deletion; a Boss plan-time grep checked only `docs/form_a.md`, concluded "no such file", and propagated that into the recon brief; caught only at milestone-close audit). Two distinct gaps: (a) the compile-driven sweep catches exhaustive-`match`/caller misses but **not** non-compile-checked sites (docs, fixtures, drift pins) — those need a separate "every spec-named path is verified to exist and is handled" cross-check; (b) a recon brief must never inherit an unverified "X does not exist" — existence claims feeding a recon are themselves load-bearing and must be tree-wide, not dir-scoped. Tighten `skills/planner/agents/ailang-plan-recon.md`: for any signature-change / enum-variant / removal scope the recon REPORTS the compile-driven enumeration as the authoritative code-site set (hand-list advisory) AND emits a spec-named-path existence table (every path the spec names, `ls`-verified, with its handling task). No language change; an agent-definition discipline fix. **context:** loop/recur close audit (architect `[low]`, 2026-05-18) + remove-mut-var-assign close audit (architect `[high]` form_a.md + `[medium]` process-drift, 2026-05-18); pairs with planner Step-5 items 7+8 (those scrub the *plan*; this scrubs the *recon* and the *recon brief*).
Brummel added the bug label 2026-05-20 15:29:34 +02:00
Sign in to join this conversation.