e864c85840a31fbadaf3389377570ddac46cc534
Form A (.ail) becomes the sole authoring surface for every program in the working tree. The seven negative-test JSON-AST fixtures are the only post-milestone .ail.json files; everything else is rendered to .ail and the JSON counterpart is deleted (single representation per program). Spec decides the four open design questions inline: - A1: in-process parse via ailang_surface::parse, no build-time target/ artefacts (would reintroduce a second representation). - A2: prelude.ail ships as iter-0 pilot, validated by the existing every_ail_fixture_matches_its_json_counterpart gate. - A3: per-file deletion cadence; iter 0 is the singular dual-form window because the JSON counterpart is the witness the CI gate uses. - A4: CLAUDE.md and DESIGN.md reworded — canonical vs authoring forms separated, JSON-AST stays canonical/hashable, .ail becomes the authoring entry point. Roundtrip invariant restates from "two forms agree byte-for-byte" to "parse is deterministic + idempotent under print"; carve-out inventory test pins the seven JSON-only fixtures against silent list drift. Grounding-check PASS over 8 load-bearing assumptions. Iteration scope: iter 0 = prelude pilot only (render prelude.ail.json -> prelude.ail; do not delete the JSON yet; do not touch CLAUDE.md/DESIGN.md/tests yet).
Description
No description provided
Languages
Rust
91.6%
Python
4.6%
C
1.8%
LLVM
1.6%
Shell
0.4%