Skip to content

Conditional κ = 7.277211262868e-4 on #233's source-assisted row: the rank-3 whole-bank rung (self-contained, wired into CI) - #246

Closed
maxime-fleury wants to merge 1 commit into
CrocSwap:mainfrom
maxime-fleury:research/rank3-rung-new-row
Closed

maxime-fleury wants to merge 1 commit into
CrocSwap:mainfrom
maxime-fleury:research/rank3-rung-new-row

Conversation

@maxime-fleury

@maxime-fleury maxime-fleury commented Oct 9, 2026 •

Copy link
Copy Markdown
Contributor

Conditional κ = 7.277211262868e-4 on #233's source-assisted row: the rank-3 whole-bank rung, self-contained

κ = 1819302815717/25·10¹⁴ = 7.277211262868e-4, conditional, binding = bit, priced on a row
whose PR is unmerged (pinned by digest). A priced target on a scheduled row, not a witness.

Change and mathematical scope

One self-contained package, a test module, and the package's own workflow. No existing file is
edited.

research/complex-bank-run3/ prices the complex-side bank ladder above PR224's rung 2 — rungs 3
and 4 on the pinned profile (its padded width-66 schedule tops out at
711599961413937/10^18 = 7.11599961413937e-4) — and then reads PR233
(research/source-assisted-v4-layer, head 109a857a329d18ed5552d5573f17ddfa886ae57f) as a row.
On that row the ledger's first whole-bank family is rank 3, not rank 16: 29,964 rank-3
children per vertex, three registers each, so 3 · 89,892 = 269,676 = 66 · 4,086 three-copy
banks. Because 66 = 22 · 3, the bank is exactly filled by 22 rank-3 blocks: this rung needs no
padding at all
, and the T1 obligation the padded schedule exists to satisfy does not arise.

the rung on #233's row value
banks 4,086 (1,362 per copy), 22 blocks × 3 registers, padding 0
retained ledger stock 36,156 → 32,070; mass 2,382,336 → 2,112,660; children 635,067 → 545,175; families 20 → 19
retained coarse saving 417325324839139/5·10^17 = 8.346506496783e-4, the next 10⁻¹⁸ grid point up excluded
budget the bit leaf 7.282510899902e-4 — bit-bound, so the complex supplier no longer binds
κ 1819302815717/25·10^14 = 7.277211262868e-4, binding = bit
assembly the unchanged 47-constraint assembly green at that budget, its own adjacent 10⁻¹⁸ point rejected
against value gain asserted
this package's ladder top (the padded rung 4) 711599961413937/10^18 = 7.11599961413937e-4 +2.2655% yes, by verify.py, offline
the frontier this package prices against (PR207) 1366380910073/2·10^15 = 6.831904550365e-4 +6.5180% yes, by verify.py, offline
the record published on main (PR186) 330942774629799/5·10^17 = 6.61885549259598e-4 +9.95% stated, dated
the highest other open claim at the time of writing (#251) 7.10433687047883e-4 +2.43% stated, dated

The two asserted rows cannot drift: verify.py re-derives both numbers from the pinned bytes
and asserts the comparisons. The two stated rows are dated observations of the queue and of
main, and are labelled as such.

What proves it

cd research/complex-bank-run3
python3 -B verify.py                     # check: pins, rebuild, compare with certificate.json
python3 -B importer66.py --contract export-contract-rank3.json --self-test   # 13/13
cd references/pr219-run1 && python3 -B verify.py   # the vendored rung-1 package, in place

verify.py pins 62 files by sha256 — the 33 this package owns, the 16 the vendored rung-1
package of #219 carries, the 11 bodies of the bit drop and the six ranked heads of #233 — and
rebuilds the entire complex-side ladder: base, rung 2, rungs 3 and 4, both paid moments per rung,
the two 47-constraint assemblies with adjacent-grid rejection, the eligibility scan, the PR208
replica, the padded schedule, the instanced inventories, and all three export contracts (the
complex side's, the bit twin's with its 10-of-15 imported drop, and the rung's own). Then it
re-derives the rank-3 rung — the assignment from its addressing rule with zero padding, the
retained ledger, the bit leaf through #219's arithmetic, the point through the assembly rule — and
asserts both comparisons above. It reproduces PR207's, PR219's and PR224's published grid points
exactly.

The change adds exactly three things and edits nothing else:

  • research/complex-bank-run3/ — the package;
  • tests/test_complex_bank_run3.py — nine isolated checks (the rebuild, all three contracts'
    self-tests, the refusal codes 2 and 4 with the rung publishing 0 of 6 required exports as
    bodies (ten bodies across them, all absent), the
    rank-3 price against the reviewed result, the rank-4 negative) plus three failure controls
    showing the digest gate fails closed on a tampered digest, a missing entry and a changed byte
    rather than passing vacuously; discovered by the existing tests group;
  • .github/workflows/complex-bank-ladder.yml — the package's own job on 3.11, 3.13 and 3.14:
    verify.py, the vendored package's self-check, the three contracts' self-tests, then
    git diff --exit-code. It is path-filtered, so it costs nothing outside this package.

Why a workflow instead of a Makefile target. A target in the aggregate would be the local
convention, but Makefile and .gitattributes are themselves recorded by other packages'
manifests
— research/joint-dual/SOURCE.json asserts the Makefile digest in check_sources(),
and the round-8, coordinated-frames, gaussian-parity and machine-transfer manifests record both
files. Editing either moves those digests and fails those groups' git diff --exit-code. A
path-filtered workflow of the package's own keeps this change to new files only, which is also why
it needs no .gitattributes carve-out: the package's byte-identical inputs are ordinary LF text
plus gzip containers, committed from an LF worktree and verified here by hashing the blobs in
the index
(all 62 pinned paths) rather than the worktree.

No network, no Git credentials, no third-party packages, and no dependency on an unmerged branch
at run time: everything read is vendored and pinned, so the measurement re-runs in a clean clone
and in CI.

It is row-dependent, and that is measured

rank3stability.json, re-derived by verify.py → check_rank3_stability and asserted:

  • the rung exists on two of the six ranked heads of A stronger complex supplier: PR200's reuse pairing on the source-assisted v4 word, complex saving 7.0991·10⁻⁴ (+1.28% over #194; no new κ, bit binds) #233; the first four miss it by one
    rank-3 child per copy
    (nine registers over the ledger's three copies) — eligibility is the
    modular condition 22 | n₃, a property of the row, not of the family;
  • where it exists the price is identical (bit-bound), although the coarse saving differs;
  • the next rung's eligibility is not stable — rank 4 is bankable only on the pinned head —
    and pricing it moves κ not at all (recorded as a negative);
  • no other width-66 row of this repository carries it: nine distinct rows are scanned, and the
    pinned ladder row is eligible at [11, 16, 20] and misses rank 3 by 39 registers.

What the measurement does not cover: any head that does not exist yet (a new head is a new
measurement, not a silent pass), and rows outside this repository.

What this does not claim

C1–C7 stay OPEN (the normalizer, the formal columns, the charts and prime witnesses, the envelope
parity and each child's frame/chain provenance) and R1–R4 are inherited verbatim from #219. No
importer exists for the rung: the row publishes 0 of 6 required exports as bodies — none of the
ten bodies across them (G1–G6) — so the gate refuses (exit 2) and reports in part when asked
(exit 4). That refusal is the correct answer, not a pass. The row's PR is
unmerged and pinned by digest, so a moved branch fails check_manifest closed and the measurement
must be re-taken. The 6,642 unpriced mixed tilings of the width-66 scan are not covered by the
measurement (two extremes per bank count are, and the artifact says so). Like every rung of this
ladder, this is a conditional priced target, not a witness, not an unconditional
multiplication theorem, not a practical multiplier, and not a Lean/kernel certificate.

Attribution and provenance

Apache-2.0. The vendored inputs — PR219's rung-1 package, PR207's frontier certificate and PR233's
row certificate plus its earlier heads — are retained byte-identically with their notices and
credits (NOTICE.md, SOURCE.json); PR233's contribution (chafreaky) is what this rung is priced
on
and is credited as such. Rung 2 and the ceiling argument are PR224's, the ladder and its
replica convention are PR208's, and the bank proof and engine chain are PR200/PR205/PR206/PR197/
PR184/PR168-v4/PR183/PR193's; nothing is re-implemented or restated as new. Prepared by Maxime
Fleury with Codebuff assistance.

Supersedes #232, which carries the same package without the rank-3 rung; #232 can be closed.

@maxime-fleury maxime-fleury changed the title The rank-3 rung on PR233's new row: kappa = 7.277211262868e-4, above the ladder top and the pinned frontier (priced target) The rank-3 rung on PR233's new row: κ = 7.277211262868e-4, above the ladder top and the pinned frontier (priced target) Oct 10, 2026
@maxime-fleury
maxime-fleury force-pushed the research/rank3-rung-new-row branch from b21f096 to 51b31f2 Compare October 10, 2026 00:40
@maxime-fleury maxime-fleury changed the title The rank-3 rung on PR233's new row: κ = 7.277211262868e-4, above the ladder top and the pinned frontier (priced target) Conditional κ = 7.277211262868e-4 on #233's source-assisted row: the rank-3 whole-bank rung (self-contained, wired into CI) Oct 10, 2026
@maxime-fleury

Copy link
Copy Markdown
Contributor Author

The three workflow runs for this head are action_required, so CI has not executed yet — the evidence below is a clean-clone replay of the CI commands.

Every run on every branch of this account has so far landed in action_required, i.e. GitHub is waiting for a maintainer to approve the first run from a new contributor; the repository's own make verify-* jobs never started, and the required git diff --exit-code step with them. One Approve and run click should execute these and let later pushes run on their own. Nothing here is a claim of a passing CI run.

Reproduced against a fresh shallow clone of exactly this head (51b31f2), CPython 3.14, POSIX shell, the two recipe lines of make verify-complex-bank-ladder verbatim, plus the trailing cleanliness step the CI job adds:

$ git clone --depth 1 --single-branch --branch research/rank3-rung-new-row \
      https://github.com/maxime-fleury/integer-mult-bounds.git
$ git log --oneline -1
51b31f2 Add the complex bank ladder package and price its rank-3 rung at 7.277211262868e-4

$ python3 -B research/complex-bank-run3/verify.py                                  # exit 0
$ python3 -B research/complex-bank-run3/importer66.py \
      --contract research/complex-bank-run3/export-contract-rank3.json --self-test  # exit 0
ok    the real drop is refused, and reportable in part
self-test: 13 checks, 0 failed

$ git status --porcelain                                                           # empty

The failure mode CI is there to catch for a package like this one is a checkout that does not reproduce the bytes the package hashes. Two checks cover that:

  • the index blobs of all 62 pinned paths hash to the digests SOURCE.json records (checked with git cat-file blob :<path>, not with the worktree), and
  • the clean clone above re-hashes the checked-out worktree and passes, so both directions — commit and checkout — reproduce the pinned bytes.

.gitattributes carries research/complex-bank-run3/** -text -whitespace for the same reason (the package hashes four gzip containers as well), following PR186's checkpoint precedent.

The tests group is unaffected apart from the new module tests/test_complex_bank_run3.py (nine isolated checks: the rebuild, the three contracts' self-tests, the refusal codes 2 and 4 with the row exporting 0 of 6 bodies, the price comparison, the rank-4 negative, and three controls that the digest gate fails closed rather than passing vacuously). The new complex-bank-ladder group runs on 3.11, 3.13 and 3.14, which is the part of this that only CI can settle: the local replay is a single interpreter on Windows.

…7211262868e-4

The package vendors every input it reads by sha256 -- the rung-1 package of CrocSwap#219, the frontier
certificate of CrocSwap#207 and the unmerged source-assisted v4 row of CrocSwap#233, its earlier heads included --
and re-derives the whole complex-side ladder offline: both paid moments per rung, the 47-constraint
assembly with adjacent-grid rejection, the padded width-66 schedule, the three export contracts and
their import gate.

On CrocSwap#233's row the first whole-bank family of the ledger is rank 3, not rank 16: 66 = 22 * 3 makes
its bank exactly filled, so the T1 padding obligation does not arise, and the point prices
1819302815717/25*10^14 = 7.277211262868e-4, bit-bound, above the ladder top and above the pinned
frontier. The rung is row-dependent and that is measured: its stability is re-taken on all six
ranked heads of CrocSwap#233 and all nine width-66 rows of this repository, and the rung above it is a
recorded negative.

The change adds three things and edits nothing: the package, a test module whose pin controls check
the digest gate fails closed, and the package's own workflow. It deliberately does not take a
Makefile target in the aggregate, because `Makefile` and `.gitattributes` are recorded by other
packages' manifests (the joint-dual and round-8 certificates among them) and editing either moves
their digests; the workflow runs the same commands on 3.11, 3.13 and 3.14 and then requires
`git diff --exit-code`.

Generated with Codebuff 🤖
Co-Authored-By: Codebuff <noreply@codebuff.com>
@maxime-fleury
maxime-fleury force-pushed the research/rank3-rung-new-row branch from 51b31f2 to 545665b Compare October 10, 2026 00:52
@maxime-fleury

Copy link
Copy Markdown
Contributor Author

Green on this head, and the upstream runs still need one approval.

An earlier head of this branch (51b31f2) failed the joint group in the fork's CI, and the fix is
worth recording because it shaped the change:

AssertionError: Makefile
  File "scripts/experiments/joint_dual_compose.py", line 70, in check_sources
    assert sha256((ROOT/name).read_bytes()).hexdigest() == digest, name

research/joint-dual/SOURCE.json records the digest of Makefile itself (and .gitattributes is
recorded by the round-8, coordinated-frames, gaussian-parity and machine-transfer manifests), so a
Makefile target in the aggregate moves those digests and breaks those groups. This head therefore
edits no existing file — the diff is +194,111/−0 over 70 new files: the package, the test
module, and the package's own path-filtered workflow. If anyone else adds a package the same way,
that is the trap to avoid.

Fork CI on this exact head (545665b) — the same workflow files, run on push:

run conclusion
Verify the complex bank ladder and its rank-3 rung success on 3.11, 3.13 and 3.14
Verify research artifacts success, 52/52 jobs — joint green again, tests green with the new module

The ladder job runs verify.py, the vendored rung-1 package's own verify.py in place, all three
contracts' thirteen self-tests, and then git diff --exit-code.

In the upstream repository the three workflow runs for this head are still action_required,
i.e. queued waiting for the first approval from a new contributor, so the required checks have not
executed here — as they have not on any of this account's PRs. One Approve and run click should
settle these and let later pushes run on their own.

Independently of either CI, the packed claim was replayed on a fresh shallow clone of this head
(Windows, CPython 3.14): verify.py exit 0, the vendored references/pr219-run1/verify.py exit 0,
three self-tests 13/13, git status --porcelain empty — and all 62 pinned paths were checked by
hashing the blobs in the index (git cat-file blob :<path>), not the worktree, so a
normalising checkout cannot hide a digest mismatch.

@maxime-fleury

Copy link
Copy Markdown
Contributor Author

Superseded by #262 (head 7437c1b): the same package plus the bit word's own retained ledger banked a second time. #219's rung-1 retained bit row carries thirteen more bankable families, the extended leaf rises 14.6550% to 8.349765438523530e-4 and clears the complex branch, so the budget becomes that branch and the point is 416977294469409/500000000000000000 = 8.339545889388e-4, binding = complex, +14.5981% over this rung's 1819302815717/25*10^14 — the last 10^-18 grid point at or below #233's row's complex ceiling. 108 of the 377 screened rungs land on that same point, so the kappa does not depend on which rung is quoted; the cheapest is ranks 7, 8 and 20 at 7,342 banks. B1 (the absorbed families' item maps, frame/chain identities and the padding inventory) is OPEN, C1-C7 and R1-R4 unchanged, and it stays a priced target, not a witness. The queue's single head for this ladder is #262.

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

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant