Skip to content

intake(think-4l14, think-6gti): T-245, Jatloe's Lean proof that s(12) = 4 (#810), and T-246, Daniel's s(29) minimal polynomial (#545, #811) - #812

Merged
jlevy merged 33 commits into
mainfrom
claude/friendly-einstein-gf9z0h
Oct 25, 2026
Merged

jlevy merged 33 commits into
mainfrom
claude/friendly-einstein-gf9z0h

Conversation

@jlevy

@jlevy jlevy commented Oct 25, 2026 •

Copy link
Copy Markdown
Owner

What this branch cost

This branch imports two results and registers each as reported (V0/C0). The first is Jatloe's Lean proof that s(12) = 4 (T-245, #810). The second is Evan Daniel's degree-7213 minimal polynomial of the s(29) record side (T-246, #545 and #811). It also adds a statement audit of the n = 12 theorem with a maintained tool behind it. devtools.render_pr_rollup finds no rollup for the branch. The coordinator's wall ran from 05:21 to about 07:25 UTC on 25 October. Five sub-agents worked inside it, some in parallel: records 88 minutes, statement audit 26, s(29) 83, integration 98, and an assessment of the old polynomial stack 17. Their walls overlap and are not summed. Nothing was replayed or built: the n = 12 rebuild (about 28 CPU-hours by the source's receipts) and the s(29) replay (about 2.5 CPU-hours) wait for an owner budget.

New Results and Their Significance

Result Kind Rungs Significance (draft) Why
T-245: Jatloe reports a Lean proof that the 4 × 3 grid is optimal, s(12) = 4 optimality V0/C0 S5 Scored as a claim, as T-060, T-153 and T-194 were. n = 12 is one of the five open cases below 21, and this is the first optimality claim the record holds there. If it stands, it closes the 0.0285 gap above the verified 7943/2000 (T-095).
T-246: Evan Daniel's degree-7213 minimal polynomial of the s(29) record side exact-side (new kind, below) V0/C0 S3 Draft above the S2 precedent (T-120 to T-123). It is the exact side of an open case that the record held only as decimals and rationals. Its degree is an order of magnitude beyond any other the record states (672 at n = 83). It moves no bound, so it is not S4.

This PR carries the S5 label for T-245. Significance is separate from correctness, and the stage 4 review confirms or changes both scores.

Results and Dispositions

Work or result What was established Evidence Why it stopped Disposition and follow-up
T-245, n = 12 Lean proof (announcement, repository reply) Retained at d0caf45 in jatloe-n12-lean-2026-10-16: the statement closure, the assembly, the run evidence and the mathematics. The release assets are pinned by digest. Registered as reported. n-012's reported lane takes 4; its verified lanes stay at 7943/2000 and 4 Packet README; E-n012-jatloe-lean-report Stage 3 reached; the mathematical review and the full build remain continue: math review under think-4l14; build under think-dd3v (gated on an owner budget); licence under think-c9ec
n = 12 statement audit The theorem states the unrestricted problem, with no premise. The trust base is the kernel, three standard axioms and 1,624 native_decide axioms. Findings M-1: the compiler is trusted, so every description says "kernel and compiler". M-2: the accepting run compiled 0 modules and the upstream repository is private. Also m-1, m-2 and N-1 to N-3 docs/project/reviews/review-2026-10-25-n12-lean-formalization-statement-audit.md; devtools.audit_n12_lean and its receipt Complete; nothing blocks registration retire-success; T-245 cites it as an AI adversarial review
T-246, s(29) minimal polynomial (thread) Registered under a new kind, exact-side. The polynomial is pinned by digest in evand-exact-data-2026-10-12, and the announcement post is retained. n-029's lanes are unchanged (T-195's rational house), and its prose gives the degree and the asset E-n029-evand-minpoly-7213-report Stage 3 reached; the replay needs an owner budget continue: review under think-6gti; replay under think-10m1; #811 reply under think-jmb4
Polynomial PR stack #403 → #435 Out of date: 39 and 59 conflicts with main, and its register tooling no longer runs on main's adoption code Assessment in think-vt31 Owner decision, 25 October defer-dependency: a fresh exact-side PR (think-vgsw) after this one lands

Changes by Purpose

Area Result Principal files or interfaces
Packets n = 12 source retained; s(29) announcement retained packing/resources/web/jatloe-n12-lean-2026-10-16/, packing/resources/web/evand-exact-data-2026-10-12/
Records T-245, T-246, evidence, coverage, requests entries for #810 and #811, watched-repository reads, contributor profiles packing/frontier/{results,evidence,source-coverage}.yaml, n-012.md, n-029.md, packing/campaign/{result-requests,intake-watch}.yaml, packing/contributors/
Taxonomy New result kind exact-side results.schema.yaml, epistemics.md, devtools/check_results.py
Audit tool devtools.audit_n12_lean reads the closure by Git blob and runs nothing from the source packing/devtools/audit_n12_lean.py, tests/test_audit_n12_lean.py, receipts/statement-audit.json
Site and tests Project card for the n = 12 repository; curated atlas credit; worked examples moved off n = 12; reported-lane split 88/236 site_resources.py, credit-attributions.json, tests/test_site_frontier_table.py, tests/test_validation_cli.py
Release Explainer v0.4.30 counts 246 results (main's #813 took v0.4.29 and the 25-page count); the other papers have measured no-change records; DATA_REVISION re-pinned packing/src/sqpack/release.py

Validation

  • Local, at 15caac7a (after merging main 01e2b529, records(#804): Hyukdong Kim's exact sides at 172 and 263 as T-244; 88, 126 and 199 are T-193's #813): packing-validate --records passed 53 of 53 steps; the id gap is closed. packing-validate --edit --jobs 2 --inner-jobs 1 passed 69 of 69. pytest on 22 affected modules: 1,811 passed. The one failure was test_overview::test_each_sections_size_is_what_its_typical_card_asks_for, fixed in d0d72d41; after the fix, test_overview and test_overview_sections pass (476 tests). check_release_impact --baseline-ref origin/main and release_pin --check pass.
  • Hosted: at afc95abd every job passed except the id-gap checks, including pdf at 25 pages and pages-required. CI on 15caac7a is pending. v0.4.30 adds one history entry, which could push the hosted PDF to 26 pages; the local draw stays at 25.

Merge order

main merged #814 (T-243) and then #813 (T-244, explainer v0.4.29, page count 25) while this PR was open. This PR's results were therefore renumbered to T-245 (n = 12) and T-246 (s(29)), and its explainer record moved to v0.4.30. Comments on this PR before 09:35Z use the old ids, T-243 and T-244.

Documentation and Replanning

Announcement

25 October 2026: 2 new results
Jatloe reports a Lean proof that the 4 × 3 grid is optimal, s(12) = 4 (reported): Jatloe, Benjamin Gurevitch, Lewis and @ManassehA06 https://squaremath.org/results.html#t-245
Reported degree-7213 minimal polynomial of the s(29) record side (reported): Evan Daniel https://squaremath.org/results.html#t-246

It is 300 characters, so it posts as a thread of one line per post. Handles for Jatloe, Lewis and Daniel are missing because render_announcement reads profiles from packing/contributors/*.md, while they live in contributors/people/ (owner decision below).

News

T-245 at S5 owes a News item, which lands in the first change after the merge. The draft is jatloe-n12-reported-proof, "Jatloe Reports a Lean Proof for 12 Squares". It states V0/C0, the compiler trust and the unreplayed build. T-246 at S3 owes none.

Decisions for the Owner

  • The exact-side result kind. None of the twelve kinds fits an exact side value with no bound claimed, because the source does not check non-overlap at σ. Approve it, or T-246 falls back to an evidence entry and a case-page paragraph.
  • n = 12's reported lane. This PR follows T-060 and T-153: the reported lane takes the claim. T-194 at n = 19 instead left the case page for the owner. Reverting means three small edits and the 88/236 split.
  • Budgets. The n = 12 full build is about 28 CPU-hours (17 to 40), and its peak memory is unknown. The s(29) replay is about 2.5 CPU-hours.
  • Announcement handles. The one-line path fix in render_announcement changes every announcement.
  • The project card for Jatloe12SquaresFormalized. With records(#804): Hyukdong Kim's exact sides at 172 and 263 as T-244; 88, 126 and 199 are T-193's #813's card and this one, the median card in the Resources projects section reached the size threshold for a "large" section. To keep the section "medium", this card's note was shortened to "A Lean 4 proof of s(12) = 4, trusting Lean's compiler for its certificates." The median is now 158 against a threshold of 160, so the next long card will reach it again. The alternative is to declare the section large.
  • Gurevitch's identity, and the n-12 label colour. "Ben" against the profile's "Benjamin" is unresolved. The label should be 7E3D1D.

Limits

Neither result is verified. T-245 rests on the source's own audit of a run that compiled nothing fresh. It trusts Lean's compiler, and its upstream repository is private. T-246 does not decide the packing at σ, and two of its checks are Monte Carlo. Nothing here was rebuilt or replayed.

🤖 Generated with Claude Code

https://claude.ai/code/session_01S2rbZ7xerQ4fKxNFFjVYwR

Retain Queuingtheorydotcom/Jatloe12SquaresFormalized at d0caf45, the
commit the tag n12-verified-2026-10-16 names (16 October 2026), for
#810 (think-4l14): Jatloe's Lean 4 proof
N12Compact.Final.optimality : S12.packingConstant12 = 4, formalized
with Ben Gurevitch and Lewis (CTJLewis) and published by Manasseh Ahmed.

- jatloe-n12-lean-2026-10-16: 423 of the 426 declared files retained
  byte for byte: the root files, the two workflow files, the accepted
  run's evidence (axiom audit, final report, source manifest), the
  build pins and toolchain lock, the 109-module closure of
  S12.PackingConstant (every definition the statement uses, and the
  grid), Compact/Assembly/ and the written mathematics. The scheduler
  and the checkpoint checker are pinned by digest; the rest of the
  tree by the commit, and the release's two archives by size and
  SHA-256 (the evidence archive's digest checked on download).
- No licence anywhere in the tree: retained on the owner's 9 October
  decision recorded on think-gtmb; the follow-up is think-c9ec.
- receipts/: devtools.lean_closure over Compact.Assembly.Final (5,377
  modules, none missing, no sorry or axiom declaration, 2,572 uses of
  native_decide) and over S12.PackingConstant; both X posts as the
  syndication endpoint returned them.
- The README states the theorem and its definitions exactly, what the
  source's run did and did not do (it reused every compiled object),
  and a build plan priced from the source's own per-module receipts:
  16.6 serial wall-hours, 17 to 39 CPU-hours. Nothing was built here.

Add the bibliography key [Jatloe n12 Lean 2026-10-16] and its
archive-index row.

Co-Authored-By: Claude Opus 5.5 <[email protected]>
Claude-Session: https://claude.ai/code/session_01S2rbZ7xerQ4fKxNFFjVYwR
Stage 4 statement audit of Queuingtheorydotcom/Jatloe12SquaresFormalized at
d0caf45 (tag n12-verified-2026-10-16), bead think-4l14, issue #810. Read line
by line, N12Compact.Final.optimality : S12.packingConstant12 = 4 states the
unrestricted problem as an infimum the 4-by-3 grid attains, with no premise.
The trust base is the kernel, three standard axioms and 1,624 native_decide
axioms that map one to one onto the calls of 1,525 declarations. Two major
findings (compiler trust; no inspectable build) bind the wording; none blocks
registering the formalization as the source's report.

Co-Authored-By: Claude Opus 5.5 <[email protected]>
Claude-Session: https://claude.ai/code/session_01S2rbZ7xerQ4fKxNFFjVYwR
@jlevy jlevy added the intake Tracking intake (saving, validation, tabulation, credits) of new results label Oct 25, 2026
@jlevy

jlevy commented Oct 25, 2026

Copy link
Copy Markdown
Owner Author

suite-a fails at 4d4a1aae on one test, and the failure belongs to this PR: tests/test_contributor_occurrences.py::test_census_retains_prerequisite_roles_and_pending_pdf_scope finds 8 unreviewed contributor occurrences. The n = 12 packet commit added new credit names (Jatloe, Gurevitch, CTJLewis, Ahmed) without recording their dispositions in the occurrence registry. The fix comes with the n = 12 records commit, which is still being written. The wall-clock ceiling warnings in the same log are advisory on pull requests (think-ht59).


Generated by Claude Code

…(stage 3)

Register the Lean proof retained in the previous commit as reported, for
#810 (think-4l14):

- T-243, kind optimality, V0/C0: N12Compact.Final.optimality :
  S12.packingConstant12 = 4, Jatloe's proof formalized with Ben Gurevitch
  and Lewis and published by Manasseh Ahmed, credited "Jatloe, Gurevitch,
  Lewis, Ahmed"; draft S5, scored as a claim as T-060, T-153 and T-194
  were. Its evidence E-n012-jatloe-lean-report, with the source's axiom
  audit as its axioms receipt, and a coverage entry. No source-build
  entry: the accepting run reused every compiled object, in a repository
  that is not public, and no audit has read its receipts.
- Unfinished confirmations: the stage 4 statement audit and mathematical
  review (C1, think-4l14, the audit under way as its activity) and a
  complete build of the 5,377-module closure (C3, think-dd3v), priced
  from the source's per-module receipts at about 28 CPU-hours, 17 to 40,
  within the owner's 40 CPU-hour item cap at its high reading and gated
  on a machine whose memory is known.
- n-012.md: the reported lower lane takes the claim (4, unavoidable
  points) and the reported status reads proved, as n-011's took T-060's
  and n-017's T-153's; the verified lanes (7943/2000 and 4) and the
  status stay open. An intake paragraph, a priority note and the
  resource; the verification-code block is unchanged.
- result-requests.yaml: #810's entry, mapped to T-243, no replies yet.
- sqpack.cli.validate: the frontier corpus tripwire's reported-open
  counts fall by one in every corpus, as T-153's did at n = 17.
- intake-watch.yaml: a read of the repository through d0caf45, its
  head and the pin.
- Contributors: a profile for Jatloe with the X handle jatloe; n12
  sources on Lewis's and Ahmed's profiles; the occurrence joins of the
  new bibliography and case-record credits, Gurevitch's left unresolved
  since "Ben Gurevitch" is not evidenced as the profile's Benjamin
  Gurevitch.

Views rendered: RESULTS.md, INVENTORY.md, STATUS.md, VERIFIERS.md, the
synopsis headline, row and count, the research report's tables, the URL
registry, the T-007 consumer audit.

Co-Authored-By: Claude Opus 5.5 <[email protected]>
Claude-Session: https://claude.ai/code/session_01S2rbZ7xerQ4fKxNFFjVYwR
…a packet (stage 2)

The owner asked on 25 October that Evan Daniel's s(29) minimal polynomial
be captured as a result and his announcement linked (#811). Retain the
thread's first post, as X's syndication endpoint returned it on 25
October (receipts/announcement/tweet-2110154454817448106.json in the
evand-exact-data-2026-10-12 packet): @evanbd, display name Evan Daniel,
2026-10-13T23:43:21Z, "I wish to present my new favorite square packing
problem: 29 squares. [...] But rather for the side length, which is
truly cursed." The follow-ups have no ids here and are not retained; the
packet README quotes them as transcribed for the owner and says so.

Evan Daniel's profile gains his X account, evidenced by the retained
post, and a sentence on the s(29) polynomial; the bibliography note of
[Daniel exact and local reports 2026-10-12] quotes the post.

Co-Authored-By: Claude Opus 5.5 <[email protected]>
Claude-Session: https://claude.ai/code/session_01S2rbZ7xerQ4fKxNFFjVYwR
…s' no-change record

check_release_impact names the four papers whose inputs this branch changes. The
explainer counts registered results, 242 to 243, so it takes v0.4.28. The optimality
review, the threshold-bound review and the methods survey render all 51 files
byte-identical twice from this tree and once with main's five changed inputs swapped
in and the new profile removed, at link revision bb756e1, so they keep v0.1.11,
v0.1.4 and v0.2.7.

Co-Authored-By: Claude Opus 5.5 <[email protected]>
Claude-Session: https://claude.ai/code/session_01S2rbZ7xerQ4fKxNFFjVYwR
…l, as a new kind, exact side (stage 3)

TAXONOMY CHANGE FOR THE OWNER TO APPROVE. This commit adds a thirteenth
result kind, `exact-side`: "the exact algebraic value of the side of one
stated configuration, with no bound and no optimality claimed". None of
the twelve fits Daniel's claim: an upper bound needs evidence that the
packing is valid at the stated side, and the source does not check
non-overlap at sigma; each of the other kinds asserts something the
source does not claim. The kind is a structural kind, like rigidity: its
cited evidence claims `derived-structure` and its headline states no
relation on s(n). Once the packing is decided at the side, the first
kind rule makes such a result an upper bound. Touched: the schema enum
and description (results.schema.yaml), epistemics.md's Result Kinds
table, a sixth kind rule and the structural-kinds sentence,
devtools.check_results (KINDS, STRUCTURE_KINDS, "an exact side" in one
refusal), and the site topic vocabulary that follows KINDS: the
changelog schema's topic enum and the two topic rows that rung_scale
generates in paper-design.md. Tests: a synthetic exact-side record in
test_results_register.py (accepted with derived-structure evidence,
refused with upper-bound evidence or a relation in its headline), two
live refusals (T-244 as an upper bound, T-009 and T-004 as exact
sides), and test_recent_results's no-standing kinds. The house-writer
replay test projects out what T-244 adds to the adopted n = 29 record:
its citation, resource and dated paragraph (LATER_PENDING_REPORTS, whose
note now admits a registration with no bound) and its rewrite of the
analytic characterization (LATER_HISTORY_REWRITES, new);
adopt_houses --check is unchanged and passes.

The registration, V0/C0, draft S3:

- T-244: Evan Daniel reports that the side sigma =
  5.93383346267692918968946061635201913843383418107... of the best known
  packing of 29 squares (Schadt's, as Ellsworth improved it; certified
  by T-155 and T-195) is a root of an irreducible integer polynomial of
  degree 7213, with a 325-digit leading coefficient and coefficients of
  up to 5,074 digits (evand/square-packing 169a827, N29.md; the release
  exact-data-2026-10-12; the announcement thread on X of 13 October).
  It states no bound. Its evidence, E-n029-evand-minpoly-7213-report
  (derived-structure, reported), has the packet's release.json, which
  pins s29-minpoly.tar.zst by digest, as its certificate. Unfinished:
  C1, the stage 4 review of N29.md (think-6gti); C3, the source's
  five-step replay, about 2.5 CPU-hours, waiting on an owner budget
  (think-10m1, new).
- Significance S3, drafted above the S2 of T-120 to T-123: the exact
  value of a record side the record held only as decimals and
  rationals, of degree 7213, an order of magnitude above the largest
  degree the record otherwise states (672 at 83), by a full homotopy
  solve. No bound, so not S4. For the reviewing lane to confirm.

The case's lanes are unchanged: both hold T-195's rational certificate,
of degree 1, which adopt_houses writes, so the reported lane cannot
carry degree 7213; n-029.md's analytic characterization now gives the
degree, the release and the pinned asset in place of "no minimal
polynomial anywhere", with a dated pointer at the top, and cites the
new evidence and the source key. T-195's exact side agrees with sigma
to the 68 places N29.md prints and lies inside the Krawczyk enclosure;
which is larger is not decided here.

source-coverage.yaml: the evand-exact-and-local-reports-2026-10-12
entry takes n = 29, the new evidence and its represented_by, and its
note no longer says the s(29) report has no evidence entry.
result-requests.yaml: #545's s29 result maps to T-244 and its evidence
(think-10m1 joins its beads); #811, the owner's tracker opened today, is
entered (intake, a queued ask and answer bead think-jmb4, new).

T-243 is reserved for the n = 12 registration on the coordinator's
branch, so on this branch alone check_results fails only the id
contiguity rule; with T-244 renumbered in a scratch copy it passes.

Views rendered: RESULTS.md, INVENTORY.md, VERIFIERS.md (STATUS.md checked current), the
synopsis headline, row and count, and the URL registry.

Co-Authored-By: Claude Opus 5.5 <[email protected]>
Claude-Session: https://claude.ai/code/session_01S2rbZ7xerQ4fKxNFFjVYwR
@jlevy

jlevy commented Oct 25, 2026

Copy link
Copy Markdown
Owner Author

merges-into-base fails at 1f6a8d18 because main merged #808 (886dddce) after this branch was cut. There are two append conflicts:

The merge commit is being prepared and goes up with the next push.


Generated by Claude Code

Resolve result-requests.yaml by keeping #799's entry and #810's, in issue
order, and release.py by keeping W8's no-change record and the #810 one as
separate entries.

Co-Authored-By: Claude Opus 5.5 <[email protected]>
Claude-Session: https://claude.ai/code/session_01S2rbZ7xerQ4fKxNFFjVYwR
@jlevy

jlevy commented Oct 25, 2026

Copy link
Copy Markdown
Owner Author

suite-d fails at 1b4ba62a, and the failure belongs to this PR. tests/test_validation_cli.py::test_frontier_contract_accepts_the_declared_schema_metadata pins the reported-lane split at REPORTED_LANE_SPLIT (87 proved, 237 open for n = 1..324). T-243 moves n = 12's reported status to proved, so every pinned split shifts by one. The test update comes in the next push, with the T-244 merge.


Generated by Claude Code

…o the #810 import

T-244, Evan Daniel's reported degree-7213 minimal polynomial of the s(29)
record side, registered as the new kind exact side, joins T-243 on this
branch, so the id contiguity rule the T-244 branch failed alone now holds.

Conflicts, resolved:

- packing/frontier/results.yaml: both registrations kept, T-243 then T-244.
- packing/campaign/result-requests.yaml: both entries kept, #799 and #810
  from this branch, then #811; #545's mapping of its s29 result to T-244
  and the think-10m1 bead merged cleanly.
- packing/frontier/RESULTS.md, packing/site-urls.yaml and
  docs/project/site-urls.md: taken from this branch and regenerated with
  render_results --update and site_urls --write; INVENTORY.md and
  VERIFIERS.md regenerated with render_evidence_inventory and
  render_verifiers; the synopsis headline was already current.
- SYNOPSIS.md: the research-status row reads 244 registered, 212 by
  others, the figures check_synopsis derives.

Co-Authored-By: Claude Opus 5.5 <[email protected]>
Claude-Session: https://claude.ai/code/session_01S2rbZ7xerQ4fKxNFFjVYwR
@jlevy

jlevy commented Oct 25, 2026

Copy link
Copy Markdown
Owner Author

frontend fails at 1b4ba62a for the same reason as suite-d, and it also belongs to this PR. tests/test_site_frontier_table.py uses n = 12's row as its worked example. T-243 changes that row: the reported lower bound becomes 4 and the reported status becomes proved. The fraction example (= 3.9715 and = 0.0285) and the tall-row check on n = 12's Status cell no longer describe it. The examples are being moved so that each test still checks what it was written to check. That change comes with the next push.


Generated by Claude Code

T-243 made n = 12's reported status proved, so the frontier corpus prints
88 proved and 236 open in its reported lane at n = 1..324, as packing-validate
--only "frontier corpus" printed here; the n = 1..100 and n = 1..200 splits
follow sqpack.cli.validate's FRONTIER_COUNTS, 52 and 132 reported-open. The
comment above the assertion names the later closures.

Co-Authored-By: Claude Opus 5.5 <[email protected]>
Claude-Session: https://claude.ai/code/session_01S2rbZ7xerQ4fKxNFFjVYwR
@jlevy

jlevy commented Oct 25, 2026

Copy link
Copy Markdown
Owner Author

suite-b at 1b4ba62a adds four more failures from the same change at n = 12. All belong to this PR:

  • test_frontier_page: the decimal example at n = 12 expects 3.9715.
  • test_evand_square_packing::test_the_n12_bounds_are_daniels_points_rescaled: it reads n = 12's reported lane, which now holds T-243 rather than Evan Daniel's rescaled points.
  • test_overview, two tests: the new source repository Queuingtheorydotcom/Jatloe12SquaresFormalized has no card in the site's list of other projects.

The fixes for all three CI failures (suite-b, suite-d and frontend) come in one push, after the affected test modules pass locally.


Generated by Claude Code

@jlevy

jlevy commented Oct 25, 2026

Copy link
Copy Markdown
Owner Author

suite-c at 1b4ba62a: test_known_best_atlas::test_curated_print_credits_match_current_case_and_citation_associations reports that the atlas's curated credits for n = 12's reported lower lane are stale. It is the same n = 12 change, belongs to this PR, and is fixed in the same push as the others.


Generated by Claude Code

claude added 11 commits October 25, 2026 07:40
T-243 made n = 12 reported-proved at 4, so four tests that used its row as
a worked example read it as it now stands, each keeping what it proves:

- test_site_frontier_table, centring: n = 12's Status holds two lanes,
  102 px that fill its 124.6 px row, so the tall row is n = 70's (97.7 px
  from its reported fraction, a one-chip Status of n = 1's height); the
  check now also holds the two Status cells to the same content height.
- test_site_frontier_table, decimals: n = 12's reported cell holds a whole
  4 and no decimal, its verified cell 7943/2000 with = 3.9715, the gap
  = 0.0285; n = 88's reported 481/50 (= 9.62) is the reported column's
  terminating example. The docstring and CASES comment record T-243.
- test_frontier_page: the = 3.9715 decimal is n = 12's verified bound's,
  and its reported 4 carries none.
- test_evand_square_packing: Daniel's rescaled points are n = 12's
  verified bound, whose two evidence entries cite squarepacker's v1.1; the
  reported bound is T-243's 4 from Jatloe's Lean report.

Run here with the pinned Chromium build this host has (SQPACK_CHROMIUM,
SQPACK_REQUIRE_CHROMIUM=1): the three modules and the seventeen others
that pin n = 12, n = 29 or the project cards, 1387 passed.

Co-Authored-By: Claude Opus 5.5 <[email protected]>
Claude-Session: https://claude.ai/code/session_01S2rbZ7xerQ4fKxNFFjVYwR
…rview's project cards

- credit-attributions.json: n = 12's reported lower credit names Jatloe,
  Gurevitch, Lewis and Ahmed, [Jatloe n12 Lean 2026-10-16] and
  E-n012-jatloe-lean-report, as the case record does, which is what
  test_curated_print_credits_match_current_case_and_citation_associations
  holds it to; its verified citation stays T-095's.
- site_resources.OTHER_PROJECTS: a card for
  Queuingtheorydotcom/Jatloe12SquaresFormalized, the source repository the
  coverage register reviews (jatloe-n12-lean-2026-10-16), credited as the
  record credits it, beside the n = 11 formalization's card. T-244's
  sources are evand/square-packing's, which already has one.

Co-Authored-By: Claude Opus 5.5 <[email protected]>
Claude-Session: https://claude.ai/code/session_01S2rbZ7xerQ4fKxNFFjVYwR
…nge record measured at 9b8b004

check_release_impact names the four papers whose inputs this branch
changes against main 886dddc. The explainer counts registered results,
242 on main and 244 here, so its proposed v0.4.28, not yet published,
now names both registrations, as v0.4.24 named five. A second cut,
v0.4.29 over v0.4.28, was tried first and refused: a pull request is
held to one owning decision from main's v0.4.27 to its head version.

The optimality review, the threshold-bound review and the methods survey
render all 51 files byte-identical twice from this tree and once with
main's nine candidate inputs swapped in and jatloe.md removed, at link
revision 9b8b004, so they keep v0.1.11, v0.1.4 and v0.2.7; the record's
paths take the four inputs the T-244 merge and the overview card add.

Co-Authored-By: Claude Opus 5.5 <[email protected]>
Claude-Session: https://claude.ai/code/session_01S2rbZ7xerQ4fKxNFFjVYwR
…nto the #810 import

The stage 4 statement audit of Jatloe12SquaresFormalized at d0caf45
(think-4l14), written by w-n12-audit-1025 in its own worktree. No
conflicts: the branch adds the review alone. Its follow-ups (the document
map, a maintained tool for its counts, the register's citation) follow.

Co-Authored-By: Claude Opus 5.5 <[email protected]>
Claude-Session: https://claude.ai/code/session_01S2rbZ7xerQ4fKxNFFjVYwR
docs/project/document-map.yaml maps
review-2026-10-25-n12-lean-formalization-statement-audit.md as a retained
review record, beside the other reviews of 25 October, and
render_document_map renders SYNOPSIS's copy of the map.

Co-Authored-By: Claude Opus 5.5 <[email protected]>
Claude-Session: https://claude.ai/code/session_01S2rbZ7xerQ4fKxNFFjVYwR
…'s counts as a maintained tool

The statement audit counted with programs in its scratch space (a token
scan, an instance classifier, a shadowing search, the mapping of native
axioms to their owners and a manifest comparison), and OR-1 asks for a
kept tool before an entry cites them. devtools.audit_n12_lean does all
five, reusing devtools.audit_n11_lean's TOKENS and strip_code:

- scan CHECKOUT reads every module of the packet's closure receipt by the
  Git blob it names, from the checkout's object database (each path's
  blob checked at the receipt's commit; no working tree, nothing run),
  and writes receipts/statement-audit.json (257 lines, 40 KB): token,
  set_option and instance censuses over the whole closure and over the
  statement closure of S12.PackingConstant; every declaration of the
  statement's names; each native_decide axiom of the source's log matched
  to the calls of its owner, with the off-path calls by module; and every
  module against the run manifest's SHA-256, the log and the manifest
  against SOURCE-PROVENANCE.json's digests.
- check recomputes the statement closure's part and the run evidence from
  the packet's retained bytes and compares.

Run against the clone of Jatloe12SquaresFormalized at d0caf45, read as
data: 5,377 modules, 2,572 native_decide calls in 2,274 declarations;
1,624 native axioms owned by 1,525 declarations, each owner's axioms
equal to its calls; 948 calls in 749 declarations off the path; the
statement closure 109 modules, 1,138,482 bytes, 723 calls; no manifest
mismatch; the log equal to the native audit. Every figure the review
cites reproduces, except the review's "eight comments" naming the word
axiom, which is six in the closure; the review now says six, cites the
tool and the receipt in place of the scratch programs, and adds the one
@[irreducible] and the one OfNat the census finds. The packet README
describes the receipt. The packet already retained the closure receipts,
verification/run-38849916588/ and SOURCE-PROVENANCE.json, so nothing else
was added.

Tests (tests/test_audit_n12_lean.py) run the tool on a synthetic project
in a scratch Git repository and hold the retained receipt to the packet
and to the review. integrity-ceremony.yaml allowlists the tool's one
digest comparison as an external-checkout boundary: another repository's
bytes against its own run manifest.

Co-Authored-By: Claude Opus 5.5 <[email protected]>
Claude-Session: https://claude.ai/code/session_01S2rbZ7xerQ4fKxNFFjVYwR
- T-243: a reviews entry for the statement audit of 25 October (kind
  adversarial, reviewer_kind ai, relation project, verdict accepted,
  covers T-243), its scope in the review's words with its findings M-1,
  M-2, m-1, m-2 and N-1 to N-3; a composition paragraph on what it read
  and what binds the record (kernel and compiler, M-1; no build anyone
  can inspect, the accepting run compiling nothing on objects from a run
  that failed, M-2); the claim says the statement was audited and the
  proof not reviewed. The in-analysis activity for the audit is removed,
  since the work landed; next_rung and the C1 unfinished confirmation
  name the mathematical review alone. Rungs unchanged at V0/C0: a reading
  of the statement is no read of the proof, and the review adds nothing
  to V4's count while V3 is absent. Artifacts take the review, the
  receipt and the tool.
- E-n012-jatloe-lean-report: proof.audit_record names the review;
  verifiers names V-audit-n12-lean, registered in verifiers.yaml as the
  n17 source-manifest checker was; the third assumption says the 5,377
  modules read are the manifest's bytes, and the limitations what the
  audit read.
- n-012.md: the lane note, the priority note and the intake paragraph say
  the statement was audited and the proof not yet reviewed.
- Views: RESULTS.md, INVENTORY.md and VERIFIERS.md rendered; site-urls
  rewritten with t-243's identity re-derived, its row not yet on main.

Co-Authored-By: Claude Opus 5.5 <[email protected]>
Claude-Session: https://claude.ai/code/session_01S2rbZ7xerQ4fKxNFFjVYwR
check_no_embedded_js read `fun a b : Nat => a < b` in a test string as a
JavaScript arrow function; the Lean is written with ↦, which Lean
accepts and the guard does not match.

Co-Authored-By: Claude Opus 5.5 <[email protected]>
Claude-Session: https://claude.ai/code/session_01S2rbZ7xerQ4fKxNFFjVYwR
@jlevy jlevy changed the title intake(think-4l14, think-6gti): Jatloe's Lean proof that s(12) = 4 (#810) and Daniel's s(29) minimal polynomial (#545, #811) intake(think-4l14, think-6gti): T-243, Jatloe's Lean proof that s(12) = 4 (#810), and T-244, Daniel's s(29) minimal polynomial (#545, #811) Oct 25, 2026
@jlevy jlevy added S5 Landmark mathematical advance or major resolution n-12 labels Oct 25, 2026
@jlevy

jlevy commented Oct 25, 2026

Copy link
Copy Markdown
Owner Author

merges-into-base fails at b2148e69 because main merged #814 (46e35558). That PR registered T-243 (the upper bound at n = 182, #806) and took explainer v0.4.28, so the two branches collide on both. This branch's results are being renumbered to the next free ids, expected T-244 for n = 12 and T-245 for s(29). Main's T-243 is kept unchanged, and the explainer record moves to v0.4.29. The merge, renumbering, re-render and re-pin come in one push, and the description will be updated with the final ids.


Generated by Claude Code

…results become T-245 and T-246

Main registered T-243, Evan Daniel's certificate at 182 (#806), and open PR #813
holds T-244 for Hyukdong Kim's exact sides at 172 and 263 (#804). No open branch goes
past T-244, so this branch's two results take the next free ids: Jatloe's reported Lean
proof that s(12) = 4 (#810, think-4l14) is T-245, and Daniel's degree-7213 s(29) minimal
polynomial (#545, #811, think-6gti) is T-246. Main's T-243 is kept exactly.

Every file this branch changed was merged three ways from its own version with T-244 to
T-246 and T-243 to T-245 (and t-243/t-244 to t-245/t-246) applied first, the merge base,
which names neither id, and main, so no reference to main's T-243 was rewritten. Conflicts
were resolved by keeping both sides' entries whole: #806's request entry before #810's
and #811's; main's n182 occurrences, evidence atoms, coverage source and bibliography
key before this branch's; main's evand/square-packing watch read before the
Jatloe12SquaresFormalized one; main's result/t-243.html row before t-245 and t-246; and
in results.yaml, T-243 before T-245 and T-246. In release.py the explainer takes v0.4.29
over main's v0.4.28, main's v0.4.28 entry and decision kept; main's no-change record is
kept whole beside this branch's; DATA_REVISION is main's until it is re-pinned. RESULTS,
INVENTORY, VERIFIERS, STATUS, the synopsis tables and site-urls.md were re-rendered by
their generators; SYNOPSIS counts 245 registered, 213 by others.

check_results reports one problem, by design until #813 lands: the ids are not
contiguous, T-244 being #813's.

Co-Authored-By: Claude Opus 5.5 <[email protected]>
Claude-Session: https://claude.ai/code/session_01S2rbZ7xerQ4fKxNFFjVYwR
… the merge of main 46e3555

Main (#814) registered T-243 at 182 and took the explainer's v0.4.28, so this branch's
results became T-245 and T-246 and the explainer takes v0.4.29. The optimality review,
the threshold-bound review and the methods survey, rendered at link revision ab33e3b
into empty site directories twice from this tree and once with main's nine candidate
inputs swapped in and jatloe.md removed, write all 51 files byte-identical across the
three, so they keep v0.1.11, v0.1.4 and v0.2.7.

Co-Authored-By: Claude Opus 5.5 <[email protected]>
Claude-Session: https://claude.ai/code/session_01S2rbZ7xerQ4fKxNFFjVYwR
@jlevy jlevy changed the title intake(think-4l14, think-6gti): T-243, Jatloe's Lean proof that s(12) = 4 (#810), and T-244, Daniel's s(29) minimal polynomial (#545, #811) intake(think-4l14, think-6gti): T-245, Jatloe's Lean proof that s(12) = 4 (#810), and T-246, Daniel's s(29) minimal polynomial (#545, #811) Oct 25, 2026
…to keep its 24 pages

The hosted pdf job at 5c28c3b drew 25 pages against EXPECTED_PAGE_COUNT 24, the
overflow #814 met with v0.4.28's line (456b090). The local draw does not reproduce
the overflow (24 pages with either line), so the hosted job is the check.

Co-Authored-By: Claude Opus 5.5 <[email protected]>
Claude-Session: https://claude.ai/code/session_01S2rbZ7xerQ4fKxNFFjVYwR
@jlevy

jlevy commented Oct 25, 2026

Copy link
Copy Markdown
Owner Author

CI at 5c28c3ba:


Generated by Claude Code

…on to that

The hosted pdf job 121136267504 at f3af1c4 still drew 25 pages against
EXPECTED_PAGE_COUNT 24 after the v0.4.29 history line was cut to one line:
v0.4.28 had kept 24 only by cutting its own entry, so the page held no room
for another. The count is now 25 with the reason beside it, as e51dbba moved
it from 23 to 24 for v0.4.13. The local headless shell (build 1243, not the
pinned 1234) draws 24 with either line, so the hosted draw is the measurement.
test_check_published_site and test_render_n11_lower_bounds_explainer_pdf: 229
passed.

Co-Authored-By: Claude Opus 5.5 <[email protected]>
Claude-Session: https://claude.ai/code/session_01S2rbZ7xerQ4fKxNFFjVYwR
…, with the page-count module

check_release_impact counts render_n11_lower_bounds_explainer_pdf.py as a candidate
input of the three no-change papers. Rendered at link revision bbc8c86 twice from the
tree and once with main's copy of that module swapped in: 51 files each, all
byte-identical. check_release_impact --baseline-ref origin/main passes; release_pin
needs no re-pin; test_release and test_cut_release: 44 passed.

Co-Authored-By: Claude Opus 5.5 <[email protected]>
Claude-Session: https://claude.ai/code/session_01S2rbZ7xerQ4fKxNFFjVYwR
…; the explainer takes v0.4.30

Main registered T-244, Hyukdong Kim's exact sides at 172 and 263 (#804), and took the
explainer's v0.4.29 with a page count of 25. Main's highest id is T-244 and no branch on
origin other than this one uses T-245 or T-246, so this branch's two results keep their
ids and the register is contiguous again: Jatloe's reported Lean proof that s(12) = 4
(#810, think-4l14) is T-245, and Daniel's degree-7213 s(29) minimal polynomial (#545,
#811, think-6gti) is T-246.

Conflicts were resolved by keeping both sides' entries whole, main's first: in
results.yaml, T-244 before T-245 and T-246 (git appended main's T-244 after them; it was
moved, unchanged, into id order); Kim's occurrences, evidence atom, coverage source and
bibliography key before this branch's; result/t-244.html's row before t-245 and t-246.
result-requests.yaml merged cleanly in issue order (#804, #806, #810, #811). In release.py,
main's v0.4.29 history entry and decision are kept exactly; this branch's explainer entry
becomes v0.4.30 with a v0.4.29 to v0.4.30 decision; main's no-change record is kept whole
beside this branch's; DATA_REVISION is main's until it is re-pinned.
render_n11_lower_bounds_explainer_pdf.py is main's exactly: it already holds 25 pages,
with main's reason, so this branch's duplicate bump and comment are dropped. RESULTS,
INVENTORY, VERIFIERS, STATUS, the synopsis tables and site-urls were re-rendered by their
generators; SYNOPSIS counts 246 registered, 214 by others.

Co-Authored-By: Claude Opus 5.5 <[email protected]>
Claude-Session: https://claude.ai/code/session_01S2rbZ7xerQ4fKxNFFjVYwR
…6268 after the merge of main 01e2b52

Main took the page-count module's 25 itself, so the merge left that module main's own and
it is no longer a candidate input of the three no-change papers; it leaves the record's
paths. Rendered at link revision 8a36268 into empty site directories twice from the tree
and once with main's result-requests.yaml, ctjlewis.md, evan-daniel.md,
manasseh-ahmed.md, check_results.py, site_resources.py, n-029.md, results.yaml and
source-coverage.yaml swapped in and jatloe.md removed: 51 files each, all byte-identical
across the three. check_release_impact --baseline-ref origin/main passes.

Co-Authored-By: Claude Opus 5.5 <[email protected]>
Claude-Session: https://claude.ai/code/session_01S2rbZ7xerQ4fKxNFFjVYwR
…e projects section medium

The merge of main 01e2b52 put both new project cards on the Resources page, Kim's issue
804 card (168 reading characters) and this branch's Jatloe12SquaresFormalized card (194).
With 61 cards the section's typical (median) card read 160 characters, CARD_LARGE_FROM,
so test_overview's test_each_sections_size_is_what_its_typical_card_asks_for failed: the
section is declared medium. Each side alone had 60 cards and a median of 159. The note
now reads "A Lean 4 proof of s(12) = 4, trusting Lean's compiler for its certificates."
(156 reading characters with the name and address), keeping the claim and the trust
caveat, and the median is 158. The median now sits two characters under the threshold, so
the next long project card may flip it again.

Co-Authored-By: Claude Opus 5.5 <[email protected]>
Claude-Session: https://claude.ai/code/session_01S2rbZ7xerQ4fKxNFFjVYwR
…72d4, after the card trim

site_resources.py is a candidate input of the three no-change papers. Rendered at link
revision d0d72d4 into empty site directories twice from the tree and once with main
01e2b52's nine candidate inputs swapped in and jatloe.md removed: 51 files each, all
byte-identical across the three, and identical to the 8a36268 renders once the link
revision is normalized. check_release_impact --baseline-ref origin/main passes;
release_pin --check: the pin is the last data commit, 8a36268.

Co-Authored-By: Claude Opus 5.5 <[email protected]>
Claude-Session: https://claude.ai/code/session_01S2rbZ7xerQ4fKxNFFjVYwR
@jlevy
jlevy marked this pull request as ready for review October 25, 2026 14:28
@jlevy
jlevy merged commit 272b411 into main Oct 25, 2026
66 checks passed
@jlevy
jlevy deleted the claude/friendly-einstein-gf9z0h branch October 25, 2026 14:28
@qodo-code-review

Copy link
Copy Markdown

PR Summary by Qodo

Register reported s(12) Lean proof and s(29) minimal polynomial

✨ Enhancement 📝 Documentation 🧪 Tests 🕐 40+ Minutes

Grey Divider

AI Description

• Register Jatloe’s reported s(12) = 4 proof and Daniel’s degree-7213 s(29) record-side polynomial.
• Preserve source evidence and audit the Lean theorem’s statement without claiming a rebuild or
 replay.
• Update case records, provenance, contributor credits, validation, and published result listings.
Diagram

graph TD
  N12["Pinned Lean source"] --> Audit["Statement audit"] --> Evidence["Evidence records"] --> Register["Results register"] --> Cases["Case records"] --> Site["Published views"]
  N29["Pinned polynomial"] --> Evidence
  Register --> Site
Loading
High-Level Assessment

The following are alternative approaches to this PR:

1. Link to upstream instead of retaining source
  • ➕ Much smaller repository change and fewer vendored files to review.
  • ➖ Would weaken statement inspection and reproducibility if upstream content or access changes.
2. Delay registration until complete replays
  • ➕ Would avoid publishing claims before independent builds and polynomial checks.
  • ➖ Would conflate reporting a result with verifying it and defer discoverability of both claims.

Recommendation: Keep the reported-only registrations and explicit V0/C0 boundaries: they make the claims discoverable without treating the producer’s checks as local verification. Retaining inspectable, pinned n = 12 material is preferable to links alone, subject to the tracked licence follow-up. A complete Lean rebuild and s(29) replay remain separate, budgeted follow-ups.

Files changed (79) +5610 / -117 · 1 not counted

Enhancement (6) +1099 / -7
audit_n12_lean.pyAdd reproducible n = 12 statement-audit tooling +621/-0

Add reproducible n = 12 statement-audit tooling

• Scans pinned Git blobs and retained statement-closure bytes for theorem-name shadowing, escape tokens, native_decide ownership, and producer-manifest agreement. Its check mode recomputes the receipt portions supported by retained bytes; it does not build Lean.

packing/devtools/audit_n12_lean.py

check_results.pyValidate exact-side as derived structure +8/-3

Validate exact-side as derived structure

• Accepts exact-side results while continuing to reject headlines that incorrectly present such a result as an s(n) bound.

packing/devtools/check_results.py

site_resources.pyList the n = 12 Lean source on the Resources page +5/-0

List the n = 12 Lean source on the Resources page

• Adds a resource card identifying its contributors and compiler-dependent certificate checks.

packing/devtools/site_resources.py

evidence.yamlAdd reported evidence for both claims +117/-1

Add reported evidence for both claims

• Records the n = 12 proof report and n = 29 polynomial report with their sources, replay status, trust boundaries, and limitations.

packing/frontier/evidence.yaml

results.yamlRegister T-245 and T-246 at V0/C0 +342/-0

Register T-245 and T-246 at V0/C0

• Adds the reported n = 12 optimality claim and n = 29 exact-side claim, with provenance, significance, limitations, and budgeted follow-ups.

packing/frontier/results.yaml

validate.pyAdjust reported-open case expectations +6/-3

Adjust reported-open case expectations

• Reduces expected reported-open counts by one for n = 12 while leaving verified counts unchanged.

packing/src/sqpack/cli/validate.py

Documentation (53) +3717 / -64
SYNOPSIS.mdReflect the new reported results +4/-1

Reflect the new reported results

• Updates the project synopsis to account for the n = 12 claim and the enlarged result register.

SYNOPSIS.md

document-map.yamlIndex the n = 12 statement audit +1/-0

Index the n = 12 statement audit

• Adds the new review document to the project document map.

docs/project/document-map.yaml

research-2026-08-22-packing-11-unit-squares.mdRefresh the registered-result count +1/-1

Refresh the registered-result count

• Keeps the research document’s result count consistent with the new registrations.

docs/project/research/research-2026-08-22-packing-11-unit-squares.md

review-2026-10-25-n12-lean-formalization-statement-audit.mdAudit what the Lean theorem states and trusts +491/-0

Audit what the Lean theorem states and trusts

• Documents a line-by-line statement audit, native_decide accounting, provenance checks, and the limits of the producer’s cached-object run. It explicitly does not claim a mathematical review or local build.

docs/project/reviews/review-2026-10-25-n12-lean-formalization-statement-audit.md

site-urls.mdDocument new published URLs +5/-2

Document new published URLs

• Adds result and contributor routes to the site URL documentation.

docs/project/site-urls.md

epistemics.mdDefine the exact-side result kind +8/-4

Define the exact-side result kind

• Distinguishes a configuration’s exact algebraic side from a certified bound or an optimality result.

epistemics.md

credit-attributions.jsonRefresh packing credit attribution +1/-1

Refresh packing credit attribution

• Updates the attribution record associated with the intake.

packing/atlas/known-best/credit-attributions.json

result-requests.yamlConnect issues 545, 810, and 811 to results +110/-9

Connect issues 545, 810, and 811 to results

• Records T-245 and T-246 against their issue requests and identifies the outstanding mathematical review and replay work.

packing/campaign/result-requests.yaml

occurrences.yamlRecord contributor appearances for both results +188/-7

Record contributor appearances for both results

• Adds source-linked occurrences and credits for the people associated with the two reports.

packing/contributors/occurrences.yaml

ctjlewis.mdCredit Lewis’s n = 12 formalization work +4/-0

Credit Lewis’s n = 12 formalization work

• Adds the source’s account of Lewis’s refactoring and compilation contribution.

packing/contributors/people/ctjlewis.md

evan-daniel.mdCredit Daniel’s s(29) exact-side result +20/-1

Credit Daniel’s s(29) exact-side result

• Links Daniel’s profile to the minimal-polynomial report and its registration.

packing/contributors/people/evan-daniel.md

jatloe.mdAdd Jatloe’s contributor profile +41/-0

Add Jatloe’s contributor profile

• Records Jatloe’s mathematical proof and partial formalization, without inferring another identity.

packing/contributors/people/jatloe.md

manasseh-ahmed.mdCredit publication of the n = 12 source +4/-0

Credit publication of the n = 12 source

• Adds Ahmed’s role in publishing and announcing the formalization.

packing/contributors/people/manasseh-ahmed.md

paper-design.mdRefresh paper-design intake guidance +2/-0

Refresh paper-design intake guidance

• Updates the template’s guidance for describing the registered results.

packing/devtools/templates/paper-design.md

INVENTORY.mdAccount for two reported evidence entries +9/-7

Account for two reported evidence entries

• Refreshes evidence totals and lists the n = 12 and n = 29 reports without presenting them as locally verified.

packing/frontier/INVENTORY.md

RESULTS.mdPublish T-245 and T-246 in the result index +26/-4

Publish T-245 and T-246 in the result index

• Adds the reported optimality and exact-side entries, their assurance levels, and their remaining verification actions.

packing/frontier/RESULTS.md

STATUS.mdRefresh frontier status totals +1/-1

Refresh frontier status totals

• Updates the status summary after the n = 12 reported lane changes.

packing/frontier/STATUS.md

VERIFIERS.mdDocument the premises-only n = 12 auditor +16/-2

Document the premises-only n = 12 auditor

• Adds V-audit-n12-lean and refreshes verifier counts; explicitly says the tool neither builds the proof nor decides a bound.

packing/frontier/VERIFIERS.md

n-012.mdSet n = 12’s reported lower lane to four +75/-15

Set n = 12’s reported lower lane to four

• Records the reported proof and reported-proved status while retaining the verified 7943/2000 lower bound and open verified status.

packing/frontier/n-012.md

n-029.mdDescribe the record packing’s minimal polynomial +43/-3

Describe the record packing’s minimal polynomial

• Adds Daniel’s degree-7213 characterization and pinned asset, while leaving the rational certified upper-bound lanes unchanged.

packing/frontier/n-029.md

source-coverage.yamlAssociate retained sources with both results +43/-4

Associate retained sources with both results

• Adds Jatloe source coverage and extends Daniel source coverage to n = 29 and its evidence entry.

packing/frontier/source-coverage.yaml

README.mdIndex the retained source packets +5/-1

Index the retained source packets

• Links the newly retained proof material from the resources index.

packing/resources/README.md

bibliography.yamlCite Jatloe’s formalization and Daniel’s result +41/-1

Cite Jatloe’s formalization and Daniel’s result

• Adds bibliographic provenance for the external sources used in the registrations.

packing/resources/bibliography.yaml

README.mdDocument Daniel’s announcement and registration +21/-0

Document Daniel’s announcement and registration

• Adds the announcement receipt, T-246 attribution, and the outstanding s(29) replay.

packing/resources/web/evand-exact-data-2026-10-12/README.md

tweet-2110154454817448106.jsonRetain Daniel’s announcement receipt +1/-0

Retain Daniel’s announcement receipt

• Stores the fetched first post announcing the n = 29 side result.

packing/resources/web/evand-exact-data-2026-10-12/receipts/announcement/tweet-2110154454817448106.json

README.mdDescribe the pinned Jatloe source packet +296/-0

Describe the pinned Jatloe source packet

• Lists the retained source, acquisition pins, credit, producer run evidence, trust boundary, and work still needed to verify the claim independently.

packing/resources/web/jatloe-n12-lean-2026-10-16/README.md

declaration.jsonDeclare the upstream acquisition +155/-0

Declare the upstream acquisition

• Records what upstream source and materials the n = 12 packet retains.

packing/resources/web/jatloe-n12-lean-2026-10-16/acquisition/declaration.json

sources.jsonPin n = 12 acquisition sources +183/-0

Pin n = 12 acquisition sources

• Records upstream revisions and acquisition metadata used to identify the proof source.

packing/resources/web/jatloe-n12-lean-2026-10-16/acquisition/sources.json

upstream-subtree.sha256Hash the upstream source tree +426/-0

Hash the upstream source tree

• Lists file digests for the pinned upstream subtree, including files not retained in the packet.

packing/resources/web/jatloe-n12-lean-2026-10-16/acquisition/upstream-subtree.sha256

tweet-2113097037306569124.jsonRetain the n = 12 announcement +1/-0

Retain the n = 12 announcement

• Stores Ahmed’s announcement as an intake provenance receipt.

packing/resources/web/jatloe-n12-lean-2026-10-16/receipts/announcement/tweet-2113097037306569124.json

tweet-2113097091580932578.jsonRetain the source-repository reply +1/-0

Retain the source-repository reply

• Stores Ahmed’s reply identifying the Lean repository.

packing/resources/web/jatloe-n12-lean-2026-10-16/receipts/announcement/tweet-2113097091580932578.json

lean-closure.json.gzRetain the Lean import-closure receipt +0/-0

Retain the Lean import-closure receipt

• Preserves the compressed inventory used to inspect the reported theorem’s 5,377-module closure.

packing/resources/web/jatloe-n12-lean-2026-10-16/receipts/lean-closure.json.gz

statement-closure.json.gzRetain the statement-closure receipt +0/-0

Retain the statement-closure receipt

• Preserves the smaller closure used for inspecting the definitions behind the theorem statement.

packing/resources/web/jatloe-n12-lean-2026-10-16/receipts/statement-closure.json.gz

statement-audit.jsonRetain machine-readable statement-audit counts +257/-0

Retain machine-readable statement-audit counts

• Records token, declaration, native-axiom, and producer-manifest comparisons made by the audit tool.

packing/resources/web/jatloe-n12-lean-2026-10-16/receipts/statement-audit.json

README.mdRetain the producer’s proof description +79/-0

Retain the producer’s proof description

• Preserves the upstream account of the theorem, credits, and reported verification.

packing/resources/web/jatloe-n12-lean-2026-10-16/Jatloe12SquaresFormalized/README.md

SOURCE-PROVENANCE.jsonRetain producer provenance and digests +72/-0

Retain producer provenance and digests

• Preserves the upstream relationship between published sources and producer-run evidence.

packing/resources/web/jatloe-n12-lean-2026-10-16/Jatloe12SquaresFormalized/SOURCE-PROVENANCE.json

AGENTS.mdRetain upstream agent instructions +17/-0

Retain upstream agent instructions

• Preserves source-tree context and its contributor-credit instructions; this is upstream material, not a new project policy.

packing/resources/web/jatloe-n12-lean-2026-10-16/Jatloe12SquaresFormalized/AGENTS.md

n12.ymlRetain upstream n = 12 workflow +206/-0

Retain upstream n = 12 workflow

• Preserves the producer’s build and verification workflow as evidence of its stated process.

packing/resources/web/jatloe-n12-lean-2026-10-16/Jatloe12SquaresFormalized/.github/workflows/n12.yml

verify.ymlRetain upstream verification workflow +53/-0

Retain upstream verification workflow

• Preserves the producer’s verification automation; this PR does not run it.

packing/resources/web/jatloe-n12-lean-2026-10-16/Jatloe12SquaresFormalized/.github/workflows/verify.yml

Final.leanRetain the reported final Lean theorem +18/-0

Retain the reported final Lean theorem

• Contains N12Compact.Final.optimality, which states S12.packingConstant12 = 4 without a theorem premise.

packing/resources/web/jatloe-n12-lean-2026-10-16/Jatloe12SquaresFormalized/Lean/Proofs/N12-jatloe/Compact/Assembly/Final.lean

SourceAssembly.leanRetain the upstream proof assembly +144/-0

Retain the upstream proof assembly

• Connects the reported case closures to the final optimality theorem.

packing/resources/web/jatloe-n12-lean-2026-10-16/Jatloe12SquaresFormalized/Lean/Proofs/N12-jatloe/Compact/Assembly/SourceAssembly.lean

Remaining117.leanRetain the original-case assembly +109/-0

Retain the original-case assembly

• Holds the assembly route for the reported 117-case classification.

packing/resources/web/jatloe-n12-lean-2026-10-16/Jatloe12SquaresFormalized/Lean/Proofs/N12-jatloe/Compact/Assembly/Remaining117.lean

Diagonal.leanRetain the square geometry definitions +228/-0

Retain the square geometry definitions

• Defines the rotated open-square representation inspected by the statement audit.

packing/resources/web/jatloe-n12-lean-2026-10-16/Jatloe12SquaresFormalized/Lean/Proofs/N12-jatloe/source/S12/Diagonal.lean

Normalization.leanRetain unrestricted packing definitions +76/-0

Retain unrestricted packing definitions

• Defines unit packings and the normalization bridge examined against the project’s s(12) problem.

packing/resources/web/jatloe-n12-lean-2026-10-16/Jatloe12SquaresFormalized/Lean/Proofs/N12-jatloe/source/S12/Normalization.lean

PackingConstant.leanRetain the infimum and grid construction +82/-0

Retain the infimum and grid construction

• Defines feasible sides and packingConstant12 and supplies the side-four grid.

packing/resources/web/jatloe-n12-lean-2026-10-16/Jatloe12SquaresFormalized/Lean/Proofs/N12-jatloe/source/S12/PackingConstant.lean

README.mdRetain upstream Lean project guidance not counted

Retain upstream Lean project guidance

• Describes the source proof project and its build context.

packing/resources/web/jatloe-n12-lean-2026-10-16/Jatloe12SquaresFormalized/Lean/Proofs/N12-jatloe/Lean/Proofs/N12-jatloe/README.md

GlobalTypeAudit.leanRetain the producer’s final type-audit command +4/-0

Retain the producer’s final type-audit command

• Preserves the source file used for the producer’s claimed final theorem and axiom audit.

packing/resources/web/jatloe-n12-lean-2026-10-16/Jatloe12SquaresFormalized/verification/run-38849916588/GlobalTypeAudit.lean

README.txtRetain producer-run explanation +73/-0

Retain producer-run explanation

• Describes the accepting run and its reliance on previously compiled checkpoint objects.

packing/resources/web/jatloe-n12-lean-2026-10-16/Jatloe12SquaresFormalized/verification/run-38849916588/README.txt

compiled-checkpoint-verification.jsonRetain checkpoint-verification metadata +76/-0

Retain checkpoint-verification metadata

• Records the producer’s checks of reused compiled objects, not a local rebuild.

packing/resources/web/jatloe-n12-lean-2026-10-16/Jatloe12SquaresFormalized/verification/run-38849916588/compiled-checkpoint-verification.json

github-replay.json.gzRetain compressed run metadata +0/-0

Retain compressed run metadata

• Preserves the producer’s replay record for provenance inspection.

packing/resources/web/jatloe-n12-lean-2026-10-16/Jatloe12SquaresFormalized/verification/run-38849916588/github-replay.json.gz

global-native-axiom-audit.json.gzRetain producer native-axiom data +0/-0

Retain producer native-axiom data

• Preserves the producer’s compressed native_decide audit for comparison with the source.

packing/resources/web/jatloe-n12-lean-2026-10-16/Jatloe12SquaresFormalized/verification/run-38849916588/global-native-axiom-audit.json.gz

global-type-axiom-audit.log.gzRetain the final axiom listing +0/-0

Retain the final axiom listing

• Preserves the compressed producer-reported theorem axiom list, including native_decide dependencies.

packing/resources/web/jatloe-n12-lean-2026-10-16/Jatloe12SquaresFormalized/verification/run-38849916588/global-type-axiom-audit.log.gz

verified-source-manifest.json.gzRetain the producer’s source manifest +0/-0

Retain the producer’s source manifest

• Preserves source-file digests against which the first-party statement auditor compares pinned blobs.

packing/resources/web/jatloe-n12-lean-2026-10-16/Jatloe12SquaresFormalized/verification/run-38849916588/verified-source-manifest.json.gz

Other (20) +794 / -46
intake-watch.yamlTrack the two external reports +16/-0

Track the two external reports

• Adds intake-watch entries for the newly registered claims and their follow-up work.

packing/campaign/intake-watch.yaml

t007-consumer-audit.jsonRefresh consumer-audit expectations +29/-8

Refresh consumer-audit expectations

• Adjusts the retained audit result for the expanded register and its consumers.

packing/campaign/series/series-000-smoke-and-calibration/results/t007-consumer-audit.json

integrity-ceremony.yamlInclude the new intake in integrity checks +8/-0

Include the new intake in integrity checks

• Extends integrity-ceremony coverage for the retained source and audit material.

packing/devtools/integrity-ceremony.yaml

results.schema.yamlAllow exact-side results in the schema +4/-1

Allow exact-side results in the schema

• Defines the kind as an exact configuration-side claim that need not establish a bound.

packing/frontier/results.schema.yaml

verifiers.yamlRegister V-audit-n12-lean +18/-0

Register V-audit-n12-lean

• Classifies the new first-party tool as a premises checker rather than a proof or bound verifier.

packing/frontier/verifiers.yaml

lake-manifest.jsonRetain the producer’s dependency manifest +89/-0

Retain the producer’s dependency manifest

• Preserves the pinned Lean dependency state for a future rebuild.

packing/resources/web/jatloe-n12-lean-2026-10-16/Jatloe12SquaresFormalized/Lean/Proofs/N12-jatloe/lake-manifest.json

lakefile.tomlRetain the upstream Lake project +17/-0

Retain the upstream Lake project

• Preserves the library and build configuration needed to interpret the source.

packing/resources/web/jatloe-n12-lean-2026-10-16/Jatloe12SquaresFormalized/Lean/Proofs/N12-jatloe/lakefile.toml

lean-toolchainPin the upstream Lean toolchain +1/-0

Pin the upstream Lean toolchain

• Retains the producer’s Lean version for potential replay.

packing/resources/web/jatloe-n12-lean-2026-10-16/Jatloe12SquaresFormalized/Lean/Proofs/N12-jatloe/lean-toolchain

toolchain-lock.jsonRetain the producer’s toolchain lock +10/-0

Retain the producer’s toolchain lock

• Records runtime and dependency pins accompanying the reported run.

packing/resources/web/jatloe-n12-lean-2026-10-16/Jatloe12SquaresFormalized/Lean/Proofs/N12-jatloe/verification/toolchain-lock.json

site-changelog.schema.yamlRefresh site-changelog constraints +1/-1

Refresh site-changelog constraints

• Adjusts changelog schema metadata for the new published intake.

packing/site-changelog.schema.yaml

site-urls.yamlPublish the new result and contributor routes +79/-2

Publish the new result and contributor routes

• Adds T-245, T-246, and Jatloe’s profile to the URL registry and updates affected case-page modification dates.

packing/site-urls.yaml

release.pyRecord release impact of the new registrations +103/-1

Record release impact of the new registrations

• Advances the explainer’s result-count version and data revision, and records measured no-public-change decisions for unaffected papers.

packing/src/sqpack/release.py

test_audit_n12_lean.pyTest the statement auditor and retained receipt +288/-0

Test the statement auditor and retained receipt

• Uses a synthetic Git-backed Lean source tree to exercise audit counts and checks retained receipt consistency without running the upstream proof.

packing/tests/test_audit_n12_lean.py

test_evand_square_packing.pyCover Daniel’s newly registered source relationship +17/-8

Cover Daniel’s newly registered source relationship

• Adjusts source and result assertions for the s(29) report.

packing/tests/test_evand_square_packing.py

test_frontier_page.pyCheck the updated frontier presentation +4/-1

Check the updated frontier presentation

• Updates page expectations for the additional reported result.

packing/tests/test_frontier_page.py

test_house_adoption.pyProtect unchanged verified house bounds +40/-2

Protect unchanged verified house bounds

• Adds assertions around reported-result intake and existing house adoption.

packing/tests/test_house_adoption.py

test_recent_results.pyCheck recent-result listings +5/-1

Check recent-result listings

• Updates expected recent results to include the new registrations.

packing/tests/test_recent_results.py

test_results_register.pyTest exact-side registration semantics +28/-0

Test exact-side registration semantics

• Adds checks that exact-side can be registered without claiming an s(n) bound.

packing/tests/test_results_register.py

test_site_frontier_table.pyCheck reported and verified frontier lanes +30/-17

Check reported and verified frontier lanes

• Adjusts table expectations for the reported n = 12 equality without changing its verified status.

packing/tests/test_site_frontier_table.py

test_validation_cli.pyCheck revised frontier counts +7/-4

Check revised frontier counts

• Updates CLI validation expectations after n = 12 becomes reported-proved.

packing/tests/test_validation_cli.py

@qodo-code-review

Copy link
Copy Markdown

Code Review by Qodo


Action required

1. Bad or missing input files crash the audit tool 📘
Description
main() in audit_n12_lean.py has no try/except around load_closure, read_checkout, audit
or check, so OSError, json.JSONDecodeError, KeyError and the IndexError from log_axioms
(when the log lacks depends on axioms:) reach the user as raw tracebacks. A wrong checkout path, a
damaged closure receipt or a truncated axiom log in either scan or check produces a traceback
and no concise refusal line.
Agent prompt
The issue below was found during a code review. Follow the provided context and guidance below and implement a solution

## Issue description
`main()` in the n12 audit tool lets file, JSON and parse errors surface as tracebacks.

## Fix Focus Areas
- packing/devtools/audit_n12_lean.py[343-346]
- packing/devtools/audit_n12_lean.py[581-617]

## Recommended Fix
Wrap the command dispatch in `main()` in `try/except (OSError, json.JSONDecodeError, KeyError, ValueError, IndexError)`. Print `refused: {e}` to stderr and return 2. Make `log_axioms` raise a `ValueError` with a clear message when the marker is absent.

ⓘ Copy this prompt and use it to remediate the issue with your preferred AI generation tools

Dismiss ↗ | View ↗


View medium (3)
Remediation recommended
2. The record credits a publisher as prover 🐞
Description
The new reported_lower_bound.proved_by list includes Ahmed, and his contributor occurrence assigns
him the lower-bound-prover role. The retained source credits Jatloe with the proof, Gurevitch with
formalization aid and Lewis with refactoring and compilation; the new case note instead describes
Ahmed's role as publishing it.
Agent prompt
The issue below was found during a code review. Follow the provided context and guidance below and implement a solution

## Issue description
The reported lower-bound prover field assigns the publication role to Ahmed, contrary to the roles stated in the retained source.

## Fix Focus Areas
- packing/frontier/n-012.md[43-53]
- packing/contributors/occurrences.yaml[16092-16108]

## Recommended Fix
Keep Ahmed's publication and announcement credit in the case note and source attribution, but remove him from the `proved_by` list and change or remove the corresponding lower-bound-prover occurrence.

ⓘ Copy this prompt and use it to remediate the issue with your preferred AI generation tools

Dismiss ↗ | View ↗

3. Audit passes despite digest or axiom mismatch 🐞
Description
audit_n12_lean.main marks scan clean using only SHA and native-owner/call mismatches, while
check compares fresh evidence only with the stored receipt rather than enforcing the manifest,
provenance, and axiom-log invariants that run_evidence records. When a manifest entry is missing,
a provenance digest disagrees, the log differs from the native final audit, or sorryAx appears,
the command can still exit 0, and a regenerated receipt can still pass
test_the_retained_receipt_agrees_with_the_packet.
Agent prompt
The issue below was found during a code review. Follow the provided context and guidance below and implement a solution

## Issue description
`audit_n12_lean` records manifest coverage and paths, provenance digest agreement, final-axiom-audit agreement, and `sorryAx`, but neither `scan` nor `check` fails when those invariants are violated.

## Fix Focus Areas
- packing/devtools/audit_n12_lean.py[452-480]
- packing/devtools/audit_n12_lean.py[540-566]
- packing/devtools/audit_n12_lean.py[611-617]

## Recommended Fix
Add an `invariant_problems(receipt)` helper that reports manifest module or path disagreement with the closure, either computed digest differing from its SOURCE-PROVENANCE digest, axiom-log disagreement with the native audit's final axioms, `sorryAx`, and standard axioms other than `STANDARD_AXIOMS`. Call it on the fresh receipt from `check` and include its results in `main`'s `scan` clean verdict. Add failure-path tests for these conditions.

ⓘ Copy this prompt and use it to remediate the issue with your preferred AI generation tools

Dismiss ↗ | View ↗

4. A different statement can pass the audit 🐞
Description
audit_n12_lean.check takes statement_targets from the receipt being checked instead of requiring
the declared statement target. A changed receipt can name another module and include its recomputed
statement section, and check will accept it as agreeing with the packet without auditing the
intended theorem statement.
Agent prompt
The issue below was found during a code review. Follow the provided context and guidance below and implement a solution

## Issue description
The receipt selects its own statement target during verification, so a changed target can pass the packet check.

## Fix Focus Areas
- packing/devtools/audit_n12_lean.py[545-555]

## Recommended Fix
Require the receipt's statement targets to equal the tool's declared targets, and recompute from those declared targets rather than from the receipt. Test that changing the target makes `check` fail.

ⓘ Copy this prompt and use it to remediate the issue with your preferred AI generation tools

Dismiss ↗ | View ↗


View low (2)
Informational
5. Scope regex can skip the next declaration 🐞
Description
_OWNER and _DECLARATION end with \b\s*(NAME)?, and \s matches newlines. So after a bare
section, a noncomputable section or a bare end, the name group takes the first word of the
next line (namespace, theorem, def), and that line is never matched as a command of its own.
Any native_decide calls in a swallowed theorem drop out of native_sites, and a swallowed
namespace puts shadowing out of step: a later end Foo closes the wrong scope, so qualified
names and nested-namespace detection come out wrong.
Agent prompt
The issue below was found during a code review. Follow the provided context and guidance below and implement a solution

## Issue description
`_OWNER` and `_DECLARATION` in packing/devtools/audit_n12_lean.py use `\b\s*(NAME)?`. `\s` crosses newlines, so after a bare `section`, `noncomputable section` or `end`, the next line's keyword (`theorem`, `namespace`, ...) is taken as the name and that declaration is skipped.

## Fix Focus Areas
- packing/devtools/audit_n12_lean.py[120-130]

## Recommended Fix
Replace `\b\s*(` with `\b[ \t]*(` in both patterns, so the optional name must sit on the same line. Add a test with `noncomputable section\nnamespace Foo\ntheorem bar ... native_decide\nend Foo\nend`. It should report `Foo.bar` as a site, and the namespace stack should come out balanced.

ⓘ Copy this prompt and use it to remediate the issue with your preferred AI generation tools

Dismiss ↗ | View ↗

6. Schema rejects exact side as a proved kind 🐞
Description
The PR adds exact-side to the kind enum in results.schema.yaml but not to the sibling
proves_kind enum, while check_results.kind_problems accepts any conclusion in KINDS. So a
later formalization or simplification of an exact side (for example a Lean proof of one of the
lower-degree exact forms) would pass check_results and still fail schema validation.
Agent prompt
The issue below was found during a code review. Follow the provided context and guidance below and implement a solution

## Issue description
results.schema.yaml adds `exact-side` to `kind` but not to `proves_kind`, while check_results accepts it as a conclusion.

## Fix Focus Areas
- packing/frontier/results.schema.yaml[204-206]

## Recommended Fix
Add `exact-side` to the `proves_kind` enum after `restricted-optimality`. If second proofs of exact sides should not be allowed, exclude `exact-side` explicitly in `kind_problems` instead, so the schema and the checker agree.

ⓘ Copy this prompt and use it to remediate the issue with your preferred AI generation tools

Dismiss ↗ | View ↗


Comment on lines +595 to +610
if arguments.command == "check":
problems = check(arguments.receipt, arguments.closure)
for problem in problems:
print(problem)
if not problems:
print(f"{_path(arguments.receipt)} agrees with the packet")
return 1 if problems else 0
closure = load_closure(arguments.closure)
receipt = audit(
read_checkout(arguments.checkout, closure),
closure,
closure_path=arguments.closure,
run=arguments.run,
provenance=arguments.provenance,
statement_targets=arguments.statement,
)

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Action required

1. Bad or missing input files crash the audit tool 📘 Rule violation ☼ Reliability

main() in audit_n12_lean.py has no try/except around load_closure, read_checkout, audit
or check, so OSError, json.JSONDecodeError, KeyError and the IndexError from log_axioms
(when the log lacks depends on axioms:) reach the user as raw tracebacks. A wrong checkout path, a
damaged closure receipt or a truncated axiom log in either scan or check produces a traceback
and no concise refusal line.
Agent Prompt
## Issue description
`main()` in the n12 audit tool lets file, JSON and parse errors surface as tracebacks.

## Fix Focus Areas
- packing/devtools/audit_n12_lean.py[343-346]
- packing/devtools/audit_n12_lean.py[581-617]

## Recommended Fix
Wrap the command dispatch in `main()` in `try/except (OSError, json.JSONDecodeError, KeyError, ValueError, IndexError)`. Print `refused: {e}` to stderr and return 2. Make `log_axioms` raise a `ValueError` with a clear message when the marker is absent.

ⓘ Copy this prompt and use it to remediate the issue with your preferred AI generation tools

Dismiss ↗ | View ↗

Comment on lines +545 to +550
statement = subclosure(closure, kept["statement_targets"])
fresh = audit(
read_retained(closure, statement),
closure,
closure_path=closure_path,
statement_targets=kept["statement_targets"],

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Remediation recommended

4. A different statement can pass the audit 🐞 Bug ≡ Correctness

audit_n12_lean.check takes statement_targets from the receipt being checked instead of requiring
the declared statement target. A changed receipt can name another module and include its recomputed
statement section, and check will accept it as agreeing with the packet without auditing the
intended theorem statement.
Agent Prompt
## Issue description
The receipt selects its own statement target during verification, so a changed target can pass the packet check.

## Fix Focus Areas
- packing/devtools/audit_n12_lean.py[545-555]

## Recommended Fix
Require the receipt's statement targets to equal the tool's declared targets, and recompute from those declared targets rather than from the receipt. Test that changing the target makes `check` fail.

ⓘ Copy this prompt and use it to remediate the issue with your preferred AI generation tools

Dismiss ↗ | View ↗

Comment thread packing/frontier/n-012.md
- Jatloe
- Gurevitch
- Lewis
- Ahmed

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Remediation recommended

2. The record credits a publisher as prover 🐞 Bug ≡ Correctness

The new reported_lower_bound.proved_by list includes Ahmed, and his contributor occurrence assigns
him the lower-bound-prover role. The retained source credits Jatloe with the proof, Gurevitch with
formalization aid and Lewis with refactoring and compilation; the new case note instead describes
Ahmed's role as publishing it.
Agent Prompt
## Issue description
The reported lower-bound prover field assigns the publication role to Ahmed, contrary to the roles stated in the retained source.

## Fix Focus Areas
- packing/frontier/n-012.md[43-53]
- packing/contributors/occurrences.yaml[16092-16108]

## Recommended Fix
Keep Ahmed's publication and announcement credit in the case note and source attribution, but remove him from the `proved_by` list and change or remove the corresponding lower-bound-prover occurrence.

ⓘ Copy this prompt and use it to remediate the issue with your preferred AI generation tools

Dismiss ↗ | View ↗

Comment on lines +120 to +130
_OWNER = re.compile(
r"(?m)^(?:@\[[^\]]*\]\s*)?(?:(?:private|protected|noncomputable|nonrec)\s+)*"
r"(theorem|lemma|def|abbrev|instance|example|namespace|end|section)\b\s*(" + _NAME + r")?"
)
#: Any declaration a name can resolve to, or a scope command, indented or not.
_DECLARATION = re.compile(
r"(?m)^[ \t]*(?:@\[[^\]]*\]\s*)?"
r"(?:(?:private|protected|noncomputable|nonrec|partial)\s+)*"
r"(theorem|lemma|def|abbrev|structure|class|inductive|instance|opaque|axiom|namespace|end"
r"|section)\b\s*(" + _NAME + r")?"
)

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Informational

5. Scope regex can skip the next declaration 🐞 Bug ≡ Correctness

_OWNER and _DECLARATION end with \b\s*(NAME)?, and \s matches newlines. So after a bare
section, a noncomputable section or a bare end, the name group takes the first word of the
next line (namespace, theorem, def), and that line is never matched as a command of its own.
Any native_decide calls in a swallowed theorem drop out of native_sites, and a swallowed
namespace puts shadowing out of step: a later end Foo closes the wrong scope, so qualified
names and nested-namespace detection come out wrong.
Agent Prompt
## Issue description
`_OWNER` and `_DECLARATION` in packing/devtools/audit_n12_lean.py use `\b\s*(NAME)?`. `\s` crosses newlines, so after a bare `section`, `noncomputable section` or `end`, the next line's keyword (`theorem`, `namespace`, ...) is taken as the name and that declaration is skipped.

## Fix Focus Areas
- packing/devtools/audit_n12_lean.py[120-130]

## Recommended Fix
Replace `\b\s*(` with `\b[ \t]*(` in both patterns, so the optional name must sit on the same line. Add a test with `noncomputable section\nnamespace Foo\ntheorem bar ... native_decide\nend Foo\nend`. It should report `Foo.bar` as a site, and the namespace stack should come out balanced.

ⓘ Copy this prompt and use it to remediate the issue with your preferred AI generation tools

Dismiss ↗ | View ↗

Comment on lines +613 to +617
clean = not receipt["manifest"]["sha256_mismatches"] and not (
receipt["native"]["owners_without_a_site"]
or receipt["native"]["owners_whose_axioms_are_not_their_calls"]
)
return 0 if clean else 1

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Remediation recommended

3. Audit passes despite digest or axiom mismatch 🐞 Bug ☼ Reliability

audit_n12_lean.main marks scan clean using only SHA and native-owner/call mismatches, while
check compares fresh evidence only with the stored receipt rather than enforcing the manifest,
provenance, and axiom-log invariants that run_evidence records. When a manifest entry is missing,
a provenance digest disagrees, the log differs from the native final audit, or sorryAx appears,
the command can still exit 0, and a regenerated receipt can still pass
test_the_retained_receipt_agrees_with_the_packet.
Agent Prompt
## Issue description
`audit_n12_lean` records manifest coverage and paths, provenance digest agreement, final-axiom-audit agreement, and `sorryAx`, but neither `scan` nor `check` fails when those invariants are violated.

## Fix Focus Areas
- packing/devtools/audit_n12_lean.py[452-480]
- packing/devtools/audit_n12_lean.py[540-566]
- packing/devtools/audit_n12_lean.py[611-617]

## Recommended Fix
Add an `invariant_problems(receipt)` helper that reports manifest module or path disagreement with the closure, either computed digest differing from its SOURCE-PROVENANCE digest, axiom-log disagreement with the native audit's final axioms, `sorryAx`, and standard axioms other than `STANDARD_AXIOMS`. Call it on the fresh receipt from `check` and include its results in `main`'s `scan` clean verdict. Add failure-path tests for these conditions.

ⓘ Copy this prompt and use it to remediate the issue with your preferred AI generation tools

Dismiss ↗ | View ↗

- rigidity
- case-exclusion
- restricted-optimality
- exact-side

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Informational

6. Schema rejects exact side as a proved kind 🐞 Bug ⚙ Maintainability

The PR adds exact-side to the kind enum in results.schema.yaml but not to the sibling
proves_kind enum, while check_results.kind_problems accepts any conclusion in KINDS. So a
later formalization or simplification of an exact side (for example a Lean proof of one of the
lower-degree exact forms) would pass check_results and still fail schema validation.
Agent Prompt
## Issue description
results.schema.yaml adds `exact-side` to `kind` but not to `proves_kind`, while check_results accepts it as a conclusion.

## Fix Focus Areas
- packing/frontier/results.schema.yaml[204-206]

## Recommended Fix
Add `exact-side` to the `proves_kind` enum after `restricted-optimality`. If second proofs of exact sides should not be allowed, exclude `exact-side` explicitly in `kind_problems` instead, so the schema and the checker agree.

ⓘ Copy this prompt and use it to remediate the issue with your preferred AI generation tools

Dismiss ↗ | View ↗

jlevy pushed a commit that referenced this pull request Oct 25, 2026
T-245, Jatloe's reported Lean proof that s(12) = 4, landed at S5 in #812
(merged 2026-10-25T14:28:27Z, 272b411), so it owes a News item in the
first change after the merge (result-import.md, stage 7). The entry states
V0/C0, the compiler trust, the reused-object run and the unreplayed build,
and mentions T-246 (S3, no item owed) without listing it in result_ids.

- site-changelog.yaml: the entry, dated the merge day, with publication
  evidence the verified main Pages run 40202397886; #812's delivery row and
  coverage number, from devtools.import_changelog --metadata (REST export of
  #812, no gh CLI here).
- CHANGELOG.md re-rendered by devtools.render_changelog.
- tests: the News box now leads with T-245's S5 card, then T-194's and
  T-154's; the two tests pinning its first cards follow.

Co-Authored-By: Claude Opus 5.5 <[email protected]>
Claude-Session: https://claude.ai/code/session_01S2rbZ7xerQ4fKxNFFjVYwR
jlevy added a commit that referenced this pull request Oct 25, 2026
news(#812): T-245's S5 News item, the stage 7 reply records for #810, #545 and #811, and a wand125 read
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

intake Tracking intake (saving, validation, tabulation, credits) of new results n-12 S5 Landmark mathematical advance or major resolution

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants