audit: prose-loop-binders milestone CLOSE — clean / carry-on

Architect drift review clean (zero drift/debt, diff-verified: single
Term::Loop write_term hunk, no non-render site / Term::Recur / doc /
lockstep touched). Bench: compile_check 0/24 + cross_lang 0/25 exit
0; check.py's latency-tail firings proven single-sample jitter by an
identical confirmatory re-run (p99.9 +37%→+10% ok, max +114%→+22%
ok); the sole persistent firing is the pre-tracked P2 *.bump_s
environmental staleness, causally impossible to attribute to a
projection-only ailang-prose change. All items carry-on — no fix, no
baseline ratify. Fieldtest not applicable (no authoring-surface
change). Roadmap P0 flipped to closed; WhatsNew user-facing entry
appended (user present → notification suppressed per policy).
This commit is contained in:
2026-05-18 01:10:20 +02:00
parent c9355d7d58
commit 48e7774d01
4 changed files with 115 additions and 12 deletions
+17 -12
View File
@@ -35,19 +35,24 @@ work progresses.
## P0 — In flight
- [~] **\[milestone\]** Prose `loop` binders — projection redesign.
Form-B prose currently renders loop binders as `name = init;`
statements *inside* the `loop { … }` body, which misreads as
C/Rust re-init-every-iteration semantics. Move them to a
parenthesised init-list on the keyword — `loop(acc = 0, i = 1)
{ … }` — positionally isomorphic to `recur(...)`. Projection-only:
one `ailang-prose` `write_term` `Term::Loop` arm + 2 snapshot
fixtures/tests; loop/recur AST, Form A, JSON-AST, typecheck,
codegen, and the Form-A↔JSON round-trip invariant all unchanged.
Spec'd + approved 2026-05-18; Step-7.5 grounding-check PASS. Plan
next.
- [x] **\[milestone\]** Prose `loop` binders — projection redesign
CLOSED 2026-05-18. Form-B prose now renders loop binders as a
parenthesised init-list on the keyword (`loop(acc = 0, i = 1)
{ … }`, positionally isomorphic to `recur(...)`) instead of bare
`name = init;` statements inside the body block (which misread as
C/Rust re-init-every-iteration). Single-iteration, projection-only:
one `ailang-prose` `write_term` `Term::Loop` arm + 2 committed
byte-equality `.prose.txt` snapshots/tests; loop/recur AST, Form A,
JSON-AST, typecheck, codegen, and the Form-A↔JSON round-trip
invariant all byte-unchanged. brainstorm→plan→implement
(`c657e74`/`6533134`/`c9355d7`); milestone-close `audit` clean
(architect zero drift; bench carry-on — sole firing is the tracked
P2 `*.bump_s` environmental staleness, latency-tail proven sampling
noise by re-run); no fieldtest (projection-only, no authoring-
surface change). Stays here briefly for context; remove once stale.
- context: `docs/specs/2026-05-18-prose-loop-binders.md`;
surfaced from the loop/recur prose review (2026-05-18 chat).
`docs/journals/2026-05-18-audit-prose-loop-binders.md`; surfaced
from the loop/recur prose review (2026-05-18 chat).
- [x] **\[milestone\]** Standalone `loop` / `recur` — CLOSED 2026-05-18.
Strictly-additive strict-iteration surface, `recur` tail-position-only,