Repository navigation
ci: run the bdd recipe as the parts of one run; the join checks its imported records' toolchain (#131) - #159
Conversation
An imported elaboration or audit record must name the join's own digest of `lean`, and a replay record its digest of `leanchecker` (`partition::check_toolchain`, called as the join imports the parts' records); a mismatch is LLI9001, naming the record and both digests. In a whole verification this holds by construction; across the jobs of a run it held because every job installs the same pinned toolchain, which was a practice and not a check (the review of #152). VR-23 plants a replay record whose executable_sha256 is not the join's leanchecker and expects the refusal; the statement moves in SPEC.md §31, model/ids.toml, and the feature alike. SPEC.md §9.4 and §22.11 say what the join requires. Plant in VERIFICATION.md (the check removed, VR-23 fails at its refusal), CHANGELOG. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
The rest leg took 111.5 minutes on the run that merged #152 (38905653756), 95.7 of them bdd: one test process whose cases sum to 22,708 s over four threads. .github/bdd-parts.json names four parts of the repo-conformance suite by conformance ID, grouped so the cases that share a fixture built once per test process (preservation's certified reports, verified_compiler, the production export, verified/broken_proof) run in one part, and a remainder, rest, that runs every test no part names. The recipe is `cargo xtask bdd`. With LEXLEAN_BDD_PART unset it runs `cargo test -p repo-conformance --all-features`, as just vv and release.yml do; with a part named it adds the part's harness filters (--exact and its tests, or --exact and a --skip of every named test). check-test-inventory lists every part with its filters and requires them disjoint with union bdd's list (RP-13, inventory::compare_parts); ci.yml runs each named part on a bdd-<part> row of the gate matrix and the remainder on the rest leg, every part on exactly one row (RP-14). SPEC.md §9.2 (the bdd line), §9.4, and the RP-13 and RP-14 statements are reworded alike in §31, model/ids.toml, and the feature; CONFORMANCE.md regenerated. VERIFICATION.md: the measurement, the groups, the mechanism, and eight plants. CHANGELOG. No time target in normative text. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
|
Measured on this PR's first run (38945603499, head
Generated by Claude Code |
CHANGELOG: both Unreleased entries kept. The four new IDs (PF-20..PF-23) run in the bdd remainder; check-test-inventory reports the 429 tests of bdd as the five parts. Register 391, CONFORMANCE.md current. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
|
@humuhumu33, #146 is merged: main is
Generated by Claude Code |
CHANGELOG: both Unreleased entries kept. verify/mod.rs merged without conflict: against main the only change is this PR's check_toolchain call after partition::import, and #146's staging changes are untouched. SP-14 (new in #146) reaches preservation::shipped, so it is named in the `preservation` part instead of building that environment again in the remainder. check-test-inventory on the combined tree: the 430 tests of bdd are the parts' 21, 14, 39, 91, and 265, each in one part. Register 392, CONFORMANCE.md regenerated; VERIFICATION.md's counts updated. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
|
@afflom, main
🤖 Addressed by Claude Code |
afflom
left a comment
There was a problem hiding this comment.
Approved at 1c04cf36, as a non-author, on the head that ran.
CI. Run 38980348859: all 26 checks green (host legs, examples, rest, the four bdd-* rows, the 14 Atlas jobs, repro, honesty). The head contains main 097b9b97 (#146), which is still main's tip. Main's own push run on 097b9b97 is also green.
What I read.
- The join checks the toolchain of what it imports (
partition::check_toolchain, called at the one point where all three record kinds enter,LLI9001naming the record and both digests): theVR-23case plants a replay record of anotherleancheckerand the join refuses it; the plant is in VERIFICATION.md. This is the hardening I asked for on #152. bddas the parts of one run..github/bdd-parts.jsonnames four parts by conformance ID and one remainder that runs every test no part names, so a new ID lands inrestwith no plan change.cargo xtask bddwithLEXLEAN_BDD_PARTunset or empty is the command it always was.compare_partsproves from the harness's own--listthat the parts are disjoint and their union isbdd;RP-13plants a test two parts run and a test none runs;RP-14requires every part on exactly one matrix row and every other recipe still once. No normative text carries a time target.- Measured, not estimated. Its first run's job times (mine from the API agree with the PR's table): the
restleg 23.0 min against 111.5, the four rows 15.8 to 31.2 min, therestside's job-minutes 120 against 114. The cost is about 6 runner-minutes; the longest path of a ready run is now the Atlas side.
Not blocking, for the record. The first commit of the part (7b377f92, then cfa02f41) is a fix and then a CI change; the register rows (RP-13, RP-14, VR-23) change statements only, so there is no new-row R3 order to read.
Merging with a merge commit pinned to this head.
Generated by Claude Code
CHANGELOG.md and VERIFICATION.md conflicted (both kept). The merge was checked by the maintainer before the push: validate-model 393 ids, validate-spec-links 393, check-test-inventory (five parts), check-golden, and conformance_rp_07, rp_13, rp_14 and sl_01 pass on it; #159 changes no generated artifact, so the run on the previous head (22 of 22 green) is the evidence for the rest. Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_013QppGKetUURseXowZun9KY
…tes-text feat(stdlib): the first member, bytes and text over Bytes (SL-01, #92). Tested head 48e06da (run 38982809506, all 22 checks green) plus the merge of main ccd37ec (#159), which changes no generated artifact and was checked by the maintainer before the push. Approved as non-author. Part of #92.
…into issue-30-language-model Both sides appended to the register: model/ids.toml, SPEC.md §31 and the conformance test list keep SL-01 and then LM-01..LM-03 and LM-13, in the order SPEC.md already had. The register count is 397 (main's 393 plus the four LM rows) in README.md, SPEC.md, repository.rs, spec_links.rs and the CHANGELOG entry, which keeps both sides. No language-1.2 version moved. Generated records are regenerated for the combined tree in the next commit. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…ith #159 and #153 stdlib/lexlean.lock moves from main's 7c6ad912... to the merged tree's 7a7834c6... (ID substitution only, as every other lock moved); goldens, calculus packages, CONFORMANCE.md and ERRORS.md, negative fixtures, the production export (stdlib's packages included), and every example's verification records, stdlib's included, are rewritten for the combined tree. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Part of #131: the second PR of step 2, as posted on #131. It partitions the
restleg'sbddrecipe across rows of the gate's matrix, and adds the hardening @afflom asked for in the merge comment on #152. #131 stays open for step 1, slimmingCensusandCensusCert4.1. The join checks the toolchain of what it imports (7b377f9)
Where the join imports another part's records (
partition::import), it now requires each record'sexecutable_sha256to be the join's own digest of the tool that produced it. That isleanfor an elaboration or an audit member, andleancheckerfor a replay (partition::check_toolchain). A mismatch isLLI9001, naming the record and both digests. The check sits at the one point all three record kinds enter, so the assembly before the attestation and the imported-audit loop only ever see checked records.VR-23gains the refusal. It rewrites the second shard's replay record of a module to another digest and expectsLLI9001with both digests. The statement moves alike in SPEC §31,model/ids.toml, and the feature.conformance_vr_23fails at its refusal: the join accepted the otherleanchecker's record and published. It is recorded in VERIFICATION.md's "the partition can fail" list.2.
bddas the parts of one run (cfa02f4)On the run that merged #152 (38905653756), the
restleg took 111.5 min.bddwas 95.7 min of it: one test process whose cases sum to 22,708 s over four threads.preservationreports(four projects certified),shipped, certification librarycompilerverified_compiler,verified_reasoning, planted calculus verificationproductionverified_models, andEX-07verificationverified,broken_proof, the oraclerest(remainder).github/bdd-parts.jsonnames the four parts by conformance ID. The remainder names none and runs every test no part names, so a new ID lands there with no plan change.bddis nowcargo xtask bdd. WithLEXLEAN_BDD_PARTunset or empty, as injust vvandrelease.yml, it runscargo test -p repo-conformance --all-featuresexactly as before. With a part named, it adds harness filters:--exactand the part's tests, or--exactplus a--skipof every named test for the remainder. On this toolchain--exactalso makes--skipexact. The harness selects the tests; no case decides whether it runs.check-test-inventorylists every part with its filters. It requires the parts to be disjoint, their union to equalbdd's list, and every named test to be in its part. Here it reads: "the 5 parts … (compiler 21, preservation 13, production 39, verification 91, rest 261) are the 425 ofbdd, each in one part".ci.yml(RP-14). Each named part runs on abdd-<part>row of thevvmatrix, and the remainder on therestleg. RP-14 requires every part on exactly one row, a part named exactly when a row runsbdd, the variable set once from the row, and every other recipe still once. There is no cache and no artifact; each row builds from its own clean checkout.bddtable line and the inventory prose) and §9.4 are reworded. The RP-13 and RP-14 statements change in §31,ids.toml, and the feature, and CONFORMANCE.md is regenerated. VERIFICATION.md has the measurement, the grouping method, the mechanism, and eight plants, each caught. CHANGELOG has entries for both commits. No normative text has a time target, and the register stays at 387.Fixtures built in more than one part. The preservation and certification environments are built in both
preservationandcompiler:GC-02needs them besideverified_compiler, and moving it would verify the compiler project twice instead. Host-only fixtures (GNAF requests and pairs, certificate fixtures, native registry), the SPEC text, andaxioms_insufficientare cheap.Estimate, not a measurement: each
bddrow takes about 24 to 36 min, bound bypreservationand byEX-07, which takes 29 min alone. Therestleg should take about 22 min. The Atlas side (83 to 96 min) then becomes the gate's pole. This PR's first green run is the measurement, posted below.Local verification (WSL, pinned toolchains)
These pass:
cargo fmt --check,cargo clippy --workspace --all-targets --all-features -D warnings,cargo xtask validate-model,validate-spec-links, andcheck-test-inventory. So docargo test -p repo-conformance --test bdd,--lib, andcargo test -p xtask. On the conformance target,conformance_rp_01..14andconformance_vr_23pass, and theverify::partitionunit tests pass.Left to CI: the long legs (
test,golden,repro,examples, Atlas) and the fourbddpart rows.🤖 Generated with Claude Code