Loop audit — feedback loops by radius
The cybernetic instrument: every correction loop the project runs, ordered by radius (inner = at the desk, outer = the environment), with cycle time and state. Refreshed at each checkpoint (◊) —
tools/check-loop-audit.shfails fitness when ROADMAP.md has moved more recently than this file, so the audit cannot silently go stale. The question it answers: which loop is missing or slowest, and is it inside or outside the desk? (Origin: the 2026-07-08 multi-lens project evaluation — SDLC validation gap, VSM S4, Meadows L6 all converge on the outer-loop asymmetry this table tracks.)
Position: ◊5.5 concrete emission is productized through bang build and real-engine differential batteries; the project-abstract proof target and separate Wasm 3.0 emitter boundary is explicit in ADR-0110; Verify, Site, and Pages are green through the 2026-07-16 remediation wave.
| loop (what corrects what) | cycle time | state |
|---|---|---|
| types / elaborator | seconds | ✔ excellent |
lake build · #guard oracles | minutes | ✔ excellent |
axiom gate (just axioms, Audit.lean census) | minutes | ✔ ungameable by design |
refute-first witnesses (Bang/Witness/) | hours | ✔ institutionalized |
differential fuzz (Bang/Witness/Fuzz.lean, #14) | per-build | ✔ 200 seeded samples, handler-fragment-biased, #guard-gated |
| commit integrity (pre-commit hook) | per-commit | ✔ REPAIRED 2026-07-10 — the 11-incident worktree-index ghost ROOT-CAUSED (hook leaked GIT_INDEX_FILE into lake's git-in-mathlib) and fixed (plan 008 env -u sanitization, exercised live) |
test batteries (just verify / lake test) | minutes | ✔ 28/28 batteries; concrete Wasm build/engine checks and explicit host-authority cases now run in the standing gate |
| increment gate · banking discipline | days | ✔ caught #44 Stage-2 pre-land |
doc fitness (just fitness generated legs) | days | ✔ caught stale proof-dashboard consumption, abstract/concrete target collapse, and this ROADMAP-coupled loop-audit refresh in the 2026-07-16 wave |
| advisor audit → plan → executor → review (plans/) | days | ✔ 11 plans, 9 landed; exact-head independent review caught residual Route-B overclaims before publication |
| — the desk's edge — | ||
CI on main (.github/workflows/verify.yml) | per-push | ✔ Verify, Site, and Pages green through the 2026-07-16 remediation wave |
| a user running bang | per-◊ (stranger test) | ◑ OPEN — five internal roleplay-strict rounds have fed concrete fixes, but still no ORGANIC outside user; another internal round cannot satisfy the validation gate |
| external review (paper, peers) | — | ◑ ◊6 paper skeletons drafted; no external peer read yet |
| performance measurement | — | ✘ absent (invariant #7 defers it) — first instrument in flight: lake exe pole wiring + critical-path report (plan 007) |
How to refresh (at each ◊)
- Re-grade each row from evidence (a loop's state is what it caught lately, not what it could).
- Move/add rows if new loops exist (e.g. first outsider issue → the user loop goes ◑).
- Update the
_Position:stamp line + commit together with the ROADMAP checkpoint edit. - The deliverable is the ONE sentence answer to: which loop is now the weakest, and does the next arc feed it? (If three ◊ in a row answer "the same outer loop", that's the escalation.)
2026-07-16 answer: the weakest loop is still the organic-outside-user one. Five internal stranger rounds have extracted useful fixes but cannot provide external validation, so the three-refresh escalation is active: the next arc must publish, invite an unassisted run, and capture outsider-filed feedback rather than substituting another internal simulation.