Skip to content

Wave 3: fast certificate data builders (#177), release follow-ups (#187), and the Census windows as width-100 pieces (#168) - #191

Merged
afflom merged 10 commits into
mainfrom
claude/v0.4-wave3
Oct 18, 2026
Merged

afflom merged 10 commits into
mainfrom
claude/v0.4-wave3

Conversation

@afflom

@afflom afflom commented Oct 18, 2026

Copy link
Copy Markdown
Member

Closes #177
Closes #187
Closes #168

Wave 3 after the train (#167) and wave 2 (#171): the three ready PRs that move no language identity and no compiler record, integrated on main (d51d9f223) so that the gate runs once for the three. Each member's own gate was green on its own head; this head is theirs merged, with one resolved overlap and one hand change.

Members

Member Issue What it is On this PR
#189 #177 the certificate A and B kernel-data builders are linear in match arms, with bottom-up term metadata and O(1) short-circuits in the kernel builder; sp_02 1,374 s → 129 s, sp_08 ~1,600 s → 295 s, tc_05 307 s → 53 s on the author's host; no test, assertion or certificate thinned, no record moves head 838b47c6b merged; closes #177 on this run's host times (recorded there); #189 to be closed by hand with a pointer
#188 #187 (#178, #180, #182) SPEC §17.17 says what bounds certificate generation and how far past the limit a generator can get, with the certificate-generation-limit fixture's peak size recorded; the three LEXLEAN_AXDBG/LEXLEAN_SHOW* hooks are deleted and CL-17 refuses any environment read outside §23.1 (planted); the leftover text and coverage of the train's member reviews (COSTS_B's derivation, binder hygiene for _root_. byte literals, MD-02 reads all 8 artifact byte definitions, MD-13's unsigned 64-bit branch, SM-32's widenWide root at 2^63, the CHANGELOG counts) head 1e1a375d3 merged; closes #187; #188 to be closed by hand with a pointer
#175 #168 CensusCert4 and CensusCert10 proved from ten width-100 pieces each, joined by gramRange_append; statements unchanged; Atlas records from CI run 39086315289; cert4 25 → 2.7 min, Atlas 198 → 152 runner-minutes, no Census* process swaps head af9f2638e merged; closes #168; #175 to be closed by hand with a pointer

Changed at integration, by hand

Checked locally on this head

cargo fmt --check, clippy -D warnings, validate-model, validate-spec-links, check-test-inventory, ci-shards, check-golden, the lexlean (200) and xtask unit tests, and the members' cases: cl_17, md_02, md_13, sm_32, sp_02 (1,707 s on this host, against 7,951 s for the train's tree on the same host), sp_08 (1,466 s), sp_10, sp_12, tc_05, rp_14, au_09, au_10, vr_19. The whole gate runs in CI on this head; its host times are the acceptance measurement of #177.

How this merges

The head contains main (d51d9f223). It is ready on its final head; the merge is a merge commit pinned to it, and the push run on main runs nothing when this PR's run passed every job (#166). Merged by the maintainer on the owner's rule: green gate and the linked issues' DoD met.


Generated by Claude Code

humuhumu33 and others added 10 commits October 18, 2026 02:22
CensusCert4 (gramRange 4000 1000 = true) and CensusCert10
(gramRange 10000 1000 = true) were each one of_decide_eq_true over the
whole window. Each is now proved from ten width-100 certificates,
CensusCert40..49 and CensusCert100..109, joined by gramRange_append
exactly as CensusCert7 is from CensusCert70..79. The pieces are
CensusCert76 with the window start, the gramWin name and a fresh
internal name changed; the glue is CensusCert7 with the window number
changed. Statements and importers are unchanged; the Atlas root imports
the twenty pieces (audit-atlas-exercise, R4).

The cert4 shard elaborates the window-4 modules and cert4-replay
replays them; census-a takes the window-10 pieces beside CensusCert10.
The join compares 327 normalized records (was 267). RP-14's hint check
names Census, the module that now dominates the verification.

Atlas expected/build regenerated (check-golden --write). expected/verify
follows in its own commit.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
expected/verify is what the join of run 39086315289 wrote for this
tree's sources (a run of the Atlas jobs of ci.yml on a scratch branch
whose join ran `verify-examples --write`): 347 normalized records, four
for each of the twenty new modules beside the 267 before. The records
of every unchanged module are byte-identical apart from the audit and
probe names, which carry the new semantic ID.

The hints of the 22 changed and new modules are that run's. The join's
record count is 347, not the 327 the previous commit counted.
VERIFICATION.md records the measurement: windows 4 and 10 elaborate in
111.5 s and 118.1 s and replay in 117.6 s and 115.4 s, at most 5.6 GiB
per piece, with no Census process in swap.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Precompute match arm terms and suffix lists in O(n) in certificate A's Writer::prepare_arms instead of rebuilding the arm suffix list across every arm_hit and arm_miss application. Propagate meta-cleanliness, loose-variable bounds, and minimum free-variable IDs bottom-up in Builder::push so resolve, abstract_over, lift, instantiate, instantiate_beta, substitute, and has_placeholder short-circuit closed/clean sub-DAGs in O(1). Scan match arms with a reverse cursor in Certificate B's Aligner::m, print certificate records directly via surface::core::print_module without round-tripping through canonical JSON, and reuse the cached native preservation library in correspondence_rules(). Restore the host-matrix timeout-minutes to 120.
# Conflicts:
#	VERIFICATION.md
…S-02 beside the stress arithmetic

#189 restored the pre-train 120 minutes. Since then BS-02's differential runs
in `cargo test --workspace` on every host (#190): the Intel macOS host took
140 minutes on wave 2's gate run. The comment's rule, twice the slowest
observed time, gives 240 until this wave's run measures the host times with
#177's fix in; the limit then follows them down. RP-14 exempts the host
matrix from the gate-job limits, so no gate reads the number.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_013QppGKetUURseXowZun9KY
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment