From 8002e6d09709e4b0a52596da4e2402269e6dd542 Mon Sep 17 00:00:00 2001 From: nightangelflowerwin-ops Date: Tue, 13 Oct 2026 03:31:31 -0700 Subject: [PATCH 1/2] Add rank-eight coded-helper construction and complete mixed-cost obstruction --- research/coded-helper-early-end8/CLAIM.md | 26 + .../CONTEXT-SELECTED.json | 153 + .../coded-helper-early-end8/EXPECTED.json | 3019 +++++++++++++++++ research/coded-helper-early-end8/LICENSE | 201 ++ research/coded-helper-early-end8/PROOF.md | 152 + research/coded-helper-early-end8/README.md | 94 + research/coded-helper-early-end8/SOURCES.json | 29 + .../coded-helper-early-end8/VALIDATION.md | 36 + research/coded-helper-early-end8/binomial.py | 50 + research/coded-helper-early-end8/construct.py | 134 + research/coded-helper-early-end8/model.py | 62 + .../coded-helper-early-end8/native_worker.py | 68 + research/coded-helper-early-end8/packing.py | 88 + .../coded-helper-early-end8/test_controls.py | 76 + .../vendor/pr855/CODED-CELL.json | 65 + .../vendor/pr855/CONSTRUCTION-RECORD.json | 2244 ++++++++++++ .../vendor/pr855/EXACT-CERTIFICATE.json | 53 + .../vendor/pr855/NATIVE-EXPECTED.json | 2434 +++++++++++++ .../vendor/pr855/NOTICE.md | 39 + .../vendor/pr855/README.md | 223 ++ .../vendor/pr855/SOURCE-PINS.json | 23 + .../vendor/pr855/exact.py | 173 + .../vendor/pr855/native_worker.py | 105 + .../vendor/pr855/verify.py | 173 + .../vendor/pr855/words/negative-ck.json.gz | Bin 0 -> 60030 bytes .../vendor/pr855/words/negative-jp8.json.gz | Bin 0 -> 63350 bytes .../vendor/pr855/words/positive-ck.json.gz | Bin 0 -> 59998 bytes .../vendor/pr855/words/positive-jp8.json.gz | Bin 0 -> 63410 bytes research/coded-helper-early-end8/verify.py | 100 + 29 files changed, 9820 insertions(+) create mode 100644 research/coded-helper-early-end8/CLAIM.md create mode 100644 research/coded-helper-early-end8/CONTEXT-SELECTED.json create mode 100644 research/coded-helper-early-end8/EXPECTED.json create mode 100644 research/coded-helper-early-end8/LICENSE create mode 100644 research/coded-helper-early-end8/PROOF.md create mode 100644 research/coded-helper-early-end8/README.md create mode 100644 research/coded-helper-early-end8/SOURCES.json create mode 100644 research/coded-helper-early-end8/VALIDATION.md create mode 100644 research/coded-helper-early-end8/binomial.py create mode 100644 research/coded-helper-early-end8/construct.py create mode 100644 research/coded-helper-early-end8/model.py create mode 100644 research/coded-helper-early-end8/native_worker.py create mode 100644 research/coded-helper-early-end8/packing.py create mode 100644 research/coded-helper-early-end8/test_controls.py create mode 100644 research/coded-helper-early-end8/vendor/pr855/CODED-CELL.json create mode 100644 research/coded-helper-early-end8/vendor/pr855/CONSTRUCTION-RECORD.json create mode 100644 research/coded-helper-early-end8/vendor/pr855/EXACT-CERTIFICATE.json create mode 100644 research/coded-helper-early-end8/vendor/pr855/NATIVE-EXPECTED.json create mode 100644 research/coded-helper-early-end8/vendor/pr855/NOTICE.md create mode 100644 research/coded-helper-early-end8/vendor/pr855/README.md create mode 100644 research/coded-helper-early-end8/vendor/pr855/SOURCE-PINS.json create mode 100644 research/coded-helper-early-end8/vendor/pr855/exact.py create mode 100644 research/coded-helper-early-end8/vendor/pr855/native_worker.py create mode 100644 research/coded-helper-early-end8/vendor/pr855/verify.py create mode 100644 research/coded-helper-early-end8/vendor/pr855/words/negative-ck.json.gz create mode 100644 research/coded-helper-early-end8/vendor/pr855/words/negative-jp8.json.gz create mode 100644 research/coded-helper-early-end8/vendor/pr855/words/positive-ck.json.gz create mode 100644 research/coded-helper-early-end8/vendor/pr855/words/positive-jp8.json.gz create mode 100644 research/coded-helper-early-end8/verify.py diff --git a/research/coded-helper-early-end8/CLAIM.md b/research/coded-helper-early-end8/CLAIM.md new file mode 100644 index 0000000000..983f418d6a --- /dev/null +++ b/research/coded-helper-early-end8/CLAIM.md @@ -0,0 +1,26 @@ +# User-selected PR781 follow-up + +The user selected PR781 and PR838 for substantial completed contributions. +This branch handles the coded-helper construction; PR838's follow-up is PR865. +No new random track is inferred for this explicitly selected task. + +Original PR781 pinned and freshly reproduced. Initial promoted transfer found +five illegal zero-frame reads from entering helpers; fully charged entrance and +gauge repairs passed both orientations. Concurrent PR855 then completed two +full provider embeddings and a packing screen. Its source was read, retained +and freshly reproduced before extending its cleanup lifetime. + +New object: helper 448's end-B inverse row and rank-eight early endpoint in +both placements and both providers. Method: exact two-read early restoration, +internal premix, original all-column native audit; independent binomial +intervals, Cartesian pattern census and mixed-variant DP for the complete cost. +Stopping rule: all four new words, native/certificate controls and complete +72-call mixture coverage. No general frame search or new topology is claimed. + +Base f567884aeb8851b6e794af1184119a3bfbe1e631. No pinned sprint issue found; +claim is local. NeoKazuya's PR855 is credited and not described as superseded. +No phase/global nomination is pursued after the favorable full budget rejects +every mixture. Publication overlap was refreshed through PR888; main remains f567884a. +PR855 remains the directly consumed predecessor. Other new proposals concern +different words, owner controllers, Lean proofs or independent checks and are +not imported. No coded-core or residue-potential-method priority is claimed. diff --git a/research/coded-helper-early-end8/CONTEXT-SELECTED.json b/research/coded-helper-early-end8/CONTEXT-SELECTED.json new file mode 100644 index 0000000000..1f107b55a2 --- /dev/null +++ b/research/coded-helper-early-end8/CONTEXT-SELECTED.json @@ -0,0 +1,153 @@ +{ + "status": "Maintainer-reviewed conditional finite construction; see the integration receipt for publication and PR resolution status", + "kappa": "1661634653669567/1000000000000000000", + "decimal": "0.001661634653669567", + "source_prs": [ + 799, + 741, + 699, + 685, + 676, + 664, + 660, + 659, + 656, + 655, + 653, + 658, + 649, + 645, + 635, + 589, + 555, + 545, + 626, + 623, + 622, + 620, + 617, + 615, + 604, + 601, + 596, + 592, + 591, + 593, + 599, + 588, + 543, + 584, + 586, + 583, + 582, + 579, + 576, + 575, + 574, + 571, + 569, + 568, + 567, + 564, + 562, + 561, + 559, + 558, + 552, + 550, + 548, + 541, + 535, + 510, + 503, + 531, + 523, + 493, + 514, + 507, + 484, + 496, + 505, + 522, + 520, + 472, + 458, + 445, + 442, + 425, + 433, + 370, + 361, + 315 + ], + "source_manifest": "research/community-frontier799-audit/SELECTED-SOURCE.json", + "certificate": "research/community-frontier799-audit/ASSEMBLY.json", + "certificate_sha256": "65c7648a8edaeaf4e0b8de3e21eeda94fba124d0935010d45ac9f76375b72cec", + "proof": "docs/research/community-frontier799-review.md", + "proof_supplements": { + "research/e8-bit-r420/README.md": "9807be57c6adf26b30e4f54e2f8160075bbc05091f1a6d157e43d2a4620c1c9f", + "research/complex-571-free4fc8/NOTICE.md": "a4c084abdc1c7a9ac683eeb11124335d51cff8a6deba6ee92ba5a12bceaa2c97", + "research/complex-multicold/proof/CONSTRUCTION.md": "27ece5e1c11b90d97a808b56eff897b998c10e61016db95867f84e6e6aef132f", + "research/complex-multicold/vendor/pr559/PROOF.md": "d5d498edc56fdef8c5798af7f5ec66948bd2f66c553b9efe366cdaab01bd3453", + "research/structural-gain/frontier-composition/README.md": "70f0f791cbe3b2603f85d85bb9055aa0ee1df6dc06ba82fc1921356948312887", + "research/complex-joint-prefix/proof/CONSTRUCTION.md": "a92e610e7a598d99c612d1b63d1a03a49c0cd1e15ddd29fa55c465ddd8c18105", + "research/kernel-frame-coalescing/PROOF.md": "fa8b2f36b9590ee80ff45d3f7724f8c7de8ad29a29f366d5133010c77e41fe1b", + "research/complex-571-hpeq5/README.md": "4000b37f6c07c09d971dc4010ceb137c13340f3a8809d3272046ccaf746c3e2b", + "research/hyperplane-end-lean/PROOF.md": "1cbce5cf0ff0152f71e8ae7bef25841d1ce13010af248ff7209182d2328c21c9", + "docs/research/community-hyperplane599-review.md": "3298cd0d451541508af232cac72efbd7c10580e6c6ad493a855ab0faa01ade8c", + "research/complex-571-cold14-b3/README.md": "1945785785c153c7d0e8d4c071adabe626c1091b71721ff85d2d67191b376b96", + "research/complex-571-cold14-b3/PROOF-NOTE.md": "1cf592cbc8ab8e21d2dd8c1e945a5c64c6d5cde1216fb06e05a36c1c6ec6613d", + "scripts/verify_cold617_interface.py": "95d7a9094c05ad975fb72f5ab7605593003245a503c8456764987e512028fa6a", + "docs/research/community-cold617-review.md": "b3f2bcbae1249f1f651032022ce1e6e2bfb3f563ce580bf53671f50a074d7046", + "research/complex-k492-owner-repair/README.md": "ee5a1ace4828f7a073be97e95c2d931988774dd3a29a877e65abdf429aeec902", + "research/complex-k492-owner-repair/PROOF-NOTE.md": "337d70fe7abd9afca1d90954c23bde87f4dc27888cc1a6b4bb80506fd6fbf8c5", + "research/complex-k492-owner-repair/PROOF-NOTE-R.md": "22312bb347bdf159e6a01a45c47675e6170d33b258e2fd9ed52aee88fb92c0ed", + "docs/research/community-k492-review.md": "3b731d30e80010b15408a289b0b32192700885474c8b36d48ee3320a7a8c5c47", + "scripts/verify_frontier626.py": "2207bd0ef04a19ef276869085afdedad80a0938fa75db5e1aa7ab73fd3429444", + "scripts/verify_frontier626_bindings.py": "cda63ff41c6d6e2e352c7bf75b84e690c0ce57e4ec6c0355573bb5d9b1f98280", + "scripts/verify_frontier588_bindings.py": "6d1932eea7b1936598118ea8e607b09c29b6e31b749ec41bbe0744ea4f0b606d", + "scripts/verify_hpe_lean_binding.py": "52aa1d23641e4c716b43c98f6b883ad042087dd03a9d01369e8e6a735b07aa03", + "research/hyperplane-end-lean/HyperplaneEnd/Exact.lean": "eebf3a3982af7ab9be45777b272a6aaa523206fa7667ceb6df63ad6589fd8183", + "docs/research/community-frontier741-review.md": "4634694fa75ea9e749ecf19d3db3e4d82effe3b61a2efdf08ac5a97275fb676a", + "research/complex-sw4-frame8/PROVENANCE.md": "c7648719b01dd93af2c3a2c6e951a54711d13892dc4bd4339d16edb4c37c9bf0", + "research/e8-bit-p111-tuned/tune/README.md": "46c7917fb252949f38b7bcd88cf568efc282e3ea065b61d11e457e41673d0b2d", + "scripts/verify_frontier741.py": "215ee6a12de8dc2392e6811a1b8f2140035f6b2d2a0d2100ff4bd2fdcb8bb39b", + "scripts/verify_frontier741_bindings.py": "eff455167e2fd0bc9a67d35241d0e69d8edc58f3a23e776dcfe8f500ca8e8d67", + "docs/research/community-frontier799-review.md": "bd91c10c67f2a873fd456b95cbb43f715a43dac0e0a66938737d591c6b754052", + "scripts/verify_frontier799.py": "19fe1b32079095160dc00fe2f7df75e0fcbc82cff37f7159b755c8a63bd5ce99", + "scripts/verify_frontier799_bindings.py": "43897b3c99212d6134870898a1840f32898aa1b3679b299e654901568ad7e19b", + "research/gauge44-frames-x/PROOF-NOTE-FRAMES-X4.md": "39c50420ebb6e8813706a49b2cf759f277c4afac9f6780fc0a7ac6a5fb86e036" + }, + "review": "docs/research/community-frontier799-review.md", + "validation": "docs/research/community-frontier799-integration.json", + "reproduce": "make frontier799-verify", + "scope": "Source-bound finite X4 construction and freshly rebuilt bit589/ancestral SW4 supplier checks; optional verified ancestry reuse recorded explicitly. Inherited all-size/compiler, common-label/mutable-source, whole-call hosting, precision/tape and analytic hypotheses remain. Not a full Lean multiplication theorem. Integration Linux CI status is separate.", + "previous_kappa": "1661202643272239/1000000000000000000", + "previous_record": "certificates/checkpoints/frontier741.json", + "audited_source_head": "80e6463157cfc80b85af09e7e2f14748fe2dac60", + "reviewed_dependency_heads": { + "588": "6d0e53b66c29abd17981881a09eaff41ac862d85", + "543": "2065fe4f72a914d907f1046603f5a36f17018535", + "568": "71c99ac935a33bb7b59a1b4a7af8725a939b0b90", + "569": "1424da81263a5305b35e4cf74ef686c275f03f3f", + "571": "b7bdc5a8de18fcf418cfb9c7d83a2b1097a5e4a3", + "575": "eac6f7e378ab622dac50a2fd4b7ef6eab014de44", + "583": "89be768f0157f5a3d8e4db69cf1748768605eac9", + "586": "4846fee5b06af770e9b3a10c36200f673d656725", + "591": "f622547244bf6d895a571a7b035142ba66279806", + "592": "1f471c445c06a45a32e2c47e8d74c8264b68356b", + "593": "fdb6dcc6d7bc29764c5b6b4d32b7fa050acf74a4", + "596": "7732dd5e46863ff294b5e443661cb9d99abf4e01", + "599": "bc13c8a3e000442606bd2dbe8583a17649ba6c32", + "601": "529ab7dcb59d5ea7a5798e9e06cf5b3aee8a1550", + "604": "1b795c5d7dea746ba310572585c0ef067574b4a6", + "615": "bf8a49a34350599763cced8592db81dc62c2c1c0", + "617": "904d62855723c00f8acef9a287a10768598fdeb2", + "622": "f69477f4f6d3c7eb1f740b166881bffed4ffa9f6", + "623": "e39a615ca601ce5d62abeb24f3fcdb8644ca1005", + "626": "660de893d27bb7abd1d5b01b1640207528a5c851", + "589": "a5afc8c6169ea61ba7c51dfd3cade02cc7b13b46", + "741": "e516b1463606840a15f80aac1995d64ce0092e89", + "799": "80e6463157cfc80b85af09e7e2f14748fe2dac60" + } +} diff --git a/research/coded-helper-early-end8/EXPECTED.json b/research/coded-helper-early-end8/EXPECTED.json new file mode 100644 index 0000000000..f8cf61b3f4 --- /dev/null +++ b/research/coded-helper-early-end8/EXPECTED.json @@ -0,0 +1,3019 @@ +{ + "base": "f567884aeb8851b6e794af1184119a3bfbe1e631", + "source_prs": [ + 781, + 855 + ], + "status": "PASS_EARLY8_CONSTRUCTION_AND_EXTENDED_COST_OBSTRUCTION", + "native_words": 8, + "new_constructions": { + "positive-ck": { + "input_content_sha256": "ffb6918e397bbc026fe7ad1914bb94e316cd6eacd1d2d249ccd7acf10749b1b2", + "helper": 448, + "inverse_row": { + "431": "-1", + "447": "-1", + "448": "1" + }, + "end_of_B_frames": { + "431": [ + 256, + 129, + 64, + 33, + 17, + 9, + 6 + ], + "447": [ + 264, + 136, + 73, + 33, + 16, + 6 + ], + "448": [ + 256, + 128, + 65, + 32, + 16, + 9, + 6 + ] + }, + "endpoint": [ + 256, + 128, + 64, + 32, + 16, + 8, + 6, + 1 + ], + "endpoint_rank": 8, + "removed_cleanup_indexes": [ + 131, + 132 + ], + "early_corrections": [ + [ + "add", + 448, + 431, + -1, + 1, + [ + 256, + 128, + 64, + 32, + 16, + 8, + 6, + 1 + ] + ], + [ + "add", + 448, + 447, + -1, + 1, + [ + 256, + 128, + 64, + 32, + 16, + 8, + 6, + 1 + ] + ] + ], + "internal_premix": [ + [ + "add", + 163, + 448, + 1, + 1, + [] + ], + [ + "add", + 167, + 448, + 1, + 1, + [] + ], + [ + "add", + 195, + 448, + -1, + 1, + [] + ] + ] + }, + "positive-jp8": { + "input_content_sha256": "8e31803f503ab2b416da2af15dd73cad1b04f33966a24b747c017bc1bfcf9934", + "helper": 448, + "inverse_row": { + "431": "-1", + "447": "-1", + "448": "1" + }, + "end_of_B_frames": { + "431": [ + 256, + 129, + 64, + 33, + 17, + 9, + 6 + ], + "447": [ + 264, + 136, + 73, + 33, + 16, + 6 + ], + "448": [ + 256, + 128, + 65, + 32, + 16, + 9, + 6 + ] + }, + "endpoint": [ + 256, + 128, + 64, + 32, + 16, + 8, + 6, + 1 + ], + "endpoint_rank": 8, + "removed_cleanup_indexes": [ + 131, + 132 + ], + "early_corrections": [ + [ + "add", + 448, + 431, + -1, + 1, + [ + 256, + 128, + 64, + 32, + 16, + 8, + 6, + 1 + ] + ], + [ + "add", + 448, + 447, + -1, + 1, + [ + 256, + 128, + 64, + 32, + 16, + 8, + 6, + 1 + ] + ] + ], + "internal_premix": [ + [ + "add", + 163, + 448, + 1, + 1, + [] + ], + [ + "add", + 167, + 448, + 1, + 1, + [] + ], + [ + "add", + 195, + 448, + -1, + 1, + [] + ] + ] + }, + "negative-ck": { + "input_content_sha256": "a6b394127bb81f23a2ca7d187c1e4642b369840a82b7627f7872fc772942a5a0", + "helper": 448, + "inverse_row": { + "50": "-1", + "82": "-1", + "448": "1" + }, + "end_of_B_frames": { + "50": [ + 272, + 144, + 65, + 49, + 8, + 6 + ], + "82": [ + 256, + 129, + 64, + 33, + 16, + 8, + 6 + ], + "448": [ + 256, + 128, + 64, + 33, + 17, + 8, + 6 + ] + }, + "endpoint": [ + 256, + 128, + 64, + 32, + 16, + 8, + 6, + 1 + ], + "endpoint_rank": 8, + "removed_cleanup_indexes": [ + 134, + 135 + ], + "early_corrections": [ + [ + "add", + 448, + 50, + -1, + 1, + [ + 256, + 128, + 64, + 32, + 16, + 8, + 6, + 1 + ] + ], + [ + "add", + 448, + 82, + -1, + 1, + [ + 256, + 128, + 64, + 32, + 16, + 8, + 6, + 1 + ] + ] + ], + "internal_premix": [ + [ + "add", + 162, + 448, + 1, + 1, + [] + ], + [ + "add", + 166, + 448, + 1, + 1, + [] + ], + [ + "add", + 198, + 448, + -1, + 1, + [] + ] + ] + }, + "negative-jp8": { + "input_content_sha256": "d7eb38ba90374b914df7751d09d5b2d9e9bd5f898766cab24824d6f51d71705e", + "helper": 448, + "inverse_row": { + "50": "-1", + "82": "-1", + "448": "1" + }, + "end_of_B_frames": { + "50": [ + 272, + 144, + 65, + 49, + 8, + 6 + ], + "82": [ + 256, + 129, + 64, + 33, + 16, + 8, + 6 + ], + "448": [ + 256, + 128, + 64, + 33, + 17, + 8, + 6 + ] + }, + "endpoint": [ + 256, + 128, + 64, + 32, + 16, + 8, + 6, + 1 + ], + "endpoint_rank": 8, + "removed_cleanup_indexes": [ + 134, + 135 + ], + "early_corrections": [ + [ + "add", + 448, + 50, + -1, + 1, + [ + 256, + 128, + 64, + 32, + 16, + 8, + 6, + 1 + ] + ], + [ + "add", + 448, + 82, + -1, + 1, + [ + 256, + 128, + 64, + 32, + 16, + 8, + 6, + 1 + ] + ] + ], + "internal_premix": [ + [ + "add", + 162, + 448, + 1, + 1, + [] + ], + [ + "add", + 166, + 448, + 1, + 1, + [] + ], + [ + "add", + 198, + 448, + -1, + 1, + [] + ] + ] + } + }, + "new_native_receipts": { + "positive-ck": { + "status": "PASS_CHANGED_WORD_ALL_COLUMNS_AND_NATIVE_FRAMES", + "input_content_sha256": "6e6ea4df59fa36112d760a49feed3b54889fda33cc63c1d12f538a136d4bc9f6", + "routing_content_sha256": "7c84ac65c8b37173aa4293934f041915895e8ec30595844cc1534e2a19ae0d25", + "canonical_content_sha256": "53f8e0d95e09779177254c936d070a356f4eba457453f5f2e43234f6703ebac8", + "live_columns_each_orientation": 714, + "helpers": 490, + "compensation_additions": 8551, + "scalar_operations": 21777, + "center_rank_sum": 64, + "local_profile": { + "1": 2602, + "2": 569, + "3": 311, + "4": 155, + "5": 61, + "6": 8, + "8": 8 + }, + "local_rank_mass": 5710, + "widths": [ + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 4, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 4, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 7, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 4, + 4, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 4, + 4, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 4, + 4, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 4, + 4, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 4, + 4, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 4, + 4, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 4, + 4, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 4, + 4, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 4, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 7, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 7, + 9, + 9, + 9, + 9, + 9, + 8, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 8, + 9, + 8, + 9, + 8, + 9, + 8, + 9, + 7, + 7, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 8, + 8, + 7, + 7, + 7, + 7, + 8, + 9, + 8, + 9, + 8, + 8, + 7, + 7, + 7, + 7, + 7, + 7, + 9, + 9, + 9, + 9, + 8, + 8, + 8, + 8, + 8, + 9, + 8, + 9, + 8, + 9, + 8, + 9, + 8, + 8, + 7, + 7, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 8, + 8, + 8, + 8, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 9, + 9, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 9, + 9, + 8, + 8, + 9, + 9, + 9, + 9, + 7, + 7, + 7, + 7, + 9, + 9, + 7, + 7, + 9, + 8, + 9, + 8, + 7, + 7, + 7, + 7, + 9, + 9, + 7, + 9, + 8, + 9, + 8, + 8, + 9, + 8, + 9, + 7, + 7, + 8, + 8, + 8, + 8, + 9, + 9, + 9, + 9, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 8, + 8, + 8, + 5, + 8, + 5, + 5, + 5, + 8, + 8, + 8, + 5, + 8, + 5, + 5, + 5, + 8, + 8, + 8, + 5, + 8, + 5, + 5, + 5, + 8, + 8, + 8, + 4, + 8, + 4, + 4, + 4, + 8, + 8, + 8, + 5, + 8, + 5, + 5, + 5, + 8, + 8, + 8, + 5, + 8, + 5, + 5, + 5, + 8, + 8, + 8, + 5, + 8, + 5, + 5, + 5, + 8, + 8, + 8, + 4, + 8, + 4, + 4, + 4, + 8, + 8, + 8, + 5, + 8, + 5, + 5, + 5, + 8, + 8, + 8, + 5, + 8, + 5, + 5, + 5, + 8, + 8, + 8, + 5, + 8, + 5, + 5, + 5, + 8, + 8, + 8, + 5, + 8, + 5, + 5, + 5, + 8, + 8, + 8, + 5, + 8, + 5, + 5, + 5, + 8, + 8, + 8, + 5, + 8, + 5, + 5, + 5 + ], + "frames": 1127, + "directed_edges": 3120, + "tau": 43, + "target_port_order_matches_baseline": true, + "scope": "Fresh exact forward and inverse-transpose scalar replay on every arbitrary input; all native frame chains and dyadic primitives. Phase lowering, wrappers, global owners and global assembly are separate.", + "hyperplane_ended_helpers": [ + 234, + 250, + 266, + 281, + 282, + 297, + 298, + 313, + 314, + 329, + 330, + 345, + 346, + 361, + 362, + 377, + 378, + 393, + 394, + 410, + 426, + 442, + 448, + 449, + 450, + 451, + 452, + 453, + 454, + 455, + 456, + 457, + 458, + 459, + 468, + 469, + 490, + 491, + 514, + 515, + 538, + 539, + 562, + 563, + 574, + 583, + 584, + 593, + 594, + 595, + 596, + 597, + 598, + 599, + 600, + 601 + ], + "early_cleanup_gates": 119, + "cold_hyperplane_ended_helpers": [ + 234, + 250, + 266, + 281, + 282, + 297, + 298, + 313, + 314, + 329, + 330, + 345, + 346, + 361, + 362, + 377, + 378, + 393, + 394, + 410, + 426, + 442, + 448 + ], + "refactored_cleanup_gates": 8440, + "refactored_cleanup": true + }, + "positive-jp8": { + "status": "PASS_CHANGED_WORD_ALL_COLUMNS_AND_NATIVE_FRAMES", + "input_content_sha256": "9a4ae7a97ac783da50cd64e4e9619a79ee16d94638db533d5481286e0836e27e", + "routing_content_sha256": "7c84ac65c8b37173aa4293934f041915895e8ec30595844cc1534e2a19ae0d25", + "canonical_content_sha256": "dfbbff2e28a29cab286dbc42d8c44d42a1b304217ce295f8e899c60be626802c", + "live_columns_each_orientation": 714, + "helpers": 490, + "compensation_additions": 8647, + "scalar_operations": 22534, + "center_rank_sum": 64, + "local_profile": { + "1": 2518, + "2": 417, + "3": 455, + "4": 155, + "5": 61, + "6": 8, + "8": 8 + }, + "local_rank_mass": 5754, + "widths": [ + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 4, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 4, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 7, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 4, + 4, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 4, + 4, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 4, + 4, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 4, + 4, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 4, + 4, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 4, + 4, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 4, + 4, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 4, + 4, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 4, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 7, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 7, + 9, + 9, + 9, + 9, + 9, + 8, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 7, + 7, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 8, + 8, + 8, + 8, + 8, + 8, + 9, + 9, + 9, + 9, + 8, + 8, + 7, + 7, + 8, + 8, + 8, + 8, + 9, + 9, + 9, + 9, + 8, + 8, + 8, + 8, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 8, + 8, + 7, + 7, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 8, + 8, + 8, + 8, + 8, + 8, + 8, + 8, + 8, + 8, + 8, + 8, + 9, + 9, + 7, + 7, + 8, + 8, + 8, + 8, + 8, + 8, + 8, + 8, + 9, + 9, + 8, + 8, + 9, + 9, + 9, + 9, + 8, + 8, + 8, + 8, + 9, + 9, + 7, + 7, + 9, + 8, + 9, + 8, + 8, + 8, + 8, + 8, + 9, + 9, + 7, + 9, + 8, + 9, + 8, + 9, + 9, + 9, + 9, + 7, + 7, + 8, + 8, + 8, + 8, + 9, + 9, + 9, + 9, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 8, + 8, + 8, + 5, + 8, + 5, + 5, + 5, + 8, + 8, + 8, + 5, + 8, + 5, + 5, + 5, + 8, + 8, + 8, + 5, + 8, + 5, + 5, + 5, + 8, + 8, + 8, + 4, + 8, + 4, + 4, + 4, + 8, + 8, + 8, + 5, + 8, + 5, + 5, + 5, + 8, + 8, + 8, + 5, + 8, + 5, + 5, + 5, + 8, + 8, + 8, + 5, + 8, + 5, + 5, + 5, + 8, + 8, + 8, + 4, + 8, + 4, + 4, + 4, + 8, + 8, + 8, + 5, + 8, + 5, + 5, + 5, + 8, + 8, + 8, + 5, + 8, + 5, + 5, + 5, + 8, + 8, + 8, + 5, + 8, + 5, + 5, + 5, + 8, + 8, + 8, + 5, + 8, + 5, + 5, + 5, + 8, + 8, + 8, + 5, + 8, + 5, + 5, + 5, + 8, + 8, + 8, + 5, + 8, + 5, + 5, + 5 + ], + "frames": 1046, + "directed_edges": 3031, + "tau": 43, + "target_port_order_matches_baseline": true, + "scope": "Fresh exact forward and inverse-transpose scalar replay on every arbitrary input; all native frame chains and dyadic primitives. Phase lowering, wrappers, global owners and global assembly are separate.", + "hyperplane_ended_helpers": [ + 234, + 250, + 266, + 281, + 282, + 297, + 298, + 313, + 314, + 329, + 330, + 345, + 346, + 361, + 362, + 377, + 378, + 393, + 394, + 410, + 426, + 442, + 448, + 449, + 450, + 451, + 452, + 453, + 454, + 455, + 456, + 457, + 458, + 459, + 468, + 469, + 490, + 491, + 514, + 515, + 538, + 539, + 562, + 563, + 574, + 583, + 584, + 593, + 594, + 595, + 596, + 597, + 598, + 599, + 600, + 601 + ], + "early_cleanup_gates": 119, + "cold_hyperplane_ended_helpers": [ + 234, + 250, + 266, + 281, + 282, + 297, + 298, + 313, + 314, + 329, + 330, + 345, + 346, + 361, + 362, + 377, + 378, + 393, + 394, + 410, + 426, + 442, + 448 + ], + "refactored_cleanup_gates": 9137, + "refactored_cleanup": true + }, + "negative-ck": { + "status": "PASS_CHANGED_WORD_ALL_COLUMNS_AND_NATIVE_FRAMES", + "input_content_sha256": "f72902cb4cd5d7ba6f98c21731d8a342b9537618a803d9461aae78beb21b5463", + "routing_content_sha256": "7c84ac65c8b37173aa4293934f041915895e8ec30595844cc1534e2a19ae0d25", + "canonical_content_sha256": "d5940d051f3b71e22512210a9be701c83b87f48abbf923377e60477f17f7f553", + "live_columns_each_orientation": 717, + "helpers": 493, + "compensation_additions": 8545, + "scalar_operations": 21762, + "center_rank_sum": 64, + "local_profile": { + "1": 2593, + "2": 548, + "3": 305, + "4": 164, + "5": 70, + "6": 8, + "8": 8 + }, + "local_rank_mass": 5722, + "widths": [ + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 4, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 4, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 4, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 4, + 4, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 4, + 4, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 4, + 4, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 4, + 4, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 4, + 4, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 4, + 4, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 4, + 4, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 4, + 4, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 4, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 4, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 4, + 9, + 9, + 9, + 9, + 9, + 8, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 8, + 9, + 8, + 9, + 8, + 9, + 8, + 9, + 7, + 7, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 7, + 8, + 8, + 7, + 7, + 7, + 7, + 8, + 9, + 8, + 9, + 8, + 8, + 7, + 7, + 7, + 7, + 7, + 7, + 9, + 9, + 9, + 9, + 8, + 8, + 8, + 8, + 8, + 9, + 8, + 9, + 8, + 9, + 8, + 9, + 8, + 8, + 7, + 7, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 8, + 8, + 8, + 8, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 9, + 9, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 9, + 9, + 8, + 8, + 9, + 9, + 9, + 9, + 7, + 7, + 7, + 7, + 9, + 9, + 7, + 7, + 9, + 8, + 9, + 8, + 7, + 7, + 7, + 7, + 9, + 9, + 7, + 9, + 8, + 9, + 8, + 8, + 9, + 8, + 9, + 7, + 7, + 8, + 8, + 8, + 8, + 9, + 9, + 9, + 9, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 8, + 8, + 8, + 5, + 8, + 5, + 5, + 5, + 8, + 8, + 8, + 5, + 8, + 5, + 5, + 5, + 8, + 8, + 8, + 5, + 8, + 5, + 5, + 5, + 8, + 8, + 8, + 4, + 8, + 4, + 4, + 4, + 8, + 8, + 8, + 5, + 8, + 5, + 5, + 5, + 8, + 8, + 8, + 5, + 8, + 5, + 5, + 5, + 8, + 8, + 8, + 5, + 8, + 5, + 5, + 5, + 8, + 8, + 8, + 4, + 8, + 4, + 4, + 4, + 8, + 8, + 8, + 5, + 8, + 5, + 5, + 5, + 8, + 8, + 8, + 5, + 8, + 5, + 5, + 5, + 8, + 8, + 8, + 5, + 8, + 5, + 5, + 5, + 8, + 8, + 8, + 5, + 8, + 5, + 5, + 5, + 8, + 8, + 8, + 5, + 8, + 5, + 5, + 5, + 8, + 8, + 8, + 5, + 8, + 5, + 5, + 5 + ], + "frames": 1114, + "directed_edges": 3099, + "tau": 43, + "target_port_order_matches_baseline": true, + "scope": "Fresh exact forward and inverse-transpose scalar replay on every arbitrary input; all native frame chains and dyadic primitives. Phase lowering, wrappers, global owners and global assembly are separate.", + "hyperplane_ended_helpers": [ + 234, + 250, + 266, + 281, + 282, + 297, + 298, + 313, + 314, + 329, + 330, + 345, + 346, + 361, + 362, + 377, + 378, + 393, + 394, + 410, + 426, + 442, + 448, + 449, + 450, + 451, + 452, + 453, + 454, + 455, + 456, + 457, + 458, + 459, + 468, + 469, + 478, + 491, + 492, + 515, + 516, + 539, + 540, + 563, + 564, + 575, + 584, + 585, + 594, + 595, + 596, + 597, + 598, + 599, + 600, + 601, + 602, + 603, + 604 + ], + "early_cleanup_gates": 122, + "cold_hyperplane_ended_helpers": [ + 234, + 250, + 266, + 281, + 282, + 297, + 298, + 313, + 314, + 329, + 330, + 345, + 346, + 361, + 362, + 377, + 378, + 393, + 394, + 410, + 426, + 442, + 448 + ], + "refactored_cleanup_gates": 8431, + "refactored_cleanup": true + }, + "negative-jp8": { + "status": "PASS_CHANGED_WORD_ALL_COLUMNS_AND_NATIVE_FRAMES", + "input_content_sha256": "9d19763b1f21c5bc521f97b9f0e10ca9932eefd8bedbd57987088013ff46b473", + "routing_content_sha256": "7c84ac65c8b37173aa4293934f041915895e8ec30595844cc1534e2a19ae0d25", + "canonical_content_sha256": "bb84a6da53d11520eb36671d8300152e2c1376dc377e0e0e0c77b40b7346be22", + "live_columns_each_orientation": 717, + "helpers": 493, + "compensation_additions": 8641, + "scalar_operations": 22519, + "center_rank_sum": 64, + "local_profile": { + "1": 2509, + "2": 396, + "3": 449, + "4": 164, + "5": 70, + "6": 8, + "8": 8 + }, + "local_rank_mass": 5766, + "widths": [ + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 4, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 4, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 4, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 4, + 4, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 4, + 4, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 4, + 4, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 4, + 4, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 4, + 4, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 4, + 4, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 4, + 4, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 4, + 4, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 4, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 4, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 4, + 9, + 9, + 9, + 9, + 9, + 8, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 7, + 7, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 7, + 8, + 8, + 8, + 8, + 8, + 8, + 9, + 9, + 9, + 9, + 8, + 8, + 7, + 7, + 8, + 8, + 8, + 8, + 9, + 9, + 9, + 9, + 8, + 8, + 8, + 8, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 8, + 8, + 7, + 7, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 8, + 8, + 8, + 8, + 8, + 8, + 8, + 8, + 8, + 8, + 8, + 8, + 9, + 9, + 7, + 7, + 8, + 8, + 8, + 8, + 8, + 8, + 8, + 8, + 9, + 9, + 8, + 8, + 9, + 9, + 9, + 9, + 8, + 8, + 8, + 8, + 9, + 9, + 7, + 7, + 9, + 8, + 9, + 8, + 8, + 8, + 8, + 8, + 9, + 9, + 7, + 9, + 8, + 9, + 8, + 9, + 9, + 9, + 9, + 7, + 7, + 8, + 8, + 8, + 8, + 9, + 9, + 9, + 9, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 8, + 8, + 8, + 5, + 8, + 5, + 5, + 5, + 8, + 8, + 8, + 5, + 8, + 5, + 5, + 5, + 8, + 8, + 8, + 5, + 8, + 5, + 5, + 5, + 8, + 8, + 8, + 4, + 8, + 4, + 4, + 4, + 8, + 8, + 8, + 5, + 8, + 5, + 5, + 5, + 8, + 8, + 8, + 5, + 8, + 5, + 5, + 5, + 8, + 8, + 8, + 5, + 8, + 5, + 5, + 5, + 8, + 8, + 8, + 4, + 8, + 4, + 4, + 4, + 8, + 8, + 8, + 5, + 8, + 5, + 5, + 5, + 8, + 8, + 8, + 5, + 8, + 5, + 5, + 5, + 8, + 8, + 8, + 5, + 8, + 5, + 5, + 5, + 8, + 8, + 8, + 5, + 8, + 5, + 5, + 5, + 8, + 8, + 8, + 5, + 8, + 5, + 5, + 5, + 8, + 8, + 8, + 5, + 8, + 5, + 5, + 5 + ], + "frames": 1033, + "directed_edges": 3010, + "tau": 43, + "target_port_order_matches_baseline": true, + "scope": "Fresh exact forward and inverse-transpose scalar replay on every arbitrary input; all native frame chains and dyadic primitives. Phase lowering, wrappers, global owners and global assembly are separate.", + "hyperplane_ended_helpers": [ + 234, + 250, + 266, + 281, + 282, + 297, + 298, + 313, + 314, + 329, + 330, + 345, + 346, + 361, + 362, + 377, + 378, + 393, + 394, + 410, + 426, + 442, + 448, + 449, + 450, + 451, + 452, + 453, + 454, + 455, + 456, + 457, + 458, + 459, + 468, + 469, + 478, + 491, + 492, + 515, + 516, + 539, + 540, + 563, + 564, + 575, + 584, + 585, + 594, + 595, + 596, + 597, + 598, + 599, + 600, + 601, + 602, + 603, + 604 + ], + "early_cleanup_gates": 122, + "cold_hyperplane_ended_helpers": [ + 234, + 250, + 266, + 281, + 282, + 297, + 298, + 313, + 314, + 329, + 330, + 345, + 346, + 361, + 362, + 377, + 378, + 393, + 394, + 410, + 426, + 442, + 448 + ], + "refactored_cleanup_gates": 9128, + "refactored_cleanup": true + } + }, + "original_native_controls": { + "omit_entry_correction": "zero-frame compensation reads an entering helper", + "omit_full_cleanup_correction": "('arbitrary-dirt endpoint', False)", + "restore_old_cold_end": "('hpe cone pre-check (row / column)', [('row', 266, 19)])", + "omit_coded_helper_cleanup": "('arbitrary-dirt endpoint', False)", + "understate_paid_profile": "paid local profile differs from the reported local_profile" + }, + "original_recompression": "PASS", + "model": { + "endpoint": "65528268492323474503/40000000000000000000000", + "m": 73, + "live": 7168, + "calls": 72, + "rank_mass": 520704, + "capacities": { + "16": 3584, + "8": 5376, + "32": 3584, + "48": 3584 + }, + "widths": { + "4": 2160, + "5": 3456, + "7": 2848, + "8": 7904, + "9": 19056 + }, + "local": { + "1": 181536, + "2": 30016, + "3": 31104, + "4": 11520, + "5": 5040, + "6": 576, + "8": 576 + }, + "variants": { + "original9-positive": { + "profile": { + "1": 2, + "2": 18, + "3": 8, + "4": -5, + "5": -9 + }, + "widths": { + "4": -3, + "9": 1 + } + }, + "original9-negative": { + "profile": { + "1": -7, + "2": -3, + "3": 2, + "4": 4 + }, + "widths": { + "9": 1 + } + }, + "early8-positive": { + "profile": { + "1": 6, + "2": 17, + "3": 7, + "4": -5, + "5": -9 + }, + "widths": { + "4": -3, + "8": 1 + } + }, + "early8-negative": { + "profile": { + "1": -3, + "2": -4, + "3": 1, + "4": 4 + }, + "widths": { + "8": 1 + } + } + }, + "global": { + "1": 181659, + "2": 30016, + "3": 31104, + "4": 11520, + "5": 5040, + "6": 576, + "8": 576, + "37": 1, + "48": 2215 + } + }, + "packing": { + "patterns": 1163, + "potential_inequalities": 43031, + "dp_states": 2548, + "modified_calls": 1, + "residue": 23, + "minimum_margin": "3784588463776762504092569829/200000000000000000000000000000", + "minimum_counts": { + "early8-negative": 1, + "early8-positive": 0, + "original9-negative": 0, + "original9-positive": 0 + }, + "excluded": true, + "power_engine": "7000-term positive binomial with integer outward rounding and geometric tail" + }, + "nonempty_mixture_count": 1282974, + "current_target": { + "kappa": "1661634653669567/1000000000000000000", + "necessary_b": "1661634653669567/998338365346330433", + "excluded_from_b": "65528268492323474503/40000000000000000000000", + "source_head": "f567884aeb8851b6e794af1184119a3bfbe1e631" + }, + "scope": "Four rank-eight variants plus four original rank-nine words; fixed PR626 geometry/dispatch; whole-helper packing relaxation. Native identities/frames only; no new phase/global admission or multiplication exponent." +} diff --git a/research/coded-helper-early-end8/LICENSE b/research/coded-helper-early-end8/LICENSE new file mode 100644 index 0000000000..261eeb9e9f --- /dev/null +++ b/research/coded-helper-early-end8/LICENSE @@ -0,0 +1,201 @@ + Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + + APPENDIX: How to apply the Apache License to your work. + + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "[]" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. + + Copyright [yyyy] [name of copyright owner] + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. diff --git a/research/coded-helper-early-end8/PROOF.md b/research/coded-helper-early-end8/PROOF.md new file mode 100644 index 0000000000..0e1e0892fc --- /dev/null +++ b/research/coded-helper-early-end8/PROOF.md @@ -0,0 +1,152 @@ +# Retimed helper endpoint and complete favorable cost bound + +This is a fixed-program common-frame result, not a theorem about every +reversible multiplication algorithm. Let P denote the invertible scalar map +at the end of B, after input compensation, in one pinned PR855 word. Let h=448 +be its fresh coded helper. All payload values, including helper dirt, are +independent. Scalar gates on non-target registers never read a target register; +the initial precondition and generated compensation update targets only. + +## Exact cleanup row and minimum endpoint + +Multiplying the h-th output row by inverse elementary matrices in chronological +order gives the h-th row of P^-1. Target-only prefix operations have no effect +on that row. It has exactly three nonzero entries: + +``` +e_h^T P^-1 = e_h^T - e_s^T - e_t^T. +``` + +For positive embeddings `(s,t)=(431,447)`; for negative embeddings they are +`(50,82)`. An independently implemented row replay verifies the inverse-row +identity against the complete scalar word. Consequently the two operations +`h -= s; h -= t` restore the original helper value at end B. Every other +remaining cleanup gate is independent of h. Removing the old two h-targeted +full-frame gates and doing these reads first therefore preserves all endpoints. +The inherited auditor separately checks every arbitrary input column in both +orientations after the transformation. + +Let F_h,F_s,F_t be their end-B frames. In all four words, their join U has rank +eight (canonical raw basis `[256,128,64,32,16,8,6,1]`). Each operand frame is +contained in U, so the two reads have a legal common frame. The helper can stop +there; the other registers may subsequently climb to their original final +frames. Two new early-cleanup entries run before final climbs; retained entries +are renumbered after removing the old gates. Failing to update those entries is +a rejected frame/admission mutation, not a valid early-end construction. + +This also establishes a rank-eight lower bound for *any remaining monotone +common-frame cleanup at this same end-B boundary*. If the helper finishes at W, +it must contain F_h. Its final scalar row has nonzero coefficients on the +independent end-B variables s and t. Neither variable can reach that helper +through a chain of common-frame gates unless W contains its initial frame. +Frames cannot shrink. Thus W contains F_h+F_s+F_t=U and dim W>=8. Auxiliary +mixing after B cannot evade that argument. Changing the earlier word, frames, +representation, noncoordinate primitives or restoration contract is outside +the statement. No global frame or reversible-program optimum is claimed. + +## Respect the cold-helper wrapper interface + +A cold helper must not be read by the caller's zero-frame precondition or +automatically derived compensation before its entry wrapper. Simply declaring +the shorter endpoint fails that guard. Compute its dirty-response column q in +the input target chart. Put the additions `target -= q_target * h` at the start +of A, inside the wrapped child. Because the target chart and main target block +are inverse, these additions cancel the main word's helper-dirt response. +The external zero-frame compensation no longer reads h. Other dirt columns are +unchanged. The exact all-column native replay independently certifies this +calculation; omission of the premix is a negative control. + +No helper is cleared by erasing arbitrary information. The new word restores +its dirty helper exactly. Its logical child width is eight, because the helper +starts at bottom and ends at U. This is native scalar/frame evidence. New phase +lowering and residual-wrapper compilation are separate obligations, not inferred +from this finite replay. They are unnecessary to a favorable *cost rejection*. + +## Price the source climbs too + +Relative to each corresponding PR855 word, the paid local change is + +``` +4 H1 - H2 - H3, +``` + +and one width-nine helper becomes width eight. The helper's final climb is +split differently, and both source streams must reach U for the early reads; +their later climbs are still paid. At rank-mass exponent one, the local mass +falls by one, while the global idle mass increases by one. There is no new +rank deficit. Extra pointwise premix/preparation/access work is not assumed +negative or credited as a saving. The cost lower bound grants it for free. + +## Complete packing relaxation + +Keep PR626's fixed geometry: 72 calls, m=73, live=7168, rank deficit=2560 and +the data capacities 8/16/32/48. Recount capacities separately from the plan's +windows and all native data recipes. At any call choose the original provider, +the original positive/negative PR855 replacement, or its new early-eight +positive/negative replacement. Deltas agree for ck and jp8, so four counts +suffice. Every nonempty count vector whose sum is at most 72 is included: +`binomial(76,4)-1 = 1,282,974` mixtures. + +Drop all windows, call labels and physical-family restrictions. Helpers still +occupy their full audited widths in capacity slots. Allow every integer width +multiset fitting a slot, including empty slots. Charge any residual rank with +one child; splitting it costs at least as much for 0= lambda*score(pattern) +d[(j+score(pattern)) mod 37] - d[j] + <= phi(residual)-lambda*score(pattern). +``` + +Telescoping over a packing lower-bounds idle cost by +`idle_mass + lambda*S + d[S mod 37]`. Add the complete audited local profile. +Each variant's local, idle and score changes are linear; rank mass remains +520704. The checker proves nonnegative inventories for every mixture first. + +The new DP stores the minimum linear change for each number of modified calls +and residue. Extending a state by each of four variants enumerates every count +vector; order is irrelevant to its invoice. Merging equal states keeps the +lowest bound. Checking every reachable state for k=1..72 therefore covers all +1,282,974 mixtures, rather than sampling them. There are 2548 reachable states. +All their lower bounds exceed `7168*73^(1-b0)`. The least certified excess is +strictly above **0.018922942318** at one negative early-eight replacement. + +## Independent real-power enclosures + +The proof does not trust the predecessor's logarithm/exponential engine. +For r>1 set z=1-1/r and a=b0. The binomial series has + +``` +(1-z)^a = 1 - sum(k>=1) c_k, +c_1=a*z, +c_(k+1)=c_k*z*(k-a)/(k+1), +``` + +with all c_k positive and every ratio below z. After N terms the omitted tail +is at most `c_(N+1)/(1-z)`. Propagate outward integer intervals at scale 10^44 +through 7000 terms, sum their lower/upper endpoints, subtract the appropriate +geometric tail and round outward at scale 10^30. Multiplying by r encloses +`r^(1-b0)`. No float, logarithm, exponential or predecessor power implementation +is used. Exact square-root identities at a=1/2 give separate positive controls. + +## Comparison with the pinned selected target + +The inherited balanced assembly has `akappa/(1-kappa)`. The pinned PR799 target is +`1661634653669567/10^18`; its necessary complex saving is strictly above b0, +the excluded historical PR626 endpoint. All child ranks are below m=73, so +each normalized term `(r/m)^(1-b)` increases with b. Failure at b0 therefore +excludes every larger complex saving in this fixed model, including the saving +needed to match that target. This does not audit or refute PR799's different +construction, or rule out another geometry, coded core, compiler or invoice. + +The source/input pins, exact complete model, native receipts, constructions, +potential checks and minimum-state witness are reproducible. All-size/compiler, +physical hosting, analytic transfer, precision and tape assumptions remain. +The full multiplication theorem is not formalized or proved here. diff --git a/research/coded-helper-early-end8/README.md b/research/coded-helper-early-end8/README.md new file mode 100644 index 0000000000..6a91e4e225 --- /dev/null +++ b/research/coded-helper-early-end8/README.md @@ -0,0 +1,94 @@ +# Rank-eight coded-helper endpoint with complete cost rejection + +**Finite native construction and scoped negative result; no new kappa.** + +PR781's one coded helper can end at rank eight in each of PR855's four +integrated provider words. Move its two restoration reads before final climbs, +pay their common rank-eight frame and source climbs, and put its dirty-response +compensation inside the wrapped program. All 714/717 arbitrary input columns +pass in forward and inverse-transpose orientations. At the fixed end-B boundary, +the inverse-row support proves rank eight is also the minimum monotone cleanup +endpoint. This changes helper lifetime and the compensation interface; PR855's +bounded gate-frame search did not change that endpoint. + +The fully charged local change from each original PR855 word is +`4 H1 - H2 - H3`, and one width-nine helper becomes width eight. Freed hosting +rank must still be completed by idle children. An independently implemented +binomial power engine, Cartesian pattern census and residue DP check the +complete favorable packing bill. All **1,282,974 nonempty mixtures** of the +original and early-eight positive/negative variants still fail the fixed PR626 +budget. The least certified numerator excess is **greater than 0.018922942318**. +No changed-word phase, wrapper or global-owner admission is asserted; extra +preparation, phase, access and scalar work are granted free in this rejection. + +The comparison also excludes the larger complex saving needed to match the +pinned selected PR799 kappa, while retaining this geometry and whole-helper +pricing. It does not refute PR799's different construction or other geometries. + +## Reproduce + +Python 3.11+, standard library only, no network or solver: + +```sh +python -I -B research/coded-helper-early-end8/verify.py --out /fresh/external/directory +python -I -B research/coded-helper-early-end8/test_controls.py /fresh/external/directory +``` + +Expected primary line: + +``` +PASS_EARLY8_CONSTRUCTION_AND_EXTENDED_COST_OBSTRUCTION 8 native words; 1282974 mixtures excluded; no new kappa +``` + +The parent verifier may also use `-O`; both inherited native workers explicitly +run in assertion-enabled interpreters. The replay rechecks four original PR855 +words and five of their failure controls, rebuilds four new words from pinned +inputs, and independently audits every new word. It verifies all 1163 packing +patterns and 43,031 potential inequalities with the new integer-enclosed +binomial engine. The 2548 reachable DP states cover all four-way count vectors. +Exact square-root identities independently test the power engine. + +New controls omit the internal premix, omit early-tail admission, declare a +rank-seven end, omit a restore read, undercharge the paid profile, alter lambda +or a potential, and remove the integer correction. Removing the latter leaves +an uncertified mixture; it does not produce a valid global candidate. + +`EXPECTED.json` freezes the complete native receipts, end-B inverse rows, +construction recipes, full budget and minimum witness. [PROOF.md](PROOF.md) +gives the algebra, lifetime bound, full cost relaxation, DP and outward rounding. +`--write` regenerates only this package's development receipt; it is not the +normal verification path. Output includes all rebuilt words and detailed logs. + +## Pins and predecessor credit + +Base: `f567884aeb8851b6e794af1184119a3bfbe1e631`. +PR781: `85f9cfad7708cc3873bd6b32492a618feb336e59`. +PR855: `4e0e0e0159b6c845e8b1110bec6c5b81150da79d`. +The complete PR855 source package is retained unchanged under `vendor/pr855/`, +with its original notice. Its lambda and potentials are reused as witnesses; +the new checker independently replays their inequalities, extends the candidate +class and implements all real-power bounds without its log/exp code. + +Credit **NeoKazuya** for PR781's 28-gate core and PR855's provider embeddings, +cost obstruction and potential certificate. Credit icekylinx's packet/auditor +lineage, Jeremy Kothe/AtomScout/Port480's K-triangle and transfer work, Chafik +Boukhalfa's owner/frame work, DreamingOfClouds' cold-end/interface work and the +predecessors preserved in the original notice. No priority for the coded core, +whole-helper relaxation or residue-potential method is claimed. + +Prepared for **nightangelflowerwin-ops** with substantial **OpenAI Codex** +assistance in construction, mathematics, independent verification and writing. +Apache-2.0. No independent human review or literature-priority claim. + +The original PR781 raw construction was freshly reproduced before integration. +An initial transfer failed its entering-helper compensation guard; that failure +and the fully priced repaired/gauged transfer informed this changed-lifetime +experiment. The reported final result uses complete PR855 provider words; +intermediate transfer experiments are not silently promoted to suppliers. + +Scope is these explicit programs, fixed end-B frame labels, PR626 dispatch and +whole-call helper pricing. Other coded cores, earlier frame changes, different +geometry, volume-sharing rules or compiler primitives remain outside it. +All-size/compiler, physical realization, hosting, precision/tape and analytic +assumptions remain. No complete multiplication theorem or practical speedup is +claimed. The selected result and `upstream/` remain unchanged. diff --git a/research/coded-helper-early-end8/SOURCES.json b/research/coded-helper-early-end8/SOURCES.json new file mode 100644 index 0000000000..aebae4c25d --- /dev/null +++ b/research/coded-helper-early-end8/SOURCES.json @@ -0,0 +1,29 @@ +{ + "base": "f567884aeb8851b6e794af1184119a3bfbe1e631", + "pr781_head": "85f9cfad7708cc3873bd6b32492a618feb336e59", + "pr855_head": "4e0e0e0159b6c845e8b1110bec6c5b81150da79d", + "repo_inputs": { + "research/complex-k492-owner-repair/code/hpe_audit_and_transport.py": "c9a05ff291016b870b4fc925b317abd9c3a604c73ffc8920dfdbbeb475e20aa3", + "research/complex-k492-owner-repair/data/PLAN.json": "8c48ef6ce079916314126c5c3ff0003b32f24cf0fbfb2a033fc93e1e1949b5d5", + "research/complex-k492-owner-repair/data/SPEC.json": "2a2577ac526535826fed9d5f7f83f6e2e0ec058a146c64f7286720b995fa2323", + "research/complex-k492-owner-repair/vendor/multicold/vendor/pr558/vendor/pr552/complex-global/vendor531/inputs/data-base/work/complex-nine-native/DATA-PHASES.json": "c5916ff312678f12aba403847643fbbc29f643acec60bdf836fa56cd3e8251fa", + "research/complex-k492-owner-repair/vendor/multicold/vendor/pr558/vendor/pr552/complex-local/inputs/phase-baseline/CANONICAL-WORD.json.gz": "e070ae2c78b4a1b644b418774af62b40d8d16e6ba89602f0474afb557d507c37" + }, + "vendor_inputs": { + "vendor/pr855/CODED-CELL.json": "03ba299163019b7438c5e711f0a3e3422466ee7e27d4a05c8ba0576800bc20fd", + "vendor/pr855/CONSTRUCTION-RECORD.json": "91f94b31aa6bcb9cbd21c712b7a4ffb8ee29c44a52d8efc037611c84dc47a006", + "vendor/pr855/EXACT-CERTIFICATE.json": "4f4e308a0ba5bd1cf0e54dd812e866f0e2675aa8bd254eaab760633f9c5ee3b8", + "vendor/pr855/exact.py": "37d227bb2930f923d27d00c0b94110508b645987e20b3ac517b5ea001ec83239", + "vendor/pr855/NATIVE-EXPECTED.json": "fc7fa613022ca972ce942b6cd472a5d42db444682c2bb703c8ee25ce2f0dfc73", + "vendor/pr855/native_worker.py": "4575c2d0c699f1cae829e1f51a227d973f7ccfa824a15dec039da57838e5bfd1", + "vendor/pr855/NOTICE.md": "c2e71d6104586f90fb9ec49a75172e25e3df06b2ea530dd023ef51afe9d4ec69", + "vendor/pr855/README.md": "2d4e45a161d14fa4113ccfb87a5f916e51ca95288a6070d6f68adfb4157d3fae", + "vendor/pr855/SOURCE-PINS.json": "f37d4173d8669ad354a98f9cb7a573fdae841d5cdd511e14868fcd1ba2ef5595", + "vendor/pr855/verify.py": "723219d1d91d607a30a420ca676351773a649bb0da4f1880fd0f4214d6846ad8", + "vendor/pr855/words/negative-ck.json.gz": "ccc72e03ccb8d939911cec49f87d7056c835624306e4f9f17a05f7fb2e15c810", + "vendor/pr855/words/negative-jp8.json.gz": "700fc4b6cf510057d93b7b4a3d1bb8c17556a77a804f7c029243ce4ba5f39e48", + "vendor/pr855/words/positive-ck.json.gz": "d36aa2ab2b3f305489237801c2fc5c33d5ee195590b65fe02ebc04626a844edc", + "vendor/pr855/words/positive-jp8.json.gz": "d68064f7c73d1417092f5c207a394fd087628e47af1c22ee19ea8c3363ab4874", + "CONTEXT-SELECTED.json": "9873519224e2db72d6a8c926f51e3e75129671e467948c6f6b03744f8bcfc699" + } +} diff --git a/research/coded-helper-early-end8/VALIDATION.md b/research/coded-helper-early-end8/VALIDATION.md new file mode 100644 index 0000000000..b7c905b461 --- /dev/null +++ b/research/coded-helper-early-end8/VALIDATION.md @@ -0,0 +1,36 @@ +# Finite verification and limits + +Windows CPython 3.11.9; standard library only. Base and predecessor heads are +listed in SOURCES.json. The original PR781 verifier and complete PR855 verifier +were freshly reproduced before this experiment. No hosted CI pass is claimed. + +The normal eight-word replay passed. An isolated optimized parent also replayed +all eight words with assertion-enabled native children. Each new word is rebuilt, +its paid profile discovered, and then freshly audited for all 714/717 columns in +both orientations. Exact model recounts and square-root enclosure controls pass. + +During review, signed profile deltas were tightened to use upper power bounds +for negative coefficients. The corrected least margin remains greater than +0.018922942318. EXPECTED.json was regenerated from the audited receipts and exact +recount, then the final verifier was rerun from fresh native programs. + +Five native mutation controls and three potential controls pass. Corrupting a +vendored core or the selected-context snapshot is rejected by source preflight. +Canonical JSON comparison distinguishes integer receipts from Boolean values. + +Offline relocation uses a root whose name contains spaces, this package and +only the five pinned repository inputs. The first relocated native replay passed +all eight words but its final receipt comparison failed because it had loaded the +earlier signed-rounding implementation before the correction. The final relocated +replay uses the corrected implementation and frozen receipt. + +The selected-record checker passes at the pinned current PR799 target. No +selected record, upstream source, accepted construction, Make target or workflow +is changed. The broader repository suite was run for the companion PR865 and +stopped on eleven ten-second subprocess timeouts in an unchanged historical +test; no repository-wide pass is claimed here. + +The complete-cost rejection grants timing, labels, physical restrictions and +additional preparation/phase/access/scalar overhead free. Consequently these +words are not submitted as admitted phase/global suppliers, and no new kappa +or full multiplication theorem is claimed. See PROOF.md for the exact scope. diff --git a/research/coded-helper-early-end8/binomial.py b/research/coded-helper-early-end8/binomial.py new file mode 100644 index 0000000000..70ab18c465 --- /dev/null +++ b/research/coded-helper-early-end8/binomial.py @@ -0,0 +1,50 @@ +"""Independent integer-enclosed binomial powers, with a positive geometric tail. + +No logarithms, exponentials, floating point or predecessor power engine. +""" +from functools import lru_cache +from fractions import Fraction + +INTERNAL = 10**44 +SCALE = 10**30 +TERMS = 7000 + + +def require(ok, message): + if not ok: + raise ValueError(message) + + +def ceiling(numerator, denominator): + return -(-numerator // denominator) + + +@lru_cache(None) +def power_bounds(rank, saving): + """Outward bounds on SCALE*r^(1-saving), for 0=0. + +For z=1-1/r, (1-z)^saving = 1-sum_{k>=1} c_k, c_k>0. +c_1=saving*z and c_(k+1)=c_k*z*(k-saving)/(k+1). +Every ratio is > k & 1: + x ^= pivots[k] + if x: + k = x.bit_length() - 1 + for j in list(pivots): + if pivots[j] >> k & 1: + pivots[j] ^= x + pivots[k] = x + return [pivots[k] for k in sorted(pivots, reverse=True)] + + +def inverse_helper_row(word): + # A row times P^-1: multiply inverse elementary matrices in chronological + # order. No dense native-auditor state maps or its GF(2) routines are used. + row = {HELPER: Q(1)} + for event in word['A'] + word['cut'] + word['B']: + if event[0] == 'add': + source = event[2] + row[source] = row.get(source, 0) - Q(event[3], event[4]) * row.get(event[1], 0) + if not row[source]: + row.pop(source, None) + elif event[1] in row: + require(event[0] == 'scale', 'Scalar primitive') + row[event[1]] *= Q(event[3], event[2]) + require(row.get(HELPER) == 1 and len(row) == 3 and + all(not 112 <= r < 224 for r in row), 'Unexpected coded-helper inverse row') + # The target-only precondition and generated compensation have zero row + # coefficients here. The helper never receives a target-row value. + require(all(not (112 <= event[2] < 224) for event in word['A'] + word['B'] + if event[0] == 'add' and not 112 <= event[1] < 224), 'Target-to-helper dependency') + require(all(112 <= event[1] < 224 for event in word['precondition']), 'Non-target precondition') + replay = dict(row) + for event in reversed(word['precondition'] + word['A'] + word['cut'] + word['B']): + if event[0] == 'add': + source = event[2] + replay[source] = replay.get(source,0) + Q(event[3],event[4])*replay.get(event[1],0) + if not replay[source]: + replay.pop(source,None) + elif event[1] in replay: + replay[event[1]] *= Q(event[2],event[3]) + require(replay == {HELPER: Q(1)}, 'Independent inverse-row identity') + return row + + +def response(word): + # Forward basis column on the main word, followed by the target-chart + # inverse precondition. Non-target rows of the latter dirty response are + # zero, matching the explicit scalar compensation contract. + column = {HELPER: Q(1)} + for event in word['A'] + word['cut'] + word['B']: + if event[0] == 'add': + target, source = event[1:3] + column[target] = column.get(target, 0) + Q(event[3], event[4]) * column.get(source, 0) + else: + require(event[0] == 'scale', 'Scalar primitive') + column[event[1]] = column.get(event[1], 0) * Q(event[2], event[3]) + column = {r: q for r, q in column.items() if 112 <= r < 224 and q} + for event in word['precondition']: + if event[0] == 'add': + target, source = event[1:3] + column[target] = column.get(target, 0) + Q(event[3], event[4]) * column.get(source, 0) + else: + column[event[1]] = column.get(event[1], 0) * Q(event[2], event[3]) + return {r: q for r, q in column.items() if q} + + +def construct(source): + word = read(source) + require(word['report']['v'] == 112 and word['report']['h'] == 9 and + HELPER not in word['centers'] and str(HELPER) not in word.get('start_extra', {}), + 'Pinned coded helper interface') + row = inverse_helper_row(word) + frames = {} + for event in word['A'] + word['B']: + for role in ([event[1], event[2]] if event[0] == 'add' else [event[1]]): + frames[role] = event[-1] + endpoint = basis(x for role in row for x in frames[role]) + require(len(endpoint) == 8, 'Expected rank-eight cleanup join') + corrections = [['add', HELPER, role, coefficient.numerator, coefficient.denominator, endpoint] + for role, coefficient in sorted(row.items()) if role != HELPER] + touches = [i for i, event in enumerate(word['cleanup']) + if HELPER in ([event[1], event[2]] if event[0] == 'add' else [event[1]])] + require(len(touches) == 2 and all(word['cleanup'][i][1] == HELPER for i in touches), + 'Unexpected helper cleanup dependency') + require(all(i not in touches for i, _ in word['early_cleanup']), 'Helper already ends early') + old_cleanup = word['cleanup'] + new_index = {i: 2 + i - sum(j < i for j in touches) for i in range(len(old_cleanup)) if i not in touches} + word['cleanup'] = corrections + [event for i, event in enumerate(old_cleanup) if i not in touches] + word['early_cleanup'] = [[0, endpoint], [1, endpoint]] + [ + [new_index[i], frame] for i, frame in word['early_cleanup']] + word['helper_final'][str(HELPER)] = endpoint + word['refactored_cleanup'] = True + col = response(word) + premix = [['add', role, HELPER, -q.numerator, q.denominator, []] for role, q in sorted(col.items())] + word['A'] = premix + word['A'] + proof = dict(input_content_sha256=sha256(gzip.decompress(source.read_bytes())).hexdigest(), + helper=HELPER, inverse_row={str(r): str(q) for r, q in sorted(row.items())}, + end_of_B_frames={str(r): basis(frames[r]) for r in sorted(row)}, + endpoint=endpoint, endpoint_rank=8, removed_cleanup_indexes=touches, + early_corrections=corrections, internal_premix=premix) + return word, proof diff --git a/research/coded-helper-early-end8/model.py b/research/coded-helper-early-end8/model.py new file mode 100644 index 0000000000..bf2358e806 --- /dev/null +++ b/research/coded-helper-early-end8/model.py @@ -0,0 +1,62 @@ +"""Recount the fixed PR626 budget and derive all four mixture deltas.""" +from collections import Counter +from construct import read, require + +BASE = 'research/complex-k492-owner-repair' +DATA = BASE + '/vendor/multicold/vendor/pr558/vendor/pr552/complex-global/vendor531/inputs/data-base/work/complex-nine-native/DATA-PHASES.json' + + +def integers(mapping): + return {int(r): n for r,n in mapping.items()} + + +def difference(left, right): + return {r: left.get(r,0)-right.get(r,0) for r in set(left)|set(right) if left.get(r,0)!=right.get(r,0)} + + +def build(root, original, retimed): + spec = read(root / BASE / 'data/SPEC.json') + plan = read(root / BASE / 'data/PLAN.json') + data = read(root / DATA) + calls = Counter(pid for _,_,pid in spec['dispatch']) + require(calls == {'ck':8,'jp8':64} and plan['M']==data['m']==73 and + plan['L']==9 and plan['T']==8 and data['ports']==112, 'Fixed comparison geometry') + require([[c['stage'],c['replica'],c['provider']] for c in plan['provider_calls']] == spec['dispatch'], 'Dispatch binding') + caps = Counter() + for capacity,times in plan['windows'].values(): + caps[capacity] += data['ports'] + independent_caps = Counter() + for recipe in data['recipes']: + for child in recipe['idle_children']: + independent_caps[child['rank']] += plan['T'] + require(independent_caps.pop(0)==2*112*8 and caps==independent_caps, 'Independent capacity census') + local, widths = Counter(), Counter() + for pid,count in calls.items(): + source = spec['providers'][pid] + profile, inventory = integers(source['expected_profile']), integers(source['inventory']) + registry = plan['provider_registry'][pid] + require(integers(registry['actual_paid_profile'])==profile and Counter(registry['widths'])==inventory, 'Provider source billing') + local.update({r:n*count for r,n in profile.items()}) + widths.update({w:n*count for w,n in inventory.items()}) + require(widths==Counter(w for call in plan['per_call_widths'] for w in call['widths']), 'Complete helper demand') + global_profile = integers(spec['expected']['global_profile']) + require(local+Counter(integers(spec['expected']['idle_remainder_profile']))==global_profile==integers(plan['profile']), 'Complete baseline invoice') + require(plan['live']==spec['expected']['live']==7168 and + sum(r*n for r,n in global_profile.items())==spec['expected']['rank_mass']==plan['live']*73-plan['deficit'], 'Baseline rank/deficit') + variants = {} + for family,receipts in [('original9',original),('early8',retimed)]: + for placement in ('positive','negative'): + deltas = [] + for pid in ('ck','jp8'): + receipt = receipts[placement+'-'+pid] + require(receipt['live_columns_each_orientation']==224+receipt['helpers'] and + receipt['status']=='PASS_CHANGED_WORD_ALL_COLUMNS_AND_NATIVE_FRAMES', 'Exact native obligation') + deltas.append(dict(profile=difference(integers(receipt['local_profile']),integers(spec['providers'][pid]['expected_profile'])), + widths=difference(dict(Counter(receipt['widths'])),integers(spec['providers'][pid]['inventory'])))) + require(deltas[0]==deltas[1], 'Provider-independent variant billing') + variants[family+'-'+placement] = deltas[0] + result = dict(endpoint=spec['expected']['complex_lower'],m=73,live=7168,calls=72, + rank_mass=spec['expected']['rank_mass'],capacities=dict(caps),widths=dict(widths), + local=dict(local),variants=variants) + result['global'] = global_profile + return result diff --git a/research/coded-helper-early-end8/native_worker.py b/research/coded-helper-early-end8/native_worker.py new file mode 100644 index 0000000000..be927c5d80 --- /dev/null +++ b/research/coded-helper-early-end8/native_worker.py @@ -0,0 +1,68 @@ +"""Assertion-enabled construction and independent inherited native replay.""" +from pathlib import Path +from collections import Counter +import contextlib +import gzip +import json +import runpy +import sys + +HERE = Path(__file__).resolve().parent +ROOT = HERE.parents[1] +sys.path.insert(0, str(HERE)) +from construct import construct, encode, read, require + +BASE = ROOT / 'research/complex-k492-owner-repair' +ROUTING = BASE / 'vendor/multicold/vendor/pr558/vendor/pr552/complex-local/inputs/phase-baseline/CANONICAL-WORD.json.gz' + + +def main(out): + require(__debug__, 'Native auditor requires enabled assertions') + audit = runpy.run_path(str(BASE / 'code/hpe_audit_and_transport.py'))['run'] + receipts, constructions = {}, {} + for name in ('positive-ck', 'positive-jp8', 'negative-ck', 'negative-jp8'): + source = HERE / 'vendor/pr855/words' / (name + '.json.gz') + word, proof = construct(source) + path = out / (name + '.json.gz') + def save(): + path.write_bytes(gzip.compress(encode(word), mtime=0)) + save() + # A discovery run may fail only at the expected old-profile guard. + # Every scalar, endpoint, frame and cone guard before it must pass. + try: + with (out / (name + '-discovery.log')).open('w', encoding='utf-8') as log, contextlib.redirect_stdout(log): + audit(path, ROUTING, out / (name + '-discovery')) + except AssertionError as error: + require(str(error) == 'paid local profile differs from the reported local_profile', + 'Construction rejected before profile discovery: ' + str(error)) + tb = error.__traceback__ + while tb.tb_next: + tb = tb.tb_next + paid = tb.tb_frame.f_locals['paid'] + word['report']['local_profile'] = {str(r): n for r, n in sorted(paid.items())} + word['report']['local_rank_mass'] = sum(r*n for r, n in paid.items()) + else: + raise ValueError('Retimed construction unexpectedly retained old profile') + inventory = word['report']['width_inventory'] + require(inventory['9'] > 0, 'Original coded helper width') + inventory['9'] -= 1 + inventory['8'] = inventory.get('8', 0) + 1 + save() + with (out / (name + '.log')).open('w', encoding='utf-8') as log, contextlib.redirect_stdout(log): + audit(path, ROUTING, out / name) + receipt = read(out / name / 'SCALAR-FRAME-AUDIT.json') + receipt.pop('seconds') + require(Counter(receipt['widths']) == Counter({int(r): n for r, n in inventory.items()}), 'Audited width inventory') + require(receipt['local_rank_mass'] == word['report']['local_rank_mass'], 'Audited rank mass') + require(448 in receipt['cold_hyperplane_ended_helpers'], 'Missing cold endpoint') + receipts[name] = receipt + constructions[name] = proof + print('PASS_NATIVE_EARLY8', name, flush=True) + result = dict(receipts=receipts, constructions=constructions, assertions_enabled=__debug__) + (out / 'NATIVE-RESULT.json').write_bytes((json.dumps(result, indent=2) + '\n').encode()) + + +if __name__ == '__main__': + out = Path(sys.argv[1]).resolve() + require(out.is_dir(), 'Prepared output directory required') + main(out) diff --git a/research/coded-helper-early-end8/packing.py b/research/coded-helper-early-end8/packing.py new file mode 100644 index 0000000000..7d6306672a --- /dev/null +++ b/research/coded-helper-early-end8/packing.py @@ -0,0 +1,88 @@ +"""Independent pattern census and mixed-variant cost DP. + +PR855 supplies lambda and residue potentials. Every obligation is replayed +using the new binomial interval engine and a Cartesian-product census. +""" +from fractions import Fraction as Q +from itertools import product +from construct import require +from binomial import power_bounds, SCALE + +CAPACITY_SCORES = {8: 6, 16: 12, 32: 24, 48: 37} +WIDTH_SCORES = {4: 3, 5: 3, 7: 5, 8: 6, 9: 7} + + +def patterns(): + widths = tuple(sorted(WIDTH_SCORES)) + result = [] + for capacity in sorted(CAPACITY_SCORES): + for counts in product(*(range(capacity//w+1) for w in widths)): + used = sum(w*n for w, n in zip(widths, counts)) + if used <= capacity: + result.append((capacity-used, CAPACITY_SCORES[capacity]- + sum(WIDTH_SCORES[w]*n for w, n in zip(widths, counts)))) + require(len(result) == 1163, 'Independent pattern domain') + return result + + +def verify(model, certificate): + b = Q(model['endpoint']) + require(Q(certificate['endpoint']) == b and certificate['potential_scale'] == 10**16, + 'Potential source endpoint/scale') + lam, potentials = certificate['lambda_units_1e30'], certificate['potentials'] + require(type(lam) is int and lam < 0 and len(potentials) == 37 and + all(type(x) is int for x in potentials) and potentials[0] == 0, 'Potential domain') + unit = SCALE//10**16 + intervals = {r: power_bounds(r, b) for r in range(74)} + for leftover, score in patterns(): + require(score >= 0, 'Negative pattern score') + reduced = intervals[leftover][0] - leftover*SCALE - lam*score + require(reduced >= 0, 'Pattern dual inequality') + for residue in range(37): + require((potentials[(residue+score)%37]-potentials[residue])*unit <= reduced, + 'Pattern potential inequality') + threshold = model['live'] * intervals[model['m']][1] + baseline_upper = sum(n*intervals[r][1] for r, n in model['global'].items()) + require(baseline_upper < model['live']*intervals[model['m']][0], 'Original supplier positive control') + mass = sum(c*n for c, n in model['capacities'].items()) + base_idle = mass - sum(w*n for w, n in model['widths'].items()) + score = sum(CAPACITY_SCORES[c]*n for c, n in model['capacities'].items()) - sum( + WIDTH_SCORES[w]*n for w, n in model['widths'].items()) + base = sum(n*intervals[r][0] for r, n in model['local'].items()) + base_idle*SCALE + lam*score + require(sum(r*n for r,n in model['local'].items()) + base_idle == model['rank_mass'], 'Baseline conservation') + names = sorted(model['variants']) + costs = {} + for name in names: + delta = model['variants'][name] + idle_change = -sum(w*n for w,n in delta['widths'].items()) + score_change = -sum(WIDTH_SCORES[w]*n for w,n in delta['widths'].items()) + require(sum(r*n for r,n in delta['profile'].items()) + idle_change == 0, 'Variant conservation: ' + name) + costs[name] = (sum(n*intervals[r][0 if n >= 0 else 1] for r,n in delta['profile'].items()) + + idle_change*SCALE + lam*score_change, score_change) + # These endpoint inequalities certify nonnegative inventories for every + # four-way mix of at most 72 calls, before relaxing labels and windows. + for kind in ('profile', 'widths'): + initial = model['local'] if kind == 'profile' else model['widths'] + for r,n in initial.items(): + require(n + model['calls']*min(0, *(d[kind].get(r,0) for d in model['variants'].values())) >= 0, + 'Mixed inventory can become negative') + state = {score%37: (0, (0,)*len(names))} + minima = [] + for changed in range(1, model['calls']+1): + following = {} + for residue,(cost,counts) in state.items(): + for i,name in enumerate(names): + price,shift = costs[name] + next_residue = (residue+shift)%37 + new_counts = list(counts);new_counts[i] += 1 + candidate = (cost+price,tuple(new_counts)) + if next_residue not in following or candidate < following[next_residue]: + following[next_residue] = candidate + state = following + for residue,(cost,counts) in state.items(): + minima.append((base+cost+potentials[residue]*unit-threshold, changed, residue, counts)) + margin,changed,residue,counts = min(minima) + return dict(patterns=1163, potential_inequalities=43031, dp_states=len(minima), + modified_calls=changed, residue=residue, minimum_margin=str(Q(margin,SCALE)), + minimum_counts=dict(zip(names,counts)), excluded=margin>0, + power_engine='7000-term positive binomial with integer outward rounding and geometric tail') diff --git a/research/coded-helper-early-end8/test_controls.py b/research/coded-helper-early-end8/test_controls.py new file mode 100644 index 0000000000..a33b9f0a74 --- /dev/null +++ b/research/coded-helper-early-end8/test_controls.py @@ -0,0 +1,76 @@ +"""New endpoint/wrapper/profile and exact-certificate negative controls.""" +from copy import deepcopy +import contextlib +import gzip +import json +from pathlib import Path +import runpy +import sys +import tempfile + +HERE = Path(__file__).resolve().parent +ROOT = HERE.parents[1] +sys.path.insert(0,str(HERE)) +from construct import read, encode, require, construct +from packing import verify as price + + +def main(output): + # Retain mathematical inputs independently of the ephemeral full replay. + expected = read(HERE/'EXPECTED.json') + base = ROOT/'research/complex-k492-owner-repair' + route = base/'vendor/multicold/vendor/pr558/vendor/pr552/complex-local/inputs/phase-baseline/CANONICAL-WORD.json.gz' + require(__debug__, 'Native controls require assertions') + audit = runpy.run_path(str(base/'code/hpe_audit_and_transport.py'))['run'] + source = output/'early8/positive-ck.json.gz' + word = read(source) + premix_count = len(expected['new_constructions']['positive-ck']['internal_premix']) + cases = [] + changed = deepcopy(word);del changed['A'][:premix_count] + cases.append(('omit_internal_premix',changed,'zero-frame precondition/compensation')) + changed = deepcopy(word);changed['early_cleanup']=changed['early_cleanup'][2:] + cases.append(('omit_early_tail_admission',changed,'cleanup on non-FULL end')) + changed = deepcopy(word);changed['helper_final']['448']=changed['helper_final']['448'][:-1] + cases.append(('declare_rank7_endpoint',changed,'hpe cone pre-check')) + changed = deepcopy(word);changed['cleanup'][0][3]=0 + cases.append(('omit_one_restore_read',changed,'arbitrary-dirt endpoint')) + changed = deepcopy(word);changed['report']['local_profile']['1']-=1 + cases.append(('undercharge_profile',changed,'paid local profile differs')) + results = {} + with tempfile.TemporaryDirectory(prefix='early8-controls-') as temporary: + root = Path(temporary) + for name,changed,reason in cases: + path=root/(name+'.json.gz');path.write_bytes(gzip.compress(encode(changed),mtime=0)) + with (root/(name+'.log')).open('w',encoding='utf-8') as log,contextlib.redirect_stdout(log): + try: + audit(path,route,root/name) + except AssertionError as error: + require(reason in str(error),'Wrong native rejection: '+name+' '+str(error)) + results[name]=str(error).split(':')[0] + else: + raise ValueError('Native mutation accepted: '+name) + model=expected['model'];model['local']={int(r):n for r,n in model['local'].items()} + for key in ('widths','global','capacities'): + model[key]={int(r):n for r,n in model[key].items()} + for variant in model['variants'].values(): + for key in ('profile','widths'): + variant[key]={int(r):n for r,n in variant[key].items()} + certificate=read(HERE/'vendor/pr855/EXACT-CERTIFICATE.json') + for name,change,reason in [ + ('raise_lambda',lambda c:c.update(lambda_units_1e30=c['lambda_units_1e30']+10**24),'Pattern'), + ('raise_potential',lambda c:c['potentials'].__setitem__(22,c['potentials'][22]+1000),'Pattern potential'), + ]: + changed=deepcopy(certificate);change(changed) + try:price(model,changed) + except ValueError as error: + require(reason in str(error),'Wrong potential rejection') + results[name]='rejected' + else:raise ValueError('Bad exact certificate accepted') + changed=deepcopy(certificate);changed['potentials']=[0]*37 + require(price(model,changed)['excluded'] is False,'Integer correction control did not expose an uncertified mixture') + results['omit_integer_correction']='not certified as excluded' + print('PASS_EARLY8_CONTROLS',json.dumps(results,sort_keys=True)) + + +if __name__=='__main__': + main(Path(sys.argv[1]).resolve()) diff --git a/research/coded-helper-early-end8/vendor/pr855/CODED-CELL.json b/research/coded-helper-early-end8/vendor/pr855/CODED-CELL.json new file mode 100644 index 0000000000..035020fc43 --- /dev/null +++ b/research/coded-helper-early-end8/vendor/pr855/CODED-CELL.json @@ -0,0 +1,65 @@ +{ + "selected": [[6, 7], 1], + "core": [ + ["h0", "x4", 1], + ["y1", "x3", 1], + ["y2", "x5", 1], + ["y3", "x0", 1], + ["y4", "x2", 1], + ["y5", "x1", 1], + ["h0", "x2", 1], + ["y0", "y1", 1], + ["y2", "x1", 1], + ["y5", "y3", 1], + ["y0", "x4", 1], + ["y3", "y2", 1], + ["y5", "x3", 1], + ["y0", "x2", 1], + ["y1", "x4", 1], + ["y2", "x3", 1], + ["y4", "y3", 1], + ["y0", "x5", 1], + ["y1", "x0", 1], + ["y3", "h0", 1], + ["y4", "x3", 1], + ["y5", "x4", 1], + ["y0", "x1", 1], + ["y1", "x2", 1], + ["y2", "x0", 1], + ["y1", "x5", 1], + ["y2", "x4", 1], + ["y5", "x2", 1] + ], + "direct": [ + ["y5", "x3", 1], + ["y2", "x1", 1], + ["y3", "x2", 1], + ["y1", "x0", 1], + ["y4", "x5", 1], + ["y4", "x3", 1], + ["y5", "x2", 1], + ["y4", "x2", 1], + ["y0", "x4", 1], + ["y2", "x0", 1], + ["y0", "x5", 1], + ["y3", "x1", 1], + ["y1", "x4", 1], + ["y2", "x4", 1], + ["y3", "x0", 1], + ["y3", "x4", 1], + ["y1", "x5", 1], + ["y2", "x5", 1], + ["y0", "x3", 1], + ["y1", "x3", 1], + ["y2", "x3", 1], + ["y3", "x5", 1], + ["y0", "x2", 1], + ["y1", "x2", 1], + ["y5", "x1", 1], + ["y5", "x0", 1], + ["y5", "x4", 1], + ["y4", "x1", 1], + ["y4", "x0", 1], + ["y0", "x1", 1] + ] +} diff --git a/research/coded-helper-early-end8/vendor/pr855/CONSTRUCTION-RECORD.json b/research/coded-helper-early-end8/vendor/pr855/CONSTRUCTION-RECORD.json new file mode 100644 index 0000000000..30229920dd --- /dev/null +++ b/research/coded-helper-early-end8/vendor/pr855/CONSTRUCTION-RECORD.json @@ -0,0 +1,2244 @@ +{ + "negative-ck": { + "coded_cell": { + "bindings": { + "h0": 448, + "x0": 18, + "x1": 269, + "x2": 82, + "x3": 429, + "x4": 50, + "x5": 445, + "y0": 130, + "y1": 134, + "y2": 194, + "y3": 198, + "y4": 162, + "y5": 166 + }, + "core_gate_indexes": [ + 673, + 674, + 675, + 676, + 677, + 678, + 679, + 680, + 681, + 682, + 683, + 684, + 685, + 686, + 687, + 688, + 689, + 690, + 691, + 692, + 693, + 694, + 695, + 696, + 697, + 698, + 699, + 700 + ], + "pair": [ + 6, + 7 + ], + "section": "B", + "sign": -1 + }, + "cold_end_transfer": { + "end_lifts": [], + "sections": { + "A": { + "introduced": 438 + }, + "cleanup": { + "dropped_by_stage": 2854, + "introduced": 8414, + "kept_own": 2 + } + }, + "skipped_removed_early_gates": [], + "tail_lifts": [] + }, + "entry_correction": { + "gates": [ + [ + "add", + 166, + 701, + 1, + 2, + [ + 6 + ] + ], + [ + "add", + 166, + 702, + -1, + 2, + [ + 6 + ] + ], + [ + "add", + 166, + 703, + -1, + 2, + [ + 6 + ] + ], + [ + "add", + 166, + 705, + 1, + 2, + [ + 6 + ] + ], + [ + "add", + 198, + 701, + -1, + 2, + [ + 6 + ] + ], + [ + "add", + 198, + 702, + 1, + 2, + [ + 6 + ] + ], + [ + "add", + 198, + 703, + 1, + 2, + [ + 6 + ] + ], + [ + "add", + 198, + 705, + -1, + 2, + [ + 6 + ] + ] + ], + "output_content_sha256": "75fe3c219f0ea014b826b42ea604f1674b7049d2a17e5b0d7d8122c1e645322a", + "profile": { + "1": 2432, + "2": 399, + "3": 469, + "4": 168, + "5": 56, + "6": 44, + "8": 8 + } + }, + "final_frame_raises": { + "changes": [ + { + "after": [ + 272, + 49, + 6 + ], + "before": [ + 49, + 6 + ], + "delta": { + "1": -2, + "2": 1 + }, + "index": 680, + "section": "B", + "sweep": 0 + }, + { + "after": [ + 256, + 128, + 64, + 33, + 17, + 8, + 6 + ], + "before": [ + 256, + 128, + 81, + 33, + 8, + 6 + ], + "delta": { + "1": -2, + "2": 2, + "3": -2, + "4": 1 + }, + "index": 692, + "section": "B", + "sweep": 0 + }, + { + "after": [ + 257, + 128, + 64, + 33, + 16, + 8, + 6 + ], + "before": [ + 321, + 128, + 33, + 16, + 8, + 6 + ], + "delta": { + "1": -3, + "2": 3, + "3": -1 + }, + "index": 693, + "section": "B", + "sweep": 0 + }, + { + "after": [ + 256, + 128, + 64, + 32, + 16, + 6, + 1 + ], + "before": [ + 256, + 128, + 65, + 33, + 16, + 6 + ], + "delta": { + "1": -2, + "2": 2, + "3": -2, + "4": 1 + }, + "index": 695, + "section": "B", + "sweep": 0 + }, + { + "after": [ + 272, + 144, + 80, + 48, + 8, + 6, + 1 + ], + "before": [ + 272, + 144, + 81, + 49, + 8, + 6 + ], + "delta": { + "1": -3, + "2": 3, + "3": -1 + }, + "index": 698, + "section": "B", + "sweep": 0 + }, + { + "after": [ + 256, + 129, + 64, + 33, + 16, + 8, + 6 + ], + "before": [ + 256, + 193, + 33, + 16, + 8, + 6 + ], + "delta": { + "1": -3, + "2": 3, + "3": -1 + }, + "index": 700, + "section": "B", + "sweep": 0 + }, + { + "after": [ + 273, + 128, + 64, + 33, + 8, + 6 + ], + "before": [ + 337, + 128, + 33, + 8, + 6 + ], + "delta": { + "1": 1, + "2": -1, + "3": -1, + "4": 1 + }, + "index": 689, + "section": "B", + "sweep": 1 + }, + { + "after": [ + 272, + 144, + 80, + 48, + 6, + 1 + ], + "before": [ + 272, + 144, + 81, + 49, + 6 + ], + "delta": { + "1": 1, + "2": -1, + "3": -1, + "4": 1 + }, + "index": 690, + "section": "B", + "sweep": 1 + } + ], + "domain": "coded 28 gates; one-vector extensions and maximal common-next frame; 12 sweeps maximum", + "sweeps": 3 + }, + "native_word_content_sha256": "a6b394127bb81f23a2ca7d187c1e4642b369840a82b7627f7872fc772942a5a0", + "stages": { + "coded-ck-cold": "2530fc4639227c9b225f2541715f22925877598c6ecce2656eb28f6d98a27c0a", + "coded-ck-hpe": "d0e8c7168163622b42f65c1315ec3556f24a1a56f4545686031513a9ceffa066", + "coded-ck-optimized": "a6b394127bb81f23a2ca7d187c1e4642b369840a82b7627f7872fc772942a5a0", + "coded-ck-regroup": "cbb2f5b778f13bf2667c6d013cae7e160ca739a3c3579db2e401257b68f6a00f", + "coded-ck-step1": "fa69d7482ecc2b2a4022af1f196534bb76ee09baaaa67665a836db1a7290c169", + "coded-ck-step2": "4ae3933ce2a3644800b0e62d08f1527d91ad56449de77053c633750565b4fcef", + "coded-ck-step3": "c759bf7d8791f245307a4af1b533d4ba20ad6c45e24040f34a09f8e46c1bf0ef", + "coded-ck-step4": "cb8707223f286cbb22f065a21c7b31c1d7c267d36f782d2f0e26b139fdda1efa" + } + }, + "negative-jp8": { + "coded_cell": { + "bindings": { + "h0": 448, + "x0": 18, + "x1": 269, + "x2": 82, + "x3": 429, + "x4": 50, + "x5": 445, + "y0": 130, + "y1": 134, + "y2": 194, + "y3": 198, + "y4": 162, + "y5": 166 + }, + "core_gate_indexes": [ + 673, + 674, + 675, + 676, + 677, + 678, + 679, + 680, + 681, + 682, + 683, + 684, + 685, + 686, + 687, + 688, + 689, + 690, + 691, + 692, + 693, + 694, + 695, + 696, + 697, + 698, + 699, + 700 + ], + "pair": [ + 6, + 7 + ], + "section": "B", + "sign": -1 + }, + "cold_end_transfer": { + "end_lifts": [], + "sections": { + "A": { + "introduced": 438 + }, + "cleanup": { + "dropped_by_stage": 2819, + "introduced": 9112, + "kept_own": 2 + } + }, + "skipped_removed_early_gates": [], + "tail_lifts": [] + }, + "entry_correction": { + "gates": [ + [ + "add", + 166, + 701, + 1, + 2, + [ + 6 + ] + ], + [ + "add", + 166, + 702, + -1, + 2, + [ + 6 + ] + ], + [ + "add", + 166, + 703, + -1, + 2, + [ + 6 + ] + ], + [ + "add", + 166, + 705, + 1, + 2, + [ + 6 + ] + ], + [ + "add", + 198, + 701, + -1, + 2, + [ + 6 + ] + ], + [ + "add", + 198, + 702, + 1, + 2, + [ + 6 + ] + ], + [ + "add", + 198, + 703, + 1, + 2, + [ + 6 + ] + ], + [ + "add", + 198, + 705, + -1, + 2, + [ + 6 + ] + ] + ], + "output_content_sha256": "75fe3c219f0ea014b826b42ea604f1674b7049d2a17e5b0d7d8122c1e645322a", + "profile": { + "1": 2432, + "2": 399, + "3": 469, + "4": 168, + "5": 56, + "6": 44, + "8": 8 + } + }, + "final_frame_raises": { + "changes": [ + { + "after": [ + 272, + 49, + 6 + ], + "before": [ + 49, + 6 + ], + "delta": { + "1": -2, + "2": 1 + }, + "index": 680, + "section": "B", + "sweep": 0 + }, + { + "after": [ + 256, + 128, + 64, + 33, + 17, + 8, + 6 + ], + "before": [ + 256, + 128, + 81, + 33, + 8, + 6 + ], + "delta": { + "1": -2, + "2": 2, + "3": -2, + "4": 1 + }, + "index": 692, + "section": "B", + "sweep": 0 + }, + { + "after": [ + 257, + 128, + 64, + 33, + 16, + 8, + 6 + ], + "before": [ + 321, + 128, + 33, + 16, + 8, + 6 + ], + "delta": { + "1": -3, + "2": 3, + "3": -1 + }, + "index": 693, + "section": "B", + "sweep": 0 + }, + { + "after": [ + 256, + 128, + 64, + 32, + 16, + 6, + 1 + ], + "before": [ + 256, + 128, + 65, + 33, + 16, + 6 + ], + "delta": { + "1": -2, + "2": 2, + "3": -2, + "4": 1 + }, + "index": 695, + "section": "B", + "sweep": 0 + }, + { + "after": [ + 272, + 144, + 80, + 48, + 8, + 6, + 1 + ], + "before": [ + 272, + 144, + 81, + 49, + 8, + 6 + ], + "delta": { + "1": -3, + "2": 3, + "3": -1 + }, + "index": 698, + "section": "B", + "sweep": 0 + }, + { + "after": [ + 256, + 129, + 64, + 33, + 16, + 8, + 6 + ], + "before": [ + 256, + 193, + 33, + 16, + 8, + 6 + ], + "delta": { + "1": -3, + "2": 3, + "3": -1 + }, + "index": 700, + "section": "B", + "sweep": 0 + }, + { + "after": [ + 273, + 128, + 64, + 33, + 8, + 6 + ], + "before": [ + 337, + 128, + 33, + 8, + 6 + ], + "delta": { + "1": 1, + "2": -1, + "3": -1, + "4": 1 + }, + "index": 689, + "section": "B", + "sweep": 1 + }, + { + "after": [ + 272, + 144, + 80, + 48, + 6, + 1 + ], + "before": [ + 272, + 144, + 81, + 49, + 6 + ], + "delta": { + "1": 1, + "2": -1, + "3": -1, + "4": 1 + }, + "index": 690, + "section": "B", + "sweep": 1 + } + ], + "domain": "coded 28 gates; one-vector extensions and maximal common-next frame; 12 sweeps maximum", + "sweeps": 3 + }, + "native_word_content_sha256": "d7eb38ba90374b914df7751d09d5b2d9e9bd5f898766cab24824d6f51d71705e", + "stages": { + "coded-jp8-cold": "0587a8edaf4a741bb2226d8c2c8c40790a71438f7a84ead7ded82a5e35cd97aa", + "coded-jp8-hpe": "4f4f28d3bf9209bb2dc4098249fc42f96ac7bcc5d4517213aab3c5f7854f8baf", + "coded-jp8-optimized": "d7eb38ba90374b914df7751d09d5b2d9e9bd5f898766cab24824d6f51d71705e", + "coded-jp8-regroup": "bfb6c4f03115df85b66e4061d469b90137124fb2b23013626ce543d411974188", + "coded-jp8-step1": "e18bd7a56bc0429bee9019a6e663205906d2bc107ee421f2614fa28c7bfa5ac8", + "coded-jp8-step2": "fea6989e0aa616fb46c007d61f79a51c56e87f6392b2dcbc828ed363b0b4ec6b", + "coded-jp8-step3": "ce871911ea4bdd2d47062d0a31fdca14f765ca88829a04fd33e56c5cd236ea8f" + } + }, + "positive-ck": { + "coded_cell": { + "bindings": { + "h0": 448, + "x0": 271, + "x1": 19, + "x2": 431, + "x3": 83, + "x4": 447, + "x5": 51, + "y0": 135, + "y1": 131, + "y2": 199, + "y3": 195, + "y4": 167, + "y5": 163 + }, + "core_gate_indexes": [ + 691, + 692, + 693, + 694, + 695, + 696, + 697, + 698, + 699, + 700, + 701, + 702, + 703, + 704, + 705, + 706, + 707, + 708, + 709, + 710, + 711, + 712, + 713, + 714, + 715, + 716, + 717, + 718 + ], + "pair": [ + 6, + 7 + ], + "section": "B", + "sign": 1 + }, + "cold_end_transfer": { + "end_lifts": [ + { + "helper": 266, + "new_frame": [ + 256, + 128, + 65, + 33, + 16, + 8, + 6 + ], + "old_frame": [ + 400, + 96, + 8, + 6 + ] + }, + { + "helper": 426, + "new_frame": [ + 256, + 128, + 65, + 33, + 16, + 8, + 6 + ], + "old_frame": [ + 408, + 73, + 49, + 6 + ] + }, + { + "helper": 442, + "new_frame": [ + 256, + 128, + 65, + 33, + 16, + 8, + 6 + ], + "old_frame": [ + 289, + 161, + 24, + 6 + ] + } + ], + "sections": { + "A": { + "introduced": 438 + }, + "cleanup": { + "dropped_by_stage": 2848, + "introduced": 8411, + "kept_own": 2 + } + }, + "skipped_removed_early_gates": [ + 13, + 25, + 33 + ], + "tail_lifts": [ + { + "cleanup_index": 40, + "new_frame": [ + 256, + 128, + 65, + 33, + 16, + 8, + 6 + ], + "old_frame": [ + 400, + 96, + 8, + 6 + ], + "registers": [ + 266, + 19 + ] + }, + { + "cleanup_index": 41, + "new_frame": [ + 256, + 128, + 65, + 33, + 16, + 8, + 6 + ], + "old_frame": [ + 400, + 96, + 8, + 6 + ], + "registers": [ + 20, + 266 + ] + }, + { + "cleanup_index": 42, + "new_frame": [ + 256, + 128, + 65, + 33, + 16, + 8, + 6 + ], + "old_frame": [ + 400, + 96, + 8, + 6 + ], + "registers": [ + 23, + 266 + ] + }, + { + "cleanup_index": 104, + "new_frame": [ + 256, + 128, + 65, + 33, + 16, + 8, + 6 + ], + "old_frame": [ + 408, + 73, + 49, + 6 + ], + "registers": [ + 426, + 83 + ] + }, + { + "cleanup_index": 105, + "new_frame": [ + 256, + 128, + 65, + 33, + 16, + 8, + 6 + ], + "old_frame": [ + 408, + 73, + 49, + 6 + ], + "registers": [ + 84, + 426 + ] + }, + { + "cleanup_index": 106, + "new_frame": [ + 256, + 128, + 65, + 33, + 16, + 8, + 6 + ], + "old_frame": [ + 408, + 73, + 49, + 6 + ], + "registers": [ + 87, + 426 + ] + }, + { + "cleanup_index": 108, + "new_frame": [ + 256, + 128, + 65, + 33, + 16, + 8, + 6 + ], + "old_frame": [ + 289, + 161, + 24, + 6 + ], + "registers": [ + 442, + 51 + ] + }, + { + "cleanup_index": 109, + "new_frame": [ + 256, + 128, + 65, + 33, + 16, + 8, + 6 + ], + "old_frame": [ + 289, + 161, + 24, + 6 + ], + "registers": [ + 52, + 442 + ] + }, + { + "cleanup_index": 110, + "new_frame": [ + 256, + 128, + 65, + 33, + 16, + 8, + 6 + ], + "old_frame": [ + 289, + 161, + 24, + 6 + ], + "registers": [ + 55, + 442 + ] + } + ] + }, + "entry_correction": { + "gates": [ + [ + "add", + 163, + 698, + 1, + 2, + [ + 6 + ] + ], + [ + "add", + 163, + 699, + -1, + 2, + [ + 6 + ] + ], + [ + "add", + 163, + 700, + 1, + 2, + [ + 6 + ] + ], + [ + "add", + 163, + 702, + 1, + 2, + [ + 6 + ] + ], + [ + "add", + 195, + 698, + -1, + 2, + [ + 6 + ] + ], + [ + "add", + 195, + 699, + 1, + 2, + [ + 6 + ] + ], + [ + "add", + 195, + 700, + -1, + 2, + [ + 6 + ] + ], + [ + "add", + 195, + 702, + -1, + 2, + [ + 6 + ] + ] + ], + "output_content_sha256": "04030e0840696cae8456e7e859c4a9b7feb8a8d5679ee22d1fcf0d950bd9b47e", + "profile": { + "1": 2462, + "2": 393, + "3": 469, + "4": 162, + "5": 56, + "6": 41, + "8": 8 + } + }, + "final_frame_raises": { + "changes": [ + { + "after": [ + 313, + 73, + 6 + ], + "before": [ + 73, + 6 + ], + "delta": { + "1": -2, + "2": 1 + }, + "index": 698, + "section": "B", + "sweep": 0 + }, + { + "after": [ + 256, + 128, + 65, + 32, + 16, + 9, + 6 + ], + "before": [ + 256, + 128, + 65, + 41, + 16, + 6 + ], + "delta": { + "1": -2, + "2": 2, + "3": -2, + "4": 1 + }, + "index": 710, + "section": "B", + "sweep": 0 + }, + { + "after": [ + 256, + 129, + 64, + 33, + 17, + 9, + 6 + ], + "before": [ + 256, + 136, + 73, + 33, + 24, + 6 + ], + "delta": { + "1": -3, + "2": 3, + "3": -1 + }, + "index": 718, + "section": "B", + "sweep": 0 + } + ], + "domain": "coded 28 gates; one-vector extensions and maximal common-next frame; 12 sweeps maximum", + "sweeps": 2 + }, + "full_frame_cleanup_correction": { + "gates": [ + [ + "add", + 265, + 16, + 1, + 2, + [ + 256, + 128, + 64, + 32, + 16, + 8, + 4, + 2, + 1 + ] + ], + [ + "add", + 265, + 19, + -1, + 2, + [ + 256, + 128, + 64, + 32, + 16, + 8, + 4, + 2, + 1 + ] + ], + [ + "add", + 271, + 16, + -1, + 2, + [ + 256, + 128, + 64, + 32, + 16, + 8, + 4, + 2, + 1 + ] + ], + [ + "add", + 271, + 19, + 1, + 2, + [ + 256, + 128, + 64, + 32, + 16, + 8, + 4, + 2, + 1 + ] + ], + [ + "add", + 425, + 80, + 1, + 2, + [ + 256, + 128, + 64, + 32, + 16, + 8, + 4, + 2, + 1 + ] + ], + [ + "add", + 425, + 83, + -1, + 2, + [ + 256, + 128, + 64, + 32, + 16, + 8, + 4, + 2, + 1 + ] + ], + [ + "add", + 431, + 80, + -1, + 2, + [ + 256, + 128, + 64, + 32, + 16, + 8, + 4, + 2, + 1 + ] + ], + [ + "add", + 431, + 83, + 1, + 2, + [ + 256, + 128, + 64, + 32, + 16, + 8, + 4, + 2, + 1 + ] + ], + [ + "add", + 441, + 48, + 1, + 2, + [ + 256, + 128, + 64, + 32, + 16, + 8, + 4, + 2, + 1 + ] + ], + [ + "add", + 441, + 51, + -1, + 2, + [ + 256, + 128, + 64, + 32, + 16, + 8, + 4, + 2, + 1 + ] + ], + [ + "add", + 447, + 48, + -1, + 2, + [ + 256, + 128, + 64, + 32, + 16, + 8, + 4, + 2, + 1 + ] + ], + [ + "add", + 447, + 51, + 1, + 2, + [ + 256, + 128, + 64, + 32, + 16, + 8, + 4, + 2, + 1 + ] + ] + ], + "profile_unchanged": true + }, + "native_word_content_sha256": "ffb6918e397bbc026fe7ad1914bb94e316cd6eacd1d2d249ccd7acf10749b1b2", + "stages": { + "coded-ck-cold": "24628271aaad4cc71190039afeaaa226eabd276305fea3b7af9f7d17e3bfe07d", + "coded-ck-cold-repaired": "bb2b0b9a8152d8a68da304b275309d3ec6414b68603948ff31f283aadb66a4f2", + "coded-ck-hpe": "37a99e8e096edcc0e13fcf2f573adb654307efe495f3a40d4db048f4ad8c5d37", + "coded-ck-optimized": "ffb6918e397bbc026fe7ad1914bb94e316cd6eacd1d2d249ccd7acf10749b1b2", + "coded-ck-regroup": "692e7f0c804546903533fbfd97a44209c07703819fb4aeb2c9c00529935b7af5", + "coded-ck-step1": "de5b3e1637b2b7b1060d7230e1710b3d9a77b004ec7822059b870618d20d716a", + "coded-ck-step2": "9ce84451a37a24dd5942ad66f6debc6e65c19738beaca8caac79a548b7ff7be4", + "coded-ck-step3": "e5f40f9e6f614537364ad8136a87f618776300f503d9ebe81db4839088f20a4d", + "coded-ck-step4": "589191f13caecedb4712288e168083800ad281d290287ce0785ecb0a18063c27" + } + }, + "positive-jp8": { + "coded_cell": { + "bindings": { + "h0": 448, + "x0": 271, + "x1": 19, + "x2": 431, + "x3": 83, + "x4": 447, + "x5": 51, + "y0": 135, + "y1": 131, + "y2": 199, + "y3": 195, + "y4": 167, + "y5": 163 + }, + "core_gate_indexes": [ + 691, + 692, + 693, + 694, + 695, + 696, + 697, + 698, + 699, + 700, + 701, + 702, + 703, + 704, + 705, + 706, + 707, + 708, + 709, + 710, + 711, + 712, + 713, + 714, + 715, + 716, + 717, + 718 + ], + "pair": [ + 6, + 7 + ], + "section": "B", + "sign": 1 + }, + "cold_end_transfer": { + "end_lifts": [ + { + "helper": 266, + "new_frame": [ + 256, + 128, + 65, + 33, + 16, + 8, + 6 + ], + "old_frame": [ + 400, + 96, + 8, + 6 + ] + }, + { + "helper": 426, + "new_frame": [ + 256, + 128, + 65, + 33, + 16, + 8, + 6 + ], + "old_frame": [ + 408, + 73, + 49, + 6 + ] + }, + { + "helper": 442, + "new_frame": [ + 256, + 128, + 65, + 33, + 16, + 8, + 6 + ], + "old_frame": [ + 289, + 161, + 24, + 6 + ] + } + ], + "sections": { + "A": { + "introduced": 438 + }, + "cleanup": { + "dropped_by_stage": 2813, + "introduced": 9109, + "kept_own": 2 + } + }, + "skipped_removed_early_gates": [ + 13, + 25, + 33 + ], + "tail_lifts": [ + { + "cleanup_index": 40, + "new_frame": [ + 256, + 128, + 65, + 33, + 16, + 8, + 6 + ], + "old_frame": [ + 400, + 96, + 8, + 6 + ], + "registers": [ + 266, + 19 + ] + }, + { + "cleanup_index": 41, + "new_frame": [ + 256, + 128, + 65, + 33, + 16, + 8, + 6 + ], + "old_frame": [ + 400, + 96, + 8, + 6 + ], + "registers": [ + 20, + 266 + ] + }, + { + "cleanup_index": 42, + "new_frame": [ + 256, + 128, + 65, + 33, + 16, + 8, + 6 + ], + "old_frame": [ + 400, + 96, + 8, + 6 + ], + "registers": [ + 23, + 266 + ] + }, + { + "cleanup_index": 104, + "new_frame": [ + 256, + 128, + 65, + 33, + 16, + 8, + 6 + ], + "old_frame": [ + 408, + 73, + 49, + 6 + ], + "registers": [ + 426, + 83 + ] + }, + { + "cleanup_index": 105, + "new_frame": [ + 256, + 128, + 65, + 33, + 16, + 8, + 6 + ], + "old_frame": [ + 408, + 73, + 49, + 6 + ], + "registers": [ + 84, + 426 + ] + }, + { + "cleanup_index": 106, + "new_frame": [ + 256, + 128, + 65, + 33, + 16, + 8, + 6 + ], + "old_frame": [ + 408, + 73, + 49, + 6 + ], + "registers": [ + 87, + 426 + ] + }, + { + "cleanup_index": 108, + "new_frame": [ + 256, + 128, + 65, + 33, + 16, + 8, + 6 + ], + "old_frame": [ + 289, + 161, + 24, + 6 + ], + "registers": [ + 442, + 51 + ] + }, + { + "cleanup_index": 109, + "new_frame": [ + 256, + 128, + 65, + 33, + 16, + 8, + 6 + ], + "old_frame": [ + 289, + 161, + 24, + 6 + ], + "registers": [ + 52, + 442 + ] + }, + { + "cleanup_index": 110, + "new_frame": [ + 256, + 128, + 65, + 33, + 16, + 8, + 6 + ], + "old_frame": [ + 289, + 161, + 24, + 6 + ], + "registers": [ + 55, + 442 + ] + } + ] + }, + "entry_correction": { + "gates": [ + [ + "add", + 163, + 698, + 1, + 2, + [ + 6 + ] + ], + [ + "add", + 163, + 699, + -1, + 2, + [ + 6 + ] + ], + [ + "add", + 163, + 700, + 1, + 2, + [ + 6 + ] + ], + [ + "add", + 163, + 702, + 1, + 2, + [ + 6 + ] + ], + [ + "add", + 195, + 698, + -1, + 2, + [ + 6 + ] + ], + [ + "add", + 195, + 699, + 1, + 2, + [ + 6 + ] + ], + [ + "add", + 195, + 700, + -1, + 2, + [ + 6 + ] + ], + [ + "add", + 195, + 702, + -1, + 2, + [ + 6 + ] + ] + ], + "output_content_sha256": "04030e0840696cae8456e7e859c4a9b7feb8a8d5679ee22d1fcf0d950bd9b47e", + "profile": { + "1": 2462, + "2": 393, + "3": 469, + "4": 162, + "5": 56, + "6": 41, + "8": 8 + } + }, + "final_frame_raises": { + "changes": [ + { + "after": [ + 313, + 73, + 6 + ], + "before": [ + 73, + 6 + ], + "delta": { + "1": -2, + "2": 1 + }, + "index": 698, + "section": "B", + "sweep": 0 + }, + { + "after": [ + 256, + 128, + 65, + 32, + 16, + 9, + 6 + ], + "before": [ + 256, + 128, + 65, + 41, + 16, + 6 + ], + "delta": { + "1": -2, + "2": 2, + "3": -2, + "4": 1 + }, + "index": 710, + "section": "B", + "sweep": 0 + }, + { + "after": [ + 256, + 129, + 64, + 33, + 17, + 9, + 6 + ], + "before": [ + 256, + 136, + 73, + 33, + 24, + 6 + ], + "delta": { + "1": -3, + "2": 3, + "3": -1 + }, + "index": 718, + "section": "B", + "sweep": 0 + } + ], + "domain": "coded 28 gates; one-vector extensions and maximal common-next frame; 12 sweeps maximum", + "sweeps": 2 + }, + "full_frame_cleanup_correction": { + "gates": [ + [ + "add", + 265, + 16, + 1, + 2, + [ + 256, + 128, + 64, + 32, + 16, + 8, + 4, + 2, + 1 + ] + ], + [ + "add", + 265, + 19, + -1, + 2, + [ + 256, + 128, + 64, + 32, + 16, + 8, + 4, + 2, + 1 + ] + ], + [ + "add", + 271, + 16, + -1, + 2, + [ + 256, + 128, + 64, + 32, + 16, + 8, + 4, + 2, + 1 + ] + ], + [ + "add", + 271, + 19, + 1, + 2, + [ + 256, + 128, + 64, + 32, + 16, + 8, + 4, + 2, + 1 + ] + ], + [ + "add", + 425, + 80, + 1, + 2, + [ + 256, + 128, + 64, + 32, + 16, + 8, + 4, + 2, + 1 + ] + ], + [ + "add", + 425, + 83, + -1, + 2, + [ + 256, + 128, + 64, + 32, + 16, + 8, + 4, + 2, + 1 + ] + ], + [ + "add", + 431, + 80, + -1, + 2, + [ + 256, + 128, + 64, + 32, + 16, + 8, + 4, + 2, + 1 + ] + ], + [ + "add", + 431, + 83, + 1, + 2, + [ + 256, + 128, + 64, + 32, + 16, + 8, + 4, + 2, + 1 + ] + ], + [ + "add", + 441, + 48, + 1, + 2, + [ + 256, + 128, + 64, + 32, + 16, + 8, + 4, + 2, + 1 + ] + ], + [ + "add", + 441, + 51, + -1, + 2, + [ + 256, + 128, + 64, + 32, + 16, + 8, + 4, + 2, + 1 + ] + ], + [ + "add", + 447, + 48, + -1, + 2, + [ + 256, + 128, + 64, + 32, + 16, + 8, + 4, + 2, + 1 + ] + ], + [ + "add", + 447, + 51, + 1, + 2, + [ + 256, + 128, + 64, + 32, + 16, + 8, + 4, + 2, + 1 + ] + ] + ], + "profile_unchanged": true + }, + "native_word_content_sha256": "8e31803f503ab2b416da2af15dd73cad1b04f33966a24b747c017bc1bfcf9934", + "stages": { + "coded-jp8-cold": "dec82b535e3bbeb4ec1ee5a26e054d83128ab815118957c8b26922177002fb4e", + "coded-jp8-cold-repaired": "fd818edcaa3495792ad79ed3159d58cf02a9cadb5e3a861d31c5a607331d490d", + "coded-jp8-hpe": "03b967e3083dac7138e58b8f04d3ad718c6ccb7dbb951ac16a716616f3ed0bc2", + "coded-jp8-optimized": "8e31803f503ab2b416da2af15dd73cad1b04f33966a24b747c017bc1bfcf9934", + "coded-jp8-regroup": "a30bbf02942ad4aa693906b95ca4ae61f5ad44c1441ab6bf0bbffec94fa5a7eb", + "coded-jp8-step1": "3dc0da9a659f50d7fb013133d94cac0d33ade9aa29a0769f299a01202377689b", + "coded-jp8-step2": "103a78c6efd8aa35cf053f0e9e5860a6425f52a9d9ea079ec77d823fafa8b15b", + "coded-jp8-step3": "54d0a10139a8bdcce2782556240f3142d28980c76ff6e68ef9f298894807a9f1" + } + } +} diff --git a/research/coded-helper-early-end8/vendor/pr855/EXACT-CERTIFICATE.json b/research/coded-helper-early-end8/vendor/pr855/EXACT-CERTIFICATE.json new file mode 100644 index 0000000000..03f096f8ce --- /dev/null +++ b/research/coded-helper-early-end8/vendor/pr855/EXACT-CERTIFICATE.json @@ -0,0 +1,53 @@ +{ + "endpoint": "65528268492323474503/40000000000000000000000", + "patterns": 1163, + "potential_inequalities": 43031, + "mixtures": 2700, + "lambda_units_1e30": -8201202857049542392398000000, + "potential_scale": 10000000000000000, + "potentials": [ + 0, + 59314550434746, + 110079993958731, + 114380123947523, + 152189992929679, + 187269223567683, + 220011422170366, + 197583711618153, + 224836536228789, + 250606299201797, + 216161779387053, + 238154318824237, + 259060528545513, + 278948503635277, + 233891283181203, + 251059231609609, + 267413081740366, + 215818354149567, + 229949367277736, + 243402254426580, + 256204198988314, + 197941726943317, + 257256277378063, + 219365556786168, + 156607164321207, + 215921714755953, + 247475360831639, + 181711617906737, + 189131951630801, + 196100574414541, + 126718938715260, + 132403287270727, + 137681176104011, + 196995726538757, + 69161038378985, + 128475588813731, + 179241032337716 + ], + "minimum_margin_units_1e30": 23249063103322040520087343552, + "minimum_at": { + "positive": 0, + "negative": 1 + }, + "minimum_margin_greater_than": "23249063103/1000000000000" +} diff --git a/research/coded-helper-early-end8/vendor/pr855/NATIVE-EXPECTED.json b/research/coded-helper-early-end8/vendor/pr855/NATIVE-EXPECTED.json new file mode 100644 index 0000000000..8a989fcb11 --- /dev/null +++ b/research/coded-helper-early-end8/vendor/pr855/NATIVE-EXPECTED.json @@ -0,0 +1,2434 @@ +{ + "negative-ck": { + "canonical_content_sha256": "2a29ef51b8deee2911faeb96334dab62c16de09d645497444314098447b29835", + "center_rank_sum": 64, + "cold_hyperplane_ended_helpers": [ + 234, + 250, + 266, + 281, + 282, + 297, + 298, + 313, + 314, + 329, + 330, + 345, + 346, + 361, + 362, + 377, + 378, + 393, + 394, + 410, + 426, + 442 + ], + "compensation_additions": 8548, + "directed_edges": 3096, + "early_cleanup_gates": 120, + "frames": 1114, + "helpers": 493, + "hyperplane_ended_helpers": [ + 234, + 250, + 266, + 281, + 282, + 297, + 298, + 313, + 314, + 329, + 330, + 345, + 346, + 361, + 362, + 377, + 378, + 393, + 394, + 410, + 426, + 442, + 449, + 450, + 451, + 452, + 453, + 454, + 455, + 456, + 457, + 458, + 459, + 468, + 469, + 478, + 491, + 492, + 515, + 516, + 539, + 540, + 563, + 564, + 575, + 584, + 585, + 594, + 595, + 596, + 597, + 598, + 599, + 600, + 601, + 602, + 603, + 604 + ], + "input_content_sha256": "a6b394127bb81f23a2ca7d187c1e4642b369840a82b7627f7872fc772942a5a0", + "live_columns_each_orientation": 717, + "local_profile": { + "1": 2589, + "2": 549, + "3": 306, + "4": 164, + "5": 70, + "6": 8, + "8": 8 + }, + "local_rank_mass": 5723, + "refactored_cleanup": { + "provider": "ck", + "source": "k492 cold-end recipe transfer; independently audited" + }, + "refactored_cleanup_gates": 8431, + "routing_content_sha256": "7c84ac65c8b37173aa4293934f041915895e8ec30595844cc1534e2a19ae0d25", + "scalar_operations": 21762, + "scope": "Fresh exact forward and inverse-transpose scalar replay on every arbitrary input; all native frame chains and dyadic primitives. Phase lowering, wrappers, global owners and global assembly are separate.", + "status": "PASS_CHANGED_WORD_ALL_COLUMNS_AND_NATIVE_FRAMES", + "target_port_order_matches_baseline": true, + "tau": 43, + "widths": [ + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 4, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 4, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 4, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 4, + 4, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 4, + 4, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 4, + 4, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 4, + 4, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 4, + 4, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 4, + 4, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 4, + 4, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 4, + 4, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 4, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 4, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 4, + 9, + 9, + 9, + 9, + 9, + 9, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 8, + 9, + 8, + 9, + 8, + 9, + 8, + 9, + 7, + 7, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 7, + 8, + 8, + 7, + 7, + 7, + 7, + 8, + 9, + 8, + 9, + 8, + 8, + 7, + 7, + 7, + 7, + 7, + 7, + 9, + 9, + 9, + 9, + 8, + 8, + 8, + 8, + 8, + 9, + 8, + 9, + 8, + 9, + 8, + 9, + 8, + 8, + 7, + 7, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 8, + 8, + 8, + 8, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 9, + 9, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 9, + 9, + 8, + 8, + 9, + 9, + 9, + 9, + 7, + 7, + 7, + 7, + 9, + 9, + 7, + 7, + 9, + 8, + 9, + 8, + 7, + 7, + 7, + 7, + 9, + 9, + 7, + 9, + 8, + 9, + 8, + 8, + 9, + 8, + 9, + 7, + 7, + 8, + 8, + 8, + 8, + 9, + 9, + 9, + 9, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 8, + 8, + 8, + 5, + 8, + 5, + 5, + 5, + 8, + 8, + 8, + 5, + 8, + 5, + 5, + 5, + 8, + 8, + 8, + 5, + 8, + 5, + 5, + 5, + 8, + 8, + 8, + 4, + 8, + 4, + 4, + 4, + 8, + 8, + 8, + 5, + 8, + 5, + 5, + 5, + 8, + 8, + 8, + 5, + 8, + 5, + 5, + 5, + 8, + 8, + 8, + 5, + 8, + 5, + 5, + 5, + 8, + 8, + 8, + 4, + 8, + 4, + 4, + 4, + 8, + 8, + 8, + 5, + 8, + 5, + 5, + 5, + 8, + 8, + 8, + 5, + 8, + 5, + 5, + 5, + 8, + 8, + 8, + 5, + 8, + 5, + 5, + 5, + 8, + 8, + 8, + 5, + 8, + 5, + 5, + 5, + 8, + 8, + 8, + 5, + 8, + 5, + 5, + 5, + 8, + 8, + 8, + 5, + 8, + 5, + 5, + 5 + ] + }, + "negative-jp8": { + "canonical_content_sha256": "7fa93ce7be03fa80580d097aa56f206391ee3dad759ee0edc288da5e00a676e7", + "center_rank_sum": 64, + "cold_hyperplane_ended_helpers": [ + 234, + 250, + 266, + 281, + 282, + 297, + 298, + 313, + 314, + 329, + 330, + 345, + 346, + 361, + 362, + 377, + 378, + 393, + 394, + 410, + 426, + 442 + ], + "compensation_additions": 8644, + "directed_edges": 3007, + "early_cleanup_gates": 120, + "frames": 1033, + "helpers": 493, + "hyperplane_ended_helpers": [ + 234, + 250, + 266, + 281, + 282, + 297, + 298, + 313, + 314, + 329, + 330, + 345, + 346, + 361, + 362, + 377, + 378, + 393, + 394, + 410, + 426, + 442, + 449, + 450, + 451, + 452, + 453, + 454, + 455, + 456, + 457, + 458, + 459, + 468, + 469, + 478, + 491, + 492, + 515, + 516, + 539, + 540, + 563, + 564, + 575, + 584, + 585, + 594, + 595, + 596, + 597, + 598, + 599, + 600, + 601, + 602, + 603, + 604 + ], + "input_content_sha256": "d7eb38ba90374b914df7751d09d5b2d9e9bd5f898766cab24824d6f51d71705e", + "live_columns_each_orientation": 717, + "local_profile": { + "1": 2505, + "2": 397, + "3": 450, + "4": 164, + "5": 70, + "6": 8, + "8": 8 + }, + "local_rank_mass": 5767, + "refactored_cleanup": { + "provider": "jp8", + "source": "k492 cold-end recipe transfer; independently audited" + }, + "refactored_cleanup_gates": 9128, + "routing_content_sha256": "7c84ac65c8b37173aa4293934f041915895e8ec30595844cc1534e2a19ae0d25", + "scalar_operations": 22519, + "scope": "Fresh exact forward and inverse-transpose scalar replay on every arbitrary input; all native frame chains and dyadic primitives. Phase lowering, wrappers, global owners and global assembly are separate.", + "status": "PASS_CHANGED_WORD_ALL_COLUMNS_AND_NATIVE_FRAMES", + "target_port_order_matches_baseline": true, + "tau": 43, + "widths": [ + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 4, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 4, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 4, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 4, + 4, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 4, + 4, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 4, + 4, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 4, + 4, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 4, + 4, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 4, + 4, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 4, + 4, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 4, + 4, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 4, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 4, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 4, + 9, + 9, + 9, + 9, + 9, + 9, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 7, + 7, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 7, + 8, + 8, + 8, + 8, + 8, + 8, + 9, + 9, + 9, + 9, + 8, + 8, + 7, + 7, + 8, + 8, + 8, + 8, + 9, + 9, + 9, + 9, + 8, + 8, + 8, + 8, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 8, + 8, + 7, + 7, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 8, + 8, + 8, + 8, + 8, + 8, + 8, + 8, + 8, + 8, + 8, + 8, + 9, + 9, + 7, + 7, + 8, + 8, + 8, + 8, + 8, + 8, + 8, + 8, + 9, + 9, + 8, + 8, + 9, + 9, + 9, + 9, + 8, + 8, + 8, + 8, + 9, + 9, + 7, + 7, + 9, + 8, + 9, + 8, + 8, + 8, + 8, + 8, + 9, + 9, + 7, + 9, + 8, + 9, + 8, + 9, + 9, + 9, + 9, + 7, + 7, + 8, + 8, + 8, + 8, + 9, + 9, + 9, + 9, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 8, + 8, + 8, + 5, + 8, + 5, + 5, + 5, + 8, + 8, + 8, + 5, + 8, + 5, + 5, + 5, + 8, + 8, + 8, + 5, + 8, + 5, + 5, + 5, + 8, + 8, + 8, + 4, + 8, + 4, + 4, + 4, + 8, + 8, + 8, + 5, + 8, + 5, + 5, + 5, + 8, + 8, + 8, + 5, + 8, + 5, + 5, + 5, + 8, + 8, + 8, + 5, + 8, + 5, + 5, + 5, + 8, + 8, + 8, + 4, + 8, + 4, + 4, + 4, + 8, + 8, + 8, + 5, + 8, + 5, + 5, + 5, + 8, + 8, + 8, + 5, + 8, + 5, + 5, + 5, + 8, + 8, + 8, + 5, + 8, + 5, + 5, + 5, + 8, + 8, + 8, + 5, + 8, + 5, + 5, + 5, + 8, + 8, + 8, + 5, + 8, + 5, + 5, + 5, + 8, + 8, + 8, + 5, + 8, + 5, + 5, + 5 + ] + }, + "positive-ck": { + "canonical_content_sha256": "fdffede0b46600550a12658de89963e5586a7eb37ed1463c10a091242bb04880", + "center_rank_sum": 64, + "cold_hyperplane_ended_helpers": [ + 234, + 250, + 266, + 281, + 282, + 297, + 298, + 313, + 314, + 329, + 330, + 345, + 346, + 361, + 362, + 377, + 378, + 393, + 394, + 410, + 426, + 442 + ], + "compensation_additions": 8554, + "directed_edges": 3121, + "early_cleanup_gates": 117, + "frames": 1127, + "helpers": 490, + "hyperplane_ended_helpers": [ + 234, + 250, + 266, + 281, + 282, + 297, + 298, + 313, + 314, + 329, + 330, + 345, + 346, + 361, + 362, + 377, + 378, + 393, + 394, + 410, + 426, + 442, + 449, + 450, + 451, + 452, + 453, + 454, + 455, + 456, + 457, + 458, + 459, + 468, + 469, + 490, + 491, + 514, + 515, + 538, + 539, + 562, + 563, + 574, + 583, + 584, + 593, + 594, + 595, + 596, + 597, + 598, + 599, + 600, + 601 + ], + "input_content_sha256": "ffb6918e397bbc026fe7ad1914bb94e316cd6eacd1d2d249ccd7acf10749b1b2", + "live_columns_each_orientation": 714, + "local_profile": { + "1": 2598, + "2": 570, + "3": 312, + "4": 155, + "5": 61, + "6": 8, + "8": 8 + }, + "local_rank_mass": 5711, + "refactored_cleanup": { + "provider": "ck", + "source": "k492 cold-end recipe transfer; independently audited" + }, + "refactored_cleanup_gates": 8440, + "routing_content_sha256": "7c84ac65c8b37173aa4293934f041915895e8ec30595844cc1534e2a19ae0d25", + "scalar_operations": 21777, + "scope": "Fresh exact forward and inverse-transpose scalar replay on every arbitrary input; all native frame chains and dyadic primitives. Phase lowering, wrappers, global owners and global assembly are separate.", + "status": "PASS_CHANGED_WORD_ALL_COLUMNS_AND_NATIVE_FRAMES", + "target_port_order_matches_baseline": true, + "tau": 43, + "widths": [ + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 4, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 4, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 7, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 4, + 4, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 4, + 4, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 4, + 4, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 4, + 4, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 4, + 4, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 4, + 4, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 4, + 4, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 4, + 4, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 4, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 7, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 7, + 9, + 9, + 9, + 9, + 9, + 9, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 8, + 9, + 8, + 9, + 8, + 9, + 8, + 9, + 7, + 7, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 8, + 8, + 7, + 7, + 7, + 7, + 8, + 9, + 8, + 9, + 8, + 8, + 7, + 7, + 7, + 7, + 7, + 7, + 9, + 9, + 9, + 9, + 8, + 8, + 8, + 8, + 8, + 9, + 8, + 9, + 8, + 9, + 8, + 9, + 8, + 8, + 7, + 7, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 8, + 8, + 8, + 8, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 9, + 9, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 9, + 9, + 8, + 8, + 9, + 9, + 9, + 9, + 7, + 7, + 7, + 7, + 9, + 9, + 7, + 7, + 9, + 8, + 9, + 8, + 7, + 7, + 7, + 7, + 9, + 9, + 7, + 9, + 8, + 9, + 8, + 8, + 9, + 8, + 9, + 7, + 7, + 8, + 8, + 8, + 8, + 9, + 9, + 9, + 9, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 8, + 8, + 8, + 5, + 8, + 5, + 5, + 5, + 8, + 8, + 8, + 5, + 8, + 5, + 5, + 5, + 8, + 8, + 8, + 5, + 8, + 5, + 5, + 5, + 8, + 8, + 8, + 4, + 8, + 4, + 4, + 4, + 8, + 8, + 8, + 5, + 8, + 5, + 5, + 5, + 8, + 8, + 8, + 5, + 8, + 5, + 5, + 5, + 8, + 8, + 8, + 5, + 8, + 5, + 5, + 5, + 8, + 8, + 8, + 4, + 8, + 4, + 4, + 4, + 8, + 8, + 8, + 5, + 8, + 5, + 5, + 5, + 8, + 8, + 8, + 5, + 8, + 5, + 5, + 5, + 8, + 8, + 8, + 5, + 8, + 5, + 5, + 5, + 8, + 8, + 8, + 5, + 8, + 5, + 5, + 5, + 8, + 8, + 8, + 5, + 8, + 5, + 5, + 5, + 8, + 8, + 8, + 5, + 8, + 5, + 5, + 5 + ] + }, + "positive-jp8": { + "canonical_content_sha256": "f5c8b7a673b429d4caf99b9e6c48de6a398fbe37fe422b2495f51b3eb0229781", + "center_rank_sum": 64, + "cold_hyperplane_ended_helpers": [ + 234, + 250, + 266, + 281, + 282, + 297, + 298, + 313, + 314, + 329, + 330, + 345, + 346, + 361, + 362, + 377, + 378, + 393, + 394, + 410, + 426, + 442 + ], + "compensation_additions": 8650, + "directed_edges": 3032, + "early_cleanup_gates": 117, + "frames": 1046, + "helpers": 490, + "hyperplane_ended_helpers": [ + 234, + 250, + 266, + 281, + 282, + 297, + 298, + 313, + 314, + 329, + 330, + 345, + 346, + 361, + 362, + 377, + 378, + 393, + 394, + 410, + 426, + 442, + 449, + 450, + 451, + 452, + 453, + 454, + 455, + 456, + 457, + 458, + 459, + 468, + 469, + 490, + 491, + 514, + 515, + 538, + 539, + 562, + 563, + 574, + 583, + 584, + 593, + 594, + 595, + 596, + 597, + 598, + 599, + 600, + 601 + ], + "input_content_sha256": "8e31803f503ab2b416da2af15dd73cad1b04f33966a24b747c017bc1bfcf9934", + "live_columns_each_orientation": 714, + "local_profile": { + "1": 2514, + "2": 418, + "3": 456, + "4": 155, + "5": 61, + "6": 8, + "8": 8 + }, + "local_rank_mass": 5755, + "refactored_cleanup": { + "provider": "jp8", + "source": "k492 cold-end recipe transfer; independently audited" + }, + "refactored_cleanup_gates": 9137, + "routing_content_sha256": "7c84ac65c8b37173aa4293934f041915895e8ec30595844cc1534e2a19ae0d25", + "scalar_operations": 22534, + "scope": "Fresh exact forward and inverse-transpose scalar replay on every arbitrary input; all native frame chains and dyadic primitives. Phase lowering, wrappers, global owners and global assembly are separate.", + "status": "PASS_CHANGED_WORD_ALL_COLUMNS_AND_NATIVE_FRAMES", + "target_port_order_matches_baseline": true, + "tau": 43, + "widths": [ + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 4, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 4, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 7, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 4, + 4, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 4, + 4, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 4, + 4, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 4, + 4, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 4, + 4, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 4, + 4, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 4, + 4, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 4, + 4, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 4, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 7, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 7, + 9, + 9, + 9, + 9, + 9, + 9, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 7, + 7, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 8, + 8, + 8, + 8, + 8, + 8, + 9, + 9, + 9, + 9, + 8, + 8, + 7, + 7, + 8, + 8, + 8, + 8, + 9, + 9, + 9, + 9, + 8, + 8, + 8, + 8, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 8, + 8, + 7, + 7, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 8, + 8, + 8, + 8, + 8, + 8, + 8, + 8, + 8, + 8, + 8, + 8, + 9, + 9, + 7, + 7, + 8, + 8, + 8, + 8, + 8, + 8, + 8, + 8, + 9, + 9, + 8, + 8, + 9, + 9, + 9, + 9, + 8, + 8, + 8, + 8, + 9, + 9, + 7, + 7, + 9, + 8, + 9, + 8, + 8, + 8, + 8, + 8, + 9, + 9, + 7, + 9, + 8, + 9, + 8, + 9, + 9, + 9, + 9, + 7, + 7, + 8, + 8, + 8, + 8, + 9, + 9, + 9, + 9, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 8, + 8, + 8, + 5, + 8, + 5, + 5, + 5, + 8, + 8, + 8, + 5, + 8, + 5, + 5, + 5, + 8, + 8, + 8, + 5, + 8, + 5, + 5, + 5, + 8, + 8, + 8, + 4, + 8, + 4, + 4, + 4, + 8, + 8, + 8, + 5, + 8, + 5, + 5, + 5, + 8, + 8, + 8, + 5, + 8, + 5, + 5, + 5, + 8, + 8, + 8, + 5, + 8, + 5, + 5, + 5, + 8, + 8, + 8, + 4, + 8, + 4, + 4, + 4, + 8, + 8, + 8, + 5, + 8, + 5, + 5, + 5, + 8, + 8, + 8, + 5, + 8, + 5, + 5, + 5, + 8, + 8, + 8, + 5, + 8, + 5, + 5, + 5, + 8, + 8, + 8, + 5, + 8, + 5, + 5, + 5, + 8, + 8, + 8, + 5, + 8, + 5, + 5, + 5, + 8, + 8, + 8, + 5, + 8, + 5, + 5, + 5 + ] + } +} diff --git a/research/coded-helper-early-end8/vendor/pr855/NOTICE.md b/research/coded-helper-early-end8/vendor/pr855/NOTICE.md new file mode 100644 index 0000000000..ddfeacd04e --- /dev/null +++ b/research/coded-helper-early-end8/vendor/pr855/NOTICE.md @@ -0,0 +1,39 @@ +# Attribution and license + +Prepared by NeoKazuya with OpenAI Codex assistance, using +GPT-6-Astra. New code, certificates and text are contributed under the +repository's Apache-2.0 license. + +The coded core and initial positive-cell experiment are from our +[PR781](https://github.com/CrocSwap/integer-mult-bounds/pull/781), pinned at +`85f9cfad7708cc3873bd6b32492a618feb336e59`. The native words extend existing +community constructions; no authorship of those inherited constructions is +claimed. + +- icekylinx's PR531 packet factory and PR425/433 supplier/auditor lineage. +- Jeremy Kothe and AtomScout's PR622 K-triangle construction; Port480's stage + transfer; GlobalR, AtomReviewer, Stack492 and ColdBeyond's accompanying + helper-count, owner and cold-end work; the PR623 dispatch lineage. +- Chafik Boukhalfa/chafreaky's PR626 owner repair and portable verification, + and PR583's frame coalescing used in the inherited provider chain. +- DreamingOfClouds' PR604 cold-end construction and PR484 exact scalar audit, + with their earlier hyperplane-end and native-audit sources. +- The PR552 phase-baseline routing word and Round19's 112-port transport. + +The unchanged native auditor and budget sources are read in place. Their exact +input hashes are in `SOURCE-PINS.json`. The inherited provider package's +[NOTICE.md](../complex-k492-owner-repair/NOTICE.md), its vendor notices and +licenses remain applicable and are retained in the repository. The full prior +attribution chain is preserved there, including the PR568/569/571/575/586 and +PR591/592/593/599/601 work. + +Chafik Boukhalfa's PR795 and Charles Bethin's PR850 are related exact +owner-profile results for the SW4 inventory. Rohan Guliani's PR815 is related +frame-search work on fixed scalar programs. These comparisons do not supply +code or proof inputs to this verifier. The original research request's scope +comparison also included Sreekanth Nair/higherbeing's PR651 and Douglas +Colkitt's PR683 through PR781. + +All inherited conditional assumptions remain conditional. Native circuit replay +and the finite packing exclusion are not formal verification of the full +multiplication theorem. diff --git a/research/coded-helper-early-end8/vendor/pr855/README.md b/research/coded-helper-early-end8/vendor/pr855/README.md new file mode 100644 index 0000000000..2f5b78a40e --- /dev/null +++ b/research/coded-helper-early-end8/vendor/pr855/README.md @@ -0,0 +1,223 @@ +# Two coded-helper embeddings: exact global packing obstruction + +**Status: scoped negative result. No new exponent or selected-bound change.** + +The one-helper packet construction in [PR781](https://github.com/CrocSwap/integer-mult-bounds/pull/781) +survives integration into two historical native provider chains. Its complete +helper bill defeats the local saving. This package retains four explicit native +circuits and proves that every nonempty mixture of these circuits with the +original providers exceeds PR626's complex moment budget, even after removing +the scheduling and physical-family restrictions from the owner problem. + +The claim concerns these four circuits and the stated whole-helper hosting +model. It does not rule out other coded circuits, frame assignments, helper +sharing contracts, dispatches or geometries. PR626 is the historical comparison; +the selected result at this package's base commit is PR799. + +## Reproduce + +From the repository root, using Python 3.11+ and its standard library: + +```sh +python -B research/complex-coded-helper-global-screen/verify.py +``` + +Expected status: `PASS_SCOPED_INTEGER_PACKING_OBSTRUCTION`. To retain the native +words after transport, detailed audit receipts, failure controls and derived +budget data, append `--out /path/to/a/new/directory`. An existing output +directory is rejected. The default uses a temporary directory. + +The command freshly replays all four committed words on every arbitrary-dirt +column in both orientations, recounts their native frame costs and helper +widths, and checks the exact certificate. It rejects five circuit mutations and +three mathematical mutations. A different gzip header and compression level +must reproduce the same complete mathematical receipt. Source archives retain +exact input hashes; generated words use hashes of their decompressed payloads. + +The inherited auditor uses assertions. It runs in a separate interpreter with +assertions enabled, including when the parent uses `-O` or inherits +`PYTHONOPTIMIZE`. New certificate guards use explicit exceptions. + +Validation passed on Windows with Python 3.13.5 and optimized Python 3.14.4 +(also with `PYTHONOPTIMIZE=2` set). The retained mathematical results agree. +No repository-wide suite, Linux CI or full selected-frontier replay is claimed. + +This is replay of retained explicit circuits, not a cold reconstruction of their +entire ancestral search. The baseline profile, dispatch and capacity inputs are +pinned to the inherited certificate. The baseline's full phase, controller, +physical-owner and outer-theorem checks are not rerun here. + +## What was integrated + +The baseline is `research/complex-k492-owner-repair/`, as retained at commit +`66849e1475c930fd7732b1a0067ffee7e1e95f60`. The five inputs used here have identical +bytes at this package's base, `f567884aeb8851b6e794af1184119a3bfbe1e631`. +`SOURCE-PINS.json` identifies them and the PR781 cell at commit +`85f9cfad7708cc3873bd6b32492a618feb336e59`. + +Two placements use the same 28-gate coded core, on pair `(6,7)`: + +| Placement | Change relative to the R492 provider | Helpers | Columns per orientation | +| --- | --- | ---: | ---: | +| positive | Open the positive cell; replace three packet helpers with one coded helper | 490 | 714 | +| negative | Recode the already expanded negative cell; add one coded helper | 493 | 717 | + +Each placement is carried through both `ck` and `jp8`. The fresh coded helper is +register 448. It has its own semantic role; it does not inherit an optimization +intended for a removed packet helper. Both variants need eight rank-one dyadic +correction reads at the start of B, after the entry wrappers. Without them the +auditor reconstructs a forbidden zero-frame read from an entering helper. + +The positive placement also needs nine tail frame lifts, three cold ends raised +from dimension 4 to 7, and twelve full-frame cleanup corrections. The negative +placement retains the old endpoints and omits the six old frame-regroup edits +on reads that the coded core replaced. These are material costs of integration. +`CONSTRUCTION-RECORD.json` records the core's register bindings and gate indices, +the corrections, final frame raises, and hashes of intermediate discovery words. +Those intermediate words are not required or regenerated by this package. + +The final native audits establish exact forward and inverse-transpose endpoints, +arbitrary helper dirt, dyadic primitives, common monotone frames, cold-end cone +conditions, cleanup restoration, and the paid profile. They do not establish +phase lowering, residual adapters or a global owner map for the changed words. +Those later stages cannot rescue a failed lower bound on the required cost. + +The resulting per-call changes are the same for `ck` and `jp8`: + +| Placement | Delta H1 | Delta H2 | Delta H3 | Delta H4 | Delta H5 | Helper-width change | +| --- | ---: | ---: | ---: | ---: | ---: | --- | +| positive | +2 | +18 | +8 | -5 | -9 | remove three width-4; add one width-9 | +| negative | -7 | -3 | +2 | +4 | 0 | add one width-9 | + +The verifier derives this table from the newly replayed words and the pinned +baseline, rather than taking it as input to the cost proof. + +## Fixed budget and favorable relaxation + +Keep PR626's 72 calls (8 `ck`, 64 `jp8`), `m = 73`, 7,168 live streams and rank +deficit 2,560. At each call choose its original word, its positive replacement, +or its negative replacement. The two replacements are not composed within a +single call. Provider-independent deltas reduce the choices to 2,700 nonempty +pairs `(p,n)` with `p >= 0`, `n >= 0`, `p+n <= 72`. + +The original aggregate local profile is + +```text +{1:181536, 2:30016, 3:31104, 4:11520, 5:5040, 6:576, 8:576}. +``` + +The baseline helper counts and available slot capacities are: + +| Helper width | 4 | 5 | 7 | 8 | 9 | +| --- | ---: | ---: | ---: | ---: | ---: | +| Count | 2160 | 3456 | 2848 | 7904 | 19056 | + +| Slot capacity | 8 | 16 | 32 | 48 | +| --- | ---: | ---: | ---: | ---: | +| Count | 5376 | 3584 | 3584 | 3584 | + +The capacity inventory is recounted both from the plan's windows (112 ports per +window) and from all 112 native data recipes (8 replicas per port). The two +rank-zero children per port and replica cannot host positive-width helpers. +The original idle profile is `{1:123, 37:1, 48:2215}`. Local plus idle rank mass +is always 520,704. + +For the lower bound, discard all time windows, call labels and physical-family +uniqueness restrictions. Each helper still occupies its full audited width in +one capacity slot. All integer multisets of widths fitting a slot are allowed, +including the empty multiset: 1,163 patterns. A pattern with leftover rank `r` +is charged just one idle child of rank `r`. Splitting it could only increase +`sum r^s` for `0 < s < 1`, so this is favorable to the candidate. No feasible +assignment or global circuit is inferred from the relaxation. + +## Exact certificate + +Use the inherited endpoint + +```text +b0 = 65528268492323474503 / 40000000000000000000000, +s = 1 - b0, +phi(r) = r^s - r, with phi(0) = 0. +``` + +Give capacities `8,16,32,48` the integer scores `6,12,24,37`, and widths +`4,5,7,8,9` the scores `3,3,5,6,7`. For a pattern P in capacity c, define + +```text +B(P) = capacity_score(c) - sum width_score(w) * count_P(w). +``` + +Enumeration checks `B(P) >= 0` for every pattern. The certificate supplies a +negative rational `lambda` and 37 rational potentials `d[0],...,d[36]`, with +`d[0]=0`. The verifier checks, for every pattern and every residue j, + +```text +phi(r(P)) >= lambda * B(P), +d[(j+B(P)) mod 37] - d[j] <= phi(r(P)) - lambda * B(P). +``` + +These are 1,163 scalar inequalities and 43,031 potential inequalities. For any +integer packing, order its slot patterns arbitrarily and telescope the second +inequality from residue zero. Their total score is fixed by the demand: + +```text +S = 81984 + 2*p - 7*n. +sum_P phi(r(P)) >= lambda*S + d[S mod 37]. +``` + +If `I` is the fixed leftover rank mass and `H_local` the audited local profile, +every such packing therefore has moment numerator at least + +```text +sum_r H_local(r)*r^s + I + lambda*S + d[S mod 37]. +``` + +`exact.py` proves this lower bound strictly exceeds `7168 * 73^s` for every +nonempty mixture. The smallest certified excess is greater than +**0.023249063103**, at `(p,n) = (0,1)`. All child ranks are at most 48, below 73, +so the normalized moment increases with b. Failure at b0 excludes b0 and every +larger saving exponent in this fixed model. + +The integer correction matters. Replacing all potentials with zero still +satisfies the pattern inequalities but fails to exclude the single negative +replacement. This is an explicit control, not an assumption of numerical MIP +optimality. A positive control verifies that the inherited *unmodified* global +profile satisfies its own endpoint. + +All real-power comparisons use rational intervals. Write `r = 2^k m` with +`1 <= m < 2`; evaluate `log r` using 48 terms of the atanh series, with argument +at most 1/3 and an explicit geometric tail. Bound `exp(-b0 log r)` by its degree +21 and degree 20 alternating polynomials, then round outward at scale `10^30`. +The stored potentials use scale `10^16`. No floating-point result, optimizer, +or shortest-path implementation is trusted by the verifier. + +## Search record and limits + +The starting experiment was PR781's seed-23 positive cell. This follow-up tried +that placement and the same pair's already expanded negative cell, retaining +the original coded core and pivot. The provider optimizations were ported to +each changed word, repaired where the native audit rejected them, and audited +again. A final greedy search considered legal raises of the 28 coded gates: +one-vector extensions and the maximal common next frame, at most 12 sweeps. +It accepted three raises for each positive word and eight for each negative +word. This is a bounded search, with no claim of frame optimality. + +Fractional LP and integer MIP exploration suggested the obstruction. The +37-state potentials were then constructed from the nonnegative reduced costs. +Only the retained exact inequalities are part of the proof. Search stopped when +the exact lower bound excluded all 2,700 mixtures; no phase lowering or global +owner nomination was attempted after that decision. + +Related owner-profile results [PR795](https://github.com/CrocSwap/integer-mult-bounds/pull/795) +and [PR850](https://github.com/CrocSwap/integer-mult-bounds/pull/850) concern the +SW4 inventory and establish stronger packing results for that fixed inventory. +[PR815](https://github.com/CrocSwap/integer-mult-bounds/pull/815) studies frame +assignments of fixed scalar words. Here the scalar words and width inventory +change. This package adds four audited embeddings of PR781 and an exact +obstruction for their mixtures in PR626's budget; it makes no general novelty +claim for integer width prices or owner-packing methods. + +The complete multiplication theorem retains its inherited all-size, +realization, hosting, precision/tape and analytic assumptions. This finite +certificate neither discharges those assumptions nor formally verifies the +full theorem. Attribution and licenses are recorded in [NOTICE.md](NOTICE.md). diff --git a/research/coded-helper-early-end8/vendor/pr855/SOURCE-PINS.json b/research/coded-helper-early-end8/vendor/pr855/SOURCE-PINS.json new file mode 100644 index 0000000000..1ec1292382 --- /dev/null +++ b/research/coded-helper-early-end8/vendor/pr855/SOURCE-PINS.json @@ -0,0 +1,23 @@ +{ + "base_commit": "f567884aeb8851b6e794af1184119a3bfbe1e631", + "coded_cell_source": { + "commit": "85f9cfad7708cc3873bd6b32492a618feb336e59", + "path": "research/complex-packet-borrowing23/CODED-CELL.json", + "pull_request": "https://github.com/CrocSwap/integer-mult-bounds/pull/781", + "sha256": "03ba299163019b7438c5e711f0a3e3422466ee7e27d4a05c8ba0576800bc20fd" + }, + "files": { + "research/complex-k492-owner-repair/code/hpe_audit_and_transport.py": "c9a05ff291016b870b4fc925b317abd9c3a604c73ffc8920dfdbbeb475e20aa3", + "research/complex-k492-owner-repair/data/PLAN.json": "8c48ef6ce079916314126c5c3ff0003b32f24cf0fbfb2a033fc93e1e1949b5d5", + "research/complex-k492-owner-repair/data/SPEC.json": "2a2577ac526535826fed9d5f7f83f6e2e0ec058a146c64f7286720b995fa2323", + "research/complex-k492-owner-repair/vendor/multicold/vendor/pr558/vendor/pr552/complex-global/vendor531/inputs/data-base/work/complex-nine-native/DATA-PHASES.json": "c5916ff312678f12aba403847643fbbc29f643acec60bdf836fa56cd3e8251fa", + "research/complex-k492-owner-repair/vendor/multicold/vendor/pr558/vendor/pr552/complex-local/inputs/phase-baseline/CANONICAL-WORD.json.gz": "e070ae2c78b4a1b644b418774af62b40d8d16e6ba89602f0474afb557d507c37" + }, + "research_origin_commit": "66849e1475c930fd7732b1a0067ffee7e1e95f60", + "word_content_sha256": { + "negative-ck": "a6b394127bb81f23a2ca7d187c1e4642b369840a82b7627f7872fc772942a5a0", + "negative-jp8": "d7eb38ba90374b914df7751d09d5b2d9e9bd5f898766cab24824d6f51d71705e", + "positive-ck": "ffb6918e397bbc026fe7ad1914bb94e316cd6eacd1d2d249ccd7acf10749b1b2", + "positive-jp8": "8e31803f503ab2b416da2af15dd73cad1b04f33966a24b747c017bc1bfcf9934" + } +} diff --git a/research/coded-helper-early-end8/vendor/pr855/exact.py b/research/coded-helper-early-end8/vendor/pr855/exact.py new file mode 100644 index 0000000000..f2440b951c --- /dev/null +++ b/research/coded-helper-early-end8/vendor/pr855/exact.py @@ -0,0 +1,173 @@ +"""Check the finite packing certificate using rational arithmetic only. + +The recorded potentials are witnesses, not trusted solver output. Every edge +inequality and every mixture is checked again. See README.md for the proof. +""" +from fractions import Fraction as Q +from functools import lru_cache + +SCALE = 10**30 +POTENTIAL_SCALE = 10**16 +MODULUS = 37 +CAPACITY_SCORE = {8: 6, 16: 12, 32: 24, 48: 37} +WIDTH_SCORE = {4: 3, 5: 3, 7: 5, 8: 6, 9: 7} + + +def require(condition, message): + if not condition: + raise ValueError(message) + + +def log_interval(z): + """Bound log((1+z)/(1-z)) by 48 terms and a geometric tail.""" + require(0 <= z <= Q(1, 3), "log argument outside certified range") + value, power = Q(0), z + for j in range(48): + value += 2 * power / (2*j + 1) + power *= z*z + return value, value + 2*power / (97*(1-z*z)) + + +@lru_cache(None) +def power_bounds(r, b): + """Outward-rounded integer bounds for SCALE * r**(1-b).""" + require(type(r) is int and r >= 0 and 0 < b < 1, "power domain") + if r in (0, 1): + return r*SCALE, r*SCALE + k = r.bit_length() - 1 + l2, u2 = log_interval(Q(1, 3)) + m = Q(r, 2**k) + lm, um = log_interval((m-1)/(m+1)) + lo, hi = b*(k*l2+lm), b*(k*u2+um) + require(0 < lo <= hi < 1, "exp argument outside certified range") + + def alternating(x): + term = total = Q(1) + for n in range(1, 21): + term *= -x/n + total += term + # Decreasing terms on [0,1]: degree 21 is below, degree 20 above. + return total + term*(-x)/21, total + + lower = r*alternating(hi)[0]*SCALE + upper = r*alternating(lo)[1]*SCALE + return lower.numerator//lower.denominator, -(-upper.numerator//upper.denominator) + + +def patterns(): + """All integer width multisets fitting one capacity, including empty.""" + widths = sorted(WIDTH_SCORE) + result = [] + + def visit(capacity, j, used, multiplicities): + if j == len(widths): + score = CAPACITY_SCORE[capacity] - sum( + WIDTH_SCORE[w]*n for w, n in zip(widths, multiplicities)) + result.append((capacity, capacity-used, tuple(multiplicities), score)) + return + for n in range((capacity-used)//widths[j] + 1): + visit(capacity, j+1, used+n*widths[j], multiplicities+[n]) + + for capacity in sorted(CAPACITY_SCORE): + visit(capacity, 0, 0, []) + return result + + +def shifted(base, positive, negative, deltas): + keys = set(base) | set(deltas['positive']) | set(deltas['negative']) + result = {r: base.get(r, 0) + positive*deltas['positive'].get(r, 0) + + negative*deltas['negative'].get(r, 0) for r in keys} + require(all(type(n) is int and n >= 0 for n in result.values()), + "invalid mixture inventory") + return {r: n for r, n in result.items() if n} + + +def verify(model, certificate, check_record=True): + b = Q(model['endpoint']) + require(Q(certificate['endpoint']) == b, "endpoint mismatch") + require(set(model['capacities']) == set(CAPACITY_SCORE), "capacity domain") + require(set(model['widths']) == set(WIDTH_SCORE), "width domain") + require(certificate['potential_scale'] == POTENTIAL_SCALE, "potential scale") + lam = certificate['lambda_units_1e30'] + d = certificate['potentials'] + require(type(lam) is int and lam < 0, "lambda must be a negative integer") + require(len(d) == MODULUS and all(type(x) is int for x in d) and d[0] == 0, + "potential domain or origin") + pats = patterns() + require(len(pats) == 1163, "pattern enumeration changed") + phi = {r: power_bounds(r, b)[0] - r*SCALE for r in range(49)} + potential_unit = SCALE//POTENTIAL_SCALE + for capacity, residual, counts, score in pats: + require(score >= 0, "negative pattern score") + gap = phi[residual] - lam*score + require(gap >= 0, f"pattern dual inequality: {capacity}, {counts}") + for capacity, residual, counts, score in pats: + gap = phi[residual] - lam*score + for j in range(MODULUS): + require((d[(j+score) % MODULUS]-d[j])*potential_unit <= gap, + f"potential inequality: residue {j}, capacity {capacity}, {counts}") + + # A positive control: the inherited profile really meets its own endpoint. + threshold_lo, threshold_hi = [model['live']*x for x in power_bounds(model['m'], b)] + baseline_hi = sum(n*power_bounds(r, b)[1] for r, n in model['global'].items()) + require(baseline_hi < threshold_lo, "baseline endpoint positive control") + + capacity_mass = sum(c*n for c, n in model['capacities'].items()) + capacity_score = sum(CAPACITY_SCORE[c]*n for c, n in model['capacities'].items()) + rows = [] + for positive in range(model['calls']+1): + for negative in range(model['calls']-positive+1): + if positive + negative == 0: + continue + local = shifted(model['local'], positive, negative, model['profile_deltas']) + widths = shifted(model['widths'], positive, negative, model['width_deltas']) + require(set(local) <= set(range(1, 49)) and set(widths) <= set(WIDTH_SCORE), + "mixture uses an uncertified rank or width") + idle_mass = capacity_mass - sum(w*n for w, n in widths.items()) + score = capacity_score - sum(WIDTH_SCORE[w]*n for w, n in widths.items()) + require(idle_mass >= 0 and score >= 0, "mixture mass or score") + require(sum(r*n for r, n in local.items()) + idle_mass == model['rank_mass'], + "local/idle rank conservation") + lower = (sum(n*power_bounds(r, b)[0] for r, n in local.items()) + + idle_mass*SCALE + lam*score + d[score % MODULUS]*potential_unit) + margin = lower-threshold_hi + require(margin > 0, f"budget inequality: positive={positive}, negative={negative}") + rows.append((margin, positive, negative)) + margin, positive, negative = min(rows) + summary = { + 'endpoint': str(b), 'patterns': len(pats), + 'potential_inequalities': MODULUS*len(pats), 'mixtures': len(rows), + 'lambda_units_1e30': lam, 'potential_scale': POTENTIAL_SCALE, 'potentials': d, + 'minimum_margin_units_1e30': margin, + 'minimum_at': {'positive': positive, 'negative': negative}, + 'minimum_margin_greater_than': str(Q(margin//10**18, 10**12)), + } + if check_record: + require(summary == certificate, "recorded exact-certificate summary differs") + return summary + + +def controls(model, certificate): + from copy import deepcopy + + cases = [] + bad = deepcopy(certificate) + bad['lambda_units_1e30'] += 10**24 # Raise lambda by 10^-6. + cases.append(('raise_lambda', bad, 'pattern dual inequality')) + bad = deepcopy(certificate) + bad['potentials'][22] += 1000 + cases.append(('raise_residue_22', bad, 'potential inequality')) + bad = deepcopy(certificate) + bad['potentials'] = [0]*MODULUS + # Zero potentials satisfy the edges, but cannot exclude the one-call case. + cases.append(('omit_integer_correction', bad, 'budget inequality: positive=0, negative=1')) + rejected = {} + for name, bad, expected in cases: + try: + verify(model, bad, check_record=False) + except ValueError as error: + require(expected in str(error), f"wrong failure for {name}: {error}") + rejected[name] = str(error) + else: + raise ValueError(f"negative control accepted: {name}") + return rejected diff --git a/research/coded-helper-early-end8/vendor/pr855/native_worker.py b/research/coded-helper-early-end8/vendor/pr855/native_worker.py new file mode 100644 index 0000000000..13529fb7d2 --- /dev/null +++ b/research/coded-helper-early-end8/vendor/pr855/native_worker.py @@ -0,0 +1,105 @@ +"""Assertion-enabled replay of the pinned inherited native auditor.""" +import contextlib +import copy +from fractions import Fraction as Q +import gzip +import json +from pathlib import Path +import runpy +import sys + + +def require(condition, message): + if not condition: + raise ValueError(message) + + +def read(path): + data = path.read_bytes() + return json.loads(gzip.decompress(data) if path.suffix == '.gz' else data) + + +def main(package, auditor, routing, out): + require(__debug__, "the inherited auditor requires assertions; run without -O") + audit = runpy.run_path(str(auditor))['run'] + expected = read(package/'NATIVE-EXPECTED.json') + construction = read(package/'CONSTRUCTION-RECORD.json') + core = read(package/'CODED-CELL.json')['core'] + words, receipts = {}, {} + for name in sorted(expected): + path = package/'words'/f'{name}.json.gz' + words[name] = read(path) + cell = construction[name]['coded_cell'] + bindings, indexes = cell['bindings'], cell['core_gate_indexes'] + require(len(indexes) == len(core) == 28 and indexes == sorted(set(indexes)), + f"coded core index list: {name}") + embedded = [['add', bindings[t], bindings[s], Q(q).numerator, Q(q).denominator] + for t, s, q in core] + require([words[name]['B'][i][:-1] for i in indexes] == embedded, + f"coded core embedding: {name}") + with (out/f'{name}.log').open('w', encoding='utf-8') as log: + with contextlib.redirect_stdout(log): + audit(path, routing, out/name) + receipt = read(out/name/'SCALAR-FRAME-AUDIT.json') + receipt.pop('seconds') + require(receipt == expected[name], f"native receipt mismatch: {name}") + receipts[name] = receipt + + positive, negative = words['positive-ck'], words['negative-ck'] + provenance = construction['positive-ck'] + corrections = provenance['entry_correction']['gates'] + require(positive['B'][:len(corrections)] == corrections, "entry correction location") + cleanup = provenance['full_frame_cleanup_correction']['gates'] + require(positive['cleanup'][-len(cleanup):] == cleanup, "cleanup correction location") + cases = [] + bad = copy.deepcopy(positive) + del bad['B'][:len(corrections)] + cases.append(('omit_entry_correction', bad, 'zero-frame compensation reads an entering helper')) + bad = copy.deepcopy(positive) + del bad['cleanup'][-len(cleanup):] + cases.append(('omit_full_cleanup_correction', bad, 'arbitrary-dirt endpoint')) + bad = copy.deepcopy(positive) + lift = provenance['cold_end_transfer']['end_lifts'][0] + bad['helper_final'][str(lift['helper'])] = lift['old_frame'] + cases.append(('restore_old_cold_end', bad, 'hpe cone pre-check')) + bad = copy.deepcopy(negative) + gate = next(e for e in bad['cleanup'] if e[0] == 'add' and e[1] == 448 and e[3]) + gate[3] = 0 + cases.append(('omit_coded_helper_cleanup', bad, 'arbitrary-dirt endpoint')) + bad = copy.deepcopy(positive) + bad['report']['local_profile']['2'] -= 1 + cases.append(('understate_paid_profile', bad, 'paid local profile differs')) + rejected = {} + for name, bad, reason in cases: + path = out/f'{name}.json' + path.write_text(json.dumps(bad), encoding='utf-8') + with (out/f'{name}.log').open('w', encoding='utf-8') as log: + try: + with contextlib.redirect_stdout(log): + audit(path, routing, out/name) + except AssertionError as error: + require(reason in str(error), f"wrong failure for {name}: {error}") + rejected[name] = str(error) + else: + raise ValueError(f"negative control accepted: {name}") + + # Generated gzip identity is its entire decompressed payload, not its header. + source = package/'words'/'positive-ck.json.gz' + recompressed = out/'recompressed.json.gz' + recompressed.write_bytes(gzip.compress(gzip.decompress(source.read_bytes()), + compresslevel=1, mtime=123456789)) + require(recompressed.read_bytes() != source.read_bytes(), "recompression control unchanged") + with (out/'recompressed.log').open('w', encoding='utf-8') as log: + with contextlib.redirect_stdout(log): + audit(recompressed, routing, out/'recompressed') + receipt = read(out/'recompressed'/'SCALAR-FRAME-AUDIT.json') + receipt.pop('seconds') + require(receipt == receipts['positive-ck'], "recompression changed mathematical receipt") + result = {'receipts': receipts, 'controls_rejected': rejected, + 'recompression_control': 'PASS', 'assertions_enabled': __debug__} + (out/'NATIVE-RESULT.json').write_text(json.dumps(result, indent=2)+'\n', encoding='utf-8') + + +if __name__ == '__main__': + require(len(sys.argv) == 5, "expected package, auditor, routing and output paths") + main(*(Path(x).resolve() for x in sys.argv[1:])) diff --git a/research/coded-helper-early-end8/vendor/pr855/verify.py b/research/coded-helper-early-end8/vendor/pr855/verify.py new file mode 100644 index 0000000000..939600602b --- /dev/null +++ b/research/coded-helper-early-end8/vendor/pr855/verify.py @@ -0,0 +1,173 @@ +"""Replay four explicit words and the exact global-budget obstruction (stdlib).""" +import argparse +from collections import Counter +import gzip +import hashlib +import json +import os +from pathlib import Path +import runpy +import subprocess +import sys +import tempfile + +HERE = Path(__file__).resolve().parent +ROOT = HERE.parents[1] +BASE = 'research/complex-k492-owner-repair/' +VENDOR = BASE + 'vendor/multicold/vendor/pr558/vendor/pr552/' +AUDITOR = BASE + 'code/hpe_audit_and_transport.py' +ROUTING = VENDOR + 'complex-local/inputs/phase-baseline/CANONICAL-WORD.json.gz' +DATA = VENDOR + 'complex-global/vendor531/inputs/data-base/work/complex-nine-native/DATA-PHASES.json' +EXACT = runpy.run_path(str(HERE/'exact.py')) +require = EXACT['require'] + + +def read(path): + data = path.read_bytes() + return json.loads(gzip.decompress(data) if path.suffix == '.gz' else data) + + +def integers(mapping): + return {int(r): n for r, n in mapping.items()} + + +def difference(new, old): + return {r: new.get(r, 0)-old.get(r, 0) for r in sorted(set(new) | set(old)) + if new.get(r, 0) != old.get(r, 0)} + + +def check_sources(): + pins = read(HERE/'SOURCE-PINS.json') + require(set(pins['files']) == {AUDITOR, ROUTING, DATA, BASE+'data/SPEC.json', + BASE+'data/PLAN.json'}, "source pin inventory") + for path, digest in pins['files'].items(): + require(hashlib.sha256((ROOT/path).read_bytes()).hexdigest() == digest, + f"source pin mismatch: {path}") + require(hashlib.sha256((HERE/'CODED-CELL.json').read_bytes()).hexdigest() + == pins['coded_cell_source']['sha256'], "coded-cell source pin") + names = {f'{variant}-{pid}' for variant in ('positive', 'negative') for pid in ('ck', 'jp8')} + require(set(pins['word_content_sha256']) == names, "candidate inventory") + for name, digest in pins['word_content_sha256'].items(): + payload = gzip.decompress((HERE/'words'/f'{name}.json.gz').read_bytes()) + require(hashlib.sha256(payload).hexdigest() == digest, f"word content pin: {name}") + require(set(read(HERE/'NATIVE-EXPECTED.json')) == names, "expected receipt inventory") + return pins + + +def model_from_receipts(receipts): + spec = read(ROOT/BASE/'data/SPEC.json') + plan = read(ROOT/BASE/'data/PLAN.json') + data = read(ROOT/DATA) + expected = spec['expected'] + dispatch = spec['dispatch'] + counts = Counter(pid for _, _, pid in dispatch) + require(counts == expected['provider_counts'] == {'ck': 8, 'jp8': 64}, "dispatch counts") + require([[c['stage'], c['replica'], c['provider']] for c in plan['provider_calls']] + == dispatch, "plan dispatch") + require(plan['order'] == spec['call_order'] == [row[:2] for row in dispatch], "call order") + require(plan['M'] == data['m'] == 73 and plan['T'] == 8 and plan['L'] == 9, + "pinned geometry") + require(len(dispatch) == plan['T']*plan['L'] and data['ports'] == 112, + "call or port count") + capacities = Counter() + for rank, times in plan['windows'].values(): + capacities[rank] += data['ports'] + native_capacities = Counter() + require(len(data['recipes']) == data['ports'], "data recipe count") + for recipe in data['recipes']: + for child in recipe['idle_children']: + native_capacities[child['rank']] += plan['T'] + # The data recipe also records two empty children per port/replica. + # They cannot host any positive-width helper and contribute zero moment. + require(native_capacities.pop(0) == 2*data['ports']*plan['T'], "zero-capacity children") + require(capacities == native_capacities == {8: 5376, 16: 3584, 32: 3584, 48: 3584}, + "window/data capacity inventories disagree") + + local, widths = Counter(), Counter() + per_call = Counter(w for row in plan['per_call_widths'] for w in row['widths']) + for pid, count in counts.items(): + source = spec['providers'][pid] + profile, inventory = integers(source['expected_profile']), integers(source['inventory']) + registry = plan['provider_registry'][pid] + require(integers(registry['actual_paid_profile']) == profile, f"baseline profile: {pid}") + require(Counter(registry['widths']) == inventory, f"baseline inventory: {pid}") + local.update({r: n*count for r, n in profile.items()}) + widths.update({w: n*count for w, n in inventory.items()}) + require(widths == per_call, "per-call baseline helper inventory") + global_profile = integers(expected['global_profile']) + idle = integers(expected['idle_remainder_profile']) + require(local + Counter(idle) == global_profile == integers(plan['profile']), + "baseline local/global accounting") + require(sum(c*n for c, n in capacities.items())-sum(w*n for w, n in widths.items()) + == sum(r*n for r, n in idle.items()), "baseline idle mass") + + profile_deltas, width_deltas = {}, {} + for variant in ('positive', 'negative'): + profiles, inventories = [], [] + for pid in sorted(counts): + name = f'{variant}-{pid}' + receipt = receipts[name] + word = read(HERE/'words'/f'{name}.json.gz') + profile = integers(receipt['local_profile']) + inventory = dict(Counter(receipt['widths'])) + require(profile == integers(word['report']['local_profile']), f"paid profile: {name}") + require(inventory == integers(word['report']['width_inventory']), f"paid widths: {name}") + require(len(receipt['widths']) == receipt['helpers'] == word['report']['R'], + f"helper count: {name}") + require(receipt['live_columns_each_orientation'] == 224 + receipt['helpers'], + f"all-column replay: {name}") + baseline = spec['providers'][pid] + profiles.append(difference(profile, integers(baseline['expected_profile']))) + inventories.append(difference(inventory, integers(baseline['inventory']))) + require(profiles[0] == profiles[1] and inventories[0] == inventories[1], + f"provider-independent deltas: {variant}") + profile_deltas[variant], width_deltas[variant] = profiles[0], inventories[0] + require(plan['live'] == expected['live'] == 7168 and plan['deficit'] == expected['deficit'], + "live/deficit budget") + require(sum(r*n for r, n in global_profile.items()) == expected['rank_mass'] + == plan['live']*plan['M']-plan['deficit'], "baseline rank mass") + return {'endpoint': expected['complex_lower'], 'm': plan['M'], 'live': plan['live'], + 'calls': len(dispatch), 'rank_mass': expected['rank_mass'], + 'capacities': dict(capacities), 'widths': dict(widths), 'local': dict(local), + 'global': global_profile, 'profile_deltas': profile_deltas, 'width_deltas': width_deltas} + + +def run(out): + pins = check_sources() + environment = os.environ.copy() + environment.pop('PYTHONOPTIMIZE', None) + subprocess.run([sys.executable, '-I', '-B', '-X', 'utf8', str(HERE/'native_worker.py'), + str(HERE), str(ROOT/AUDITOR), str(ROOT/ROUTING), str(out)], + check=True, env=environment) + native = read(out/'NATIVE-RESULT.json') + require(native['assertions_enabled'] is True, "native worker assertions disabled") + for name, receipt in native['receipts'].items(): + require(receipt['input_content_sha256'] == pins['word_content_sha256'][name], + f"audited word identity: {name}") + model = model_from_receipts(native['receipts']) + certificate = read(HERE/'EXACT-CERTIFICATE.json') + exact = EXACT['verify'](model, certificate) + controls = EXACT['controls'](model, certificate) + summary = { + 'status': 'PASS_SCOPED_INTEGER_PACKING_OBSTRUCTION', + 'native_words': len(native['receipts']), 'native_controls_rejected': len(native['controls_rejected']), + 'exact_controls_rejected': len(controls), 'recompression_control': native['recompression_control'], + 'patterns': exact['patterns'], 'potential_inequalities': exact['potential_inequalities'], + 'mixtures': exact['mixtures'], 'minimum_margin_greater_than': exact['minimum_margin_greater_than'], + 'minimum_at': exact['minimum_at'], 'scope': 'Four explicit native words; fixed #626 geometry and dispatch. No global candidate admission or new exponent.'} + (out/'RESULT.json').write_text(json.dumps({'summary': summary, 'model': model, + 'exact_controls': controls}, indent=2)+'\n', encoding='utf-8') + print(json.dumps(summary, indent=2)) + + +if __name__ == '__main__': + parser = argparse.ArgumentParser(description=__doc__) + parser.add_argument('--out', type=Path, help='retain receipts in a new directory') + args = parser.parse_args() + if args.out is not None: + out = args.out.resolve() + out.mkdir(parents=True, exist_ok=False) + run(out) + else: + with tempfile.TemporaryDirectory(prefix='coded-helper-screen-') as directory: + run(Path(directory)) diff --git a/research/coded-helper-early-end8/vendor/pr855/words/negative-ck.json.gz b/research/coded-helper-early-end8/vendor/pr855/words/negative-ck.json.gz new file mode 100644 index 0000000000000000000000000000000000000000..4950d002d92f7a49279622bfc5be11f8ae7147ba GIT binary patch literal 60030 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

