Skip to content

[0.5.0] #113: release identity, §2.3 completion release 0.5.0 and §30 for languages 1.0-1.2 (RP-17, CL-18) - #288

Merged
humuhumu33 merged 11 commits into
release/v0.5from
claude/issue-113-release-identity
Oct 23, 2026
Merged

humuhumu33 merged 11 commits into
release/v0.5from
claude/issue-113-release-identity

Conversation

@humuhumu33

@humuhumu33 humuhumu33 commented Oct 22, 2026 •

Copy link
Copy Markdown
Contributor

Resolves #113 (plan item L1.2 of #106) on the v0.5 line. Against release/v0.5, which is merged in at e600b58 (#285, #286, #287).

The amended text

Edited in spec/src/Chapter02.lex.tex and spec/src/Chapter30.lex.tex with cargo xtask spec (each edit byte-checked against the intended SPEC.md); SPEC.md is the projection.

§2.3, the last paragraph (the rule for 1.0.0 is kept as the fallback):

The initial implementation version is 0.1.0. The completion release, the first release satisfying this complete specification and the release §30 names, is 0.5.0 when that release satisfies the completion criterion of §30.4, and 1.0.0 otherwise.

§30.1, the list gains the three identifiers and one semantics ID per language, and a paragraph says what identifies a release:

  • language identifier, one of 1.0, 1.1, and 1.2, each of which a release supports;
  • compiler-semantics ID, one for each language identifier (§21.2).

A release is identified by its compiler version together with, for every language it supports, the language identifier and that language's compiler-semantics ID; §30.3 states how its binaries report them.

§30.3:

The completion release (§2.3) MUST publish:
…

  • the compiler-semantics ID of every supported language;
    …
    Release binaries MUST report, where <version> is the release version and each <digest> is the compiler-semantics ID of the language on the line before it:
lexlean <version>
language 1.0
compiler-semantics <digest>
language 1.1
compiler-semantics <digest>
language 1.2
compiler-semantics <digest>
lean-toolchain leanprover/lean4:v4.32.1

§30.4, the lead only, because "complete for LexLean 1.0" no longer names the release:

The project is complete, and a release is the completion release of §2.3, only when:

The §30.4 lead is one line outside the three paragraphs #113 names. Say if you want it left as it was.

Rows (R3 order: skeleton commit 093adfb, failing, before the implementation)

ID Change Statement
RP-17 new, repository, §2.3, §30.3 cargo xtask release-check reads the completion release from §2.3 and the version report from §30.3 as the chapter modules of the specification project state them, and refuses a workspace version §2.3 does not name, a version report or semantics-ID list that is not the §30.3 report for the release version and each language's ID, and a §30.3 report whose languages are not the languages the compiler supports, a plant in either chapter item changing what it refuses.
CL-18 amended Version output reports the compiler version, every supported language in ascending order each followed by its compiler-semantics ID, and the Lean toolchain exactly.

CL-18 is amended rather than duplicated, so the version report has one register row (C6), as #226 extended RP-14. Register 443 → 445: AU-14 (#241, merged in from release/v0.5) is the 444th row and RP-17 the 445th.

At the skeleton head both tests failed for the intended reason:

test conformance_rp_17 ... FAILED   (no repository case is wired for RP-17)
test conformance_cl_18 ... FAILED
  left: "lexlean 0.3.0\nlanguage 1.0\ncompiler-semantics 8554…4851\nlean-toolchain leanprover/lean4:v4.32.1\n"

What changed

  • Version output (crates/lexlean/src/cli.rs): every LANGUAGE_VERSIONS entry with compiler_semantics_id_for of that language. The lexlean line and the first language/compiler-semantics pair are unchanged, so a reader that takes the first semantics line still gets language 1.0's. No identity moves: the CLI is not in the embedded tree.
  • release-check (crates/model/src/release.rs): release::criterion(root) projects the chapter modules and reads the completion versions from the §2.3 sentence beginning "The completion release" and the report from the §30.3 text fence beginning lexlean <version>. RELEASE_VERSION = "1.0.0" is gone. source-tag requires the workspace version to be one §2.3 names; version-output requires the staged report to be the fence with the workspace version and each language's ID, and the fence's languages to be lexlean::LANGUAGE_VERSIONS; semantics-id requires one <language> <ID> line per reported language, each ID the one compiled into the compiler for that language (lexlean::compiler_semantics_id_for(language).to_hex()), and version-output is rendered with the same compiled-in IDs, so each staged file is held to the source and not to the other file (the maintainer's round; before it, the report was compared with the staged list, both written by release-artifacts from one --version run). A specification that does not say refuses both version criteria.
  • release-artifacts (xtask): writes compiler-semantics-id.txt as one <language> <ID> line per language, and writes release-identity.json with compiler_semantics_id (language 1.0's, as before) and compiler_semantics_ids. release-check reads neither JSON field; the file is what the artifacts step writes, not a criterion.
  • release.yml: the allowance before the completion release is source-tag alone. version-output now holds at every version, because the report carries the tagged version, so a pre-completion tag whose report is wrong now fails. Comments and release notes name the completion release instead of 1.0.0.
  • README, CHANGELOG (Unreleased entry and preface), VERIFICATION.md (plants below).

Version output now

lexlean 0.3.0
language 1.0
compiler-semantics 8554008034f6e9284382619a7aa71e0f0071ad404ea9d821068294d2d8804851
language 1.1
compiler-semantics 176453256c64bbd14b1449f5979610054c72ea83213ecd13795cc883af8b2cd8
language 1.2
compiler-semantics 5262e5b4c8b5668ae7066ad686757a6bb7f80c941d515fb9d586894fbc7de69a
lean-toolchain leanprover/lean4:v4.32.1

release.yml version check

The #128 audit (comment) found that release.yml's binaries step still required --version to print exactly four lines, so with the eight-line report every binary (<target>) job would fail and publish never run. Fixed in 1b673fb.

The step, now "The binary reports the §30.3 identity", reads the §30.3 fence of SPEC.md, the same text CL-18 reads. It expects the fence's line count, the lexlean line with the tagged version, each <digest> as a 64-hex-digit ID, and every other line exactly. No count is written in the workflow. The exact IDs are compared in publish: release-check holds each ID that release-artifacts lists and reports from its own build of the tagged source to the ID compiled into that source, and refuses semantics-id and version-output on a difference (added in the maintainer's round; the comment at release.yml lines 176-177 now describes that check).

Its shell was run as written on Linux x86-64 against the release binary and five plants; all are recorded in VERIFICATION.md under the RP-17 plants:

Case Observed
the release binary (8 lines) exit 0
report without language 1.2 and its ID --version printed 6 lines, not the 8 of the §30.3 report, exit 1
the four-line report of earlier releases --version printed 4 lines, not the 8 of the §30.3 report, exit 1
a 63-digit ID, swapped languages, wrong VERSION each names the line, exit 1

After the change: cargo xtask validate-model reports 445 ids, clean; conformance_cl_18 and conformance_rp_01 to conformance_rp_17 pass.

Maintainer round (2026-10-23)

On release/v0.5 at e600b58, in five commits after 1b673fb4f:

Commit What
db786cc48 merge of release/v0.5 at bde798b (merge commit, no rebase); CHANGELOG.md and VERIFICATION.md keep both sides in landing order; README "All 445 registered conformance IDs", AU-01..AU-14; SPEC.md §31 total 445 by cargo xtask validate-model --write; the AU-14/#241 Unreleased bullet ending "Register 444" before this change's, ending "Register 445"; this change's bullet phrases release-identity.json as what release-artifacts writes
f76d22e1d R3 skeleton: two plants in rp_17() and the RP-17 scenario's And line. On the unfixed check the case fails at the first plant: a list giving language 1.1 another ID is not refused as semantics-id (repository.rs:2283)
fe83d572e merge of release/v0.5 at e600b58 (#286 landed during the round); its CHANGELOG bullet goes between this change's and AU-14's; no register row, the count stays 445
12bb58230 release::check builds the lookup from lexlean::compiler_semantics_id_for(language).to_hex() over LANGUAGE_VERSIONS, refuses semantics-id for a listed ID that differs (and a listed language the compiler does not support), and renders version-output with the same lookup; CRITERIA texts and the release.yml comment say so
40483e759 VERIFICATION.md: the two ID plants run with the real command, and the paragraph on what the evidence is

The plant, cargo xtask release-check on the committed tree with the binary's report and list staged under release/, language 1.1's listed ID with its first hex digit changed:

semantics-id: release/compiler-semantics-id.txt line 2: language 1.1 is listed with the ID `076453256c64bbd14b1449f5979610054c72ea83213ecd13795cc883af8b2cd8`, and the compiler-semantics ID of language 1.1 is `176453256c64bbd14b1449f5979610054c72ea83213ecd13795cc883af8b2cd8`

With the report changed to agree with the list, as one --version run of a compiler with that ID would stage both, semantics-id is refused as above and version-output with must be exactly: the compiled-in report. Both real: neither is refused.

Gates

Run in WSL on Linux x86-64 at 12bb58230 (validate-model again at 40483e759, which changes only VERIFICATION.md):

Gate Result
cargo fmt --all -- --check clean
cargo xtask validate-model documents current, 445 ids, 86 codes, meta-gate and audits clean (R1)
cargo xtask validate-spec-links 445 table rows bijective with the register (RP-07)
cargo clippy -p repo-model -p repo-conformance -p xtask --all-targets --all-features -- -D warnings clean
cargo test -p repo-model 30 passed
conformance_rp_11, conformance_rp_12, conformance_rp_17 3 passed
conformance_cl_* 23 passed

Sibling work

#285, #286 and #287 are merged in (above). None of them overlaps this change outside the CHANGELOG top and the register count.

Not verified

  • just vv whole was not run; only the gates above. The full gate runs on CI when the pull request is marked ready.
  • release.yml was not run as a workflow. Its edits are the allowance (now source-tag only), comments, notes, paste -sd ',' over the multi-line semantics file, and the identity step, whose shell alone was run locally (above).
  • How the release-check reader extracts §2.3 is a sentence match: the sentence of Chapter02 that begins "The completion release", and the backticked X.Y.Z versions in it. Rewording that sentence makes release-check refuse both version criteria, never pass them; the RP-17 case plants that.

🤖 Generated with Claude Code

humuhumu33 and others added 4 commits October 22, 2026 20:27
…elease for every supported language (#113)

§2.3 names the completion release: 0.5.0 when it satisfies the §30.4
criterion, 1.0.0 otherwise. §30.1 lists the three language identifiers, one
compiler-semantics ID each, and says what identifies a release. §30.3 makes
the completion release the one that publishes, publishes every language's
semantics ID, and reports each language with its ID. §30.4 ties the
criterion to the completion release instead of "LexLean 1.0". Edited with
`cargo xtask spec`; SPEC.md regenerated.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…se identity (#113)

RP-17 (new): `release-check` reads the completion release from §2.3 and the
version report from §30.3 out of the chapter modules. CL-18 (amended): the
version output reports every supported language, each with its own
compiler-semantics ID. conformance_rp_17 has no case wired; conformance_cl_18
expects the new report, which the binary does not print yet. Register 444.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…reads §2.3 and §30.3 (#113)

`lexlean --version` prints each supported language followed by its own
compiler-semantics ID. `release::criterion` projects the chapter modules
and reads the completion releases from the §2.3 sentence and the version
report from the §30.3 fence; `check` requires the workspace version to be
one §2.3 names, the staged report to be that fence filled in, its languages
to be the compiler's, and the semantics-ID list to name each. RELEASE_VERSION
is gone. `release-artifacts` writes one `<language> <ID>` line per language
and adds `compiler_semantics_ids` to the release identity. The RP-17 case
plants each item on a scratch tree.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…nts recorded (#113)

README and CHANGELOG state §2.3's completion release and the per-language
version report. release.yml allows only `source-tag` before the completion
release, since the version report now carries the tagged version and holds
at every version. VERIFICATION.md records the chapter and reader plants.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…not a four-line count (#113)

The `binaries` step required `--version` to print exactly four lines, the
report before CL-18 was amended; with the eight-line report every `binary`
job would have failed and `publish` never run (found by the #128 audit).
The step now reads the §30.3 fence of SPEC.md, the text CL-18 reads: the
fence's line count, the first line with the tagged version, each `<digest>`
a 64-hex-digit ID, every other line exact. Recorded in VERIFICATION.md: the
release binary passes; a report missing language 1.2, the four-line report,
a truncated ID, swapped languages and a wrong version each fail.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@humuhumu33

Copy link
Copy Markdown
Contributor Author

The #128 audit (comment) found a defect at this PR's head. release.yml required --version to print exactly 4 lines, but amended CL-18 prints 8. That defect is fixed in 1b673fb.

The binaries step now checks each host binary's report against the §30.3 fence of SPEC.md, the same text CL-18 reads. That covers the fence's line count, the tagged version, a 64-hex-digit ID per language, and every other line exactly. No count is written in the workflow.

The step's shell was run locally against the release binary, which passed. It was also run against a report missing language 1.2 and the old four-line report, and both failed. All of these runs are recorded in VERIFICATION.md under the RP-17 plants. The PR body has a "release.yml version check" section with the details.


Generated by Claude Code

afflom commented Oct 23, 2026

Copy link
Copy Markdown
Member

Maintainer: read, and in the release/v0.5 queue. The head is green and mergeable; keep it so. The release/v0.4 landings (#255 in regeneration now, then #259, #262, #264, #265, #293, the bootstrap trio #258/#266/#282, #247, #256, and #261) hold the gate and the review agents first, by the owner's direction. The v0.5 lane is reviewed in this order as agents free up: #285, #290, #286, #287, #288, #289. Read 1b673fb4f and the #128 audit: the binaries step reading the §30.3 fence instead of a line count is the right shape, since the fence is the text CL-18 reads.


Generated by Claude Code

afflom commented Oct 23, 2026

Copy link
Copy Markdown
Member

Maintainer review of 1b673fb4f: the content is right, one round before the merge.

Blocking (mechanical): the merge with release/v0.5 at 0694c7ca6 conflicts in CHANGELOG.md and VERIFICATION.md (#285's entries), and this PR also meets #286 and #287 at the CHANGELOG top. Merge the line in (merge commit, no rebase) after #287 lands; the register is then 445 in README, the SPEC §31 total and the CHANGELOG bullet.

Should fix (R2): .github/workflows/release.yml:176-177 and the PR body say "release-check in publish compares the exact IDs". It does not: crates/model/src/release.rs:548-630 compares version-output.txt against compiler-semantics-id.txt, both staged by release-artifacts from the same --version run; nothing compares either to lexlean::compiler_semantics_id_for. The shape is pre-existing, but the new comment asserts a gate that does not exist. Add the check: in check, build the lookup from lexlean::compiler_semantics_id_for(language).to_hex() (crates/model already imports lexlean::LANGUAGE_VERSIONS) and refuse semantics-id when a listed ID differs; plant it in VERIFICATION. Rewording the comment is the fallback, not the preference.

Nits: CHANGELOG.md:25-27 says release-identity.json gains compiler_semantics_ids; release.rs never reads that file, so phrase it as what release-artifacts writes, not as a criterion. CL-18's "ascending order" rests on LANGUAGE_VERSIONS being ascending (lib.rs:125); fine today.

What checked out: §2.3 names the completion release (0.5.0 when §30.4 holds, else 1.0.0); §30.1 lists 1.0, 1.1, 1.2 with one semantics ID each; the §30.3 fence is lexlean <version>, three language/digest pairs, the toolchain. RP-17 and CL-18 statements equal scenario and §31 after trimming; rp_17() plants Chapter02, Chapter30, a four-line report and a list missing 1.2 on a scratch copy of spec/src; VERIFICATION records them and six runs of the release shell. The same fence is read three ways (criterion() from the projection, CL-18 and the awk from SPEC.md's single fence) and each mismatch fails loudly. No overlap with #286; v0.4's §2.3/§30 are byte-equal to the base, so the forward merge is safe. R5, R4 clean; identity-neutral.


Generated by Claude Code

afflom commented Oct 23, 2026

Copy link
Copy Markdown
Member

Maintainer: #287 is on release/v0.5 at bde798bd6 (register 444), so this PR's round is now concrete: merge the line in (merge commit), counts to 445 (README "All 445 registered conformance IDs", the AU range stays AU-01..AU-14, SPEC §31 total, CHANGELOG), add the AU-14/#241 CHANGELOG bullet that #287 lacked, and the release-check ID comparison (or the reworded comment) from my review above. Then I merge on green.


Generated by Claude Code

Both sides added at the CHANGELOG Unreleased top and the VERIFICATION end;
both are kept in the order the line landed them. The register is 445 with
AU-14 (#241): README count, SPEC.md §31 total (regenerated), CHANGELOG. The
AU-14/#241 Unreleased bullet that #287 lacked is added, ending Register 444,
before this change's bullet, which ends Register 445.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
humuhumu33 and others added 3 commits October 23, 2026 12:13
…ailing (#113)

Maintainer round on #288 (R2): release-check compared the staged
version report with the staged semantics-ID list, both written by
release-artifacts from one --version run. Two plants on the scratch tree:
language 1.1 listed with an ID that is not the compiled-in one must be
refused as semantics-id naming the compiler's ID, and a list and report
agreeing on such an ID must be refused as semantics-id and version-output.

On the unfixed check the case fails at the first plant: semantics-id is
not refused (repository.rs:2283).

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
#286 (#112, SPEC.md §3 and §4) landed after the first merge. Its
CHANGELOG bullet goes between this change's (Register 445) and AU-14's,
in landing order; it adds no register row, so the count stays 445.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…iler's (#113)

Maintainer round on #288 (R2). check builds the lookup from
lexlean::compiler_semantics_id_for(language).to_hex() over
LANGUAGE_VERSIONS. semantics-id refuses a listed ID that differs, naming
the compiled-in ID, and a listed language the compiler does not support;
version-output renders the §30.3 report with the same lookup, so neither
staged file is held only to the other (release-artifacts writes both from
one --version run). The CRITERIA texts say so, and the release.yml
comment at the binaries step describes the check that now exists.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>

afflom commented Oct 23, 2026

Copy link
Copy Markdown
Member

Maintainer: 12bb58230 verified. The comparison is real and runs where the comment says: release.rs:549-556 builds the compiled IDs from LANGUAGE_VERSIONS and compiler_semantics_id_for, :569-599 refuses semantics-id for a listed ID that is not the compiler's and for an unsupported language, :616-646 for a list/report mismatch, and the §30.3 fence is rendered with the compiled IDs, so version-output is held to them too; publish runs release-artifacts then release-check and forgives only source-tag. The plant (repository.rs:2332-2376) flips one hex digit of 1.1's ID and asserts the refusal names the compiler's ID. Counts at 445 everywhere, the AU-14 bullet present, the base merges pure, the merge clean.

One line before I merge, by §27.9: the new plant is recorded nowhere in VERIFICATION (the RP-17 section at :16695-16770 lists the original plants; the red line "semantics-id is not refused, repository.rs:2283" lives only in f76d22e1d's commit message). Add it to the RP-17 falsifiability record with that red line, push, and I merge on green. The PR body's "444" figures are stale, not merged content; update them if you like.


Generated by Claude Code

… (#113)

cargo xtask release-check on the committed tree with the binary's report
and list staged under release/: language 1.1 listed with its first hex
digit changed is refused as semantics-id naming the compiled-in ID; with
the report changed to agree, semantics-id and version-output are both
refused; both real, neither is. The unfixed check's failure at the
skeleton commit is recorded beside them.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@humuhumu33

Copy link
Copy Markdown
Contributor Author

The round is pushed. The head is 40483e759, five commits after 1b673fb4f, and it contains release/v0.5 at e600b58.

1. Merge (blocking). db786cc48 merges release/v0.5 at bde798b with a merge commit. CHANGELOG.md and VERIFICATION.md keep both sides in landing order. README says "All 445 registered conformance IDs", and the AU range stays AU-01..AU-14. The SPEC.md §31 total is 445, made by cargo xtask validate-model --write. #286 landed during the round, so fe83d572e merges again at e600b58. Only the CHANGELOG top conflicted, and #286 adds no row.

2. AU-14 bullet. It is in db786cc48. It ends "Register 444" and sits after #112's bullet and before #242's. This change's bullet is first and ends "Register 445".

3. The ID comparison (R2). f76d22e1d committed the two plants first. On the unfixed check the case failed at the first one:

repository.rs:2283: a list giving language 1.1 another ID is not refused as semantics-id

12bb58230 builds the lookup from lexlean::compiler_semantics_id_for(language).to_hex() over LANGUAGE_VERSIONS. semantics-id is refused when a listed ID differs, and version-output is rendered with the same lookup. The release.yml comment at the binaries step and the PR body now describe that check.

Your 12:31 line. 40483e759 adds the plant to the RP-17 falsifiability record with the red line above. cargo xtask release-check was run on the committed tree with the binary's report and list staged under release/, and language 1.1's listed ID had its first hex digit changed:

semantics-id: release/compiler-semantics-id.txt line 2: language 1.1 is listed with the ID `076453256c64bbd14b1449f5979610054c72ea83213ecd13795cc883af8b2cd8`, and the compiler-semantics ID of language 1.1 is `176453256c64bbd14b1449f5979610054c72ea83213ecd13795cc883af8b2cd8`

When the report was also changed to agree with the list, both semantics-id and version-output were refused. With both files real, neither was refused.

4. Nits. The CHANGELOG bullet now says release-artifacts writes release-identity.json with compiler_semantics_ids, so it no longer reads as a criterion. This is in db786cc48. The CL-18 ordering point needed no change.

Run locally in WSL on Linux x86-64 at 12bb58230, all green:

Gate Result
cargo fmt --all -- --check clean
cargo xtask validate-model 445 ids, clean; run again at 40483e759
cargo xtask validate-spec-links 445 rows bijective
cargo clippy of repo-model, repo-conformance and xtask, -D warnings clean
cargo test -p repo-model 30 passed
conformance_rp_11, conformance_rp_12, conformance_rp_17 passed
conformance_cl_* 23 passed

just vv as a whole was not run locally, and CI is running on 40483e759.


Generated by Claude Code

afflom commented Oct 23, 2026

Copy link
Copy Markdown
Member

Maintainer: 40483e759 records the semantics-ID plants in the RP-17 falsifiability table with their red lines and the control; the PR is accepted at this head. #290 landed meanwhile at 66ae4b358, so the CHANGELOG and VERIFICATION append points conflict once more: merge release/v0.5 at 66ae4b358 in (merge commit, both sides, the line's first) and push; nothing else is pending on the lane ahead of you, so this is the last base merge. I merge on green.


Generated by Claude Code

…288)

CHANGELOG Unreleased and the VERIFICATION append point: both sides kept, the line's (#290) first.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
@humuhumu33

Copy link
Copy Markdown
Contributor Author

Last base merge done as asked: f6f872106 merges release/v0.5 at 66ae4b358 (merge commit). CHANGELOG.md Unreleased and the VERIFICATION.md append point conflicted; both sides kept, the line's (#290) first. Nothing else changed; counts stay at 445; CI is running on the new head.

humuhumu33 pushed a commit that referenced this pull request Oct 23, 2026
RP-11 reads the range against the register: RP-17 is #288 on release/v0.5,
so on this line the last RP ID is RP-18.

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
@humuhumu33
humuhumu33 merged commit 655d9ae into release/v0.5 Oct 23, 2026
30 checks passed
@humuhumu33

Copy link
Copy Markdown
Contributor Author

Merged into release/v0.5 at 655d9ae06 (merge commit) on all 30 checks green with the line contained, under Ilya's merge-on-green rule for our own PRs; the round above (40483e759 + base merge f6f872106) is what landed. The line is at register 445. Closing #113 by hand.

humuhumu33 pushed a commit that referenced this pull request Oct 23, 2026
…ail-call

CHANGELOG.md conflicted again on the unreleased entries (#288 moved the
AU-14 bullet); both sides are kept, the line's before RB-21.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
humuhumu33 pushed a commit that referenced this pull request Oct 23, 2026
…279)

`just vv (rest)` on 6085271 failed eight cases. `rb_02`..`rb_05`, `rb_07`,
`gc_01` and `gn_01` compared the 351 committed packages, provenance files
and negative manifests under compiler/rust with their generator: their
`sources` named the compiler build's semantic ID before the identity move
(7a08f62b…) while compiler/expected/build/manifest.json names the build
after it (3d5f7b04…), because `check-calculus --write` ran before the
compiler record was regenerated. `check-calculus --write` rewrites them;
nothing else in a record changes. `ns_01` found `spec/src/IdsRB.lex.tex`
not canonical: `lexlean fmt` adds the blank line before `rb21`.

With #288 (RP-17) on release/v0.5 the register holds 446 IDs: README's
count sentence and SPEC.md's total (`validate-model --write`) say so.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
humuhumu33 added a commit that referenced this pull request Oct 23, 2026
…otheses

# Conflicts:
#	CHANGELOG.md
#	VERIFICATION.md
humuhumu33 pushed a commit that referenced this pull request Oct 23, 2026
…e-116-overflow-bound

CHANGELOG keeps both sides, the line first; VERIFICATION auto-merged. README
counts 448 registered IDs (AU-14 and RP-17 landed on the line); SPEC.md
takes the line and is regenerated by validate-model --write.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
humuhumu33 added a commit that referenced this pull request Oct 23, 2026
The merge of #288 kept its count of 445 in the generated total; the
register has 446 rows. Regenerated by validate-model --write.

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
humuhumu33 pushed a commit that referenced this pull request Oct 24, 2026
…e-bounds

CHANGELOG and VERIFICATION keep both sides, the line first. README takes the
line, counts 448 registered IDs (RP-17, PC-01 and PC-02 landed) and ends the
PF row at PF-24. SPEC.md and spec/lexlean.lock take the line and are
regenerated in the next commit.

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants