72e54f4fd3
The surface-form file extension changes from .ailx to .ail. AILang's
authoring surface now uses the same .ail stem as its canonical JSON
form (.ail.json), giving the language a single coherent extension
family: .ail is the LLM-authored Form A, .ail.json is the canonical
JSON-AST Form B.
Scope (touched):
- 61 example renames examples/**/*.ailx → .ail (git mv)
- 1 rename experiments/.../rendered/ailx.md → ail.md
- 35 content-edited live-toolchain files (crates/, docs/DESIGN.md,
docs/roadmap.md, docs/PROSE_ROUNDTRIP.md, skills/, bench/reference/*.c,
experiment crates under experiments/.../{render,harness,master})
- Experiment-crate cohort rename Cohort::Ailx → Cohort::Ail,
Form::Ailx → Form::Ail, per_cohort/ailx → per_cohort/ail,
{form-only: ailx} → {form-only: ail}, ```ailx → ```ail
Out of scope (deliberately untouched, to preserve honest history):
- docs/journal-archive.md (content-frozen per CLAUDE.md)
- docs/journals/, docs/specs/, docs/plans/, bench/orchestrator-stats/
- experiments/.../runs/ (frozen LLM-output artefacts; models actually
saw .ailx — renaming would falsify the experimental record)
Verification: cargo build/test --workspace green; experiment crate
cargo test green; bench/check.py + compile_check.py + cross_lang.py
all 0-regressed; negative grep for ailx|Ailx|AILX outside the
out-of-scope paths returns zero matches.
Opens immediate follow-up: roadmap.md P2 todo `ail check`/build/run
accept .ail extension — after this rename, .ail is canonical
authoring surface but the CLI still produces a misleading JSON-parse
error on `ail check foo.ail`. That's the next iter.
108 lines
4.6 KiB
Markdown
108 lines
4.6 KiB
Markdown
# iter ext-rename — `.ailx` extension renamed to `.ail` across the live toolchain
|
|
|
|
**Date:** 2026-05-12
|
|
**Started from:** 17b370b (post-audit-ms close, working tree clean)
|
|
**Status:** DONE
|
|
**Tasks completed:** 1 of 1
|
|
|
|
## Summary
|
|
|
|
The surface-form file extension changes from `.ailx` to `.ail`.
|
|
AILang's authoring surface now uses the same `.ail` stem as its
|
|
canonical JSON form (`.ail.json`), giving the language a single
|
|
coherent extension family: `.ail` is the LLM-authored Form A;
|
|
`.ail.json` is the canonical JSON-AST Form B that
|
|
`ail check` / `build` / `run` actually loads today.
|
|
|
|
The earlier `.ailx` extension carried an unmotivated `x`. The
|
|
cross-model authoring-form test (cma + ms milestones, closed
|
|
earlier today) treated `.ailx` purely as a cohort identifier;
|
|
once the empirical case for keeping a separate authoring surface
|
|
had been ratified (DESIGN.md §Decision-6 addendum), the awkward
|
|
extension was the last asymmetry between Form A and Form B.
|
|
User-initiated rename.
|
|
|
|
## Scope
|
|
|
|
In scope (touched):
|
|
|
|
- 61 example files `examples/**/*.ailx → .ail` (57 top-level +
|
|
4 `examples/fieldtest/`) renamed via `git mv`.
|
|
- `experiments/.../rendered/ailx.md → ail.md` rename.
|
|
- All live toolchain prose and code: `crates/ail/`,
|
|
`crates/ailang-surface/`, `crates/ailang-core/specs/form_a.md`,
|
|
`docs/DESIGN.md`, `docs/roadmap.md`, `docs/PROSE_ROUNDTRIP.md`,
|
|
`bench/reference/*.c`, all of `skills/`, the Cross-Model
|
|
Authoring experiment crates under
|
|
`experiments/.../{render,harness,master,rendered,README.md}`.
|
|
- Cohort identifier `ailx → ail` in the experiment crate (Rust
|
|
`Cohort::Ailx → Cohort::Ail`, `Form::Ailx → Form::Ail`,
|
|
per-cohort path component, `{form-only: ailx}` marker,
|
|
```ailx codefence language tag).
|
|
|
|
Out of scope (untouched, by design):
|
|
|
|
- `docs/journal-archive.md` (content-frozen per CLAUDE.md).
|
|
- All `docs/journals/`, `docs/specs/`, `docs/plans/`,
|
|
`bench/orchestrator-stats/` — historical records describing
|
|
states as they were.
|
|
- `experiments/.../runs/` — frozen LLM-output artefacts; the
|
|
models in those runs actually saw `.ailx`, and renaming the
|
|
artefacts would falsify the experimental record.
|
|
|
|
The exclusion preserves the journals as honest history. Anyone
|
|
chasing why a 2026-05-11 fieldtest names `.ailx` files will find
|
|
that the renaming happened today and that the names were correct
|
|
at the time of writing.
|
|
|
|
## Why boss-direct edit (no planner / implement dispatch)
|
|
|
|
Same rationale as iter rt.2: the user fully specified the
|
|
transformation (rename `.ailx → .ail`, rename cohort
|
|
`ailx → ail`, historical records untouched), down to the three
|
|
open questions that were resolved up-front via AskUserQuestion
|
|
(cohort name; treatment of frozen runs; treatment of historical
|
|
docs). The execution was two `git mv` passes plus one
|
|
heavily-scoped `sed` over an explicit 41-file whitelist (plus
|
|
two follow-up files surfaced by the negative-grep). No design
|
|
judgement deferred to execution time.
|
|
|
|
## Files touched (working-tree counts)
|
|
|
|
- 61 renames under `examples/`.
|
|
- 1 rename `experiments/.../rendered/ailx.md → ail.md`.
|
|
- 35 content-edited files: the 41-file SCOPE whitelist minus
|
|
the experiment-crate files that had no `ailx` content, plus
|
|
two follow-up files surfaced by the negative-grep
|
|
(`examples/bench_list_sum_explicit.ail`'s in-source comment;
|
|
`experiments/.../rendered/json.md` for three `AILX` acronyms
|
|
in prose).
|
|
|
|
## Verification
|
|
|
|
- `cargo build --workspace` clean.
|
|
- `cargo test --workspace` green; the renamed identifiers
|
|
`every_ail_fixture_matches_its_json_counterpart` and
|
|
`parse_then_print_then_parse_is_idempotent_on_every_ail_fixture`
|
|
in `crates/ailang-surface/tests/round_trip.rs` were run
|
|
explicitly and pass.
|
|
- Experiment crate `cargo test` (out-of-workspace) green.
|
|
- `bench/check.py`, `bench/compile_check.py`, `bench/cross_lang.py`:
|
|
0 regressed across all three; 6 improved-beyond-tolerance on
|
|
`latency.explicit_at_rc` (same cluster the previous two audits
|
|
today already observed; decoupled from this rename — baseline
|
|
left pristine).
|
|
- Negative grep: `git grep -nIi 'ailx|Ailx|AILX'` outside the
|
|
out-of-scope paths returns no matches.
|
|
|
|
## Roadmap implications
|
|
|
|
The `.ail` extension is now canonical authoring surface but the
|
|
CLI does not yet accept it — `ail check foo.ail` still produces
|
|
the misleading JSON-parse error. The existing P2 todo
|
|
"`ail check`/`build`/`run` accept `.ail` extension" (roadmap.md
|
|
line 185) is the natural next iteration: it closes the loop
|
|
opened by today's rename and removes the largest first-command
|
|
friction for any LLM-author writing in Form A. Promoting that
|
|
todo to the immediate next dispatch.
|