Burxt — the milestone log

Every version, in order, with what it decided and what it cost. The log is a record, not documentation: entries are appended, superseded decisions are marked rather than rewritten, and a version that was spent on a mistake says so.

It lived in DESIGN.md until v0.0.72, when 2,500 of that file’s 3,000 lines were log and finding anything meant searching. The design it serves stayed there; DESIGN.md is still the place to start.

This log covers v0.0.1–v0.0.89. From v0.0.90 the record moved into the milestone specs in spec/, each carrying its own status block — spec/1.0/M12-STRINGS.md records M12’s numbers, spec/1.0/M13-CONTRACT-SYNTAX.md records what M13 shipped and what is still pending, and so on. That was a reasonable shift, since work became milestone-shaped rather than version-shaped, but it happened without a note and this log appeared to simply stop. It did not; look in spec/. Versions with no milestone of their own are recorded where they live — v0.0.141’s wrong answer is written into tests/pass/abi_dyn_record_params.bx and the invariant that guards it.

The files

Versions What happened  
v0.0.1–v0.0.10 The language runs read
v0.0.11–v0.0.20 Aggregates, dispatch, and the literals money needs read
v0.0.21–v0.0.30 Memory, regions, and the first self-hosted pieces read
v0.0.31–v0.0.37 The half of a language that lives outside the compiler read
v0.0.38–v0.0.42 allocates, pure, and the mark read
v0.0.43–v0.0.50 Contracts, conservation laws, and termination read
v0.0.51–v0.0.58 The front end, in Burxt read
v0.0.69–v0.0.89 The mark, the shape of the repository, and the fixpoint read

Every entry

The language runs — v0.0.1–v0.0.10

Aggregates, dispatch, and the literals money needs — v0.0.11–v0.0.20

Memory, regions, and the first self-hosted pieces — v0.0.21–v0.0.30

The half of a language that lives outside the compiler — v0.0.31–v0.0.37

allocates, pure, and the mark — v0.0.38–v0.0.42

Contracts, conservation laws, and termination — v0.0.43–v0.0.50

The front end, in Burxt — v0.0.51–v0.0.58

The mark, the shape of the repository, and the fixpoint — v0.0.69–v0.0.89

The gap: v0.0.59–v0.0.68, and v0.0.70

These have no entry here, and the reason is deliberate rather than an oversight: they were ten consecutive versions of one milestone — the self-hosted typechecker and then the backend — and they were recorded in that milestone’s own specification while it was being built, where the running counts (false positives, rejections, lines emitted) belonged next to the plan they were measured against.

  • v0.0.59–v0.0.68 — spec/1.0/M4-SELF-HOSTING.md, phases 4b through 5, and §3a for where the bootstrap stands.
  • v0.0.70 — the VS Code extension reinstalled so it carried the new mark; recorded in the v0.0.69 entry, since it was the same change finished properly.

Splitting the log made the gap visible, which is the argument for having done it.