From 53a034436f17ef5b8fdf7a02f5066528cdfe5446 Mon Sep 17 00:00:00 2001 From: commdata2338 <199849969+commdata2338@users.noreply.github.com> Date: Sun, 25 Oct 2026 01:10:12 -0500 Subject: [PATCH] =?UTF-8?q?Research:=20audit=20PR=20#5496's=20multi-target?= =?UTF-8?q?=20CRT=20row=20join=20and=20its=20exact=20shared=20ROM-bank=20s?= =?UTF-8?q?torage=20(no=20new=20=CE=BA)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Independently audits the multi-target loop of PR #5496's current-row CRT join. Its published complete joined fixtures have one active target. Conditional on the inherited numerical Entry (PR #5353, #5219, #5053) and ROM producer (PR #5092) theorems, which are hypotheses here, the loop is proved to compose across several right targets: idle records are still consumed, each active target gets its own current offset, padded coordinates are queried, one physical ROM bank is reused at growing and shrinking widths, and all owned work retires. No defect was found. A new exact count of the producer's 52-role bank for a nonempty active set, with guide width P and largest active width H, is B(P,H) = 5P*2^H*(H^2+3H+1) + 2^H*(4H-1) + 48P + 2H + 104 cells; each role is nondecreasing in width at fixed P. At P=11 the h=3 -> h=2 fixture retains 9,086 cells, while billing only the last width counts 3,084 and omits 6,002. Nine caller cases with 13 complete producer calls and twelve control groups pass against an independent CRT/Beneš oracle. Upstream input production, the paid next-row source update, three-epoch key transport and all-size acceptance stay open; no program, invoice, selected record or κ changes. Adds research/crt-multitarget-row-audit/ only. Submitted by @commdata2338 with substantial AI assistance (OpenAI Codex research and implementation; packaged with Claude Code). Co-Authored-By: Claude Opus 5.5 (1M context) Claude-Session: https://claude.ai/code/session_01Jur4aiU6BBSmBiaRjkbECf --- research/crt-multitarget-row-audit/PROOF.md | 302 +++ research/crt-multitarget-row-audit/README.md | 153 ++ .../crt-multitarget-row-audit/RESULT.json | 1835 +++++++++++++++++ .../crt-multitarget-row-audit/SOURCES.json | 114 + research/crt-multitarget-row-audit/TASK.json | 139 ++ .../crt-multitarget-row-audit/VENDORED.json | 27 + .../crt-multitarget-row-audit/VERIFY.json | 45 + .../vendor/NOTICE.md | 14 + .../vendor/pr5496-PROOF.md | 226 ++ .../vendor/pr5496-README.md | 68 + .../vendor/pr5496-join.py | 224 ++ research/crt-multitarget-row-audit/verify.py | 408 ++++ 12 files changed, 3555 insertions(+) create mode 100644 research/crt-multitarget-row-audit/PROOF.md create mode 100644 research/crt-multitarget-row-audit/README.md create mode 100644 research/crt-multitarget-row-audit/RESULT.json create mode 100644 research/crt-multitarget-row-audit/SOURCES.json create mode 100644 research/crt-multitarget-row-audit/TASK.json create mode 100644 research/crt-multitarget-row-audit/VENDORED.json create mode 100644 research/crt-multitarget-row-audit/VERIFY.json create mode 100644 research/crt-multitarget-row-audit/vendor/NOTICE.md create mode 100644 research/crt-multitarget-row-audit/vendor/pr5496-PROOF.md create mode 100644 research/crt-multitarget-row-audit/vendor/pr5496-README.md create mode 100644 research/crt-multitarget-row-audit/vendor/pr5496-join.py create mode 100644 research/crt-multitarget-row-audit/verify.py diff --git a/research/crt-multitarget-row-audit/PROOF.md b/research/crt-multitarget-row-audit/PROOF.md new file mode 100644 index 0000000000..77adf1bcd4 --- /dev/null +++ b/research/crt-multitarget-row-audit/PROOF.md @@ -0,0 +1,302 @@ +# Multi-target composition at the current CRT row boundary + +This is an independent, source-relative audit of JoyboyBrian's PR #5496, +head `a99afd7e0024af8367d5a2f6f4d2da57a1d13dd5`. The unchanged program and +the exact claim audited are retained in `vendor/`. We found no defect in +the implication below. The inherited numerical and ROM-producer theorems +remain hypotheses; this is not an independent acceptance of those theorems, +of #4100, or of a complete multiplication algorithm. + +## Statement and inherited contracts + +Let `d` be a power of two, `ell >= 2`, and `h_i in {ell-1,ell}`. At every +axis let `2 <= s_i < 2^h_i`, with all moduli pairwise coprime, and let +`0 <= x_i < 2^h_i`. Fix an admitted tree node `[a,a+n)`, `n=2^level >= 2`, +with `b=a+n/2`, and a global row `0 <= g < 2ell-1`. Put + + P = 1 + sum_{a <= i < a+n} h_i. + +Use the sequential axis-record format of PR5353, eight distinct protected +numerical ports, the fixed compiled topology, and initially blank new +owned backing. The source and all ports have their specified entry heads. +Assume these two source contracts: + +1. **Numerical Entry.** PR5353/PR5219/PR5053 produce one P-bit `(c_i,v_i)` + record for **every** right axis `b <= i < a+n`, including idle axes. + If the left coordinates are valid, their current child is the unique + `k in [0,M)`, `M=product_{a <= j < b} s_j`, satisfying + + k = x_i product_{a <= j < i} s_j (mod s_i), a <= i < b. + + If any left coordinate is padded, `k=0`. Each offset is + + c_i = k (product_{a <= j < i} s_j)^(-1) mod s_i. + + `v_i` is the complete-rotation output, not the micro-row output. + Entry supplies its stated input preservation, numerical ownership and + retirement guarantees. +2. **ROM producer.** PR5092 accepts its encoded headers with `W>=h+3`, + legal modulus, selector and offsets; it returns the canonical complete + Beneš layers and selected row on the supplied output backings. It + preserves its headers, returns all heads to zero, and erases private + work. Blank tails beyond the current records are permitted. Its literal + loops terminate at their record markers, rather than the allocated list + length. This last fact is also directly visible in `microcode.py`. + +The conclusion is the original #5496 multi-target interface: if at least +one right axis is active, `RowQuery` returns the exact current micro-row +output for every right axis in order, copying idle axes unchanged. It +uses one producer bank throughout that row, returns the borrowed bytes +and heads, and retires all joined owned work on `close`. An all-idle row +performs no tape work and allocates no numerical or ROM bank. + +This quantifies over all admitted parameters and padded current values, +conditional on the two contracts. The finite executions below corroborate +the implication; they are not the reason the quantifier holds. + +## Width and synchronized-row checks + +Admissibility forces every `h_i >= 2`: there is no integer `s_i` with +`2 <= s_i < 2^1`. A node contains another axis besides any chosen target, +so `P >= h_i+3`. Thus `W=P` meets the unchanged ROM producer's guard, +including the minimum case `P=5,h_i=2`. The encoded constants `h_i` and +the local row fit P bits. Offsets are in `[0,s_i)` by the Entry contract. + +For a long axis the local row is `g`. For a short axis the two global +rows `ell-1,ell` are idle; the remaining local rows are `g` before that +gap and `g-2` afterward. This lists `0,...,2h_i-2` exactly once. On every +active row the target bit + + min(local, 2h_i-2-local) + +equals the corresponding global schedule bit `min(g,2ell-2-g)`. These +are the exact predicates and formulas used by the source loop. + +## Induction over the literal axis loop + +Immediately before parsing axis j, maintain these facts: + +* The borrowed source head is at that axis's ROOT, with all bytes unchanged. + The unary guide is back at its initial head. +* The numerical result head is at the first unconsumed right-axis record. + Exactly one record has been consumed for each earlier **right** axis, + whether active or idle. Axes outside the node consume no result record. +* The open output stream consists of exactly the processed right-axis + outputs, each in its declared `h_i` bits and followed by `|`; its head + is at the next blank output position. +* Coordinate/countdown scratch and all four headers are blank at origin. + After every completed active target, the same physical producer roles + are blank at origin, including both outputs and every previously exposed + tail. The numerical result remains live until the entire loop ends. + +The first state follows from Entry's return and the fresh joined ports. +There are three induction steps. + +**An axis outside the right half.** The loop reads its declared width, +modulus and coordinate once, changes no source byte, and advances to the +next ROOT. It consumes no numerical record and emits nothing. + +**An idle right axis.** The loop copies its h-bit coordinate to the +coordinate port, skips exactly P offset bits and their delimiter, then +skips exactly P complete-rotation bits and their delimiter. It checks and +crosses RECORD_END. The coordinate is appended unchanged to the output, +followed by `|`, and its scratch is erased. In particular, skipping the +ROM call does **not** skip the numerical record. This is the boundary a +single-target/all-idle test does not exercise: there can be a later active +axis whose record must still be aligned. + +**An active right axis.** The loop copies the current modulus, offset, +and compiled row/width to the producer's four headers, padded against the +same unary P guide. It separately copies the current coordinate into the +coordinate and countdown ports. The preceding width argument establishes +the producer's complete header domain. The private bank and output roles +are blank by the invariant, so the producer contract applies on the +original backing objects. + +The selected ROM contains exactly `2^h_i` row bits. At ROM position j, +until selection, the countdown equals `x_i-j`. A nonzero word is +decremented with ordinary borrow propagation; zero selects the current +row bit and disables further countdown changes. Since `x_i<2^h_i`, +selection occurs exactly once before the ROM end marker. Both heads +return, and countdown scratch is erased. XOR at the compiled target bit +therefore gives exactly this micro-row's output. There is no `x_i h=2 fixture at P=11 retains **9,086 bank cells** after its +second call. Charging only the last target's fresh requirement, 3,084, +omits 6,002 retained cells. The reverse order grows 3,084 -> 9,086. +At P=5,h=2 the exact bank is 1,476 cells. The checker verifies every role's +extent at every actual invocation, (1), (2), the disjoint storage partition +and these rejecting controls. The numerical Entry remains separately +charged. Arbitrary changing-precision numerical histories (JoyboyBrian's #5505) and +separately allocated later RowQuery instances are outside this lemma. + +## Independent finite oracle and controls + +No #5496 verifier, retained Caller oracle, `decode_group` or source Beneš +routine is executed. The finite CRT oracle enumerates k satisfying the +displayed congruences, and enumerates the unique permitted offset. For +each small permutation, the network oracle exhausts all binary color +tuples and takes the lexicographically least tuple satisfying both input +and output perfect matchings. Each component has two complementary +colorings, so this is exactly color zero at its least vertex, independently +of the source DFS's order. Recursing on the two matched children therefore +reconstructs the canonical layers by a separate code path. All small +oracle layers are also composed directly and checked against the rotation. + +Read-only observers decode actual producer headers and inspect its actual +outputs before disposal. They check complete layers, selected row, header +preservation, returned heads, private blanking, identical backing objects, +and historical tails. They never provide a successful execution's values, +tables or branches. Input serialization belongs to the test harness and +is not billed as a new machine implementation. + +The actual cases cover two active targets, growing and shrinking widths, +an idle axis before/after an active one, invalid left padding, current +padded targets, all-idle behavior, and a nonroot node at `W=h+3` equality. +Seven execution mutations distinguish stale offsets, wrong row, suppressed +padded queries, missing full-layer disposal, missing result retirement, +skipping an idle offset record and replacement backing. Two algebraic +discriminators separate current-child semantics and the full right prefix; +two storage controls reject last-width-only and omitted-spool bills; +one receipt control separates JSON booleans from integers. + +The exact values and counts are frozen in RESULT.json. No h=4 pipeline, +uninterrupted whole level, production-size geometry, raw compact S, +three-epoch key, binary numerical compiler, full E(p,ell) tariff, native +supplier, outer theorem or formal-kernel check is established here. + +## Credit + +The theorem being audited and the joined implementation are JoyboyBrian's +#5496. Ali Romman supplies #5353's RowEntry. JoyboyBrian supplies #5092's +ROM producer and #5053/#5219's numerical producer/entry. Hiroki KUMAZAKI +supplies the current-state CRT contract (#4716) and the #4169/#4174 audits; +ToikY supplies the explicit-width mixed caller (#4195) and the arena +refinement (#4192); Cinna Davis supplies #4100's CRT/Beneš construction. +The retained physical/repair lineage includes Tekalign, Jose Manuel, +Ryanson Jonathan, unpaidmoon, Douglas Colkitt and John-Michael Smith. + +Prepared for commdata2338 (@commdata2338), with substantial OpenAI Codex +assistance. Apache-2.0. No independent human or formal-kernel review is claimed. diff --git a/research/crt-multitarget-row-audit/README.md b/research/crt-multitarget-row-audit/README.md new file mode 100644 index 0000000000..fd052021bd --- /dev/null +++ b/research/crt-multitarget-row-audit/README.md @@ -0,0 +1,153 @@ +# Independent audit of the multi-target CRT row join + +**Scoped positive proof audit with finite exact corroboration; no new κ.** +PR #5496's current-row join composes across multiple right targets, including +mixed active/idle axes and a producer bank reused at growing or shrinking +widths, conditional on its inherited numerical Entry and ROM-producer +contracts. No defect was found in that implication. This is a separate +AI-assisted audit, not independent human or formal-kernel acceptance. + +The audited source is JoyboyBrian's [PR #5496](https://github.com/CrocSwap/integer-mult-bounds/pull/5496) +at `a99afd7e0024af8367d5a2f6f4d2da57a1d13dd5`. Its published complete +joined fixtures have one active target at a time, and its h=4 four-axis +attempt did not complete. This audit adds the explicit target-loop +invariant, an exact retained-bank footprint, and executed multi-target +coverage. It does not redo the construction or present a larger parameter +sample as a universal proof. + +[PROOF.md](PROOF.md) derives the all-admitted-parameter composition from +the two named source contracts. An idle target still consumes its entire +numerical record; the next active target therefore receives its own +offset. Every producer call returns to the same bank, with all old tails +blank, before the next target starts. Current padded coordinates are +queried, and the numerical whole-rotation field is never substituted for +one micro-row. The scope is one successful row invocation and its retirement. + +For the unchanged producer's 52-role bank, including all four headers, +let P be the node's guide width and H its largest active target width. +The exact retained count is + +```text +B(P,H) = 5 P 2^H (H^2+3H+1) + 2^H(4H-1) + 48P + 2H + 104. +``` + +Every role's extent is nondecreasing in h at fixed P; that proved property +allows a widest-target bound for this specific bank. The h=3 -> h=2 case +at P=11 still retains 9,086 cells; billing just the final target would count +3,084 and omit 6,002. The three other joined ports are counted separately +and exactly in the proof. These are finite-symbol tape cells, excluding +the numerical Entry and interpreter metadata. No program or recursive +invoice is changed. + +## Evidence + +[verify.py](verify.py) executes the unchanged join and unchanged numerical +and encoded-ROM producers. Its independent oracle searches the small CRT +congruences and exhausts the two-matching color constraints to reconstruct +canonical Beneš layers. It imports neither #5496's verifier nor the +retained Caller/CRT/Beneš reference implementations. Read-only observers +check the actual headers, every produced layer, selected ROM, bank identity, +heads, private work and historical tails before the caller disposes of them. + +The frozen [RESULT.json](RESULT.json) contains nine actual caller cases and +13 complete producer invocations. Representative root-node results are: + +| Case | Moduli; declared widths | Current state; global row | Right output | +|---|---|---|---| +| Two distinct offsets | `(5,7,3,2); (3,3,2,2)` | `(3,2,1,1); 4` | `(1,0)` | +| Shrinking bank | `(2,5,7,3); (2,3,3,2)` | `(1,4,7,3); 4` | `(6,3)` | +| Growing bank | `(2,5,3,7); (2,3,2,3)` | `(1,4,3,7); 4` | `(3,6)` | +| Leading idle target | `(2,5,3,7); (2,3,2,3)` | `(1,4,3,7); 2` | `(3,7)` | +| Trailing idle target | `(2,5,7,3); (2,3,3,2)` | `(1,4,7,3); 2` | `(3,3)` | + +Other cases cover invalid left padding, an all-idle row with zero tape +work, and a nonroot node at the minimum guide `W=P=h+3=5`. All 63 +numerical owned ports retire. The finite oracle independently checks 32 +networks at all 236 input addresses. Seven execution mutations, two +algebraic discriminators, two storage controls and one typed-receipt control +pass. They detect stale offsets, wrong row selection, suppressed padded queries, omitted +layer/result disposal, skipped idle records, replacement backing, omitted +right prefixes, original/current-coordinate confusion, and boolean/integer +receipt confusion. The storage controls reject a last-target-only bill +and omission of the retained spool. + +The adapter's tape actions are measured separately from the expensive +Entry and ROM calls and remain within the inherited `4096F` allowance. +This does not independently certify its full control-instruction constant +or the inherited arithmetic bill. Distinct backing identities and an +independent bank-plus-three-extras partition prevent alias double counting +and omitted producer storage. + +## Reproduce + +Python 3.12, standard library only, from the repository root: + +```sh +python3 -B scripts/research_package.py --package research/crt-multitarget-row-audit --check-only +python3 -B scripts/research_package.py --package research/crt-multitarget-row-audit +``` + +The registered replay runs normal and optimized Python serially, with a +300-second limit for each. Each concludes: + +```text +PASS_CRT_MULTITARGET_ROW_AUDIT cases=9 producer_calls=13 controls=12 no_new_kappa=true +``` + +The normal replay compares the existing receipt and writes no evidence. +`--write-result` explicitly regenerates it. `--case growing_bank` selects +one diagnostic without claiming the complete package pass. + +The audited pending source is vendored byte-for-byte, with its original +credit, paths, commit, Git blobs and hashes in [VENDORED.json](VENDORED.json). +The twelve scientific main-branch inputs are pinned in [SOURCES.json](SOURCES.json) +and declared in [VERIFY.json](VERIFY.json). The export also retains the +repository license and three original source notices. No pending Git object +or live GitHub access is required for direct replay. Generic provenance validation +still requires the package's main-branch Git history. + +## Scope and remaining obligations + +The base is `32890bc5de034ab8fc93ac88ead7279a6a416d04`, priority revision 7; +the task is `uniform-transfer-audit`, refined to this actual CRT caller. +[TASK.json](TASK.json) records selection and overlap. Coordination is in +[Discussion #4709](https://github.com/CrocSwap/integer-mult-bounds/discussions/4709), +following #5496's comment 19173182. JoyboyBrian's #5505 (cross-session +numerical bank reuse) and #5486 (fixed repair binary lowering) are +separate work. + +The numerical and producer theorems, initial encoded input production, +uninterrupted whole-level updates, three-epoch key transport, production +geometry, binary numerical compilation, complete E(p,ell), native/outer +admission and the full multiplication theorem are not independently +validated here. No h=4 joined replay, Lean build or selected replay is run. +The selected record and all frozen predecessor files are unchanged. + +## Open next questions + +1. Connect this returned coordinate stream to a paid update of the actual + axis-record source, then invoke the next row without host serialization. + This would test the next physical caller boundary. Start with the + five-row mixed h=3/h=2 example; the source ownership/update contract is + the missing premise. PR5496 already identifies this task; it remains open. +2. Join one complete three-epoch exceptional key to these actual current-row + inputs. Start with PR4716's two stale-offset discriminators and explicitly + price each source-coordinate conversion and restoration. A proved + single-row loop does not supply those changing-left-state descriptors. + +The family decision is to stop after this audit; neither a larger ROM +sample nor a complete ordinary/outer run is justified by this result alone. + +## Credit + +Prepared for commdata2338 (@commdata2338), with substantial OpenAI Codex assistance. + +JoyboyBrian supplies #5496's join, #5092's ROM producer and #5053/#5219's +numerical components. Ali Romman supplies #5353's actual RowEntry. +Hiroki KUMAZAKI supplies the current-state CRT contract (#4716) and the +#4169/#4174 repair and mixed-width reservoir audits; Cinna Davis supplies +#4100's construction; ToikY supplies the explicit-width mixed caller +(#4195) and the Beneš arena refinement (#4192). Tekalign, Jose Manuel, Ryanson Jonathan, unpaidmoon, Douglas +Colkitt, John-Michael Smith and the retained source notices preserve the +physical/repair lineage. [vendor/NOTICE.md](vendor/NOTICE.md) identifies +the copied material. Apache-2.0. No independent human review is claimed. diff --git a/research/crt-multitarget-row-audit/RESULT.json b/research/crt-multitarget-row-audit/RESULT.json new file mode 100644 index 0000000000..ed91a218b6 --- /dev/null +++ b/research/crt-multitarget-row-audit/RESULT.json @@ -0,0 +1,1835 @@ +{ + "status": "PASS_CRT_MULTITARGET_ROW_AUDIT", + "sources": { + "research/crt-encoded-benes-rom-producer/PROOF.md": "93bd340ac9b77f8f781926aeb7327325789b331863b3088fed1809eefb789bd2", + "research/crt-encoded-benes-rom-producer/microcode.py": "d4af5350854a87b67484840800b94e1e53cff82c78ec0f2a91753fed9ea70af7", + "research/crt-mixed-row-entry/PROOF.md": "8a529ece497c62d5225261cdacebfd88979322b3a8886d1a31eb6295f1989e4b", + "research/crt-mixed-row-entry/bridge.py": "89c38638c0d66da731566c903c32e7fa1ad31088d29cfd2634fce823dd07c1f9", + "research/crt-mixed-width-caller/verify.py": "5e62787f3c4a8f1175ca7dea6c6b8ceff7863a3f879abd6245faf6aeb272fd45", + "research/encoded-crt-entry-lifecycle/PROOF.md": "a619be48c8c85749ea5411929aa6ff3986443b467133d32d19d543250b0054b0", + "research/encoded-crt-entry-lifecycle/entry.py": "0537ec98f306270c8ff6a424841886cf53f675d9947029347090c7dc779616d7", + "research/encoded-current-crt/PROOF.md": "7da614e737414a373c8716158f2c02a52666620ea1f114fac7ca09b3b38489bc", + "research/encoded-current-crt/producer.py": "88dab4ca02a92164a67826db361214fa1405e4b4a588f8c4279a21bcee95ab76", + "research/r437-preparation-composition/predecessor4025/source/records.py": "0c9c4b23e998597fb877bb1a29da69ac869b68262abe635b162b4dba9c69b372", + "research/r437-preparation-composition/predecessor4025/source/words.py": "5c37f57708ba3131bdcb03139f9dbc29886bee44569c09cbba51b68f75acd7f9", + "research/unconditional-batched-crt/CRT.md": "02c3a1e38cbee25aefe2640cc72676da62ba10eb7519fbcb9adb9d48b74eff2b", + "vendor/pr5496-join.py": "11c9ac1175a45edae80869b22c041e31a1b5cc75f4389ec2e073de37e547bf35", + "vendor/pr5496-PROOF.md": "6aaa6253bf5f64f07cbfbf0a98a7c464e5a78cfa05c398f7eb41a27f03a7379c", + "vendor/pr5496-README.md": "41a14eb0d72c1ecce16a791b8f32d84f8c0b4e089c5e66a19067218e56d48db0" + }, + "oracle": { + "networks": 32, + "addresses": 236 + }, + "cases": [ + { + "name": "two_short_first", + "idle": false, + "lower": 11, + "precision": 11, + "offsets": [ + 1, + 1 + ], + "output": [ + 3, + 1 + ], + "calls": [ + { + "axis": 2, + "headers": { + "h": 2, + "modulus": 3, + "selected_layer": 0, + "offsets": 1 + }, + "instructions": 4841091, + "before_extents": { + "zero": 1, + "one": 1, + "two": 1, + "root": 1, + "n": 1, + "remaining": 1, + "depth": 1, + "height": 1, + "low": 1, + "high": 1, + "size": 1, + "cur_node": 1, + "init_kind": 1, + "init_layer": 1, + "init_index": 1, + "init_value": 1, + "limit": 1, + "xloop": 1, + "yloop": 1, + "px": 1, + "py": 1, + "node": 1, + "kind": 1, + "layer": 1, + "index": 1, + "value": 1, + "x": 1, + "other": 1, + "opposite": 1, + "color": 1, + "initial": 1, + "top": 1, + "off": 1, + "permuted": 1, + "addition": 1, + "child": 1, + "child_index": 1, + "inverse": 1, + "last": 1, + "outlayer": 1, + "layloop": 1, + "layers_count": 1, + "column": 1, + "check": 1, + "arena": 1, + "spool": 1, + "layers": 1, + "rom": 1, + "h": 13, + "modulus": 13, + "selected_layer": 13, + "offsets": 14 + }, + "after_extents": { + "zero": 13, + "one": 13, + "two": 13, + "root": 13, + "n": 13, + "remaining": 13, + "depth": 13, + "height": 13, + "low": 13, + "high": 13, + "size": 13, + "cur_node": 13, + "init_kind": 13, + "init_layer": 13, + "init_index": 13, + "init_value": 13, + "limit": 13, + "xloop": 13, + "yloop": 13, + "px": 13, + "py": 13, + "node": 13, + "kind": 13, + "layer": 13, + "index": 13, + "value": 13, + "x": 13, + "other": 13, + "opposite": 13, + "color": 13, + "initial": 13, + "top": 13, + "off": 13, + "permuted": 13, + "addition": 13, + "child": 13, + "child_index": 13, + "inverse": 13, + "last": 13, + "outlayer": 13, + "layloop": 13, + "layers_count": 13, + "column": 13, + "check": 13, + "arena": 2422, + "spool": 14, + "layers": 17, + "rom": 6, + "h": 13, + "modulus": 13, + "selected_layer": 13, + "offsets": 14 + }, + "rom_sha256": "dde2ad20159724d288bd6145d77bd8e8bec7db9a36ceb42ebc2c6d3c045d46b1" + }, + { + "axis": 3, + "headers": { + "h": 2, + "modulus": 2, + "selected_layer": 0, + "offsets": 1 + }, + "instructions": 4840616, + "before_extents": { + "zero": 13, + "one": 13, + "two": 13, + "root": 13, + "n": 13, + "remaining": 13, + "depth": 13, + "height": 13, + "low": 13, + "high": 13, + "size": 13, + "cur_node": 13, + "init_kind": 13, + "init_layer": 13, + "init_index": 13, + "init_value": 13, + "limit": 13, + "xloop": 13, + "yloop": 13, + "px": 13, + "py": 13, + "node": 13, + "kind": 13, + "layer": 13, + "index": 13, + "value": 13, + "x": 13, + "other": 13, + "opposite": 13, + "color": 13, + "initial": 13, + "top": 13, + "off": 13, + "permuted": 13, + "addition": 13, + "child": 13, + "child_index": 13, + "inverse": 13, + "last": 13, + "outlayer": 13, + "layloop": 13, + "layers_count": 13, + "column": 13, + "check": 13, + "arena": 2422, + "spool": 14, + "layers": 17, + "rom": 6, + "h": 13, + "modulus": 13, + "selected_layer": 13, + "offsets": 14 + }, + "after_extents": { + "zero": 13, + "one": 13, + "two": 13, + "root": 13, + "n": 13, + "remaining": 13, + "depth": 13, + "height": 13, + "low": 13, + "high": 13, + "size": 13, + "cur_node": 13, + "init_kind": 13, + "init_layer": 13, + "init_index": 13, + "init_value": 13, + "limit": 13, + "xloop": 13, + "yloop": 13, + "px": 13, + "py": 13, + "node": 13, + "kind": 13, + "layer": 13, + "index": 13, + "value": 13, + "x": 13, + "other": 13, + "opposite": 13, + "color": 13, + "initial": 13, + "top": 13, + "off": 13, + "permuted": 13, + "addition": 13, + "child": 13, + "child_index": 13, + "inverse": 13, + "last": 13, + "outlayer": 13, + "layloop": 13, + "layers_count": 13, + "column": 13, + "check": 13, + "arena": 2422, + "spool": 14, + "layers": 17, + "rom": 6, + "h": 13, + "modulus": 13, + "selected_layer": 13, + "offsets": 14 + }, + "rom_sha256": "93e452c83710ef6b736c4defcb57da7a2d7c46f9c143051960441230c2bccba4" + } + ], + "adapter_tape_actions": 2421, + "adapter_bound": 749568, + "owned_retained_cells": 4052, + "numerical_owned_roles": 63, + "producer_retained_cells": 3084, + "extra_retained_cells": 16, + "expected_query_coordinates": [ + 2, + 1 + ] + }, + { + "name": "two_short_distinct_offsets", + "idle": false, + "lower": 3, + "precision": 11, + "offsets": [ + 0, + 1 + ], + "output": [ + 1, + 0 + ], + "calls": [ + { + "axis": 2, + "headers": { + "h": 2, + "modulus": 3, + "selected_layer": 2, + "offsets": 0 + }, + "instructions": 4840097, + "before_extents": { + "zero": 1, + "one": 1, + "two": 1, + "root": 1, + "n": 1, + "remaining": 1, + "depth": 1, + "height": 1, + "low": 1, + "high": 1, + "size": 1, + "cur_node": 1, + "init_kind": 1, + "init_layer": 1, + "init_index": 1, + "init_value": 1, + "limit": 1, + "xloop": 1, + "yloop": 1, + "px": 1, + "py": 1, + "node": 1, + "kind": 1, + "layer": 1, + "index": 1, + "value": 1, + "x": 1, + "other": 1, + "opposite": 1, + "color": 1, + "initial": 1, + "top": 1, + "off": 1, + "permuted": 1, + "addition": 1, + "child": 1, + "child_index": 1, + "inverse": 1, + "last": 1, + "outlayer": 1, + "layloop": 1, + "layers_count": 1, + "column": 1, + "check": 1, + "arena": 1, + "spool": 1, + "layers": 1, + "rom": 1, + "h": 13, + "modulus": 13, + "selected_layer": 13, + "offsets": 14 + }, + "after_extents": { + "zero": 13, + "one": 13, + "two": 13, + "root": 13, + "n": 13, + "remaining": 13, + "depth": 13, + "height": 13, + "low": 13, + "high": 13, + "size": 13, + "cur_node": 13, + "init_kind": 13, + "init_layer": 13, + "init_index": 13, + "init_value": 13, + "limit": 13, + "xloop": 13, + "yloop": 13, + "px": 13, + "py": 13, + "node": 13, + "kind": 13, + "layer": 13, + "index": 13, + "value": 13, + "x": 13, + "other": 13, + "opposite": 13, + "color": 13, + "initial": 13, + "top": 13, + "off": 13, + "permuted": 13, + "addition": 13, + "child": 13, + "child_index": 13, + "inverse": 13, + "last": 13, + "outlayer": 13, + "layloop": 13, + "layers_count": 13, + "column": 13, + "check": 13, + "arena": 2422, + "spool": 14, + "layers": 17, + "rom": 6, + "h": 13, + "modulus": 13, + "selected_layer": 13, + "offsets": 14 + }, + "rom_sha256": "93e452c83710ef6b736c4defcb57da7a2d7c46f9c143051960441230c2bccba4" + }, + { + "axis": 3, + "headers": { + "h": 2, + "modulus": 2, + "selected_layer": 2, + "offsets": 1 + }, + "instructions": 4840617, + "before_extents": { + "zero": 13, + "one": 13, + "two": 13, + "root": 13, + "n": 13, + "remaining": 13, + "depth": 13, + "height": 13, + "low": 13, + "high": 13, + "size": 13, + "cur_node": 13, + "init_kind": 13, + "init_layer": 13, + "init_index": 13, + "init_value": 13, + "limit": 13, + "xloop": 13, + "yloop": 13, + "px": 13, + "py": 13, + "node": 13, + "kind": 13, + "layer": 13, + "index": 13, + "value": 13, + "x": 13, + "other": 13, + "opposite": 13, + "color": 13, + "initial": 13, + "top": 13, + "off": 13, + "permuted": 13, + "addition": 13, + "child": 13, + "child_index": 13, + "inverse": 13, + "last": 13, + "outlayer": 13, + "layloop": 13, + "layers_count": 13, + "column": 13, + "check": 13, + "arena": 2422, + "spool": 14, + "layers": 17, + "rom": 6, + "h": 13, + "modulus": 13, + "selected_layer": 13, + "offsets": 14 + }, + "after_extents": { + "zero": 13, + "one": 13, + "two": 13, + "root": 13, + "n": 13, + "remaining": 13, + "depth": 13, + "height": 13, + "low": 13, + "high": 13, + "size": 13, + "cur_node": 13, + "init_kind": 13, + "init_layer": 13, + "init_index": 13, + "init_value": 13, + "limit": 13, + "xloop": 13, + "yloop": 13, + "px": 13, + "py": 13, + "node": 13, + "kind": 13, + "layer": 13, + "index": 13, + "value": 13, + "x": 13, + "other": 13, + "opposite": 13, + "color": 13, + "initial": 13, + "top": 13, + "off": 13, + "permuted": 13, + "addition": 13, + "child": 13, + "child_index": 13, + "inverse": 13, + "last": 13, + "outlayer": 13, + "layloop": 13, + "layers_count": 13, + "column": 13, + "check": 13, + "arena": 2422, + "spool": 14, + "layers": 17, + "rom": 6, + "h": 13, + "modulus": 13, + "selected_layer": 13, + "offsets": 14 + }, + "rom_sha256": "5017425c34a54778a5b1aad8170a2c8f8ef83f00aa88b1e49c00774e5fe73e33" + } + ], + "adapter_tape_actions": 2394, + "adapter_bound": 749568, + "owned_retained_cells": 4051, + "numerical_owned_roles": 63, + "producer_retained_cells": 3084, + "extra_retained_cells": 16, + "expected_query_coordinates": [ + 1, + 1 + ] + }, + { + "name": "shrinking_bank", + "idle": false, + "lower": 3, + "precision": 11, + "offsets": [ + 1, + 0 + ], + "output": [ + 6, + 3 + ], + "calls": [ + { + "axis": 2, + "headers": { + "h": 3, + "modulus": 7, + "selected_layer": 4, + "offsets": 1 + }, + "instructions": 64964341, + "before_extents": { + "zero": 1, + "one": 1, + "two": 1, + "root": 1, + "n": 1, + "remaining": 1, + "depth": 1, + "height": 1, + "low": 1, + "high": 1, + "size": 1, + "cur_node": 1, + "init_kind": 1, + "init_layer": 1, + "init_index": 1, + "init_value": 1, + "limit": 1, + "xloop": 1, + "yloop": 1, + "px": 1, + "py": 1, + "node": 1, + "kind": 1, + "layer": 1, + "index": 1, + "value": 1, + "x": 1, + "other": 1, + "opposite": 1, + "color": 1, + "initial": 1, + "top": 1, + "off": 1, + "permuted": 1, + "addition": 1, + "child": 1, + "child_index": 1, + "inverse": 1, + "last": 1, + "outlayer": 1, + "layloop": 1, + "layers_count": 1, + "column": 1, + "check": 1, + "arena": 1, + "spool": 1, + "layers": 1, + "rom": 1, + "h": 13, + "modulus": 13, + "selected_layer": 13, + "offsets": 14 + }, + "after_extents": { + "zero": 13, + "one": 13, + "two": 13, + "root": 13, + "n": 13, + "remaining": 13, + "depth": 13, + "height": 13, + "low": 13, + "high": 13, + "size": 13, + "cur_node": 13, + "init_kind": 13, + "init_layer": 13, + "init_index": 13, + "init_value": 13, + "limit": 13, + "xloop": 13, + "yloop": 13, + "px": 13, + "py": 13, + "node": 13, + "kind": 13, + "layer": 13, + "index": 13, + "value": 13, + "x": 13, + "other": 13, + "opposite": 13, + "color": 13, + "initial": 13, + "top": 13, + "off": 13, + "permuted": 13, + "addition": 13, + "child": 13, + "child_index": 13, + "inverse": 13, + "last": 13, + "outlayer": 13, + "layloop": 13, + "layers_count": 13, + "column": 13, + "check": 13, + "arena": 8362, + "spool": 42, + "layers": 47, + "rom": 10, + "h": 13, + "modulus": 13, + "selected_layer": 13, + "offsets": 14 + }, + "rom_sha256": "09fd8e4e5c2c1c30bdd3d930b7874ec4c272a610da1058565b4c8e3d228b6865" + }, + { + "axis": 3, + "headers": { + "h": 2, + "modulus": 3, + "selected_layer": 2, + "offsets": 0 + }, + "instructions": 4840097, + "before_extents": { + "zero": 13, + "one": 13, + "two": 13, + "root": 13, + "n": 13, + "remaining": 13, + "depth": 13, + "height": 13, + "low": 13, + "high": 13, + "size": 13, + "cur_node": 13, + "init_kind": 13, + "init_layer": 13, + "init_index": 13, + "init_value": 13, + "limit": 13, + "xloop": 13, + "yloop": 13, + "px": 13, + "py": 13, + "node": 13, + "kind": 13, + "layer": 13, + "index": 13, + "value": 13, + "x": 13, + "other": 13, + "opposite": 13, + "color": 13, + "initial": 13, + "top": 13, + "off": 13, + "permuted": 13, + "addition": 13, + "child": 13, + "child_index": 13, + "inverse": 13, + "last": 13, + "outlayer": 13, + "layloop": 13, + "layers_count": 13, + "column": 13, + "check": 13, + "arena": 8362, + "spool": 42, + "layers": 47, + "rom": 10, + "h": 13, + "modulus": 13, + "selected_layer": 13, + "offsets": 14 + }, + "after_extents": { + "zero": 13, + "one": 13, + "two": 13, + "root": 13, + "n": 13, + "remaining": 13, + "depth": 13, + "height": 13, + "low": 13, + "high": 13, + "size": 13, + "cur_node": 13, + "init_kind": 13, + "init_layer": 13, + "init_index": 13, + "init_value": 13, + "limit": 13, + "xloop": 13, + "yloop": 13, + "px": 13, + "py": 13, + "node": 13, + "kind": 13, + "layer": 13, + "index": 13, + "value": 13, + "x": 13, + "other": 13, + "opposite": 13, + "color": 13, + "initial": 13, + "top": 13, + "off": 13, + "permuted": 13, + "addition": 13, + "child": 13, + "child_index": 13, + "inverse": 13, + "last": 13, + "outlayer": 13, + "layloop": 13, + "layers_count": 13, + "column": 13, + "check": 13, + "arena": 8362, + "spool": 42, + "layers": 47, + "rom": 10, + "h": 13, + "modulus": 13, + "selected_layer": 13, + "offsets": 14 + }, + "rom_sha256": "37631d3c52ba6f3c5bd563f6018a099d730314a2dcb08d1403d9ad92fc68ec00" + } + ], + "adapter_tape_actions": 2847, + "adapter_bound": 958464, + "owned_retained_cells": 10059, + "numerical_owned_roles": 63, + "producer_retained_cells": 9086, + "extra_retained_cells": 19, + "expected_query_coordinates": [ + 7, + 3 + ] + }, + { + "name": "growing_bank", + "idle": false, + "lower": 3, + "precision": 11, + "offsets": [ + 0, + 5 + ], + "output": [ + 3, + 6 + ], + "calls": [ + { + "axis": 2, + "headers": { + "h": 2, + "modulus": 3, + "selected_layer": 2, + "offsets": 0 + }, + "instructions": 4840097, + "before_extents": { + "zero": 1, + "one": 1, + "two": 1, + "root": 1, + "n": 1, + "remaining": 1, + "depth": 1, + "height": 1, + "low": 1, + "high": 1, + "size": 1, + "cur_node": 1, + "init_kind": 1, + "init_layer": 1, + "init_index": 1, + "init_value": 1, + "limit": 1, + "xloop": 1, + "yloop": 1, + "px": 1, + "py": 1, + "node": 1, + "kind": 1, + "layer": 1, + "index": 1, + "value": 1, + "x": 1, + "other": 1, + "opposite": 1, + "color": 1, + "initial": 1, + "top": 1, + "off": 1, + "permuted": 1, + "addition": 1, + "child": 1, + "child_index": 1, + "inverse": 1, + "last": 1, + "outlayer": 1, + "layloop": 1, + "layers_count": 1, + "column": 1, + "check": 1, + "arena": 1, + "spool": 1, + "layers": 1, + "rom": 1, + "h": 13, + "modulus": 13, + "selected_layer": 13, + "offsets": 14 + }, + "after_extents": { + "zero": 13, + "one": 13, + "two": 13, + "root": 13, + "n": 13, + "remaining": 13, + "depth": 13, + "height": 13, + "low": 13, + "high": 13, + "size": 13, + "cur_node": 13, + "init_kind": 13, + "init_layer": 13, + "init_index": 13, + "init_value": 13, + "limit": 13, + "xloop": 13, + "yloop": 13, + "px": 13, + "py": 13, + "node": 13, + "kind": 13, + "layer": 13, + "index": 13, + "value": 13, + "x": 13, + "other": 13, + "opposite": 13, + "color": 13, + "initial": 13, + "top": 13, + "off": 13, + "permuted": 13, + "addition": 13, + "child": 13, + "child_index": 13, + "inverse": 13, + "last": 13, + "outlayer": 13, + "layloop": 13, + "layers_count": 13, + "column": 13, + "check": 13, + "arena": 2422, + "spool": 14, + "layers": 17, + "rom": 6, + "h": 13, + "modulus": 13, + "selected_layer": 13, + "offsets": 14 + }, + "rom_sha256": "93e452c83710ef6b736c4defcb57da7a2d7c46f9c143051960441230c2bccba4" + }, + { + "axis": 3, + "headers": { + "h": 3, + "modulus": 7, + "selected_layer": 4, + "offsets": 5 + }, + "instructions": 64975266, + "before_extents": { + "zero": 13, + "one": 13, + "two": 13, + "root": 13, + "n": 13, + "remaining": 13, + "depth": 13, + "height": 13, + "low": 13, + "high": 13, + "size": 13, + "cur_node": 13, + "init_kind": 13, + "init_layer": 13, + "init_index": 13, + "init_value": 13, + "limit": 13, + "xloop": 13, + "yloop": 13, + "px": 13, + "py": 13, + "node": 13, + "kind": 13, + "layer": 13, + "index": 13, + "value": 13, + "x": 13, + "other": 13, + "opposite": 13, + "color": 13, + "initial": 13, + "top": 13, + "off": 13, + "permuted": 13, + "addition": 13, + "child": 13, + "child_index": 13, + "inverse": 13, + "last": 13, + "outlayer": 13, + "layloop": 13, + "layers_count": 13, + "column": 13, + "check": 13, + "arena": 2422, + "spool": 14, + "layers": 17, + "rom": 6, + "h": 13, + "modulus": 13, + "selected_layer": 13, + "offsets": 14 + }, + "after_extents": { + "zero": 13, + "one": 13, + "two": 13, + "root": 13, + "n": 13, + "remaining": 13, + "depth": 13, + "height": 13, + "low": 13, + "high": 13, + "size": 13, + "cur_node": 13, + "init_kind": 13, + "init_layer": 13, + "init_index": 13, + "init_value": 13, + "limit": 13, + "xloop": 13, + "yloop": 13, + "px": 13, + "py": 13, + "node": 13, + "kind": 13, + "layer": 13, + "index": 13, + "value": 13, + "x": 13, + "other": 13, + "opposite": 13, + "color": 13, + "initial": 13, + "top": 13, + "off": 13, + "permuted": 13, + "addition": 13, + "child": 13, + "child_index": 13, + "inverse": 13, + "last": 13, + "outlayer": 13, + "layloop": 13, + "layers_count": 13, + "column": 13, + "check": 13, + "arena": 8362, + "spool": 42, + "layers": 47, + "rom": 10, + "h": 13, + "modulus": 13, + "selected_layer": 13, + "offsets": 14 + }, + "rom_sha256": "f03d7eaeeab75bb49b3652cdf9353617e0b7f27d7e4c24dcdb91985803687417" + } + ], + "adapter_tape_actions": 2847, + "adapter_bound": 958464, + "owned_retained_cells": 10059, + "numerical_owned_roles": 63, + "producer_retained_cells": 9086, + "extra_retained_cells": 19, + "expected_query_coordinates": [ + 3, + 7 + ] + }, + { + "name": "leading_idle", + "idle": false, + "lower": 3, + "precision": 11, + "offsets": [ + 0, + 5 + ], + "output": [ + 3, + 7 + ], + "calls": [ + { + "axis": 3, + "headers": { + "h": 3, + "modulus": 7, + "selected_layer": 2, + "offsets": 5 + }, + "instructions": 64975266, + "before_extents": { + "zero": 1, + "one": 1, + "two": 1, + "root": 1, + "n": 1, + "remaining": 1, + "depth": 1, + "height": 1, + "low": 1, + "high": 1, + "size": 1, + "cur_node": 1, + "init_kind": 1, + "init_layer": 1, + "init_index": 1, + "init_value": 1, + "limit": 1, + "xloop": 1, + "yloop": 1, + "px": 1, + "py": 1, + "node": 1, + "kind": 1, + "layer": 1, + "index": 1, + "value": 1, + "x": 1, + "other": 1, + "opposite": 1, + "color": 1, + "initial": 1, + "top": 1, + "off": 1, + "permuted": 1, + "addition": 1, + "child": 1, + "child_index": 1, + "inverse": 1, + "last": 1, + "outlayer": 1, + "layloop": 1, + "layers_count": 1, + "column": 1, + "check": 1, + "arena": 1, + "spool": 1, + "layers": 1, + "rom": 1, + "h": 13, + "modulus": 13, + "selected_layer": 13, + "offsets": 14 + }, + "after_extents": { + "zero": 13, + "one": 13, + "two": 13, + "root": 13, + "n": 13, + "remaining": 13, + "depth": 13, + "height": 13, + "low": 13, + "high": 13, + "size": 13, + "cur_node": 13, + "init_kind": 13, + "init_layer": 13, + "init_index": 13, + "init_value": 13, + "limit": 13, + "xloop": 13, + "yloop": 13, + "px": 13, + "py": 13, + "node": 13, + "kind": 13, + "layer": 13, + "index": 13, + "value": 13, + "x": 13, + "other": 13, + "opposite": 13, + "color": 13, + "initial": 13, + "top": 13, + "off": 13, + "permuted": 13, + "addition": 13, + "child": 13, + "child_index": 13, + "inverse": 13, + "last": 13, + "outlayer": 13, + "layloop": 13, + "layers_count": 13, + "column": 13, + "check": 13, + "arena": 8362, + "spool": 42, + "layers": 47, + "rom": 10, + "h": 13, + "modulus": 13, + "selected_layer": 13, + "offsets": 14 + }, + "rom_sha256": "83d33e46490d16971097885c682fa255bbd966a99e738744fdc000718af3e8bb" + } + ], + "adapter_tape_actions": 1987, + "adapter_bound": 815104, + "owned_retained_cells": 10059, + "numerical_owned_roles": 63, + "producer_retained_cells": 9086, + "extra_retained_cells": 19, + "expected_query_coordinates": [ + 7 + ] + }, + { + "name": "trailing_idle", + "idle": false, + "lower": 3, + "precision": 11, + "offsets": [ + 1, + 0 + ], + "output": [ + 3, + 3 + ], + "calls": [ + { + "axis": 2, + "headers": { + "h": 3, + "modulus": 7, + "selected_layer": 2, + "offsets": 1 + }, + "instructions": 64964341, + "before_extents": { + "zero": 1, + "one": 1, + "two": 1, + "root": 1, + "n": 1, + "remaining": 1, + "depth": 1, + "height": 1, + "low": 1, + "high": 1, + "size": 1, + "cur_node": 1, + "init_kind": 1, + "init_layer": 1, + "init_index": 1, + "init_value": 1, + "limit": 1, + "xloop": 1, + "yloop": 1, + "px": 1, + "py": 1, + "node": 1, + "kind": 1, + "layer": 1, + "index": 1, + "value": 1, + "x": 1, + "other": 1, + "opposite": 1, + "color": 1, + "initial": 1, + "top": 1, + "off": 1, + "permuted": 1, + "addition": 1, + "child": 1, + "child_index": 1, + "inverse": 1, + "last": 1, + "outlayer": 1, + "layloop": 1, + "layers_count": 1, + "column": 1, + "check": 1, + "arena": 1, + "spool": 1, + "layers": 1, + "rom": 1, + "h": 13, + "modulus": 13, + "selected_layer": 13, + "offsets": 14 + }, + "after_extents": { + "zero": 13, + "one": 13, + "two": 13, + "root": 13, + "n": 13, + "remaining": 13, + "depth": 13, + "height": 13, + "low": 13, + "high": 13, + "size": 13, + "cur_node": 13, + "init_kind": 13, + "init_layer": 13, + "init_index": 13, + "init_value": 13, + "limit": 13, + "xloop": 13, + "yloop": 13, + "px": 13, + "py": 13, + "node": 13, + "kind": 13, + "layer": 13, + "index": 13, + "value": 13, + "x": 13, + "other": 13, + "opposite": 13, + "color": 13, + "initial": 13, + "top": 13, + "off": 13, + "permuted": 13, + "addition": 13, + "child": 13, + "child_index": 13, + "inverse": 13, + "last": 13, + "outlayer": 13, + "layloop": 13, + "layers_count": 13, + "column": 13, + "check": 13, + "arena": 8362, + "spool": 42, + "layers": 47, + "rom": 10, + "h": 13, + "modulus": 13, + "selected_layer": 13, + "offsets": 14 + }, + "rom_sha256": "0679f9b24e701db7288294c7921ca619aa90e1e22aabf1dfd2c29b01d4892b60" + } + ], + "adapter_tape_actions": 1987, + "adapter_bound": 815104, + "owned_retained_cells": 10059, + "numerical_owned_roles": 63, + "producer_retained_cells": 9086, + "extra_retained_cells": 19, + "expected_query_coordinates": [ + 7 + ] + }, + { + "name": "invalid_left", + "idle": false, + "lower": 0, + "precision": 11, + "offsets": [ + 0, + 0 + ], + "output": [ + 3, + 1 + ], + "calls": [ + { + "axis": 2, + "headers": { + "h": 2, + "modulus": 3, + "selected_layer": 2, + "offsets": 0 + }, + "instructions": 4840097, + "before_extents": { + "zero": 1, + "one": 1, + "two": 1, + "root": 1, + "n": 1, + "remaining": 1, + "depth": 1, + "height": 1, + "low": 1, + "high": 1, + "size": 1, + "cur_node": 1, + "init_kind": 1, + "init_layer": 1, + "init_index": 1, + "init_value": 1, + "limit": 1, + "xloop": 1, + "yloop": 1, + "px": 1, + "py": 1, + "node": 1, + "kind": 1, + "layer": 1, + "index": 1, + "value": 1, + "x": 1, + "other": 1, + "opposite": 1, + "color": 1, + "initial": 1, + "top": 1, + "off": 1, + "permuted": 1, + "addition": 1, + "child": 1, + "child_index": 1, + "inverse": 1, + "last": 1, + "outlayer": 1, + "layloop": 1, + "layers_count": 1, + "column": 1, + "check": 1, + "arena": 1, + "spool": 1, + "layers": 1, + "rom": 1, + "h": 13, + "modulus": 13, + "selected_layer": 13, + "offsets": 14 + }, + "after_extents": { + "zero": 13, + "one": 13, + "two": 13, + "root": 13, + "n": 13, + "remaining": 13, + "depth": 13, + "height": 13, + "low": 13, + "high": 13, + "size": 13, + "cur_node": 13, + "init_kind": 13, + "init_layer": 13, + "init_index": 13, + "init_value": 13, + "limit": 13, + "xloop": 13, + "yloop": 13, + "px": 13, + "py": 13, + "node": 13, + "kind": 13, + "layer": 13, + "index": 13, + "value": 13, + "x": 13, + "other": 13, + "opposite": 13, + "color": 13, + "initial": 13, + "top": 13, + "off": 13, + "permuted": 13, + "addition": 13, + "child": 13, + "child_index": 13, + "inverse": 13, + "last": 13, + "outlayer": 13, + "layloop": 13, + "layers_count": 13, + "column": 13, + "check": 13, + "arena": 2422, + "spool": 14, + "layers": 17, + "rom": 6, + "h": 13, + "modulus": 13, + "selected_layer": 13, + "offsets": 14 + }, + "rom_sha256": "93e452c83710ef6b736c4defcb57da7a2d7c46f9c143051960441230c2bccba4" + }, + { + "axis": 3, + "headers": { + "h": 2, + "modulus": 2, + "selected_layer": 2, + "offsets": 0 + }, + "instructions": 4839788, + "before_extents": { + "zero": 13, + "one": 13, + "two": 13, + "root": 13, + "n": 13, + "remaining": 13, + "depth": 13, + "height": 13, + "low": 13, + "high": 13, + "size": 13, + "cur_node": 13, + "init_kind": 13, + "init_layer": 13, + "init_index": 13, + "init_value": 13, + "limit": 13, + "xloop": 13, + "yloop": 13, + "px": 13, + "py": 13, + "node": 13, + "kind": 13, + "layer": 13, + "index": 13, + "value": 13, + "x": 13, + "other": 13, + "opposite": 13, + "color": 13, + "initial": 13, + "top": 13, + "off": 13, + "permuted": 13, + "addition": 13, + "child": 13, + "child_index": 13, + "inverse": 13, + "last": 13, + "outlayer": 13, + "layloop": 13, + "layers_count": 13, + "column": 13, + "check": 13, + "arena": 2422, + "spool": 14, + "layers": 17, + "rom": 6, + "h": 13, + "modulus": 13, + "selected_layer": 13, + "offsets": 14 + }, + "after_extents": { + "zero": 13, + "one": 13, + "two": 13, + "root": 13, + "n": 13, + "remaining": 13, + "depth": 13, + "height": 13, + "low": 13, + "high": 13, + "size": 13, + "cur_node": 13, + "init_kind": 13, + "init_layer": 13, + "init_index": 13, + "init_value": 13, + "limit": 13, + "xloop": 13, + "yloop": 13, + "px": 13, + "py": 13, + "node": 13, + "kind": 13, + "layer": 13, + "index": 13, + "value": 13, + "x": 13, + "other": 13, + "opposite": 13, + "color": 13, + "initial": 13, + "top": 13, + "off": 13, + "permuted": 13, + "addition": 13, + "child": 13, + "child_index": 13, + "inverse": 13, + "last": 13, + "outlayer": 13, + "layloop": 13, + "layers_count": 13, + "column": 13, + "check": 13, + "arena": 2422, + "spool": 14, + "layers": 17, + "rom": 6, + "h": 13, + "modulus": 13, + "selected_layer": 13, + "offsets": 14 + }, + "rom_sha256": "93e452c83710ef6b736c4defcb57da7a2d7c46f9c143051960441230c2bccba4" + } + ], + "adapter_tape_actions": 2442, + "adapter_bound": 749568, + "owned_retained_cells": 4054, + "numerical_owned_roles": 63, + "producer_retained_cells": 3084, + "extra_retained_cells": 16, + "expected_query_coordinates": [ + 3, + 1 + ] + }, + { + "name": "all_idle", + "idle": true, + "calls": [], + "lower": 11 + }, + { + "name": "nonroot_minimum_guide", + "idle": false, + "lower": 1, + "precision": 5, + "offsets": [ + 1 + ], + "output": [ + 0 + ], + "calls": [ + { + "axis": 3, + "headers": { + "h": 2, + "modulus": 2, + "selected_layer": 2, + "offsets": 1 + }, + "instructions": 2363817, + "before_extents": { + "zero": 1, + "one": 1, + "two": 1, + "root": 1, + "n": 1, + "remaining": 1, + "depth": 1, + "height": 1, + "low": 1, + "high": 1, + "size": 1, + "cur_node": 1, + "init_kind": 1, + "init_layer": 1, + "init_index": 1, + "init_value": 1, + "limit": 1, + "xloop": 1, + "yloop": 1, + "px": 1, + "py": 1, + "node": 1, + "kind": 1, + "layer": 1, + "index": 1, + "value": 1, + "x": 1, + "other": 1, + "opposite": 1, + "color": 1, + "initial": 1, + "top": 1, + "off": 1, + "permuted": 1, + "addition": 1, + "child": 1, + "child_index": 1, + "inverse": 1, + "last": 1, + "outlayer": 1, + "layloop": 1, + "layers_count": 1, + "column": 1, + "check": 1, + "arena": 1, + "spool": 1, + "layers": 1, + "rom": 1, + "h": 7, + "modulus": 7, + "selected_layer": 7, + "offsets": 8 + }, + "after_extents": { + "zero": 7, + "one": 7, + "two": 7, + "root": 7, + "n": 7, + "remaining": 7, + "depth": 7, + "height": 7, + "low": 7, + "high": 7, + "size": 7, + "cur_node": 7, + "init_kind": 7, + "init_layer": 7, + "init_index": 7, + "init_value": 7, + "limit": 7, + "xloop": 7, + "yloop": 7, + "px": 7, + "py": 7, + "node": 7, + "kind": 7, + "layer": 7, + "index": 7, + "value": 7, + "x": 7, + "other": 7, + "opposite": 7, + "color": 7, + "initial": 7, + "top": 7, + "off": 7, + "permuted": 7, + "addition": 7, + "child": 7, + "child_index": 7, + "inverse": 7, + "last": 7, + "outlayer": 7, + "layloop": 7, + "layers_count": 7, + "column": 7, + "check": 7, + "arena": 1102, + "spool": 14, + "layers": 17, + "rom": 6, + "h": 7, + "modulus": 7, + "selected_layer": 7, + "offsets": 8 + }, + "rom_sha256": "5017425c34a54778a5b1aad8170a2c8f8ef83f00aa88b1e49c00774e5fe73e33" + } + ], + "adapter_tape_actions": 916, + "adapter_bound": 425984, + "owned_retained_cells": 1960, + "numerical_owned_roles": 63, + "producer_retained_cells": 1476, + "extra_retained_cells": 13, + "expected_query_coordinates": [ + 1 + ] + } + ], + "controls": [ + { + "name": "stale_zero_offset", + "rejected_by": "current target header correspondence" + }, + { + "name": "wrong_local_row", + "rejected_by": "current target header correspondence" + }, + { + "name": "suppress_padded_query", + "rejected_by": "independent micro-row endpoint" + }, + { + "name": "omit_layers_disposal", + "rejected_by": "blank producer reentry including old tails" + }, + { + "name": "omit_result_retirement", + "rejected_by": "joined retirement including result" + }, + { + "name": "skip_idle_offset_record", + "rejected_by": "offset record end" + }, + { + "name": "replace_bank_between_targets", + "rejected_by": "same producer bank at next target" + }, + { + "name": "omit_preceding_right_modulus", + "correct": 5, + "wrong": 1 + }, + { + "name": "treat_current_as_original_digits", + "correct": 11, + "wrong": 26 + }, + { + "name": "bill_only_final_smaller_target", + "rejected_by": "exact shared-bank footprint" + }, + { + "name": "omit_retained_spool", + "rejected_by": "complete bank includes spool" + }, + { + "name": "boolean_integer_receipt_collision", + "rejected": true + } + ], + "producer_calls": 13 +} diff --git a/research/crt-multitarget-row-audit/SOURCES.json b/research/crt-multitarget-row-audit/SOURCES.json new file mode 100644 index 0000000000..3c998361ff --- /dev/null +++ b/research/crt-multitarget-row-audit/SOURCES.json @@ -0,0 +1,114 @@ +{ + "schema_version": 1, + "base_commit": "32890bc5de034ab8fc93ac88ead7279a6a416d04", + "files": [ + { + "path": "certificates/selected-result.json", + "usage": "provenance", + "git_blob": "fc3d4ba105e1f097d0d7d051a308281e86ab1446", + "sha256": "66974efdced4083c00025f97d95d83909a226cdf801edb9301c195c6641f6903" + }, + { + "path": "docs/research/agent-task-catalog.json", + "usage": "provenance", + "git_blob": "f126dd2e2dad2b669e75d1d0d0bd05c600725602", + "sha256": "f7a48bfa2659b88378282a8eee7d9fe52cdf505594124c4d1686b58510fffd72" + }, + { + "path": "research/crt-encoded-benes-rom-producer/PROOF.md", + "usage": "input", + "git_blob": "cdd530c668254558bb1ef8a6c6af9a5660f8f9c2", + "sha256": "93bd340ac9b77f8f781926aeb7327325789b331863b3088fed1809eefb789bd2" + }, + { + "path": "research/crt-encoded-benes-rom-producer/microcode.py", + "usage": "input", + "git_blob": "052b01a83bc910c176b83a012b9f46f0e9525b9d", + "sha256": "d4af5350854a87b67484840800b94e1e53cff82c78ec0f2a91753fed9ea70af7" + }, + { + "path": "research/crt-mixed-row-entry/PROOF.md", + "usage": "input", + "git_blob": "76e75e002b5c5860a43b2fe6313ba4339efcc3ff", + "sha256": "8a529ece497c62d5225261cdacebfd88979322b3a8886d1a31eb6295f1989e4b" + }, + { + "path": "research/crt-mixed-row-entry/bridge.py", + "usage": "input", + "git_blob": "57f6853e262a6136bc616f1e47a31d0ace28495c", + "sha256": "89c38638c0d66da731566c903c32e7fa1ad31088d29cfd2634fce823dd07c1f9" + }, + { + "path": "research/crt-mixed-width-caller/verify.py", + "usage": "input", + "git_blob": "7980582b86e8d20269ae32252ad03896eff1131b", + "sha256": "5e62787f3c4a8f1175ca7dea6c6b8ceff7863a3f879abd6245faf6aeb272fd45" + }, + { + "path": "research/encoded-crt-entry-lifecycle/PROOF.md", + "usage": "input", + "git_blob": "8c9d971a3d3e5a75637e3279ed8f7f89b0c6a566", + "sha256": "a619be48c8c85749ea5411929aa6ff3986443b467133d32d19d543250b0054b0" + }, + { + "path": "research/encoded-crt-entry-lifecycle/entry.py", + "usage": "input", + "git_blob": "1fa2b0cb88320d4f5b623554bb0fc6de332b773c", + "sha256": "0537ec98f306270c8ff6a424841886cf53f675d9947029347090c7dc779616d7" + }, + { + "path": "research/encoded-current-crt/PROOF.md", + "usage": "input", + "git_blob": "286ab05ba7ab500e5b86268384545dcec8862d1c", + "sha256": "7da614e737414a373c8716158f2c02a52666620ea1f114fac7ca09b3b38489bc" + }, + { + "path": "research/encoded-current-crt/producer.py", + "usage": "input", + "git_blob": "a327b0161eca57a1cc44ec2aa8e3defed2167ddc", + "sha256": "88dab4ca02a92164a67826db361214fa1405e4b4a588f8c4279a21bcee95ab76" + }, + { + "path": "research/r437-preparation-composition/predecessor4025/source/records.py", + "usage": "input", + "git_blob": "4f00467a0ff580954ad2fd0c7380240c753ddef3", + "sha256": "0c9c4b23e998597fb877bb1a29da69ac869b68262abe635b162b4dba9c69b372" + }, + { + "path": "research/r437-preparation-composition/predecessor4025/source/words.py", + "usage": "input", + "git_blob": "8d4ba37e2778acb35b34e0719df2caf138fbeb50", + "sha256": "5c37f57708ba3131bdcb03139f9dbc29886bee44569c09cbba51b68f75acd7f9" + }, + { + "path": "research/unconditional-batched-crt/CRT.md", + "usage": "input", + "git_blob": "d98dd8e368431cac33d5fc1c8c336696663641d6", + "sha256": "02c3a1e38cbee25aefe2640cc72676da62ba10eb7519fbcb9adb9d48b74eff2b" + }, + { + "path": "LICENSE", + "usage": "provenance", + "git_blob": "261eeb9e9f8b2b4b0d119366dda99c6fd7d35c64", + "sha256": "c71d239df91726fc519c6eb72d318ec65820627232b2f796219e87dcf35d0ab4" + }, + { + "path": "research/unconditional-batched-crt/NOTICE.md", + "usage": "provenance", + "git_blob": "886a8fdee275f01b459cbd68ae2815dc9269502f", + "sha256": "924109837e71c52392191710d49c9deb42780878d1094f0b01e8690dbe799461" + }, + { + "path": "research/r437-preparation-composition/predecessor4025/source/NOTICE.md", + "usage": "provenance", + "git_blob": "ef9f81510db86eaf2f0a7191d85e92a6db30ddc0", + "sha256": "c446b32b8a621844fb2fbe654810c8122035bdd43fed2132f1137d98cb6f9943" + }, + { + "path": "research/crt-encoded-benes-rom-producer/vendor/pr4192-NOTICE.md", + "usage": "provenance", + "git_blob": "6ca47019de7e58edf93c4278a6a8251625d37477", + "sha256": "b886589be7c8b87bcf12b14ce4db6827299b7cec93836ed22cff81aed37623dc" + } + ] +} diff --git a/research/crt-multitarget-row-audit/TASK.json b/research/crt-multitarget-row-audit/TASK.json new file mode 100644 index 0000000000..8442871d9e --- /dev/null +++ b/research/crt-multitarget-row-audit/TASK.json @@ -0,0 +1,139 @@ +{ + "schema_version": 1, + "task_id": "uniform-transfer-audit", + "priority_revision": 7, + "base_commit": "32890bc5de034ab8fc93ac88ead7279a6a416d04", + "original_card": { + "id": "uniform-transfer-audit", + "question": "Does one quantified step of the proposed #4100 all-size construction hold at its actual caller?", + "starting_points": [ + "docs/research/research-family-status.md", + "certificates/selected-result.json", + "research/unconditional-batched-crt/README.md" + ], + "methods": [ + "Prove one missing implication with explicit quantified hypotheses.", + "Find an exact counterexample at the claimed interface boundary." + ], + "acceptance_gate": "Identify the proposition and what would change downstream; do not equate a finite replay with a universal proof.", + "first_step": { + "command": [ + "python3", + "-B", + "scripts/research_baseline.py" + ], + "expected": "PASS_RESEARCH_BASELINE_BINDINGS_ONLY", + "inspect": "Read PROOF.md and AUDIT.md in #4100. Select one distinct obligation: CRT total repair, native/free-algebra lifting, precision/conditioning, or complete fixed-tape cost. This is an author-submitted proof, not an accepted unconditional theorem.", + "scope": "Source-binding orientation only; no scientific replay, theorem acceptance or supplier admission. Budget any heavy replay separately." + }, + "first_experiment": "Check live handoffs; name one proposition, its caller, quantified domain and dependency closure. Independently prove the implication or exhibit a precise gap/counterexample. Prioritize CRT.md total repair or COMPLEX.md free-algebra lift only if unclaimed. Stop at the chosen obligation; do not substitute finite samples or root arithmetic for an all-size proof, or launch the complete package by default.", + "bottleneck_link": "Finite supplier improvements are useful only under the retained transfer obligations.", + "allowed_variations": [ + "One CRT repair, native lift, precision/conditioning or tape-cost proposition, with its exact caller." + ], + "scope_change_triggers": [ + "Replacing a quantified obligation with another finite smoke test.", + "Treating archive intake, an author PASS receipt or a finite composed fixture as discharge of the universal hypotheses." + ], + "overlap_terms": [ + "uniform transfer", + "all-size", + "precision", + "4100", + "unconditional-batched-crt" + ], + "existing_checks": [ + { + "scope": "PR #4100: proposed unconditional construction and finite checks, without independent acceptance.", + "evidence": "research/unconditional-batched-crt/README.md", + "remaining": "Independent proof audit of one caller-bound all-size implication; all other premises remain explicit.", + "status": "author-checked", + "source_commit": "337d04939571a637aeab54a0f58f54fde811663a", + "selected_record_sha256": "bb2eaa58647b353f88d0aec2eafb9d30df1be53589231b23e12ceef3e4bad129" + } + ] + }, + "scope_status": "refined", + "actual_scope": "Independently audit PR5496 RowQuery multi-target stream consumption, mixed active/idle targets, physical ROM-bank reuse and successful retirement, under the retained numerical Entry and producer contracts. Derive the exact fixed-P singleton-ROM shared-bank footprint and its three disjoint extra ports.", + "scope_change_reason": "The revision-7 card names one actual caller-bound CRT implication. Successor PR5496 supplies the concrete join; its completed fixtures have one active target, so this audit derives the target-loop invariant and adds independently checked multi-target boundary executions. The same rolewise reuse audit sharpens the bank storage accounting without changing the implementation or recursive invoice.", + "bottleneck_link": "CRT total repair needs correct current-state physical queries. This audits one necessary composition implication without treating it as complete all-size transfer or supplier admission.", + "budget_minutes": 60, + "stop_rule": "Stop at a source-relative proof or exact counterexample for this one loop, with h<=3 producer executions and no full native, ordinary, outer or production-size replay.", + "outcome": "completed", + "evidence": "PROOF.md gives the quantified conditional audit; RESULT.json freezes nine caller cases, thirteen complete producer invocations, 32 independent oracle networks/236 addresses and twelve control groups. No defect found in the audited implication; inherited theorems remain hypotheses. The bank footprint B(P,H)=5P*2^H*(H^2+3H+1)+2^H*(4H-1)+48P+2H+104 follows from the literal arena/serialization loops and componentwise monotonicity at fixed P.", + "author": "commdata2338", + "ai_assistance": "Substantial OpenAI Codex (GPT-6 Astra) assistance in derivation, implementation, checking and writing. No independent human or formal-kernel review is claimed.", + "open_questions": [ + { + "question": "Update the actual encoded axis source with the returned coordinate stream and execute the next row without host serialization.", + "why_it_matters": "This is the next physical whole-level composition boundary after the audited single-row service.", + "first_step": "Use the five-row mixed h=3/h=2 example and price an in-place coordinate splice with input/ownership invariants.", + "blocked_by": "A caller update/ownership contract and its paid implementation; the row output itself is available." + }, + { + "question": "Compose the service at all three current-state epochs of an exceptional reverse key.", + "why_it_matters": "A current-row audit does not close CRT total repair or justify freezing the left-state offset.", + "first_step": "Bind actual encoded source descriptors at PR4716's two stale-offset discriminator states and retain all conversions/restorations.", + "blocked_by": "Physical current-state descriptor production and complete key/caller tariff." + } + ], + "scope_key": "ce7411fb7cf6f3460bfc", + "scope_refinement": "pr5496-multi-target-current-row-bank-invariant", + "selection": { + "seed": "44f05f574fc586d49962b167a149c6d8", + "track": "adversarial-audit", + "chosen_suggestion": 2, + "priority_revision": 7, + "alternatives": [ + { + "task": "census-pruning-audit", + "reason": "Earlier account PR3215 audits that family; the concrete CRT implication is a current central question." + }, + { + "task": "supplier-boundary-audit", + "reason": "Complete mixed admission exceeds this scoped session; current source-sensitive successor work is separate." + } + ], + "handoff": "https://github.com/CrocSwap/integer-mult-bounds/discussions/4709#discussioncomment-19173182", + "existing_checks": "PR4100 author construction; PR5496 complete single-active-target h=2 pipeline and four controls. Its h=4 four-axis attempt was incomplete. This audit does not reuse its verifier.", + "claim": "https://github.com/CrocSwap/integer-mult-bounds/discussions/4709#discussioncomment-19173680" + }, + "dependency_heads": { + "PR5496": "a99afd7e0024af8367d5a2f6f4d2da57a1d13dd5", + "PR5353": "07a135eee3a8da9392c4a1e01d4b89db05b4ac03", + "main_input_pin": "32890bc5de034ab8fc93ac88ead7279a6a416d04", + "PR4100": "337d04939571a637aeab54a0f58f54fde811663a" + }, + "boundary": { + "inputs": "One sequential padded-axis source, eight protected numerical ports, compiled node/row/width topology and blank new owned backing.", + "output": "Ordered right-axis micro-row stream; idle targets unchanged; source and protected ports restored.", + "cleanup": "Full produced layers, selected ROM, headers, coordinate/countdown scratch and all numerical owned ports; caller retires returned stream with close.", + "inherited": "Numerical Entry and encoded ROM producer success theorems and their stated tariffs.", + "not_claimed": "Whole-level input update, three-epoch key, full E(p,ell), binary numerical compiler, supplier admission or new kappa.", + "storage": "Exact 52-role ROM-bank and three-extra-port cell counts for one fresh RowQuery, including retained old tails; numerical Entry and any external initial blank reserve remain separate." + }, + "family_decision": "Narrow and stop after this independent audit. All consumer/whole-key costs remain explicit; no larger dependent search.", + "overlap": { + "open_prs_fetched_at": "2026-10-25T05:11:23.081429+00:00", + "discussions_fetched_at": "2026-10-25T05:12:32.988336+00:00", + "local_head_records": 7402, + "nearest": [ + "PR5496 (construction and single-active-target tests; audited here)", + "PR5353 (numerical row entry; inherited)", + "PR5092 (ROM producer; inherited)", + "PR5505 (cross-session numerical bank history; distinct)", + "PR5486 (fixed repair binary lowering; distinct)" + ], + "limits": "Complete snapshot pagination and full local note inventory; arbitrary code diffs and unpublished work outside coverage. No novelty guarantee.", + "footprint_check": { + "open_prs_fetched_at": "2026-10-25T05:31:21.052548+00:00", + "discussions_fetched_at": "2026-10-25T05:33:05.370314+00:00", + "queries": [ + "ROM bank", + "producer footprint", + "48P" + ], + "distinction": "PR5505 concerns changing-precision numerical Entry histories, not the fixed-P singleton-ROM service bank. No matching exact bank formula found in the checked main notes and snapshot." + } + } +} diff --git a/research/crt-multitarget-row-audit/VENDORED.json b/research/crt-multitarget-row-audit/VENDORED.json new file mode 100644 index 0000000000..e836c8fa64 --- /dev/null +++ b/research/crt-multitarget-row-audit/VENDORED.json @@ -0,0 +1,27 @@ +{ + "source_pr": 5496, + "source_head": "a99afd7e0024af8367d5a2f6f4d2da57a1d13dd5", + "files": [ + { + "path": "vendor/pr5496-join.py", + "source_path": "research/crt-current-row-query/join.py", + "source_commit": "a99afd7e0024af8367d5a2f6f4d2da57a1d13dd5", + "git_blob": "676582b4a376db375237ec52df84a3ddaf231827", + "sha256": "11c9ac1175a45edae80869b22c041e31a1b5cc75f4389ec2e073de37e547bf35" + }, + { + "path": "vendor/pr5496-PROOF.md", + "source_path": "research/crt-current-row-query/PROOF.md", + "source_commit": "a99afd7e0024af8367d5a2f6f4d2da57a1d13dd5", + "git_blob": "0449d47c5027b4b5a6b6b5b2a87219069d4ad91c", + "sha256": "6aaa6253bf5f64f07cbfbf0a98a7c464e5a78cfa05c398f7eb41a27f03a7379c" + }, + { + "path": "vendor/pr5496-README.md", + "source_path": "research/crt-current-row-query/README.md", + "source_commit": "a99afd7e0024af8367d5a2f6f4d2da57a1d13dd5", + "git_blob": "f5c66d745aaabb0b7ac8becaf8fda1ccfc004856", + "sha256": "41a14eb0d72c1ecce16a791b8f32d84f8c0b4e089c5e66a19067218e56d48db0" + } + ] +} diff --git a/research/crt-multitarget-row-audit/VERIFY.json b/research/crt-multitarget-row-audit/VERIFY.json new file mode 100644 index 0000000000..25c3cc3067 --- /dev/null +++ b/research/crt-multitarget-row-audit/VERIFY.json @@ -0,0 +1,45 @@ +{ + "schema_version": 1, + "status": "ready", + "python": "3.12", + "requirements": [], + "inputs": [ + "LICENSE", + "research/crt-encoded-benes-rom-producer/PROOF.md", + "research/crt-encoded-benes-rom-producer/microcode.py", + "research/crt-encoded-benes-rom-producer/vendor/pr4192-NOTICE.md", + "research/crt-mixed-row-entry/PROOF.md", + "research/crt-mixed-row-entry/bridge.py", + "research/crt-mixed-width-caller/verify.py", + "research/encoded-crt-entry-lifecycle/PROOF.md", + "research/encoded-crt-entry-lifecycle/entry.py", + "research/encoded-current-crt/PROOF.md", + "research/encoded-current-crt/producer.py", + "research/r437-preparation-composition/predecessor4025/source/NOTICE.md", + "research/r437-preparation-composition/predecessor4025/source/records.py", + "research/r437-preparation-composition/predecessor4025/source/words.py", + "research/unconditional-batched-crt/CRT.md", + "research/unconditional-batched-crt/NOTICE.md" + ], + "commands": [ + { + "argv": [ + "{python}", + "-B", + "{package}/verify.py" + ], + "timeout_seconds": 300, + "checks": "Independent multi-target current-row theorem corroboration: all actual producer tables, stream alignment, same-bank history, ownership, oracle calibration and twelve controls, exact rolewise extents and the sharp fixed-P bank footprint." + }, + { + "argv": [ + "{python}", + "-O", + "-B", + "{package}/verify.py" + ], + "timeout_seconds": 300, + "checks": "Same complete scientific checks with Python assertions disabled; typed receipt comparison and explicit failures remain active." + } + ] +} diff --git a/research/crt-multitarget-row-audit/vendor/NOTICE.md b/research/crt-multitarget-row-audit/vendor/NOTICE.md new file mode 100644 index 0000000000..34cf4b6135 --- /dev/null +++ b/research/crt-multitarget-row-audit/vendor/NOTICE.md @@ -0,0 +1,14 @@ +# Retained source credit + +`pr5496-join.py`, `pr5496-PROOF.md` and `pr5496-README.md` are byte-identical +copies from JoyboyBrian's PR #5496 at +`a99afd7e0024af8367d5a2f6f4d2da57a1d13dd5`, under the repository's +Apache-2.0 license. VENDORED.json records original paths, Git blobs and +SHA256. Their original authorship and AI-assistance notices are retained. +They are audited inputs, not new implementation by this package. + +The implementation's inherited credits include Ali Romman (#5353), +Hiroki KUMAZAKI, Cinna Davis (#4100), ToikY, Tekalign, Jose Manuel, +Ryanson Jonathan, unpaidmoon, Douglas Colkitt and John-Michael Smith. +Their algorithms and proofs are explicit premises of this scoped audit. +No pending Git object is needed for replay: the audited bytes are here. diff --git a/research/crt-multitarget-row-audit/vendor/pr5496-PROOF.md b/research/crt-multitarget-row-audit/vendor/pr5496-PROOF.md new file mode 100644 index 0000000000..0449d47c50 --- /dev/null +++ b/research/crt-multitarget-row-audit/vendor/pr5496-PROOF.md @@ -0,0 +1,226 @@ +# Current numerical offsets to a physical CRT micro-row + +JoyboyBrian, with substantial OpenAI Codex assistance. Apache-2.0. + +## The exact boundary + +Use the admitted `RowEntry` domain of Ali Romman's PR5353: a power-of-two +axis count d, declared h_i in {ell-1,ell}, ell>=2, pairwise coprime moduli +2<=s_i<2^h_i, arbitrary padded current coordinates 0<=x_i<2^h_i, one +compiled tree node [a,a+n) and one global row. The source is its literal +sequential padded-axis tape, not a host list of numeric values. Eight +distinct protected numerical words are supplied with the retained legal +heads. Fixed topology, input ownership and the source numerical-operation +model remain predecessor premises. + +Let b=a+n/2, P=1+sum_{i=a}^{a+n-1}h_i, and A be the non-idle right axes +of this global row. The result is an owned stream containing, in axis +order, the h_i bits of the **micro-row output** for every right axis +b<=i=h_i+3. A node has at least two +axes, and every modulus is at least two, hence every admitted h_j>=2. +Consequently P>=h_i+2+1=h_i+3. Taking W=P meets its width contract; its +modulus and singleton-offset guards follow from the numerical theorem. +The local row is g for a long axis, and g or g-2 on the two active pieces +of a short axis, with global rows ell-1 and ell idle. This is exactly the +pinned `local_row` function, and lies in [0,2h_i-2]. + +Thus the unchanged encoded producer emits the exact canonical Beneš +network for the rotation x->x+c_i mod s_i on x existing ROM -> physical row query. +JoyboyBrian, with substantial OpenAI Codex assistance. Apache-2.0. +Topology is compiled data; runtime numeric values are never decoded. +""" + + +def need(ok, message): + if not ok: + raise ValueError(message) + + +class Tape: + def __init__(self, cells=None): + self.cells = ['_'] if cells is None else cells + self.head = 0 + self.actions = 0 + + def read(self): + self.actions += 1 + return self.cells[self.head] + + def write(self, value): + need(value in ('_', 'L', 'R', '|', '0', '1'), 'fixed symbol') + self.actions += 1 + self.cells[self.head] = value + + def step(self, direction): + need(direction in (-1, 1) and self.head+direction >= 0, 'unit move') + self.actions += 1 + self.head += direction + if self.head == len(self.cells): + self.cells.append('_') + + def emit(self, value): + self.write(value) + self.step(1) + + def rewind(self): + while self.read() != 'L': + self.step(-1) + + def erase(self): + self.rewind() + self.step(1) + while self.read() != 'R': + self.write('_'); self.step(1) + self.write('_'); self.rewind(); self.write('_') + + +def padded_constant(target, bits, guide, w): + target.emit('L') + for bit in bits: # A compile-time constant, never an encoded input integer. + need(guide.read() == w.ONE, 'constant fits encoded width') + target.emit('1' if bit else '0'); guide.step(1) + while guide.read() == w.ONE: + target.emit('0'); guide.step(1) + need(guide.read() == w.BLANK, 'guide terminator') + target.write('R'); target.rewind(); guide.rewind() + + +def copy_numeric_field(source, target, guide, w, delimiter, suffix='R'): + target.emit('L') + while guide.read() == w.ONE: + bit = source.read() + need(bit in (w.ZERO, w.ONE), 'numeric field bit') + target.emit('1' if bit == w.ONE else '0') + source.step(1); guide.step(1) + need(source.read() == delimiter and guide.read() == w.BLANK, 'exact P-bit field') + source.step(1); guide.rewind() + if suffix == '|': + target.emit('|') + target.write('R'); target.rewind() + + +def skip_numeric_field(source, guide, w, delimiter): + while guide.read() == w.ONE: + need(source.read() in (w.ZERO, w.ONE), 'skipped numeric bit') + source.step(1); guide.step(1) + need(source.read() == delimiter and guide.read() == w.BLANK, 'skipped exact width') + source.step(1); guide.rewind() + + +def select_row_bit(rom, countdown, fault=None): + """Scan the produced row; index is an encoded countdown, not a host cursor.""" + enabled, answer, seen = True, '0', False + rom.step(1) + while rom.read() != 'R': + value = rom.read(); need(value in ('0', '1'), 'ROM row bit') + if enabled: + zero = True + countdown.step(1) + while countdown.read() != 'R': + zero = zero and countdown.read() == '0' + countdown.step(1) + countdown.rewind() + if zero: + answer, seen, enabled = value, True, False + else: + countdown.step(1) + while countdown.read() == '0': + countdown.write('1'); countdown.step(1) + need(countdown.read() == '1', 'countdown underflow') + countdown.write('0'); countdown.rewind() + rom.step(1) + need(seen, 'current coordinate outside complete row') + rom.rewind(); countdown.erase() + return '0' if fault == 'suppress_query' else answer + + +class RowQuery: + def __init__(self, w, records, entry_module, numeric, row_module, rom_module, + program, source, dirty, widths, ell, level, start, row, fault=None): + self.w, self.records, self.source = w, records, source + self.fault = fault + self.entry = row_module.RowEntry(w, records, entry_module, numeric, + source, dirty, widths, ell, level, start, row) + self.output = None + self.ports = [] + self.service = None + self.producer_steps = 0 + self.invocations = 0 + self.closed = False + if not self.entry.active: + return + # All variable-width initialization is driven by the existing unary guide. + guide = self.entry.guide + names = ('h', 'modulus', 'selected_layer', 'offsets') + headers = {name: Tape() for name in names} + coordinate, countdown, output = Tape(), Tape(), Tape() + self.ports = [*headers.values(), coordinate, countdown, output] + self.output = output + output.emit('L') + self.program = program + self.service = {name: ['_'] for name in rom_module.REGS+('arena','spool','layers','rom')} + self.service.update({name: headers[name].cells for name in names}) + self.produced_rom = Tape(self.service['rom']) + self.produced_layers = Tape(self.service['layers']) + self.ports.extend((self.produced_rom, self.produced_layers)) + result = self.entry.result['stream'] + size = 1 << level + middle, stop = start+size//2, start+size + precision = 1 + sum(widths[start:stop]) # Compiled topology only. + for axis, h in enumerate(widths): + chosen = middle <= axis < stop + active = chosen and (h == ell or row not in (ell-1, ell)) + need(source.read() == records.ROOT, 'axis tag'); source.step(1) + for _ in range(h): + need(source.read() == w.ONE, 'compiled axis width'); source.step(1) + need(source.read() == records.WORD_END, 'width delimiter'); source.step(1) + if active: + headers['modulus'].emit('L') + for _ in range(h): + bit=source.read(); need(bit in (w.ZERO,w.ONE), 'modulus bit') + if active: + need(guide.read()==w.ONE,'modulus fits guide') + headers['modulus'].emit('1' if bit==w.ONE else '0');guide.step(1) + source.step(1) + if active: + while guide.read()==w.ONE: + headers['modulus'].emit('0');guide.step(1) + need(guide.read()==w.BLANK,'guide end');guide.rewind() + headers['modulus'].write('R');headers['modulus'].rewind() + need(source.read()==records.WORD_END,'modulus delimiter');source.step(1) + if chosen: + coordinate.emit('L') + if active:countdown.emit('L') + for _ in range(h): + bit=source.read();need(bit in (w.ZERO,w.ONE),'coordinate bit') + if chosen: + symbol='1' if bit==w.ONE else '0';coordinate.emit(symbol) + if active:countdown.emit(symbol) + source.step(1) + need(source.read()==records.RECORD_END,'axis end');source.step(1) + if not chosen: + continue + coordinate.write('R');coordinate.rewind() + need(result.read()==records.ROOT,'offset record');result.step(1) + if active: + countdown.write('R');countdown.rewind() + local=row if h==ell or row>j)&1 for j in range(h.bit_length())) + rowbits=tuple((selected>>j)&1 for j in range(max(1,selected.bit_length()))) + padded_constant(headers['h'],hbits,guide,w) + padded_constant(headers['selected_layer'],rowbits,guide,w) + copy_numeric_field(result,headers['offsets'],guide,w,records.WORD_END,'|') + if fault=='zero_offset': + tape=headers['offsets'];tape.step(1) + while tape.read()!='|':tape.write('0');tape.step(1) + tape.rewind() + # Proven producer bound, compiled from topology, not input values. + budget=2*10**6*precision**2*((1<= 2 and n & (n - 1) == 0, 'oracle dyadic size') + need(sorted(permutation) == list(range(n)), 'oracle permutation') + if n == 2: + return ((0, (permutation[0], permutation[0])),) + inv = tuple(permutation.index(y) for y in range(n)) + edges = [(x, x+1) for x in range(0,n,2)] + [(inv[y],inv[y+1]) for y in range(0,n,2)] + color = next((c for c in itertools.product((0,1), repeat=n) + if all(c[x] != c[y] for x,y in edges)), None) + need(color is not None, 'oracle bipartite matchings') + children = [] + for c in (0,1): + selected = [next(x for x in (2*j,2*j+1) if color[x] == c) for j in range(n//2)] + children.append(network(tuple(permutation[x]//2 for x in selected))) + layers = [(0,tuple(color[x] ^ (x%2) for x in range(n)))] + for k in range(len(children[0])): + layers.append((children[0][k][0]+1, + tuple(children[x%2][k][1][x//2] for x in range(n)))) + layers.append((0,tuple(color[inv[y]] ^ (y%2) for y in range(n)))) + return tuple(layers) + + +def rotation(h, modulus, offset): + return tuple((x+offset)%modulus if x=moduli[i] for i in range(start,middle)): + lower=0 + else: + candidates=[k for k in range(product) + if all((k-state[i]*math.prod(moduli[start:i]))%moduli[i]==0 + for i in range(start,middle))] + need(len(candidates)==1,'oracle unique current child') + lower=candidates[0] + rows=[] + for i in range(middle,stop): + h,s,g,ell=widths[i],moduli[i],case['row'],case['ell'] + offsets=[c for c in range(s) if (product*c-lower)%s==0] + need(len(offsets)==1,'oracle unique offset') + c=offsets[0];product*=s + active=h==ell or g not in (ell-1,ell) + local=g if h==ell or g>j)&1 for j in range(width)] + + +def snapshot(ports): + return [(bytes(p.cells),p.head) for p in ports] + + +def traffic(ports): + return sum(p.meter.reads+p.meter.writes+p.meter.moves for p in ports) + + +def read_header(cells,precision,offset=False): + ending=['|','R'] if offset else ['R'] + need(cells[:1]==['L'] and cells[precision+1:precision+1+len(ending)]==ending,'header delimiters') + need(all(x in ('0','1') for x in cells[1:precision+1]),'header binary width') + need(all(x=='_' for x in cells[precision+1+len(ending):]),'header blank tail') + return sum(int(x)<=self.previous_extents[k] for k in before),'retained backing never shrinks') + need(all(all(x=='_' for x in v) for k,v in tapes.items() if k not in self.headers), + 'blank producer reentry including old tails') + values={k:read_header(tapes[k],self.precision,k=='offsets') for k in self.headers} + wanted=dict(h=expected['h'],modulus=expected['modulus'], + selected_layer=expected['local'],offsets=expected['offset']) + need(values==wanted,'current target header correspondence') + header_bytes={k:tuple(tapes[k]) for k in self.headers} + result=self.execute_original(program,tapes,max_steps=max_steps) + need(result['status']=='accept','actual producer acceptance') + need(all(h==0 for h in result['heads'].values()),'actual producer heads') + need(all(tuple(tapes[k])==header_bytes[k] for k in self.headers),'producer borrowed headers') + need(all(all(x=='_' for x in v) for k,v in tapes.items() + if k not in self.headers+('rom','layers')),'producer private restoration') + table=expected['layers'][expected['local']][1] + body(tapes['rom'],['L',*map(str,table),'R']) + layers=['L'] + for _,table in expected['layers']:layers += [*map(str,table),'|'] + body(tapes['layers'],layers+['R']) + after={k:len(v) for k,v in tapes.items()} + fresh=fresh_extents(self.registers,self.precision,expected['h']) + need(set(before)==set(fresh),'complete bank role inventory') + need(after=={k:max(before[k],fresh[k]) for k in fresh},'exact rolewise retained extents') + self.previous_extents=after + self.calls.append(dict(axis=expected['axis'],headers=values,instructions=result['steps'], + before_extents=before,after_extents=after, + rom_sha256=sha256(''.join(tapes['rom']).encode()).hexdigest())) + return result + + +CASES=[ + dict(name='two_short_first',moduli=[5,7,3,2],widths=[3,3,2,2],state=[1,5,2,1],row=0), + dict(name='two_short_distinct_offsets',moduli=[5,7,3,2],widths=[3,3,2,2],state=[3,2,1,1],row=4), + dict(name='shrinking_bank',moduli=[2,5,7,3],widths=[2,3,3,2],state=[1,4,7,3],row=4), + dict(name='growing_bank',moduli=[2,5,3,7],widths=[2,3,2,3],state=[1,4,3,7],row=4), + dict(name='leading_idle',moduli=[2,5,3,7],widths=[2,3,2,3],state=[1,4,3,7],row=2), + dict(name='trailing_idle',moduli=[2,5,7,3],widths=[2,3,3,2],state=[1,4,7,3],row=2), + dict(name='invalid_left',moduli=[5,7,3,2],widths=[3,3,2,2],state=[5,5,3,1],row=4), + dict(name='all_idle',moduli=[5,7,3,2],widths=[3,3,2,2],state=[1,5,2,1],row=2), + dict(name='nonroot_minimum_guide',moduli=[5,7,3,2],widths=[3,3,2,2],state=[1,5,1,1],row=4,level=1,start=2), +] +for _case in CASES: + _case.setdefault('ell',3);_case.setdefault('level',2);_case.setdefault('start',0) + + +def run_case(mod,case,mutation=None,fault=None): + w,r,e,num,row,rom,program=mod + raw=(PACKAGE/'vendor/pr5496-join.py').read_bytes() + if mutation: + old,new=mutation;need(raw.count(old)==1,'unique source mutation');raw=raw.replace(old,new) + join=load('audited_join',PACKAGE/'vendor/pr5496-join.py',raw) + source_data=[] + for s,h,x in zip(case['moduli'],case['widths'],case['state']): + source_data += [r.ROOT]+[w.ONE]*h+[r.WORD_END]+bits(s,h)+[r.WORD_END]+bits(x,h)+[r.RECORD_END] + source=port(w,e,source_data+[w.RIGHT]) + n=1<