Skip to content

Atlas: prove CensusCert4 and CensusCert10 from width-100 pieces (#168) - #175

Merged
4 commits merged into
mainfrom
claude/atlas-cert4-split
Oct 18, 2026
Merged

4 commits merged into
mainfrom
claude/atlas-cert4-split

Conversation

@humuhumu33

Copy link
Copy Markdown
Contributor

Closes #168.

CensusCert4 and CensusCert10 each proved a whole width-1,000 census window with one of_decide_eq_true. Both ran out of memory on the standard runner. On main run 39054719580, CensusCert4 took 1,419 s to elaborate and 2,249 s to replay, at about 15 GiB with 3.5 GiB of swap. CensusCert10 reached 14.3–14.7 GiB and also swapped.

This PR splits each window into ten width-100 certificates, CensusCert40–49 and CensusCert100–109, joined by gramRange_append. That is how CensusCert7 is already built from CensusCert70–79.

What changes

  • Each piece is CensusCert76 with three things changed: the window start, the gramWin name, and a fresh internal name (decl1715–decl1734). Each glue module is CensusCert7 with the window number changed. The statements of CensusCert4 and CensusCert10 are unchanged, and CensusComplete and Atlas import them as before. The Atlas root also imports the twenty pieces (audit-atlas-exercise, R4).
  • .github/verify-shards.json: cert4 now elaborates the window-4 modules and cert4-replay replays them. census-a takes the window-10 pieces beside CensusCert10. The job list in ci.yml is unchanged. The new hints come from CI.
  • The join compares 347 normalized records instead of 267, four per new module (ci.yml twice, RP-14's join check). RP-14's hint check now names Census, which is now the module that dominates.
  • No file under language/ or crates/lexlean changes, so no language identity moves. check-golden rewrote only examples/uor-atlas/expected/build.

How expected/verify was produced. On the shared WSL, a local Atlas regeneration ran out of memory, so the records come from CI instead. A scratch branch, claude/atlas-cert4-records-scratch, held this tree plus one temporary ci.yml commit. That commit kept only the plan and Atlas jobs, and its join ran verify-examples --write and uploaded the records. I ran it by hand as run 39086315289, committed its 347 records here, and deleted the branch. The records of unchanged modules are byte-identical; only the audit and probe file names differ, because they carry the semantic ID.

Measured on that run (one run each, wall times depend on the runner)

before (39060792376, #166 ready) after (39086315289)
cert4 job 25.0 min 2.7 min
cert4-replay job 20.8 min 2.9 min
Atlas side, first job to join 77.3 min 66.8 min
Atlas runner-minutes 198 152
Window Elaboration Replay Largest piece Swap
4 111.5 s (was 1,419 s) 117.6 s (was 2,249 s) 4.5 GiB none
10 118.1 s (was 114.6 s) 115.4 s (was 120.8 s) 5.6 GiB (was 14.7) none

No Census* process swaps any more. Closure and ClosureOrbit still do (13.5–14.8 GiB). The longest path is now prefix (26 min) → census-c (18.6 min, mostly the 970 s replay of Census) → closure → pairs-* → join. Two possible follow-ups, not in this PR. atlas-closure waits for the whole atlas-l1 matrix, including census-c, although its plan needs only cert4, census-a and census-b. And CensusCert11 peaks at 11.6 GiB, the next window close to the memory line.

Checks run locally, none of which need Lean: fmt, clippy -D warnings, check-golden, validate-model (Atlas audits: 86 modules, 5,557 declarations), validate-spec-links, check-test-inventory, ci-shards, and AU-09, AU-10, RP-07, RP-11, RP-13, RP-14 and VR-19. VR-23 and the full gate run on this PR's ready run.

The PR stays a draft until its head is final and contains main.

🤖 Generated with Claude Code

humuhumu33 and others added 4 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>

afflom commented Oct 18, 2026

Copy link
Copy Markdown
Member

Maintainer: this PR's head af9f2638e is merged unchanged into wave 3, #191 (with #189 and #188), so that one gate covers the three; the only overlap was VERIFICATION.md, where #188's rewritten sentence is kept and your ## Census windows 4 and 10 section follows it. #191 merges on its green gate under the owner's rule (green gate and the linked issue's DoD met), and this PR is then closed by hand with a pointer; #168 closes with the merge. Please hold further pushes here; anything new goes in a comment and I carry it.


Generated by Claude Code

@afflom afflom closed this pull request by merging all changes into main in efea57d Oct 18, 2026

afflom commented Oct 18, 2026

Copy link
Copy Markdown
Member

Landed through wave 3, #191, merged to main as efea57d85: this branch's head af9f2638e is merged there unchanged (the VERIFICATION.md overlap with #188 resolved as described on #191), so its commits are in main's history and #168 is closed by that merge. On #191's gate run the Atlas side ran with the new shards; atlas (cert4) and cert4-replay are the short jobs this PR promised. Closing this PR by hand. Thank you — this one took 46 runner-minutes off every gate run.


Generated by Claude Code

humuhumu33 added a commit that referenced this pull request Oct 18, 2026
…0-slice2

The merged tree is main plus the slice-2 sources; generated records are
regenerated next. Main moved no version field since 193cd21, so the
combined semantic_ir 14, lean_backend 20, latex_backend 13 stand. The
register is 414 on main plus LM-04..LM-06: 417, set by hand in README, the
SPEC §31 total, repository.rs and spec_links.rs. CHANGELOG keeps both
entries.

Co-Authored-By: Claude Opus 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.

[0.5.0] Split CensusCert4's 4,000 window into ten width-100 certificates

2 participants