ds1#5mAPu8m|1W1+Z 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 literal 0 HcmV?d00001 diff --git a/research/coded-helper-early-end8/vendor/pr855/words/negative-jp8.json.gz b/research/coded-helper-early-end8/vendor/pr855/words/negative-jp8.json.gz new file mode 100644 index 0000000000000000000000000000000000000000..c7797d3a41e80c8d9a9edb81fc9f8ab9e45c15fa GIT binary patch literal 63350 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 z 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

4iw|+mmtzcKCNwdpKKOSl}klT|R%nxbI#u5f|j9 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

CyWwVNd<0+qM;FH3M*d;*Gvx-*-3U# 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 literal 0 HcmV?d00001 diff --git a/research/coded-helper-early-end8/vendor/pr855/words/positive-jp8.json.gz b/research/coded-helper-early-end8/vendor/pr855/words/positive-jp8.json.gz new file mode 100644 index 0000000000000000000000000000000000000000..286824f65f09e7015bc0c853cd207555d06567f0 GIT binary patch literal 63410 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 Q(model['endpoint']), 'Pinned current target does not exceed the excluded endpoint') + result = dict(base=pins['base'], source_prs=[781,855], status='PASS_EARLY8_CONSTRUCTION_AND_EXTENDED_COST_OBSTRUCTION', + native_words=8, new_constructions=retimed['constructions'], + new_native_receipts=retimed['receipts'], original_native_controls=original['controls_rejected'], + original_recompression=original['recompression_control'], + model=model, packing=packing, nonempty_mixture_count=comb(76,4)-1, + current_target=dict(kappa=str(kappa),necessary_b=str(necessary_b), + excluded_from_b=model['endpoint'],source_head=pins['base']), + scope='Four rank-eight variants plus four original rank-nine words; fixed PR626 geometry/dispatch; whole-helper packing relaxation. Native identities/frames only; no new phase/global admission or multiplication exponent.') + return json.loads(json.dumps(result)) + + +def main(): + import argparse + p = argparse.ArgumentParser(description=__doc__) + p.add_argument('--out', type=Path) + p.add_argument('--write', action='store_true') + a = p.parse_args() + def finish(out): + result = run(out) + if a.write: + (HERE / 'EXPECTED.json').write_bytes((json.dumps(result,indent=2)+'\n').encode()) + else: + require(json.dumps(result, sort_keys=True) == + json.dumps(read(HERE / 'EXPECTED.json'), sort_keys=True), + 'Recomputed evidence differs') + (out / 'RESULT.json').write_bytes((json.dumps(result,indent=2)+'\n').encode()) + print(result['status'], '8 native words;', result['nonempty_mixture_count'], 'mixtures excluded; no new kappa') + if a.out: + out = a.out.resolve() + require(not out.exists() and not out.is_relative_to(HERE), 'Fresh external output required') + out.mkdir(parents=True) + finish(out) + else: + with tempfile.TemporaryDirectory(prefix='early8-replay-') as tmp: + finish(Path(tmp)) + + +if __name__ == '__main__': + main() From 9778ba2d891468996b81eb50c389bb4169df0025 Mon Sep 17 00:00:00 2001 From: nightangelflowerwin-ops Date: Tue, 13 Oct 2026 03:35:27 -0700 Subject: [PATCH 2/2] Record final offline replay and conservative signed interval bounds --- research/coded-helper-early-end8/PROOF.md | 4 +++- research/coded-helper-early-end8/VALIDATION.md | 5 ++++- 2 files changed, 7 insertions(+), 2 deletions(-) diff --git a/research/coded-helper-early-end8/PROOF.md b/research/coded-helper-early-end8/PROOF.md index 0e1e0892fc..0f5eed697e 100644 --- a/research/coded-helper-early-end8/PROOF.md +++ b/research/coded-helper-early-end8/PROOF.md @@ -107,7 +107,9 @@ d[(j+score(pattern)) mod 37] - d[j] Telescoping over a packing lower-bounds idle cost by `idle_mass + lambda*S + d[S mod 37]`. Add the complete audited local profile. Each variant's local, idle and score changes are linear; rank mass remains -520704. The checker proves nonnegative inventories for every mixture first. +520704. A positive profile coefficient uses the lower power endpoint, while a +negative coefficient uses the upper endpoint, so removed costs retain a +conservative lower bound. The checker proves nonnegative inventories for every mixture first. The new DP stores the minimum linear change for each number of modified calls and residue. Extending a state by each of four variants enumerates every count diff --git a/research/coded-helper-early-end8/VALIDATION.md b/research/coded-helper-early-end8/VALIDATION.md index b7c905b461..73ca3357e9 100644 --- a/research/coded-helper-early-end8/VALIDATION.md +++ b/research/coded-helper-early-end8/VALIDATION.md @@ -22,7 +22,10 @@ Offline relocation uses a root whose name contains spaces, this package and only the five pinned repository inputs. The first relocated native replay passed all eight words but its final receipt comparison failed because it had loaded the earlier signed-rounding implementation before the correction. The final relocated -replay uses the corrected implementation and frozen receipt. +replay uses the corrected implementation and frozen receipt and passes the +full eight-word audit, exact cost screen and strict receipt comparison under +`python -I -O -B`. Its final status is +`PASS_EARLY8_CONSTRUCTION_AND_EXTENDED_COST_OBSTRUCTION`. The selected-record checker passes at the pinned current PR799 target. No selected record, upstream source, accepted construction, Make target or workflow