Skip to content

BS-02's differential runs on every host of the matrix and costs the gate about 140 runner-minutes #190

Open

Description

@afflom

Follow-up to #171 (wave 2, BS-02), measured on its gate run 39125361480 against the train's run 39101767733 on the same runners.

Job train (#167) wave 2 (#171)
whole gate, runner-minutes 730 872
wall 102 min 158 min
build and non-Lean tests (x86_64-apple-darwin) 100 140
build and non-Lean tests (x86_64-pc-windows-msvc) 69 105
build and non-Lean tests (aarch64-apple-darwin) 78 87
build and non-Lean tests (aarch64-unknown-linux-gnu) 58 66
just vv (bdd-production) 27 43
just vv (bdd-compiler) 15 30
just vv (rest) 24 39

Why. BS-02's platform-independent part (support::lean_backed false) is the whole differential: the lowered lex and auditTokens under the calculus evaluator on 1,731 vectors and 300 seeded texts per root, then the rendered rust-std packages compiled by rustc and run on 5,731 inputs per root, then seven planted defects each re-lowered and re-evaluated. On the normative host it takes about 45 minutes (2,687 s with the Lean-backed export check). cargo test --workspace --all-features on each host of the matrix runs that part, so the four hosts each pay it, and the evaluator (an interpreter over the lowered program) dominates: the Intel mac now runs 140 of its 300-minute budget. bdd-production grew because the export certifies two more roots through Lean, which is BS-02's inherent cost. The growth of rest (24 → 39) after BS-01/BS-02 left it is not explained by this PR's changes and may be runner variance (bdd-verification fell 28 → 21 in the same run); one more run will say.

Proposal (not decided here):

  1. The evaluator half of the differential is platform-independent logic (the calculus evaluator and the Rust oracle are the same Rust on every host); the rustc half is the one that says something per host. Split BS-02 so the host matrix runs the rustc differential on the vectors only, and the seeded corpora (300 evaluator texts, 4,000 rustc texts per root) and the seven plants run once, in the compiler bdd part on the normative host. The register statement then names where each part runs (R2).
  2. Or reduce the evaluator corpus: the 1,731 deterministic vectors already cover every branch the seven plants exercise; the 300 seeded texts per root are the slow part under the interpreter.

Either is a change to crates/conformance/src/cases/bootstrap.rs and the BS-02 statement, with no regeneration of records. BS-01 has the same shape at a smaller scale and would follow.

Related: #177 (the host matrix's own regression from the data-certificate stress tests).

Activity

  1. added this to the LexLean v0.4 milestone on Oct 18, 2026
  2. afflom commented on Oct 18, 2026

    @afflom
    MemberAuthor

    Measurements from PR #189 rebased onto main after wave 2 (eff2cd382, run 39138077085) confirm that once #177's fast certificate data builders are in, conformance_bs_02 is the sole long-pole tail on every host-matrix leg:

    Host leg conformance.rs starts 413th of 414 tests finishes conformance_bs_02 finishes conformance_bs_02 wall time Tail after all other 413 tests
    aarch64-unknown-linux-gnu (job) 15:03:08Z 15:39:46Z (sp_02) 15:51:54Z 47.2m +12.1m
    aarch64-apple-darwin (job) 15:03:43Z 15:48:54Z (tc_05) 15:52:18Z 46.8m +3.4m
    x86_64-pc-windows-msvc (job) 15:02:38Z 15:51:30Z (tc_03) 15:59:51Z 55.1m +8.4m
    x86_64-apple-darwin (job) 15:13:17Z 16:35:50Z (tc_03) (still running at 16:55:08Z when cancelled) >97.6m >+19.3m

    For comparison, conformance_bs_01 took 2.4m on x86_64-pc-windows-msvc, 2.9m on aarch64-unknown-linux-gnu, 4.4m on aarch64-apple-darwin, and 6.7m on x86_64-apple-darwin.

    On Proposal 1 vs. Proposal 2:

    • Under Proposal 1 (splitting BS-02 and BS-01 via support::normative_host() or support::lean_backed so the host matrix runs the rustc differential on the deterministic vectors while the evaluator differential, the seeded corpora, and the 7 planted defects run once on the normative host in bdd-compiler), each non-normative host still checks that the rendered rust-std packages compile under that host's rustc and agree with the Rust oracle on every deterministic vector (the part that actually varies by host/target), while the platform-independent interpreter and mutation loop run once on x86_64-unknown-linux-gnu.
    • That would drop conformance_bs_02 on x86_64-apple-darwin from >97m to ~1–2m (rustc build + vector binary execution), bringing the Intel macOS leg down to ~82m (its 16:35:50Z completion of the other 413 tests) and restoring the 120-minute host-matrix timeout with ~38 minutes of margin.

    @afflom if Proposal 1 looks right to you, we can open a focused draft PR for #190 (touching only crates/conformance/src/cases/bootstrap.rs and the BS-01/BS-02 wording in SPEC.md, with zero record or artifact movement).

  3. added a commit that references this issue on Oct 18, 2026
  4. afflom commented on Oct 18, 2026

    @afflom
    MemberAuthor

    Opened PR #192 (db6a9439f, rebased on Wave 3 main efea57d85) implementing Proposal 1 and restoring the host-matrix timeout-minutes to 120:

    • On Wave 3's gate run (39145765325), x86_64-apple-darwin finished all other 413 conformance tests at 17:53:27Z (60.3m into conformance.rs), while conformance_bs_02 ran until 18:21:08Z (83.5m total, adding 27.7m of tail after every other test had finished).
    • In PR Split BS-01 and BS-02 differential between host matrix and normative host (#190) #192, every host of the host-matrix still checks and builds bootstrap/, renders the rust-std packages for isClosedLeanName, parseAuditOutput, lex, and auditTokens, compiles them with that host's pinned rustc, and runs the compiled binaries on the deterministic vector corpora (audit_vectors(), name_vectors(), and the 1,731 token_vectors()), while the platform-independent calculus evaluator differential, the seeded corpora, the 14 planted defects, and the Lean production export run once on the normative host (just vv (bdd-compiler)).
    • Updated BS-01 and BS-02 in SPEC.md §17.23, model/ids.toml, CONFORMANCE.md, and features/suites/bootstrap.feature (R2), with zero record or artifact movement.

    Full gate run (39154991151) is running now on PR #192 to measure the new host-matrix times. cc @afflom @humuhumu33

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

      Milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions