Repository navigation
Import Fitzharding's Lean proof that s(17) = L as T-154 (#565), and the n = 11 and n = 17 announcement posts - #588
Conversation
…iography key (think-acbk) Stage 2 of the import of Oscar Fitzharding's Lean 4 proof that s(17) = L (issue #565): the packet fitzharding-n17-lean-2026-10-13 at head e6ee548090dc1dbf938ecf8590481de837a6a454, with the statement-bearing modules, the build pins, the source's clean-build receipt and axiom report, and the three v1.0.0 certificate archives pinned by size and SHA-256 only. The key [Fitzharding n17 Lean 2026], and the person record the owner set on 13 October: Oscar Fitzharding, GitHub ofitzharding, X @ofitzharding. His announcement post of 13 October is retained as X's syndication endpoint returned it. Co-Authored-By: Claude Opus 5.5 <[email protected]> Claude-Session: https://claude.ai/code/session_012JUyoHafZq55vksGxE4vPP
…them (think-acbk) The two posts of 22 September 2026 (2102358756591907112 and its continuation 2102358760471564308), until now kept only as text transcripts, are retained as the JSON X's syndication endpoint returned on 13 October, beside the transcripts. The owner asked for the announcement posts of the n = 11 and n = 17 results from Ahmed, Overbeck and Fitzharding; Ahmed's were already retained. Co-Authored-By: Claude Opus 5.5 <[email protected]> Claude-Session: https://claude.ai/code/session_012JUyoHafZq55vksGxE4vPP
… (think-xjb2) Accepted on the statement, the endpoint, the trust boundary and the claim that no premise is left; nothing was compiled and the 13,343 native checks were not replayed. The endpoint is T-153's L by identity of definition: the same F, G, box and side map as exp-237's chart. The major finding is attribution: the proof runs on this project's 24-cell cover, endpoint chart, 52-row local recipe and certified sub-patterns without crediting them. It records the chronology: Overbeck's candidate was public about six hours before sq17-lean. Co-Authored-By: Claude Opus 5.5 <[email protected]> Claude-Session: https://claude.ai/code/session_012JUyoHafZq55vksGxE4vPP
…mplification) at V0/C1, S5 proposed (think-hcqr) Stage 3 of the sq17-lean import, on the packet of b418c52 and the review of 9a8f2c4. - T-154, simplification, n = 17: Oscar Fitzharding's Lean 4 proof, Sq17.square17_optimality, of s(17) = 4.67553009360455095163..., T-153's value, by a route separate from T-153's argument. The claim says EndpointGeometry.side is T-153's L by identity of definition (H-255's F and G, exp-237's box, the same side map), gives the route, the trust boundary (13,343 native_decide facts) and the source's own clean-build report, and credits the source in its own words, AI assistance included. - Rungs V0/C1, as T-153's: the source's build receipt is the author's, so the evidence entry is reported; C1 is the review of 13 October as its external_review. S5 with the draft rationale, proposed for the owner. The full build (think-r109) is the one unfinished C3 item; it carries no estimated_cost, since the source publishes no CPU time. - Priority stated, not defended: T-153 was public about six hours earlier and keeps the case's reported lower bound; T-154's notes say so, T-153's notes gain a paragraph naming the newer route, and its next_rung says T-154 does not formalize its argument. n-017's priority notes carry one entry for each proof, with the timestamps in their published fields (check_prose_ceremony keeps clocks out of reader prose). - The review's attribution findings F-1 (the proof runs on this project's cover, census, patterns, endpoint chart and local recipe, uncredited) and F-2 (Ahmed's s(11) proof) are in T-154's notes and the bibliography note; lineage stays credits-project, as the source's files state it. - Evidence E-n017-fitzharding-lean-report (reported, proof-assistant-checked, source-author, external, not-attempted, axiom log as axioms_receipt, proof block with the review as audit_record). Verifiers V-fitzharding-n17-lean (external, the source's build) and V-fitzharding-n17-source-manifest (first-party premises, the packet's consistency check). Coverage fitzharding-n17-lean-2026. - n-017: the reported lower bound's note names T-154 (proved_by and source_key stay Overbeck's), a prose paragraph links the proof as #565 asks, evidence and resource added. The frontier README's gap note names T-154. - result-requests: #565, result-report, triage done, mapped to T-154 and its evidence; the n = 17 page link done, the #405 link queued on the answer bead think-mxhc. - The packet README and the resources README said no issue asked; they now cite #565. The review is mapped in the document map. Co-Authored-By: Claude Opus 5.5 <[email protected]> Claude-Session: https://claude.ai/code/session_012JUyoHafZq55vksGxE4vPP
… a reported second certificate (think-hcqr) T-154, Fitzharding's Lean proof of s(17) = L, is a simplification at C1 of the value T-153 holds in n = 17's reported lane, and holds no bound itself. The derivation called it superseded, and check_standing refused that, rightly, since its stated value ties the reported bound. A second certificate was derived only for a proved case's value. - render_recent_results.standing: a simplification that holds no bound and restates, at every case and direction, the bound its case record carries in the lane it can hold (check_standing.restates: reported for C0/C1, verified otherwise) is a second certificate, reported where unreplayed. T-054 and T-055 still derive it by the proved-case rule. - check_standing: restates(); a reported second certificate may state the reported value instead of the verified one; the summary names the lane. - Tests: T-154's standing in test_recent_results; a check_standing test of the rule, its replayed and bound-kind counterparts; the site filter test's set of kept standings gains the reported second certificate. Co-Authored-By: Claude Opus 5.5 <[email protected]> Claude-Session: https://claude.ai/code/session_012JUyoHafZq55vksGxE4vPP
…ynopsis and the URL registry (think-hcqr) Rendered from the record of the two commits before: render_results, render_evidence_inventory, render_research_tables, render_results_headline, render_verifiers, audit_t007_consumers --update and site_urls --write (the new result page). build_bound_citations, render_case_verifiers and render_document_map had nothing to change. The synopsis research-status row is reconciled to 154 registered, 124 by others. Co-Authored-By: Claude Opus 5.5 <[email protected]> Claude-Session: https://claude.ai/code/session_012JUyoHafZq55vksGxE4vPP
…jects (think-hcqr) The source-coverage register now reviews ofitzharding/sq17-lean (fitzharding-n17-lean-2026), and tests/test_overview.py holds OTHER_PROJECTS to every source repository it reviews. The card follows Overbeck's candidate and credits Oscar Fitzharding by the owner's definitive name. Co-Authored-By: Claude Opus 5.5 <[email protected]> Claude-Session: https://claude.ai/code/session_012JUyoHafZq55vksGxE4vPP
Co-Authored-By: Claude Opus 5.5 <[email protected]> Claude-Session: https://claude.ai/code/session_012JUyoHafZq55vksGxE4vPP
Both sides added a review at the top of the document map; the map keeps both and the SYNOPSIS block is re-rendered from it. release.py conflicted only in DATA_REVISION; the re-pin follows in its own commit. Co-Authored-By: Claude Opus 5.5 <[email protected]> Claude-Session: https://claude.ai/code/session_012JUyoHafZq55vksGxE4vPP
The post of 12 October 2026 at 14:52:55Z announcing the candidate proof
that s(17) = L ("A proof candidate for 17 squares: the 1998 packing
cannot be beaten"), whose address the owner supplied, retained as X's
syndication endpoint returned it, in the packet's receipts/announcement/,
and cited in the packet README, the bibliography note and n = 17's
priority note. It credits Codex and Claude and thanks Levy, Mira,
Guzhou0806 and Ahmed for the work it builds on.
Co-Authored-By: Claude Opus 5.5 <[email protected]>
Claude-Session: https://claude.ai/code/session_012JUyoHafZq55vksGxE4vPP
Co-Authored-By: Claude Opus 5.5 <[email protected]> Claude-Session: https://claude.ai/code/session_012JUyoHafZq55vksGxE4vPP
…ean import (think-hcqr) This session's log, refreshed, and the ten sub-agent logs not yet rolled up: the addressing lanes of #571 and #577 and the three lanes of this import (review, retention, record). close_session --render carries them into the session report and the synopsis totals. Co-Authored-By: Claude Opus 5.5 <[email protected]> Claude-Session: https://claude.ai/code/session_012JUyoHafZq55vksGxE4vPP
jlevy
left a comment
There was a problem hiding this comment.
Review A (senior engineering review, round 1) · head 8c189d8 · base main at 9310284
Reviewer: strong tier, requested claude-opus-5-5 (tbd-strong sub-agent; no reasoning level stated in the brief) · Channel: formal review
Coverage: 76 of 76 changed files. Read in full: the register, evidence, verifier, coverage, case-record, requests, bibliography, credit and resources-README hunks; the packet README, declaration, sources, consistency program and receipt; the review document; the code and test changes; the PR description. Read in part or checked by digest only: the upstream Lean files (statement and endpoint files read; the rest checked by acquire_source --check), the upstream scripts and lake pins; the 11 resource-usage rollups (branch attribution, span and thinking level only); the generated views (RESULTS, INVENTORY, STATUS, VERIFIERS, SYNOPSIS, site URLs), checked against their sources rather than line by line.
Tests run: from packing/, pytest -p no:cacheprovider tests/test_check_standing.py tests/test_recent_results.py (77 passed); pytest tests/test_site_result_filters.py -k checkbox_starts (1 skipped: no Chromium on this host; CI runs it); devtools.check_results (exit 0: 154 results, 11 recorded, 4 reviewed, 138 confirmed, 1 incomplete); devtools.check_standing --list --cases (OK; T-154 second certificate, reported); devtools.acquire_source <packet> --check for both n = 17 packets (PACKET_MATCHES_ITS_CONTRACT twice); devtools.release_pin --check (pin is the last data commit, 142d483236a3); devtools.check_requests (exit 0; #565 reply due); devtools.check_pr_description --file <body> (ok). Scratch scripts, under -I where they read packet bytes: recount of the retained axiom log (13,346 entries: the 3 standard axioms and 13,343 distinct native_decide facts, no sorryAx, SHA-256 equal to the receipt's); the Lean midpoint, radius, polynomial0 and polynomial1 compared with exp-237's run-001/certificate.json (all four exactly equal); the snowflake timestamps of the four retained posts (they match the recorded times); T-154's derived standing probed at C0 to C3 (A1). Not run: packing-validate and the renderers (per the brief), and nothing from the upstream source.
Summary and verdict
The import is careful and well evidenced. The packet matches its contract. The statement and endpoint identity reproduce exactly, and the axiom report is what the record says. Credit is read from the source's own files, the AI assistance is stated in the source's words, and both dates are stated in every priority note. The standing change is small and tested. The register, evidence, verifier, coverage and requests entries are complete for stages 1 to 3. The checks I could run pass, and hosted CI is green at the head (30 pass, 17 skipped).
Three Medium findings need a fix or an explicit disposition before merge. A1: the simplification kind will contradict itself, and fail check_standing, at T-154's own next rung. A2: the review's load-bearing comparisons were left in scratch code (OR-1). A3: the record calls the source's spelling of Ahmed's name a misspelling while its own canonical spelling is that one. The Low findings are wording and bookkeeping.
Verdict: approve once A1 to A3 are fixed or dispositioned. No Blocker or High finding.
Findings
A1 — Medium — simplification will not survive T-154's next rung, and the standing derivation refuses it there
packing/devtools/render_recent_results.py:555-562, packing/devtools/check_standing.py:111,117-121,248-268,271-282, packing/frontier/results.yaml:17465,17595-17612, epistemics.md:413
epistemics.md defines a simplification as a result that "moves no bound" (line 413). T-154's planned next step, the full build (think-r109, unfinished_confirmations at C3), would make it the first proof of n = 17 that this record can verify. Stage 4 would then move n = 17's verified lower bound onto a "simplification" of a V0 candidate. Until the case records adopt that bound, the derivation has no path for a replayed simplification of an open case:
restatesreads the verified lane at C2 and above, where n = 17's lower bound is below L, so it returns False;improvementsreturns nothing for a kind outsideKIND_DIRECTIONS;standingtherefore falls through toSUPERSEDED, andcheck_standing.problemsrefuses it.
A probe at this head with {**T-154, "confirmation": c} gives second certificate, reported at C0 and C1, and at C2 and C3 gives superseded, refused with "T-154 is superseded, yet at n = 17 its stated bound is no worse than the verified one". The new test checks restates(C3) is False (packing/tests/test_check_standing.py:292) but not the standing that follows from it. The kind also departs from the definition's "shorter, cleaner or more elementary route". The owner said he was unsure whether these are "one as a formalization and one as the new proof". The description puts S5 to the owner but presents the kind as settled.
Fix (pick one):
- (a) Keep
simplification, and give a replayed simplification that states a strictly better bound than its case record the directions its claim states, so that it reads asPENDING_ADOPTIONrather thanSUPERSEDED. Add a test for T-154 at C3. Then add a sentence to T-154'snext_rungand to epistemics.md's kind rules on what happens when a simplification's build lands before the result it proves again: the kind is revisited, with the site-URL identity amended. - (b) Put the kind (simplification of T-153, or optimality beside it) to the owner explicitly with S5, before T-154 reaches
main.
A2 — Medium — the review's load-bearing comparisons exist only in scratch code (OR-1)
docs/project/reviews/review-2026-10-13-fitzharding-n17-lean.md:572-612 ("none is retained in the repository", line 577), relied on at packing/frontier/results.yaml:17478-17482,17651-17660, packing/frontier/evidence.yaml:31974-31975, packing/resources/bibliography.yaml:2085-2096
The review computed several results that the register now relies on:
endpoint_compare.py: the identity of definition with exp-237 and H-255, the 60-place value, the contraction margins;cells_compare.py: 24 of 24 cells equalUNIQUE_24;- the pattern comparison: 32 of 35 patterns equal admitted ledger entries;
closure.py: nonative_decidein the statement and upper-bound closures.
These results carry the claim's "T-153's L by identity of definition", the evidence note, and finding F-1, which the record intends to put to the author as an attribution finding. None of the programs is retained, so neither a reader nor the author can re-derive the evidence for F-1. Only the manifest check went into the packet. The description's own count, 109 calls that ran one-off measurement code, is this rule not being followed.
Fix: retain the comparisons as a first-party premise check. Either write a devtools.audit_n17_lean_endpoint beside devtools.audit_n11_lean, or add the programs and their JSON outputs to the packet's receipts/programs/ as check_source_manifest.py is. Register it in verifiers.yaml and list it in the evidence entry's verifiers. The endpoint half needs no checkout: I reproduced it from the retained EndpointRootData.lean and exp-237's certificate with a short script.
A3 — Medium — the record treats "Mannaseh" as the source's misspelling while its own canonical spelling is "Mannaseh"
packing/frontier/results.yaml:17661-17664, packing/resources/bibliography.yaml:2094-2096, docs/project/reviews/review-2026-10-13-fitzharding-n17-lean.md:393-394,520, against packing/atlas/known-best/credit-attributions.json:306 ("full_name":"Mannaseh Ahmed", user-confirmed), README.md:58, and the packet README's own voice at packing/resources/web/fitzharding-n17-lean-2026-10-13/README.md:86 ("@ManassehA06 is Mannaseh Ahmed")
F-2, and the register and bibliography notes that carry it to the author, say that sq17-lean "spells his name 'Mannaseh'". At this head, "Mannaseh" is the record's canonical full name, and the root README and the n = 11 paper print it. The author probably took the spelling from this project. The owner's correction to "Manasseh" (2026-10-13) is in open PR #578, which has not merged. This PR uses both spellings in its own voice: "Manasseh" in the review, "Mannaseh" in the packet README and the resources README.
Fix: drop the spelling clause from F-2's carriers in results.yaml and bibliography.yaml, or say that the record itself used that spelling until #578. Use one spelling in the record's own voice, whichever #578 makes canonical, and note the merge order with #578 in the description.
A4 — Low — priority wording attributes to the source what it does not say
packing/frontier/results.yaml:17443-17444,17641-17643, packing/frontier/n-017.md:117-118, and the PR description ("both name Overbeck's as earlier and independent")
The README (line 119 of the retained copy) says Overbeck "published an independent candidate proof … on 12 October 2026". #565 says "also published … today". Neither says "earlier". Separately, "the first report of a proof … that leaves no premise open" is stated in the record's voice with no recorded search. The source's README search covered Lean proofs only.
Fix: write "names it as independent and already published on 12 October". Scope the "first report" to what this record holds, or cite the source's search as the source's.
A5 — Low — the review record does not name its reasoning setting, though the record shows it
packing/frontier/results.yaml:17566-17569, packing/frontier/evidence.yaml:31965
epistemics.md, Review Records: "The reviewer names the model and its reasoning setting." The entry says "not told its reasoning setting". Both lanes that ran at 17:44 (agent-a45ab9e0e00fe9076, agent-acdab8c31142d473a) record claude-opus-5-5 @ xhigh for every turn. This will matter when a second review is counted toward rung 4.
Fix: name xhigh in reviewer and reviewed_by, citing the rollup. Leave the review document as written.
A6 — Low — the significance by names a review that did not score it
packing/frontier/results.yaml:17534-17536
by lists the intake draft and the review document. The review has no significance section, so it neither kept nor changed S5. Naming it reads as a confirmation by the reviewing lane, which epistemics.md's scoring rules make the step that turns a draft into a score.
Fix: keep by to the intake draft (think-hcqr) until a reviewing lane or the owner confirms.
A7 — Low — the case record gives the wrong reason for the kind
packing/frontier/n-017.md:408-410
"nothing here has built it, so it is recorded as a simplification of T-153": the kind follows from its being a second proof of a value the record holds, not from the missing build. The missing build is why the verified bounds do not move. The register's notes give the right reason.
Fix: "it is recorded as a simplification of T-153 …; nothing here has built it, so the verified bounds and the status are unchanged."
A8 — Low — the evidence limitations contradict the composition
packing/frontier/evidence.yaml:31987-31989 against packing/frontier/results.yaml T-154 composition
"the entry is reported and counts toward neither V nor C" is copied from E-n011-lean-formalization-report. That was true there because T-060 rests on other evidence. Here this is T-154's only entry, and its external_review sets C1 ("it sets both rungs").
Fix: "counts toward no rung above C1, which its external_review sets".
A9 — Low — the claim links the pin while the notes say the record cites the release
packing/frontier/results.yaml:17505-17507 against :17672-17673 (F-8)
The claim's link is tree/e6ee548…, the 13 October citation-only head, beside the words "12 October 2026, release v1.0.0". The notes say the record cites the release.
Fix: link releases/tag/v1.0.0 (or 0a7167e) in the claim, or reword the notes to "cites the pinned head, whose proof files are the release's".
A10 — Low — stale refusal message for a reported second certificate
packing/devtools/check_standing.py:356-370
A reported second certificate may now state the reported value, but the refusal still says "does not state the verified value".
Fix: "does not state the verified value, or the reported one" when reported_ok.
A11 — Low — main will reserve T-154 for another PR after this merge
docs/project/policies/regularization-policy.md:386-389
The policy says #549's batch "is to be registered as one batch result, T-154". #587, stacked on that line, builds "by monotonicity from T-154" and takes T-155. The description's id-collision note names #549 only.
Fix: change the policy line to "under the next free id" in this PR, and name #587 beside #549 in the description.
A12 — Low — the requests summary overstates F-1
packing/campaign/result-requests.yaml:5834
"runs on this project's n = 17 plan and data without crediting it": the README credits the Squares Project and #565 thanks its contributors. F-1 is that the credit is not specific.
Fix: "without crediting its components specifically (F-1)".
A13 — Low — the n = 11 packet's manifest omits the two new captures
packing/resources/web/external-square-certificates-2026-09-22/acquisition/sources.json:196-210, README lines 16-29
The README calls sources.json the acquisition manifest, and its social_sources lists the September captures. The two JSON captures added here are not listed. The README says so, but the manifest is then incomplete.
Fix: add both to social_sources with path, retrieval time and SHA-256.
A14 — Low — stage 1's acknowledgement and price are not done
packing/campaign/result-requests.yaml #565 (replies: []), packing/frontier/results.yaml:17613-17624
result-import.md, stage 1 asks for an acknowledgement within a day, with no id and no rung, and a priced validation plan. The acknowledgement is folded into the post-merge reply (think-mxhc), and think-r109 is unpriced.
Fix: on the owner's word, post a short acknowledgement now. Price think-r109 from the review's cheap check 4, one ordinary-case module with the native libraries, so the owner can set a budget.
A15 — Low — the PR description is stale
PR body, Validation and "Which came first"
"packing-validate --edit on 8c189d89a: running" and "Hosted: pending" are out of date: hosted CI is green at the head. "Earlier and independent" is A4.
Fix: refresh both lines when the fixes land.
Design assessment
Registering Fitzharding's proof as its own result is right: it is not a formalization of Overbeck's argument, and the review's §4.3 supports that well. Keeping T-153 as the first report, with both dates in every priority note, follows "priority is stated, not defended". Taking the credit from the source's own files, with credits-project rather than the review's broader lineage, also follows the policy. Leaving F-1 to the author rather than writing it into the credit line is the policy too.
The weaker part is the kind, and the code change made for it (A1). The rule "a second proof of a value the record holds is a simplification" fits T-054 and T-055, which re-prove proved cases. It does not fit a complete proof of a value the record holds only as a V0 candidate. The standing patch (restates) covers the current state and none of the states after it, and three docstrings in the two modules name T-154, which an id renumbering after #549 would also have to touch. A small generalization would serve better: let a simplification's claimed relations stand in for KIND_DIRECTIONS, so that the same rule handles C1, C3-unadopted and adopted, with T-154 as a test case rather than a docstring example. If the owner prefers optimality, the same generalization handles it.
Documentation
- epistemics.md, Result Kinds (line 413) and Status: whichever way A1 goes, say what happens to a simplification whose build lands before that of the result it proves again.
- The description's Validation and priority wording (A4, A15).
False positives / do not fix
relationship_to_generator: same-implementationon a source's report of its own build follows the closest precedent,E-n011-lean-formalization-report, and 174 of the 199 source-author reported entries. T-153's report usesnot-applicable, a pre-existing inconsistency that is not this PR's.- V0 rather than V3 despite the source's passing build receipt: epistemics.md, "A reported result enters at V0/C0, or C1", and the n = 11 precedent.
lineage: credits-projectdespite F-1: correct, "as the source itself says".- The credit
Fitzharding after Levy, Ahmed, MacIvermatches the README's Credits section. Bidwell is left out as the finder of the packing that is the result's subject, and Friedman as a survey. - The long claim, with credits, AI quotes and the state of the read, follows T-153's form. The free-text
publishedin n-017's claims is allowed by the schema and has precedent in n-006 to n-018. - Endpoint identity, axiom counts, post times and packet digests: all reproduced (Tests run).
- 7 of the 10 new agent rollups ran on other branches of the same session (
…-k17-review-2, detachedHEAD). The cost block attributes by branch (3 on-branch logs and 1 straddling) and is right; committing the other rollups here is session bookkeeping. - The upstream
scripts/*.pyunderpacking/resources/are excluded from Ruff and BasedPyright and are never run.check_source_manifest.pyliving in the packet has the kleddamag packet's precedent, and it needs a checkout of the pin, so it cannot be a gate step. restatesat C0/C1 changes no other entry's standing: T-054 and T-055 (C3) derivesecond certificateas before.
Dedicated reviews
Correctness applies, because the standing derivation changes how the record classifies results (persisted classification). Review B covers it. Security does not: nothing from the source is executed, and the retained scripts are data. Performance does not.
CI status
At 8c189d8, when this review was published: 30 checks pass, 17 skipped (deferred or conditional jobs), none failing or pending.
Generated by Claude Code
jlevy
left a comment
There was a problem hiding this comment.
Review B (correctness review, round 1) · head 8c189d8 · base main at 9310284
Reviewer: strong tier (tbd-strong), model claude-opus-5-5, reasoning level not stated in the brief · Channel: formal review
Coverage: 76 changed files. 40 read in full or as full diffs: the standing code and its three tests, release.py, overview_sections.py, the T-153/T-154 entries, evidence.yaml, n-017.md, verifiers.yaml, source-coverage.yaml, bibliography.yaml, result-requests.yaml, credit-attributions.json, the T-007 audit, the six generated views, the review document, the packet's README, acquisition records, program and receipts, the source's README, receipt and statement files, and the four retained posts. 20 more retained upstream files were byte-verified at the pin (acquire_source --checkout), not read line by line. Skipped as outside the correctness focus: the 11 resource-usage rollups, session-close-report.yaml, site-urls.yaml, site-urls.md, document-map.yaml and packing/resources/README.md.
Tests run: pytest tests/test_check_standing.py tests/test_recent_results.py tests/test_site_result_filters.py: 77 passed, 28 skipped. The skips are the Chromium tests, which want chromium_headless_shell-1234 (this host has 1194), so the changed assertion at test_site_result_filters.py:157 did not run here. check_standing --list: OK, 154 results, 123 read. packing-validate --records: exit 0, 49 of 107 steps. packing-validate --fast: exit 1, five steps failed, all from this host. 399 site tests could not launch Chromium 1234. The browser floor and the workbench step had no npm ci (biome, eslint, tsc, esbuild missing). One unchanged test breached the 12 s wall ceiling at 30.75 s on four cores. Two process-group reaping tests in modules this PR does not touch (test_fixed_core_packet.py, test_fixed_core_packet_calibration.py) failed in this container. None touches the changed code, and CI passed the same surface (below). Five scratch probes (below). check_source_manifest.py re-run under -I against a fresh clone at e6ee548: byte-identical to receipts/source-consistency.json. acquire_source --check: PACKET_MATCHES_ITS_CONTRACT; --checkout re-derives the record from the clone. GitHub API reads of both repositories' created_at, release published_at and asset digests, and of issue #565.
Summary and verdict
The standing change does what it says. Applying the base derivation and the head derivation to all 154 results of the head record changes exactly one standing: T-154 moves from superseded to second certificate, reported. T-054 and T-055 stay second certificate, and the new branch is reachable only by kind simplification. A simplification that claims more than its lane, or whose case record later moves past it, still derives superseded and fails the gate.
One hole was reproduced. The relaxed rule for a reported second certificate never consults the verified lane. A report that restates a reported bound the verified lane has already beaten is therefore accepted, where the base code refused it (B1).
On the record, the rungs (V0/C1), the kind, the value form, the case lanes and every count, digest and server-side time I could trace match their sources. That includes the three release-asset digests, which the packet lane could not compare. The exception is the priority wording: three places say the source names Overbeck's candidate "as earlier", and neither the README nor issue #565 says so (B2).
Verdict: approve after B1 and B2 are fixed. B3 to B6 are Low and can be fixed or declined. No Blocker.
Findings
B1 (Medium). A reported second certificate is accepted even where the verified lane beats its value. packing/devtools/check_standing.py:278-282 (restates) and :359-365 (problems).
For a report (C0/C1), restates() reads only the reported lane. The new exemption in problems() accepts any finding whose reported relation is equal, whatever its verified relation, so a stated bound that is beaten in the verified lane passes. That happens wherever a case's reported bound lags its verified one. n = 11 has such a lag today: its reported lower bound is the display value 3.87708359002281 with exact_form: null, read as exact, below the exact verified T.
Reproduction (probe_beaten.py): a C1 simplification scoped to n = 11 whose headline is `s(11) >= 3.87708359002281` gives the finding lower: verified beaten, reported equal. It derives second certificate, reported and problems() returns []. At the base it derived superseded, and the gate refused it ("no worse than the reported one"). That is a real supersession hidden behind a second-certificate label, the case this check exists to catch.
Fix: for a report, require f.reported == EQUAL and f.verified != BEATEN in restates(). Apply the same guard to the exemption in problems(): reported_ok and f.reported == EQUAL and f.verified != BEATEN. Add the probe as a red test. I patched the guard in memory (probe_fix.py): it changes no standing or problem list among the 154 results, and the probe then derives superseded and is refused.
B2 (Medium). The record says the source names Overbeck's candidate "as earlier", and the source does not say that. packing/frontier/results.yaml:17444 (T-153 notes), :17641 (T-154 notes), packing/frontier/n-017.md:117.
The README says "Marc Overbeck published an independent candidate proof of seventeen-square optimality on 12 October 2026". Issue #565 says "Marc Overbeck also published a candidate proof of s(17) optimality today (12 October 2026) … This proof was developed independently". Neither says earlier. The PR's own request record (result-requests.yaml, #565 notes) has it right: "the issue and the README name it as related work developed independently". The order is established by GitHub's times, which I re-read: the candidate was created at 13:46:05Z and its release published at 14:24:20Z; sq17-lean was created at 20:42:08Z and v1.0.0 published at 22:06:23Z. The source's words do not establish it. The record says "Priority, stated and not defended", so the attribution should be exact.
In the same priority note, n-017.md:115-116 says "Its repository and its release v1.0.0 were public … about six hours after Overbeck's candidate". The six hours holds for the repository (6 h 18 min after large-files-v1), but the release came 7 h 42 min after it.
Fix: say that the source names the candidate as independent and dates it 12 October, and that GitHub's times put it first. Give the release its own time, or say "the repository about six hours after, the release v1.0.0 later that evening".
B3 (Low, latent). The two modules split the C2 rung differently, and restates() now combines them. packing/devtools/check_standing.py:111 (UNREPLAYED = {C0, C1}, so C2 counts as replayed), :279, :391-394; packing/devtools/render_recent_results.py:151 (REPLAYED_RUNGS = {C3, C4, C5}, so C2 counts as not replayed), :560.
For a C2 simplification, restates() judges the verified lane and standing() labels the result second certificate, reported. summary() then reports the reported lane. Probe (probe_edges.py): T-054 and T-055 at C2 read "second certificate, reported … equals the reported bound", while T-154 at C2 derives superseded and the gate fails. Nothing is wrong today, since no simplification sits at C2 (the two C2 results are T-036, restricted optimality, and T-112, uniqueness), but the two predicates now feed one decision.
Fix: decide C2 once. For example, have restates() and the label use one predicate, or define one in terms of the other with C2 placed explicitly. Pin it with a test of a C2 simplification.
B4 (Low). The archive "member count" is described as checked here, but it is internal to manifest.json. packing/frontier/evidence.yaml:32005, packing/frontier/verifiers.yaml:1579, packing/resources/web/fitzharding-n17-lean-2026-10-13/README.md:199; the code is at receipts/programs/check_source_manifest.py:81-94.
The program reads members from manifest.json's own archives entry and compares it with the modules manifest.json assigns to that archive. No archive is opened, and only generated-sources.tar.gz was counted against its real contents, by the review (§3.2). The verifier summary also says root files are held to "size and SHA-256", but :72-76 compares SHA-256 only.
Fix: write "the member count manifest.json records for each archive equals the modules it assigns to that archive", and either drop "size" for root files or add the size comparison.
B5 (Low). n-017's prose makes the kind follow from the missing build. packing/frontier/n-017.md:407-409: "nothing here has built it, so it is recorded as a simplification of T-153".
The kind follows from the record already holding the value (epistemics.md, Result Kinds, the fourth rule), as T-154's notes say. A build here would change the rungs, not the kind.
Fix: "it is recorded as a simplification of T-153, which …; nothing here has built it, so the verified bounds and the status are unchanged."
B6 (Low). The new test endorses a standing the gate refuses. packing/tests/test_check_standing.py:293 asserts that view.standing({**record, "kind": "optimality"}) == view.SUPERSEDED, and the docstring says "a bound kind with the same words is superseded". check_standing.problems() refuses exactly that standing: "T-154 is superseded, yet at n = 17 its stated bound is no worse than the reported one" (probe_misc.py).
Fix: also assert that problems() refuses it, and reword the docstring to say that a tied bound kind derives superseded, which the check refuses until the tie is cited or recorded as a simplification.
Suggestions
B7 (Low). packing/frontier/results.yaml:17546 says "endpoint_plainPacking, whose 18-module closure holds no native_decide". endpoint_plainPacking is declared in PackingStatement.lean (lines 34-35), whose closure is 241 modules. The 18-module closure belongs to EndpointPacking, which proves the EndpointGeometry.endpoint_packing it wraps. Both closures are free of native_decide (review §3.2), so the conclusion stands. Name the module whose closure is meant.
Invariants checked
| # | Invariant | Holds? | How shown |
|---|---|---|---|
| 1 | The code change moves no standing but T-154's | Yes | probe_old_new.py: base and head derivation over all 154 results; only T-154 changes (superseded → second certificate, reported) |
| 2 | T-054 and T-055 keep second certificate |
Yes | Same probe; both restates too, at C3 |
| 3 | Only a simplification reaches the new branch | Yes | kind == SIMPLIFICATION guard; the probe lists every non-simplification that restates, and none changes |
| 4 | A simplification that claims more than its lane, or whose case record moves past it, is not a second certificate | Yes | probe_edges.py: headline s(17) = 4.6756 and n = 17's reported lower reverted to R071 both derive superseded, and the gate refuses them |
| 5 | A reported second certificate is not beaten in the verified lane | No | B1, probe_beaten.py |
| 6 | One rung partition across the two modules | No (latent) | B3, probe_edges.py |
| 7 | T-154 holds no case bound; n = 17's reported lane stays on T-153; the verified lanes are unchanged | Yes | held(17): verified T-065 and T-093, reported T-153; T-007 audit sources unchanged |
| 8 | V0/C1 follow epistemics.md's predicates and precedent | Yes | replay_status: not-attempted and assurance: reported set no rung, as for E-n011-lean-formalization-report, T-081 and T-124; C1's external_review is complete |
| 9 | The headline is in the form check_standing reads |
Yes | `s(17) = 4.67553009360455…` is read; equal to the reported lower …095163 and the reported upper, exceeds the verified lower 18641771/4000000, equal to the verified upper |
| 10 | The packet matches its upstream and its own receipts | Yes | source-consistency.json re-derived byte-identical from a clone at e6ee548; --check and --checkout pass; asset sizes and digests match GitHub's |
| 11 | Every count, time and digest in the new prose matches a source | Yes, except B2 and B4 | 24 cells; 35 patterns; 2,781 = 2,776 + 4 + 1; 13,346 = 3 + 13,343; 4,951 and 4,953 modules; 1,215 + 12 + 2 = 1,229 tracked files; 1,203 = 1,215 - 12; 32 = 3 + 18 + 11; the archive bytes and module bytes sum to the stated totals; commit times from the clone; created and published times and issue #565 from the API |
False positives / do not fix
- V0 despite a passing build receipt from the source. The record's precedent is that a source's own reported proof-assistant run sets no rung (
E-n011-lean-formalization-report, T-081, T-124). relationship_to_generator: same-implementationon a report with no replay. This is the same precedent; VERIFIERS.md renders it as "the source's own run".- Bibliography
dated: '2026-10-13'besidepublished: '2026-10-12'. The schema definesdatedas the retained revision's commit date in UTC, ande6ee548was committed at 2026-10-13T01:59:58Z. - "seven hours 25 minutes" in the review's §5. It is measured from the 14:41:30Z push: 7 h 24 min 53 s.
- Free-text
priority_notes[].published. Established convention (n-007, n-010, n-018). - Packing-relative
localinsource-coverage.yaml. The file's convention throughout. - T-154 at C2 or C3 derives
supersededand fails the gate. That is the right direction: a replay would have to move the verified lane first. - n = 11's reported lower sitting below its verified lower. Pre-existing and not from this PR; it only makes B1 reachable.
summary()now reports the reported lane for a C0/C1 second certificate of a proved case. This is cosmetic and agrees with the label.
CI status
At 8c189d8, when this was written: 31 checks passed and 26 were skipped (deferred, exhaustive, deploy and post-merge lanes); none failed or was pending. packing-validation.yml:126 installs Chromium, so the site tests skipped here, including the changed assertion at test_site_result_filters.py:157, run in CI.
Design assessment
Deriving T-154's standing from its kind and from equality in its own lane is the least intrusive route, and it keeps n = 17's reported lane on the first report. The alternative was to cite both reports in the case record, which would have made T-154 current best, reported and blurred the priority the record states. The cost is that the kind now carries weight: if T-153 were withdrawn, T-154 would derive superseded and the gate would fail (probe). That is the right signal, since the record would then have to re-kind T-154 and move the lane to it.
Generated by Claude Code
…s directions (think-s4bn) Review A (A1, A10) and review B (B1, B3, B6) of PR #588. - `check_standing.directions`: a simplification states the relation of the result it proves again, so every direction its words state is a claim of its own, where a bound kind's come from `KIND_DIRECTIONS`. T-154 at C1 stays a reported second certificate; replayed at C2 or C3 before the case record adopts it, it is pending adoption rather than superseded; adopted, it holds the bound. All three are pinned by test. - `restates`: a report must also not be beaten in the verified lane, and the second-certificate exemption in `problems` carries the same guard (B1); the refusal names the reported value where it was allowed (A10). - One rung partition, `render_recent_results.UNREPLAYED` (below `result_status.CONFIRMED_FROM`), decides both the lane an entry is held to and the word a second certificate takes (B3); `REPLAYED_RUNGS` is gone. - The optimality-kind case of T-154 is asserted refused, not merely derived (B6). The docstrings describe the case generically instead of naming T-154. check_standing --list prints the same line for all 154 results before and after. Co-Authored-By: Claude Opus 5.5 <[email protected]> Claude-Session: https://claude.ai/code/session_012JUyoHafZq55vksGxE4vPP
…rograms and receipts (think-s4bn) Review A (A2) and review B (B4) of PR #588. The review's load-bearing comparisons with this project's n = 17 data were scratch programs. They are retained in the packet's receipts/programs/ beside check_source_manifest.py, each reading the source's files as text and running nothing from it, with their outputs: - compare_endpoint.py -> receipts/endpoint-comparison.json: the endpoint's polynomials, midpoint, radius and side map against exp-237 and H-255, the Lean's contraction certificate recomputed, the side to 60 places, exp-245's enclosure and the verified ceiling. - compare_cover.py -> receipts/cover-comparison.json: the 24 cells equal UNIQUE_24 (exp-247) and none of the other three designs; 32 of the 35 patterns equal admitted ledger entries up to D4, the other 3 strictly inside admitted entries. - check_closures.py -> receipts/closures.json: on a clone of the pin and the release's generated-sources.tar.gz (size and SHA-256 as manifest.json gives), every module of PackingStatement's 241-module and EndpointPacking's 18-module closures matches manifest.json and uses no native_decide in code. The two data files compare_cover.py reads, ExactCellCoverData.lean and RepresentativeCaseData.lean, are added to the declaration's scope and the packet re-derived with acquire_source --checkout from the clone at e6ee548; --check passes. check_source_manifest.py now holds root files to their size as well as their SHA-256, and its docstring says the archive member counts are manifest.json's own (B4); re-run on the clone, receipts/source-consistency.json is byte-identical. Co-Authored-By: Claude Opus 5.5 <[email protected]> Claude-Session: https://claude.ai/code/session_012JUyoHafZq55vksGxE4vPP
…r carriers (think-s4bn) - A1: T-154's next_rung, and epistemics.md's Result Kinds, say what happens when a simplification's build lands before that of the result it proves again: pending adoption until the case record adopts it, then the kind is revisited and the result page's registered identity amended. - A2: E-n017-fitzharding-lean-report lists V-fitzharding-n17-premise-comparisons, registered in verifiers.yaml; the claim, the evidence note, the bibliography note and T-154's artifacts point at the packet's three new receipts. - A3: F-2's "spells his name Mannaseh" clause is dropped from the register and the bibliography; the record's own voice keeps Mannaseh Ahmed. - A4, B2: the source names Overbeck's candidate as independent and published on 12 October, and GitHub's times put it first: the repository about six hours after large-files-v1, release v1.0.0 about seven and three-quarter hours after it. "First report of a proof that leaves no premise open" is scoped to this record's holdings, beside the source's own Lean-only search. T-153 and T-154 notes, n-017's priority notes and prose, the requests summary. - A5: the review record names reasoning xhigh from the lane's rollup. - A6: significance `by` is the intake draft alone. - A7, B5: n-017 gives the kind's reason (a value the record holds), and the missing build as the reason the bounds do not move. - A8: the evidence limitations count toward no rung above C1. - A9: the claim links release v1.0.0's commit 0a7167e, as the notes say. - A11: the regularization policy registers #549's batch under the next free result id. - A12: the requests summary says F-1 is about specific credit. - A13: the n = 11 packet's sources.json lists both 13 October captures. - B4: evidence and verifier prose say the archive member counts are manifest.json's own, and root files are held to size and SHA-256. - B7: the composition names PackingStatement's 241-module closure and EndpointPacking's 18-module one. - Retained-module counts move from 1,203 to 1,201 in coverage and verifiers. Co-Authored-By: Claude Opus 5.5 <[email protected]> Claude-Session: https://claude.ai/code/session_012JUyoHafZq55vksGxE4vPP
… the URL registry (think-s4bn) Rendered from the register commit before: render_results --update, render_evidence_inventory --update, render_verifiers --update and site_urls --write. T-154's result URL is not on main, so its unpublished row was regenerated with the new artifacts rather than carrying an amendment. render_research_tables, render_results_headline, audit_t007_consumers, build_bound_citations, render_case_verifiers and render_document_map had nothing to change. packing-validate --records passes. Co-Authored-By: Claude Opus 5.5 <[email protected]> Claude-Session: https://claude.ai/code/session_012JUyoHafZq55vksGxE4vPP
Co-Authored-By: Claude Opus 5.5 <[email protected]> Claude-Session: https://claude.ai/code/session_012JUyoHafZq55vksGxE4vPP
|
CI on #588 is red because of degraded GitHub Actions APIs, not because of this change.
Generated by Claude Code |
|
Dispositions for review A at Fix commits:
Validation at CI at
Generated by Claude Code |
|
Dispositions for review B at Fix commits:
Validation at CI at
Generated by Claude Code |
No conflicts. Main still ends at T-153, so T-154 stays this branch's. Co-Authored-By: Claude Opus 5.5 <[email protected]> Claude-Session: https://claude.ai/code/session_012JUyoHafZq55vksGxE4vPP
jlevy
left a comment
There was a problem hiding this comment.
Review C (follow-up review, round 2) · head bc0fab085 · base main at 7d51fdd85
Reviewer: Codex coordinator with independent standing-code and record/packet reviewers, inheriting this session's model and reasoning settings · Channel: formal review
Coverage: the 32 fix files between reviewed head 8c189d89a and 818324990, plus the subsequent main merge's effect on those carriers. Unrelated changes already merged through #509 were excluded.
Tests run: project Python 3.14.7, pytest -p no:cacheprovider tests/test_check_standing.py tests/test_recent_results.py: 80 passed. devtools.check_standing --list: all 154 results pass. Independent reviewers recomputed the endpoint and cover comparisons: both match the retained JSON receipts. Both newly indexed n=11 social captures match their recorded byte counts and SHA-256.
Summary and verdict
Approve the follow-up fixes to reviews A and B. No actionable finding remains in this scope. This review is independent of the agents that wrote the fixes.
The reported-second-certificate guard consults the verified lane; the rung partition is shared; a replayed simplification awaiting adoption remains pending adoption. Retained comparison programs and receipts now support the register's comparisons. Priority wording, spelling, reviewer settings, significance attribution, rung limitations, closure descriptions and acquisition metadata agree with the dispositions.
Dispositions checked
Reviews A and B reported no Blocker or High findings. Checked their Medium findings A1–A3 and B1–B2 and the remaining fix dispositions against the actual changes. A14 is explicitly declined: posting the acknowledgement requires the owner's separate instruction, and Lean replay pricing remains tracked in open think-r109 and think-s7s4. No external acknowledgement was posted by this review.
Findings and suggestions
None.
False positives / do not fix
A stale reported simplification beaten by the verified bound derives superseded and is refused by the validator. Review B explicitly requires that refusal as the signal to amend the record; it is not a residual bug.
CI status and limits
Packing validation run 38467779877 now passes after rerunning its aggregator. Certificate page run 38467779920 is finishing its failed-job rerun; earlier failures were directly traced to HTTP 502 responses in artifact retrieval and the jobs API. Deferred checkpoint run 38472184064 was dispatched from the PR branch with pull_request=588 and is running against the immutable PR merge tree. Merge waits for these final checks and source/base identity verification.
Not rerun: the large archive closure comparison or the upstream 4,951-module Lean build. This follow-up assesses the retained import and engineering changes; it does not raise the result's mathematical verification rung.
jlevy
left a comment
There was a problem hiding this comment.
Review D (senior engineering review, round 2) · head bc0fab085 · base main at
7d51fdd85
Reviewer: strong tier, requested gpt-6-astra at xhigh · Channel: formal
review
Coverage: 75 of 87 changed files examined at varying depth: production/test
diffs, all four first-party receipt programs,
register/evidence/verifier/case/bibliography and policy changes, packet custody and
documentation, retained statement and endpoint definitions, and prior dispositions.
Generated views were skimmed against their source records; retained numeric tables and
remaining upstream proof/build files received receipt/integrity checks or partial reads,
not a complete formal proof audit.
Skipped: 11 resource-usage rollups and session-close-report.yaml, administrative
evidence already covered by review A.
Tests run: project Python 3.14.7,
pytest -p no:cacheprovider tests/test_check_standing.py tests/test_recent_results.py tests/test_result_status.py tests/test_results_register.py -q
with external-volume --basetemp: 189 passed in 70.82 s, no skips.
Re-executed compare_endpoint.py and compare_cover.py under -I -B, with checkout
module paths injected because this worktree borrows the main checkout’s interpreter;
both JSON outputs are byte-identical to their committed receipts (cmp, exit 0).
python3 -m devtools.acquire_source fitzharding-n17-lean-2026-10-13 --check:
PACKET_MATCHES_ITS_CONTRACT.
Summary and verdict
Verdict: approve this import and its engineering changes.
No new actionable findings. This is a fresh review of the full PR diff at the pinned
head, independent of the implementation.
The remaining merge gate belongs to the coordinator: finish applicable dedicated reviews
and the already-running deferred checkpoint.
The import keeps T-154 at V0/C1 and leaves the verified n = 17 bounds unchanged.
The record distinguishes the author’s clean-build report from checks performed here.
The exact endpoint and cover comparisons reproduce; they establish the recorded
comparisons, not a replay of the Lean proof.
The standing change now handles both the current reported second certificate and a
replayed simplification awaiting adoption.
It shares the C0/C1 partition with the renderer, consults the verified bound before
accepting a reported restatement, and derives pending adoption when a replayed
simplification claims a stronger bound.
Tests cover those transitions and the refusal case previously reported as B1.
Findings and suggestions
None. Counts: 0 Blocker, 0 High, 0 Medium, 0 Low.
Earlier reviews and dispositions
Read reviews A and B, their marked dispositions at
818324990bc5d884642d4bd286788e9c678cd010, and the newly published
follow-up C.
- A1/B1/B3/B6: the code and regression tests support the dispositions, including T-154
at C2/C3 before adoption and the report beaten by the verified lane. - A2/B4/B7: the comparisons are retained and registered; the endpoint and cover receipts
reproduce in this review.
The closure program and receipt distinguish the 241-module statement closure from the
18-module endpoint-packing closure.
I did not download the large archive to re-execute the closure scan. - A3–A13, A15 and B2/B5: the current carriers implement the recorded wording,
attribution, chronology, acquisition-metadata and documentation corrections.
The dated adversarial review remains a historical record, as the dispositions require. - A14: its explicit declined disposition remains appropriate to this import’s scope; the
acknowledgement and Lean replay pricing remain separate work.
No author message was sent here.
Neither earlier review had a Blocker or High finding.
Discovery found no inline comments or additional unresolved review issue; the all-state
issue search returned #495 and #366, which contain unrelated certificate intake
discussions.
Design assessment
The change extends the existing standing derivation rather than storing a special status
for T-154. This preserves the first report’s citation while making the second proof
visible and keeping later adoption expressible.
The shared rung partition prevents label/lane disagreement at C2. The register and
epistemics.md now explain the later kind/URL-identity decision.
Keeping upstream proof bytes in a pinned source packet and first-party comparisons
beside their receipts makes the import reviewable without requiring the expensive
upstream build. The source’s own scripts remain archival data and are not added to the
repository’s normal execution surface.
Formal remote stack membership was checked: the API returned [], and this PR targets
main.
Documentation and limits
No additional documentation change is requested.
The result, case record, evidence, bibliography and rendered status agree on the
reported/replayed distinction.
The source’s 13,343 native checks, unread soundness proofs and full 4,951-module build
were not validated by this review; this review does not raise a mathematical
verification or confirmation rung.
No repository file was edited, committed or pushed; the pinned working tree remained
clean.
Dedicated review coverage
Correctness applies to persisted standing classification and exact numerical
comparisons. Review B and follow-up C cover earlier work; a current dedicated pass is
appropriate alongside this fresh senior review.
A narrow security pass also applies to the new first-party readers in
receipts/programs/, especially check_closures.py, because they parse externally
supplied manifest paths and compressed archive members.
That recommendation concerns these readers, not executing the archived Lean/build
scripts. No performance-specific review is indicated: no hot path or broad
data-processing execution surface is added.
CI status
At publication, both current-head workflows are complete and successful:
Packing validation, run 38467779877
and
Certificate page, run 38467779920.
The
deferred checkpoint, run 38472184064,
is still in progress.
All report head bc0fab08514043b69a9facbd41f3fe1c63d7b879; the coordinator must verify
its final checked source/base identity and conclusion before merging.
The PR head was unchanged when this review was published.
jlevy
left a comment
There was a problem hiding this comment.
Review E (correctness review, round 2) · head bc0fab085 · base main at
7d51fdd85
Reviewer: strong tier, requested gpt-6-astra at xhigh · Channel: formal review
Coverage: 20 of 87 changed files examined at varying depth: the two standing modules,
three regression-test diffs, the two numerical comparison programs and their receipts,
five retained Lean definition/data files, the packet README, epistemics.md, and the
result/evidence/verifier/n-017 records.
Surrounding root-certificate, catalogue-polynomial, cover-symmetry, layout and
confirmation code was also read.
Generated large tables received partial reads.
The remaining 67 changed files, archive scans and full Lean proof were outside this
dedicated scope; review D covers the broader import.
Tests run: no additional execution of project tests in this pass, as the coordinator
requested reuse of completed validation and new runs only for suspected defects.
Review D, at
this exact head, records project Python 3.14.7 running
pytest -p no:cacheprovider tests/test_check_standing.py tests/test_recent_results.py tests/test_result_status.py tests/test_results_register.py -q:
189 passed, no skips. D also records byte-identical reruns of both comparison
receipts and PACKET_MATCHES_ITS_CONTRACT. Those executions belong to D; this pass
independently inspected the implementation and evidence boundaries.
Summary and Verdict
Verdict: approve within the correctness scope.
No new actionable findings.
The shared confirmation partition and verified-lane guard implement the intended
reported-second-certificate rule.
A replayed simplification awaiting adoption can now claim the directions in its stated
relation. The exact comparison code supports the endpoint identity and the cell/pattern
comparisons recorded in the import.
T-154 remains V0/C1, with n = 17’s verified bounds unchanged.
Findings and Suggestions
None: 0 Blocker, 0 High, 0 Medium, 0 Low.
No Blocker or High IDs.
Invariants Checked
| Invariant | Assessment and evidence |
|---|---|
| A reported simplification needs a nonempty set of stated bounds, with every bound tying its reported lane and none beaten by its verified lane. | Holds. restates() uses bool(held) and all(held) and the paired equality/not-beaten condition. problems() carries the same verified-lane guard. The n = 11 regression covers the stale reported display from B1. |
| C2 has the same meaning in the classifier, validator and report filter. | Holds. UNREPLAYED derives from CONFIRMED_FROM = 2 and is shared; the C2 second-certificate regression checks the label and summary. |
| Replaying T-154 before case adoption preserves a live standing; adopting it makes the citation determine the holder. | Holds. directions() reads a simplification’s stated relations, improvements() admits the stronger verified lower bound, and standing() checks holders first. The C2/C3 and adoption regression covers the transitions. |
| Numerical comparisons preserve rational coefficients, signs and inclusive/exclusive boundary semantics. | Holds for the inspected inputs. Standing comparisons use Fraction and the existing half-open cut-decimal interval. The endpoint program expands P(m + r p) exactly and checks both Newton identities, determinant and contraction inequalities in rational arithmetic. Floats appear only in diagnostic output. |
| Endpoint identity rests on the same equations, isolating box and side map. | Holds. The retained EndpointRoot selects the unique common zero in that box. EndpointGeometry.side and H-256’s _layout() use (6 + 4t)/(1 + 2t - t*t). The receipt records exact polynomial, midpoint and radius equality to exp-237 and polynomial equality to H-255. |
| Cover/pattern comparisons respect geometry, cell ordering and symmetry. | Holds. Rational vertex sets determine cell equality; names and ordering are reported separately. The pattern reader requires indices 0 through 34 and the expected cell-name order, then compares occupied sets under the existing D4 permutations. The receipt distinguishes 32 equal patterns from three strictly contained patterns. |
| First-party comparisons do not promote an author’s build report to a local proof replay. | Holds. The evidence remains assurance: reported, performed_by: source-author, replay_status: not-attempted; the comparison verifier has role: premises. Case and result records preserve the reported/verified distinction. |
No new concurrent writer or persisted-state migration is introduced in these inspected
paths. The numerical programs read inputs and emit JSON; standing is derived from an
in-memory record snapshot.
False Positives / Do Not Fix
- A stale reported simplification can derive
supersededwhile the standing validator
refuses the stale reported tie.
That refusal requires correction of the record and is the intended B1 disposition. - The endpoint program’s rounded Newton iterate, small residuals and catalogue sign
change are numerical diagnostics.
The exact identification with the catalogue is supplied by the matching chart and
exp-245’s existing resultant/root-isolation evidence; a sign change alone would not
establish identity. - The cover’s three strict-subset matches are reported separately.
Exclusion of a larger occupied pattern is not presented as a proof excluding its
smaller subset.
The design keeps standing derived and reuses the existing exact arithmetic and symmetry
routines. No alternative with a concrete correctness benefit was identified.
No additional documentation gap was found in this scope.
Earlier Reviews and CI
Read the marked A/B dispositions and reviews C/D. The inspected fixes support A1, A2,
B1, B3 and B6; no finding is reopened.
GitHub returned no inline comments and no formal stack membership; the PR targets
main.
gh pr checks 588 --repo jlevy/squares reports the required Packing validation and
Certificate page checks passing.
The separately dispatched
deferred checkpoint, run 38472184064,
still reports in_progress at bc0fab085; the coordinator owns that final merge gate
and its merge-tree identity check.
The PR head was unchanged at publication.
The full Lean build, native evaluation and large archive scans were not repeated.
This review does not raise the mathematical verification rung.
The pinned checkout remained clean; no source was edited, committed or pushed.
jlevy
left a comment
There was a problem hiding this comment.
Review F (security review, round 2) · head bc0fab085 · base main at 7d51fdd85
Reviewer: strong tier, requested gpt-6-astra at xhigh · Channel: formal review
Coverage: 9 of 87 changed files examined at varying depth: all four first-party readers
in packing/resources/web/fitzharding-n17-lean-2026-10-13/receipts/programs/, the
packet README, its three acquisition files, and the retained compressed manifest’s path
set. The readers and README were read in full.
Supporting acquisition and Lean-token-scanner code, verifier descriptions, and
control-log names were also inspected.
The remaining changed files are outside this dedicated scope; reviews D and E cover the
broader engineering and correctness work.
Archived Lean and upstream build scripts were treated as source data.
Tests run: no project test suites or receipt reruns in this pass, as the coordinator
requested reuse of completed validation and new execution only for suspected defects.
Data inspection with gzip -dc .../manifest.json.gz | jq ... found 4,953 source paths,
none absolute or containing ..; all 12 root paths and both control-log names are local
relative names. git ls-tree -r HEAD showed no symlink or submodule entries in this
packet.
Review D
records 189 passing tests without skips at this exact head, byte-identical
endpoint/cover receipt reruns, and PACKET_MATCHES_ITS_CONTRACT; those executions
belong to D.
Summary and Verdict
Verdict: approve within the security scope.
No actionable findings.
These programs read the explicitly selected local source packet, checkout and archive
and emit JSON. They parse upstream Lean as text and reuse trusted project functions.
The reviewed paths do not execute upstream scripts, install dependencies, open a network
connection, or extract archive members to the filesystem.
The local pinned-source audit design is appropriate for the documented callers.
Findings and Suggestions
None: 0 Blocker, 0 High, 0 Medium, 0 Low.
No finding IDs.
Surface Reviewed
- Manifest and control-log paths to local reads.
check_source_manifest.py:59reads
the retained manifest and receipt, then compares checkout bytes and log digests.
check_closures.py:57uses that manifest to select local modules.
These joins do not enforce containment for an arbitrary replacement manifest.
The documented inputs are this retained packet and a checkout of its pin; the current
manifest’s paths and control names were inspected, and no outside-root path was
present. Neither reader forwards file contents to a remote recipient or performs a
write. This review does not certify these scripts as general loaders for hostile
manifests. - Tar members to in-memory source text.
check_closures.py:107opens the supplied
archive in streaming read mode.
It records and skips absolute names, parent traversal, symbolic links and hard links,
then callsextractfileonly for regular files in the selected path map.
extractfilesupplies bytes for hashing and token counting; no extraction destination
is created. The report records archive size/digest agreement, per-module mismatches and
unsafe members. - Upstream source text to parsing and arithmetic.
compare_endpoint.pyand
compare_cover.pyuse regular expressions, integer/Fraction conversion and exact
project routines. The cover ledger usesyaml.safe_load. Neither evaluates source
expressions. Thesys.pathadditions point to the caller-selected trusted Squares
repository, or the repository containing the first-party program; the README’s-I
invocation excludes the upstream checkout from Python’s automatic import path. - Acquisition metadata to existing filesystem operations. The new declaration
selects the fixedsq17-leandirectory and explicit retained paths.
The existing acquisition helper checks the declared source commit, Git file modes and
blob contents before replacing that packet directory.
The new records and README preserve the distinction between first-party receipt
generation and the source author’s build report.
No upstream build is added to a normal execution path by these readers.
False Positives / Do Not Fix
- The archive’s stored digest is compared after streaming it.
That establishes byte identity for the receipt; it is not a decompression resource
limit. This invocation is a local audit of the named pinned release archive, and it
does not execute or extract its contents.
General hostile-upload handling is outside the current caller contract. - The programs report mismatches and comparison results in JSON rather than treating
every false comparison as a process failure.
They are diagnostic receipt producers, not an authorization or proof-acceptance gate.
Their recorded comparisons do not elevate T-154 beyond V0/C1. - The archived
scripts/unpack.py,scripts/reproduce.py, Lean source and build pins
are retained evidence.
Their presence does not mean this PR runs them.
No additional documentation change or replacement design with a concrete security
benefit was identified for these callers.
Earlier Reviews and CI
Read the A/B dispositions and current C/D/E reviews; no finding is reopened.
GitHub returned no inline review comments and no formal stack membership ([]); the PR
targets main.
gh pr checks 588 --repo jlevy/squares reports the required Packing validation and
Certificate page checks passing.
The separately dispatched
deferred checkpoint, run 38472184064,
remains in_progress at bc0fab085. The coordinator owns its final conclusion and
merge-tree identity check.
The PR head was unchanged at publication.
This pass did not download the large archives or run Lean, and it does not assess the
full mathematical proof.
The pinned checkout remained clean; no source was edited, committed or pushed.
…into the profiles branch Four conflicts. The document map and the synopsis table keep every row; RESULTS.md is regenerated from the merged register; release.py keeps this branch's pin until the re-pin that follows. Three of the landing's new credits take this branch's names: T-154's note and its bibliography entry credit Hosono for the eleven sub-patterns of issue #472, and the resources README corrects Ahmed's spelling. The dated review, repository identifiers and the bibliography's quotation of Fitzharding's README keep the names they print. The census joins two new spans by reviewed labels and leaves Fitzharding and MacIver unresolved. Co-Authored-By: Claude Opus 5.5 <[email protected]> Claude-Session: https://claude.ai/code/session_01PutxEsY69F3QeoTtc5jDQ3
… n = 17 Lean import (think-kf4u) #588 credits the Lean proof that s(17) = L as "Fitzharding after Levy, Ahmed, MacIver". oscar-fitzharding takes his name from the release's CITATION.cff and LICENSE, and links GitHub ofitzharding and X @ofitzharding from the retained announcement and packet. david-r-maciver takes his from the title pages of his three retained manuscripts, and links GitHub DRMacIver from the retained commit. Both bios keep the AI-assistance statements in their sources' terms. The four spans the census had left unresolved, two for each, are joined on the records' own evidence; their profile pages enter the URL register. Co-Authored-By: Claude Opus 5.5 <[email protected]> Claude-Session: https://claude.ai/code/session_01PutxEsY69F3QeoTtc5jDQ3
…files Co-Authored-By: Claude Opus 5.5 <[email protected]> Claude-Session: https://claude.ai/code/session_01PutxEsY69F3QeoTtc5jDQ3
Co-Authored-By: Claude Opus 5.5 <[email protected]> Claude-Session: https://claude.ai/code/session_01RXar8v4JCumHp9eHemRgSA
…, #588; the closed-form root fix) into the grid-slack layer Co-Authored-By: Claude Opus 5.5 <[email protected]> Claude-Session: https://claude.ai/code/session_01RXar8v4JCumHp9eHemRgSA
…the closed-form root fix) into the record layer results.yaml: main's T-154 (Fitzharding's Lean proof that s(17) = L) ends the results list and this layer's generated regularized_drawings block follows it, unchanged (`regularized_drawings --check`). release.py takes the grid-slack layer's pin and is re-pinned next. test_regularize_evand.py: the closed-form root test, folded down to the regularization-tools layer, is kept once, where that layer put it. Co-Authored-By: Claude Opus 5.5 <[email protected]> Claude-Session: https://claude.ai/code/session_01RXar8v4JCumHp9eHemRgSA
…ord holds (think-8e0p) The owner, 13 October 2026, on T-154's kind: "simplification is one thing but formalization is another"; "let's go with formalization then". - epistemics.md, Result Kinds: the kind formalization, which proves in a proof assistant a result the record already holds, by formalizing an existing argument or by a route of its own, and moves no bound by itself. A fifth kind rule: its claim names the result it formalizes or proves again; where a second proof fits both kinds it is a formalization, one no proof assistant checked stays a simplification, and a proof-assistant proof of a value the record does not hold takes that value's kind. The standing paragraph #588 added covers both second-proof kinds. The vocabulary change is recorded, dated, where the 2026-10-01 change is. - results.schema.yaml: formalization in the kind enum, after simplification. - check_results: KINDS gains formalization; SECOND_PROOF_KINDS is the pair. Either may restate its result's relation in its headline and must name that result on a shared case. A formalization cites evidence whose method or reported_method is proof-assistant-checked, and a simplification that cites such evidence is refused. - check_standing and render_recent_results: a formalization's claimed relations stand in for its kind's directions, with the same verified-lane guard and rung partition a simplification has. - audit_t007_consumers: formalization is among the kinds that carry a lower bound on s(n). - The all-results article, paper-design and result-import name the kind. Co-Authored-By: Claude Opus 5.5 <[email protected]> Claude-Session: https://claude.ai/code/session_012JUyoHafZq55vksGxE4vPP
…ew C fixes) into the register layer main's #588 registered T-154, Fitzharding's Lean proof that s(17) = L, so this layer's batch of 59 exact regularized bounds moves to T-155; the next commit renumbers it. - results.yaml: main's T-154 is kept unchanged and this layer's batch follows it as T-155; its T-009 and T-101 notes are this layer's. - evidence.yaml: main's E-n017-fitzharding-lean-report and this layer's E-regularized-bounds-2026-10-12-exact-decision both kept, main's first. - regularization-policy.md: this layer's item 7, which states the batch as registered, with its id as T-155; main had written "under the next free result id". - release.py takes the record layer's pin and is re-pinned after the renumber. - SYNOPSIS.md, site-urls.md, site-urls.yaml, RESULTS.md, INVENTORY.md and VERIFIERS.md are generated; they take this layer's side here and are regenerated with the renumber. Co-Authored-By: Claude Opus 5.5 <[email protected]> Claude-Session: https://claude.ai/code/session_01RXar8v4JCumHp9eHemRgSA
main's #588 registered T-154, Fitzharding's Lean proof that s(17) = L, so this layer's 59 exact regularized bounds take the next id. main's T-154 and every reference to it, about n = 17, Fitzharding and Lean, are unchanged. The id is defined once, as register_regularized_bounds.RESULT. The registrar rewrote the 59 case records, and the renderers regenerated RESULTS.md, INVENTORY.md (which also counts main's new evidence entry), the synopsis headline, bound-citations.json and the regularized_drawings block. The URL registry was regenerated from the record layer's copy against main's history: result/t-155.html is a new registration at the batch's registration date, with the page-budget exception moved to it, and result/t-154.html keeps main's binding. This layer's t-154 page was never published on main, so it needs no forwarder. Hand-written references to the batch now name T-155: the T-009 and T-101 notes and the batch's own note on why it has its id (results.yaml); the code comments in apply_exact_ceilings, catalogue_upper_bounds, generate_frontier_case, regularize_evand and regularized_drawings; the atlas and regularized_bounds READMEs; the regularization research report; and the test expectations, the workbench's citations test included. The synopsis's research-status row counts 155 results, 124 by others. check_results (T-001..T-155), register_regularized_bounds --check, regularized_drawings --check and site_urls --check --history-ref origin/main pass. Co-Authored-By: Claude Opus 5.5 <[email protected]> Claude-Session: https://claude.ai/code/session_01RXar8v4JCumHp9eHemRgSA
…e batch renumbered T-155; review C fixes) into the #518 adoption layer - regularize_evand.run_block: this layer's cost note (`measured_by`) and the record layer's reclassified-copy mark (`reclassified_from`, #548 review C, C3) are both kept. - RESULTS.md is regenerated from the merged register. - release.py takes the register layer's pin and is re-pinned next. No hand-written reference to the batch as T-154 is left here: every T-154 in the tree is main's (Fitzharding's Lean proof that s(17) = L), line for line. Co-Authored-By: Claude Opus 5.5 <[email protected]> Claude-Session: https://claude.ai/code/session_01RXar8v4JCumHp9eHemRgSA
…tch renumbered T-155; review C fixes; the fast identity re-measure) into the selection layer Brings main's #588 (T-154, Fitzharding's Lean proof that s(17) = L) and #509, the register layer's renumbering of the stack's regularized-bounds batch to T-155, #548's review-C fixes and #559's cheaper identity search (`arrangement_gap`) up to the selection layer. Conflicts: - release.py: the lower layer's, re-pinned next. - regularize_grid_slack.decided: this layer's account of the table (the exact routes, the side against s_W and U, and the contact counts decide; rows 6 and 9 retired) with the lower layer's `routes`, which admission now runs on the view file as it is (`view_decided`, #548 review C, C1). The body merged cleanly: the routes feed this layer's exact `verified_bound` comparison unchanged. - test_regularize_grid_slack: both sides' tests kept (this layer's closed-form bound test; the lower layer's report-dated grid run and file-decided admission tests). - RESULTS.md: regenerated (below). Kept from this layer: the exact closed-form U through `verified_bound` and `held_bound`, `stated_bound`, `yield_to_bound`'s exact comparison, and `ABOVE_U` as the seven named exceptions 18, 26, 66, 85, 110, 241 and 297. Renamed T-154 -> T-155 where it means the stack's batch: the process guide's registration paragraph, and packing/resources/README.md's credit of Evan Daniel's regularizer, which the register layer's renumber missed. Every other T-154 is main's (n = 17), or the dated review of 13 October, kept as history. Generated files, with their tools: `--check-atlas` passes on the merged index, so it is not rebuilt; `regularized_drawings` (86 items, 4 unregistered) now names T-155 at 87, which the register holds again; `render_results --update`. The case records and the site URL registry (`site_urls --write --history-ref origin/main`, 971 rows) do not drift. Co-Authored-By: Claude Opus 5.5 <[email protected]> Claude-Session: https://claude.ai/code/session_01RXar8v4JCumHp9eHemRgSA
…he batch renumbered T-155; review C fixes) into the credit layer Brings main's #588 (T-154, Fitzharding's Lean proof that s(17) = L), the register layer's renumbering of the stack's regularized-bounds batch to T-155, #548's review-C fixes and #559's cheaper identity search up to the credit layer. Conflicts: - release.py: the lower layer's, re-pinned next. - The process guide's register-candidates paragraph: this layer's, which names `first_certified_in`, with the batch as T-155. - RESULTS.md: regenerated (below). `same_receipt` still reads `reclassified_from`: the field and the zeroed copy cost are unchanged below. Renamed T-154 -> T-155 where it means the stack's batch, by hand in what this layer wrote: the policy's credit sections (question 16 and the modifications paragraph), the atlas README's credit paragraph, the frontier README's `regularization` field, the two schemas' descriptions, regularized_drawings' docstrings, and the tests' fixtures, notes and on-record test (`test_t155_names_daniels_earlier_certificate_...`). Every other T-154 is main's (n = 17), or the dated review of 13 October, kept as history. Generated files, with their tools: `--check-atlas` passes on the merged index; `regularized_drawings` rewrites the 59 case records' credit notes and items to name T-155 (59 `registered_in: T-155`; the 33 that name `first_certified_in: T-101` are unchanged); `render_results --update`. The site URL registry (`site_urls --write --history-ref origin/main`, 971 rows) does not drift. Co-Authored-By: Claude Opus 5.5 <[email protected]> Claude-Session: https://claude.ai/code/session_01RXar8v4JCumHp9eHemRgSA
…batch renumbered T-155; review C fixes) into the 290 registration layer; n = 290's result renumbered T-156 Main's #588 registered T-154 (Fitzharding's Lean proof that s(17) = L), and the register layer renumbered the stack's 59-count batch T-154 -> T-155, so this layer's own result for n = 290, T-155 until now, becomes T-156: the next id after both. The renumbering was done on this layer's side before merging, in two passes that cannot collide (one simultaneous substitution): first this layer's own T-155 -> T-156, then its references to the batch, T-154 -> T-155. Every T-154 this layer wrote meant the batch, since it predates #588; main's T-154 stays wherever main wrote it. Renamed so: - T-156: the GRID batch's id in `register_regularized_bounds` (and its docstring and `--batch` help), the T-156 record, its regularization notes and the n-290 case record, the policy's question 16 example, the regularized-bounds README, the process guide, regularized_drawings' docstrings, the resources README's credit line, and the tests (`test_t156s_note_says_its_bound_follows_from_t155_by_monotonicity` among them). - T-155 (the batch): "by monotonicity from T-155", T-156's `implied_by` results (selection.json) and composition, notes and evidence limitations, the n-290 case record, question 16, the README, the process guide and the tests (`test_n290s_bound_already_followed_from_t155s_certificate_at_n291`). Conflicts, beyond the ids: - release.py: the lower layer's, re-pinned next. - regularize_grid_slack.decided: the lower layer's `routes` (admission's verdicts on the view file) and exact `verified_bound`, with this layer's keyword `upper`, which the registrar gives to ask how a view is decided once its side is the bound. A given `upper` is held as a rational `VerifiedBound`, so `below_bound` decides against it; otherwise the case record's U is held exactly, as below. Both imports kept (`grid_written_method`, `git_blob`). - test_regularize_grid_slack and test_regularized_drawings: both sides' tests kept. - SYNOPSIS.md's results row: 156 registered, 124 by others, as `check_synopsis` reads the merged register. - INVENTORY.md, VERIFIERS.md and RESULTS.md: regenerated (below). Generated files, with their tools: `register_regularized_bounds` (60 records and receipts current), `--check-atlas`, `regularized_drawings` (no case record changes), `render_results --update`, `render_verifiers --update`, `render_evidence_inventory --update`, and `site_urls --write --history-ref origin/main`: 972 rows, result/t-156.html a new registration with no forwarder, since it was never on main. `check_results` holds T-001..T-156, contiguous. Co-Authored-By: Claude Opus 5.5 <[email protected]> Claude-Session: https://claude.ai/code/session_01RXar8v4JCumHp9eHemRgSA
…581, #507, #497, #509) into layer 5 Main's records are authoritative: T-153 (#557, n = 17), T-154 (Fitzharding's Lean proof, #588), T-155 (the regularized batch at 59 counts), #558's replies and #576's moves under docs/project/<kind>/ come from main unchanged. Layer 5's rung reviews, significance confirmation, intake rule, renderer and rollups sit on top. No layer 5 file was moved by #576: its three reviews already live under docs/project/reviews/ with lowercase names, and every relative link in them resolves on the merged tree. Conflicts, resolved by intent and re-rendered, never by hand: - SYNOPSIS.md (glance rows and rollup rows): main's text kept, then the generated blocks re-rendered with devtools.render_results_headline, devtools.render_document_map and devtools.close_session --render. The glance rows carry main's T-155 and layer 5's three moved scores (T-053 S4 to S3, T-063 S1 to S3, T-065 S3 to S2). - packing/frontier/RESULTS.md: re-rendered with devtools.render_results --update. - packing/campaign/session-close-report.yaml: re-rendered with devtools.close_session --render. results.yaml merged without a textual conflict and was checked entry by entry against the merge base. Main changed claim, composition or next_rung in T-037 to T-043, T-047, T-059, T-061 and T-065 (the Overbeck naming of think-ugbi and #571's review fixes); layer 5 changed only their significance. Both are kept, and T-037's rationale carries main's "Overbeck's" with layer 5's confirmation paragraph. Layer 5 judgements that main overtakes: - The confirmed rationales of T-038 and T-065 called the author of the n = 11 certificate and the n = 17 rational witness "Kleddamag's". Main's think-ugbi rule names him Overbeck in register prose, keeping the handle for identifiers and quotations, so both now read "Overbeck's". Scores unchanged. - RR-6 of review-2026-10-11-recent-register-rungs.md quotes the next_rung of T-132 and T-142 to T-144 as queued "after the regularization work (#497)". Main has since reworded all four to "after the regularization of every packing (think-ux1v, planned in #497)". The review is dated and writes no record; its quotation stands as of 11 October, and its fix (the branch, the owner activity, T-142's held control, T-144's price basis) is still unapplied on main. - T-155's notes on main supersede T-009 and T-101 as ceilings. Layer 5 scored both (S3 and S2) against other entries; supersession moves no score, so neither changes. T-153, T-154 and T-155 postdate the significance review and keep main's scores. Co-Authored-By: Claude Opus 5.5 <[email protected]> Claude-Session: https://claude.ai/code/session_01UXZs37jGv5vqVGADH7Gkn8
; T-153 to T-156) into layer 6 (think-cq95) Main registered T-153 (the n = 17 candidate proof), T-154 (Fitzharding's Lean proof), T-155 (the 59 exact regularized sides) and T-156 (s(290) by monotonicity) while this layer was open; the commit before this one renumbered the layer's four entries to T-157 to T-160, so the ids no longer collide. Main's records are authoritative and the layer's entries and adoptions go on top. Conflicts, by intent: - results.yaml: main's T-153..T-156, then the layer's T-157..T-160, then main's generated regularized_drawings block, rewritten by devtools.regularized_drawings. - evidence, source coverage, bibliography, archive README, request record: both sides' additions kept, main's first. verifiers.yaml: the upper_bound_reports summary in main's wrapping with the layer's Rio Calle adapter. Document map: both sets. result-import.md: main's wording of the intake-label rule (same meaning). - Case records 154, 175, 232 and 264: main's records (credit layer, regularization notes, T-155's exact ceiling at 264) re-adopted by main's devtools.adopt_houses, so the 12 October pass archive (house-adoption-prior-state-2026-10-12) now retains them as that pass read them and main's writer-replay test holds. Its coverage sections were rewritten from main's by the same run: each displaced house is a superseded row. - n = 264: T-155 had made its exact regularized side the verified upper bound; T-158 is 3.44e-03 below it. adopt_houses puts T-155's dated paragraph and section into the past (_regularized_certificate, and "As printed it is" in the ceiling section); register_regularized_bounds leaves a count a later house holds to adopt_houses (readopted) and holds its bound below the view; regularized_drawings does not ask the item's first_certified_in of such a count. Tests for each. - n = 154: the lineage paragraph the layer added by hand is the writer's now (a `lineage` field on Prose), so the record is the writer's output. - n = 102: main's writer owns adopted records, so the layer's hand-written T-159 priority note and section give way to the writer's "other certificates ... T-159 ... stay verified and are not selected"; the T-159 evidence stays on the roster. - Regularized layer: main's index; regularize_axis_components --update-atlas --n 154 175 232 264 (175's grid-slack view of T-140 lapsed with its witness; the four views are byte-identical to the layer's), render_regularized_atlas --update, default_drawings --update (91 views, 80 default), regularized_drawings. - Credit attributions: Guzhou0806's current sources from the layer, Overbeck's record from main. Tests: slow registry keeps main's comments and both sides' functions, the #528/#529 decide function added for its marked cases; test_result_status's comment both; the conjecture test plans 232 from its first pass, since T-158 re-adopted it. - Rollups: the later of the two rollups of each shared log; release.py main's pin until the re-pin. - Regenerated by their tools: custody (50 houses, 103 inputs, 32 mutations), rigidity at the four counts, case verifier tables, bound citations, RESULTS, INVENTORY, STATUS, VERIFIERS, the URL registry (with the layer's t-037 amendment), the synopsis document map and session-close rows; the synopsis counts 160 results, 128 by others. Markdown formatted with flowmark-rs 0.4.0. packing-validate --records passes (51 steps). Co-Authored-By: Claude Opus 5.5 <[email protected]> Claude-Session: https://claude.ai/code/session_01UXZs37jGv5vqVGADH7Gkn8
What this branch cost
This branch imports Oscar Fitzharding’s Lean 4 proof that Bidwell’s 1998 packing of 17
squares is optimal (#565), through stages 1 to 3 of the result-import runbook, and
records the announcement posts of the n = 11 and n = 17 results that the owner asked
for. Three sub-agent lanes did most of it: an adversarial review (0.6 h), the retention
of the source and posts (0.42 h, in parallel), and the register entries (1.28 h), with
this session’s triage, integration and merge of main around them.
Nothing was compiled and nothing was replayed: the proof’s 13,343 native checks and its
4,951-module build are reported by the source, not repeated here.
Claude branch-derived rollups
Turn counts are exact; everything else is bounded. 3 logs sit entirely on
claude/stoic-clarke-jhfnruand contribute exactly.1 straddle branches, and
ClaudeEfficiencyRollupcounts tokens and tool calls per lograther than per branch — so the first column drops them, the last charges this branch
for all of their work including what happened elsewhere, and the middle prorates them by
the share of their turns spent here.
The middle is an estimate, the outer two are measurements, and the record cannot do
better than this without a branch-aware token count.
Model use
claude-opus-5-5 @ xhigh<synthetic> @ NoneOver every log that touched this branch, including the other-branch work of the
straddling ones — the third column above, not the second.
Token columns are recorded per thinking level rather than per model, so a level that ran
more than one model is split by that level’s turn share; where each level ran one model
the split is the identity and the figures are the record’s own.
Every tool used
BashEditReadNotificationsReadGrepAgentWriteToolSearchTaskCreateTaskUpdatemcp__claude-code-remote__send_latermcp__github__pull_request_readMonitormcp__github__issue_readAskUserQuestionSubagentHandbackmcp__claude-code-remote__add_repomcp__claude-code-remote__subscribe_pr_activitymcp__claude-code-remote__unsubscribe_pr_activityTaskStopWebSearchSendMessagemcp__claude-code-remote__delete_triggermcp__claude-code-remote__get_sessionmcp__claude-code-remote__list_triggersmcp__github__get_release_by_tagSame scope as the model table: every log that touched this branch.
23 calls returned an error and 7 were denied. 109 of the calls ran code written for
a single measurement (0.2 h) —
OR-1says a measurement worth repeating belongs in atool rather than in a heredoc, so this is the number that says how often that rule was
not followed.
Generated from 4 Claude rollups, harness 2.1.296.
Generated by
devtools.render_pr_rollup --branch claude/stoic-clarke-jhfnrufrompacking/campaign/resource-usage/. Session-by-session figures are insession-close-report.yaml.New Results and Their Significance
VCSs(17) = 4.67553009360455…by a second route, a Lean 4 proof with no premise left (Fitzharding, #565)V0, claimed or recorded onlyC1, readS5, proposed for the owner’s confirmationV0C1S5Which came first. Overbeck’s candidate was public first: his repository at 13:46:05Z
and release
large-files-v1at 14:24:20Z on 12 October 2026, and his announcement postat 14:52:55Z. Fitzharding’s sq17-lean followed later that day: its first commit at
20:42:00Z, the repository public at 20:42:08Z, release v1.0.0 at 22:06:23Z, issue #565
at 22:23:37Z, and his post at 00:06:56Z on 13 October: the repository about six hours
after
large-files-v1, and release v1.0.0 about seven and three-quarter hours after it.His README and #565 name Overbeck’s candidate as independent and published on 12
October; the order rests on GitHub’s server-side times, not on the source’s words.
The two are separate proofs by different routes, not a proof and its formalization:
Overbeck’s is a candidate that, by its own statement, rests on 15 mathematical premises;
Fitzharding’s is, among the reports this record holds, the first of a complete
machine-checked proof, within its stated trust boundary (Lean’s kernel for the geometry,
Lean’s compiler and native evaluator for 13,343
native_decidefacts).So T-153 keeps the first report and n = 17’s reported lower bound, and T-154 registers
Fitzharding’s proof as a result of its own, the record’s kind for a second proof of a
value it holds. Both entries and n = 17’s priority notes state both dates.
For the owner: the kind. T-154 is registered as a
simplificationof T-153, byepistemics.md’s rule that a second proof of a value the record holds is one; the
alternative is a second
optimalityentry beside T-153. Review A (A1) found that thekind would have broken at T-154’s next rung, and the standing code now carries it
through its later rungs, but the choice is yours, as is the S5 score.
Results and Dispositions
s(17) = L, credited to Oscar Fitzharding (the owner’s definitive name), at V0/C1: the source’s clean-build receipt is its own run, so the evidence is reported and moves no rungpacking/frontier/results.yamlT-154;E-n017-fitzharding-lean-report;V-fitzharding-n17-leanEndpointGeometry.sideis the record’s L by identity of definition (the same F, G, box and side map as exp-237’s chart); the statement and the upper half are kernel-only; no certificate-acceptance or case-exclusion premise is left. F-1 (major, attribution): the proof runs on this project’s 24-cell cover, endpoint chart, 52-row local recipe and certified sub-patterns, some of them wand125’s, which the source does not credit specificallydocs/project/reviews/review-2026-10-13-fitzharding-n17-lean.mdmanifest.jsonand GitHub’s asset digests), the bibliography key[Fitzharding n17 Lean 2026]and Oscar Fitzharding’s person recordpacking/resources/web/fitzharding-n17-lean-2026-10-13/receipts/announcement/andacquisition/intakelabel; the reply draftedpacking/campaign/result-requests.yamld3cfe11dd…818324990; dispositions A and Breceipts/programs/andreceipts/{endpoint-comparison,cover-comparison,closures}.jsonin the packet;V-fitzharding-n17-premise-comparisonscheck_standingrefused itpacking/devtools/check_standing.py,render_recent_results.py, three test filesChanges by Purpose
packing/resources/,packing/atlas/known-best/credit-attributions.json,packing/devtools/overview_sections.pydocs/project/reviews/review-2026-10-13-fitzharding-n17-lean.md,docs/project/document-map.yamlpacking/frontier/{results,evidence,verifiers,source-coverage}.yaml,packing/frontier/n-017.md,packing/campaign/result-requests.yamlpacking/devtools/check_standing.py,packing/devtools/render_recent_results.py, testsreceipts/announcement/in the two n = 17 packets;acquisition/in the n = 11 packetpacking/campaign/resource-usage/Validation
Final merge gate at
bc0fab085: Packing validation(38467779877),
Certificate page
(38467779920), and the
full deferred checkpoint
(38472184064) all pass.
The checkpoint merge tree is identical to the reviewed head.
Fresh reviews
D (senior),
E
(correctness), and
F (security)
approve with no findings.
Review D ran 189 focused tests with no skips and reproduced the endpoint and cover
receipts. No source change was needed to clear CI: earlier failures were HTTP 502
responses from GitHub APIs.
Local, on the stage 3 head
a5ab76221:packing-validate --records(49 of 107 steps)and
--edit(65 of 107) exit 0;--pushexits 1 on 4 tests of 17,677, allenvironmental: the two process-group reaping tests (
test_fixed_core_packet*), whichfail at the base too, and two
test_site_column_measurement.pytests that need aChromium build this host lacks.
validate_schemas,check_results(154 results),check_standingandcheck_prose_ceremonypass; the standing tests pass (98).Local, after merging main at
9310284ba(review: verification gaps in the drawn packings and the upper-bound register #581, research: assess Evan Daniel's regularization and plan its adaptation to n = 1..324 (think-kl2v) #497; only the document map, itsSYNOPSIS block and the pin conflicted) and adding Overbeck’s post:
packing-validate --recordsexit 0 (49 of 107);acquire_source --checkprintsPACKET_MATCHES_ITS_CONTRACTfor both n = 17 packets;release_pin --checkpasses at9ca7270af.packing-validate --editon8c189d89a: exit 0, 65 of 107 steps.Local, at the fix head
818324990:packing-validate --recordsand--edit(65 of107) pass; pytest on the 12 touched or related test modules: 434 passed, 28 skipped
(Chromium build 1234 is not on this host);
check_standing --listprints the samestandings for all 154 results as at
8c189d89a. After merging main at7d51fdd85(vendor: Evan Daniel's regularizer at evand/square-packing@675a5ea, with credit and a pin check (think-csds) #509, no conflicts) in
bc0fab085:packing-validate --recordsexit 0 (50 of 108steps), the data pin and the document map current.
Hosted, at
818324990: Packing validation passed; four Certificate page jobs died atartifact join failed: gh: Server Error (HTTP 502)before any test ran, on attempt 1and the one re-run, during a GitHub API outage
(comment);
bc0fab085passes both workflows on attempt 3.Hosted, at
8c189d89a, first attempt: 31 pass, 26 skipping (the deferred, exhaustiveand deploy lanes), 0 failing.
Runs: Deferred checkpoint 38457513674 (skipped), Certificate page 38457513653
(success), Packing validation 38457514478 (success), Branch mergeability 38457313837
(success).
Documentation and Replanning
note say what was retained and what was not; the review is stored as written.
the owner’s word (think-mxhc); then the statement and endpoint closure build here
(think-s7s4), the cheapest check that decides something.
archives (think-c1kz); Overbeck’s September n = 17 posts (think-7b2i).
docs/project/policies/regularization-policy.mdon main says register: exact regularized sides at 59 counts as T-155, and draw the 16 counts they admit with 4 grid-slack replacements #549will register its batch as
T-154. An id is its row’s position and cannot be reservedacross branches (result-import.md, Stage 3), so whichever merges first takes it; this
branch now changes that line to “the next free result id” (A11), and register: s(290) by monotonicity from T-155, with its grid-slack view as its own exact certificate (T-156) #587, stacked on
register: exact regularized sides at 59 counts as T-155, and draw the 16 counts they admit with 4 grid-slack replacements #549, which builds on that id, moves with it.
“Mannaseh” to “Manasseh” at the owner’s word.
This PR uses the record’s current spelling in its own voice and drops the clause that
called the source’s spelling a misspelling (A3); whichever merges second takes the
other’s spelling.
Limits
Nothing here built the proof.
The 13,343 native checks, the checker-soundness modules the review did not read (about
140) and two of the three certificate archives were not examined, so T-154 records a
reported proof with a read, not a confirmation, and the verified lanes of n = 17 do not
move. The significance S5 is proposed, not confirmed.
A failed replay, or a defect in the native checks or the unread soundness proofs, would
make T-154 incomplete.
🤖 Generated with Claude Code
https://claude.ai/code/session_012JUyoHafZq55vksGxE4vPP