audit: iteration-discipline-revert milestone close — clean

Architect: revert byte-pristine vs 1ff7e81 (18 src + 5 test files
byte-identical; zero residual it.1/it.2 production surface; DESIGN.md
+ roadmap + spec hygiene correct). One [medium] drift — a dangling
loop/recur cross-reference into the reverted milestone inside the
LIVE Stateful-islands roadmap scope bullet — fixed inline: reworded
to keep the real, still-true scope guard (no while/for; this
milestone introduces none; repetition stays recursion as the
language has it; a mut block is a sealed expression, never a loop)
and drop the reverted-milestone reference.

Bench: compile_check.py / cross_lang.py exit 0; check.py exit 1 on a
single metric (bench_list_sum.bump_s +12.71%). Bencher localisation:
the HEAD and 1ff7e81 bump binaries are cmp-identical, an interleaved
3x60-run measurement shows head-oracle delta ~0 (±1.5% stdev) with
both ~+11% over the 2026-05-09 baseline — environmental/hardware
drift, NOT a revert regression (third independent proof codegen ==
1ff7e81, alongside the architect byte-diff and the Task-11
behavioural-equivalence sweep). Resolution: carry-on; baseline NOT
ratified (Iron Law — nothing intentionally moved the metric;
byte-identical codegen must not move the baseline; the spec's
PRISTINE mandate is satisfied: pristine = no regression introduced,
proven). The pre-existing *.bump_s baseline-vs-hardware staleness is
filed forward as a separate P2 [todo] (bench-harness recalibration,
no language change), not mis-attributed to the revert.

Fieldtest skipped (Boss judgement; non-mandatory): a revert restores
the already-field-tested pre-9973546 surface; the Task-11
164-fixture byte-equivalence is the stronger correctness proof.

Milestone iteration-discipline-revert closed clean.
This commit is contained in:
2026-05-16 01:42:58 +02:00
parent 37ac704bf3
commit 78426643df
3 changed files with 129 additions and 4 deletions
+21 -4
View File
@@ -270,6 +270,22 @@ clean. Pick the next milestone from P2.)_
- context: fieldtest 2026-05-11 — fieldtest fixtures could not be
placed under `examples/fieldtest/` because of this; predates the
canonical-type-names milestone but surfaces every time.
- [ ] **\[todo\]** `*.bump_s` throughput baseline is stale vs current
hardware — `bench/check.py`'s `throughput.*.bump_s` family (the
fastest, most jitter-prone metrics) reads ~+513% over
`bench/baseline.json` on the current machine. Localised at the
iteration-discipline-revert audit (2026-05-16): an interleaved
3×60-run measurement of `bench_list_sum` bump_s built from the
byte-oracle commit `1ff7e81` shows the *same* ~+11% elevation as
HEAD, and the two bump binaries are `cmp`-identical — so this is
environmental drift relative to the 2026-05-09 baseline-capture
machine state, **not** a codegen regression. Re-capture the full
`*.bump_s` set on current hardware from a known-clean commit and
recalibrate the `bump_s` baseline+tolerance pair (or widen the
tolerance) so the noise floor stops tripping `check.py` exit 1.
Pure bench-harness recalibration; no language change.
- context: `docs/journals/2026-05-16-audit-iteration-discipline-revert.md`
(the bencher localisation evidence).
- [x] **\[todo\]** `check_in_workspace` per-module overlay narrowing —
`crates/ailang-check/src/lib.rs:1234` still clears+rebuilds
`env.ctor_index` per-module; ct.3.2 narrowed the analogous mono
@@ -345,10 +361,11 @@ clean. Pick the next milestone from P2.)_
the effect-handler infrastructure forward.
- `mut` block as the syntactic boundary in Form A — outside,
AILang's pure self; inside, `var` / `assign` / mutable arrays
legal. (Iteration is *not* part of this boundary: the "Iteration
discipline" P1 milestone supersedes the earlier "while-loops
legal" scope here — repetition is structural recursion or named
`loop`/`recur`, never a `while` over mutable state.)
legal. (Iteration is *not* part of this boundary: AILang has no
`while`/`for` and this milestone does not introduce one —
repetition stays recursion, exactly as the language has it today
(structural / tail recursion); a `mut` block is a sealed
expression, never a loop over mutable state.)
- `var x = expr` + `assign x expr` AST nodes, legal only inside
`mut`.
- Mutable array primitive (`MutArray a`, O(1) index/update under