diff --git a/research/complex-t37-independent-seed39/DEPENDENCY-PINS.json b/research/complex-t37-independent-seed39/DEPENDENCY-PINS.json new file mode 100644 index 0000000000..1b326a9520 --- /dev/null +++ b/research/complex-t37-independent-seed39/DEPENDENCY-PINS.json @@ -0,0 +1,31 @@ +{ + "scripts/verify_frontier741.py": "215ee6a12de8dc2392e6811a1b8f2140035f6b2d2a0d2100ff4bd2fdcb8bb39b", + "scripts/verify_frontier741_bindings.py": "eff455167e2fd0bc9a67d35241d0e69d8edc58f3a23e776dcfe8f500ca8e8d67", + "scripts/verify_frontier799.py": "19fe1b32079095160dc00fe2f7df75e0fcbc82cff37f7159b755c8a63bd5ce99", + "scripts/verify_frontier799_bindings.py": "43897b3c99212d6134870898a1840f32898aa1b3679b299e654901568ad7e19b", + "research/complex-sw4-frame8/MANIFEST.json": "b9b39c206fcd2613382b0dcbda23a371e8781d1bedaf8e2f8e7df1e79dc1fa89", + "research/gauge44-frames-x/MANIFEST.json": "e1b7998c8f7cb24f8674d250d0510f2b5b351b2ed0b35f17a17e6bacf3d9824b", + "research/complex-k492-owner-repair/vendor/multicold/code/run_portable.py": "322d29d43dbee8130cde15d4bf05396698b5e3dfe3735813899db91cc0ba7955", + "research/complex-k492-owner-repair/vendor/multicold/engines/moment.py": "81cbc864e106418fc7854322746f72180cb8110ff39f74450a3b8d55a82c1482", + "research/complex-k492-owner-repair/vendor/multicold/engines/base_two_moment.py": "aee70c242a2f1d225528fabe2002e1564d1dc884797c07d28a831c7878ee9098", + "research/complex-k492-owner-repair/vendor/multicold/engines/outer.py": "c1ebb52163a7219504c728a5c2b098bf1e50bf20148a2879c5a74c3cadc7c03c", + "research/community-k492-audit/pr622/replay/baseline558/complex-global/base/split-centres/CANONICAL-WORD.json.gz": "66d3c3c70983224650643a0a05a21ac6c6959f84d0f4528650601016f5a76844", + "research/community-k492-audit/pr622/replay/baseline558/complex-global/base/split-centres/CLIFFORD-RECIPES.json": "534ace870cabe515987e00f50f71550030965006ea18978e0924590ac6944345", + "research/community-k492-audit/pr622/replay/baseline558/complex-global/base/split-centres/CLIFFORD-REVIEW.json": "ee9b86428278392d2c933f76d60e51f5af90d4ab67e4d3937ed2fa416e7755ab", + "research/community-k492-audit/pr622/replay/baseline558/complex-global/base/split-centres/INDEPENDENT-LOCAL-REPLAY.json": "ad3f2b941127688f98ce6872d00f110644f1c2b156f8adad1b6700e838ed0e26", + "research/community-k492-audit/pr622/replay/baseline558/complex-global/base/split-centres/INDEPENDENT-REPLAY.json": "ad3f2b941127688f98ce6872d00f110644f1c2b156f8adad1b6700e838ed0e26", + "research/community-k492-audit/pr622/replay/baseline558/complex-global/base/split-centres/INTEGRATION.json": "5c14538134dfffbc58fa4b4d2f26b270ec5f56d17d4bf23752c82964f45171db", + "research/community-k492-audit/pr622/replay/baseline558/complex-global/base/split-centres/LOCAL-CHECKS.json": "79177449e404403964ce1b2f4a9a8bd49e1916daba3123d7fd7f5cfd1f1ac0ea", + "research/community-k492-audit/pr622/replay/baseline558/complex-global/base/split-centres/LOCAL-PROGRAMS.json.gz": "99a18eede965accf65943e490b8d2b2ffb9f1c9bc6babdb825413a80cbea2cde", + "research/community-k492-audit/pr622/replay/baseline558/complex-global/base/split-centres/RESIDUAL-ADAPTERS.json": "baafef737acc16dafbe1150896feb16744f3d669fa123bb2bff19ecc4e71b275", + "research/community-k492-audit/pr622/replay/baseline558/complex-global/base/split-centres/SCALAR-FRAME-AUDIT.json": "73b3601a6239502475a272ea0c46945fd42034486aaf43e66a212eb4f012ca44", + "research/community-k492-audit/pr622/replay/baseline558/complex-global/base/split-centres/WRAPPER-CHECKS.json": "9a09146e686c4f535b04fdef3753fe01dad8f5e8881a69408a91394acb5b48f5", + "research/community-k492-audit/pr622/replay/baseline558/complex-global/base/work/complex-nine-native/DATA-PHASES.json": "c5916ff312678f12aba403847643fbbc29f643acec60bdf836fa56cd3e8251fa", + "research/complex-k492-owner-repair/vendor/multicold/inputs/PR543-EXPECTED.json": "06eccee9f6b77e140833df83407e7996dc948c17d49b0779ab171fbe463fd28d", + "research/complex-k492-owner-repair/vendor/multicold/vendor/pr558/vendor/pr552/complex-global/vendor531/evidence/audit/PREFIX-AND-INVOICE.json": "ce1bfa49be88ae67a404f606a11db2232b7e1f2610d4418058e39749d86d8478", + "research/complex-k492-owner-repair/vendor/multicold/vendor/pr558/vendor/pr552/complex-global/vendor535/inputs/ROUND20-PARENT-TEMPLATE.json.gz": "025448abdf2012d327e50a009084e1501690d05e650300d2982836aa0350ae00", + "research/community-k492-audit/pr622/replay/baseline558/complex-global/controller-input/split-centres/CANONICAL-WORD.json.gz": "de2be0f4b6d24ace368fd5b834b7a00f9625d0a1824c4ff969f2db5f115db667", + "research/complex-k492-owner-repair/vendor/multicold/vendor/pr558/vendor/pr552/complex-global/vendor531/code/prepare_supplier_base.py": "f5eae94aca965d0008bc07cff8245ccb7509042ccad457d3bcb7d51c1e9409f0", + "research/gauge44-frames-x/data/PLAN.json": "5f40e7ccfca61f298539b4f41286d2a9d62caf947057f9cec82aa53f73f707fd", + "research/gauge44-frames-x/data/OWNERS.json.gz": "99d1c4caf85855c353d30f122d9efbd9e51562914facded13027f347b18a6082" +} diff --git a/research/complex-t37-independent-seed39/MANIFEST.json b/research/complex-t37-independent-seed39/MANIFEST.json new file mode 100644 index 0000000000..7564cb506e --- /dev/null +++ b/research/complex-t37-independent-seed39/MANIFEST.json @@ -0,0 +1,72 @@ +{ + "DEPENDENCY-PINS.json": "7c47d44e8d5c24aa80afc70724e7c0381fec57ef80d085d2ee4611726a0f1254", + "NOTICE.md": "63e02f691554dd3beb8e0d06a4cd220f637f2a9c99598e7e88c893e89b0902ab", + "PROOF.md": "89df269b3ca072272cc173a416a7f17da66ad558962c21b4caf9935a14302743", + "README.md": "e38e11b6c3a3e86d8c1ece59253eddc858ce0aae420e676ea377908f730d53e3", + "SPRINT-CLAIM.json": "13002e6ffbbce1fcc6763cd2413ddabc9f23f0b0b27c12a11cf566666b7b410f", + "VENDOR-PINS.json": "da483ca6b28bcbb58fff384a804b69967e3a89526395a2fc26f459a9cae46683", + "build_owners.py": "aa1e624df1870b679ce49b92d038d3589c0b0891ac83ad54f07c1906d171907d", + "build_parent.py": "3e47d1875eeb2dba97e6ee28f451a7b37f7617ba434ab327eaed06d658c35e6c", + "check_parent.py": "f667f92cb2e34b8fa2229d3ca61f695fdfafc6de970ab61d4dde6d04401d1654", + "common.py": "e7abf00c6f0dcd364fab8ff220bd32ad2811c02e0f8aaa86da855f0a14be262d", + "data/ADAPTER-EDITS.json": "1001dbbc393676d77fecf58f54ba9e2af6681efddf5fb1ff1e179502ad50e622", + "data/CLAIM.json": "38a7b8bd752bbe728c9017ee945f59bfd9b3ac5730bffc95490cc8326b4004a0", + "data/EDITS.json": "a7068548f4c2d623129a80f59003fdcc5887858604ceb8a4ebc15987c6ee1da7", + "data/SEARCH-TRACE.json": "efa763d3b61c0b335f23afb3767d6c729a6911d7c82cea168001a5a99d5e4396", + "data/SPEC.json": "5adbe4872ae9c2dc0e2dfab0739383164fd094c2c82ec7b4c8295fcd7627993e", + "data/T5-OWNERS.json.gz": "676e91f0ab18bdc93b3da067082506b779969dde32a38baacfc8576c327a3c54", + "independent_check.py": "a934891ebfa4139aeb7cdb572bf7e50c89520e8afd8bc7f7fd3bfb253d6206ba", + "owner_controls.py": "fb2a23ed103ef7060f76ab05aa21898d47eb80b2a1d87d53d284cf744798f03c", + "package_controls.py": "22caf1613de73cf1ca787b5a9da7b710afd460550fa5954ccc8207b98f560079", + "payload_controls.py": "71449873b51d17a6e9a483268f42ca6589c8ae868824fbaa16f76a4c292c264a", + "price.py": "9cd661c2710b1d64cbb84db1efca2cf3f733bc74b778d7e3c6c92541ffc9aac7", + "source_adapters.py": "b2ba8e7e38023d2ef35ac5d56d704f659a889de252bf9c35933b3313cc582975", + "vendor/pr858/baseline_coverage.py": "c0cf6bb2035817a09e1abb5dc492d57af79f584bbd0c1cf5fe73ba0f8f604741", + "vendor/pr858/independent_check.py": "dd552d627bbefc05ab3f6abbbd1640ba53b67e607002ebb7dd3d17bf03ae1e65", + "vendor/pr870/LICENSE": "c71d239df91726fc519c6eb72d318ec65820627232b2f796219e87dcf35d0ab4", + "vendor/pr870/NOTICE.md": "e67a7bf357e62c130ed0df184c27d3b439b55c30e1c4c003c97bb1c6d0ab58e1", + "vendor/pr870/PROOF-NOTE-BARCH.md": "c24f211b09358b25d6cf47dd18e4bbd8bcf4ecf279e6f1c6c90613cfa230818d", + "vendor/pr870/PROOF-NOTE-T16.md": "b13621111876dee62367d7ee8e9b46c3707145d5f08914b0932d0960ee700d43", + "vendor/pr870/SOURCES.json": "a7c2f2d21d535439b729f4d1245fa6a9bb24a148d877c1298e9bbdbcf251067f", + "vendor/pr870/UPSTREAM-NOTICE.md": "a75967ebc34e3bf2ff2c25c08e6c7f1a61b0c0d171cfd1b62196ae2caaf2c610", + "vendor/pr870/code/assemble.py": "15f6986a476bac76bcdc0bfcf51da115389b46f1950d2766b6822f757888b13a", + "vendor/pr870/code/assembly_controls.py": "da7e981ae1b9f099d4e1524cb4f3ba1116011936ebe378692889b5dbfa99029d", + "vendor/pr870/code/audit_allcold.py": "1467a2acb654e62552c69fb9a7c4c85f70a02120881d222313865058ab71a6cc", + "vendor/pr870/code/bind_providers_portable.py": "1d39bcc7b63ac158e021454beaae897d123e174360573762aecade3cd43193f6", + "vendor/pr870/code/bit_supplier_controls.py": "e6d33fb61a570c3f50669412acc467a3fd06ef0b806da6a75bc296c6ba2142a5", + "vendor/pr870/code/emit_allcold.py": "354367e1fd6185a67b04f4268bcae4d502e47b18cb2131e247f5bcab5b3a769e", + "vendor/pr870/code/freeze_spec.py": "5971eecac6d6fbcb53244b80f1b9d7232012dc32876fab511214a5addebbe6c2", + "vendor/pr870/code/generated_identity.py": "c8af22719c0f3097a991a3f6ccac8f090afd2faba554745733d9ea88f2c25708", + "vendor/pr870/code/invoice_allcold.py": "71eb57514e28ced97251e0507105f654f59885ec4d40486a780bf166098858a8", + "vendor/pr870/code/prepare_global.py": "8c0dae301a8f34b77a5a462f840952d08ed120576212adf5051bc09bcad874dc", + "vendor/pr870/code/restore_parent.py": "69b7b25ff85e9b8160e233c1d415cc6a0272019e5c486dcec14cb6c349e7024d", + "vendor/pr870/code/witness.py": "779c5172894b992131e85be1e592ed2a1aec8c287b872ff42007d36a7291e444", + "vendor/pr870/construction/barch/LOCAL-PINS-barch-U8.json": "2d16f99e1f71fd66378f5f767cf4cfa2a58264919a95074c7b31029f39a3c9f5", + "vendor/pr870/construction/barch/RECIPE-U8.json": "292f0e9f82824c4111728cf4de929bf6e43320fbbdc77658aae9681906b0d652", + "vendor/pr870/construction/barch/build_tri.py": "0fba65b31c2fd71864c291358bb0ad8d5f7e1be07e21df23f0ae73d7b966002e", + "vendor/pr870/construction/barch/reproduce_barch.py": "19bc970aa6af25ab0e7fa96fb65c64dd0c5243976d8f2cb733cba839155482c1", + "vendor/pr870/construction/barch/run_controls.py": "42639bf62bf57795e3ea615c1944c67efed00f28591333daeb3139bf63d04476", + "vendor/pr870/construction/layers_np/PIVOT-SWAP-NP.json": "d49b8d316da1cbdaf995dd0e8314d3c67cc9cd4d5902e9d85ccb907be645bef5", + "vendor/pr870/construction/layers_p6n/layer_end_controls.py": "fc58c5699ba6191c1163a3041241f6f0b619626c4462cd99bcf88210bac9e81e", + "vendor/pr870/data/T8/PLAN.json": "673fd8e812fadcfb757264aba2d7e1abee9199457ed52e678ac65796cd4c1b70", + "vendor/pr870/data/UPSTREAM-PINS.json": "ccc37ab7fbf78947fe02c7f57ea672d2e4eae8454cb1158ed964c75bf423869b", + "vendor/pr870/independent/audit_local.py": "03afcfc9da428b3f6edac81c1fee7f277ab81b64998efae78380b63498dec6cd", + "vendor/pr870/independent/price_profile_t16.py": "53f8e62dcf27bee032c1bee0245d126a9c8a12ebcf24f6aaff65ea3122fffe29", + "vendor/pr870/inputs/PR589-EXPECTED.json": "b9f0e5ca038abe837b0007c8fe006f366a6f02009244ac57705a8a200e2301f4", + "vendor/pr870/t16/NOTICE.md": "902370e6bfcd39dbea2ece474f15fccbcce3b8e966b2b94066bd03e5174591b5", + "vendor/pr870/t16/build_owners.py": "faf14dd99b331a8bc5d35e3497bdb9c26fcea24ce2ee74f0dfeae87883af8db4", + "vendor/pr870/t16/build_parent.py": "82e274d0c7a94f9bf0468dd37f0505d0c42017559ebb4ba8c079a1f4e403d91e", + "vendor/pr890/NOTICE.md": "91fffbebc4bb0f3c1e4e81f239d3e7c44400c1f001a6fd5120572017bfb598f7", + "vendor/pr890/PROOF.md": "78721b32fceb34b21b8e77c95381c38c60276e72e6d9c2e9c6262cb347457def", + "vendor/pr890/VENDOR-PINS.json": "578100c9ed4812a161271a1b5c8036673f4b27d6cc1df560715ff2ea9a598f6d", + "vendor/pr890/build_owners.py": "d1e6bbab8ea0de09048fc9737dd4a4713289ca69328efe71855e16fc55abfa57", + "vendor/pr890/common.py": "41a2e8a4cc69251e7e31dd82b4776ccfe46033afa8dca59f45f5d3c377541ea7", + "vendor/pr890/data/EDITS.json": "a3bdecb4899af794427458eec0b7b13b404e2c822c1e8e152d4a4eb92cb10638", + "vendor/pr890/data/T5-OWNERS.json.gz": "676e91f0ab18bdc93b3da067082506b779969dde32a38baacfc8576c327a3c54", + "vendor/pr890/vendor/pr870/LICENSE": "c71d239df91726fc519c6eb72d318ec65820627232b2f796219e87dcf35d0ab4", + "vendor/pr890/vendor/pr870/NOTICE.md": "e67a7bf357e62c130ed0df184c27d3b439b55c30e1c4c003c97bb1c6d0ab58e1", + "vendor/pr890/vendor/pr870/UPSTREAM-NOTICE.md": "a75967ebc34e3bf2ff2c25c08e6c7f1a61b0c0d171cfd1b62196ae2caaf2c610", + "vendor/pr890/vendor/pr870/t16/NOTICE.md": "902370e6bfcd39dbea2ece474f15fccbcce3b8e966b2b94066bd03e5174591b5", + "vendor/pr890/vendor/pr870/t16/build_owners.py": "faf14dd99b331a8bc5d35e3497bdb9c26fcea24ce2ee74f0dfeae87883af8db4", + "verify.py": "4e9082fd6c01d8e6d0f50b916ba4e8056eb35d846fe80ba5c99bc87cbe7f7020" +} diff --git a/research/complex-t37-independent-seed39/NOTICE.md b/research/complex-t37-independent-seed39/NOTICE.md new file mode 100644 index 0000000000..ba623def6b --- /dev/null +++ b/research/complex-t37-independent-seed39/NOTICE.md @@ -0,0 +1,32 @@ +# Attribution and source boundaries + +T37 contribution prepared by Tekalign (@tekuuu) with substantial OpenAI Codex assistance, Apache-2.0. + +This package adapts Chafik Boukhalfa’s PR890 T21 package, also prepared with OpenAI Codex assistance. The T37 role exchange, paid complex payload1024, extended independent checks and new full composition are this contribution. No priority is claimed for inherited U8, T16 or T21 work. + +- The new T5 owner witness, T16+T5 interleaving, nine-role trade, partial 8+8+5 + bank lift, independent lift audit and strict T21 composition are PR890 predecessor work, retained and credited here. +- Hao Yan (@FanPUYen), PR858, supplied the T16 duplication and eleven-role + correction, physical source-event windows, independent owner/chart audit, + fixed ancestral coverage and replication-parameterization approach. The + T16 constructors are vendored unchanged through PR870. The generalized + independent checker retains his copyright and license notices. +- PR869/PR870 supplies the unchanged U8 local word, builder, controls and + its T16 composition. The triangle-hybrid B construction is credited there + to NewBArch; its driver and composition to ColdWitness/icekylinx. Original + notices, source attribution and proof notes are retained under `vendor/pr870`. +- Jeremy Kothe's PR799 X4 word, Chafik Boukhalfa's PR741 frames/owners, the + earlier gauge44/PR645, PR635, PR514/PR484/PR507 controller lineage, and the + PR589 bit supplier remain dependencies. Their original notices and pinned + sources remain in the repository and are covered by the ancestral replay. + +`VENDOR-PINS.json` identifies every selected unmodified vendored file and its +source PR head. This is a selected subset, not a copy of PR870's whole package. +`data/ADAPTER-EDITS.json` gives every literal before/after source edit and its +required multiplicity. The generated runtime retains the upstream notices. +`DEPENDENCY-PINS.json` pins the existing replay drivers/manifests and direct +dependencies. Their full source and artifact checks run through the retained +ancestral verifiers. `MANIFEST.json` binds this package, including all data and +proof-relevant source bytes. + +Jonathan Capalbo (@jon314159), PR942, concurrently constructed the same T37 profile and κ, using eight owner edits and an all-T bound. This package was developed independently from PR890 and PR870 and uses ten edits. PR942 code is not imported; its result is explicitly credited as concurrent corroboration. diff --git a/research/complex-t37-independent-seed39/PROOF.md b/research/complex-t37-independent-seed39/PROOF.md new file mode 100644 index 0000000000..0a5943d456 --- /dev/null +++ b/research/complex-t37-independent-seed39/PROOF.md @@ -0,0 +1,118 @@ +# T37 whole-owner packing with a paid complex prefix allowance + +This construction combines Chafik Boukhalfa's PR890 T21 owners with the +PR870 version of Hao Yan's T16 owners. It retains the U8 local word and +DreamingOfClouds' PR589 bit supplier. The new mechanism is a literal +whole-role exchange across the two owner schedules, with a larger complex +prefix allowance charged in full. The claimed conditional saving is +`1661960547713947/10^18 = 0.001661960547713947`; admission requires every +stage of `verify.py`, not this note or a proposed profile alone. + +## Source and search scope + +Implementation base: `f567884aeb8851b6e794af1184119a3bfbe1e631`. +PR890 source: `61b71bcf5a34db70220da81fa978d5b0c7bbb008`. +PR870 source: `b734850dc348800942f0ffd1f0723fdec7539b2b`. +The original sprint assignment used OS-generated seed 39, complex supplier +track, at base `7ee02b7c96d85f22b38d28bd7ed49bb8c1aeb261`. + +This changes a hypothesis of PR890's fixed-family bound: its complex +payload512 implies T<=22, whereas the present construction pays payload1024. +It does not contradict that bound. The local word, helper widths, capacity +types, dimension73 and nine-stage data recipe remain the inherited ones. +The deterministic search scanned shifts in [-1000,1000] in ascending order. +It completed 473 shifts through -528, the first to pass the fixed-bin window +screen, then checked all 5626 frozen width4 roles in full capacity48 bins. +Of these, 211 were viable replacements; the first in source order was used. +The remaining shifts [-527,1000] were not searched. See `data/SEARCH-TRACE.json`. No optimality claim is made for this search. + +## Explicit owners and order + +Relabel T16 replicas by adding21. Merge source call number i of T21 with +key16i and source call number j of T16 with key21j-528, breaking ties in +favor of T21. Both original call orders are subsequences. The actual +per-replica source-event projection remains the complete sequence of30 +events, including bridges; merely preserving a stage label is insufficient. + +The disjoint union initially leaves remainders +`{48:11085,44:1,3:1,2:1,1:5}`. Ten literal changed owner records, including +six relocations and four offset changes, are listed in `data/EDITS.json`. +The exchange changes `(44,3,2)` to `(48,1)`: + +- Remove the sole width4 helper from bin(29,8,0), leaving its full rank48. +- Put it in the width4 slice of full bin(20,8,39), displacing a later width4. +- Repack capacity32 bin(20,14,111) as width8 plus six width4 helpers. +- Repack capacity32 bin(27,15,0) as three width9 plus one width4 helper. + +The displaced later width4 enters the latter bin. Its three former width4 +helpers go to the former capacity32 bin, whose width9 helper goes back. +This yields idle profile `{48:11086,1:6}`. Every helper remains whole, and +the actual windows, capacity prefixes, per-call family uniqueness, active +data exclusion and orthogonal73-axis charts are independently rechecked. +Restoration and phase obligations remain covered by the full controller +replay and unchanged local supplier checks. + +There are333 invocations and167832 hosted helper roles. Their common local +profile is `{1:2548,2:338,3:446,4:162,5:72,8:8}`. The final paid profile is +`{1:848490,2:112554,3:148518,4:53946,5:23976,8:2664,48:11086}`. +Its mass is 2408256 = 73*33152-11840. Physical stock is 33152+514=33666. +The inherited native moment obligation is +`M37(b) = (1/33152) sum_r H37(r)*(r/73)^(1-b) < 1`. +The separately checked conservative version adds +`32*73^(1+b)*sum_r H37(r)/(10^16*33152)`. All entries of H37 are +recounted from complete invocations and the literal residual complements. +The finite nonrecursive work is charged by the emitted invoice below; its +constants do not enter as an unpaid change to this moment inequality. + +## Independent comparison with T21 + +Write H37 and H21 for the two paid rank histograms. Multiplying by21 and37 +respectively cancels all6993 local calls. The difference is exactly +`21 H37 -37 H21 =2[48]+15[1]-37[3]`. The37-coordinate vector +`(48,48,1,...,1,0,...,0)` with fifteen1s and twenty0s strictly majorizes +the vector of thirty-seven3s. Every proper prefix sum is larger and both +total111. Strict concavity of x^(1-b), for00.01. + +## Complete finite charge + +The auxiliary bank envelope has groups(8,8,8,8,5), with22680 dedicated bank +families and33152 data families: live55832, physical56346. Every original +route, residual lane and exact complement is checked. All dedicated banks +and their padding children (including auxiliary rank53) disappear from the final hosted controller; +the envelope supplies a conservative invoice, not extra selected children. + +Global prefix cost is113+2*333=779, strictly below the explicitly charged +complex payload1024. The stock has2643 bits, and the retained row formula is +`2*2643+9909+252+2*1024=17495<20161`. The old retained invoice truthfully +records512; it is pinned to512 and checked to be at most the new allowance. +The entire freshly computed per-vertex invoice is added to its overcharge. +No old invoice is relabeled as a1024-bit calculation. + +The bit coefficient allowance and its bootstrap expression4+512 remain +unchanged: these refer to the bit invoice, not the complex global prefix. +Local allowance192, compiler multiplier16, factors144 per wrapper, and all +finite router, literal, logical and precision caps stay unchanged. Literal +source adaptations and multiplicities are exposed in `data/ADAPTER-EDITS.json`. +The fresh emitted invoice, with every invocation, wrapper, bridge, frame +change, restoration and source-access operation, must pass the retained +strict checks. Direct controls reject stale payload and row charges. + +## Scope + +This is a finite conditional construction, not a formal proof of the full +multiplication theorem. Inherited all-size compilation, common-label and +mutable-source realization, whole-call hosting, precision/tape, analytic +transfer and bit H1-H5 assumptions remain. No selected-frontier file or +`upstream/` source is changed. See `NOTICE.md` for attribution and AI disclosure. diff --git a/research/complex-t37-independent-seed39/README.md b/research/complex-t37-independent-seed39/README.md new file mode 100644 index 0000000000..944f21913b --- /dev/null +++ b/research/complex-t37-independent-seed39/README.md @@ -0,0 +1,76 @@ +# Independent U8/T37 construction with paid payload1024 + +Independently developed from PR890 and PR870, this package supplies a literal T37 whole-owner schedule with the claimed +conditional exponent saving **κ = 0.001661960547713947**. Its full replay must +finish with `PASS_STRICT_U8_T37_PR589_COMPOSITION` before the claim is admitted. +The exact gain over PR890's constructed T21 candidate is **0.000000002773066918**. +This is a small improvement, about **0.000167%**, not a substantial advance +toward κ > 0.01. It does not change the repository's selected result. + +The construction changes the previously fixed complex prefix allowance from +512 to 1024 and pays the larger row charge. It combines the pinned T21 and +T16 schedules, changes ten owner records, and leaves remainder profile +`{48:11086,1:6}`. There are 333 complete U8 invocations and 167832 whole helper +roles. See [PROOF.md](PROOF.md) for the exact exchange, normalized-moment +comparison, complete finite charge, inherited assumptions and search scope. + +## Reproduce + +From the repository root, with Python 3.12, NumPy, SciPy, SymPy, a C++17 +compiler and Boost headers installed: + +```sh +python3.12 -B research/complex-t37-independent-seed39/verify.py --work /tmp/t37-cold +``` + +Use a fresh output directory outside the checkout. Set `BOOST_INCLUDE` if +Boost headers are outside `/usr/include`. The unchanged bit589 ancestor +compares regenerated gzip containers byte-for-byte; Python 3.12.14 was used +here because the host Python 3.14 produced different compressed bytes for +identical decompressed content. This package's new owner and plan checks use +canonical content identities, with positive recompression controls. + +The default command rebuilds the complete PR589/PR741/PR799 ancestry, then +the U8 word, every scalar column, frames, wrappers, phase edges, physical +owners, emitted controller, invoice, two exact moment engines and all 47 +outer inequalities. Reuse is available only for a complete, source-bound +PR799 replay **and** its complete PR741 ancestry: + +```sh +python3.12 -B research/complex-t37-independent-seed39/verify.py --work /tmp/t37-strict \ + --baseline799 /tmp/frontier799 --ancestor741 /tmp/frontier799/ancestor +python3.12 -B research/complex-t37-independent-seed39/package_controls.py \ + --replay /tmp/t37-strict --baseline799 /tmp/frontier799 \ + --ancestor741 /tmp/frontier799/ancestor --out /tmp/t37-package-controls.json +``` + +The fixed inherited stage inventory and source/artifact/log bindings are +rechecked. No optimizer or discovery switch is exposed by the replay. +Expected final values: complex prefix779 < charged1024; physical row17495 +< limit20161; rank mass2408256; deficit11840; κ as above. `RESULT.json` binds +the actual artifacts and completed stages. Receipts do not authenticate +execution history and finite tests are not a formal proof of the full theorem. + +## Review boundaries + +- `build_owners.py` reconstructs pinned predecessor owners and applies the + ten explicit edits. `independent_check.py` expands actual source events, + checks every owner and orthogonal chart, and recounts the profile. +- `build_parent.py` constructs the five-bank-group overcharge envelope; + `check_parent.py` independently checks its exact routes and complements. +- `source_adapters.py` exposes every replication and payload substitution + through counted literal edits, keeping the vendored source unchanged. +- Controls include all 30 inherited/new omitted owner edits, both omitted + interleaving delays, underpaid payload512, malformed orders, partial-bank + mutations, all inherited admission/bit/controller controls, and five + targeted payload mutations that must reach their precise assertions. +- `price.py` uses both unchanged exact moment engines, the unchanged bit + bootstrap, all 47 outer constraints and an exact majorization comparison. + +Base: `f567884aeb8851b6e794af1184119a3bfbe1e631`. Source pins, licenses, +predecessor credits and substantial OpenAI Codex assistance are recorded in +[NOTICE.md](NOTICE.md), `VENDOR-PINS.json`, `DEPENDENCY-PINS.json` and the +package manifest. `SPRINT-CLAIM.json` records seed39 and the local claim; +no pinned sprint coordination issue was available. + +Concurrent credit: Jonathan Capalbo’s PR942 at `1960cfa919a0945d0ca4cb14ea96237000037903`, published during this work’s verification, reaches the same κ with eight owner edits and an all-T bound. This package uses a different ten-edit schedule and adds an independent full reconstruction with 47 package controls and five assertion-targeted payload controls. No unique record or priority claim is made. diff --git a/research/complex-t37-independent-seed39/SPRINT-CLAIM.json b/research/complex-t37-independent-seed39/SPRINT-CLAIM.json new file mode 100644 index 0000000000..4a5f7ab389 --- /dev/null +++ b/research/complex-t37-independent-seed39/SPRINT-CLAIM.json @@ -0,0 +1,12 @@ +{ + "track": "Complex supplier", + "seed": 39, + "base_commit": "f567884aeb8851b6e794af1184119a3bfbe1e631", + "source_pr890_head": "61b71bcf5a34db70220da81fa978d5b0c7bbb008", + "scope": "T37 whole-owner construction from T21 plus T16; paid complex payload1024. Literal trade (44,3,2) to (48,1); full invoice and inherited interface checks.", + "method": "Preserve component orders; bounded bridge-aware interleave and whole-role edits.", + "expected_deliverable": "One focused conditional construction only if full physical/controller/invoice admission succeeds.", + "expected_finish": "2026-10-13T12:30:00Z", + "coordination": "No pinned sprint issue returned by GitHub GraphQL; local claim per user instruction. Open PRs checked through895, PR890 head unchanged.", + "attribution": "Tekalign (tekuuu), substantial OpenAI Codex assistance; T21 predecessor Chafik Boukhalfa, T16 Hao Yan, U8 NewBArch/icekylinx, PR799 Jeremy Kothe and inherited source notices." +} diff --git a/research/complex-t37-independent-seed39/VENDOR-PINS.json b/research/complex-t37-independent-seed39/VENDOR-PINS.json new file mode 100644 index 0000000000..459482bc4f --- /dev/null +++ b/research/complex-t37-independent-seed39/VENDOR-PINS.json @@ -0,0 +1,67 @@ +{ + "pr870": { + "head": "b734850dc348800942f0ffd1f0723fdec7539b2b", + "path": "research/gauge44-barch-t16", + "files": { + "code/generated_identity.py": "c8af22719c0f3097a991a3f6ccac8f090afd2faba554745733d9ea88f2c25708", + "code/witness.py": "779c5172894b992131e85be1e592ed2a1aec8c287b872ff42007d36a7291e444", + "code/assemble.py": "15f6986a476bac76bcdc0bfcf51da115389b46f1950d2766b6822f757888b13a", + "code/prepare_global.py": "8c0dae301a8f34b77a5a462f840952d08ed120576212adf5051bc09bcad874dc", + "code/assembly_controls.py": "da7e981ae1b9f099d4e1524cb4f3ba1116011936ebe378692889b5dbfa99029d", + "code/restore_parent.py": "69b7b25ff85e9b8160e233c1d415cc6a0272019e5c486dcec14cb6c349e7024d", + "code/audit_allcold.py": "1467a2acb654e62552c69fb9a7c4c85f70a02120881d222313865058ab71a6cc", + "code/bind_providers_portable.py": "1d39bcc7b63ac158e021454beaae897d123e174360573762aecade3cd43193f6", + "code/invoice_allcold.py": "71eb57514e28ced97251e0507105f654f59885ec4d40486a780bf166098858a8", + "code/bit_supplier_controls.py": "e6d33fb61a570c3f50669412acc467a3fd06ef0b806da6a75bc296c6ba2142a5", + "code/emit_allcold.py": "354367e1fd6185a67b04f4268bcae4d502e47b18cb2131e247f5bcab5b3a769e", + "code/freeze_spec.py": "5971eecac6d6fbcb53244b80f1b9d7232012dc32876fab511214a5addebbe6c2", + "LICENSE": "c71d239df91726fc519c6eb72d318ec65820627232b2f796219e87dcf35d0ab4", + "NOTICE.md": "e67a7bf357e62c130ed0df184c27d3b439b55c30e1c4c003c97bb1c6d0ab58e1", + "UPSTREAM-NOTICE.md": "a75967ebc34e3bf2ff2c25c08e6c7f1a61b0c0d171cfd1b62196ae2caaf2c610", + "SOURCES.json": "a7c2f2d21d535439b729f4d1245fa6a9bb24a148d877c1298e9bbdbcf251067f", + "PROOF-NOTE-BARCH.md": "c24f211b09358b25d6cf47dd18e4bbd8bcf4ecf279e6f1c6c90613cfa230818d", + "PROOF-NOTE-T16.md": "b13621111876dee62367d7ee8e9b46c3707145d5f08914b0932d0960ee700d43", + "inputs/PR589-EXPECTED.json": "b9f0e5ca038abe837b0007c8fe006f366a6f02009244ac57705a8a200e2301f4", + "data/UPSTREAM-PINS.json": "ccc37ab7fbf78947fe02c7f57ea672d2e4eae8454cb1158ed964c75bf423869b", + "data/T8/PLAN.json": "673fd8e812fadcfb757264aba2d7e1abee9199457ed52e678ac65796cd4c1b70", + "construction/barch/build_tri.py": "0fba65b31c2fd71864c291358bb0ad8d5f7e1be07e21df23f0ae73d7b966002e", + "construction/barch/run_controls.py": "42639bf62bf57795e3ea615c1944c67efed00f28591333daeb3139bf63d04476", + "construction/barch/reproduce_barch.py": "19bc970aa6af25ab0e7fa96fb65c64dd0c5243976d8f2cb733cba839155482c1", + "construction/barch/RECIPE-U8.json": "292f0e9f82824c4111728cf4de929bf6e43320fbbdc77658aae9681906b0d652", + "construction/barch/LOCAL-PINS-barch-U8.json": "2d16f99e1f71fd66378f5f767cf4cfa2a58264919a95074c7b31029f39a3c9f5", + "construction/layers_p6n/layer_end_controls.py": "fc58c5699ba6191c1163a3041241f6f0b619626c4462cd99bcf88210bac9e81e", + "construction/layers_np/PIVOT-SWAP-NP.json": "d49b8d316da1cbdaf995dd0e8314d3c67cc9cd4d5902e9d85ccb907be645bef5", + "independent/audit_local.py": "03afcfc9da428b3f6edac81c1fee7f277ab81b64998efae78380b63498dec6cd", + "independent/price_profile_t16.py": "53f8e62dcf27bee032c1bee0245d126a9c8a12ebcf24f6aaff65ea3122fffe29", + "t16/build_owners.py": "faf14dd99b331a8bc5d35e3497bdb9c26fcea24ce2ee74f0dfeae87883af8db4", + "t16/build_parent.py": "82e274d0c7a94f9bf0468dd37f0505d0c42017559ebb4ba8c079a1f4e403d91e", + "t16/NOTICE.md": "902370e6bfcd39dbea2ece474f15fccbcce3b8e966b2b94066bd03e5174591b5" + } + }, + "pr858": { + "head": "ae2e25fee91540c83ceee5a60e3b07422ce21c7d", + "path": "research/complex-double-replica-owners", + "files": { + "baseline_coverage.py": "c0cf6bb2035817a09e1abb5dc492d57af79f584bbd0c1cf5fe73ba0f8f604741", + "independent_check.py": "dd552d627bbefc05ab3f6abbbd1640ba53b67e607002ebb7dd3d17bf03ae1e65" + } + }, + "pr890": { + "head": "61b71bcf5a34db70220da81fa978d5b0c7bbb008", + "path": "research/complex-t21-owners", + "files": { + "build_owners.py": "d1e6bbab8ea0de09048fc9737dd4a4713289ca69328efe71855e16fc55abfa57", + "common.py": "41a2e8a4cc69251e7e31dd82b4776ccfe46033afa8dca59f45f5d3c377541ea7", + "data/EDITS.json": "a3bdecb4899af794427458eec0b7b13b404e2c822c1e8e152d4a4eb92cb10638", + "data/T5-OWNERS.json.gz": "676e91f0ab18bdc93b3da067082506b779969dde32a38baacfc8576c327a3c54", + "NOTICE.md": "91fffbebc4bb0f3c1e4e81f239d3e7c44400c1f001a6fd5120572017bfb598f7", + "PROOF.md": "78721b32fceb34b21b8e77c95381c38c60276e72e6d9c2e9c6262cb347457def", + "VENDOR-PINS.json": "578100c9ed4812a161271a1b5c8036673f4b27d6cc1df560715ff2ea9a598f6d", + "vendor/pr870/t16/build_owners.py": "faf14dd99b331a8bc5d35e3497bdb9c26fcea24ce2ee74f0dfeae87883af8db4", + "vendor/pr870/t16/NOTICE.md": "902370e6bfcd39dbea2ece474f15fccbcce3b8e966b2b94066bd03e5174591b5", + "vendor/pr870/LICENSE": "c71d239df91726fc519c6eb72d318ec65820627232b2f796219e87dcf35d0ab4", + "vendor/pr870/NOTICE.md": "e67a7bf357e62c130ed0df184c27d3b439b55c30e1c4c003c97bb1c6d0ab58e1", + "vendor/pr870/UPSTREAM-NOTICE.md": "a75967ebc34e3bf2ff2c25c08e6c7f1a61b0c0d171cfd1b62196ae2caaf2c610" + } + } +} diff --git a/research/complex-t37-independent-seed39/build_owners.py b/research/complex-t37-independent-seed39/build_owners.py new file mode 100644 index 0000000000..70fe9f617f --- /dev/null +++ b/research/complex-t37-independent-seed39/build_owners.py @@ -0,0 +1,136 @@ +# SPDX-License-Identifier: Apache-2.0 +# Prepared by Tekalign (@tekuuu) with substantial OpenAI Codex assistance. +"""Compose pinned T21 and T16 maps and apply a literal ten-role remainder trade. + +Chafik Boukhalfa's PR890 T21 and Hao Yan's PR858 T16 constructors are vendored +unchanged. Their complete call subsequences are preserved. Six roles change +owner bins and four more change prefix offsets. No solver is used. Actual +source-event windows and all role charts are checked independently afterwards. +""" +import argparse +import copy +import sys +from pathlib import Path +from common import HERE, ROOT, read, require, sha, identity, dump, write_gzip, load + +T21 = HERE/'vendor/pr890' +EXPECTED_CONTENT = '41234f89e8afb1a4cd9adc7d7a46e8d5118b5b4cbd77de711c8cb3b90463260c' + + +def t21_builder(): + # PR890 uses an absolute `from common import ...`. Give the immutable + # source its own immutable common module while it is imported, then + # restore this package's import binding. No vendor source is rewritten. + previous = sys.modules.get('common') + sys.modules['common'] = load(T21/'common.py', 'pinned_pr890_common') + try: + return load(T21/'build_owners.py', 'pinned_pr890_t21_owners') + finally: + if previous is None: + del sys.modules['common'] + else: + sys.modules['common'] = previous + + +def source_maps(source_plan, source_owners): + pins = read(HERE/'VENDOR-PINS.json') + for label, paths in [('pr890', pins['pr890']['files']), + ('pr870', {'t16/build_owners.py': pins['pr870']['files']['t16/build_owners.py']})]: + for relative, expected in paths.items(): + require(sha(HERE/'vendor'/label/relative) == expected, 'Pinned owner source: '+relative) + builder16 = load(HERE/'vendor/pr870/t16/build_owners.py', 'pinned_t16_owners') + require(sha(source_plan) == builder16.SOURCE_PLAN_SHA256 and + sha(source_owners) == builder16.SOURCE_OWNERS_SHA256, 'PR799 T8 source pins') + plan, source = read(source_plan), read(source_owners) + roles21, order21, details21 = t21_builder().construct(source_plan, source_owners) + roles16 = builder16.construct(source, plan) + require(builder16.audit(roles16, plan) == {1: 2, 2: 1, 44: 1, 48: 4793}, 'Inherited T16 audit') + order16 = [[s, r+8*g] for s, r in plan['order'] for g in range(2)] + require(identity(roles16) == details21['t16_content_sha256'], 'Same pinned T16 in both groups') + return plan, roles21, order21, roles16, order16, details21 + + +def merged_order(order21, order16, shift=-528): + decorated = [(16*i, 0, s, r) for i, (s, r) in enumerate(order21)] + decorated += [(21*j+shift, 1, s, r+21) for j, (s, r) in enumerate(order16)] + return [[s, r] for _, _, s, r in sorted(decorated)] + + +def check_source_suborders(order, order21, order16): + require([key for key in order if key[1] < 21] == order21, 'Complete T21 source suborder') + require([[s, r-21] for s, r in order if r >= 21] == order16, 'Complete T16 source suborder') + require(len(order) == 333 and set(map(tuple, order)) == + {(s, r) for s in range(9) for r in range(37)}, 'T37 complete invocation inventory') + + +def location(role): + return {k: role[k] for k in ('owner_replica', 'child', 'port', 'offset')} + + +def move(role, destination, plan): + role.update(destination) + r, child, port = (role[k] for k in ('owner_replica', 'child', 'port')) + role['copy'] = r*112+port + role['family'] = r*896+(2*plan['pairs'][str(child)]+plan['sides'][str(child)])*112+port + + +def construct(source_plan, source_owners): + plan, roles21, order21, roles16, order16, details21 = source_maps(source_plan, source_owners) + roles = copy.deepcopy(roles21) + for old in roles16: + role = dict(old) + for key in ('replica', 'owner_replica'): + role[key] += 21 + role['copy'] += 21*112 + role['family'] += 21*896 + roles.append(role) + order = merged_order(order21, order16) + check_source_suborders(order, order21, order16) + at = {tuple(key): time for time, key in enumerate(order)} + for role in roles: + role['time'] = at[role['stage'], role['replica']] + roles.sort(key=lambda r: (r['time'], r['helper'])) + before = copy.deepcopy(roles) + bykey = {(r['stage'], r['replica'], r['helper']): r for r in roles} + require(len(bykey) == 333*504, 'Joined role identities') + edits = read(HERE/'data/EDITS.json') + require(len(edits) == 10 and len({tuple(e['role']) for e in edits}) == 10, 'Ten distinct literal edits') + for edit in edits: + role = bykey[tuple(edit['role'])] + require(role['time'] == edit['time'] and role['width'] == edit['width'] and + location(role) == edit['before'], 'Frozen edit source location, width and time') + move(role, edit['after'], plan) + changed = sum(location(a) != location(b) for a, b in zip(before, roles)) + relocated = sum(any(a[k] != b[k] for k in ('owner_replica', 'child', 'port')) + for a, b in zip(before, roles)) + require(changed == 10 and relocated == 6, 'Exactly ten edits and six bin relocations') + require(identity(roles) == EXPECTED_CONTENT, 'Frozen T37 owner content') + return roles, order, dict( + source_plan_sha256=sha(source_plan), source_owners_sha256=sha(source_owners), + t21_content_sha256=identity(roles21), t16_content_sha256=identity(roles16), + t21_order_content_sha256=identity(order21), t16_order_content_sha256=identity(order16), + t16_omitted_edit_controls=details21['t16_omitted_edit_controls'], + t21_constructor_details=details21, changed_roles=changed, relocated_roles=relocated, + interleave=dict(t21_key='16*i', t16_key='21*j-528', tie='T21 first'), + both_source_suborders_preserved=True) + + +def main(): + parser = argparse.ArgumentParser(description=__doc__) + parser.add_argument('--out', type=Path, required=True) + args = parser.parse_args() + require(not args.out.exists(), 'Owner output must be new') + source = ROOT/'research/gauge44-frames-x/data' + roles, order, details = construct(source/'PLAN.json', source/'OWNERS.json.gz') + args.out.mkdir(parents=True) + write_gzip(args.out/'OWNERS.json.gz', roles) + dump(args.out/'ORDER.json', order) + dump(args.out/'OWNER-CONSTRUCTION.json', dict( + status='PASS_LITERAL_T21_PLUS_T16_TEN_ROLE_CONSTRUCTION', roles=len(roles), + calls=len(order), owners_sha256=sha(args.out/'OWNERS.json.gz'), + owners_content_sha256=identity(roles), order_content_sha256=identity(order), **details)) + print('PASS literal T21 plus T16 construction: 167832 roles, 10 edits, 6 relocations') + + +if __name__ == '__main__': + main() diff --git a/research/complex-t37-independent-seed39/build_parent.py b/research/complex-t37-independent-seed39/build_parent.py new file mode 100644 index 0000000000..1bb0593a1a --- /dev/null +++ b/research/complex-t37-independent-seed39/build_parent.py @@ -0,0 +1,127 @@ +# SPDX-License-Identifier: Apache-2.0 +"""Construct the 8+8+8+8+5 bank envelope and the bridge-aware T37 plan. + +Extends Hao Yan's PR858 two-bank lift. The last group has five active residual +lanes; its padding is their exact orthogonal complement. These dedicated banks +are removed from the final hosted controller, not selected recursive children. +""" +import argparse +import copy +from pathlib import Path +from common import HERE, ROOT, read, require, sha, identity, dump, write_gzip, load + + +def lift(source): + require((source['live'], source['physical']) == (11704, 12218), 'T8 source stock') + data0, bank0, data, live = 7168, 4536, 33152, 55832 + t = copy.deepcopy(source) + t['calls'] = [] + for call in source['calls']: + for group, lanes in enumerate((8, 8, 8, 8, 5)): + if call['replica'] >= lanes: + continue + new = copy.deepcopy(call) + new['replica'] += 8*group + new['owners'] = [[family+data0*group if family < data0 else + data+group*bank0+family-data0, route] + for family, route in new['owners']] + t['calls'].append(new) + for child in t['idle_children']: + require(child['replicas'] == 8, 'T8 idle multiplicity') + child['replicas'] = 37 + for event in t['execution_schedule']: + if 'replicas' in event: + require(event['replicas'] == list(range(8)), 'T8 sweep multiplicity') + event['replicas'] = list(range(37)) + if event['kind'] == 'bank_padding_cover_sweep': + event['families'] = [data, live] + elif event['kind'] == 'translate_every_live_family': + event.update(families=[0, live], charged_calls_per_cover=live) + t['bank_padding']['families'], t['bank_padding']['children'] = [], [] + for group, lanes in enumerate((8, 8, 8, 8, 5)): + for child in source['bank_padding']['children']: + new = copy.deepcopy(child) + new['family'] = data+group*bank0+child['family']-data0 + width, remainder = divmod(73-child['rank'], 8) + require(remainder == 0 and 1 <= width <= 9, 'Dedicated bank residual width') + require(child['axis_indices'] == list(range(8*width, 73)), 'Original complement coordinates') + require(list(map(int, child['orthogonal_axes'])) == + [1 << i for i in child['axis_indices']], 'Original complement axes') + new.update(axis_indices=list(range(lanes*width, 73)), rank=73-lanes*width) + new['orthogonal_axes'] = [1 << i for i in new['axis_indices']] + t['bank_padding']['children'].append(new) + t['bank_padding']['families'].append(new['family']) + t['bank_padding']['semantics'] = ( + 'Each listed coordinate complement acts once after its bank group has ' + 'completed its 8, 8, 8, 8 or 5 disjoint residual lanes. Final hosting removes ' + 'every dedicated bank and padding child.') + t['cover_final_correction'].update(families=[0, live], charged_calls_per_cover=live) + t['private_namespace'] = {key: [live+x-source['live'] for x in interval] + for key, interval in source['private_namespace'].items()} + t.update(live=live, physical=live+514, version='t37-8-8-8-8-5-bank-envelope-v1') + t['route_semantics']['helper'] = ( + 'Bank group floor(replica/8), original lane replica%8. Groups have 8,8,8,8,5 ' + 'active lanes; residual and spectator routes remain literal source routes.') + t['replica_lift'] = dict(groups=[8, 8, 8, 8, 5], replicas=37, data_stock=data, + bank_stock=22680, source_template_content_sha256=identity(source), + phase_recipe_unchanged=True) + return t + + +def main(): + parser = argparse.ArgumentParser(description=__doc__) + parser.add_argument('--base', type=Path, required=True) + parser.add_argument('--owners', type=Path, required=True) + parser.add_argument('--order', type=Path, required=True) + parser.add_argument('--out', type=Path, required=True) + args = parser.parse_args() + require(not args.out.exists(), 'Lift output must be new') + source = read(args.base/'split-centres/GLOBAL-TEMPLATE.json.gz') + t = lift(source) + original = read(ROOT/'research/gauge44-frames-x/data/PLAN.json') + windows_module = load(HERE/'vendor/pr870/t16/build_parent.py', 'unchanged_physical_windows') + require(windows_module.actual_windows(source, original['order'])[0] == original['windows'], + 'Original T8 physical-window replay') + order, owners = read(args.order), read(args.owners) + windows, schedule = windows_module.actual_windows(t, order) + plan = read(HERE/'vendor/pr870/data/T8/PLAN.json') + profile = {int(k): 333*v for k, v in read(HERE/'data/CLAIM.json')['local_profile'].items()} + for rank, count in ((48, 11086), (1, 6)): + profile[rank] = profile.get(rank, 0)+count + plan.update(T=37, live=33152, deficit=11840, order=order, windows=windows, + profile=dict(sorted(profile.items())), status='FROZEN_EXPLICIT_T37_WHOLE_OWNER_NOMINATION', + mode='gauge44-U8-t37-21-plus-16-ten-role-trade', + solver_status='Inherited T21 plus T16, ten frozen edits; no runtime optimizer') + for field in ('provider_calls', 'per_call_widths'): + bycall = {(c['stage'], c['replica']): c for c in plan[field]} + plan[field] = [] + for time, (stage, replica) in enumerate(order): + call = copy.deepcopy(bycall[stage, replica % 8]) + call['replica'] = replica + if 'time' in call: + call['time'] = time + plan[field].append(call) + plan['assignment_sha256'] = sha(args.owners) + plan['assignment_content_sha256'] = identity(owners) + plan['replica_lift'] = dict(groups=[8, 8, 8, 8, 5], source_replicas=8, replicas=37, + parent_template_content_sha256=identity(t), + owners_file_sha256=sha(args.owners), schedule_content_sha256=identity(schedule), + window_semantics='Strict physical source-event intervals, including bridges') + at = {tuple(k): time for time, k in enumerate(order)} + require(len(at) == 333 and len(owners) == 167832, 'T37 invocation/role inventory') + for role in owners: + require(role['time'] == at[role['stage'], role['replica']] and + role['time'] in windows[f"{role['owner_replica']},{role['child']}"][1], + 'Actual source-event owner window') + require(sum(rank*count for rank, count in profile.items()) == 73*33152-11840, 'T37 rank mass') + args.out.mkdir(parents=True) + write_gzip(args.out/'GLOBAL-TEMPLATE.json.gz', t) + dump(args.out/'PLAN.json', plan) + dump(args.out/'PARENT-LIFT.json', dict(status='PASS_T37_BANK_ENVELOPE_AND_PHYSICAL_WINDOWS', + calls=333, checked_roles=len(owners), windows=len(windows), + bank_groups=[8, 8, 8, 8, 5], parent_content_sha256=identity(t), + actual_schedule_sha256=identity(schedule))) + + +if __name__ == '__main__': + main() diff --git a/research/complex-t37-independent-seed39/check_parent.py b/research/complex-t37-independent-seed39/check_parent.py new file mode 100644 index 0000000000..ce1a001fc1 --- /dev/null +++ b/research/complex-t37-independent-seed39/check_parent.py @@ -0,0 +1,128 @@ +# SPDX-License-Identifier: Apache-2.0 +"""Independent literal audit of T37's partial dedicated-bank envelope. + +No constructor is imported. Every source route, active residual lane, unused +coordinate, private address, data recipe and event multiplicity is checked. +This envelope is an overcharge device; its padding is absent from the final +recursive profile, so padding ranks are not charged as selected children. +""" +import argparse +import copy +from collections import defaultdict +from pathlib import Path +from common import read, require, identity, dump, sha + + +def audit(source, lifted): + require((source['live'], source['physical']) == (11704, 12218), 'Source stock') + require((lifted['live'], lifted['physical']) == (55832, 56346), 'Lifted stock') + old = {(c['stage'], c['replica']): c for c in source['calls']} + calls = {(c['stage'], c['replica']): c for c in lifted['calls']} + require(len(calls) == len(lifted['calls']) == 333 and + set(calls) == {(s, r) for s in range(9) for r in range(37)}, 'Lifted call inventory') + used, counts = defaultdict(set), defaultdict(int) + for (stage, replica), call in calls.items(): + group, lane = divmod(replica, 8) + prior = old[stage, lane] + require({k: v for k, v in call.items() if k not in ('replica', 'owners')} == + {k: v for k, v in prior.items() if k not in ('replica', 'owners')}, 'Literal source call metadata') + require(len(call['owners']) == len(prior['owners']) == 728, 'Owner route count') + require(len({family for family, route in call['owners']}) == 728, 'Per-call family alias') + for index, ((family, route), (old_family, old_route)) in enumerate(zip(call['owners'], prior['owners'])): + expected = old_family+7168*group if index < 224 else 33152+4536*group+old_family-7168 + require(family == expected and route == old_route, 'Literal mapped owner route') + if index < 224: + require(0 <= family < 33152, 'Data namespace') + continue + require(33152 <= family < 55832 and route[0] == 2, 'Dedicated bank namespace') + if len(route) == 2: + require(route[1] == lane, 'Full-width lane') + start, width = 9*lane, 9 + else: + require(len(route) == 4, 'Entering helper route format') + start, width = route[1:3] + require(start == width*lane and 1 <= width < 9, 'Entering residual lane') + cells = set(range(start, start+width)) + require(not used[family] & cells, 'Disjoint active residual lanes') + used[family].update(cells) + counts[family] += 1 + require(set(used) == set(range(33152, 55832)), 'Complete bank family inventory') + padding = lifted['bank_padding'] + require(padding['families'] == list(range(33152, 55832)), 'Padding family namespace') + children = {c['family']: c for c in padding['children']} + require(len(children) == len(padding['children']) == 22680 and set(children) == set(used), 'Padding child inventory') + for family, cells in used.items(): + group = (family-33152)//4536 + require(counts[family] == (8, 8, 8, 8, 5)[group], 'Active lane multiplicity') + unused = sorted(set(range(73))-cells) + child = children[family] + require(child['axis_indices'] == unused and child['rank'] == len(unused) and + list(map(int, child['orthogonal_axes'])) == [1 << i for i in unused], 'Exact residual complement') + require(cells == set(range(len(cells))), 'Residual lanes form coordinate prefix') + require(len(lifted['idle_children']) == len(source['idle_children']) == 2016, 'Data idle inventory') + for old_child, child in zip(source['idle_children'], lifted['idle_children']): + require(old_child['replicas'] == 8 and child == dict(old_child, replicas=37), 'Data idle multiplicity') + require(lifted['recipe'] == source['recipe'] and lifted['local_programs'] == source['local_programs'], 'Original data recipe and local programs') + require(len(lifted['execution_schedule']) == len(source['execution_schedule']) == 32, 'Original event count') + for before, event in zip(source['execution_schedule'], lifted['execution_schedule']): + expected = copy.deepcopy(before) + if 'replicas' in expected: + require(expected['replicas'] == list(range(8)), 'Original event multiplicity') + expected['replicas'] = list(range(37)) + if expected['kind'] == 'bank_padding_cover_sweep': + expected['families'] = [33152, 55832] + elif expected['kind'] == 'translate_every_live_family': + expected.update(families=[0, 55832], charged_calls_per_cover=55832) + require(event == expected, 'Lifted source-event semantics') + require(lifted['cover_final_correction'] == dict(source['cover_final_correction'], + families=[0, 55832], charged_calls_per_cover=55832), 'Final correction namespace') + require(lifted['private_namespace'] == {k: [x+44128 for x in v] + for k, v in source['private_namespace'].items()}, 'Private namespace translation') + changed = {'version', 'live', 'physical', 'calls', 'idle_children', 'execution_schedule', + 'bank_padding', 'cover_final_correction', 'private_namespace', 'route_semantics', 'replica_lift'} + require({k: v for k, v in lifted.items() if k not in changed} == + {k: v for k, v in source.items() if k not in changed}, 'No unapproved parent fields') + require({k: v for k, v in lifted['route_semantics'].items() if k != 'helper'} == + {k: v for k, v in source['route_semantics'].items() if k != 'helper'}, 'Non-helper route semantics') + return dict(status='PASS_INDEPENDENT_T37_PARTIAL_BANK_ENVELOPE', calls=333, + active_helper_lanes=sum(counts.values()), bank_families=len(used), + maximum_auxiliary_padding_rank=max(c['rank'] for c in children.values()), + source_content_sha256=identity(source), parent_content_sha256=identity(lifted)) + + +def controls(source, parent): + mutations = [ + ('missing_fifth_lane', lambda t: t['calls'].pop()), + ('bank_group_alias', lambda t: t['calls'][2]['owners'][224].__setitem__(0, t['calls'][0]['owners'][224][0])), + ('missing_complement_axis', lambda t: t['bank_padding']['children'][-1]['axis_indices'].pop()), + ('stale_complement_rank', lambda t: t['bank_padding']['children'][-1].__setitem__('rank', 1)), + ('old_idle_multiplicity', lambda t: t['idle_children'][0].__setitem__('replicas', 16)), + ('missing_sweep_replica', lambda t: t['execution_schedule'][0]['replicas'].pop()), + ('private_alias', lambda t: t['private_namespace']['centers'].__setitem__(0, 33152)), + ('short_final_correction', lambda t: t['cover_final_correction'].__setitem__('families', [0, 33152])), + ] + rejected = [] + for name, mutate in mutations: + bad = copy.deepcopy(parent) + mutate(bad) + try: + audit(source, bad) + except ValueError as error: + rejected.append(dict(name=name, reason=str(error))) + else: + raise ValueError('Accepted parent mutation: '+name) + return rejected + + +if __name__ == '__main__': + parser = argparse.ArgumentParser(description=__doc__) + parser.add_argument('--source', type=Path, required=True) + parser.add_argument('--parent', type=Path, required=True) + parser.add_argument('--out', type=Path, required=True) + args = parser.parse_args() + source, parent = read(args.source), read(args.parent) + result = audit(source, parent) + result['controls_rejected'] = controls(source, parent) + result['input_sha256'] = dict(source=sha(args.source), parent=sha(args.parent)) + dump(args.out, result) + print(result['status'], 'controls='+str(len(result['controls_rejected']))) diff --git a/research/complex-t37-independent-seed39/common.py b/research/complex-t37-independent-seed39/common.py new file mode 100644 index 0000000000..fae734602f --- /dev/null +++ b/research/complex-t37-independent-seed39/common.py @@ -0,0 +1,50 @@ +# SPDX-License-Identifier: Apache-2.0 +"""Portable JSON identities and explicit checks for the T37 witness.""" +import gzip +import hashlib +import importlib.util +import json +from pathlib import Path + +HERE = Path(__file__).resolve().parent +ROOT = HERE.parents[1] + + +def require(ok, message): + if not ok: + raise ValueError(message) + + +def read(path): + path = Path(path) + raw = path.read_bytes() + return json.loads(gzip.decompress(raw) if path.suffix == '.gz' else raw) + + +def canonical(value): + return json.dumps(value, sort_keys=True, separators=(',', ':'), allow_nan=False).encode() + + +def sha(path): + return hashlib.sha256(Path(path).read_bytes()).hexdigest() + + +def identity(value): + return hashlib.sha256(canonical(value)).hexdigest() + + +def dump(path, value): + Path(path).write_bytes((json.dumps(value, indent=2)+'\n').encode()) + + +def write_gzip(path, value): + raw = bytearray(gzip.compress(canonical(value), mtime=0)) + raw[9] = 255 + Path(path).write_bytes(raw) + + +def load(path, name): + spec = importlib.util.spec_from_file_location(name, path) + module = importlib.util.module_from_spec(spec) + spec.loader.exec_module(module) + return module diff --git a/research/complex-t37-independent-seed39/data/ADAPTER-EDITS.json b/research/complex-t37-independent-seed39/data/ADAPTER-EDITS.json new file mode 100644 index 0000000000..284e729908 --- /dev/null +++ b/research/complex-t37-independent-seed39/data/ADAPTER-EDITS.json @@ -0,0 +1,214 @@ +{ + "emit_allcold.py": [ + [ + "==144", + "==333", + 3 + ], + [ + ";T=16;", + ";T=37;", + 1 + ], + [ + "==5120", + "==11840", + 1 + ], + [ + "deficit=5120", + "deficit=11840", + 1 + ] + ], + "audit_allcold.py": [ + [ + ";T=16;", + ";T=37;", + 1 + ], + [ + "CALLS=144", + "CALLS=333", + 1 + ], + [ + "==144", + "==333", + 3 + ], + [ + "range(16)", + "range(37)", + 2 + ], + [ + "0<=r<16", + "0<=r<37", + 1 + ], + [ + "0<=e['time']<144", + "0<=e['time']<333", + 1 + ], + [ + "==5120", + "==11840", + 1 + ], + [ + "deficit=5120", + "deficit=11840", + 2 + ], + [ + "invocations=144", + "invocations=333", + 1 + ] + ], + "invoice_allcold.py": [ + [ + "stages,replicas,blocks_per_stream=9,16,4", + "stages,replicas,blocks_per_stream=9,37,4", + 1 + ], + [ + "owners['deficit']==5120", + "owners['deficit']==11840", + 1 + ], + [ + "all 144 invocation and 144 bridge sweeps", + "all 333 invocation and 333 bridge sweeps", + 1 + ], + [ + "retained=None; payload=512", + "retained=None; payload=1024", + 1 + ], + [ + "previous['compiler']==compiler and previous['charged_prefix_bits']==payload", + "previous['compiler']==compiler and previous['charged_prefix_bits']==512<=payload", + 1 + ] + ], + "assemble.py": [ + [ + "owner['hosted_residuals']==144*R", + "owner['hosted_residuals']==333*R", + 1 + ], + [ + "invoice['bridge_sweeps']==144", + "invoice['bridge_sweeps']==333", + 1 + ], + [ + "data_and_owner_families=14336", + "data_and_owner_families=33152", + 1 + ], + [ + "len(calls)==144", + "len(calls)==333", + 1 + ], + [ + "for r in range(16)", + "for r in range(37)", + 1 + ], + [ + "parent_live,parent_physical,parent_idle=23408,23922,32256", + "parent_live,parent_physical,parent_idle=55832,56346,74592", + 1 + ], + [ + "parent_live-2*112*4*16", + "parent_live-2*112*4*37", + 1 + ], + [ + "bridges,shifts=2*112*144,4*112*16", + "bridges,shifts=2*112*333,4*112*37", + 1 + ], + [ + "4*112*16*9+2*112*16*9+2*144*R", + "4*112*37*9+2*112*37*9+2*333*R", + 1 + ], + [ + "(144*invoice['local_adapters']", + "(333*invoice['local_adapters']", + 1 + ], + [ + "+37+144+144+4", + "+37+333+333+4", + 1 + ], + [ + "owner['deficit']==5120", + "owner['deficit']==11840", + 1 + ], + [ + ",conservative_b,5120,True)", + ",conservative_b,11840,True)", + 1 + ], + [ + ",b,5120,False)", + ",b,11840,False)", + 1 + ], + [ + "explicit all144 whole-owner dispatch with a two-copy remainder trade", + "explicit all333 whole-owner dispatch with a T21 plus T16 remainder trade", + 1 + ], + [ + "This is a new T16 composition of the accepted PR799 and PR589 suppliers.", + "This is a new T37 composition of the PR890 T21 and PR870 T16 U8 owners with the unchanged PR589 bit supplier.", + 1 + ], + [ + "two independent bank groups, each with R0=504 helpers; restored private workspace is shared", + "five bank groups with 8,8,8,8,5 lanes, each with R0=504 helpers; restored private workspace is shared", + 1 + ], + [ + "invoice['charged_prefix_bits']==512", + "invoice['charged_prefix_bits']==1024", + 1 + ], + [ + "invoice['row_prefix_extra']==1024", + "invoice['row_prefix_extra']==2048", + 1 + ], + [ + "finite['physical_row_coefficient']==2*stock.bit_length()+9909+252+1024", + "finite['physical_row_coefficient']==2*stock.bit_length()+9909+252+2048", + 1 + ] + ], + "assembly_controls.py": [ + [ + "1 + 37 + 144 + 144 + 4", + "1 + 37 + 333 + 333 + 4", + 1 + ] + ], + "freeze_spec.py": [ + [ + "{'gauge44':144}", + "{'gauge44':333}", + 1 + ] + ] +} diff --git a/research/complex-t37-independent-seed39/data/CLAIM.json b/research/complex-t37-independent-seed39/data/CLAIM.json new file mode 100644 index 0000000000..b21ee80731 --- /dev/null +++ b/research/complex-t37-independent-seed39/data/CLAIM.json @@ -0,0 +1,30 @@ +{ + "kappa": "1661960547713947/1000000000000000000", + "kappa_decimal": "0.001661960547713947", + "complex_lower": "416181814685169713943/250000000000000000000000", + "bit_lower": "1733427039589844234749/1000000000000000000000000", + "replicas": 37, + "calls": 333, + "roles": 167832, + "live": 33152, + "physical": 33666, + "rank_mass": 2408256, + "deficit": 11840, + "prefix_bits": 779, + "row_coefficient": 17495, + "idle": { + "1": 6, + "48": 11086 + }, + "local_profile": { + "1": 2548, + "2": 338, + "3": 446, + "4": 162, + "5": 72, + "8": 8 + }, + "scope": "Conditional finite U8/T37/PR589 composition. All-size compiler, common-label/mutable-source realization, whole-call hosting, precision/tape, analytic transfer and bit H1-H5 remain inherited hypotheses.", + "baseline890_kappa": "1661957774647029/1000000000000000000", + "charged_complex_payload": 1024 +} diff --git a/research/complex-t37-independent-seed39/data/EDITS.json b/research/complex-t37-independent-seed39/data/EDITS.json new file mode 100644 index 0000000000..4bb6a618bc --- /dev/null +++ b/research/complex-t37-independent-seed39/data/EDITS.json @@ -0,0 +1,212 @@ +[ + { + "role": [ + 7, + 17, + 500 + ], + "time": 242, + "width": 8, + "before": { + "owner_replica": 20, + "child": 14, + "port": 111, + "offset": 0 + }, + "after": { + "owner_replica": 20, + "child": 14, + "port": 111, + "offset": 4 + } + }, + { + "role": [ + 8, + 16, + 138 + ], + "time": 251, + "width": 4, + "before": { + "owner_replica": 20, + "child": 14, + "port": 111, + "offset": 8 + }, + "after": { + "owner_replica": 20, + "child": 14, + "port": 111, + "offset": 12 + } + }, + { + "role": [ + 8, + 16, + 145 + ], + "time": 251, + "width": 4, + "before": { + "owner_replica": 20, + "child": 8, + "port": 39, + "offset": 0 + }, + "after": { + "owner_replica": 27, + "child": 15, + "port": 0, + "offset": 18 + } + }, + { + "role": [ + 7, + 18, + 266 + ], + "time": 274, + "width": 9, + "before": { + "owner_replica": 20, + "child": 14, + "port": 111, + "offset": 12 + }, + "after": { + "owner_replica": 27, + "child": 15, + "port": 0, + "offset": 22 + } + }, + { + "role": [ + 8, + 2, + 193 + ], + "time": 292, + "width": 4, + "before": { + "owner_replica": 20, + "child": 14, + "port": 111, + "offset": 21 + }, + "after": { + "owner_replica": 20, + "child": 14, + "port": 111, + "offset": 24 + } + }, + { + "role": [ + 7, + 6, + 414 + ], + "time": 322, + "width": 4, + "before": { + "owner_replica": 20, + "child": 14, + "port": 111, + "offset": 25 + }, + "after": { + "owner_replica": 20, + "child": 14, + "port": 111, + "offset": 28 + } + }, + { + "role": [ + 0, + 30, + 5 + ], + "time": 3, + "width": 4, + "before": { + "owner_replica": 29, + "child": 8, + "port": 0, + "offset": 0 + }, + "after": { + "owner_replica": 20, + "child": 8, + "port": 39, + "offset": 0 + } + }, + { + "role": [ + 8, + 23, + 193 + ], + "time": 227, + "width": 4, + "before": { + "owner_replica": 27, + "child": 15, + "port": 0, + "offset": 18 + }, + "after": { + "owner_replica": 20, + "child": 14, + "port": 111, + "offset": 0 + } + }, + { + "role": [ + 7, + 27, + 414 + ], + "time": 277, + "width": 4, + "before": { + "owner_replica": 27, + "child": 15, + "port": 0, + "offset": 22 + }, + "after": { + "owner_replica": 20, + "child": 14, + "port": 111, + "offset": 16 + } + }, + { + "role": [ + 8, + 26, + 414 + ], + "time": 282, + "width": 4, + "before": { + "owner_replica": 27, + "child": 15, + "port": 0, + "offset": 26 + }, + "after": { + "owner_replica": 20, + "child": 14, + "port": 111, + "offset": 20 + } + } +] diff --git a/research/complex-t37-independent-seed39/data/SEARCH-TRACE.json b/research/complex-t37-independent-seed39/data/SEARCH-TRACE.json new file mode 100644 index 0000000000..e4134b2245 --- /dev/null +++ b/research/complex-t37-independent-seed39/data/SEARCH-TRACE.json @@ -0,0 +1,15 @@ +{ + "offsets_considered": 473, + "offsets_passing_fixed_bin_windows": 1, + "replacement_roles_considered": 5626, + "viable_replacements": 211, + "domain": [ + -1000, + 1000 + ], + "first_success": -528, + "full_bin_width4_roles": 5626, + "stopping_rule": "first offset with any viable replacement; choose first replacement in frozen source order", + "assignment_seed": 39, + "seed_scope": "OS-generated track assignment; no stochastic solver used in this deterministic local search." +} diff --git a/research/complex-t37-independent-seed39/data/SPEC.json b/research/complex-t37-independent-seed39/data/SPEC.json new file mode 100644 index 0000000000..eb28e645d5 --- /dev/null +++ b/research/complex-t37-independent-seed39/data/SPEC.json @@ -0,0 +1,3696 @@ +{ + "schema": "witness-spec/1", + "name": "gauge44-U8-t37-payload1024", + "data": { + "plan_sha256": "f5f8955063c40297ccf0118626d50bbff565ad89fa4fe621022447599f897bb9", + "owners_sha256": "44d689c82ded076433690006e07df1bd0bd9373234d39837a067048555c20cd9", + "owners_content_sha256": "41234f89e8afb1a4cd9adc7d7a46e8d5118b5b4cbd77de711c8cb3b90463260c", + "plan_semantic_sha256": "d15915a9df225722ab066ce406167330dbc3d0c7ca59f38f6abdd662082c6e48" + }, + "dispatch": [ + [ + 0, + 21, + "gauge44" + ], + [ + 0, + 29, + "gauge44" + ], + [ + 0, + 22, + "gauge44" + ], + [ + 0, + 30, + "gauge44" + ], + [ + 1, + 21, + "gauge44" + ], + [ + 1, + 29, + "gauge44" + ], + [ + 0, + 23, + "gauge44" + ], + [ + 0, + 31, + "gauge44" + ], + [ + 1, + 22, + "gauge44" + ], + [ + 1, + 30, + "gauge44" + ], + [ + 2, + 21, + "gauge44" + ], + [ + 2, + 29, + "gauge44" + ], + [ + 0, + 24, + "gauge44" + ], + [ + 0, + 32, + "gauge44" + ], + [ + 1, + 23, + "gauge44" + ], + [ + 1, + 31, + "gauge44" + ], + [ + 2, + 22, + "gauge44" + ], + [ + 2, + 30, + "gauge44" + ], + [ + 3, + 21, + "gauge44" + ], + [ + 3, + 29, + "gauge44" + ], + [ + 0, + 25, + "gauge44" + ], + [ + 0, + 33, + "gauge44" + ], + [ + 1, + 24, + "gauge44" + ], + [ + 1, + 32, + "gauge44" + ], + [ + 2, + 23, + "gauge44" + ], + [ + 2, + 31, + "gauge44" + ], + [ + 0, + 0, + "gauge44" + ], + [ + 0, + 8, + "gauge44" + ], + [ + 3, + 22, + "gauge44" + ], + [ + 0, + 1, + "gauge44" + ], + [ + 3, + 30, + "gauge44" + ], + [ + 0, + 9, + "gauge44" + ], + [ + 4, + 21, + "gauge44" + ], + [ + 1, + 0, + "gauge44" + ], + [ + 1, + 8, + "gauge44" + ], + [ + 4, + 29, + "gauge44" + ], + [ + 0, + 16, + "gauge44" + ], + [ + 0, + 26, + "gauge44" + ], + [ + 0, + 2, + "gauge44" + ], + [ + 0, + 34, + "gauge44" + ], + [ + 0, + 10, + "gauge44" + ], + [ + 0, + 17, + "gauge44" + ], + [ + 1, + 25, + "gauge44" + ], + [ + 1, + 1, + "gauge44" + ], + [ + 1, + 33, + "gauge44" + ], + [ + 1, + 9, + "gauge44" + ], + [ + 2, + 24, + "gauge44" + ], + [ + 1, + 16, + "gauge44" + ], + [ + 2, + 32, + "gauge44" + ], + [ + 2, + 0, + "gauge44" + ], + [ + 2, + 8, + "gauge44" + ], + [ + 3, + 23, + "gauge44" + ], + [ + 0, + 18, + "gauge44" + ], + [ + 3, + 31, + "gauge44" + ], + [ + 0, + 3, + "gauge44" + ], + [ + 4, + 22, + "gauge44" + ], + [ + 0, + 11, + "gauge44" + ], + [ + 1, + 17, + "gauge44" + ], + [ + 4, + 30, + "gauge44" + ], + [ + 1, + 2, + "gauge44" + ], + [ + 5, + 21, + "gauge44" + ], + [ + 1, + 10, + "gauge44" + ], + [ + 5, + 29, + "gauge44" + ], + [ + 2, + 16, + "gauge44" + ], + [ + 2, + 1, + "gauge44" + ], + [ + 0, + 27, + "gauge44" + ], + [ + 2, + 9, + "gauge44" + ], + [ + 0, + 35, + "gauge44" + ], + [ + 0, + 19, + "gauge44" + ], + [ + 1, + 26, + "gauge44" + ], + [ + 3, + 0, + "gauge44" + ], + [ + 3, + 8, + "gauge44" + ], + [ + 1, + 34, + "gauge44" + ], + [ + 1, + 18, + "gauge44" + ], + [ + 2, + 25, + "gauge44" + ], + [ + 0, + 4, + "gauge44" + ], + [ + 2, + 33, + "gauge44" + ], + [ + 0, + 12, + "gauge44" + ], + [ + 2, + 17, + "gauge44" + ], + [ + 3, + 24, + "gauge44" + ], + [ + 1, + 3, + "gauge44" + ], + [ + 3, + 32, + "gauge44" + ], + [ + 1, + 11, + "gauge44" + ], + [ + 4, + 23, + "gauge44" + ], + [ + 3, + 16, + "gauge44" + ], + [ + 4, + 31, + "gauge44" + ], + [ + 2, + 2, + "gauge44" + ], + [ + 2, + 10, + "gauge44" + ], + [ + 5, + 22, + "gauge44" + ], + [ + 0, + 20, + "gauge44" + ], + [ + 5, + 30, + "gauge44" + ], + [ + 3, + 1, + "gauge44" + ], + [ + 0, + 28, + "gauge44" + ], + [ + 3, + 9, + "gauge44" + ], + [ + 1, + 19, + "gauge44" + ], + [ + 0, + 36, + "gauge44" + ], + [ + 4, + 0, + "gauge44" + ], + [ + 6, + 21, + "gauge44" + ], + [ + 4, + 8, + "gauge44" + ], + [ + 6, + 29, + "gauge44" + ], + [ + 2, + 18, + "gauge44" + ], + [ + 0, + 5, + "gauge44" + ], + [ + 1, + 27, + "gauge44" + ], + [ + 0, + 13, + "gauge44" + ], + [ + 1, + 35, + "gauge44" + ], + [ + 3, + 17, + "gauge44" + ], + [ + 2, + 26, + "gauge44" + ], + [ + 1, + 4, + "gauge44" + ], + [ + 1, + 12, + "gauge44" + ], + [ + 2, + 34, + "gauge44" + ], + [ + 4, + 16, + "gauge44" + ], + [ + 3, + 25, + "gauge44" + ], + [ + 2, + 3, + "gauge44" + ], + [ + 3, + 33, + "gauge44" + ], + [ + 2, + 11, + "gauge44" + ], + [ + 3, + 2, + "gauge44" + ], + [ + 4, + 24, + "gauge44" + ], + [ + 3, + 10, + "gauge44" + ], + [ + 4, + 32, + "gauge44" + ], + [ + 1, + 20, + "gauge44" + ], + [ + 5, + 23, + "gauge44" + ], + [ + 4, + 1, + "gauge44" + ], + [ + 5, + 31, + "gauge44" + ], + [ + 4, + 9, + "gauge44" + ], + [ + 2, + 19, + "gauge44" + ], + [ + 6, + 22, + "gauge44" + ], + [ + 5, + 0, + "gauge44" + ], + [ + 6, + 30, + "gauge44" + ], + [ + 5, + 8, + "gauge44" + ], + [ + 1, + 28, + "gauge44" + ], + [ + 3, + 18, + "gauge44" + ], + [ + 0, + 6, + "gauge44" + ], + [ + 1, + 36, + "gauge44" + ], + [ + 0, + 14, + "gauge44" + ], + [ + 7, + 21, + "gauge44" + ], + [ + 4, + 17, + "gauge44" + ], + [ + 7, + 29, + "gauge44" + ], + [ + 1, + 5, + "gauge44" + ], + [ + 1, + 13, + "gauge44" + ], + [ + 2, + 27, + "gauge44" + ], + [ + 5, + 16, + "gauge44" + ], + [ + 2, + 35, + "gauge44" + ], + [ + 2, + 4, + "gauge44" + ], + [ + 3, + 26, + "gauge44" + ], + [ + 2, + 12, + "gauge44" + ], + [ + 3, + 3, + "gauge44" + ], + [ + 3, + 34, + "gauge44" + ], + [ + 3, + 11, + "gauge44" + ], + [ + 4, + 25, + "gauge44" + ], + [ + 4, + 2, + "gauge44" + ], + [ + 4, + 33, + "gauge44" + ], + [ + 4, + 10, + "gauge44" + ], + [ + 2, + 20, + "gauge44" + ], + [ + 5, + 24, + "gauge44" + ], + [ + 5, + 1, + "gauge44" + ], + [ + 5, + 32, + "gauge44" + ], + [ + 5, + 9, + "gauge44" + ], + [ + 6, + 23, + "gauge44" + ], + [ + 3, + 19, + "gauge44" + ], + [ + 6, + 31, + "gauge44" + ], + [ + 0, + 7, + "gauge44" + ], + [ + 0, + 15, + "gauge44" + ], + [ + 7, + 22, + "gauge44" + ], + [ + 4, + 18, + "gauge44" + ], + [ + 7, + 30, + "gauge44" + ], + [ + 6, + 0, + "gauge44" + ], + [ + 2, + 28, + "gauge44" + ], + [ + 6, + 8, + "gauge44" + ], + [ + 5, + 17, + "gauge44" + ], + [ + 2, + 36, + "gauge44" + ], + [ + 1, + 6, + "gauge44" + ], + [ + 8, + 21, + "gauge44" + ], + [ + 1, + 14, + "gauge44" + ], + [ + 8, + 29, + "gauge44" + ], + [ + 2, + 5, + "gauge44" + ], + [ + 2, + 13, + "gauge44" + ], + [ + 3, + 27, + "gauge44" + ], + [ + 6, + 16, + "gauge44" + ], + [ + 3, + 35, + "gauge44" + ], + [ + 3, + 4, + "gauge44" + ], + [ + 4, + 26, + "gauge44" + ], + [ + 3, + 12, + "gauge44" + ], + [ + 4, + 3, + "gauge44" + ], + [ + 4, + 34, + "gauge44" + ], + [ + 4, + 11, + "gauge44" + ], + [ + 5, + 25, + "gauge44" + ], + [ + 5, + 2, + "gauge44" + ], + [ + 5, + 33, + "gauge44" + ], + [ + 5, + 10, + "gauge44" + ], + [ + 3, + 20, + "gauge44" + ], + [ + 6, + 24, + "gauge44" + ], + [ + 6, + 1, + "gauge44" + ], + [ + 6, + 32, + "gauge44" + ], + [ + 6, + 9, + "gauge44" + ], + [ + 7, + 23, + "gauge44" + ], + [ + 4, + 19, + "gauge44" + ], + [ + 7, + 31, + "gauge44" + ], + [ + 1, + 7, + "gauge44" + ], + [ + 1, + 15, + "gauge44" + ], + [ + 8, + 22, + "gauge44" + ], + [ + 5, + 18, + "gauge44" + ], + [ + 8, + 30, + "gauge44" + ], + [ + 7, + 0, + "gauge44" + ], + [ + 3, + 28, + "gauge44" + ], + [ + 7, + 8, + "gauge44" + ], + [ + 6, + 17, + "gauge44" + ], + [ + 3, + 36, + "gauge44" + ], + [ + 2, + 6, + "gauge44" + ], + [ + 4, + 27, + "gauge44" + ], + [ + 2, + 14, + "gauge44" + ], + [ + 4, + 35, + "gauge44" + ], + [ + 3, + 5, + "gauge44" + ], + [ + 3, + 13, + "gauge44" + ], + [ + 5, + 26, + "gauge44" + ], + [ + 7, + 16, + "gauge44" + ], + [ + 5, + 34, + "gauge44" + ], + [ + 4, + 4, + "gauge44" + ], + [ + 6, + 25, + "gauge44" + ], + [ + 4, + 12, + "gauge44" + ], + [ + 5, + 3, + "gauge44" + ], + [ + 6, + 33, + "gauge44" + ], + [ + 5, + 11, + "gauge44" + ], + [ + 7, + 24, + "gauge44" + ], + [ + 6, + 2, + "gauge44" + ], + [ + 7, + 32, + "gauge44" + ], + [ + 6, + 10, + "gauge44" + ], + [ + 4, + 20, + "gauge44" + ], + [ + 8, + 23, + "gauge44" + ], + [ + 7, + 1, + "gauge44" + ], + [ + 8, + 31, + "gauge44" + ], + [ + 7, + 9, + "gauge44" + ], + [ + 4, + 28, + "gauge44" + ], + [ + 5, + 19, + "gauge44" + ], + [ + 4, + 36, + "gauge44" + ], + [ + 2, + 7, + "gauge44" + ], + [ + 2, + 15, + "gauge44" + ], + [ + 5, + 27, + "gauge44" + ], + [ + 6, + 18, + "gauge44" + ], + [ + 5, + 35, + "gauge44" + ], + [ + 8, + 0, + "gauge44" + ], + [ + 6, + 26, + "gauge44" + ], + [ + 8, + 8, + "gauge44" + ], + [ + 7, + 17, + "gauge44" + ], + [ + 6, + 34, + "gauge44" + ], + [ + 3, + 6, + "gauge44" + ], + [ + 7, + 25, + "gauge44" + ], + [ + 3, + 14, + "gauge44" + ], + [ + 7, + 33, + "gauge44" + ], + [ + 4, + 5, + "gauge44" + ], + [ + 4, + 13, + "gauge44" + ], + [ + 8, + 24, + "gauge44" + ], + [ + 8, + 16, + "gauge44" + ], + [ + 8, + 32, + "gauge44" + ], + [ + 5, + 4, + "gauge44" + ], + [ + 5, + 28, + "gauge44" + ], + [ + 5, + 12, + "gauge44" + ], + [ + 6, + 3, + "gauge44" + ], + [ + 5, + 36, + "gauge44" + ], + [ + 6, + 11, + "gauge44" + ], + [ + 6, + 27, + "gauge44" + ], + [ + 7, + 2, + "gauge44" + ], + [ + 6, + 35, + "gauge44" + ], + [ + 7, + 10, + "gauge44" + ], + [ + 5, + 20, + "gauge44" + ], + [ + 7, + 26, + "gauge44" + ], + [ + 8, + 1, + "gauge44" + ], + [ + 7, + 34, + "gauge44" + ], + [ + 8, + 9, + "gauge44" + ], + [ + 8, + 25, + "gauge44" + ], + [ + 6, + 19, + "gauge44" + ], + [ + 8, + 33, + "gauge44" + ], + [ + 3, + 7, + "gauge44" + ], + [ + 3, + 15, + "gauge44" + ], + [ + 6, + 28, + "gauge44" + ], + [ + 7, + 18, + "gauge44" + ], + [ + 6, + 36, + "gauge44" + ], + [ + 4, + 6, + "gauge44" + ], + [ + 7, + 27, + "gauge44" + ], + [ + 4, + 14, + "gauge44" + ], + [ + 8, + 17, + "gauge44" + ], + [ + 7, + 35, + "gauge44" + ], + [ + 5, + 5, + "gauge44" + ], + [ + 8, + 26, + "gauge44" + ], + [ + 5, + 13, + "gauge44" + ], + [ + 8, + 34, + "gauge44" + ], + [ + 6, + 4, + "gauge44" + ], + [ + 6, + 12, + "gauge44" + ], + [ + 7, + 28, + "gauge44" + ], + [ + 7, + 3, + "gauge44" + ], + [ + 7, + 36, + "gauge44" + ], + [ + 7, + 11, + "gauge44" + ], + [ + 8, + 27, + "gauge44" + ], + [ + 8, + 2, + "gauge44" + ], + [ + 8, + 10, + "gauge44" + ], + [ + 8, + 35, + "gauge44" + ], + [ + 6, + 20, + "gauge44" + ], + [ + 8, + 28, + "gauge44" + ], + [ + 4, + 7, + "gauge44" + ], + [ + 8, + 36, + "gauge44" + ], + [ + 4, + 15, + "gauge44" + ], + [ + 7, + 19, + "gauge44" + ], + [ + 5, + 6, + "gauge44" + ], + [ + 5, + 14, + "gauge44" + ], + [ + 8, + 18, + "gauge44" + ], + [ + 6, + 5, + "gauge44" + ], + [ + 6, + 13, + "gauge44" + ], + [ + 7, + 4, + "gauge44" + ], + [ + 7, + 12, + "gauge44" + ], + [ + 8, + 3, + "gauge44" + ], + [ + 8, + 11, + "gauge44" + ], + [ + 5, + 7, + "gauge44" + ], + [ + 5, + 15, + "gauge44" + ], + [ + 7, + 20, + "gauge44" + ], + [ + 6, + 6, + "gauge44" + ], + [ + 6, + 14, + "gauge44" + ], + [ + 8, + 19, + "gauge44" + ], + [ + 7, + 5, + "gauge44" + ], + [ + 7, + 13, + "gauge44" + ], + [ + 8, + 4, + "gauge44" + ], + [ + 8, + 12, + "gauge44" + ], + [ + 6, + 7, + "gauge44" + ], + [ + 6, + 15, + "gauge44" + ], + [ + 7, + 6, + "gauge44" + ], + [ + 7, + 14, + "gauge44" + ], + [ + 8, + 20, + "gauge44" + ], + [ + 8, + 5, + "gauge44" + ], + [ + 8, + 13, + "gauge44" + ], + [ + 7, + 7, + "gauge44" + ], + [ + 7, + 15, + "gauge44" + ], + [ + 8, + 6, + "gauge44" + ], + [ + 8, + 14, + "gauge44" + ], + [ + 8, + 7, + "gauge44" + ], + [ + 8, + 15, + "gauge44" + ] + ], + "call_order": [ + [ + 0, + 21 + ], + [ + 0, + 29 + ], + [ + 0, + 22 + ], + [ + 0, + 30 + ], + [ + 1, + 21 + ], + [ + 1, + 29 + ], + [ + 0, + 23 + ], + [ + 0, + 31 + ], + [ + 1, + 22 + ], + [ + 1, + 30 + ], + [ + 2, + 21 + ], + [ + 2, + 29 + ], + [ + 0, + 24 + ], + [ + 0, + 32 + ], + [ + 1, + 23 + ], + [ + 1, + 31 + ], + [ + 2, + 22 + ], + [ + 2, + 30 + ], + [ + 3, + 21 + ], + [ + 3, + 29 + ], + [ + 0, + 25 + ], + [ + 0, + 33 + ], + [ + 1, + 24 + ], + [ + 1, + 32 + ], + [ + 2, + 23 + ], + [ + 2, + 31 + ], + [ + 0, + 0 + ], + [ + 0, + 8 + ], + [ + 3, + 22 + ], + [ + 0, + 1 + ], + [ + 3, + 30 + ], + [ + 0, + 9 + ], + [ + 4, + 21 + ], + [ + 1, + 0 + ], + [ + 1, + 8 + ], + [ + 4, + 29 + ], + [ + 0, + 16 + ], + [ + 0, + 26 + ], + [ + 0, + 2 + ], + [ + 0, + 34 + ], + [ + 0, + 10 + ], + [ + 0, + 17 + ], + [ + 1, + 25 + ], + [ + 1, + 1 + ], + [ + 1, + 33 + ], + [ + 1, + 9 + ], + [ + 2, + 24 + ], + [ + 1, + 16 + ], + [ + 2, + 32 + ], + [ + 2, + 0 + ], + [ + 2, + 8 + ], + [ + 3, + 23 + ], + [ + 0, + 18 + ], + [ + 3, + 31 + ], + [ + 0, + 3 + ], + [ + 4, + 22 + ], + [ + 0, + 11 + ], + [ + 1, + 17 + ], + [ + 4, + 30 + ], + [ + 1, + 2 + ], + [ + 5, + 21 + ], + [ + 1, + 10 + ], + [ + 5, + 29 + ], + [ + 2, + 16 + ], + [ + 2, + 1 + ], + [ + 0, + 27 + ], + [ + 2, + 9 + ], + [ + 0, + 35 + ], + [ + 0, + 19 + ], + [ + 1, + 26 + ], + [ + 3, + 0 + ], + [ + 3, + 8 + ], + [ + 1, + 34 + ], + [ + 1, + 18 + ], + [ + 2, + 25 + ], + [ + 0, + 4 + ], + [ + 2, + 33 + ], + [ + 0, + 12 + ], + [ + 2, + 17 + ], + [ + 3, + 24 + ], + [ + 1, + 3 + ], + [ + 3, + 32 + ], + [ + 1, + 11 + ], + [ + 4, + 23 + ], + [ + 3, + 16 + ], + [ + 4, + 31 + ], + [ + 2, + 2 + ], + [ + 2, + 10 + ], + [ + 5, + 22 + ], + [ + 0, + 20 + ], + [ + 5, + 30 + ], + [ + 3, + 1 + ], + [ + 0, + 28 + ], + [ + 3, + 9 + ], + [ + 1, + 19 + ], + [ + 0, + 36 + ], + [ + 4, + 0 + ], + [ + 6, + 21 + ], + [ + 4, + 8 + ], + [ + 6, + 29 + ], + [ + 2, + 18 + ], + [ + 0, + 5 + ], + [ + 1, + 27 + ], + [ + 0, + 13 + ], + [ + 1, + 35 + ], + [ + 3, + 17 + ], + [ + 2, + 26 + ], + [ + 1, + 4 + ], + [ + 1, + 12 + ], + [ + 2, + 34 + ], + [ + 4, + 16 + ], + [ + 3, + 25 + ], + [ + 2, + 3 + ], + [ + 3, + 33 + ], + [ + 2, + 11 + ], + [ + 3, + 2 + ], + [ + 4, + 24 + ], + [ + 3, + 10 + ], + [ + 4, + 32 + ], + [ + 1, + 20 + ], + [ + 5, + 23 + ], + [ + 4, + 1 + ], + [ + 5, + 31 + ], + [ + 4, + 9 + ], + [ + 2, + 19 + ], + [ + 6, + 22 + ], + [ + 5, + 0 + ], + [ + 6, + 30 + ], + [ + 5, + 8 + ], + [ + 1, + 28 + ], + [ + 3, + 18 + ], + [ + 0, + 6 + ], + [ + 1, + 36 + ], + [ + 0, + 14 + ], + [ + 7, + 21 + ], + [ + 4, + 17 + ], + [ + 7, + 29 + ], + [ + 1, + 5 + ], + [ + 1, + 13 + ], + [ + 2, + 27 + ], + [ + 5, + 16 + ], + [ + 2, + 35 + ], + [ + 2, + 4 + ], + [ + 3, + 26 + ], + [ + 2, + 12 + ], + [ + 3, + 3 + ], + [ + 3, + 34 + ], + [ + 3, + 11 + ], + [ + 4, + 25 + ], + [ + 4, + 2 + ], + [ + 4, + 33 + ], + [ + 4, + 10 + ], + [ + 2, + 20 + ], + [ + 5, + 24 + ], + [ + 5, + 1 + ], + [ + 5, + 32 + ], + [ + 5, + 9 + ], + [ + 6, + 23 + ], + [ + 3, + 19 + ], + [ + 6, + 31 + ], + [ + 0, + 7 + ], + [ + 0, + 15 + ], + [ + 7, + 22 + ], + [ + 4, + 18 + ], + [ + 7, + 30 + ], + [ + 6, + 0 + ], + [ + 2, + 28 + ], + [ + 6, + 8 + ], + [ + 5, + 17 + ], + [ + 2, + 36 + ], + [ + 1, + 6 + ], + [ + 8, + 21 + ], + [ + 1, + 14 + ], + [ + 8, + 29 + ], + [ + 2, + 5 + ], + [ + 2, + 13 + ], + [ + 3, + 27 + ], + [ + 6, + 16 + ], + [ + 3, + 35 + ], + [ + 3, + 4 + ], + [ + 4, + 26 + ], + [ + 3, + 12 + ], + [ + 4, + 3 + ], + [ + 4, + 34 + ], + [ + 4, + 11 + ], + [ + 5, + 25 + ], + [ + 5, + 2 + ], + [ + 5, + 33 + ], + [ + 5, + 10 + ], + [ + 3, + 20 + ], + [ + 6, + 24 + ], + [ + 6, + 1 + ], + [ + 6, + 32 + ], + [ + 6, + 9 + ], + [ + 7, + 23 + ], + [ + 4, + 19 + ], + [ + 7, + 31 + ], + [ + 1, + 7 + ], + [ + 1, + 15 + ], + [ + 8, + 22 + ], + [ + 5, + 18 + ], + [ + 8, + 30 + ], + [ + 7, + 0 + ], + [ + 3, + 28 + ], + [ + 7, + 8 + ], + [ + 6, + 17 + ], + [ + 3, + 36 + ], + [ + 2, + 6 + ], + [ + 4, + 27 + ], + [ + 2, + 14 + ], + [ + 4, + 35 + ], + [ + 3, + 5 + ], + [ + 3, + 13 + ], + [ + 5, + 26 + ], + [ + 7, + 16 + ], + [ + 5, + 34 + ], + [ + 4, + 4 + ], + [ + 6, + 25 + ], + [ + 4, + 12 + ], + [ + 5, + 3 + ], + [ + 6, + 33 + ], + [ + 5, + 11 + ], + [ + 7, + 24 + ], + [ + 6, + 2 + ], + [ + 7, + 32 + ], + [ + 6, + 10 + ], + [ + 4, + 20 + ], + [ + 8, + 23 + ], + [ + 7, + 1 + ], + [ + 8, + 31 + ], + [ + 7, + 9 + ], + [ + 4, + 28 + ], + [ + 5, + 19 + ], + [ + 4, + 36 + ], + [ + 2, + 7 + ], + [ + 2, + 15 + ], + [ + 5, + 27 + ], + [ + 6, + 18 + ], + [ + 5, + 35 + ], + [ + 8, + 0 + ], + [ + 6, + 26 + ], + [ + 8, + 8 + ], + [ + 7, + 17 + ], + [ + 6, + 34 + ], + [ + 3, + 6 + ], + [ + 7, + 25 + ], + [ + 3, + 14 + ], + [ + 7, + 33 + ], + [ + 4, + 5 + ], + [ + 4, + 13 + ], + [ + 8, + 24 + ], + [ + 8, + 16 + ], + [ + 8, + 32 + ], + [ + 5, + 4 + ], + [ + 5, + 28 + ], + [ + 5, + 12 + ], + [ + 6, + 3 + ], + [ + 5, + 36 + ], + [ + 6, + 11 + ], + [ + 6, + 27 + ], + [ + 7, + 2 + ], + [ + 6, + 35 + ], + [ + 7, + 10 + ], + [ + 5, + 20 + ], + [ + 7, + 26 + ], + [ + 8, + 1 + ], + [ + 7, + 34 + ], + [ + 8, + 9 + ], + [ + 8, + 25 + ], + [ + 6, + 19 + ], + [ + 8, + 33 + ], + [ + 3, + 7 + ], + [ + 3, + 15 + ], + [ + 6, + 28 + ], + [ + 7, + 18 + ], + [ + 6, + 36 + ], + [ + 4, + 6 + ], + [ + 7, + 27 + ], + [ + 4, + 14 + ], + [ + 8, + 17 + ], + [ + 7, + 35 + ], + [ + 5, + 5 + ], + [ + 8, + 26 + ], + [ + 5, + 13 + ], + [ + 8, + 34 + ], + [ + 6, + 4 + ], + [ + 6, + 12 + ], + [ + 7, + 28 + ], + [ + 7, + 3 + ], + [ + 7, + 36 + ], + [ + 7, + 11 + ], + [ + 8, + 27 + ], + [ + 8, + 2 + ], + [ + 8, + 10 + ], + [ + 8, + 35 + ], + [ + 6, + 20 + ], + [ + 8, + 28 + ], + [ + 4, + 7 + ], + [ + 8, + 36 + ], + [ + 4, + 15 + ], + [ + 7, + 19 + ], + [ + 5, + 6 + ], + [ + 5, + 14 + ], + [ + 8, + 18 + ], + [ + 6, + 5 + ], + [ + 6, + 13 + ], + [ + 7, + 4 + ], + [ + 7, + 12 + ], + [ + 8, + 3 + ], + [ + 8, + 11 + ], + [ + 5, + 7 + ], + [ + 5, + 15 + ], + [ + 7, + 20 + ], + [ + 6, + 6 + ], + [ + 6, + 14 + ], + [ + 8, + 19 + ], + [ + 7, + 5 + ], + [ + 7, + 13 + ], + [ + 8, + 4 + ], + [ + 8, + 12 + ], + [ + 6, + 7 + ], + [ + 6, + 15 + ], + [ + 7, + 6 + ], + [ + 7, + 14 + ], + [ + 8, + 20 + ], + [ + 8, + 5 + ], + [ + 8, + 13 + ], + [ + 7, + 7 + ], + [ + 7, + 15 + ], + [ + 8, + 6 + ], + [ + 8, + 14 + ], + [ + 8, + 7 + ], + [ + 8, + 15 + ] + ], + "width_spot_helpers": [ + 270, + 282, + 294, + 306 + ], + "providers": { + "gauge44": { + "inventory": { + "4": 80, + "5": 32, + "7": 54, + "8": 122, + "9": 216 + }, + "native_negative_controls": 25, + "phase_edges": 2949, + "expected_profile": { + "1": 2548, + "2": 338, + "3": 446, + "4": 162, + "5": 72, + "8": 8 + }, + "artifact_semantic_sha256": { + "CANONICAL-WORD.json.gz": "24db880b7dab31e6af4eec8a1aba1bbbae29cd50d9a7b77cf0e9b571b3e5ae7c", + "LOCAL-PROGRAMS.json.gz": "a073d8d6a561cf5c8148d8b29ae2800bbe3978377c016b549edd7523eb3cf7e5", + "LOCAL-CHECKS.json": "7d703fa7fc26edab2d82d16632084d9c4c252789991568fe86a56307a9b11aaf", + "INDEPENDENT-LOCAL-REPLAY.json": "031db822c0db37326ce4f7d3c9d2fa90835b80c96ebb51a03468370052032c77", + "CLIFFORD-RECIPES.json": "4629507dcbdd516457c001ff8f9dbe750d1a0cbfa5cfa3c6be003d45804ba0c5", + "CLIFFORD-REVIEW.json": "65ff1fcadd3d01047ceca7eb2d93bbd08a32d452ccec827c206aa8ff28e2cd2d", + "RESIDUAL-ADAPTERS.json": "55281b345e902c04c38a6e82a44e2c84467cd1b93198c101d5cb00d8f7bf40fb" + }, + "entering": 216, + "entrance": 408, + "width_digest": "039cd71ed914537041e51b1894ce84f3c3af69c5ea7cf684ca1139a387ebeb42", + "program_hashes": { + "backward": "e4e483b764e9a85f84a04425e57d73ecdcc72eb2e4d97a64f17d9da58fa5ace0", + "forward": "83d65a63f51bd1ce7f3dd4e4d3597311e065b4775796cd87aea3e3a62689047c" + }, + "artifacts": { + "LOCAL-CHECKS.json": "a99aef882cd6f7631127fd8a116ad4bbaed60e3822455d4f846ae0f45b5af575", + "CLIFFORD-RECIPES.json": "4629507dcbdd516457c001ff8f9dbe750d1a0cbfa5cfa3c6be003d45804ba0c5", + "RESIDUAL-ADAPTERS.json": "8b06181f69832da05e3bffab0737598013e20de6f1f48aad43617fbfe62df615" + }, + "complete_contract": { + "local": { + "backward": { + "events": 24415, + "macros": 19213, + "real_component_primitives": 193354, + "prefix_l1": "48299247708521178587951/16", + "prefix_bits": 72, + "coefficient_work_primitive_count": 95513, + "all_exact_columns": 728, + "dirty_helper_columns": 504, + "all_dirty_helper_columns_restored": true, + "private_centres_and_coefficient_work_cleared": true, + "pre_wrappers": 288, + "post_wrappers": 288, + "endpoint_evidence": "Hash-bound fresh INDEPENDENT-LOCAL-REPLAY.json" + }, + "forward": { + "events": 24415, + "macros": 19213, + "real_component_primitives": 193306, + "prefix_l1": "6812058044968180837/256", + "prefix_bits": 55, + "coefficient_work_primitive_count": 95481, + "all_exact_columns": 728, + "dirty_helper_columns": 504, + "all_dirty_helper_columns_restored": true, + "private_centres_and_coefficient_work_cleared": true, + "pre_wrappers": 288, + "post_wrappers": 288, + "endpoint_evidence": "Hash-bound fresh INDEPENDENT-LOCAL-REPLAY.json" + } + }, + "helpers": 504, + "centres": 8, + "v": 112, + "h": 9, + "n": 728, + "entering_helpers": 216, + "entrance_rank": 408, + "terminal_codimension": 350, + "hyperplane_ended_helpers": 126, + "cold_hyperplane_ended_helpers": 72, + "width_inventory": { + "4": 80, + "5": 32, + "7": 54, + "8": 122, + "9": 216 + }, + "widths": [ + 9, + 4, + 9, + 4, + 9, + 4, + 9, + 9, + 9, + 9, + 4, + 9, + 9, + 9, + 9, + 9, + 9, + 4, + 9, + 4, + 9, + 4, + 9, + 9, + 9, + 9, + 4, + 9, + 9, + 9, + 9, + 9, + 9, + 4, + 9, + 4, + 9, + 4, + 9, + 9, + 9, + 9, + 4, + 9, + 9, + 9, + 9, + 9, + 9, + 4, + 9, + 4, + 9, + 4, + 9, + 9, + 9, + 9, + 4, + 9, + 9, + 9, + 9, + 9, + 9, + 4, + 9, + 4, + 9, + 4, + 9, + 9, + 9, + 9, + 4, + 9, + 9, + 9, + 9, + 9, + 9, + 4, + 9, + 4, + 9, + 4, + 9, + 8, + 9, + 9, + 4, + 9, + 9, + 9, + 9, + 9, + 9, + 4, + 9, + 4, + 9, + 4, + 9, + 8, + 9, + 9, + 4, + 9, + 9, + 9, + 9, + 9, + 9, + 4, + 9, + 4, + 9, + 4, + 9, + 9, + 9, + 9, + 4, + 9, + 9, + 9, + 9, + 9, + 9, + 4, + 9, + 4, + 9, + 4, + 9, + 9, + 9, + 9, + 4, + 9, + 9, + 9, + 9, + 9, + 9, + 4, + 9, + 4, + 9, + 4, + 9, + 9, + 9, + 9, + 4, + 9, + 9, + 9, + 9, + 9, + 9, + 4, + 9, + 4, + 9, + 4, + 9, + 9, + 9, + 9, + 4, + 9, + 9, + 9, + 9, + 9, + 9, + 4, + 9, + 4, + 9, + 4, + 9, + 9, + 9, + 9, + 4, + 9, + 9, + 9, + 9, + 9, + 9, + 4, + 9, + 4, + 9, + 4, + 9, + 9, + 9, + 9, + 4, + 9, + 9, + 9, + 9, + 9, + 9, + 4, + 9, + 4, + 9, + 4, + 9, + 9, + 9, + 9, + 4, + 9, + 9, + 9, + 9, + 9, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 7, + 7, + 7, + 7, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 7, + 7, + 8, + 8, + 8, + 8, + 8, + 8, + 9, + 9, + 9, + 9, + 9, + 9, + 7, + 7, + 8, + 8, + 8, + 8, + 9, + 9, + 9, + 9, + 9, + 9, + 8, + 8, + 8, + 9, + 8, + 8, + 9, + 9, + 9, + 9, + 8, + 9, + 7, + 7, + 8, + 9, + 8, + 8, + 9, + 9, + 9, + 9, + 8, + 9, + 8, + 8, + 8, + 8, + 8, + 8, + 8, + 8, + 8, + 8, + 9, + 7, + 7, + 7, + 8, + 8, + 8, + 8, + 8, + 8, + 8, + 8, + 9, + 7, + 8, + 8, + 9, + 9, + 9, + 9, + 8, + 8, + 8, + 8, + 7, + 7, + 7, + 7, + 9, + 8, + 9, + 8, + 8, + 8, + 8, + 8, + 7, + 7, + 7, + 7, + 9, + 8, + 9, + 8, + 8, + 8, + 8, + 8, + 7, + 7, + 7, + 7, + 8, + 8, + 8, + 8, + 8, + 8, + 8, + 8, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 8, + 8, + 8, + 5, + 8, + 5, + 5, + 5, + 8, + 8, + 8, + 4, + 8, + 4, + 4, + 4, + 8, + 8, + 8, + 4, + 8, + 4, + 4, + 4, + 8, + 8, + 8, + 4, + 8, + 4, + 4, + 4, + 8, + 8, + 8, + 4, + 8, + 4, + 4, + 4, + 8, + 8, + 8, + 4, + 8, + 4, + 4, + 4, + 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 + ], + "local_adapters": 381040, + "local_primitive_bound": 9882019582794, + "compiler": 25934336, + "children": 3574, + "paid_profile": { + "1": 2548, + "2": 338, + "3": 446, + "4": 162, + "5": 72, + "8": 8 + }, + "program_hashes": { + "backward": "e4e483b764e9a85f84a04425e57d73ecdcc72eb2e4d97a64f17d9da58fa5ace0", + "forward": "83d65a63f51bd1ce7f3dd4e4d3597311e065b4775796cd87aea3e3a62689047c" + }, + "semantic_artifact_sha256": { + "CANONICAL-WORD.json.gz": "24db880b7dab31e6af4eec8a1aba1bbbae29cd50d9a7b77cf0e9b571b3e5ae7c", + "LOCAL-PROGRAMS.json.gz": "a073d8d6a561cf5c8148d8b29ae2800bbe3978377c016b549edd7523eb3cf7e5", + "LOCAL-CHECKS.json": "7d703fa7fc26edab2d82d16632084d9c4c252789991568fe86a56307a9b11aaf", + "INDEPENDENT-LOCAL-REPLAY.json": "031db822c0db37326ce4f7d3c9d2fa90835b80c96ebb51a03468370052032c77", + "CLIFFORD-RECIPES.json": "4629507dcbdd516457c001ff8f9dbe750d1a0cbfa5cfa3c6be003d45804ba0c5", + "CLIFFORD-REVIEW.json": "65ff1fcadd3d01047ceca7eb2d93bbd08a32d452ccec827c206aa8ff28e2cd2d", + "RESIDUAL-ADAPTERS.json": "55281b345e902c04c38a6e82a44e2c84467cd1b93198c101d5cb00d8f7bf40fb" + } + }, + "semantic_phase_sha256": "65ff1fcadd3d01047ceca7eb2d93bbd08a32d452ccec827c206aa8ff28e2cd2d", + "expected_local": { + "forward": { + "events": 24415, + "macros": 19213, + "real_component_primitives": 193306, + "prefix_l1": "6812058044968180837/256", + "coefficient_work_primitive_count": 95481 + }, + "backward": { + "events": 24415, + "macros": 19213, + "real_component_primitives": 193354, + "prefix_l1": "48299247708521178587951/16", + "coefficient_work_primitive_count": 95513 + } + }, + "wrappers": 288 + } + }, + "expected": { + "gain_baseline_kappa": "0.001636241501576388", + "hosted_residuals": 167832, + "rank_mass": 2408256, + "actual_73column_sigmas": 9632, + "cross_replica_helper_roles": 128904, + "idle_remainders": 11092, + "idle_remainder_profile": { + "1": 6, + "48": 11086 + }, + "global_profile": { + "1": 848490, + "2": 112554, + "3": 148518, + "4": 53946, + "5": 23976, + "8": 2664, + "48": 11086 + }, + "live": 33152, + "physical": 33666, + "conservative_kappa_decimal": "0.00166196054483158", + "kappa_decimal": "0.001661960547713947", + "complex_lower": "416181814685169713943/250000000000000000000000", + "conservative_complex_lower": "1664727255848707292019/1000000000000000000000000", + "kappa": "1661960547713947/1000000000000000000", + "assembly_controls_rejected": 69, + "provider_counts": { + "gauge44": 333 + }, + "mutations_rejected": 15 + }, + "pivot_swap": { + "recipe": "vendor/pr870/construction/layers_np/PIVOT-SWAP-NP.json", + "sha256": "d49b8d316da1cbdaf995dd0e8314d3c67cc9cd4d5902e9d85ccb907be645bef5" + } +} diff --git a/research/complex-t37-independent-seed39/data/T5-OWNERS.json.gz b/research/complex-t37-independent-seed39/data/T5-OWNERS.json.gz new file mode 100644 index 0000000000..6ab157ac88 Binary files /dev/null and b/research/complex-t37-independent-seed39/data/T5-OWNERS.json.gz differ diff --git a/research/complex-t37-independent-seed39/independent_check.py b/research/complex-t37-independent-seed39/independent_check.py new file mode 100644 index 0000000000..b71401334e --- /dev/null +++ b/research/complex-t37-independent-seed39/independent_check.py @@ -0,0 +1,376 @@ +#!/usr/bin/env python3 +# SPDX-License-Identifier: Apache-2.0 +# Predecessor implementation prepared for haoyan and icekylinx with OpenAI Codex assistance. +# T37 adaptation by Tekalign (@tekuuu) with substantial OpenAI Codex assistance. +"""Independent variable-replica event, whole-helper, chart and finite-reserve audit. + +Inputs are read-only. No owner constructor or controller auditor is imported. +--word is the canonical local supplier JSON.gz, with frame IDs and a native +INDEPENDENT-LOCAL-REPLAY.json alongside it (override with --local-replay). +--baseline-parent is the original eight-replica GLOBAL-TEMPLATE.json.gz. +Parameterized from Hao Yan's PR858 checker; the original source is vendored. +The explicit --order input supplies the T37 interleaving. It is checked as a +stage/replica bijection, against every role time, and by exact per-replica +source projections. Smaller inherited witnesses may derive order from roles. +--payload declares the charged complex prefix allowance (default 1024); the +inherited T5 witness is checked separately with --payload 512. +Its sibling CANONICAL-WORD.json.gz supplies ports; DATA-PHASES.json defaults +to ../work/complex-nine-native/DATA-PHASES.json (override with --phases). +The PR741 and PR799/X4 suppliers share this width/owner interface. Their +local paid profiles and prefix exponents are read and recounted from the +provided canonical word and hash-bound native replay, never fixed to PR741. +--out names a JSON receipt. Checks remain enabled under python -O. +""" +import argparse +from collections import Counter, defaultdict +import gzip +import hashlib +import json +from pathlib import Path + +V, H, M, T, R = 112, 9, 73, 37, 504 +EXPECTED_IDLE = None + + +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 filehash(path): + return hashlib.sha256(path.read_bytes()).hexdigest() + + +def basis(vectors): + pivots = {} + for x in vectors: + require(type(x) is int and 0 <= x < 1 << H, 'invalid local frame vector') + while x: + bit = x.bit_length() - 1 + if bit in pivots: + x ^= pivots[bit] + else: + pivots[bit] = x + break + for bit in sorted(pivots): + for upper in pivots: + if upper > bit and pivots[upper] >> bit & 1: + pivots[upper] ^= pivots[bit] + return tuple(pivots[bit] for bit in sorted(pivots, reverse=True)) + + +def local_inventory(word, replay): + require((word['v'], word['h'], word['R']) == (V, H, R), 'local supplier dimensions') + frames = [basis(frame) for frame in word['frames']] + n = 2 * V + R + require(len(word['start']) == len(word['final']) == n, 'local frame vector lengths') + current = [frames[f] for f in word['start']] + paid = Counter() + + def climb(register, frame): + require(basis(current[register] + frame) == frame, 'nonmonotone local frame') + jump = len(frame) - len(current[register]) + if jump: + paid[jump] += 1 + current[register] = frame + + require(not word['target_levels'], 'this audit requires the current zero-level centre interface') + for section in ('A', 'B', 'tail'): + if section == 'B': + require(all(current[t] == () for t in range(V, 2 * V)), 'target centre level') + for q, frame_id in zip(word['centers'], word['center_frames']): + require(current[q] == frames[frame_id], 'centre carrier frame') + paid[len(frames[frame_id])] += 1 + for gate in word[section]: + registers = gate[1:3] if gate[0] == 'add' else gate[1:2] + require(gate[0] in ('add', 'scale'), 'unknown scalar gate') + for register in registers: + climb(register, frames[gate[-1]]) + for register, frame_id in enumerate(word['final']): + climb(register, frames[frame_id]) + require(dict(paid) == {int(r): count for r, count in word['local_profile'].items()}, 'local paid-profile recount') + for orientation in ('forward', 'backward'): + require(dict(paid) == {int(r): count for r, count in replay['paid_profiles'][orientation].items()}, 'local replay profile binding') + widths = [len(frames[word['final'][q]]) - len(frames[word['start'][q]]) for q in range(2 * V, n)] + require(Counter(widths) == {4: 80, 5: 32, 7: 54, 8: 122, 9: 216}, 'current supplier width inventory') + return widths, paid + + +def checked_order(order): + require(isinstance(order, list) and len(order) == H*T, 'declared order length') + require(all(isinstance(item, (list, tuple)) and len(item) == 2 and + all(type(x) is int for x in item) for item in order), 'declared order coordinates') + result = [tuple(item) for item in order] + require(set(result) == {(s, r) for s in range(H) for r in range(T)}, 'declared order bijection') + require(all([s for s, r in result if r == replica] == list(range(H)) + for replica in range(T)), 'declared per-replica stage order') + return result + + +def bind_order(observed, declared): + result = checked_order(declared) + require(result == observed, 'declared order/role-time binding') + return result + + +def make_context(parent, phases, ports, word, replay, roles, order=None, payload=1024): + widths, paid = local_inventory(word, replay) + require(len(parent['calls']) == 72 and {(c['stage'], c['replica']) for c in parent['calls']} == {(s, r) for s in range(9) for r in range(8)}, 'original eight-replica baseline calls') + require(len(roles) == 9 * T * R, 'complete helper role count') + address = {} + for role in roles: + key = (role['stage'], role['replica']) + time = role['time'] + require(time not in address or address[time] == key, 'inconsistent invocation time address') + address[time] = key + require(set(address) == set(range(9 * T)), 'contiguous invocation times') + observed = [address[t] for t in range(9 * T)] + require(set(observed) == {(s, r) for s in range(9) for r in range(T)}, 'stage/replica inventory') + explicit_order = order is not None + order = checked_order(observed) if order is None else bind_order(observed, order) + require(type(payload) is int and payload > 0, 'positive complex prefix payload') + # Arbitrary interleaving: the exact per-replica projection is checked below. + rank = {child['child']: child['rank'] for child in parent['idle_children']} + source = parent['execution_schedule'] + blocks, stage = {}, None + for index, event in enumerate(source): + if event['kind'] in ('bank_padding_cover_sweep', 'translate_every_live_family'): + continue + if event['kind'] == 'local_cover_sweep': + stage = event['stage'] + blocks[stage] = [] + require(stage is not None, 'source event before first invocation') + blocks[stage].append((index, event)) + require(set(blocks) == set(range(9)), 'source stage inventory') + events = [(index, event, replica, time) for time, (stage, replica) in enumerate(order) for index, event in blocks[stage]] + projections = defaultdict(list) + for index, event, replica, time in events: + projections[replica].append(index) + require(set(projections) == set(range(T)) and all(p == list(range(30)) for p in projections.values()), 'per-replica source-event projection') + stage_pair = {e['stage']: e['pair'] for e in parent['recipe'] if e['kind'] == 'local'} + last, windows, callpos, child_pair, side = {}, {}, {}, {}, {} + bridges = 0 + for position, (_, event, replica, _) in enumerate(events): + kind = event['kind'] + if kind == 'local_cover_sweep': + stage = event['stage'] + callpos[stage, replica] = position + last[replica, stage_pair[stage]] = position + elif kind == 'bridge': + last[replica, event['src']] = last[replica, event['dst']] = position + bridges += 1 + elif kind == 'idle_cover_sweep': + for sd, child in enumerate(event['child_indices']): + if child in rank: + windows[replica, child] = (last.get((replica, event['pair']), -1), position) + child_pair[child], side[child] = event['pair'], sd + require(len(windows) == T * len(rank), 'actual window inventory') + require(len(ports) == V, 'port count') + bases = [] + for q in ports: + zero = next(i for i in range(H) if not (q >> i & 1)) + correction = q ^ (1 << zero) + axes = list(range(H)) + axes[0], axes[zero] = axes[zero], axes[0] + frame = [(1 << i) ^ (correction if correction >> i & 1 else 0) for i in axes] + [1 << i for i in range(H, M)] + require(all((x & y).bit_count() % 2 == int(i == j) for i, x in enumerate(frame) for j, y in enumerate(frame)), 'nonorthogonal owner basis') + bases.append(frame) + return dict(widths=widths, paid=paid, order=order, at={key:t for t,key in enumerate(order)}, rank=rank, + windows=windows, callpos=callpos, child_pair=child_pair, side=side, stage_pair=stage_pair, + bases=bases, phases=phases, bridges=bridges, event_count=len(events), replay=replay, + explicit_order=explicit_order, payload=payload) + + +def check_roles(context, roles): + c = context + live, physical = T * 8 * V, T * 8 * V + 8 + R + 2 + require(len(roles) == 9 * T * R, 'complete helper role count') + helpers, families, used = defaultdict(set), defaultdict(set), defaultdict(set) + charts, chart_cache = set(), {} + for z in roles: + s, r, helper = z['stage'], z['replica'], z['helper'] + owner, child, port = z['owner_replica'], z['child'], z['port'] + offset, width, family = z['offset'], z['width'], z['family'] + call = (s, r) + require(call in c['at'] and 0 <= helper < R and 0 <= owner < T and 0 <= port < V, 'role coordinates') + require(z['time'] == c['at'][call], 'role invocation time') + require(width == c['widths'][helper], 'whole-helper residual width') + require(0 <= family < live, 'private-namespace collision') + require(child in c['rank'], 'unknown idle child') + require(z['copy'] == V * owner + port and family == owner * 896 + (2 * c['child_pair'][child] + c['side'][child]) * V + port, 'physical family identity') + lo, hi = c['windows'][owner, child] + require(lo < c['callpos'][call] < hi, 'strict bridge-aware idle window') + require(family // 224 != r * 4 + c['stage_pair'][s], 'helper aliases active data pair') + require(helper not in helpers[call] and family not in families[call], 'duplicate helper or family within whole invocation') + helpers[call].add(helper) + families[call].add(family) + cells = set(range(offset, offset + width)) + bin_key = (owner, child, port) + require(offset >= 0 and offset + width <= c['rank'][child] and not used[bin_key] & cells, 'overlapping or out-of-capacity slice') + used[bin_key].update(cells) + chart_key = (port, child, offset, width) + if chart_key not in chart_cache: + frame = c['bases'][port] + pending = list(map(int, c['phases']['recipes'][port]['idle_children'][child]['orthogonal_axes'])) + require(len(pending) == c['rank'][child], 'phase child rank') + occupied = [frame.index(x) for x in pending[offset:offset + width]] + spectators = [i for i in range(M) if i not in occupied][:H - width] + permutation = occupied + spectators + [i for i in range(M) if i not in occupied and i not in spectators] + require(len(occupied) == width and len(set(occupied + spectators)) == H and sorted(permutation) == list(range(M)), 'residual/spectator permutation') + require([frame[i] for i in permutation[:width]] == pending[offset:offset + width], 'pending-axis binding') + chart_cache[chart_key] = tuple(frame[i] for i in permutation) + charts.add(chart_cache[chart_key]) + require(set(helpers) == set(c['order']) and all(h == set(range(R)) for h in helpers.values()), 'complete per-call helper inventory') + idle = Counter() + for owner, child in c['windows']: + for port in range(V): + cells = used[owner, child, port] + require(cells == set(range(len(cells))), 'gap in pending prefix') + left = c['rank'][child] - len(cells) + if left: + idle[left] += 1 + require(dict(idle) == EXPECTED_IDLE, 'nominated idle profile') + profile = Counter({rank: 9 * T * count for rank, count in c['paid'].items()}) + profile.update(idle) + mass = sum(rank * count for rank, count in profile.items()) + require(M * live - mass == 320*T, 'replica-scaled rank deficit') + require(c['bridges'] == 9*T, 'actual bridge count') + localbits = max(x['prefix_bits_upper'] for x in c['replay']['local'].values()) + prefix = localbits + (M + 1) // 2 + len(c['order']) + c['bridges'] + 4 + group = 2 ** (36 * 36) + for i in range(1, 37): + group *= 2 ** (2 * i) - 1 + stock = group * physical + row = 2 * stock.bit_length() + 9909 + 252 + 2 * c['payload'] + require(prefix < c['payload'], 'prefix reserve') + require(row < 20161 and M * M > 2 * max(profile) ** 2, 'row or halving reserve') + return dict(status='PASS_INDEPENDENT_VARIABLE_T_LITERAL_WINDOWS_CHARTS_PREFIX_ROW', roles=len(roles), calls=len(c['order']), + source_events_per_replica=30, expanded_replica_events=c['event_count'], bridge_events=c['bridges'], + literal_windows=len(c['windows']), checked_whole_helper_widths=len(roles), checked_busy_family_windows=len(roles), + orthogonal_port_bases=len(c['bases']), actual_73_axis_charts=len(charts), checked_slice_prefixes=len(c['windows']) * V, + local_profile=dict(sorted(c['paid'].items())), width_inventory=dict(sorted(Counter(c['widths']).items())), + idle=dict(sorted(idle.items())), profile=dict(sorted(profile.items())), live=live, physical=physical, + rank_mass=mass, deficit=320*T, namespace={'data':[0,live], 'centres':[live,live+8], 'tableau':[live+8,live+8+R], 'coefficient':[live+8+R,physical]}, + local_prefix_bits=localbits, local_prefix_from_native_receipt=True, local_profile_recounted=True, + prefix_formula=dict(local_scalar=localbits, input_l2=(M + 1) // 2, invocations=len(c['order']), bridges=c['bridges'], margin=4), + prefix_bits=prefix, charged_prefix_bits=c['payload'], physical_stock_bits=stock.bit_length(), + explicit_order_input=c['explicit_order'], declared_order_bijection=True, + declared_order_role_times_bound=True, per_replica_stage_order=True, + physical_row_coefficient=row, row_limit=20161, + scope='Finite role/window/chart and inherited prefix/row obligations. Requires separately admitted local supplier and emitted controller, complete finite invoice, exact moments and outer assembly; no all-size theorem is asserted.') + + +def controls(context, roles): + candidates = [] + first = roles[0] + bad = dict(first, family=896*T) + candidates.append(('private_namespace_collision', [bad] + roles[1:], 'private-namespace collision')) + index = next(i for i, z in enumerate(roles) if z['replica'] >= 1) + bad = dict(roles[index], replica=roles[index]['replica'] - 1) + candidates.append(('copy_replica_alias', [bad] + roles[:index] + roles[index+1:], 'role invocation time')) + candidates.append(('missing_whole_helper', roles[1:], 'complete helper role count')) + split = dict(first, width=first['width'] - 1) + fragment = dict(first, offset=first['offset'] + first['width'] - 1, width=1) + candidates.append(('split_whole_helper', [split, fragment] + roles[1:], 'complete helper role count')) + candidates.append(('truncated_helper_width', [split] + roles[1:], 'whole-helper residual width')) + # Keep the family and chart valid, but move one complete role past its + # actual idle event. Freeze the original invocation order for controls. + crossing = None + for index, z in enumerate(roles): + lo, hi = context['windows'][z['owner_replica'], z['child']] + later = next((key for key in context['order'] if context['callpos'][key] >= hi), None) + if later is not None: + crossing = [dict(z, stage=later[0], replica=later[1], time=context['at'][later])] + roles[:index] + roles[index+1:] + break + require(crossing is not None, 'no idle-boundary control could be constructed') + candidates.append(('cross_idle_boundary', crossing, 'strict bridge-aware idle window')) + rejected = [] + for name, bad, expected in candidates: + try: + check_roles(context, bad) + except ValueError as exc: + require(str(exc) == expected, 'control rejected at unexpected predicate: ' + name) + rejected.append(dict(name=name, reason=str(exc))) + else: + raise ValueError('accepted negative control: ' + name) + return rejected + + +def order_controls(context): + original = context['order'] + repeated = original.copy() + repeated[1] = repeated[0] + reversed_stage = original.copy() + first = next(i for i, (s, r) in enumerate(original) if s == 0) + second = original.index((1, original[first][1])) + reversed_stage[first], reversed_stage[second] = reversed_stage[second], reversed_stage[first] + candidates = [ + ('duplicate_order_call', repeated, 'declared order bijection'), + ('reversed_replica_stages', reversed_stage, 'declared per-replica stage order')] + if T > 1: + mismatch = original.copy() + # Adjacent calls from different replicas can be swapped without + # changing stage order, but then disagree with the literal role times. + adjacent = next(i for i in range(len(original)-1) if original[i][1] != original[i+1][1]) + mismatch[adjacent], mismatch[adjacent+1] = mismatch[adjacent+1], mismatch[adjacent] + candidates.append(('order_role_time_mismatch', mismatch, 'declared order/role-time binding')) + rejected = [] + for name, altered, expected in candidates: + try: + bind_order(original, altered) + except ValueError as exc: + require(str(exc) == expected, 'order control rejected at unexpected predicate: '+name) + rejected.append(dict(name=name, reason=str(exc))) + else: + raise ValueError('accepted order control: '+name) + return rejected + + +def main(): + global T, EXPECTED_IDLE + parser = argparse.ArgumentParser(description=__doc__) + parser.add_argument('--baseline-parent', type=Path, required=True) + parser.add_argument('--owners', type=Path, required=True) + parser.add_argument('--order', type=Path, help='Explicit invocation order, required for T37') + parser.add_argument('--payload', type=int, default=1024, help='Charged complex prefix allowance') + parser.add_argument('--word', type=Path, required=True) + parser.add_argument('--phases', type=Path) + parser.add_argument('--local-replay', type=Path) + parser.add_argument('--out', type=Path, required=True) + parser.add_argument("--replicas", type=int, required=True) + parser.add_argument("--expected-idle", required=True) + args = parser.parse_args() + T = args.replicas + require(1 <= T <= 37, "replica range") + require(T != 37 or args.order is not None, 'T37 requires explicit order input') + EXPECTED_IDLE = {int(k): v for k,v in json.loads(args.expected_idle).items()} + phases_path = args.phases or args.baseline_parent.parent.parent / 'work/complex-nine-native/DATA-PHASES.json' + canonical_path = args.baseline_parent.parent / 'CANONICAL-WORD.json.gz' + replay_path = args.local_replay or args.word.parent / 'INDEPENDENT-LOCAL-REPLAY.json' + parent, phases, canonical, word, replay, roles = map(read, (args.baseline_parent, phases_path, canonical_path, args.word, replay_path, args.owners)) + require(replay['status'] == 'PASS_INDEPENDENT_LOCAL_SCALAR_FRAME_AND_WRAPPER_REPLAY', 'local replay status') + require(replay['canonical_word_sha256'] == filehash(args.word), 'local word/replay hash binding') + require(set(replay['local']) == {'forward', 'backward'}, 'both native prefix orientations') + require(word['ports'] == canonical['ports'], 'local/controller port interface') + require(len(word['center_frames']) == len(canonical['center_frames']) == 8, 'eight centre interfaces') + require([basis(word['frames'][f]) for f in word['center_frames']] == [basis(canonical['frames'][f]) for f in canonical['center_frames']], 'ordered centre-frame interface') + context = make_context(parent, phases, canonical['ports'], word, replay, roles, + order=read(args.order) if args.order is not None else None, + payload=args.payload) + receipt = check_roles(context, roles) + receipt['controls_rejected'] = controls(context, roles) + receipt['order_controls_rejected'] = order_controls(context) + receipt['input_sha256'] = {str(path): filehash(path) for path in (args.baseline_parent, phases_path, canonical_path, args.word, replay_path, args.owners)} + if args.order is not None: + receipt['input_sha256'][str(args.order)] = filehash(args.order) + args.out.write_text(json.dumps(receipt, indent=2) + '\n', encoding='utf-8') + print(receipt['status'], 'roles=' + str(receipt['roles']), 'controls=' + str(len(receipt['controls_rejected']))) + + +if __name__ == '__main__': + main() diff --git a/research/complex-t37-independent-seed39/owner_controls.py b/research/complex-t37-independent-seed39/owner_controls.py new file mode 100644 index 0000000000..e786de402d --- /dev/null +++ b/research/complex-t37-independent-seed39/owner_controls.py @@ -0,0 +1,137 @@ +# SPDX-License-Identifier: Apache-2.0 +# Prepared by Tekalign (@tekuuu) with substantial OpenAI Codex assistance. +"""Independently reject omitted T37/T21/T16 edits and both missing delays. + +Source maps are reconstructed from pinned predecessor code. Each source is +first accepted using independently expanded events, actual windows, charts +and its original 512-bit payload. T37 uses its explicit order and the paid +1024-bit payload. Geometry controls must fail before profile comparison. +""" +import argparse +from pathlib import Path +from common import HERE, ROOT, read, require, dump, load, identity, sha +from build_owners import source_maps, merged_order, move + +GEOMETRY_REJECTIONS = { + 'strict bridge-aware idle window', + 'duplicate helper or family within whole invocation', + 'overlapping or out-of-capacity slice', + 'gap in pending prefix', +} + + +def omitted_edits(audit, context, roles, edits, plan): + bykey = {(r['stage'], r['replica'], r['helper']): i for i, r in enumerate(roles)} + rejected = [] + for edit in edits: + index = bykey[tuple(edit['role'])] + replacement = dict(roles[index]) + move(replacement, edit['before'], plan) + bad = roles.copy() + bad[index] = replacement + try: + audit.check_roles(context, bad) + except ValueError as error: + reason = str(error) + require(reason in GEOMETRY_REJECTIONS, + 'Omitted edit rejected without a geometric obstruction: '+reason) + rejected.append(dict(role=edit['role'], reason=reason)) + else: + raise ValueError('Accepted omitted edit: '+str(edit['role'])) + return rejected + + +def omitted_delay(audit, inputs, roles, order, payload): + at = {tuple(key): time for time, key in enumerate(order)} + bad = [dict(role, time=at[role['stage'], role['replica']]) for role in roles] + # Recompute event windows from the alternative schedule, rather than + # retaining good-schedule windows or rejecting on a stale time field. + other = audit.make_context(*inputs, bad, order=order, payload=payload) + try: + audit.check_roles(other, bad) + except ValueError as error: + require(str(error) == 'strict bridge-aware idle window', 'Delay control must cross an actual idle boundary') + return str(error) + raise ValueError('Accepted omitted interleaving delay') + + +def main(): + parser = argparse.ArgumentParser(description=__doc__) + parser.add_argument('--base', type=Path, required=True) + parser.add_argument('--local', type=Path, required=True) + parser.add_argument('--owners', type=Path, required=True) + parser.add_argument('--order', type=Path) + parser.add_argument('--out', type=Path, required=True) + args = parser.parse_args() + audit = load(HERE/'independent_check.py', 'independent_t37_owner_controls') + parent = read(args.base/'split-centres/GLOBAL-TEMPLATE.json.gz') + phases = read(args.base/'work/complex-nine-native/DATA-PHASES.json') + ports = read(args.base/'split-centres/CANONICAL-WORD.json.gz')['ports'] + word = read(args.local/'CANONICAL-WORD.json.gz') + replay = read(args.local/'INDEPENDENT-LOCAL-REPLAY.json') + inputs = parent, phases, ports, word, replay + source = ROOT/'research/gauge44-frames-x/data' + plan, roles21, order21, roles16, order16, details21 = source_maps(source/'PLAN.json', source/'OWNERS.json.gz') + roles = read(args.owners) + order_path = args.order or args.owners.with_name('ORDER.json') + order = read(order_path) + # This assertion does not use the constructor's suborder-check function. + require([key for key in order if key[1] < 21] == order21 and + [[s, r-21] for s, r in order if r >= 21] == order16, + 'Independent complete source-subsequence preservation') + audit.T, audit.EXPECTED_IDLE = 37, {48: 11086, 1: 6} + context = audit.make_context(*inputs, roles, order=order, payload=1024) + result37 = audit.check_roles(context, roles) + try: + audit.check_roles(dict(context, payload=512), roles) + except ValueError as error: + require(str(error) == 'prefix reserve', 'Underpaid payload must fail the prefix bound') + payload_rejection = str(error) + else: + raise ValueError('Accepted T37 with the old 512-bit payload') + edits37 = read(HERE/'data/EDITS.json') + rejected37 = omitted_edits(audit, context, roles, edits37, plan) + require(len(rejected37) == 10, 'Ten T37 omitted-edit rejections') + delay37 = omitted_delay(audit, inputs, roles, merged_order(order21, order16, shift=0), 1024) + + audit.T, audit.EXPECTED_IDLE = 21, {48: 6292, 3: 1, 1: 3} + context21 = audit.make_context(*inputs, roles21, order=order21, payload=512) + result21 = audit.check_roles(context21, roles21) + edits21 = [] + for old in read(HERE/'vendor/pr890/data/EDITS.json'): + time, helper = old['role'] + edits21.append(dict(role=[*order21[time], helper], before=old['before'])) + rejected21 = omitted_edits(audit, context21, roles21, edits21, plan) + require(len(rejected21) == 9, 'Nine inherited T21 omitted-edit rejections') + old_order21 = [[s, r+8*g] for s, r in plan['order'] for g in range(3) if r+8*g < 21] + delay21 = omitted_delay(audit, inputs, roles21, old_order21, 512) + + audit.T, audit.EXPECTED_IDLE = 16, {48: 4793, 44: 1, 2: 1, 1: 2} + context16 = audit.make_context(*inputs, roles16, order=order16, payload=512) + result16 = audit.check_roles(context16, roles16) + builder16 = load(HERE/'vendor/pr870/t16/build_owners.py', 'pinned_t16_control_edits') + fields = ('owner_replica', 'child', 'port', 'offset') + edits16 = [dict(role=[*order16[time], helper], before=dict(zip(fields, old))) + for time, helper, width, old, new in builder16.EDITS] + rejected16 = omitted_edits(audit, context16, roles16, edits16, plan) + require(len(rejected16) == 11, 'Eleven inherited T16 omitted-edit rejections') + dump(args.out, dict( + status='PASS_T37_T21_T16_OMITTED_EDITS_AND_DELAYS', + owners_sha256=sha(args.owners), owners_content_sha256=identity(roles), + order_sha256=sha(order_path), order_content_sha256=identity(order), + source_suborders_preserved=True, source_suborders_checked_independently=True, + omitted_edit_controls=rejected37, omitted_delay_rejection=delay37, + underpaid_payload_rejection=payload_rejection, + t37_independent_acceptance=result37, + inherited_t21=dict(owners_content_sha256=identity(roles21), order_content_sha256=identity(order21), + independent_acceptance=result21, omitted_edit_controls=rejected21, + omitted_delay_rejection=delay21), + inherited_t16=dict(owners_content_sha256=identity(roles16), order_content_sha256=identity(order16), + independent_acceptance=result16, omitted_edit_controls=rejected16), + source_plan_sha256=sha(source/'PLAN.json'), source_owners_sha256=sha(source/'OWNERS.json.gz'), + scope='All 30 omitted edits fail actual geometry; both missing delays cross independently rebuilt idle boundaries. Source checks use original payload512; final T37 uses paid payload1024.')) + print('PASS 10 T37 + 9 T21 + 11 T16 omitted edits and both actual-window delay controls') + + +if __name__ == '__main__': + main() diff --git a/research/complex-t37-independent-seed39/package_controls.py b/research/complex-t37-independent-seed39/package_controls.py new file mode 100644 index 0000000000..d48e06e25e --- /dev/null +++ b/research/complex-t37-independent-seed39/package_controls.py @@ -0,0 +1,182 @@ +# SPDX-License-Identifier: Apache-2.0 +"""Package and final-binding mutations; successful replay inputs stay read-only.""" +import argparse +import copy +import gzip +import json +from pathlib import Path +import shutil +import subprocess +import sys +import tempfile +from common import HERE, read, require, dump, sha, identity, write_gzip +import verify +import source_adapters + + +def main(): + parser = argparse.ArgumentParser(description=__doc__) + parser.add_argument('--replay', type=Path, required=True) + parser.add_argument('--baseline799', type=Path, required=True) + parser.add_argument('--ancestor741', type=Path, required=True) + parser.add_argument('--out', type=Path, required=True) + args = parser.parse_args() + work, baseline, ancestor = (p.resolve() for p in (args.replay, args.baseline799, args.ancestor741)) + require(not args.out.exists(), 'Control output must be new') + stages = read(work/'STAGES.json') + prior = read(work/'RESULT.json') + reuse = prior['baseline_mode'] == 'explicit_checked_reuse' + pins = verify.validate_pins() + honest = verify.final_binding(work, stages, pins, reuse, baseline, ancestor) + rejected = [] + + def expect(name, action): + try: + action() + except (ValueError, AssertionError, KeyError) as error: + rejected.append(dict(name=name, reason=str(error))) + else: + raise ValueError('Accepted package control: '+name) + + expect('missing_parent_stage', lambda: verify.final_binding(work, [s for s in stages if s['name'] != 'check-parent'], pins, reuse, baseline, ancestor)) + expect('duplicated_success_stage', lambda: verify.final_binding(work, stages+[stages[-1]], pins, reuse, baseline, ancestor)) + original_read = verify.read + + def injected(relative, mutate): + path = work/relative + def altered(p): + value = original_read(p) + if Path(p).resolve() == path: + value = copy.deepcopy(value) + mutate(value) + return value + verify.read = altered + try: + return verify.final_binding(work, stages, pins, reuse, baseline, ancestor) + finally: + verify.read = original_read + + cases = [ + ('owner_deficit', 'global/audit/OWNERS-AND-PROFILE.json', lambda x: x.__setitem__('deficit', 5120)), + ('t16_invocation_count', 'INDEPENDENT-T37.json', lambda x: x.__setitem__('calls', 144)), + ('missing_t5_control', 'INDEPENDENT-T5.json', lambda x: x['controls_rejected'].pop()), + ('missing_partial_bank_control', 'PARENT-CHECK.json', lambda x: x['controls_rejected'].pop()), + ('stale_partial_bank_parent', 'PARENT-CHECK.json', lambda x: x.__setitem__('parent_content_sha256', '0'*64)), + ('missing_owner_edit_control', 'OWNER-CONTROLS.json', lambda x: x['omitted_edit_controls'].pop()), + ('missing_delay_control', 'OWNER-CONTROLS.json', lambda x: x.__setitem__('omitted_delay_rejection', '')), + ('missing_t37_order_control', 'INDEPENDENT-T37.json', lambda x: x['order_controls_rejected'].pop()), + ('undeclared_t37_order', 'INDEPENDENT-T37.json', lambda x: x.__setitem__('explicit_order_input', False)), + ('nonboolean_order_binding', 'INDEPENDENT-T37.json', lambda x: x.__setitem__('declared_order_role_times_bound', 'true')), + ('independent_payload512', 'INDEPENDENT-T37.json', lambda x: x.__setitem__('charged_prefix_bits', 512)), + ('missing_inherited_t21_edit_control', 'OWNER-CONTROLS.json', lambda x: x['inherited_t21']['omitted_edit_controls'].pop()), + ('missing_inherited_t16_edit_control', 'OWNER-CONTROLS.json', lambda x: x['inherited_t16']['omitted_edit_controls'].pop()), + ('missing_inherited_t21_delay_control', 'OWNER-CONTROLS.json', lambda x: x['inherited_t21'].__setitem__('omitted_delay_rejection', '')), + ('missing_underpaid_payload_control', 'OWNER-CONTROLS.json', lambda x: x.__setitem__('underpaid_payload_rejection', '')), + ('unchecked_source_suborders', 'OWNER-CONTROLS.json', lambda x: x.__setitem__('source_suborders_checked_independently', False)), + ('empty_owner_control_acceptance', 'OWNER-CONTROLS.json', lambda x: x.__setitem__('t37_independent_acceptance', {})), + ('stale_owner_control_order', 'OWNER-CONTROLS.json', lambda x: x.__setitem__('order_sha256', '0'*64)), + ('stale_inherited_t21_source', 'OWNER-CONTROLS.json', lambda x: x['inherited_t21'].__setitem__('owners_content_sha256', '0'*64)), + ('missing_payload_control', 'PAYLOAD-CONTROLS.json', lambda x: x['rejected_controls'].pop()), + ('duplicate_payload_control_name', 'PAYLOAD-CONTROLS.json', lambda x: x['rejected_controls'].__setitem__(1, x['rejected_controls'][0])), + ('wrong_payload_failure_name', 'PAYLOAD-CONTROLS.json', lambda x: x['targeted_failures'][0].__setitem__('name', 'unrelated_guard')), + ('untargeted_payload_failure', 'PAYLOAD-CONTROLS.json', lambda x: x['targeted_failures'][0].__setitem__('targeted_guard', False)), + ('nonboolean_payload_guard', 'PAYLOAD-CONTROLS.json', lambda x: x['targeted_failures'][0].__setitem__('targeted_guard', 'true')), + ('unrebound_payload_owner', 'PAYLOAD-CONTROLS.json', lambda x: x.__setitem__('owner_hash_rebound_for_each_mutation', False)), + ('unchecked_payload_bit_pin', 'PAYLOAD-CONTROLS.json', lambda x: x.__setitem__('bit_injection_after_original_blob_pin', False)), + ('stale_payload_owner_input', 'PAYLOAD-CONTROLS.json', lambda x: x['input_sha256'].__setitem__('owner', '0'*64)), + ('stale_payload_bit_input', 'PAYLOAD-CONTROLS.json', lambda x: x['input_sha256'].__setitem__('bit_supplier', '0'*64)), + ('stale_payload_kappa', 'PAYLOAD-CONTROLS.json', lambda x: x.__setitem__('valid_receipt_kappa', '1/1000')), + ('complex_payload512', 'global/audit/PREFIX-AND-INVOICE.json', lambda x: x.__setitem__('charged_prefix_bits', 512)), + ('stale_t21_row', 'global/audit/PREFIX-AND-INVOICE.json', lambda x: x['finite'].__setitem__('physical_row_coefficient', 16469)), + ('stale_t21_prefix', 'global/audit/PREFIX-AND-INVOICE.json', lambda x: x.__setitem__('global_prefix_bits', 491)), + ('missing_admission_control', 'ADMISSION-CONTROLS.json', lambda x: x['rejected_controls'].pop()), + ('missing_bit_control', 'BIT-CONTROLS.json', lambda x: x['rejected_controls'].pop()), + ('missing_native_phase_stage', 'native/STEPS.json', lambda x: x.pop()), + ('changed_runtime_spec', 'runtime/data/SPEC.json', lambda x: x['expected'].__setitem__('live', 14336)), + ('stale_ancestral_price', 'BASELINE-BINDING.json', lambda x: x.__setitem__('kappa', '1/1000')), + ('omitted_ancestral_coverage', 'BASELINE741-COVERAGE.json', lambda x: x.__setitem__('ordered_stage_count', 1)), + ] + for name, relative, mutate in cases: + expect(name, lambda relative=relative, mutate=mutate: injected(relative, mutate)) + positives = [] + with tempfile.TemporaryDirectory(prefix='t37-controls-') as directory: + temp = Path(directory) + # Recompression must preserve the full identity after both recorded + # owner container references have first been checked and rebound. + original_plan = read(work/'lift/PLAN.json') + original_owners = read(work/'owners/OWNERS.json.gz') + for level in (1, 9): + owner_path, plan_path = temp/f'owners-{level}.json.gz', temp/f'plan-{level}.json' + raw = json.dumps(original_owners, sort_keys=True, separators=(',', ':')).encode() + owner_path.write_bytes(gzip.compress(raw, compresslevel=level, mtime=42)) + plan = copy.deepcopy(original_plan) + plan['assignment_sha256'] = plan['replica_lift']['owners_file_sha256'] = sha(owner_path) + dump(plan_path, plan) + value, ids = verify.runtime_spec(plan_path, owner_path) + require(ids == honest['semantic_identities'], 'Recompression identity') + positives.append(dict(compresslevel=level, semantic_identities=ids)) + owner_path, plan_path = temp/'mutant-owner.json.gz', temp/'mutant-plan.json' + bad = copy.deepcopy(original_owners) + bad[0]['offset'] += 1 + write_gzip(owner_path, bad) + plan = copy.deepcopy(original_plan) + plan['assignment_sha256'] = plan['replica_lift']['owners_file_sha256'] = sha(owner_path) + plan['assignment_content_sha256'] = identity(bad) + dump(plan_path, plan) + expect('consistent_changed_owner_semantics', lambda: verify.runtime_spec(plan_path, owner_path)) + plan = copy.deepcopy(original_plan) + plan['windows'][next(iter(plan['windows']))][1].append(999) + dump(plan_path, plan) + expect('changed_window_semantics', lambda: verify.runtime_spec(plan_path, work/'owners/OWNERS.json.gz')) + # A runtime mathematical guard must still match its literal source + # adaptation even if the output-hash receipt is updated consistently. + runtime = temp/'runtime' + shutil.copytree(work/'runtime', runtime, ignore=shutil.ignore_patterns('__pycache__')) + source_adapters.check_runtime(runtime) + code_path = runtime/'code/assemble.py' + code_bytes = code_path.read_bytes() + before, after = b"invoice['charged_prefix_bits']==1024", b"invoice['charged_prefix_bits']==512" + require(code_bytes.count(before) == 1, 'Unique complex runtime guard') + code_path.write_bytes(code_bytes.replace(before, after)) + adapter_path = runtime/'ADAPTERS.json' + original_adapters = read(adapter_path) + changed_adapters = copy.deepcopy(original_adapters) + changed_adapters['assemble.py']['output_sha256'] = sha(code_path) + dump(adapter_path, changed_adapters) + expect('changed_runtime_guard_rebound_receipt', lambda: source_adapters.check_runtime(runtime)) + code_path.write_bytes(code_bytes) + dump(adapter_path, original_adapters) + extra = runtime/'code/unregistered.py' + extra.write_text('unregistered = True\n') + expect('extra_runtime_code_file', lambda: source_adapters.check_runtime(runtime)) + extra.unlink() + bit_path = runtime/'inputs/PR589-EXPECTED.json' + bit_bytes = bit_path.read_bytes() + bit_path.write_bytes(bit_bytes+b'\n') + expect('changed_runtime_bit_input', lambda: source_adapters.check_runtime(runtime)) + bit_path.write_bytes(bit_bytes) + source_adapters.check_runtime(runtime) + package = temp/'package' + shutil.copytree(HERE, package, ignore=shutil.ignore_patterns('__pycache__')) + original_here = verify.HERE + verify.HERE = package + try: + path = package/'build_owners.py' + path.write_bytes(path.read_bytes()+b'\n# changed byte\n') + expect('changed_package_byte', verify.validate_pins) + finally: + verify.HERE = original_here + process = subprocess.run([sys.executable, '-O', str(HERE/'verify.py'), '--work', str(temp/'optimized')], + text=True, capture_output=True) + require(process.returncode != 0 and 'Assertions must remain enabled' in process.stderr, 'Top-level optimized rejection') + rejected.append(dict(name='optimized_top_level', reason='Assertions must remain enabled')) + result = dict(status='PASS_T37_PACKAGE_BOUNDARY_CONTROLS', count=len(rejected), controls_rejected=rejected, + recompression_positive_controls=positives, kappa=honest['kappa'], + replay_result_sha256=sha(work/'RESULT.json'), package_manifest_sha256=sha(HERE/'MANIFEST.json'), + scope='Exact package and final-binding mutation checks. Inputs are read-only. Receipt/log coverage does not authenticate execution history.') + dump(args.out, result) + print(result['status'], 'rejections='+str(len(rejected)), 'recompression_positives=2') + + +if __name__ == '__main__': + main() diff --git a/research/complex-t37-independent-seed39/payload_controls.py b/research/complex-t37-independent-seed39/payload_controls.py new file mode 100644 index 0000000000..4761afdc24 --- /dev/null +++ b/research/complex-t37-independent-seed39/payload_controls.py @@ -0,0 +1,166 @@ +# SPDX-License-Identifier: Apache-2.0 +"""Targeted T37 payload controls against the actual strict runtime assembler. + +The honest owner/invoice pair must pass first. Each mutation must then fail +at its named assertion, not at an unrelated pin, schema, or receipt digest. +The bit control validates the pinned bytes before injecting the altered +parsed allowance, as in the inherited PR589 bit-supplier controls. +Prepared with substantial OpenAI Codex assistance; inherited sources and +contracts are credited in NOTICE.md. This does not replace physical replay. +""" +import argparse +import ast +import copy +import importlib.util +import os +from pathlib import Path +import sys + +from common import dump, identity, read, require, sha + + +def assertion_site(path, expression): + """Find the exact guard by AST, allowing harmless whitespace differences.""" + text = path.read_text() + wanted = ast.dump(ast.parse(expression, mode='eval').body) + matches = [node for node in ast.walk(ast.parse(text)) + if isinstance(node, ast.Assert) and ast.dump(node.test) == wanted] + require(len(matches) == 1, 'Expected exactly one targeted guard: '+expression) + node = matches[0] + return dict(line=node.lineno, end_line=node.end_lineno, + assertion=ast.get_source_segment(text, node)) + + +def targeted_failure(assemble, args, assembler_path, site, name): + try: + assemble(*args) + except AssertionError as error: + trace = error.__traceback__ + while trace.tb_next is not None: + trace = trace.tb_next + actual_path = Path(trace.tb_frame.f_code.co_filename).resolve() + require(actual_path == assembler_path and + site['line'] <= trace.tb_lineno <= site['end_line'], + name+' failed at an unrelated assertion: '+str(actual_path)+':'+str(trace.tb_lineno)) + return dict(name=name, assembler_line=trace.tb_lineno, + assertion=site['assertion'], targeted_guard=True) + raise AssertionError('Invalid payload receipt accepted: '+name) + + +def verify(owner_path, invoice_path, source_package, runtime=None): + require(not sys.flags.optimize, 'Assertions must remain enabled') + require(os.environ.get('WITNESS_DISCOVER') != '1', 'Strict witness mode required') + require(not os.environ.get('WITNESS_RECORD'), 'Discovery bookkeeping must be disabled') + spec_env = os.environ.get('WITNESS_SPEC') + if runtime is None: + require(spec_env is not None, '--runtime or WITNESS_SPEC is required') + runtime = Path(spec_env).resolve().parents[1]/'code' + runtime = runtime.resolve() + spec = Path(spec_env).resolve() if spec_env else runtime.parent/'data/SPEC.json' + require(spec.is_file(), 'Runtime SPEC is missing: '+str(spec)) + assembler_path = (runtime/'assemble.py').resolve() + require(assembler_path.is_file(), 'Runtime assembler is missing') + os.environ['WITNESS_SPEC'] = str(spec) + os.environ['GAIN_PR564_SOURCE'] = str(source_package.resolve()) + if 'witness' in sys.modules: + require(Path(sys.modules['witness'].__file__).resolve() == runtime/'witness.py', + 'A different runtime witness is already imported') + sys.path.insert(0, str(runtime)) + module_spec = importlib.util.spec_from_file_location('t37_payload_assembly', assembler_path) + assembly = importlib.util.module_from_spec(module_spec) + module_spec.loader.exec_module(assembly) + require(not assembly.DISCOVER, 'Runtime assembler must use strict pins') + + expressions = { + 'old_complex_payload512': "0 0 for gap in partial_gaps[:-1]) and partial_gaps[-1] == 0, + 'Strict rank-mass majorization') + result = dict(status='PASS_T37_TWO_EXACT_ENGINES_AND_OUTER47', prices=prices, bit_checks=bit_checks, + profile_sha256=sha(args.profile), gain_over_pr890=str(Fraction(claim['kappa'])-Fraction(claim['baseline890_kappa'])), + normalized_profile_comparison=dict(t37_multiplier=21, t21_multiplier=37, + rank_count_difference=difference, zero_padded_majorization_gaps=partial_gaps, + pr890_idle_profile={48:6292, 1:3, 3:1}, + canceled_local_calls=6993, fewer_children=20, + consequence='For every 0 bit and pivots[upper] >> bit & 1: + pivots[upper] ^= pivots[bit] + return tuple(pivots[bit] for bit in sorted(pivots, reverse=True)) + + +def local_inventory(word, replay): + require((word['v'], word['h'], word['R']) == (V, H, R), 'local supplier dimensions') + frames = [basis(frame) for frame in word['frames']] + n = 2 * V + R + require(len(word['start']) == len(word['final']) == n, 'local frame vector lengths') + current = [frames[f] for f in word['start']] + paid = Counter() + + def climb(register, frame): + require(basis(current[register] + frame) == frame, 'nonmonotone local frame') + jump = len(frame) - len(current[register]) + if jump: + paid[jump] += 1 + current[register] = frame + + require(not word['target_levels'], 'this audit requires the current zero-level centre interface') + for section in ('A', 'B', 'tail'): + if section == 'B': + require(all(current[t] == () for t in range(V, 2 * V)), 'target centre level') + for q, frame_id in zip(word['centers'], word['center_frames']): + require(current[q] == frames[frame_id], 'centre carrier frame') + paid[len(frames[frame_id])] += 1 + for gate in word[section]: + registers = gate[1:3] if gate[0] == 'add' else gate[1:2] + require(gate[0] in ('add', 'scale'), 'unknown scalar gate') + for register in registers: + climb(register, frames[gate[-1]]) + for register, frame_id in enumerate(word['final']): + climb(register, frames[frame_id]) + require(dict(paid) == {int(r): count for r, count in word['local_profile'].items()}, 'local paid-profile recount') + for orientation in ('forward', 'backward'): + require(dict(paid) == {int(r): count for r, count in replay['paid_profiles'][orientation].items()}, 'local replay profile binding') + widths = [len(frames[word['final'][q]]) - len(frames[word['start'][q]]) for q in range(2 * V, n)] + require(Counter(widths) == {4: 80, 5: 32, 7: 54, 8: 122, 9: 216}, 'current supplier width inventory') + return widths, paid + + +def make_context(parent, phases, ports, word, replay, roles): + widths, paid = local_inventory(word, replay) + require(len(parent['calls']) == 72 and {(c['stage'], c['replica']) for c in parent['calls']} == {(s, r) for s in range(9) for r in range(8)}, 'original eight-replica baseline calls') + require(len(roles) == 9 * T * R, 'complete helper role count') + address = {} + for role in roles: + key = (role['stage'], role['replica']) + time = role['time'] + require(time not in address or address[time] == key, 'inconsistent invocation time address') + address[time] = key + require(set(address) == set(range(9 * T)), 'contiguous invocation times') + order = [address[t] for t in range(9 * T)] + require(set(order) == {(s, r) for s in range(9) for r in range(T)}, 'stage/replica inventory') + require(all(order[2*t+1] == (order[2*t][0], order[2*t][1]+8) and order[2*t][1] < 8 for t in range(72)), 'two-copy interleaving') + rank = {child['child']: child['rank'] for child in parent['idle_children']} + source = parent['execution_schedule'] + blocks, stage = {}, None + for index, event in enumerate(source): + if event['kind'] in ('bank_padding_cover_sweep', 'translate_every_live_family'): + continue + if event['kind'] == 'local_cover_sweep': + stage = event['stage'] + blocks[stage] = [] + require(stage is not None, 'source event before first invocation') + blocks[stage].append((index, event)) + require(set(blocks) == set(range(9)), 'source stage inventory') + events = [(index, event, replica, time) for time, (stage, replica) in enumerate(order) for index, event in blocks[stage]] + projections = defaultdict(list) + for index, event, replica, time in events: + projections[replica].append(index) + require(set(projections) == set(range(T)) and all(p == list(range(30)) for p in projections.values()), 'per-replica source-event projection') + stage_pair = {e['stage']: e['pair'] for e in parent['recipe'] if e['kind'] == 'local'} + last, windows, callpos, child_pair, side = {}, {}, {}, {}, {} + bridges = 0 + for position, (_, event, replica, _) in enumerate(events): + kind = event['kind'] + if kind == 'local_cover_sweep': + stage = event['stage'] + callpos[stage, replica] = position + last[replica, stage_pair[stage]] = position + elif kind == 'bridge': + last[replica, event['src']] = last[replica, event['dst']] = position + bridges += 1 + elif kind == 'idle_cover_sweep': + for sd, child in enumerate(event['child_indices']): + if child in rank: + windows[replica, child] = (last.get((replica, event['pair']), -1), position) + child_pair[child], side[child] = event['pair'], sd + require(len(windows) == T * len(rank), 'actual window inventory') + require(len(ports) == V, 'port count') + bases = [] + for q in ports: + zero = next(i for i in range(H) if not (q >> i & 1)) + correction = q ^ (1 << zero) + axes = list(range(H)) + axes[0], axes[zero] = axes[zero], axes[0] + frame = [(1 << i) ^ (correction if correction >> i & 1 else 0) for i in axes] + [1 << i for i in range(H, M)] + require(all((x & y).bit_count() % 2 == int(i == j) for i, x in enumerate(frame) for j, y in enumerate(frame)), 'nonorthogonal owner basis') + bases.append(frame) + return dict(widths=widths, paid=paid, order=order, at={key:t for t,key in enumerate(order)}, rank=rank, + windows=windows, callpos=callpos, child_pair=child_pair, side=side, stage_pair=stage_pair, + bases=bases, phases=phases, bridges=bridges, event_count=len(events), replay=replay) + + +def check_roles(context, roles): + c = context + live, physical = T * 8 * V, T * 8 * V + 8 + R + 2 + require(len(roles) == 9 * T * R, 'complete helper role count') + helpers, families, used = defaultdict(set), defaultdict(set), defaultdict(set) + charts, chart_cache = set(), {} + for z in roles: + s, r, helper = z['stage'], z['replica'], z['helper'] + owner, child, port = z['owner_replica'], z['child'], z['port'] + offset, width, family = z['offset'], z['width'], z['family'] + call = (s, r) + require(call in c['at'] and 0 <= helper < R and 0 <= owner < T and 0 <= port < V, 'role coordinates') + require(z['time'] == c['at'][call], 'role invocation time') + require(width == c['widths'][helper], 'whole-helper residual width') + require(0 <= family < live, 'private-namespace collision') + require(child in c['rank'], 'unknown idle child') + require(z['copy'] == V * owner + port and family == owner * 896 + (2 * c['child_pair'][child] + c['side'][child]) * V + port, 'physical family identity') + lo, hi = c['windows'][owner, child] + require(lo < c['callpos'][call] < hi, 'strict bridge-aware idle window') + require(family // 224 != r * 4 + c['stage_pair'][s], 'helper aliases active data pair') + require(helper not in helpers[call] and family not in families[call], 'duplicate helper or family within whole invocation') + helpers[call].add(helper) + families[call].add(family) + cells = set(range(offset, offset + width)) + bin_key = (owner, child, port) + require(offset >= 0 and offset + width <= c['rank'][child] and not used[bin_key] & cells, 'overlapping or out-of-capacity slice') + used[bin_key].update(cells) + chart_key = (port, child, offset, width) + if chart_key not in chart_cache: + frame = c['bases'][port] + pending = list(map(int, c['phases']['recipes'][port]['idle_children'][child]['orthogonal_axes'])) + require(len(pending) == c['rank'][child], 'phase child rank') + occupied = [frame.index(x) for x in pending[offset:offset + width]] + spectators = [i for i in range(M) if i not in occupied][:H - width] + permutation = occupied + spectators + [i for i in range(M) if i not in occupied and i not in spectators] + require(len(occupied) == width and len(set(occupied + spectators)) == H and sorted(permutation) == list(range(M)), 'residual/spectator permutation') + require([frame[i] for i in permutation[:width]] == pending[offset:offset + width], 'pending-axis binding') + chart_cache[chart_key] = tuple(frame[i] for i in permutation) + charts.add(chart_cache[chart_key]) + require(set(helpers) == set(c['order']) and all(h == set(range(R)) for h in helpers.values()), 'complete per-call helper inventory') + idle = Counter() + for owner, child in c['windows']: + for port in range(V): + cells = used[owner, child, port] + require(cells == set(range(len(cells))), 'gap in pending prefix') + left = c['rank'][child] - len(cells) + if left: + idle[left] += 1 + require(idle == {48: 4793, 44: 1, 2: 1, 1: 2}, 'nominated idle profile') + profile = Counter({rank: 9 * T * count for rank, count in c['paid'].items()}) + profile.update(idle) + mass = sum(rank * count for rank, count in profile.items()) + require(M * live - mass == 5120, 'doubled rank deficit') + require(c['bridges'] == 144, 'actual bridge count') + localbits = max(x['prefix_bits_upper'] for x in c['replay']['local'].values()) + prefix = localbits + (M + 1) // 2 + len(c['order']) + c['bridges'] + 4 + group = 2 ** (36 * 36) + for i in range(1, 37): + group *= 2 ** (2 * i) - 1 + stock = group * physical + row = 2 * stock.bit_length() + 9909 + 252 + 2 * 512 + require(prefix < 512, 'prefix reserve') + require(row < 20161 and M * M > 2 * max(profile) ** 2, 'row or halving reserve') + return dict(status='PASS_INDEPENDENT_T16_LITERAL_WINDOWS_CHARTS_PREFIX_ROW', roles=len(roles), calls=len(c['order']), + source_events_per_replica=30, expanded_replica_events=c['event_count'], bridge_events=c['bridges'], + literal_windows=len(c['windows']), checked_whole_helper_widths=len(roles), checked_busy_family_windows=len(roles), + orthogonal_port_bases=len(c['bases']), actual_73_axis_charts=len(charts), checked_slice_prefixes=len(c['windows']) * V, + local_profile=dict(sorted(c['paid'].items())), width_inventory=dict(sorted(Counter(c['widths']).items())), + idle=dict(sorted(idle.items())), profile=dict(sorted(profile.items())), live=live, physical=physical, + rank_mass=mass, deficit=5120, namespace={'data':[0,live], 'centres':[live,live+8], 'tableau':[live+8,live+8+R], 'coefficient':[live+8+R,physical]}, + local_prefix_bits=localbits, local_prefix_from_native_receipt=True, local_profile_recounted=True, + prefix_formula=dict(local_scalar=localbits, input_l2=(M + 1) // 2, invocations=len(c['order']), bridges=c['bridges'], margin=4), + prefix_bits=prefix, charged_prefix_bits=512, physical_stock_bits=stock.bit_length(), + physical_row_coefficient=row, row_limit=20161, + scope='Finite role/window/chart and inherited prefix/row obligations. Requires separately admitted local supplier and emitted controller, complete finite invoice, exact moments and outer assembly; no all-size theorem is asserted.') + + +def controls(context, roles): + candidates = [] + first = roles[0] + bad = dict(first, family=14336) + candidates.append(('private_namespace_collision', [bad] + roles[1:], 'private-namespace collision')) + index = next(i for i, z in enumerate(roles) if z['replica'] >= 8) + bad = dict(roles[index], replica=roles[index]['replica'] - 8) + candidates.append(('copy_replica_alias', [bad] + roles[:index] + roles[index+1:], 'role invocation time')) + candidates.append(('missing_whole_helper', roles[1:], 'complete helper role count')) + split = dict(first, width=first['width'] - 1) + fragment = dict(first, offset=first['offset'] + first['width'] - 1, width=1) + candidates.append(('split_whole_helper', [split, fragment] + roles[1:], 'complete helper role count')) + candidates.append(('truncated_helper_width', [split] + roles[1:], 'whole-helper residual width')) + # Keep the family and chart valid, but move one complete role past its + # actual idle event. Freeze the original invocation order for controls. + crossing = None + for index, z in enumerate(roles): + lo, hi = context['windows'][z['owner_replica'], z['child']] + later = next((key for key in context['order'] if context['callpos'][key] >= hi), None) + if later is not None: + crossing = [dict(z, stage=later[0], replica=later[1], time=context['at'][later])] + roles[:index] + roles[index+1:] + break + require(crossing is not None, 'no idle-boundary control could be constructed') + candidates.append(('cross_idle_boundary', crossing, 'strict bridge-aware idle window')) + rejected = [] + for name, bad, expected in candidates: + try: + check_roles(context, bad) + except ValueError as exc: + require(str(exc) == expected, 'control rejected at unexpected predicate: ' + name) + rejected.append(dict(name=name, reason=str(exc))) + else: + raise ValueError('accepted negative control: ' + name) + return rejected + + +def main(): + parser = argparse.ArgumentParser(description=__doc__) + parser.add_argument('--baseline-parent', type=Path, required=True) + parser.add_argument('--owners', type=Path, required=True) + parser.add_argument('--word', type=Path, required=True) + parser.add_argument('--phases', type=Path) + parser.add_argument('--local-replay', type=Path) + parser.add_argument('--out', type=Path, required=True) + args = parser.parse_args() + phases_path = args.phases or args.baseline_parent.parent.parent / 'work/complex-nine-native/DATA-PHASES.json' + canonical_path = args.baseline_parent.parent / 'CANONICAL-WORD.json.gz' + replay_path = args.local_replay or args.word.parent / 'INDEPENDENT-LOCAL-REPLAY.json' + parent, phases, canonical, word, replay, roles = map(read, (args.baseline_parent, phases_path, canonical_path, args.word, replay_path, args.owners)) + require(replay['status'] == 'PASS_INDEPENDENT_LOCAL_SCALAR_FRAME_AND_WRAPPER_REPLAY', 'local replay status') + require(replay['canonical_word_sha256'] == filehash(args.word), 'local word/replay hash binding') + require(set(replay['local']) == {'forward', 'backward'}, 'both native prefix orientations') + require(word['ports'] == canonical['ports'], 'local/controller port interface') + require(len(word['center_frames']) == len(canonical['center_frames']) == 8, 'eight centre interfaces') + require([basis(word['frames'][f]) for f in word['center_frames']] == [basis(canonical['frames'][f]) for f in canonical['center_frames']], 'ordered centre-frame interface') + context = make_context(parent, phases, canonical['ports'], word, replay, roles) + receipt = check_roles(context, roles) + receipt['controls_rejected'] = controls(context, roles) + receipt['input_sha256'] = {str(path): filehash(path) for path in (args.baseline_parent, phases_path, canonical_path, args.word, replay_path, args.owners)} + args.out.write_text(json.dumps(receipt, indent=2) + '\n', encoding='utf-8') + print(receipt['status'], 'roles=' + str(receipt['roles']), 'controls=' + str(len(receipt['controls_rejected']))) + + +if __name__ == '__main__': + main() diff --git a/research/complex-t37-independent-seed39/vendor/pr870/LICENSE b/research/complex-t37-independent-seed39/vendor/pr870/LICENSE new file mode 100644 index 0000000000..261eeb9e9f --- /dev/null +++ b/research/complex-t37-independent-seed39/vendor/pr870/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/complex-t37-independent-seed39/vendor/pr870/NOTICE.md b/research/complex-t37-independent-seed39/vendor/pr870/NOTICE.md new file mode 100644 index 0000000000..d95b8b94ca --- /dev/null +++ b/research/complex-t37-independent-seed39/vendor/pr870/NOTICE.md @@ -0,0 +1,35 @@ +# Gauge44 attribution and scope + +New contributions by icekylinx, with OpenAI GPT-6 Astra assistance. +Local review and packaging used OpenAI Codex. Apache-2.0 applies; +the license is included. The full original PR635 notice is preserved as +UPSTREAM-NOTICE.md and construction/UPSTREAM-NOTICE.md. + +The new contribution is the changed source-branch gauge and retired-row +completion, source-carried coordinate totals, exact 44-cold-end realization, +and explicit all72 whole-family assignment using concave capacity matching +with integer majorization certificates. The center-carrier generalization +retains the exact ordered common frames and complete native local contract. +Independent local, price, interface and owner fixed-point checks are included. + +The construction retains the credited PR635 K-triangle and porting machinery, +earlier joint-prefix/HPE/frame ancestry and icekylinx's prior factory work. +#645 used the same cited PR543 bit supplier as PR635. This package (research/gauge44-barch) cites the merged PR589 bit supplier instead, with a derived rank-mass deficit (PROOF-NOTE-BIT.md); #645's retained PR543-based evidence is historical. It builds #645's word without K-triangles (PartialK) and stacks earlier community jp8 layers on it (G44Stack), adds the p6n ends (NoTriReopen), entrance promotions (BlockInvert) a read-set exchange (BRoute), chafreaky's #741 frames, JointXF's joint exchange and NewBArch's triangle-hybrid B rewrite; see README. All-size, realization, +hosting, precision/tape, analytic-transfer and bit H1-H5 assumptions remain +conditional. No upstream license, credit, source pin or AI disclosure is +replaced by this notice. + +PR641 and PR642 were checked as concurrent reported frontier comparisons. +Their endpoints and owner maps are not included here. See CONSTRUCTION.md, +hosting/PROOF.md, independent/ and README.md for the exact contribution scope. + +T16 (research/gauge44-barch-t16): the sixteen-replica two-bank controller, the +multiplicity-checked source adapters, the direct-sum parent lift, the actual +bridge-aware window reconstruction, the eleven whole-helper moves and the +independent T16 checker are Hao Yan's (@FanPUYen) PR #858 +(research/complex-double-replica-owners, Apache-2.0, prepared with OpenAI Codex +assistance), vendored unchanged in t16/ (build_owners.py, build_parent.py, +source_adapters.py, NOTICE.md) and credited there. Replica16 composed them with +the U8 word (glue t16/own16.py, t16/lift16.py, t16/indep16.py, verify_t16.py, +independent/price_profile_t16.py). No optimality claim is made for sixteen +replicas. diff --git a/research/complex-t37-independent-seed39/vendor/pr870/PROOF-NOTE-BARCH.md b/research/complex-t37-independent-seed39/vendor/pr870/PROOF-NOTE-BARCH.md new file mode 100644 index 0000000000..8cea5a6846 --- /dev/null +++ b/research/complex-t37-independent-seed39/vendor/pr870/PROOF-NOTE-BARCH.md @@ -0,0 +1,43 @@ +# PROOF-NOTE-BARCH: width-neutral triangle-hybrid B-delivery rewrite (U8) + +Construction by NewBArch (`construction/barch/`, builder `build_tri.py`, controls `run_controls.py`, recipe +`RECIPE-U8.json`). Driver: `construction/barch/reproduce_barch.py`, chained after `construction/jx`. + +## The move +On research/gauge44-frames-x's X4 word (`1e1d99ba…`), eight disjoint slots are rewritten. In each slot X an entering +copy E donates into a halves-copy X: 231 (E 450), 230 (E 452), 232 (E 454), 236 (E 456), 226 (E 451), 228 (E 453), 62 (E 455), 238 (E 457). That way, so that one target +read takes X + H in a single gate. A holder pair (for example 496/484) carries the value. Each holder is restored by a +low-end tail at its frame (early cleanup) and a FULL-cleanup restore. Entrance pre-reads keep the entering helper's +start value away from every target. + +The recipe is explicit, with every index referring to the X4 word: +- 40 B deletions; +- 40 B insertions, each with its frame; +- 32 explicit re-chosen B frames; +- 8 early-cleanup tails; +- 8 FULL-cleanup restores. + +The A section and X4's tail frames are untouched. The width is unchanged at 3778. The profile goes +{1:2548, 2:338, 3:430, 4:194, 5:56, 8:8} → {1:2548, 2:338, 3:446, 4:162, 5:72, 8:8}, a delta of {3:+16, 4:−32, 5:+16}. +The eight slots are additive (8 × 3.925e-8 ideal = 3.140e-7). Output word `090fd574…`. U8 contains B0's four slots +(231, 230, 226, 228) plus 232, 236, 62 and 238. + +## Checks rerun on every rebuild +- `build_tri.py` (standard library only) checks the base sha (`1e1d99ba…`) and the result sha (`090fd574…`). +- `run_controls.py` produces 38 outcomes, all required. The control set is pinned in `LOCAL-PINS-barch-U8.json`. + - C0 identity reproduces the input. + - The recipe word PASSes #645's independent `audit_local.py`. + - Four mutants must each FAIL `audit_local` with a pinned message, both globally and for each of the eight slots + (NAME@X): + - drop_restore: the holder is not restored, giving "all-column endpoint failure"; + - restore_full: the low-end restore is moved into the FULL cleanup, giving "all-column endpoint failure"; + - drop_preread: the inserted entrance pre-reads are omitted, giving "nonzero entrance response"; + - donation_after: the donation is placed after the target read, giving "nonzero entrance response". +- The per-end layer-end controls (`../layers_p6n/layer_end_controls.py`) reject 95. +- PR635's native chain runs, with the canonical word, local programs and Clifford recipes pinned. + +## Strict +NewBArch's strict replay: the #741 map (`G44Pack/m741`, byte-identical OWNERS) is rebound to the U8 locals with +`rewidth.py` and admitted with this package's own code (NEWWORD `admit645.py` on research/gauge44-frames-x's tree). +The result is κ 0.001661948695165034, +3.1404e-7 over research/gauge44-frames-x. The four-slot subset B0 strict-passes +at 0.001661791659578416 and the single slot V1 at 0.001661673902364948. diff --git a/research/complex-t37-independent-seed39/vendor/pr870/PROOF-NOTE-T16.md b/research/complex-t37-independent-seed39/vendor/pr870/PROOF-NOTE-T16.md new file mode 100644 index 0000000000..74a4524ceb --- /dev/null +++ b/research/complex-t37-independent-seed39/vendor/pr870/PROOF-NOTE-T16.md @@ -0,0 +1,15 @@ +# T16 on the U8 word + +The sixteen-replica construction is Hao Yan's (@FanPUYen) [#858](https://github.com/CrocSwap/integer-mult-bounds/pull/858). Its proof (`research/complex-double-replica-owners/PROOF.md`) covers the same steps used here: the replica-local projection, whole-invocation hosting across groups, the actual windows, the direct-sum parent and the prefix/row reserves. This note records only what changes when the supplier is the U8 word instead of #799's X4 word. + +## What is inherited unchanged +- **Owner interface.** U8's T8 owner map is #799's (`99d1c4ca…`, the #685/#741 map). U8's PLAN windows equal #799's: same order, same window keys, capacities and times. U8's width inventory is `{4:80, 5:32, 7:54, 8:122, 9:216}`, with the same width at every helper index. #858's eleven moves therefore apply with their source locations and widths checked (`t16/own16.py`). The result is byte-identical to #858's T16 owner file `1c3a8924…`. +- **Idle trade.** Two copies of U8's T8 remainders `{1,3,44}` become `{48:4793, 44:1, 2:1, 1:2}`. The change is `H48 − H44 + H2 − 2·H3` at zero rank mass; `(48,2,0)` strictly majorizes `(44,3,3)`. The local paid profile is U8's, `{1:2548, 2:338, 3:446, 4:162, 5:72, 8:8}` per invocation, doubled to 144 invocations. The full profile is `{1:366914, 2:48673, 3:64224, 4:23328, 5:10368, 8:1152, 44:1, 48:4793}`, with rank mass 1041408 = 73·14336 − 5120. +- **Reserves.** U8's native replay gives B = 72 (both orientations), the same as X4. The prefix is therefore 72 + 37 + 144 + 144 + 4 = 401 < 512, and the invoice recounts the same 401. The physical row coefficient is 2·2642 + 9909 + 252 + 2·512 = 16469 < 20161. The maximum child is 48, and 73² = 5329 > 2·48² = 4608. +- **Code.** #858's exact adapter list, plus the two glue edits named in the README. + +## Result +κ = 415489074974971/2.5·10¹⁷ = 0.001661956299899884 (conservative 0.001661956297017522). The complex endpoint is b = 1664722996771957673401/10²⁴ and binds; the PR589 bit endpoint is unchanged. This is +7.6047·10⁻⁹ over U8 at T8 (0.001661948695165034). The gain matches #858's on X4 (+7.6019·10⁻⁹), as expected: the idle trade is the same and only the local profile differs. + +## Packing remark (not used by the proof) +On the T16 geometry, every slack unit can be in an empty bin, `{48:4794}`, only if the aggregated relaxation below has a zero-cost solution. The relaxation has, per window class, integer pattern counts restricted to full bins and (cap 48) empty bins, plus any bin with gap ≤ 8 charged by its gap. It also has role counts Z[class,time,width] with Σ_w Z ≤ #bins and exact supply. Its LP bound is 96/37 > 0, so `{48:4794}` is infeasible. The best conceivable improvement over `{44,2,1,1}` is `{44,4}`, about +2.2·10⁻⁹. Exact pattern-flow re-solves that released the four defect classes together with their two bridging classes 100/101 (classes 88, 89, 108, 113, 100, 101; 32k variables, optimal) found no gain. No optimality is claimed. diff --git a/research/complex-t37-independent-seed39/vendor/pr870/SOURCES.json b/research/complex-t37-independent-seed39/vendor/pr870/SOURCES.json new file mode 100644 index 0000000000..b0c7ab0ef2 --- /dev/null +++ b/research/complex-t37-independent-seed39/vendor/pr870/SOURCES.json @@ -0,0 +1,48 @@ +{ + "contributor": "icekylinx", + "research_assistance": "OpenAI GPT-6 Astra", + "local_review_and_packaging": "OpenAI Codex", + "original_archive": { + "filename": "integer_mult_round23_gauge44_delta.zip", + "sha256": "40a20a120f51cbed3c9ae4017603be74a9e9332ad4068bd914bf3e81bf8be6b4", + "manifest_sha256": "ffa23eb668ad558ebb5601470fc1997a9fb8cea0e188aa3c5d61318be9000603" + }, + "upstream_main": "17ce0c79b7b51c2634b439ea5a2b754f09909693", + "construction_parent": { + "pr": 635, + "commit": "a6895a69f8ad98ab45777b03e9e6f48888c39f6f" + }, + "bit_supplier_pr": 589, + "packaging_changes": [ + "Omit original run logs; retain their original receipts as historical evidence.", + "Use repository paths and dollar-delimited Markdown mathematics.", + "Add manifest verification, incremental CI and local validation record.", + "Trim trailing whitespace in four Python files; complete ASTs are unchanged. Refresh the corresponding constructor input hash.", + "research/gauge44-bit589: PR589 bit supplier (G44Stack port, Bit589Reviewer SOUND-WITH-FIXES), G44Pack dz1 owner map, re-derived SPEC, LF line endings, regenerated MANIFEST.", + "research/gauge44-barch: research/gauge44-frames-x tree plus construction/barch (U8); #741 owner map rebound, re-derived SPEC, regenerated independent price receipt, RESULT.json = strict REPLAY, LF, regenerated MANIFEST." + ], + "attribution": "Original notices and licenses retained. See NOTICE.md, UPSTREAM-NOTICE.md and CONSTRUCTION.md.", + "whitespace_only_python_files": [ + "code/audit_allcold.py", + "code/bind_providers_portable.py", + "construction/construct_gauge_xcentre.py", + "independent/audit_local.py" + ], + "historical_bit_supplier_pr": 543, + "bit_supplier_note": "This package cites PR589 (inputs/PR589-EXPECTED.json, git blob e293ddc5…). PR543 is the supplier of #645's retained historical evidence (LOCAL-VALIDATION.json, independent/ audit files, hosting/, evidence/). RESULT.json is this package's strict replay.", + "owner_map": "G44Pack/G44Pack2: The owner assignment is chafreaky's: the [#685](https://github.com/CrocSwap/integer-mult-bounds/pull/685)/[#741](https://github.com/CrocSwap/integer-mult-bounds/pull/741) map (one OWNERS file, byte-identical in both), transplanted by G44Pack's width-matching `relabel.py`. NewBArch rebound its PLAN to the U8 locals with `rewidth.py` (total width 3778, no overflow) and admitted it with this package's own code (NEWWORD discovery, `freeze_spec.py`, strict) at κ 0.001661948695165034.", + "construction_changes": "PartialK: no-triangle gauge44 word (R=504, PRIO6, ranks [4]*14); G44Stack: layers on it (pivot swaps, s4, x30, b6, q4); NewBArch: triangle-hybrid B rewrite U8 (construction/barch); chafreaky #741: eight B frames (construction/frames, ported by CompetitorMine) and the owner map; JointXF: joint exchange X4 (construction/jx); BRoute: read-set exchange SW4 (construction/sw4); NoTriReopen: p6n ends (construction/layers_p6n); BlockInvert: entrance promotions E4->E5 (construction/promo, minimal recipe p6n-k4); drivers construction/notri/reproduce_notri.py, construction/layers_np/reproduce_np.py, construction/promo/reproduce_promo.py", + "t16_controller": { + "pr": 858, + "author": "Hao Yan (@FanPUYen)", + "path": "research/complex-double-replica-owners", + "commit": "ae2e25fee91540c83ceee5a60e3b07422ce21c7d", + "vendored": [ + "t16/build_owners.py", + "t16/build_parent.py", + "t16/source_adapters.py", + "t16/NOTICE.md" + ], + "moves": "t16/MOVES.json (= #858 build_owners.EDITS)" + } +} diff --git a/research/complex-t37-independent-seed39/vendor/pr870/UPSTREAM-NOTICE.md b/research/complex-t37-independent-seed39/vendor/pr870/UPSTREAM-NOTICE.md new file mode 100644 index 0000000000..ebc24a0168 --- /dev/null +++ b/research/complex-t37-independent-seed39/vendor/pr870/UPSTREAM-NOTICE.md @@ -0,0 +1,34 @@ +# Attribution and scope + +Four verified provider types are offered to every call: PR571's prefix word with twelve multi-cut cold kernels (PR568's unchanged constructor), the same word with forty width-five entrance promotions (PR569's unchanged frame constructor) before those kernels, PR575's plain joint-prefix provider, and PR568's eight-cold provider. A window MILP with an exact per-pattern model chooses the dispatch and a literal owner map. PR583's six source-bound kernel frame coalescences (its unchanged constructor and negative controls) are applied to every PR571-prefix provider word (ck and atm3), followed by two further coalescences that each first move one addition past two commuting additions (package code/build_gate_moves.py, extending PR583's constructor); a final hyperplane_end step (package code/build_hpe.py) then runs 46 single-gate cleanups h -= p right after part B at the dim-8 join U of their registers, so 46 width-8 entering helpers per call end at U with width 7; each such gate commutes with every earlier cleanup gate on its registers (for 8 of them the partner's one earlier gate x -= p only reads p), and the reordered program is replayed exactly. A window MILP (exact windows, RINS around an LP vertex) gives the dispatch ck 45 / atm3 21 / jp8 6 and the literal owner map. + +Pinned external sources (unchanged; `verify.py` checks their manifests and every file it uses): +- PR568 (`research/complex-multicold`, commit `71c99ac935a33bb7b59a1b4a7af8725a939b0b90`). +- PR571 (`research/structural-gain`, commit `b7bdc5a8de18fcf418cfb9c7d83a2b1097a5e4a3`). +- PR569 (`research/larger-gain`, commit `897213a855b7fb8a1b8b0e552a2f5c42e6c1b326`). +- PR575 (`research/complex-joint-prefix`, commit `eac6f7e378ab622dac50a2fd4b7ef6eab014de44`). +- PR583 (`research/kernel-frame-coalescing`, commit `89be768f0157f5a3d8e4db69cf1748768605eac9`). + +Provider construction is described as typed steps in `data/SPEC.json` (`build`); `verify.py` runs only allowlisted step types with their paired omission audits and checks every input and output content hash. `code/` holds the spec-driven global admission scripts adapted from PR571's `frontier-composition/global-code/` (OpenAI Codex assisted, Apache-2.0): every expected value is read from `data/SPEC.json` and compared only after independent recomputation. `code/generated_identity.py` and `code/generated_identity_controls.py`, and the decompressed-content artifact identities in the bind, audit, invoice, assembly and phase-timing scripts, are taken unchanged from PR586 by chafreaky (`research/promoted-kernel-coalescing`, commit `4846fee5b06af770e9b3a10c36200f673d656725`, OpenAI Codex assisted, Apache-2.0), including its proof-content and reference/metadata mutation controls; the normalization of descriptive width metadata after frame changes follows the same PR. + +In PR601, the owner map was nominated by a HiGHS window MILP (adapted from PR569's `global/nominate_width7.py`) with lazy cross-time Hall cuts; this package's re-solved map is described below. Neither is an admission dependency. + +DreamingOfClouds with Claude Opus 5.5 (Anthropic), via Claude Code. (The PR601 package this one starts from states: "Prepared by Claude Code (Anthropic) research agents.") Apache-2.0 applies; LICENSE is included. All notices, licenses, source pins and AI disclosures of the pinned sources and their ancestry are retained in those packages and are not replaced by this notice. All inherited conditional assumptions remain conditional. + +**This package (complex-571-cold14, DreamingOfClouds).** It starts from PR601 (jeremykothe2, `research/complex-571-hpem46`, commit `529ab7dcb59d5ea7a5798e9e06cf5b3aee8a1550`). Everything above is kept unchanged except the following: +- every provider chain (ck, atm3, jp8) gains the typed step `cold_end` (`code/build_cold_end.py`, `code/cold_end_controls.py`; recipes `data/recipes/*-cold_end.json.gz`); +- the generalised native chain and the global admission scripts accept cold helpers that end below FULL (with `0:U` wrappers), a refactored exact cleanup, and check the wrapper order; +- `data/PLAN.json` / `data/OWNERS.json.gz` (dispatch and literal owner map) come from a relocate/swap/ejection-chain/provider-flip annealing search started from PR601's map, refined by an exact pattern-restricted owner model (CP-SAT) with a literal edge-colouring expansion (not an admission dependency); +- `data/SPEC.json` holds the expected values, recorded by a discovery run and then checked by a strict run. + +The cold-end construction (a row-plus-column cone condition for low-frame ends, a rank-0 dirt-spread premix and multi-gate lower-frame cleanup) builds on PR591 / PR592 / PR593 / PR601 (jeremykothe2) and our PR599 (Lean: multi-gate and cold hyperplane-end tails). DreamingOfClouds with Claude Opus 5.5 (Anthropic), via Claude Code. Build on this at your own risk. + +**This package (complex-571-cold14-b3, jeremykothe2).** It is PR604's `complex-571-cold14` (DreamingOfClouds) with ColdBeyond's second cold end per block (two new `cold_end` A-gate primitives, `PROOF-NOTE.md`), ColdSupply's E1 entering pair and reviewed controls, a free dispatch (jp8 ×60, atm3 ×12) and a literal owner map from an exact per-time-Hall window MIP. All other construction, code, controls and proofs are PR604's and earlier contributors', unchanged. + +**This package (complex-571-cold14-k492).** It is complex-571-cold14-b3 with these changes: +- **K-triangle base words.** The leaver-read K-triangle skeleton atom and its read schedule (`data/TRI-SCHEDULE.json`) are by AtomScout, a Claude Code research agent. `code/construct_k_triangle.py` is PR531's `code/construct_504.py` (icekylinx, OpenAI Codex / GPT assisted, Apache-2.0; pinned source `direct_delivery`) extended with that atom. +- **Ported chains.** The PR604/B3 chains are ported stage by stage onto the K-triangle words by `code/build_port_stage.py` (Port480, a Claude Code research agent). `code/build_frame_regroup.py` extends PR583's `build_frames.py` (chafreaky). +- **Helper count R.** The generalisation of the global scripts to the provider helper count R is by GlobalR (a Claude Code research agent), with AtomReviewer's fixes (PROOF-NOTE-R.md). +- **Owner map.** The owner map, the cold_end recipes on the K-triangle words and the package assembly are by Stack492, Port480 and ColdBeyond (Claude Code research agents). + +Build on this at your own risk. diff --git a/research/complex-t37-independent-seed39/vendor/pr870/code/assemble.py b/research/complex-t37-independent-seed39/vendor/pr870/code/assemble.py new file mode 100644 index 0000000000..581dd9cb29 --- /dev/null +++ b/research/complex-t37-independent-seed39/vendor/pr870/code/assemble.py @@ -0,0 +1,241 @@ +"""Gauge44 complete global admission with the retained native exact-complex moment. + +Prepared with OpenAI Codex assistance. The rational engines and outer +constraints are retained from PR547/PR548 and their preserved ancestry. +The bit operator is the cited unchanged PR589 supplier (PR555's punctured +R439 word, v = 111, decoder constant 63, two A-section transports), shipped +as inputs/PR589-EXPECTED.json and pinned by git blob id. Its rank-mass +deficit is derived from the word's parameters, T(2Kv - L*cst) at nine +stages (PR545/PR555 rank-mass identity), not hard-coded. The complex owner +and invoice inputs must be freshly emitted by the packaged physical replay. +All conservative admission guards and conservative moment/outer witnesses run +before the PR559 native-complex correction. The bit surcharge is retained. +""" +from pathlib import Path +from fractions import Fraction as Q +from decimal import Decimal, localcontext +import argparse,json,hashlib,importlib.util,os,sys +from collections import Counter +assert __debug__, 'Assertions required' +P=Path(sys.argv[1] if __name__=='__main__' else os.environ['GAIN_PR564_SOURCE']).resolve() +read=lambda p:json.loads(p.read_text()) +sha=lambda p:hashlib.sha256(p.read_bytes()).hexdigest() +hash_ok=lambda x:isinstance(x,str) and len(x)==64 and all(t in '0123456789abcdef'for t in x) +digest=lambda x:hashlib.sha256(json.dumps(x,separators=(',',':')).encode()).hexdigest() +def load(n): + s=importlib.util.spec_from_file_location(n,P/'engines'/(n+'.py'));m=importlib.util.module_from_spec(s);s.loader.exec_module(m);return m +M,B,A=[load(n)for n in ('moment','base_two_moment','outer')] +def dec(x): + with localcontext()as ctx:ctx.prec=70;return str(Decimal(x.numerator)/Decimal(x.denominator)) +from witness import DISPATCH,CALL_ORDER,COUNTS,PIDS,X,DISCOVER,pin,SPOT,spot_widths +# Cited bit supplier: PR589's tune/EXPECTED.json (merged on main as research/e8-bit-p111-tuned/tune/EXPECTED.json). +BIT_PATH=Path(__file__).resolve().parents[1]/'inputs/PR589-EXPECTED.json' +BIT_BLOB='e293ddc557742637f9f679f083a1a282d87b1b13' +# Nine-stage bit template (PR463/PR510 chain, 32 replicas): L stages, T replicas, K=(L-1)//2 pairs, moment width M=1+7L. +BIT_L,BIT_T=9,32;BIT_K=(BIT_L-1)//2;BIT_M=1+7*BIT_L +def git_blob(data):return hashlib.sha1(b'blob '+str(len(data)).encode()+b'\0'+data).hexdigest() +def load_bit(data): + """The pinned supplier record: its full record (word parameters) and its nine-stage price.""" + assert git_blob(data)==BIT_BLOB,'bit supplier blob pin' + return json.loads(data) +def bit_deficit(word,live): + """Rank-mass deficit M*live - mass = T(2Kv - L*cst) of a v-port bit word with decoder constant cst (PR545/PR555). + cst is the sum of the retained totals' COPY ranks and live = 2KvT data wires; both are cross-checked here, and the + caller checks the result against the priced profile, so neither v nor cst is free.""" + v,cst,ranks=word['v'],word['decoder_constant'],word['copy_ranks'] + assert type(v)is int and type(cst)is int and all(type(r)is int and 00;return d + + +def assemble(owner,invoice,owner_sha,invoice_sha): + # These are admission receipts, not optional collections of successful rows. + # Require both orientations and every finite check before pricing anything. + assert owner['status']=='PASS_INDEPENDENT_ASYNC_OWNERS_AND_PROFILE' + assert invoice['status']=='PASS_INDEPENDENT_MIXED_ASYNC_SCALAR_PREFIX_AND_FINITE_INVOICE' + assert all(hash_ok(x)for x in (owner_sha,invoice_sha,owner['template_sha256'],owner['controller_audit_sha256'],invoice['parent_template_sha256'])) + checks={'local_primitive_bound','logical','router','literal','mass','precision','tape','row','halving'} + assert set(invoice['strict_checks'])==checks + assert all(invoice['strict_checks'][name] is True for name in checks) + assert set(invoice['providers'])==set(PIDS) + assert invoice['provider_counts']==COUNTS + assert owner['all_live_owners_per_call_distinct'] is True + # R (helpers per provider word) is read from the invoice and must be shared by every provider; n=2v+R. + R=invoice['helpers'];assert type(R) is int and R>0 and all(p['helpers']==R for p in invoice['providers'].values()) + assert owner['owners_per_call']==2*112+R and owner['actual_helper_owner_charts']==owner['hosted_residuals']==144*R==pin('expected.hosted_residuals',owner['hosted_residuals']) + pin('expected.rank_mass',owner['rank_mass']) + pin('expected.actual_73column_sigmas',owner['actual_73column_sigmas']);pin('expected.cross_replica_helper_roles',owner['cross_replica_helper_roles']) + pin('expected.idle_remainders',owner['explicit_idle_remainder_children']) + assert invoice['complete_invocation_sweeps']==invoice['bridge_sweeps']==144 + assert invoice['live']==owner['live'] and invoice['physical']==owner['physical'] + assert invoice['centres']==8 + assert invoice['physical_stock_identity']==dict(data_and_owner_families=14336,local_helpers=R,private_centres=8,coefficient_work=2) + assert sum(invoice['physical_stock_identity'].values())==invoice['physical'] + assert invoice['controller_audit_sha256']==owner['controller_audit_sha256'] + for pid,p in invoice['providers'].items(): + assert set(p['local'])=={'forward','backward'} + assert p['helpers']==R and p['centres']==8 and p['n']==2*112+R and p['v']==112 and p['h']==9 + K='providers.'+pid+'.';pin(K+'entering',p['entering_helpers']);pin(K+'entrance',p['entrance_rank']) + pin(K+'inventory',p['width_inventory']) + assert all(type(w) is int and 0=0 for n in idle.values()) + idle=+idle;assert sum(idle.values())==owner['explicit_idle_remainder_children'] + pin('expected.idle_remainder_profile',{str(r):n for r,n in sorted(idle.items())}) + paid.update(idle) + assert dict(paid)=={int(r):n for r,n in owner['paid_profile'].items()} + assert invoice['compiler']==64*74**3 + assert invoice['local_adapters']==max(p['local_adapters']for p in invoice['providers'].values()) + assert invoice['local_primitive_bound']==max(p['local_primitive_bound']for p in invoice['providers'].values()) + # Recount the retained dedicated-bank envelope independently. Its geometry + # stays fixed, while every local primitive and wrapper comes from the actual + # selected provider/orientation sums above. + parent_live,parent_physical,parent_idle=23408,23922,32256 + parent_banks,rem=divmod(parent_live-2*112*4*16,9);assert rem==0 and parent_physical==parent_live+504+8+2 # two independent bank groups, each with R0=504 helpers; restored private workspace is shared + assert owner['source_idle_children_charged']==parent_idle + bridges,shifts=2*112*144,4*112*16;moves=2*shifts + nonlocal_items=(4*112*16*9+2*112*16*9+2*144*R+parent_idle+9*parent_banks+bridges+shifts+moves+parent_live+parent_physical+invoice['wrapper_elementary_factors_charged']) + outside=8*nonlocal_items+64*73 + pervertex=(invoice['selected_real_component_primitives']+bridges+shifts+moves+parent_live+(144*invoice['local_adapters']+outside)*invoice['compiler']+64*parent_physical) + rebased=pervertex+65*(invoice['physical']-parent_physical)+(invoice['live']-parent_live) + assert invoice['unhosted_pervertex']==pervertex and invoice['hosted_rebased_pervertex']==rebased + used=max(pervertex,rebased) + prior=invoice['retained_prior_overcharge'] + if prior is not None: + assert hash_ok(prior['sha256']) and type(prior['previous_pervertex_allowance']) is int and prior['previous_pervertex_allowance']>0 + assert prior['added_complete_new_pervertex']==pervertex + assert prior['policy']=='Retain old allowance and add entire fresh mixed recount.' + used=max(used,prior['previous_pervertex_allowance']+pervertex) + assert invoice['conservative_pervertex_used']==used + finite=invoice['finite'] + assert 02*48*48) + assert actual_checks==invoice['strict_checks'] and all(actual_checks.values()) + bit_record=load_bit(BIT_PATH.read_bytes()) + bit=bit_record['nine'] + assert 'nine-stage' in bit['pipeline'] and '32 replicas' in bit['pipeline'] + c=Q(bit['bit_lower']) + bit_D=bit_deficit(bit_record['word'],bit['bit']['live']) + H={int(r):n for r,n in owner['paid_profile'].items()};pin('expected.global_profile',owner['paid_profile']) + # Claimed lower endpoints come from the spec; discovery derives them with the same certified moment engine. + # Either way they are verified below (accepted at b, rejected at b+1e-24). + if DISCOVER:b=Q(M.certify(H,73,owner['live'],False)['lower']);conservative_b=Q(M.certify(H,73,owner['live'],True)['lower']) + else:b=Q(X['complex_lower']);conservative_b=Q(X['conservative_complex_lower']) + assert owner['template_sha256']==invoice['template_sha256'] and owner_sha==invoice['owner_audit_sha256'] + pin('expected.live',owner['live']);pin('expected.physical',owner['physical']);assert owner['deficit']==5120 + assert owner['banked_residuals']==0 + def check_moment(side,h,m,W,lower,deficit,bad): + assert m*W-sum(r*n for r,n in h.items())==deficit and m*m>2*max(h)**2 + rows=[] + for z,accept in [(lower,True),(lower+Q(1,10**24),False)]: + l,u=M.moment(h,m,W,z,bad);ll,uu=B.moment(m,W,list(h.items()),z) + if bad: + fl,fu=B.moment(m,W,[(1,32*m*m*sum(h.values()))],z);ll+=fl/10**16;uu+=fu/10**16 + assert (u<1 and uu<1)if accept else(l>1 and ll>1) + rows.append(dict(side=side,surcharge=bad,endpoint=str(z),accept=accept,mercator=[str(l-1),str(u-1)],base_two=[str(ll-1),str(uu-1)])) + return rows + bitH={int(r):n for r,n in bit['profile'].items()} + assert BIT_M==64 and sum(r*n for r,n in bitH.items())==bit['bit']['rank_mass'] + bit_moments=check_moment('bit',bitH,BIT_M,bit['bit']['live'],c,bit_D,True) + conservative_moments=check_moment('conservative_complex',H,73,owner['live'],conservative_b,5120,True) + assert bit['bit']['two_level_coefficient_bits']0 + ceil=lambda x:-(-x.numerator//x.denominator);cut=max(ceil(36/gap**2),ceil(2*(4+512)/gap));assert cut*gap**2>=36 and cut*gap>=2*(4+512) + cuts.append(dict(exponent=str(a),gap=str(gap),cutoff_log2=str(cut)));chain.append(a) + q=chain[-1]*(1-2*eta);margin=(1-eta)*q/(1+q);ticks=margin*10**18;k=Q((ticks.numerator-1)//ticks.denominator,10**18) + bridge={'semantic':{'C0':{'base':2,'exponent':210000},'strict_literal_gap':1},'rows':{'degree_gap':Q(10**6)-Q(51*20161,25)}} + outer=A.assembly(chain[-1],bb,bridge,k,eta=eta,beta=beta);assert len(outer['strict_constraints'])==47 and all(v>0 for v in outer['strict_constraints'].values()) + controls=[] + for name,kk,ee,be in [('next_grid',k+Q(1,10**18),eta,beta),('zero_eta',k,Q(0),beta),('zero_beta',k,eta,Q(0)),('unit_beta',k,eta,Q(1))]: + try:A.assembly(chain[-1],bb,bridge,kk,eta=ee,beta=be) + except AssertionError:controls.append(name) + else:raise AssertionError(name) + return k,cuts,outer,controls + conservative_k,conservative_cuts,conservative_outer,conservative_controls=outer_witness(conservative_b) + pin('expected.conservative_kappa_decimal',dec(conservative_k)) + # Only after every conservative supplier/admission/outer check succeeds is + # the reviewed native exact-complex recurrence selected. Bit charge stays. + native_moments=check_moment('complex',H,73,owner['live'],b,5120,False) + k,cuts,outer,controls=outer_witness(b) + pin('expected.kappa_decimal',dec(k)) + assert M.moment(H,73,owner['live'],b,True)[0]>1 + assert M.moment(bitH,64,bit['bit']['live'],c+Q(1,10**24),False)[1]<1 + model_controls=['native_complex_endpoint_rejected_with_old_surcharge','omitting_bit_surcharge_would_fail_next_endpoint_rejection'] + moments=bit_moments+native_moments + input_hashes={'owner_audit':owner_sha,'fresh_invoice':invoice_sha,'package:inputs/PR589-EXPECTED.json':sha(BIT_PATH)} + input_hashes.update({'engines/'+name+'.py':sha(P/'engines'/(name+'.py'))for name in ('moment','base_two_moment','outer')}) + return dict(status='PASS_GAUGE44_NATIVE_EXACT_GLOBAL_ASSEMBLY',kappa=str(k),kappa_decimal=dec(k),complex_lower=str(b),complex_decimal=dec(b),bit_lower=str(c),bit_decimal=dec(c),binding='complex',gain_over_pr635_percent=dec(100*(k/Q(X['gain_baseline_kappa'])-1)),complex_profile=H,provider_counts=invoice['provider_counts'],surcharge_model={'complex':False,'bit':True},conservative_complex_lower=str(conservative_b),conservative_complex_decimal=dec(conservative_b),conservative_kappa=str(conservative_k),conservative_kappa_decimal=dec(conservative_k),conservative_moments=conservative_moments,conservative_bootstrap=conservative_cuts,conservative_outer={n:str(v)for n,v in conservative_outer['strict_constraints'].items()},conservative_controls=conservative_controls,model_controls=model_controls,native_correction_gain=dec(k-conservative_k),template_sha256=owner['template_sha256'],input_sha256=input_hashes,bit_supplier=dict(pr=589,repository='CrocSwap/integer-mult-bounds',commit='a5afc8c6169ea61ba7c51dfd3cade02cc7b13b46',merged_as='b3eb785ac5b4b1ca2beea0f80db078a505626a90',path='research/e8-bit-p111-tuned/tune/EXPECTED.json',git_blob_sha1=BIT_BLOB,word=dict(v=bit_record['word']['v'],decoder_constant=bit_record['word']['decoder_constant'],copy_ranks=bit_record['word']['copy_ranks']),derived_deficit=bit_D,deficit_formula='T(2Kv-L*cst), L=%d T=%d K=%d M=%d'%(BIT_L,BIT_T,BIT_K,BIT_M),replay_scope='Cited unchanged supplier; this assembly reprices its full profile and does not rebuild its bit circuit.'),moments=moments,bootstrap=cuts,outer={n:str(v)for n,v in outer['strict_constraints'].items()},controls=controls,scope='Conditional native exact-complex witness after complete conservative admission, moment and outer checks; PR559 exact-cover recurrence correction only, bit bad-residue surcharge and H1-H5 retained. The new source-branch gauge and retired-basis completion, the gauge44-barch U8 local word and all 72 cold helper ends, and explicit all144 whole-owner dispatch with a two-copy remainder trade are composed with the cited unchanged merged PR589 bit supplier (PR555 punctured R439 word; derived bit deficit T(2Kv-L*cst)), replacing the PR543 supplier of PR635; This is a new T16 composition of the accepted PR799 and PR589 suppliers. All-size compiler, common-label/mutable-source realization, whole-call hosting, precision/tape and analytic transfer remain assumptions. No unconditional theorem or full Lean certification.') +if __name__=='__main__': + import sys + package,C,out=map(Path,sys.argv[1:4]);assert package.resolve()==P and not out.exists() + owner_path=C/'audit/OWNERS-AND-PROFILE.json';invoice_path=C/'audit/PREFIX-AND-INVOICE.json' + owner,invoice=read(owner_path),read(invoice_path) + assert owner['template_sha256']==read(C/'hosted/HOSTED.json')['template_sha256'] + r=assemble(owner,invoice,sha(owner_path),sha(invoice_path));out.write_text(json.dumps(r,indent=2)+'\n');print(r['status'],r['kappa_decimal']) diff --git a/research/complex-t37-independent-seed39/vendor/pr870/code/assembly_controls.py b/research/complex-t37-independent-seed39/vendor/pr870/code/assembly_controls.py new file mode 100644 index 0000000000..096ba9cdfe --- /dev/null +++ b/research/complex-t37-independent-seed39/vendor/pr870/code/assembly_controls.py @@ -0,0 +1,260 @@ +"""Independent admission controls for the N-provider native-complex assembly (per-provider controls). + +Prepared with OpenAI Codex assistance; Apache-2.0. Mutation receipts are +rebound to their new owner digest, so unrelated stale hashes cannot conceal +an incomplete width, provider, orientation, paid-profile or finite check. +The fresh physical replay remains a separate prerequisite. +""" +import argparse +import copy +import itertools +import math +import hashlib +import json +import os +from pathlib import Path +import sys as _s,pathlib as _p;_s.path.insert(0,str(_p.Path(__file__).resolve().parent)) +from witness import * + +assert __debug__, 'Assertions required' +P = Path(__file__).resolve().parent +sha = lambda p: hashlib.sha256(p.read_bytes()).hexdigest() +digest = lambda x: hashlib.sha256(json.dumps(x, sort_keys=True, separators=(',', ':')).encode()).hexdigest() + + +def verify(owner_path, invoice_path, source_package): + os.environ['GAIN_PR564_SOURCE'] = str(source_package.resolve()) + from assemble import assemble + owner = json.loads(owner_path.read_text()) + invoice = json.loads(invoice_path.read_text()) + baseline = assemble(owner, invoice, sha(owner_path), sha(invoice_path)) + + def empty_maps(o, i): + i['strict_checks'] = {} + i['providers'] = {} + + def understated_stock(o, i): + o['physical'] -= 1 + i['physical'] -= 1 + i['physical_stock_identity']['coefficient_work'] -= 1 + + def changed_profile(o, i): + o['paid_profile']['1'] += 2 + o['paid_profile']['2'] -= 1 + + def wrong_orientation(o, i): + c = next(c for c in i['selected_calls'] if c['stage'] == 0) + c['orientation'] = 'backward' + p = i['providers'][c['provider_id']] + z = p['local']['backward'] + c['program_sha256'] = p['program_hashes']['backward'] + for name in ('events', 'macros', 'real_component_primitives', + 'coefficient_work_primitive_count', 'pre_wrappers', 'post_wrappers'): + c[name] = z[name] + i['selected_real_component_primitives'] = sum(c['real_component_primitives'] for c in i['selected_calls']) + i['selected_coefficient_work_primitive_count'] = sum(c['coefficient_work_primitive_count'] for c in i['selected_calls']) + + def understated_prefix(o, i): + for p in i['providers'].values(): + for z in p['local'].values(): + z['prefix_bits'], z['prefix_l1'] = 1, '1' + i['global_prefix_bits'] = 1 + 37 + 144 + 144 + 4 + + def reordered_calls(o, i): + i['selected_calls'][0], i['selected_calls'][1] = i['selected_calls'][1], i['selected_calls'][0] + + def no_cold_wrappers(o, i): + for p in i['providers'].values(): + p['entering_helpers'] -= 4 + for z in p['local'].values():z['pre_wrappers'] = z['post_wrappers'] = p['entering_helpers'] + for c in i['selected_calls']: + c['entering_helpers'] = c['pre_wrappers'] = c['post_wrappers'] = i['providers'][c['provider_id']]['entering_helpers'] + i['wrapper_elementary_factors_charged'] = sum(2*c['pre_wrappers'] for c in i['selected_calls'])*i['factors_per_wrapper'] + + controls = [ + ('empty_certification_maps', empty_maps), + ('failed_invoice_status', lambda o, i: i.__setitem__('status', 'FAIL')), + ('nonboolean_precision_check', lambda o, i: i['strict_checks'].__setitem__('precision', 'true')), + ('wrong_owner_role_count', lambda o, i: o.__setitem__('actual_helper_owner_charts', o['actual_helper_owner_charts'] - 1)), + ('understated_physical_stock', understated_stock), + ('changed_profile_same_rank_mass', changed_profile), + ('insufficient_finite_C0', lambda o, i: i['finite'].__setitem__('required_C0_bits', 210001)), + ('missing_finite_check', lambda o, i: i['strict_checks'].pop('halving')), + ('wrong_reflected_orientation_selfconsistent_totals', wrong_orientation), + ('missing_selected_call', lambda o, i: i['selected_calls'].pop()), + ('wrong_selected_primitive_sum', lambda o, i: i.__setitem__('selected_real_component_primitives', i['selected_real_component_primitives'] - 1)), + ('wrong_selected_coefficient_work_sum', lambda o, i: i.__setitem__('selected_coefficient_work_primitive_count', i['selected_coefficient_work_primitive_count'] - 1)), + ('unpaid_wrapper_factors', lambda o, i: i.__setitem__('wrapper_elementary_factors_charged', i['wrapper_elementary_factors_charged'] - 144)), + ('wrong_global_compiler', lambda o, i: i.__setitem__('compiler', 1)), + ('wrong_global_adapter_maximum', lambda o, i: i.__setitem__('local_adapters', 1)), + ('understated_exact_prefix_and_global_sum', understated_prefix), + ('wrong_global_prefix_sum', lambda o, i: i.__setitem__('global_prefix_bits', 224)), + ('wrong_row_prefix_reserve', lambda o, i: i.__setitem__('row_prefix_extra', 0)), + ('wrong_parent_geometry_charge', lambda o, i: i.__setitem__('unhosted_pervertex', 1)), + ('wrong_rebased_geometry_charge', lambda o, i: i.__setitem__('hosted_rebased_pervertex', 1)), + ('wrong_complete_pervertex_envelope', lambda o, i: i.__setitem__('conservative_pervertex_used', 1)), + ('wrong_prior_added_complete_invoice', lambda o, i: i['retained_prior_overcharge'].__setitem__('added_complete_new_pervertex', 1)), + ('wrong_finite_router_bits', lambda o, i: i['finite'].__setitem__('router_bits', 1)), + ('wrong_finite_literal_bits', lambda o, i: i['finite'].__setitem__('literal_bits', 1)), + ('wrong_finite_physical_stock_bits', lambda o, i: i['finite'].__setitem__('physical_stock_bits', 1)), + ('wrong_finite_row_coefficient', lambda o, i: i['finite'].__setitem__('physical_row_coefficient', 1)), + ('reordered_complete_calls', reordered_calls), + ('understated_explicit_idle_remainders', lambda o, i: o.__setitem__('explicit_idle_remainder_children', o['explicit_idle_remainder_children']-1)), + ('understated_actual_chart_types', lambda o, i: o.__setitem__('actual_73column_sigmas', o['actual_73column_sigmas']-1)), + ('wrong_cross_replica_role_count', lambda o, i: o.__setitem__('cross_replica_helper_roles', o['cross_replica_helper_roles']-1)), + ('old_no_cold_wrapper_counts_selfconsistent', no_cold_wrappers), + ] + + def resync(i, c): + p = i['providers'][c['provider_id']] + c['program_sha256'] = p['program_hashes'][c['orientation']] + c['entering_helpers'], c['entrance_rank'] = p['entering_helpers'], p['entrance_rank'] + for name in ('events','macros','real_component_primitives','coefficient_work_primitive_count','pre_wrappers','post_wrappers'): + c[name] = p['local'][c['orientation']][name] + + # Every provider gets the full per-provider control set, substituting a partner provider where needed. + for P in PIDS: + Qp = partner(P) if len(PIDS)>1 else '__unregistered__' + widths = invoice['providers'][P]['widths'] + + def forged_program_hash(o, i, P=P): + i['providers'][P]['program_hashes']['forward'] = '0' * 64 + for c in i['selected_calls']: + if c['provider_id'] == P: + c['program_sha256'] = '0' * 64 + + def wrong_selected_call(o, i, P=P): + c = next(c for c in i['selected_calls'] if c['provider_id'] == P) + d = next(d for d in i['selected_calls'] if d is not c and (d['provider_id'] != P or len(PIDS)==1) and (d['stage'] - c['stage']) % 2 == 0) + c['stage'], d['stage'], c['replica'], d['replica'] = d['stage'], c['stage'], d['replica'], c['replica'] + + def stale_program(o, i, P=P, Qp=Qp): + p = i['providers'][P] + p['program_hashes'] = copy.deepcopy(i['providers'][Qp]['program_hashes']) + for c in i['selected_calls']: + if c['provider_id'] == P: + c['program_sha256'] = p['program_hashes'][c['orientation']] + + def stale_profile(o, i, P=P, Qp=Qp): + p = i['providers'][P] + p['paid_profile'] = copy.deepcopy(i['providers'][Qp]['paid_profile']) + p['children'] = sum(p['paid_profile'].values()) + + def moved(o, i, P=P): + a = next(c for c in i['selected_calls'] if c['provider_id'] == P) + b = next(c for c in i['selected_calls'] if c['provider_id'] != P and c['orientation'] == a['orientation']) + a['provider_id'], b['provider_id'] = b['provider_id'], a['provider_id'] + resync(i, a); resync(i, b) + + def compensating(o, i, P=P, Qp=Qp): + # Two dishonest profiles that cancel exactly in the dispatch-weighted aggregate. + g = math.gcd(COUNTS[P], COUNTS[Qp]); dp, dq = COUNTS[Qp] // g, COUNTS[P] // g + p, q = i['providers'][P], i['providers'][Qp] + p['paid_profile']['1'] += dp; q['paid_profile']['1'] -= dq + p['children'] += dp; q['children'] -= dq + + def forged_recipe(o, i, P=P): + name = 'CLIFFORD-RECIPES.json' + i['providers'][P]['artifacts'][name] = '0'*64 + o['source_artifacts']['providers/'+P+'/'+name] = '0'*64 + + def forged_phase(o, i, P=P): + i['providers'][P]['semantic_artifact_sha256']['CLIFFORD-REVIEW.json'] = '0'*64 + o['provider_phase_semantic_sha256'][P] = i['provider_phase_semantic_sha256'][P] = '0'*64 + + controls += [ + (P + ':missing_provider', lambda o, i, P=P: i['providers'].pop(P)), + (P + ':missing_backward_orientation', lambda o, i, P=P: i['providers'][P]['local'].pop('backward')), + (P + ':unpaid_scalar_primitive', lambda o, i, P=P: i['providers'][P]['local']['forward'].__setitem__('real_component_primitives', i['providers'][P]['local']['forward']['real_component_primitives'] - 1)), + (P + ':wrong_local_artifact_binding', lambda o, i, P=P: i['providers'][P]['artifacts'].__setitem__('LOCAL-PROGRAMS.json.gz', '0' * 64)), + (P + ':false_dirty_restoration', lambda o, i, P=P: i['providers'][P]['local']['backward'].__setitem__('all_dirty_helper_columns_restored', False)), + (P + ':wrong_declared_provider_count', lambda o, i, P=P: i['provider_counts'].__setitem__(P, i['provider_counts'][P] + 1)), + (P + ':wrong_local_compiler', lambda o, i, P=P: i['providers'][P].__setitem__('compiler', 1)), + (P + ':wrong_local_adapter_charge', lambda o, i, P=P: i['providers'][P].__setitem__('local_adapters', 1)), + (P + ':wrong_local_primitive_bound', lambda o, i, P=P: i['providers'][P].__setitem__('local_primitive_bound', 1)), + (P + ':forged_provider_and_call_program_hash', forged_program_hash), + (P + ':provider_at_wrong_call', wrong_selected_call), + (P + ':stale_partner_program_consistent_call_hashes', stale_program), + (P + ':stale_partner_profile_consistent_child_total', stale_profile), + (P + ':relocated_against_partner_same_counts', moved), + (P + ':compensating_false_profiles_with_' + Qp, compensating), + (P + ':synchronized_forged_source_recipe_hash', forged_recipe), + (P + ':synchronized_forged_phase_review_semantics', forged_phase), + ] + if len(PIDS)==1: + # Cross-provider substitutions require a second actual supplier. + # All single-provider program, phase, profile and dispatch bindings + # retain their direct mutations above and in the controller audit. + partner_only = {P+':stale_partner_program_consistent_call_hashes', + P+':stale_partner_profile_consistent_child_total', + P+':relocated_against_partner_same_counts', + P+':compensating_false_profiles_with_'+Qp} + controls = [(name, fn) for name, fn in controls if name not in partner_only] + # Width order and inventory: swap the first helper of every pair of distinct widths (same inventory), + # and shift one unit between them (same total). + first = {} + for h, w in enumerate(widths): + first.setdefault(w, h) + for wa, wb in itertools.combinations(sorted(first), 2): + def swap(o, i, P=P, a=first[wa], b=first[wb]): + w = i['providers'][P]['widths']; w[a], w[b] = w[b], w[a] + def shift(o, i, P=P, a=first[wa], b=first[wb]): + w = i['providers'][P]['widths']; w[a] += 1; w[b] -= 1 + controls.append((P + ':width_order_swap_%d_%d' % (wa, wb), swap)) + controls.append((P + ':width_inventory_shift_%d_%d' % (wa, wb), shift)) + for h in SPOT: + def cold_swap(o, i, P=P, h=h): + w = i['providers'][P]['widths']; j = w.index(9 if w[h] != 9 else 8); w[h], w[j] = w[j], w[h] # never the identity + controls.append((P + ':cold_helper_width_swap_%d' % h, cold_swap)) + rejected = [] + accepted = [] + for name, mutate in controls: + o, i = copy.deepcopy(owner), copy.deepcopy(invoice) + mutate(o, i) + oh = digest(o) + i['owner_audit_sha256'] = oh + try: + assemble(o, i, oh, digest(i)) + except (AssertionError, KeyError): + rejected.append(name) + else: + # Discovery has no pinned values to reject spec-only mutations; the strict run must reject every control. + if not DISCOVER: + raise AssertionError('Invalid admission receipt accepted: ' + name) + accepted.append(name) + try: + assemble(owner, invoice, '0' * 64, sha(invoice_path)) + except AssertionError: + rejected.append('wrong_owner_receipt_hash') + else: + raise AssertionError('Wrong owner digest accepted') + pin('expected.assembly_controls_rejected', len(rejected)) + assert baseline['controls'] == ['next_grid', 'zero_eta', 'zero_beta', 'unit_beta'] + assert baseline['conservative_controls'] == baseline['controls'] + assert baseline['surcharge_model'] == {'complex': False, 'bit': True} + assert len(baseline['model_controls']) == 2 + return dict( + status='PASS_EXACT_MIXED_048_ALLCOLD_NATIVE_ASSEMBLY_ADMISSION_NEGATIVE_CONTROLS', + valid_receipt_kappa=baseline['kappa'], + input_sha256=baseline['input_sha256'], + assembler_sha256=sha(Path(__file__).resolve().parent / 'assemble.py'), + rejected_controls=rejected, + discovery_accepted_controls=accepted, + exact_outer_controls=baseline['controls'], + conservative_outer_controls=baseline['conservative_controls'], + recurrence_model_controls=baseline['model_controls'], + scope='Complete receipt schema; ordered widths and both reflected providers; exact program, work and paid-profile binding; independently recounted compiler, conservative envelope and finite inequalities. Does not replace fresh physical replay.', + ) + + +if __name__ == '__main__': + ap = argparse.ArgumentParser(description=__doc__) + ap.add_argument('--source-package', type=Path, required=True) + ap.add_argument('--owner', type=Path, required=True) + ap.add_argument('--invoice', type=Path, required=True) + ap.add_argument('--out', type=Path, required=True) + a = ap.parse_args() + assert not a.out.exists() + result = verify(a.owner, a.invoice, a.source_package) + a.out.write_text(json.dumps(result, indent=2) + '\n') + print(result['status'], len(result['rejected_controls'])) diff --git a/research/complex-t37-independent-seed39/vendor/pr870/code/audit_allcold.py b/research/complex-t37-independent-seed39/vendor/pr870/code/audit_allcold.py new file mode 100644 index 0000000000..923bf7b675 --- /dev/null +++ b/research/complex-t37-independent-seed39/vendor/pr870/code/audit_allcold.py @@ -0,0 +1,254 @@ +"""OpenAI Codex independent serialized ASYNCHRONOUS controller/spectator audit. +Imports no emitter, optimizer, expander, edge-coloring, or source hosting code. +CLI: BASE HOSTED REPORT [--mutation-controls] +Each provider is independently read from BASE/providers, never from a baseline width histogram. +OpenAI Codex two-provider width-seven extension; retains all inherited independent controller checks. +The exact 63 width-seven and 9 plain calls are frozen below. +""" +import sys,json,gzip,hashlib,copy +assert __debug__, 'Assertions must remain enabled' +from pathlib import Path +from collections import Counter,defaultdict +import sys as _s,pathlib as _p;_s.path.insert(0,str(_p.Path(__file__).resolve().parent)) +from witness import * +from generated_identity import artifact_identities +BASE,OUT,REPORT=map(lambda p:Path(p).resolve(),sys.argv[1:4]);read=lambda p:json.loads(gzip.decompress(p.read_bytes())if p.suffix=='.gz'else p.read_bytes()) +parent=read(BASE/'split-centres/GLOBAL-TEMPLATE.json.gz') +ph=read(BASE/'work/complex-nine-native/DATA-PHASES.json') +ct=read(OUT/'GLOBAL-TEMPLATE.json.gz');summary=read(OUT/'HOSTED.json') +sha=lambda p:hashlib.sha256(p.read_bytes()).hexdigest() +provider_ids=PIDS +providers={};registry={};phase_semantic_hashes={};artifact_semantic_hashes={} +required_artifacts={'work/complex-nine-native/DATA-PHASES.json'} +provider_files=('CANONICAL-WORD.json.gz','LOCAL-PROGRAMS.json.gz','LOCAL-CHECKS.json', + 'INDEPENDENT-LOCAL-REPLAY.json','RESIDUAL-ADAPTERS.json','CLIFFORD-RECIPES.json','CLIFFORD-REVIEW.json') +for pid in provider_ids: + p=BASE/'providers'/pid + c=read(p/'CANONICAL-WORD.json.gz');checks=read(p/'LOCAL-CHECKS.json') + programs=read(p/'LOCAL-PROGRAMS.json.gz');replay=read(p/'INDEPENDENT-LOCAL-REPLAY.json') + phase=read(p/'CLIFFORD-REVIEW.json');adapters=read(p/'RESIDUAL-ADAPTERS.json')['recipes'] + widths=[len(c['frames'][c['final'][2*c['v']+h]])-len(c['frames'][c['start'][2*c['v']+h]])for h in range(c['R'])] # HPE: residual width |final|-|start| + assert tuple(widths[h]for h in SPOT)==spot_widths();pin('providers.%s.inventory'%pid,{str(k):v for k,v in sorted(Counter(widths).items())}) + canonical_sha=sha(p/'CANONICAL-WORD.json.gz');programs_sha=sha(p/'LOCAL-PROGRAMS.json.gz') + assert replay['status']=='PASS_INDEPENDENT_LOCAL_SCALAR_FRAME_AND_WRAPPER_REPLAY' + assert replay['canonical_word_sha256']==canonical_sha and replay['local_programs_sha256']==programs_sha + assert replay['v']==c['v'] and replay['helpers']==c['R'] + assert set(programs)==set(checks)==set(replay['local'])==set(replay['paid_profiles'])=={'forward','backward'} + for orientation,events in programs.items(): + ck=checks[orientation];rr=replay['local'][orientation] + assert hashlib.sha256(json.dumps(events,sort_keys=True,separators=(',',':')).encode()).hexdigest()==ck['sha256'] + assert ck['events']==len(events) and ck['all_columns']==2*c['v']+c['R'] + assert ck['private_centers_cleared'] and ck['private_coefficient_stream_cleared_after_each_macro'] + assert rr['all_exact_columns']==2*c['v']+c['R'] and rr['private_work_erased'] + literal=Counter(e[-1]for e in events if e[0]in('climb','center')) + assert dict(literal)=={int(r):n for r,n in ck['paid_profile'].items()}=={int(r):n for r,n in c['local_profile'].items()} + assert ck['paid_profile']==replay['paid_profiles'][orientation] + assert phase['canonical_word_sha256']==canonical_sha and phase['recipe_sha256']==sha(p/'CLIFFORD-RECIPES.json') + assert phase['all_child_equalities_include_global_phase'] + artifact_semantic_hashes[pid]=artifact_identities(p) + pin('providers.%s.artifact_semantic_sha256'%pid,artifact_semantic_hashes[pid]) + phase_semantic_hashes[pid]=artifact_semantic_hashes[pid]['CLIFFORD-REVIEW.json'] + for h,w in enumerate(widths): + assert 0>i)&1==0);a=q^(1<>i&1 else 0)for i in order]+[1<2*max(paid)**2 + return dict(profile=dict(sorted(paid.items())),mass=mass,hosted=HOSTED,entering=entering,cross_replica=cross,sigma_digest=digest.hexdigest(),sigmas=sigmas,idle_remainders=len(wanted),busy_family_checks=len(roles),invocations=144) + +r=audit(ct);raw=gzip.decompress((OUT/'GLOBAL-TEMPLATE.json.gz').read_bytes());assert hashlib.sha256(raw).hexdigest()==summary['template_sha256'];assert r['profile']=={int(k):v for k,v in summary['global_profile'].items()};assert r['sigmas']==read(OUT/'ACTUAL-SIGMAS.json.gz');assert r['sigma_digest']==summary['sigma_stream_sha256'] +assert all(hashlib.sha256((BASE/name).read_bytes()).hexdigest()==value for name,value in summary['source_artifacts'].items()) +controls=[] +def reject(name,mut): + if '--mutation-controls' not in sys.argv[4:]:return + q=copy.deepcopy(ct);mut(q) + try:audit(q) + except(AssertionError,KeyError,IndexError,ValueError,TypeError):controls.append(name) + else:raise AssertionError('ACCEPTED '+name) +enter=lambda q:next(o for c in q['calls']for o in c['owners'][(2*V):]if o[1][0]==4) +reject('alias two whole owners',lambda q:q['calls'][0]['owners'].__setitem__((2*V+1),q['calls'][0]['owners'][(2*V)])) +reject('helper on active data family',lambda q:q['calls'][0]['owners'][(2*V)].__setitem__(0,q['calls'][0]['owners'][0][0])) +reject('owner in private namespace',lambda q:q['calls'][0]['owners'][(2*V)].__setitem__(0,DATA)) +reject('wrong residual width',lambda q:enter(q)[1].__setitem__(3,enter(q)[1][3]-1)) +reject('wrong spectator coordinate',lambda q:enter(q)[1][4].__setitem__(0,72)) +reject('omit idle remainder',lambda q:q['idle_children'].pop()) +reject('understate physical reserve',lambda q:q.__setitem__('physical',PHYSICAL-1)) +# Single-provider dispatch still has all source/program/width binding controls. +if len(provider_ids)==1: + P=provider_ids[0] + at_p=lambda q:next(c for c in q['calls']if c['provider_id']==P) + narrow=next(h for h in range(R)if providers[P]['widths'][h]<9) + reject(P+': wrong provider at its invocation',lambda q:at_p(q).__setitem__('provider_id','__unregistered__')) + reject(P+': stale per-call local program hash',lambda q:at_p(q).__setitem__('local_program_sha256','0'*64)) + reject(P+': stale serialized provider program',lambda q:q['local_providers'][P]['local_programs']['forward'].pop()) + reject(P+': unbound residual adapter hash',lambda q:q['local_providers'][P].__setitem__('residual_adapter_sha256','0'*64)) + reject(P+': wrong provider width registry',lambda q:q['local_providers'][P]['widths'].__setitem__(narrow,providers[P]['widths'][narrow]-1)) + reject(P+': wrong per-call residual width',lambda q:at_p(q)['owners'][2*V+narrow][1].__setitem__(3,at_p(q)['owners'][2*V+narrow][1][3]-1)) + reject(P+': wrong sweep provider',lambda q:next(e for e in q['execution_schedule']if e['kind']=='local_cover_sweep').__setitem__('provider_id','__unregistered__')) + reject(P+': entering helper width silently restored to nine',lambda q:q['local_providers'][P]['widths'].__setitem__(narrow,9)) +else: + # Per-provider substitution controls: every provider is swapped against a partner provider. + for P in provider_ids: + Qp=partner(P) + at_p=lambda q,P=P:next(c for c in q['calls']if c['provider_id']==P) + diff=[h for h in range(R)if providers[P]['widths'][h]!=providers[Qp]['widths'][h]] + narrow=next(h for h in range(R)if providers[P]['widths'][h]<9) + reject(P+': wrong provider at its invocation',lambda q,P=P,Qp=Qp,at_p=at_p:at_p(q).__setitem__('provider_id',Qp)) + reject(P+': stale per-call local program hash',lambda q,Qp=Qp,at_p=at_p:at_p(q).__setitem__('local_program_sha256',registry[Qp]['local_program_checks'][at_p(q)['orientation']]['sha256'])) + reject(P+': stale serialized provider program',lambda q,P=P,Qp=Qp:q['local_providers'][P].__setitem__('local_programs',registry[Qp]['local_programs'])) + reject(P+': unbound residual adapter hash',lambda q,P=P:q['local_providers'][P].__setitem__('residual_adapter_sha256','0'*64)) + if diff:reject(P+': partner width in provider width registry',lambda q,P=P,Qp=Qp,h=diff[0]:q['local_providers'][P]['widths'].__setitem__(h,providers[Qp]['widths'][h])) + reject(P+': wrong per-call residual width',lambda q,at_p=at_p,h=narrow:at_p(q)['owners'][2*V+h][1].__setitem__(3,at_p(q)['owners'][2*V+h][1][3]-1)) + reject(P+': wrong sweep provider',lambda q,P=P,Qp=Qp:next(e for e in q['execution_schedule']if e['kind']=='local_cover_sweep'and DISPATCH[e['stage'],e['replica']]==P).__setitem__('provider_id',Qp)) + reject(P+': entering helper width silently restored to nine',lambda q,P=P,h=narrow:q['local_providers'][P]['widths'].__setitem__(h,9)) + +report=dict(status='PASS_INDEPENDENT_ASYNC_WHOLE_OWNER_CONTROLLER_PHASES_AND_SPECTATORS',template_sha256=summary['template_sha256'],complex_template_sha256=summary['template_sha256'],complex_live=DATA,complex_profile=r['profile'],complex_hosted_residuals=HOSTED,physical=PHYSICAL,rank_mass=r['mass'],deficit=5120,entering_helper_roles=r['entering'],cross_replica_helper_roles=r['cross_replica'],one_owner_per_complete_invocation=True,helper_busy_family_window_checks=r['busy_family_checks'],complete_invocations=r['invocations'],actual_orthogonal_73column_maps=len(r['sigmas']),actual_sigma_stream_sha256=r['sigma_digest'],all_actual_residual_and_spectator_charts=True,idle_remainders=r['idle_remainders'],mutations_rejected=controls,mutation_controls_run='--mutation-controls' in sys.argv[4:],provider_phase_semantic_sha256=phase_semantic_hashes,provider_artifact_semantic_sha256=artifact_semantic_hashes,widths_by_provider={pid:dict(sorted(Counter(providers[pid]['widths']).items()))for pid in provider_ids},provider_counts=dict(Counter(c['provider_id']for c in ct['calls'])),all_provider_program_phase_and_wrapper_bindings=True,scope='Independent exact asynchronous chronology, per-replica phase projection, owner/chart/paid-profile audit. Uses per-invocation local providers bound by exact scalar, phase and residual-wrapper receipts; all-size compilation and complete coefficient invoice are separate inherited obligations.') +REPORT.parent.mkdir(parents=True,exist_ok=True) +REPORT.write_text(json.dumps(report,indent=2)+'\n');print(json.dumps(report,indent=2)) + +owners=dict(status='PASS_INDEPENDENT_ASYNC_OWNERS_AND_PROFILE',template_sha256=summary['template_sha256'],paid_profile=r['profile'],live=DATA,physical=PHYSICAL,rank_mass=r['mass'],deficit=5120,hosted_residuals=HOSTED,banked_residuals=0,all_live_owners_per_call_distinct=True,owners_per_call=N,actual_helper_owner_charts=HOSTED,actual_73column_sigmas=len(r['sigmas']),cross_replica_helper_roles=r['cross_replica'],explicit_idle_remainder_children=r['idle_remainders'],source_idle_children_charged=sum(x['replicas']for x in parent['idle_children']),source_artifacts=summary['source_artifacts'],provider_phase_semantic_sha256=phase_semantic_hashes,provider_artifact_semantic_sha256=artifact_semantic_hashes,controller_audit_sha256=hashlib.sha256(REPORT.read_bytes()).hexdigest()) +(REPORT.parent/'OWNERS-AND-PROFILE.json').write_text(json.dumps(owners,indent=2)+'\n') + +# Literal residual frames are a compact export of the already checked offsets, +# not another global replay. Every row names its actual inherited axes. +frames=[] +for z in ct['idle_children']: + axes=list(map(int,ph['recipes'][z['port']]['idle_children'][z['child']]['orthogonal_axes'])) + tail=axes[z['pending_offset']:] + assert len(tail)==z['rank'] + frames.append(dict(z,orthogonal_axes=tail)) +frame_raw=json.dumps(frames,sort_keys=True,separators=(',',':')).encode() +portable=bytearray(gzip.compress(frame_raw,mtime=0));portable[9]=255 +(OUT/'IDLE-REMAINDER-FRAMES.json.gz').write_bytes(bytes(portable)) +frame_receipt=dict(status='PASS_LITERAL_IDLE_REMAINDER_FRAMES',template_sha256=summary['template_sha256'], + uncompressed_frames_sha256=hashlib.sha256(frame_raw).hexdigest(),children=len(frames), + rank_profile=dict(sorted(Counter(z['rank']for z in frames).items())), + source_data_phase_sha256=hashlib.sha256((BASE/'work/complex-nine-native/DATA-PHASES.json').read_bytes()).hexdigest(), + scope='Actual orthogonal axes after the independently checked whole-owner prefix in each inherited pending child.') +(REPORT.parent/'IDLE-REMAINDER-FRAMES.json').write_text(json.dumps(frame_receipt,indent=2)+'\n') diff --git a/research/complex-t37-independent-seed39/vendor/pr870/code/bind_providers_portable.py b/research/complex-t37-independent-seed39/vendor/pr870/code/bind_providers_portable.py new file mode 100644 index 0000000000..97e28da17e --- /dev/null +++ b/research/complex-t37-independent-seed39/vendor/pr870/code/bind_providers_portable.py @@ -0,0 +1,67 @@ +"""Bind freshly verified plain and width-seven four-cold providers to the frozen literal owner plan. +Prepared with OpenAI Codex assistance; Apache-2.0. All byte-stable native +files are pinned to the plan. Only validated phase-receipt timing/serialization +and directory fields are rebound; no dispatch, width or owner choice changes. +""" +import argparse,copy,gzip,hashlib,json,shutil +from collections import Counter +from pathlib import Path +import sys as _s,pathlib as _p;_s.path.insert(0,str(_p.Path(__file__).resolve().parent)) +from witness import * +from generated_identity import artifact_identities +assert __debug__, 'Assertions required' +ap=argparse.ArgumentParser(description=__doc__) +for name in ('baseline','plan','out'):ap.add_argument('--'+name,type=Path,required=True) +ap.add_argument('--provider',action='append',required=True,help='PID=DIR');a=ap.parse_args();assert not a.out.exists();a.out.mkdir(parents=True) +def read(p):return json.loads(gzip.decompress(p.read_bytes())if p.suffix=='.gz'else p.read_bytes()) +def sha(p):return hashlib.sha256(p.read_bytes()).hexdigest() +base=a.out/'base';shutil.copytree(a.baseline/'complex-global/base',base) +ap2=dict(x.split('=',1)for x in a.provider);dirs={k:Path(v)for k,v in ap2.items()};assert set(dirs)==set(PIDS) +for pid,src in dirs.items():shutil.copytree(src,base/'providers'/pid) +pin('data.plan_sha256',sha(a.plan)) +plan=read(a.plan);original=copy.deepcopy(plan);sources={};helpers=set() # R: helper count per provider word; all providers must agree +assert set(plan['provider_registry'])==set(dirs) +assert {(c['stage'],c['replica']):c['provider']for c in plan['provider_calls']}==DISPATCH,'PLAN dispatch differs from spec dispatch' +stable=('CANONICAL-WORD.json.gz','LOCAL-PROGRAMS.json.gz','LOCAL-CHECKS.json','INDEPENDENT-LOCAL-REPLAY.json','CLIFFORD-RECIPES.json','RESIDUAL-ADAPTERS.json') +for pid,desc in plan['provider_registry'].items(): + d=base/'providers'/pid + word,program,checks,native,phase=[read(d/name)for name in('CANONICAL-WORD.json.gz','LOCAL-PROGRAMS.json.gz','LOCAL-CHECKS.json','INDEPENDENT-LOCAL-REPLAY.json','CLIFFORD-REVIEW.json')] + assert (word['v'],word['h'],len(word['centers']))==(112,9,8) and type(word['R']) is int and word['R']>0;helpers.add(word['R']) + assert word['ports']==desc['ports'] and word['centers']==desc['centers'] + widths=[len(word['frames'][word['final'][r]])-len(word['frames'][word['start'][r]])for r in range(2*112,2*112+word['R'])] # HPE: residual width |final|-|start| + assert tuple(widths[h]for h in SPOT)==spot_widths() + assert widths==desc['widths'];pin('providers.%s.inventory'%pid,{str(k):v for k,v in sorted(Counter(widths).items())}) + assert native['status']=='PASS_INDEPENDENT_LOCAL_SCALAR_FRAME_AND_WRAPPER_REPLAY' + pin('providers.%s.native_negative_controls'%pid,len(native['negative_controls_rejected'])) + assert native['canonical_word_sha256']==sha(d/'CANONICAL-WORD.json.gz') and native['local_programs_sha256']==sha(d/'LOCAL-PROGRAMS.json.gz') + assert phase['status']=='PASS_NEW_WORD_EXACT_LOCAL_PHASE_RECIPES' + assert phase['canonical_word_sha256']==sha(d/'CANONICAL-WORD.json.gz') and phase['recipe_sha256']==sha(d/'CLIFFORD-RECIPES.json') + assert phase['all_child_equalities_include_global_phase'] is True and phase['endpoint_adapters']==224 + pin('providers.%s.phase_edges'%pid,phase['directed_edges']) + assert set(program)==set(checks)=={'forward','backward'} + expected={int(r):n for r,n in checks['forward']['paid_profile'].items()};pin('providers.%s.expected_profile'%pid,checks['forward']['paid_profile']) + for orientation,events in program.items(): + profile=Counter() + for e in events: + if e[0]=='climb':profile[e[5]]+=1 + elif e[0]=='center':profile[e[4]]+=1 + assert dict(profile)==expected=={int(r):n for r,n in checks[orientation]['paid_profile'].items()}=={int(r):n for r,n in native['paid_profiles'][orientation].items()} + assert hashlib.sha256(json.dumps(events,separators=(',',':')).encode()).hexdigest()==checks[orientation]['sha256'] + identities=artifact_identities(d) + pin('providers.%s.artifact_semantic_sha256'%pid,identities) + assert identities==desc['artifact_semantic_sha256'] + for name in ('LOCAL-CHECKS.json','CLIFFORD-RECIPES.json','RESIDUAL-ADAPTERS.json'): + assert sha(d/name)==desc['artifact_sha256'][name],(pid,name,'changed non-reference artifact') + for c in plan['provider_calls']: + if c['provider']==pid: + assert c['orientation']==('forward'if c['stage']%2==0 else'backward') + assert c['local_program_sha256']==checks[c['orientation']]['sha256'] + desc['directory']='providers/'+pid + desc['artifact_sha256']={name:sha(d/name)for name in desc['artifact_sha256']} + sources[pid]=dict(artifact_sha256=desc['artifact_sha256'],canonical_content_sha256=hashlib.sha256(json.dumps(word,sort_keys=True,separators=(',',':')).encode()).hexdigest(),all_phase_edges=phase['directed_edges']) +assert len(helpers)==1,'providers disagree on helper count R: %s'%sorted(helpers) +plan['runtime_source_plan_sha256']=sha(a.plan) +(a.out/'PLAN.json').write_text(json.dumps(plan,indent=2)+'\n') +receipt=dict(status='PASS_FROZEN_048_ALLCOLD_DISPATCH_FRESH_PROVIDER_BINDING',source_plan_sha256=sha(a.plan),runtime_plan_sha256=sha(a.out/'PLAN.json'),providers=sources,only_rebound_fields=['provider_registry.directory','provider_registry.artifact_sha256','runtime_source_plan_sha256']) +(a.out/'BINDING.json').write_text(json.dumps(receipt,indent=2)+'\n') +print(receipt['status']) diff --git a/research/complex-t37-independent-seed39/vendor/pr870/code/bit_supplier_controls.py b/research/complex-t37-independent-seed39/vendor/pr870/code/bit_supplier_controls.py new file mode 100644 index 0000000000..e86b8527b4 --- /dev/null +++ b/research/complex-t37-independent-seed39/vendor/pr870/code/bit_supplier_controls.py @@ -0,0 +1,111 @@ +"""Negative controls for the cited PR589 bit supplier and its derived rank-mass deficit. + +Apache-2.0. Each control mutates one input of the changed bit-supplier sites in assemble.py (the pinned record, the +deficit derivation from the word's parameters, the profile/live binding, the claimed endpoint) and runs the unchanged +assemble() on the fresh owner/invoice receipts. Every control must be rejected; the unmutated run must pass. +`revert_hardcoded_9984` restores the PR543 constant the parent package hard-coded: with PR589's word it must fail. +""" +import argparse +import copy +import hashlib +import json +import os +import tempfile +from fractions import Fraction as Q +from pathlib import Path +import sys as _s,pathlib as _p;_s.path.insert(0,str(_p.Path(__file__).resolve().parent)) + +assert __debug__, 'Assertions required' +sha = lambda p: hashlib.sha256(p.read_bytes()).hexdigest() + + +def verify(owner_path, invoice_path, source_package): + os.environ['GAIN_PR564_SOURCE'] = str(source_package.resolve()) + import assemble as A + owner = json.loads(owner_path.read_text()) + invoice = json.loads(invoice_path.read_text()) + args = (owner, invoice, sha(owner_path), sha(invoice_path)) + baseline = A.assemble(*args) + data = A.BIT_PATH.read_bytes() + record = A.load_bit(data) + word = record['word'] + assert A.bit_deficit(word, record['nine']['bit']['live']) == 10272 == 32 * (8 * 111 - 9 * 63) + + real_load, real_deficit = A.load_bit, A.bit_deficit + + def with_record(mutate): + def load(d): + r = copy.deepcopy(real_load(d)); mutate(r); return r + return load + + def shift_profile(r): # one rank-1 child becomes rank 2: rank mass +1, totals unchanged + p = r['nine']['profile']; p['1'] -= 1; p['2'] += 1; r['nine']['bit']['rank_mass'] += 1 + + bumped = data.replace(record['nine']['bit_lower'].encode(), + str(Q(record['nine']['bit_lower']) + Q(1, 10**24)).encode(), 1) + assert bumped != data + pr543 = (source_package / 'inputs/PR543-EXPECTED.json').read_bytes() + controls = [ + # deficit site: the parent's hard-coded constant, restored + ('revert_hardcoded_9984', dict(bit_deficit=lambda w, live: 9984)), + # deficit site: each word parameter perturbed alone + ('ports_112', dict(load_bit=with_record(lambda r: r['word'].__setitem__('v', 112)))), + ('decoder_constant_64_copy_ranks_unchanged', dict(load_bit=with_record(lambda r: r['word'].__setitem__('decoder_constant', 64)))), + # v=111, cst=64 derives 32*(888-576)=9984: consistent word, wrong for the priced profile + ('decoder_constant_64_with_one_copy_rank_8', dict(load_bit=with_record(lambda r: (r['word'].__setitem__('decoder_constant', 64), r['word']['copy_ranks'].__setitem__(0, 8))))), + ('eight_retained_totals', dict(load_bit=with_record(lambda r: (r['word'].__setitem__('copy_ranks', [7] * 8), r['word'].__setitem__('decoder_constant', 56))))), + ('live_minus_one', dict(load_bit=with_record(lambda r: r['nine']['bit'].__setitem__('live', r['nine']['bit']['live'] - 1)))), + # profile binding: same totals, rank mass +1 + ('profile_rank_mass_plus_one', dict(load_bit=with_record(shift_profile))), + ('profile_rank_mass_receipt_mismatch', dict(load_bit=with_record(lambda r: r['nine']['bit'].__setitem__('rank_mass', r['nine']['bit']['rank_mass'] + 1)))), + # endpoint: the next 1e-24 grid point + ('bit_lower_next_grid', dict(load_bit=with_record(lambda r: r['nine'].__setitem__('bit_lower', str(Q(r['nine']['bit_lower']) + Q(1, 10**24)))))), + ('not_nine_stage_record', dict(load_bit=with_record(lambda r: r['nine'].__setitem__('pipeline', r['nine']['pipeline'].replace('nine-stage', 'eleven-stage'))))), + # pinned-input site: tampered bytes and the parent's PR543 file under the PR589 pin + ('tampered_bytes_next_grid', dict(read=bumped)), + ('pr543_file_under_pr589_pin', dict(read=pr543)), + ] + rejected = [] + scratch = Path(tempfile.mkdtemp(prefix='bitctl-')) + for name, patch in controls: + saved_path = A.BIT_PATH + try: + if 'read' in patch: + tmp = scratch / (name + '.json'); tmp.write_bytes(patch['read']); A.BIT_PATH = tmp + A.load_bit = patch.get('load_bit', real_load) + A.bit_deficit = patch.get('bit_deficit', real_deficit) + try: + A.assemble(*args) + except (AssertionError, KeyError): + rejected.append(name) + else: + raise AssertionError('Invalid bit supplier accepted: ' + name) + finally: + A.load_bit, A.bit_deficit, A.BIT_PATH = real_load, real_deficit, saved_path + if 'read' in patch: + tmp.unlink() + scratch.rmdir() + assert rejected == [n for n, _ in controls] + again = A.assemble(*args) + assert again['kappa'] == baseline['kappa'] and again['bit_lower'] == baseline['bit_lower'] + return dict( + status='PASS_PR589_BIT_SUPPLIER_DERIVED_DEFICIT_NEGATIVE_CONTROLS', + kappa=baseline['kappa_decimal'], bit_lower=baseline['bit_lower'], bit_decimal=baseline['bit_decimal'], + binding=baseline['binding'], bit_supplier=baseline['bit_supplier'], + derived_deficit=baseline['bit_supplier']['derived_deficit'], + rejected_controls=rejected, + assembler_sha256=sha(Path(__file__).resolve().parent / 'assemble.py'), + ) + + +if __name__ == '__main__': + ap = argparse.ArgumentParser(description=__doc__) + ap.add_argument('--source-package', type=Path, required=True) + ap.add_argument('--owner', type=Path, required=True) + ap.add_argument('--invoice', type=Path, required=True) + ap.add_argument('--out', type=Path, required=True) + a = ap.parse_args() + assert not a.out.exists() + result = verify(a.owner, a.invoice, a.source_package) + a.out.write_text(json.dumps(result, indent=2) + '\n', newline='\n') + print(result['status'], len(result['rejected_controls'])) diff --git a/research/complex-t37-independent-seed39/vendor/pr870/code/emit_allcold.py b/research/complex-t37-independent-seed39/vendor/pr870/code/emit_allcold.py new file mode 100644 index 0000000000..28a08a79da --- /dev/null +++ b/research/complex-t37-independent-seed39/vendor/pr870/code/emit_allcold.py @@ -0,0 +1,150 @@ +"""Two-provider width-seven whole-owner derivative, adapted with OpenAI Codex assistance. +Based on PR514 and its credited PR484/507 lineage. +CLI: --base VERIFIED_VARIANT --owners ASYNC-OWNERS.json.gz --plan ASYNC-PLAN.json --out OUT +No optimizer or unpublished word builder runs. The frozen map explicitly names +one whole helper per family per complete invocation, plus borrowed spectators. +""" +import sys,json,gzip,hashlib,copy,argparse +from pathlib import Path +from collections import Counter,defaultdict +import sys as _s,pathlib as _p;_s.path.insert(0,str(_p.Path(__file__).resolve().parent)) +from witness import * +parser=argparse.ArgumentParser(description=__doc__) +parser.add_argument('--base',type=Path,required=True);parser.add_argument('--owners',type=Path,required=True);parser.add_argument('--plan',type=Path,required=True);parser.add_argument('--out',type=Path,required=True) +a=parser.parse_args();BASE,MAP,PLAN,OUT=(p.resolve()for p in(a.base,a.owners,a.plan,a.out));assert not OUT.exists();OUT.mkdir(parents=True) +class OH: + @staticmethod + def idle_basis(q): + z=next(i for i in range(9)if not(q>>i)&1);u=q^(1<>i&1 else 0)for i in order]+[1<0 and all(x['R']==R for x in registry.values()),'providers disagree on helper count R' + assert replay['status']=='PASS_INDEPENDENT_LOCAL_SCALAR_FRAME_AND_WRAPPER_REPLAY' + assert replay['canonical_word_sha256']==sha(directory/'CANONICAL-WORD.json.gz')and replay['local_programs_sha256']==sha(directory/'LOCAL-PROGRAMS.json.gz') + widths=[len(pc['frames'][pc['final'][2*V+h]])-len(pc['frames'][pc['start'][2*V+h]])for h in range(R)] # HPE: residual width |final|-|start| + assert widths==plan['provider_registry'][provider_id]['widths'] + for name in provider_files: + value=sha(directory/name);assert value==plan['provider_registry'][provider_id]['artifact_sha256'][name] + source_artifacts[f'providers/{provider_id}/{name}']=value + registry[provider_id]=dict(local_programs=programs,canonical_word_sha256=sha(directory/'CANONICAL-WORD.json.gz'),local_programs_sha256=sha(directory/'LOCAL-PROGRAMS.json.gz'),local_program_checks=checks,exact_local_clifford_recipe_sha256=sha(directory/'CLIFFORD-RECIPES.json'),residual_adapter_sha256=sha(directory/'RESIDUAL-ADAPTERS.json'),v=V,h=9,R=R,ports=pc['ports'],centers=pc['centers'],widths=widths) +assert len(roles)==144*R # one whole-owner role per (call, provider helper) +selected={(c['stage'],c['replica']):c for c in plan['provider_calls']} +assert len(selected)==144 and set(selected)==set(call_order) +assert Counter(c['provider']for c in selected.values())==COUNTS +per_call_widths={(c['stage'],c['replica']):c['widths']for c in plan['per_call_widths']} +for key,c in selected.items(): + assert c['time']==at[key] and c['provider']in registry + assert per_call_widths[key]==registry[c['provider']]['widths'] +for key in('local_programs','exact_local_clifford_recipe_sha256','residual_adapter_sha256'):t.pop(key) +t['local_providers']=registry +rank={z['child']:z['rank']for z in parent['idle_children']};side={};pairs={} +for e in parent['execution_schedule']: + if e['kind']=='idle_cover_sweep': + for sd,ch in enumerate(e['child_indices']):side[ch]=sd;pairs[ch]=e['pair'] +bycall=defaultdict(dict);used=defaultdict(set);sigmas={};digest=hashlib.sha256();entering=0 +for z in roles: + s,rep,h=z['stage'],z['replica'],z['helper'];i,cp,off,w,f=z['child'],z['copy'],z['offset'],z['width'],z['family'];orp,port=divmod(cp,V) + assert 0<=s<9 and 0<=rep=0 and off+w<=rank[i] + assert z['time']==at[s,rep] and z['time'] in plan['windows'][f'{orp},{i}'][1] + B=OH.idle_basis(canon['ports'][port]);pending=list(map(int,ph['recipes'][port]['idle_children'][i]['orthogonal_axes']));assert len(pending)==rank[i] + occ=[B.index(v)for v in pending[off:off+w]];sp=OH.spectators(canon['ports'][port],pending,off,w)if w<9 else[] + order=occ+sp+[j for j in range(M)if j not in occ and j not in sp];assert len(order)==len(set(order))==M + sigma=[B[j]for j in order];sigmahash=hashlib.sha256(json.dumps(sigma,separators=(',',':')).encode()).hexdigest();sigmas[sigmahash]=sigma + route=[4,i,off,w,sp]if w<9 else[3,i,off];bycall[s,rep][h]=[f,route];entering+=w<9 + cells=set(range(off,off+w));assert not used[i,orp,port]&cells;used[i,orp,port]|=cells + digest.update(json.dumps([s,rep,h,f,sigmahash],separators=(',',':')).encode()+b'\n') +for c in t['calls']: + k=(c['stage'],c['replica']);assert set(bycall[k])==set(range(R)) + c['owners']=c['owners'][:(2*V)]+[bycall[k][h]for h in range(R)];assert len({f for f,r in c['owners']})==2*V+R and all(f2*max(paid)**2 + +assert all(c['local_program_sha256']==registry[c['provider_id']]['local_program_checks'][c['orientation']]['sha256']for c in t['calls']) +t['provider_dispatch']='For each indivisible local_cover_sweep, execute local_providers[call.provider_id].local_programs[call.orientation] with that provider residual adapters and Clifford recipes. The sweep provider_id must equal its call provider_id.' +raw=json.dumps(t,sort_keys=True,separators=(',',':')).encode();(OUT/'GLOBAL-TEMPLATE.json.gz').write_bytes(gzip.compress(raw,mtime=0)) +res=dict(status='EMITTED_MIXED_PROVIDER_ASYNCHRONOUS_WHOLE_OWNER_COMPLEX_TEMPLATE', + template_sha256=hashlib.sha256(raw).hexdigest(), + parent_template_sha256=hashlib.sha256(gzip.decompress((BASE/'split-centres/GLOBAL-TEMPLATE.json.gz').read_bytes())).hexdigest(), + live=DATA,physical=physical,global_profile=dict(sorted(paid.items())), + rank_mass=sum(r*n for r,n in paid.items()),deficit=5120,maxchild=max(paid), + hosted_residuals=len(roles),banks_per_stage=[0]*9,entering_helper_roles=entering, + unique_actual_73column_sigmas=len(sigmas),sigma_stream_sha256=digest.hexdigest(), + cross_replica_helper_roles=sum(z['replica']!=z['owner_replica']for z in roles), + asynchronous_order_sha256=hashlib.sha256(json.dumps(call_order,separators=(',',':')).encode()).hexdigest(), + source_artifacts=source_artifacts,provider_counts=dict(Counter(c['provider_id']for c in t['calls'])), + scope='Two actual verified plain/width-seven providers dispatched per complete invocation; independent controller/spectator/normalization and complete finite invoice admission required.') +(OUT/'HOSTED.json').write_text(json.dumps(res,indent=2)+'\n');(OUT/'ACTUAL-SIGMAS.json.gz').write_bytes(gzip.compress(json.dumps(sigmas,separators=(',',':')).encode(),mtime=0));print(json.dumps(res,indent=2)) diff --git a/research/complex-t37-independent-seed39/vendor/pr870/code/freeze_spec.py b/research/complex-t37-independent-seed39/vendor/pr870/code/freeze_spec.py new file mode 100644 index 0000000000..4fe3b88915 --- /dev/null +++ b/research/complex-t37-independent-seed39/vendor/pr870/code/freeze_spec.py @@ -0,0 +1,29 @@ +"""Freeze independently recomputed discovery values before strict replay.""" +import argparse +import json +from pathlib import Path + +ap = argparse.ArgumentParser(description=__doc__) +ap.add_argument('--spec', type=Path, required=True) +ap.add_argument('--discovery', type=Path, required=True) +a = ap.parse_args() +spec = json.loads(a.spec.read_text()) +for line in (a.discovery/'WITNESS-RECORD.jsonl').read_text().splitlines(): + key, value = json.loads(line) + parts = key.split('.') + if len(parts)>3 and parts[0]=='providers' and parts[2]=='artifacts': + parts = parts[:3] + ['.'.join(parts[3:])] + target = spec + for part in parts[:-1]: + target = target.setdefault(part, {}) + if parts[-1] in target: + assert target[parts[-1]]==value, 'Conflicting independent recomputations: '+key + target[parts[-1]] = value +assembly = json.loads((a.discovery/'ASSEMBLY.json').read_text()) +for key in ('complex_lower','conservative_complex_lower','kappa','kappa_decimal','conservative_kappa_decimal'): + spec['expected'][key] = assembly[key] +spec['expected']['assembly_controls_rejected'] = 69 +spec['expected']['provider_counts'] = {'gauge44':144} +spec['expected']['mutations_rejected'] = 15 +a.spec.write_text(json.dumps(spec, indent=2)+'\n') +print('Frozen exact witness for strict replay:', assembly['kappa_decimal']) diff --git a/research/complex-t37-independent-seed39/vendor/pr870/code/generated_identity.py b/research/complex-t37-independent-seed39/vendor/pr870/code/generated_identity.py new file mode 100644 index 0000000000..74a9b60479 --- /dev/null +++ b/research/complex-t37-independent-seed39/vendor/pr870/code/generated_identity.py @@ -0,0 +1,62 @@ +"""Proof-relevant identities for generated artifacts, independent of gzip streams. + +Immutable source archives retain their exact byte hashes. For freshly emitted +artifacts, gzip identity is the exact decompressed payload and JSON identity +retains every field. Only CLIFFORD-REVIEW's root timing field is excluded. +Literal receipt references are checked against actual files before replacing +the three gzip references (and the phase recipe reference) with content hashes. +Prepared with OpenAI Codex assistance; Apache-2.0. +""" +from pathlib import Path +import copy +import gzip +import hashlib +import json +import math + +if not __debug__: + raise RuntimeError('Assertions must remain enabled') + +FILES=('CANONICAL-WORD.json.gz','LOCAL-PROGRAMS.json.gz','LOCAL-CHECKS.json', + 'INDEPENDENT-LOCAL-REPLAY.json','CLIFFORD-RECIPES.json', + 'CLIFFORD-REVIEW.json','RESIDUAL-ADAPTERS.json') + +def sha(path): + return hashlib.sha256(Path(path).read_bytes()).hexdigest() + +def json_identity(value): + return hashlib.sha256(json.dumps(value,sort_keys=True,separators=(',',':'),allow_nan=False).encode('utf-8')).hexdigest() + +def payload_identity(path): + return hashlib.sha256(gzip.decompress(Path(path).read_bytes())).hexdigest() + +def phase_value(directory,value=None): + directory=Path(directory) + value=copy.deepcopy(json.loads((directory/'CLIFFORD-REVIEW.json').read_bytes())if value is None else value) + assert value['canonical_word_sha256']==sha(directory/'CANONICAL-WORD.json.gz'),'stale phase canonical word reference' + assert value['recipe_sha256']==sha(directory/'CLIFFORD-RECIPES.json'),'stale phase recipe reference' + seconds=value.pop('seconds') + assert type(seconds)in(int,float) and math.isfinite(seconds) and seconds>=0,'invalid phase timing metadata' + value['canonical_word_sha256']=payload_identity(directory/'CANONICAL-WORD.json.gz') + value['recipe_sha256']=json_identity(json.loads((directory/'CLIFFORD-RECIPES.json').read_bytes())) + return value + +def native_value(directory,value=None): + directory=Path(directory) + value=copy.deepcopy(json.loads((directory/'INDEPENDENT-LOCAL-REPLAY.json').read_bytes())if value is None else value) + for field,name in [('canonical_word_sha256','CANONICAL-WORD.json.gz'),('local_programs_sha256','LOCAL-PROGRAMS.json.gz')]: + assert value[field]==sha(directory/name),'stale native artifact reference: '+field + value[field]=payload_identity(directory/name) + return value + +def artifact_identities(directory): + directory=Path(directory) + result={} + for name in FILES: + path=directory/name + if name.endswith('.gz'): + result[name]=payload_identity(path) + else: + value=phase_value(directory)if name=='CLIFFORD-REVIEW.json'else native_value(directory)if name=='INDEPENDENT-LOCAL-REPLAY.json'else json.loads(path.read_bytes()) + result[name]=json_identity(value) + return result diff --git a/research/complex-t37-independent-seed39/vendor/pr870/code/invoice_allcold.py b/research/complex-t37-independent-seed39/vendor/pr870/code/invoice_allcold.py new file mode 100644 index 0000000000..d1dd221291 --- /dev/null +++ b/research/complex-t37-independent-seed39/vendor/pr870/code/invoice_allcold.py @@ -0,0 +1,329 @@ +"""Fresh call-specific mixed-provider finite invoice. + +Prepared with OpenAI Codex assistance, Apache-2.0. The scalar/Horner recount +and finite inequalities are adapted from the retained PR558 -> PR552 -> +PR531 invoice_final.py, whose notices and sources are preserved in the package. +Every call selects a hash-bound provider. Shared compiler reserves use maxima; +primitive work, coefficient work, local children and wrappers are also summed +from actual selected provider/orientation records. +""" +import argparse, gzip, hashlib, json +import sys as _s,pathlib as _p;_s.path.insert(0,str(_p.Path(__file__).resolve().parent)) +from witness import * +from generated_identity import artifact_identities +from collections import Counter +from fractions import Fraction as Q +from pathlib import Path +assert __debug__, 'Assertions required' + +def read(path): + data=path.read_bytes() + return json.loads(gzip.decompress(data) if path.suffix=='.gz' else data) +def filehash(path): return hashlib.sha256(path.read_bytes()).hexdigest() +def contenthash(path): + data=path.read_bytes() + return hashlib.sha256(gzip.decompress(data) if path.suffix=='.gz' else data).hexdigest() +def programhash(events): + return hashlib.sha256(json.dumps(events,separators=(',',':')).encode()).hexdigest() + +def recount_provider(local_dir, registry): + cp=local_dir/'CANONICAL-WORD.json.gz'; pp=local_dir/'LOCAL-PROGRAMS.json.gz' + rp=local_dir/'INDEPENDENT-LOCAL-REPLAY.json' + w,programs,replay=read(cp),read(pp),read(rp) + checks=read(local_dir/'LOCAL-CHECKS.json') + assert set(programs)=={'forward','backward'} + assert replay['status']=='PASS_INDEPENDENT_LOCAL_SCALAR_FRAME_AND_WRAPPER_REPLAY' + assert replay['canonical_word_sha256']==filehash(cp)==registry['canonical_word_sha256'] + assert replay['local_programs_sha256']==filehash(pp)==registry['local_programs_sha256'] + assert programs==registry['local_programs'] + assert checks==registry['local_program_checks'] + assert filehash(local_dir/'CLIFFORD-RECIPES.json')==registry['exact_local_clifford_recipe_sha256'] + assert filehash(local_dir/'RESIDUAL-ADAPTERS.json')==registry['residual_adapter_sha256'] + v,helpers,h,m=w['v'],w['R'],w['h'],73 + assert (v,h)==(112,9) and type(helpers) is int and helpers>0 + assert registry['v']==v and registry['R']==helpers and registry['h']==h + assert registry['ports']==w['ports'] and registry['centers']==w['centers'] + assert replay['v']==v and replay['helpers']==helpers + n=2*v+helpers + widths = [len(w['frames'][w['final'][r]])-len(w['frames'][w['start'][r]]) for r in range(2*v, 2*v+helpers)] # HPE: |final|-|start| + terminal_codim = sum(h-len(w['frames'][w['final'][r]]) for r in range(2*v, 2*v+helpers)) # HPE: 0 for FULL-ended helpers + ends = {r: f for r, f in enumerate(w['final']) if r >= 2*v and f != 1} + assert len(widths) == helpers + entrances = {r: f for r, f in enumerate(w['start']) if r >= 2*v and f != 0} + entering = len(entrances) + wrapped = {**entrances, **{r: 0 for r in ends if r not in entrances}} # COLD-HPE: cold hyperplane-ended helpers carry wrappers too + cold_ends = len(wrapped) - len(entrances) + assert entering == replay['entering_helpers'] + local = {} + for orientation, events in programs.items(): + # Endpoint equality and native frames were already independently + # replayed on all n columns in the hash-bound receipt above. + env = {('L', r): Q(1) for r in range(n)} + peak = Q(1) + real = macros = workops = 0 + paid = Counter() + wrappers = {'pre': set(), 'post': set()} + for event in events: + tag = event[0] + if tag == 'climb': + paid[event[5]] += 1 + elif tag == 'center': + paid[event[4]] += 1 + elif tag == 'residual_adapter': + _, kind, register, frame, *end = event + assert kind in wrappers and wrapped.get(register) == frame + assert end == ([ends[register]] if register in ends else []) # HPE: R_{E,U}^-1 and L_{E,U}^-1 name U + assert register not in wrappers[kind] + wrappers[kind].add(register) + elif tag == 'scalar': + macros += 1 + scalar = event[1] + op, target = scalar[0], tuple(scalar[1]) + if op == 'clear': + env[target] = Q(0) + count = 1 + elif op == 'copy': + env[target] = env[tuple(scalar[2])] + count = 1 + elif op == 'scale': + q = Q(scalar[2], scalar[3]) + numerator, denominator = abs(q.numerator), q.denominator + assert numerator and numerator & (numerator-1) == 0 + assert denominator & (denominator-1) == 0 + env[target] *= abs(q) + count = abs(numerator.bit_length()-denominator.bit_length()) + int(q < 0) + elif op == 'add': + source = tuple(scalar[2]) + q = Q(scalar[3], scalar[4]) + numerator, denominator = abs(q.numerator), q.denominator + assert source != target and numerator > 0 + assert denominator & (denominator-1) == 0 + acc, count = 0, 1 # clear coefficient work + for i, bit in enumerate(bin(numerator)[2:]): + if i: + acc *= 2 + count += 1 + peak = max(peak, acc*env[source]) + if bit == '1': + acc += 1 + count += 1 + peak = max(peak, acc*env[source]) + value = Q(acc) + for _ in range(denominator.bit_length()-1): + value /= 2 + count += 1 + peak = max(peak, value*env[source]) + assert value == abs(q) + count += 2 # signed accumulation and work clear + env[target] = env.get(target, Q(0)) + abs(q)*env[source] + workops += count + else: + raise AssertionError(op) + real += 2*count + peak = max(peak, env[target]) + else: + assert tag in ('adapter', 'phase') + assert wrappers['pre'] == wrappers['post'] == set(wrapped) + assert all(value == 0 for register, value in env.items() if register[0] == 'C') + prior = replay['local'][orientation] + assert prior['all_exact_columns'] == n and prior['private_work_erased'] + assert peak == Q(prior['prefix_l1_upper']) and peak < 2**prior['charged_payload_bits'] + bits = peak.numerator.bit_length()-peak.denominator.bit_length()+1 + assert bits == prior['prefix_bits_upper'] + assert real == checks[orientation]['real_component_primitive_bound'] + assert macros == checks[orientation]['scalar_macros'] + assert dict(paid) == {int(r): count for r, count in checks[orientation]['paid_profile'].items()} + assert dict(paid) == {int(r): count for r, count in replay['paid_profiles'][orientation].items()} + local[orientation] = dict( + events=len(events), macros=macros, real_component_primitives=real, + prefix_l1=str(peak), prefix_bits=bits, + coefficient_work_primitive_count=workops, all_exact_columns=n, + dirty_helper_columns=helpers, all_dirty_helper_columns_restored=True, + private_centres_and_coefficient_work_cleared=True, + pre_wrappers=len(wrappers['pre']), post_wrappers=len(wrappers['post']), + endpoint_evidence='Hash-bound fresh INDEPENDENT-LOCAL-REPLAY.json') + + centres = len(w['centers']) + children = sum(checks['forward']['paid_profile'].values()) + assert checks['forward']['paid_profile'] == checks['backward']['paid_profile'] + macro_bound = max(row['macros'] for row in local.values()) + compiler = 64*(m+1)**3 + adapters = 16*(macro_bound+children+n+centres)+64*m + primitive_bound = max(row['real_component_primitives'] for row in local.values())+adapters*compiler + + assert widths==registry['widths'] + artifacts={f.name:filehash(f) for f in local_dir.iterdir() if f.is_file()} + phase_review=read(local_dir/'CLIFFORD-REVIEW.json') + return dict(local=local,helpers=helpers,centres=centres,v=v,h=h,n=n, + entering_helpers=entering,entrance_rank=sum(len(w['frames'][f]) for f in w['start'][2*v:]), + terminal_codimension=terminal_codim, hyperplane_ended_helpers=len(ends), # HPE: always reported (0 for FULL-ended words) + **({'cold_hyperplane_ended_helpers': cold_ends} if cold_ends else {}), # COLD-HPE: absent without cold ends + width_inventory=dict(sorted(Counter(widths).items())),widths=widths, + local_adapters=adapters,local_primitive_bound=primitive_bound, + compiler=compiler,children=children,artifacts=artifacts, + paid_profile=checks['forward']['paid_profile'], + program_hashes={o:programhash(events) for o,events in programs.items()},semantic_artifact_sha256=artifact_identities(local_dir)) + + +def run(base, hosted, audit, out, retained_invoice=None): + local_dir=base/'split-centres' + parent=read(local_dir/'GLOBAL-TEMPLATE.json.gz') + template_path=hosted/'GLOBAL-TEMPLATE.json.gz' + template=read(template_path); summary=read(hosted/'HOSTED.json') + owners=read(audit/'OWNERS-AND-PROFILE.json'); control=read(audit/'ASYNC-AUDIT.json') + template_hash=contenthash(template_path) + assert template_hash==control['complex_template_sha256']==owners['template_sha256']==summary['template_sha256'] + assert owners['status']=='PASS_INDEPENDENT_ASYNC_OWNERS_AND_PROFILE' + assert template['recipe']==parent['recipe'] + assert 'local_programs' not in template + assert set(template['local_providers'])==set(PIDS) + providers={pid:recount_provider(base/'providers'/pid,registry) + for pid,registry in template['local_providers'].items()} + for pid,p in providers.items(): + assert owners['provider_phase_semantic_sha256'][pid]==control['provider_phase_semantic_sha256'][pid]==p['semantic_artifact_sha256']['CLIFFORD-REVIEW.json'] + # The fresh controller admission must cite precisely these provider bytes. + for name in ('CANONICAL-WORD.json.gz','LOCAL-PROGRAMS.json.gz','LOCAL-CHECKS.json', + 'INDEPENDENT-LOCAL-REPLAY.json','CLIFFORD-RECIPES.json', + 'CLIFFORD-REVIEW.json','RESIDUAL-ADAPTERS.json'): + path='providers/'+pid+'/'+name + assert summary['source_artifacts'][path]==p['artifacts'][name] + assert owners['source_artifacts'][path]==p['artifacts'][name] + # R is read from the provider words (all must agree); the parent dedicated-bank + # envelope keeps its own helper count R0 from the parent split-centres word. + assert len({p['helpers'] for p in providers.values()})==1,'providers disagree on helper count R' + v,h,m,centres=112,9,73,8 + helpers=next(iter(providers.values()))['helpers']; n=2*v+helpers + assert all((p['v'],p['h'],p['centres'],p['n'])==(v,h,centres,n) for p in providers.values()) + parent_helpers=read(local_dir/'CANONICAL-WORD.json.gz')['R'] + stages,replicas,blocks_per_stream=9,16,4 + call_count=len(template['calls']) + assert call_count==stages*replicas==control['complete_invocations'] + assert control['one_owner_per_complete_invocation'] + assert len({(c['stage'],c['replica']) for c in template['calls']})==call_count + parent_calls={(c['stage'],c['replica']):c for c in parent['calls']} + sweeps=[e for e in template['execution_schedule'] if e['kind']=='local_cover_sweep'] + assert len(sweeps)==call_count + selected=[]; selected_paid=Counter(); provider_counts=Counter(); orientation_counts=Counter() + scalar=coefficient_work=macros=0; wrapper_factors=0 + factors_per_wrapper=2*(m-1) + for c in template['calls']: + pid,orientation=c['provider_id'],c['orientation']; p=providers[pid] + old=parent_calls[(c['stage'],c['replica'])] + assert orientation==old['orientation'] and c['owners'][:2*v]==old['owners'][:2*v] + assert c['local_program_sha256']==p['program_hashes'][orientation] + r=p['local'][orientation] + scalar+=r['real_component_primitives']; coefficient_work+=r['coefficient_work_primitive_count']; macros+=r['macros'] + wrapper_factors+=(r['pre_wrappers']+r['post_wrappers'])*factors_per_wrapper + provider_counts[pid]+=1; orientation_counts[(pid,orientation)]+=1 + selected_paid.update({int(k):v for k,v in p['paid_profile'].items()}) + selected.append(dict(stage=c['stage'],replica=c['replica'],provider_id=pid,orientation=orientation, + program_sha256=c['local_program_sha256'],events=r['events'],macros=r['macros'], + real_component_primitives=r['real_component_primitives'], + coefficient_work_primitive_count=r['coefficient_work_primitive_count'], + entering_helpers=p['entering_helpers'],entrance_rank=p['entrance_rank'], + pre_wrappers=r['pre_wrappers'],post_wrappers=r['post_wrappers'])) + assert provider_counts==COUNTS + # The sweep registry is executable: no hidden use of the historical supplier. + by_call={(c['stage'],c['replica']):c for c in template['calls']} + for e in sweeps: + c=by_call[(e['stage'],e['replica'])] + assert e['provider_id']==c['provider_id'] + assert set(p['compiler'] for p in providers.values())=={64*(m+1)**3} + compiler=64*(m+1)**3 + adapters=max(p['local_adapters'] for p in providers.values()) + primitive_bound=max(p['local_primitive_bound'] for p in providers.values()) + bridge_steps=sum(event['kind']=='bridge' for event in parent['recipe']) + bridge_sweeps=sum(event['kind']=='bridge' for event in template['execution_schedule']) + assert bridge_sweeps==replicas*bridge_steps + bridge_additions=2*v*bridge_sweeps + shifts=blocks_per_stream*v*replicas; moves=2*shifts + parent_live,parent_physical=parent['live'],parent['physical'] + data_stock=2*v*blocks_per_stream*replicas + assert (parent_live-data_stock)%stages==0 + parent_banks=(parent_live-data_stock)//stages + assert parent_banks>=0 and parent_physical==parent_live+parent_helpers+centres+2 + nonlocal_items=(4*v*replicas*stages+2*v*replicas*stages+2*call_count*helpers + +sum(child['replicas'] for child in parent['idle_children'])+stages*parent_banks + +bridge_additions+shifts+moves+parent_live+parent_physical+wrapper_factors) + outside=8*nonlocal_items+64*m + parent_pervertex=(scalar+bridge_additions+shifts+moves+parent_live + +(call_count*adapters+outside)*compiler+64*parent_physical) + live,physical=template['live'],template['physical'] + mass,profile=owners['rank_mass'],owners['paid_profile'] + assert m*live-mass==owners['deficit']==5120 + assert mass==sum(int(r)*count for r,count in profile.items()) + assert physical==live+helpers+centres+2 + assert live==owners['live'] and physical==owners['physical'] + assert live<=parent_live and physical<=parent_physical + assert not template['bank_padding']['families'] + assert owners['explicit_idle_remainder_children']<=owners['source_idle_children_charged'] + # The old dedicated-bank geometry is only a conservative reserve envelope. + # Its singular program is never used as evidence for a mixed invocation. + rebased=parent_pervertex+65*(physical-parent_physical)+(live-parent_live) + used=max(rebased,parent_pervertex); retained=None; payload=512 + if retained_invoice is not None: + previous=read(retained_invoice) + assert previous['compiler']==compiler and previous['charged_prefix_bits']==payload + previous_bound=previous['conservative_pervertex_used'] + used=max(used,previous_bound+parent_pervertex) + retained=dict(sha256=filehash(retained_invoice),previous_pervertex_allowance=previous_bound, + added_complete_new_pervertex=parent_pervertex,policy='Retain old allowance and add entire fresh mixed recount.') + half=m//2; group=2**(half*half) + for i in range(1,half+1): group*=2**(2*i)-1 + stock,streamed_mass=group*physical,group*mass + logical=group*used+64; router=compiler*(logical+1)*(stock+1)**2 + g_bound,e_bound,c0=2**30000,2**100000,2**210000 + total_mass=streamed_mass+e_bound + literal=2*g_bound*stock**2+8*streamed_mass+4*stock+4+32*m + row=2*stock.bit_length()+9909+252+2*payload + maxchild=max(map(int,profile)) + inequalities=dict(local_primitive_bound=primitive_bound<2**48, + logical=logical<2**6050,router=router2*maxchild*maxchild) + assert all(inequalities.values()) + localbits=max(r['prefix_bits'] for p in providers.values() for r in p['local'].values()) + input_l2_bits=(m+1)//2 + required_prefix=localbits+input_l2_bits+call_count+bridge_sweeps+4 + assert required_prefix R helper map +# (verify.py checks the spec value against the constructor's HELPER-MAP.json) +SPOT=tuple(SPEC.get('width_spot_helpers',(270,282,294,306))) +# A pivot swap moves a kernel family's pivot role p -> x; the old pivot p becomes an ordinary cold helper and its width +# goes 8 -> 9 (construction/layers, PR641 PROOF-NOTE-PIVOT). Expected spot widths are derived from the package's pinned +# pivot-swap recipe (path and sha256 in the spec), not from free data: 9 at a swapped-out pivot, 8 otherwise. +_PKG=Path(os.environ['WITNESS_SPEC']).resolve().parents[1] +def _old_pivots(): + ps=SPEC.get('pivot_swap') + if not ps:return frozenset() + raw=(_PKG/ps['recipe']).read_bytes();import hashlib + assert hashlib.sha256(raw).hexdigest()==ps['sha256'],'pivot-swap recipe pin' + return frozenset(s['pivot']for s in json.loads(raw)['swaps']) +OLD_PIVOTS=_old_pivots() +def spot_widths(v=112): + """Expected residual widths at the spot helpers (helper indices) of the gauge44 provider.""" + return tuple(9 if 2*v+h in OLD_PIVOTS else 8 for h in SPOT) +PIDS=tuple(sorted(set(DISPATCH.values()))) +COUNTS=dict(Counter(DISPATCH.values())) +assert DISCOVER or set(PROVIDERS)==set(PIDS),'spec providers differ from dispatch providers' +def lookup(key): + """Dotted spec path; a segment may itself contain dots when it names a file (split at most once per known file suffix).""" + v=SPEC;parts=key.split('.') + while parts: + for n in range(len(parts),0,-1): + k='.'.join(parts[:n]) + if isinstance(v,dict) and k in v:v=v[k];parts=parts[n:];break + else:raise KeyError('spec has no key %s'%key) + return v +def pin(key,got): + """Strict mode: got must equal the spec value at dotted key; the failure names the key.""" + if DISCOVER: + if os.environ.get('WITNESS_RECORD'): # discovery bookkeeping only: append (key, value) for the spec writer + with open(os.environ['WITNESS_RECORD'],'a')as f:f.write(json.dumps([key,got],default=str)+chr(10)) + return got + want=lookup(key) + assert got==want,'SPEC MISMATCH %s: expected %s got %s'%(key,json.dumps(want)[:400],json.dumps(got,default=str)[:400]) + return got +def partner(pid): + """A different provider for substitution controls (next in sorted order).""" + assert len(PIDS)>1 + return PIDS[(PIDS.index(pid)+1)%len(PIDS)] diff --git a/research/complex-t37-independent-seed39/vendor/pr870/construction/barch/LOCAL-PINS-barch-U8.json b/research/complex-t37-independent-seed39/vendor/pr870/construction/barch/LOCAL-PINS-barch-U8.json new file mode 100644 index 0000000000..4028b95c0e --- /dev/null +++ b/research/complex-t37-independent-seed39/vendor/pr870/construction/barch/LOCAL-PINS-barch-U8.json @@ -0,0 +1,50 @@ +{ + "word": "U8", + "barch_controls": [ + "C0_identity", + "recipe", + "drop_restore", + "restore_full", + "drop_preread", + "donation_after", + "drop_restore@231", + "restore_full@231", + "drop_preread@231", + "donation_after@231", + "drop_restore@230", + "restore_full@230", + "drop_preread@230", + "donation_after@230", + "drop_restore@232", + "restore_full@232", + "drop_preread@232", + "donation_after@232", + "drop_restore@236", + "restore_full@236", + "drop_preread@236", + "donation_after@236", + "drop_restore@226", + "restore_full@226", + "drop_preread@226", + "donation_after@226", + "drop_restore@228", + "restore_full@228", + "drop_preread@228", + "donation_after@228", + "drop_restore@62", + "restore_full@62", + "drop_preread@62", + "donation_after@62", + "drop_restore@238", + "restore_full@238", + "drop_preread@238", + "donation_after@238" + ], + "layer_controls": 95, + "canonical_sha256": "24db880b7dab31e6af4eec8a1aba1bbbae29cd50d9a7b77cf0e9b571b3e5ae7c", + "program_sha256": { + "forward": "83d65a63f51bd1ce7f3dd4e4d3597311e065b4775796cd87aea3e3a62689047c", + "backward": "e4e483b764e9a85f84a04425e57d73ecdcc72eb2e4d97a64f17d9da58fa5ace0" + }, + "clifford_recipes_sha256": "4629507dcbdd516457c001ff8f9dbe750d1a0cbfa5cfa3c6be003d45804ba0c5" +} diff --git a/research/complex-t37-independent-seed39/vendor/pr870/construction/barch/RECIPE-U8.json b/research/complex-t37-independent-seed39/vendor/pr870/construction/barch/RECIPE-U8.json new file mode 100644 index 0000000000..ee215a805a --- /dev/null +++ b/research/complex-t37-independent-seed39/vendor/pr870/construction/barch/RECIPE-U8.json @@ -0,0 +1,1528 @@ +{ + "base_sha256": "1e1d99ba7aab877d6b573c41f7030ee73de9a52fee51d0a822ddaae71251999f", + "B_delete": [ + 5, + 7, + 9, + 11, + 13, + 15, + 17, + 19, + 878, + 880, + 886, + 888, + 894, + 896, + 902, + 904, + 910, + 912, + 918, + 920, + 926, + 928, + 934, + 936, + 1215, + 1217, + 1223, + 1225, + 1231, + 1233, + 1239, + 1241, + 1247, + 1249, + 1255, + 1257, + 1263, + 1265, + 1271, + 1273 + ], + "B_insert": [ + [ + 5, + [ + "add", + 125, + 450, + 1, + 2, + [ + 24 + ] + ] + ], + [ + 7, + [ + "add", + 121, + 451, + 1, + 2, + [ + 24 + ] + ] + ], + [ + 9, + [ + "add", + 181, + 452, + 1, + 2, + [ + 30 + ] + ] + ], + [ + 11, + [ + "add", + 177, + 453, + 1, + 2, + [ + 30 + ] + ] + ], + [ + 13, + [ + "add", + 117, + 454, + -1, + 1, + [ + 30 + ] + ] + ], + [ + 15, + [ + "add", + 113, + 455, + -1, + 1, + [ + 30 + ] + ] + ], + [ + 17, + [ + "add", + 189, + 456, + -1, + 1, + [ + 24 + ] + ] + ], + [ + 19, + [ + "add", + 185, + 457, + -1, + 1, + [ + 24 + ] + ] + ], + [ + 676, + [ + "add", + 484, + 231, + 1, + 1, + [ + 386, + 64, + 34, + 24, + 4, + 1 + ] + ] + ], + [ + 677, + [ + "add", + 485, + 226, + 1, + 1, + [ + 388, + 68, + 32, + 24, + 2, + 1 + ] + ] + ], + [ + 693, + [ + "add", + 496, + 450, + 1, + 1, + [ + 260, + 132, + 70, + 38, + 24, + 1 + ] + ] + ], + [ + 694, + [ + "add", + 497, + 451, + 1, + 1, + [ + 260, + 132, + 64, + 32, + 24, + 1 + ] + ] + ], + [ + 711, + [ + "add", + 508, + 230, + 1, + 1, + [ + 390, + 70, + 38, + 20, + 10, + 1 + ] + ] + ], + [ + 712, + [ + "add", + 509, + 228, + 1, + 1, + [ + 390, + 64, + 32, + 20, + 10, + 1 + ] + ] + ], + [ + 729, + [ + "add", + 520, + 452, + 1, + 1, + [ + 268, + 140, + 64, + 38, + 30, + 1 + ] + ] + ], + [ + 730, + [ + "add", + 521, + 453, + 1, + 1, + [ + 266, + 138, + 70, + 32, + 30, + 1 + ] + ] + ], + [ + 747, + [ + "add", + 532, + 232, + -2, + 1, + [ + 385, + 64, + 33, + 18, + 11, + 7 + ] + ] + ], + [ + 748, + [ + "add", + 533, + 62, + -2, + 1, + [ + 385, + 65, + 32, + 19, + 10, + 7 + ] + ] + ], + [ + 763, + [ + "add", + 544, + 454, + -2, + 1, + [ + 267, + 139, + 65, + 33, + 25, + 7 + ] + ] + ], + [ + 764, + [ + "add", + 545, + 455, + -2, + 1, + [ + 267, + 139, + 64, + 32, + 25, + 7 + ] + ] + ], + [ + 779, + [ + "add", + 556, + 236, + -2, + 1, + [ + 385, + 65, + 33, + 24, + 4, + 3 + ] + ] + ], + [ + 780, + [ + "add", + 557, + 238, + -2, + 1, + [ + 385, + 64, + 32, + 24, + 4, + 3 + ] + ] + ], + [ + 795, + [ + "add", + 568, + 456, + -2, + 1, + [ + 258, + 130, + 64, + 33, + 24, + 7 + ] + ] + ], + [ + 796, + [ + "add", + 569, + 457, + -2, + 1, + [ + 259, + 131, + 65, + 32, + 24, + 7 + ] + ] + ], + [ + 1215, + [ + "add", + 125, + 450, + -1, + 2, + [ + 256, + 128, + 66, + 34, + 24, + 4, + 1 + ] + ] + ], + [ + 1217, + [ + "add", + 121, + 451, + -1, + 2, + [ + 260, + 132, + 64, + 32, + 24, + 2, + 1 + ] + ] + ], + [ + 1223, + [ + "add", + 149, + 231, + -1, + 2, + [ + 258, + 128, + 64, + 34, + 24, + 4, + 1 + ] + ] + ], + [ + 1225, + [ + "add", + 145, + 226, + -1, + 2, + [ + 256, + 132, + 68, + 32, + 24, + 2, + 1 + ] + ] + ], + [ + 1231, + [ + "add", + 181, + 452, + -1, + 2, + [ + 262, + 134, + 64, + 38, + 20, + 10, + 1 + ] + ] + ], + [ + 1233, + [ + "add", + 177, + 453, + -1, + 2, + [ + 256, + 128, + 70, + 32, + 20, + 10, + 1 + ] + ] + ], + [ + 1239, + [ + "add", + 221, + 230, + -1, + 2, + [ + 256, + 134, + 70, + 38, + 20, + 10, + 1 + ] + ] + ], + [ + 1241, + [ + "add", + 217, + 228, + -1, + 2, + [ + 262, + 128, + 64, + 32, + 20, + 10, + 1 + ] + ] + ], + [ + 1247, + [ + "add", + 117, + 454, + 1, + 1, + [ + 256, + 128, + 65, + 33, + 18, + 11, + 7 + ] + ] + ], + [ + 1249, + [ + "add", + 113, + 455, + 1, + 1, + [ + 257, + 129, + 64, + 32, + 19, + 10, + 7 + ] + ] + ], + [ + 1255, + [ + "add", + 157, + 232, + 1, + 1, + [ + 257, + 128, + 64, + 33, + 18, + 11, + 7 + ] + ] + ], + [ + 1257, + [ + "add", + 153, + 62, + 1, + 1, + [ + 256, + 129, + 65, + 32, + 19, + 10, + 7 + ] + ] + ], + [ + 1263, + [ + "add", + 189, + 456, + 1, + 1, + [ + 257, + 129, + 64, + 33, + 24, + 4, + 3 + ] + ] + ], + [ + 1265, + [ + "add", + 185, + 457, + 1, + 1, + [ + 256, + 128, + 65, + 32, + 24, + 4, + 3 + ] + ] + ], + [ + 1271, + [ + "add", + 213, + 236, + 1, + 1, + [ + 256, + 129, + 65, + 33, + 24, + 4, + 3 + ] + ] + ], + [ + 1273, + [ + "add", + 209, + 238, + 1, + 1, + [ + 257, + 128, + 64, + 32, + 24, + 4, + 3 + ] + ] + ] + ], + "B_frames": { + "1340": [ + 256, + 128, + 66, + 34, + 24, + 4, + 1 + ], + "1343": [ + 256, + 128, + 64, + 32, + 24, + 4, + 1 + ], + "1346": [ + 260, + 132, + 68, + 36, + 24, + 2, + 1 + ], + "1349": [ + 260, + 132, + 64, + 32, + 24, + 2, + 1 + ], + "1352": [ + 258, + 128, + 64, + 34, + 24, + 4, + 1 + ], + "1355": [ + 260, + 128, + 68, + 32, + 24, + 2, + 1 + ], + "1358": [ + 256, + 130, + 64, + 34, + 24, + 4, + 1 + ], + "1361": [ + 256, + 132, + 68, + 32, + 24, + 2, + 1 + ], + "1364": [ + 262, + 134, + 64, + 38, + 20, + 10, + 1 + ], + "1367": [ + 262, + 134, + 70, + 32, + 18, + 12, + 1 + ], + "1370": [ + 256, + 128, + 64, + 38, + 18, + 12, + 1 + ], + "1373": [ + 256, + 128, + 70, + 32, + 20, + 10, + 1 + ], + "1376": [ + 256, + 134, + 70, + 38, + 20, + 10, + 1 + ], + "1379": [ + 256, + 134, + 64, + 32, + 20, + 10, + 1 + ], + "1382": [ + 262, + 128, + 70, + 38, + 20, + 10, + 1 + ], + "1385": [ + 262, + 128, + 64, + 32, + 20, + 10, + 1 + ], + "1388": [ + 256, + 128, + 65, + 33, + 18, + 11, + 7 + ], + "1391": [ + 256, + 128, + 64, + 32, + 18, + 11, + 7 + ], + "1394": [ + 257, + 129, + 65, + 33, + 19, + 10, + 7 + ], + "1397": [ + 257, + 129, + 64, + 32, + 19, + 10, + 7 + ], + "1400": [ + 257, + 128, + 64, + 33, + 18, + 11, + 7 + ], + "1403": [ + 257, + 128, + 65, + 32, + 19, + 10, + 7 + ], + "1406": [ + 256, + 129, + 64, + 33, + 18, + 11, + 7 + ], + "1409": [ + 256, + 129, + 65, + 32, + 19, + 10, + 7 + ], + "1412": [ + 257, + 129, + 64, + 33, + 24, + 4, + 3 + ], + "1415": [ + 257, + 129, + 65, + 32, + 24, + 5, + 2 + ], + "1418": [ + 256, + 128, + 64, + 33, + 24, + 5, + 2 + ], + "1421": [ + 256, + 128, + 65, + 32, + 24, + 4, + 3 + ], + "1424": [ + 256, + 129, + 65, + 33, + 24, + 4, + 3 + ], + "1427": [ + 256, + 129, + 64, + 32, + 24, + 4, + 3 + ], + "1430": [ + 257, + 128, + 65, + 33, + 24, + 4, + 3 + ], + "1433": [ + 257, + 128, + 64, + 32, + 24, + 4, + 3 + ] + }, + "tail_insert": [ + [ + 7, + [ + "add", + 496, + 450, + -1, + 1, + [ + 256, + 128, + 64, + 32, + 24, + 4, + 2, + 1 + ] + ] + ], + [ + 6, + [ + "add", + 497, + 451, + -1, + 1, + [ + 256, + 128, + 64, + 32, + 24, + 4, + 2, + 1 + ] + ] + ], + [ + 5, + [ + "add", + 520, + 452, + -1, + 1, + [ + 256, + 128, + 64, + 32, + 18, + 10, + 6, + 1 + ] + ] + ], + [ + 4, + [ + "add", + 521, + 453, + -1, + 1, + [ + 256, + 128, + 64, + 32, + 18, + 10, + 6, + 1 + ] + ] + ], + [ + 3, + [ + "add", + 544, + 454, + 2, + 1, + [ + 256, + 128, + 64, + 32, + 18, + 10, + 6, + 1 + ] + ] + ], + [ + 2, + [ + "add", + 545, + 455, + 2, + 1, + [ + 256, + 128, + 64, + 32, + 18, + 10, + 6, + 1 + ] + ] + ], + [ + 1, + [ + "add", + 568, + 456, + 2, + 1, + [ + 256, + 128, + 64, + 32, + 24, + 4, + 2, + 1 + ] + ] + ], + [ + 0, + [ + "add", + 569, + 457, + 2, + 1, + [ + 256, + 128, + 64, + 32, + 24, + 4, + 2, + 1 + ] + ] + ] + ], + "cleanup_prepend": [ + [ + "add", + 484, + 231, + -1, + 1, + [ + 256, + 128, + 64, + 32, + 16, + 8, + 4, + 2, + 1 + ] + ], + [ + "add", + 485, + 226, + -1, + 1, + [ + 256, + 128, + 64, + 32, + 16, + 8, + 4, + 2, + 1 + ] + ], + [ + "add", + 508, + 230, + -1, + 1, + [ + 256, + 128, + 64, + 32, + 16, + 8, + 4, + 2, + 1 + ] + ], + [ + "add", + 509, + 228, + -1, + 1, + [ + 256, + 128, + 64, + 32, + 16, + 8, + 4, + 2, + 1 + ] + ], + [ + "add", + 532, + 232, + 2, + 1, + [ + 256, + 128, + 64, + 32, + 16, + 8, + 4, + 2, + 1 + ] + ], + [ + "add", + 533, + 62, + 2, + 1, + [ + 256, + 128, + 64, + 32, + 16, + 8, + 4, + 2, + 1 + ] + ], + [ + "add", + 556, + 236, + 2, + 1, + [ + 256, + 128, + 64, + 32, + 16, + 8, + 4, + 2, + 1 + ] + ], + [ + "add", + 557, + 238, + 2, + 1, + [ + 256, + 128, + 64, + 32, + 16, + 8, + 4, + 2, + 1 + ] + ] + ], + "local_profile": { + "1": 2548, + "2": 338, + "3": 446, + "4": 162, + "5": 72, + "8": 8 + }, + "expect_sha256": "090fd574747fbf9628e70cb9beb792732914cfa52e1df147579fe4dbccc68c5a", + "priced": { + "dk_ideal": 3.140480230774418e-07, + "dP": { + "5": 16, + "4": -32, + "3": 16 + } + }, + "variants": [ + { + "X": 231, + "E": 450, + "dsides": [ + 878, + 886 + ], + "donors": [ + 450, + 231 + ], + "hold": [ + 496, + 484 + ], + "kept": { + "1215": 450, + "1223": 231 + }, + "when": "mid" + }, + { + "X": 230, + "E": 452, + "dsides": [ + 894, + 902 + ], + "donors": [ + 452, + 230 + ], + "hold": [ + 520, + 508 + ], + "kept": { + "1231": 452, + "1239": 230 + }, + "when": "mid" + }, + { + "X": 232, + "E": 454, + "dsides": [ + 910, + 918 + ], + "donors": [ + 454, + 232 + ], + "hold": [ + 544, + 532 + ], + "kept": { + "1247": 454, + "1255": 232 + }, + "when": "mid" + }, + { + "X": 236, + "E": 456, + "dsides": [ + 926, + 934 + ], + "donors": [ + 456, + 236 + ], + "hold": [ + 568, + 556 + ], + "kept": { + "1263": 456, + "1271": 236 + }, + "when": "mid" + }, + { + "X": 226, + "E": 451, + "dsides": [ + 880, + 888 + ], + "donors": [ + 451, + 226 + ], + "hold": [ + 497, + 485 + ], + "kept": { + "1217": 451, + "1225": 226 + }, + "when": "mid" + }, + { + "X": 228, + "E": 453, + "dsides": [ + 896, + 904 + ], + "donors": [ + 453, + 228 + ], + "hold": [ + 521, + 509 + ], + "kept": { + "1233": 453, + "1241": 228 + }, + "when": "mid" + }, + { + "X": 62, + "E": 455, + "dsides": [ + 912, + 920 + ], + "donors": [ + 455, + 62 + ], + "hold": [ + 545, + 533 + ], + "kept": { + "1249": 455, + "1257": 62 + }, + "when": "mid" + }, + { + "X": 238, + "E": 457, + "dsides": [ + 928, + 936 + ], + "donors": [ + 457, + 238 + ], + "hold": [ + 569, + 557 + ], + "kept": { + "1265": 457, + "1273": 238 + }, + "when": "mid" + } + ] +} \ No newline at end of file diff --git a/research/complex-t37-independent-seed39/vendor/pr870/construction/barch/build_tri.py b/research/complex-t37-independent-seed39/vendor/pr870/construction/barch/build_tri.py new file mode 100644 index 0000000000..11c4371114 --- /dev/null +++ b/research/complex-t37-independent-seed39/vendor/pr870/construction/barch/build_tri.py @@ -0,0 +1,87 @@ +#!/usr/bin/env python3 +"""build_tri.py BASE_WORD RECIPE OUT_WORD [--control NAME] + +Standard library only. Applies a NewBArch triangle-hybrid recipe to the X4 word (1e1d99ba) and writes a FULL-WORD.json.gz. +Recipe keys (all indices refer to the BASE word): + base_sha256 sha256 of the decompressed base JSON (checked) + B_delete list of B indices removed + B_insert list of [pos, gate]: gate (with frame) inserted before base B gate pos (list order kept) + B_frames {index: frame}: explicit re-chosen frame of a kept base B gate + tail_insert list of [early_index, gate]: gates appended to cleanup in list order, then registered as early cleanup at early_index (ascending) + cleanup_prepend list of gates prepended to the full cleanup (early indices are shifted) + local_profile report.local_profile of the result + expect_sha256 sha256 of the decompressed result (checked unless a control is requested) +Controls (each must be REJECTED by audit_local; see controls.json): + drop_restore omit cleanup_prepend (end value of the holder not restored) + restore_full move tail_insert gates into the full cleanup (FULL frame) instead of early cleanup + drop_preread omit the inserted entrance pre-reads (inserted target += E gates at pos < first donation) + donation_after insert each donation after its reading target's read instead of before it + NAME@X the same control restricted to the instance whose packet register is X (recipe 'variants') +""" +import sys, json, gzip, hashlib, copy + +FULL = [256, 128, 64, 32, 16, 8, 4, 2, 1] + +def load(p): + raw = gzip.decompress(open(p, 'rb').read()); return json.loads(raw), hashlib.sha256(raw).hexdigest() + +def apply(w, rc, control=None): + w = copy.deepcopy(w); B = w['B'] + S = None + if control and '@' in control: # per-instance control: name@X mutates only instance X's gates + control, x = control.split('@'); x = int(x) + vv = [s for s in rc['variants'] if s['X'] == x][0]; S = {vv['X'], vv['E'], *vv['hold']} + sel = lambda g: S is None or bool({g[1], g[2]} & S) + dele = set(rc['B_delete']); fr = {int(k): f for k, f in rc['B_frames'].items()} + ins = [list(x) for x in rc['B_insert']] + don = [x for x in ins if not (112 <= x[1][1] < 224)] # donations: destination is not a target + first_don = min(p for p, _ in don) if don else 0 + if control == 'drop_preread': + ins = [x for x in ins if not (x[0] < first_don and 112 <= x[1][1] < 224 and sel(x[1]))] + if control == 'donation_after': + new = [] + for p, g in ins: + if g in [d[1] for d in don] and sel(g): + rd = [i for i, e in enumerate(B) if i >= p and e[0] == 'add' and e[2] == g[1] and 112 <= e[1] < 224] + p = rd[0] + 1 + new.append([p, g]) + ins = new + at = {} + for p, g in ins: at.setdefault(p, []).append(list(g)) + out = [] + for i, e in enumerate(B): + out.extend(at.get(i, [])) + if i in dele: continue + e = list(e) + if i in fr: e = e[:-1] + [list(fr[i])] + out.append(e) + out.extend(at.get(len(B), [])) + w['B'] = out + pre = [list(g) for g in rc['cleanup_prepend'] if not (control == 'drop_restore' and sel(g))] + tails = [list(x) for x in rc['tail_insert']] + if control == 'restore_full': + pre = pre + [g[1][:-1] + [FULL] for g in tails if sel(g[1])]; tails = [g for g in tails if not sel(g[1])] + C = pre + w['cleanup']; sh = len(pre) + early = [[i + sh, U] for i, U in w['early_cleanup']] + idx = [] + for j, g in tails: C.append(list(g)); idx.append((j, len(C) - 1, list(g[-1]))) # appended in recipe order + for j, ci, U in sorted(idx): early.insert(j, [ci, U]) # then registered at their early index + w['cleanup'] = C; w['early_cleanup'] = early + w['report'] = dict(w['report']); w['report']['local_profile'] = rc['local_profile'] + return w + +def main(): + a = sys.argv[1:]; control = None + if '--control' in a: k = a.index('--control'); control = a[k + 1]; del a[k:k + 2] + base, out = a[0], a[2] + w, sha = load(base); rc = json.load(open(a[1])) + if sha != rc['base_sha256']: raise SystemExit('base sha mismatch ' + sha) + w2 = apply(w, rc, control) + raw = json.dumps(w2, separators=(',', ':')).encode() + open(out, 'wb').write(gzip.compress(raw, mtime=0)) + s = hashlib.sha256(raw).hexdigest() + if control is None and s != rc['expect_sha256']: raise SystemExit('result sha mismatch ' + s) + print(json.dumps(dict(control=control, sha256=s))) + +if __name__ == '__main__': + main() diff --git a/research/complex-t37-independent-seed39/vendor/pr870/construction/barch/reproduce_barch.py b/research/complex-t37-independent-seed39/vendor/pr870/construction/barch/reproduce_barch.py new file mode 100644 index 0000000000..22f15b491d --- /dev/null +++ b/research/complex-t37-independent-seed39/vendor/pr870/construction/barch/reproduce_barch.py @@ -0,0 +1,92 @@ +#!/usr/bin/env python3 +"""Rebuild the B0 word (NewBArch's width-neutral triangle-hybrid B-delivery rewrite on X4) and its native locals. + +Input: a fresh `construction/jx/reproduce_jx.py` output directory; its X4 word (1e1d99ba...) is pinned there and by +RECIPE-B0.json (base_sha256). Steps, each checked exactly: + 1. barch: build_tri.py (standard library only; NewBArch) applies the recipe's explicit B deletes and inserts (with frames), + re-chosen B frames, early-cleanup tails and FULL-cleanup restores; it checks the base and result shas (d9ba0942...). + 2. barch-controls: run_controls.py rebuilds C0 (identity, must reproduce the input), the recipe word (must PASS #645's + independent audit_local.py) and four mutants (drop_restore, restore_full, drop_preread, donation_after), globally + and for each recipe variant (NAME@X); each mutant must FAIL audit_local with its pinned message. Every outcome is + required and the control set is pinned (LOCAL-PINS). + 3. layer-end-controls: ../layers_p6n/layer_end_controls.py (per-end variant) on the B0 word; count pinned. + 4. native, ledgers, local-replay, wrappers, phases: PR635's native local programs; canonical word, local programs and + Clifford recipes pinned (LOCAL-PINS-barch-.json). +Apache-2.0. Driver by ColdWitness around NewBArch's builder and controls. +""" +import argparse, gzip, hashlib, json, os, subprocess, sys, time +from pathlib import Path + +HERE = Path(__file__).resolve().parent +PKG = HERE.parents[1] +P6 = HERE.parent / 'layers_p6n' +MUTANTS = ('drop_restore', 'restore_full', 'drop_preread', 'donation_after') + + +def read(p): + raw = Path(p).read_bytes() + return json.loads(gzip.decompress(raw) if str(p).endswith('.gz') else raw) + + +def main(): + assert __debug__, 'Assertions are required' + ap = argparse.ArgumentParser(description=__doc__) + ap.add_argument('--main', type=Path, required=True) + ap.add_argument('--pr635', type=Path, required=True) + ap.add_argument('--jx-dir', type=Path, required=True, help='construction/jx/reproduce_jx.py output') + ap.add_argument('--recipe', default='U8', help='RECIPE-.json and LOCAL-PINS-barch-.json') + ap.add_argument('--out', type=Path, required=True) + ap.add_argument('--skip-phases', action='store_true') + a = ap.parse_args() + out = a.out.resolve(); assert not out.exists(); out.mkdir(parents=True) + up = a.pr635.resolve() / 'research/complex-571-cold14-st2' + src = a.main.resolve() / 'research/complex-k492-owner-repair/vendor/multicold' + base = src / 'vendor/pr558'; parent = base / 'vendor/pr552' + rfile = HERE / ('RECIPE-%s.json' % a.recipe); rec = read(rfile); pins = read(HERE / ('LOCAL-PINS-barch-%s.json' % a.recipe)) + env = dict(os.environ, PYTHONDONTWRITEBYTECODE='1', PYTHONUTF8='1', PYTHONINTMAXSTRDIGITS='0', + MULTICOLD_SOURCE=str(src), GAIN_PR564_SOURCE=str(src)) + for k in ('PYTHONOPTIMIZE', 'XPARAM', 'EXTRAH', 'PAIRING_RANKS', 'DIAG', 'HYBBUDGET', 'PR635_CODE'): env.pop(k, None) + steps = [] + + def run(label, script, *args, portable=True): + t = time.monotonic() + cmd = [sys.executable, '-B'] + ([str(src / 'code/run_portable.py')] if portable else []) + [str(script), *map(str, args)] + with (out / (label + '.log')).open('w') as f: + rc = subprocess.call(cmd, env=env, stdout=f, stderr=subprocess.STDOUT) + steps.append(dict(step=label, exit_code=rc, seconds=round(time.monotonic() - t, 3))) + (out / 'STEPS.json').write_text(json.dumps(steps, indent=2) + '\n') + assert rc == 0, label + print('PASS', label, flush=True) + + inp = a.jx_dir.resolve() / 'jx/FULL-WORD.json.gz' + assert hashlib.sha256(gzip.decompress(inp.read_bytes())).hexdigest() == rec['base_sha256'], 'input must be the pinned X4 word' + (out / 'barch').mkdir(); word = out / 'barch/FULL-WORD.json.gz' + run('barch', HERE / 'build_tri.py', inp, rfile, word, portable=False) + assert hashlib.sha256(gzip.decompress(word.read_bytes())).hexdigest() == rec['expect_sha256'] + run('barch-controls', HERE / 'run_controls.py', inp, rfile, PKG / 'independent/audit_local.py', out / 'barch-controls', portable=False) + res = read(out / 'barch-controls/controls.json') + want = ['C0_identity', 'recipe', *MUTANTS] + [m + '@' + str(v['X']) for v in rec.get('variants', []) for m in MUTANTS] + assert sorted(res) == sorted(want) == sorted(pins['barch_controls']) and all(x['ok'] for x in res.values()), res + routing = parent / 'complex-local/inputs/phase-baseline/CANONICAL-WORD.json.gz' + env['PR635_CODE'] = str(up / 'code') + run('layer-end-controls', P6 / 'layer_end_controls.py', word, routing, out / 'controls') + env.pop('PR635_CODE') + ctl = read(out / 'controls/COLD-END-CONTROLS.json') + assert ctl['status'] == 'PASS_COLD_END_RAW_WORD_CONTROLS' and len(ctl['rejected']) == pins['layer_controls'], len(ctl['rejected']) + local = out / 'local' + run('native', up / 'code/hpe_audit_and_transport.py', '--raw', word, '--routing', routing, '--out', local) + assert hashlib.sha256(gzip.decompress((local / 'CANONICAL-WORD.json.gz').read_bytes())).hexdigest() == pins['canonical_sha256'], 'canonical word' + run('ledgers', up / 'code/hpe_emit_local.py', local) + run('local-replay', up / 'code/hpe_audit_local.py', local) + run('wrappers', up / 'code/hpe_adapters_local.py', local / 'CANONICAL-WORD.json.gz', + local / 'RESIDUAL-ADAPTERS.json', local / 'WRAPPER-CHECKS.json') + checks = read(local / 'LOCAL-CHECKS.json') + for o, s in pins['program_sha256'].items(): assert checks[o]['sha256'] == s, ('local program', o) + if not a.skip_phases: + run('phases', base / 'code/phases_full.py', local, parent / 'complex-global/vendor531/vendor/clifford') + assert hashlib.sha256((local / 'CLIFFORD-RECIPES.json').read_bytes()).hexdigest() == pins['clifford_recipes_sha256'], 'clifford recipes' + print('DONE', local, flush=True) + + +if __name__ == '__main__': + main() diff --git a/research/complex-t37-independent-seed39/vendor/pr870/construction/barch/run_controls.py b/research/complex-t37-independent-seed39/vendor/pr870/construction/barch/run_controls.py new file mode 100644 index 0000000000..f1ce999bfb --- /dev/null +++ b/research/complex-t37-independent-seed39/vendor/pr870/construction/barch/run_controls.py @@ -0,0 +1,33 @@ +#!/usr/bin/env python3 +"""run_controls.py BASE_WORD RECIPE AUDIT_LOCAL_PY OUTDIR : C0 identity, the recipe word (must PASS) and the four negative +controls (each must FAIL audit_local with its pinned message prefix). Standard library only; writes OUTDIR/controls.json.""" +import sys, json, subprocess, os, gzip, hashlib +base, recipe, audit, out = sys.argv[1:5] +here = os.path.dirname(os.path.abspath(__file__)); os.makedirs(out, exist_ok=True) +# pinned rejection sites (observed on RECIPE-V1 and RECIPE-B0; the failing rows are recorded in controls.json): the holder 485 is not restored; the low-end restore 497-=451 moved to the +# FULL cleanup runs after 451's own tail and leaves 497 wrong; without the pre-read (or with the donation after the read) +# the entering helper's start value reaches a target. +EXPECT = {None: 'PASS', 'drop_restore': 'all-column endpoint failure (False, ', + 'restore_full': 'all-column endpoint failure (False, ', + 'drop_preread': 'nonzero entrance response', 'donation_after': 'nonzero entrance response'} +res = {} +ident = os.path.join(out, 'C0.json') +json.dump(dict(json.load(open(recipe)), B_delete=[], B_insert=[], B_frames={}, tail_insert=[], cleanup_prepend=[], + local_profile=json.loads(gzip.decompress(open(base, 'rb').read()))['report']['local_profile'], + expect_sha256=hashlib.sha256(gzip.decompress(open(base, 'rb').read())).hexdigest()), open(ident, 'w')) +r = subprocess.run([sys.executable, '-B', os.path.join(here, 'build_tri.py'), base, ident, os.path.join(out, 'C0.json.gz')], capture_output=True, text=True) +res['C0_identity'] = dict(ok=r.returncode == 0, out=r.stdout.strip() or r.stderr.strip()[-200:]) +ctls = list(EXPECT) + [c + '@' + str(s['X']) for s in json.load(open(recipe)).get('variants', []) for c in EXPECT if c] +for ctl in ctls: + name = ctl or 'recipe'; wp = os.path.join(out, name + '.json.gz') + cmd = [sys.executable, '-B', os.path.join(here, 'build_tri.py'), base, recipe, wp] + (['--control', ctl] if ctl else []) + b = subprocess.run(cmd, capture_output=True, text=True) + if b.returncode: res[name] = dict(ok=False, build=b.stderr[-300:]); continue + a = subprocess.run([sys.executable, '-B', audit, '--word', wp, '--output', os.path.join(out, name + '.audit.json')], capture_output=True, text=True) + txt = a.stdout + a.stderr + if ctl is None: ok = a.returncode == 0 and 'PASS_INDEPENDENT' in txt + else: ok = a.returncode != 0 and EXPECT[ctl.split('@')[0]] in txt + res[name] = dict(ok=ok, build=json.loads(b.stdout), audit_tail=txt.strip().splitlines()[-1][:200]) +json.dump(res, open(os.path.join(out, 'controls.json'), 'w'), indent=1) +print(json.dumps({k: x['ok'] for k, x in res.items()})) +sys.exit(0 if all(x['ok'] for x in res.values()) else 1) diff --git a/research/complex-t37-independent-seed39/vendor/pr870/construction/layers_np/PIVOT-SWAP-NP.json b/research/complex-t37-independent-seed39/vendor/pr870/construction/layers_np/PIVOT-SWAP-NP.json new file mode 100644 index 0000000000..4e0d846426 --- /dev/null +++ b/research/complex-t37-independent-seed39/vendor/pr870/construction/layers_np/PIVOT-SWAP-NP.json @@ -0,0 +1,588 @@ +{ + "input_content_sha256": "864ff4a19987bcb27016367801a98ca50dae69eafe01d3614f8bae69f5713d6d", + "output_content_sha256": "beb3579fce83cb3b70f4e85761cbb3b8c91d711d4b9cf473074269b8447fc4e4", + "swaps": [ + { + "pivot": 494, + "new_pivot": 566, + "entrance": [ + 24 + ], + "gates": [ + { + "part": "B", + "index": 379, + "before": [ + "add", + 566, + 494, + -1, + 1, + [ + 24 + ] + ], + "after": [ + "add", + 494, + 566, + -1, + 1, + [ + 24 + ] + ] + }, + { + "part": "B", + "index": 380, + "before": [ + "add", + 640, + 494, + 2, + 1, + [ + 24 + ] + ], + "after": [ + "add", + 640, + 566, + -2, + 1, + [ + 24 + ] + ] + }, + { + "part": "B", + "index": 381, + "before": [ + "add", + 642, + 494, + -2, + 1, + [ + 24 + ] + ], + "after": [ + "add", + 642, + 566, + 2, + 1, + [ + 24 + ] + ] + }, + { + "part": "B", + "index": 382, + "before": [ + "add", + 688, + 494, + 1, + 1, + [ + 24 + ] + ], + "after": [ + "add", + 688, + 566, + -1, + 1, + [ + 24 + ] + ] + }, + { + "part": "B", + "index": 383, + "before": [ + "add", + 690, + 494, + -1, + 1, + [ + 24 + ] + ], + "after": [ + "add", + 690, + 566, + 1, + 1, + [ + 24 + ] + ] + } + ] + }, + { + "pivot": 495, + "new_pivot": 567, + "entrance": [ + 24 + ], + "gates": [ + { + "part": "B", + "index": 516, + "before": [ + "add", + 123, + 495, + 1, + 1, + [ + 24 + ] + ], + "after": [ + "add", + 123, + 567, + -1, + 1, + [ + 24 + ] + ] + }, + { + "part": "B", + "index": 584, + "before": [ + "add", + 187, + 495, + -1, + 1, + [ + 24 + ] + ], + "after": [ + "add", + 187, + 567, + 1, + 1, + [ + 24 + ] + ] + }, + { + "part": "B", + "index": 686, + "before": [ + "add", + 567, + 495, + -1, + 1, + [ + 24 + ] + ], + "after": [ + "add", + 495, + 567, + -1, + 1, + [ + 24 + ] + ] + } + ] + }, + { + "pivot": 506, + "new_pivot": 578, + "entrance": [ + 24 + ], + "gates": [ + { + "part": "B", + "index": 176, + "before": [ + "add", + 652, + 506, + 2, + 1, + [ + 24 + ] + ], + "after": [ + "add", + 652, + 578, + -2, + 1, + [ + 24 + ] + ] + }, + { + "part": "B", + "index": 178, + "before": [ + "add", + 652, + 506, + -2, + 1, + [ + 24 + ] + ], + "after": [ + "add", + 652, + 578, + 2, + 1, + [ + 24 + ] + ] + }, + { + "part": "B", + "index": 278, + "before": [ + "add", + 700, + 506, + -2, + 1, + [ + 24 + ] + ], + "after": [ + "add", + 700, + 578, + 2, + 1, + [ + 24 + ] + ] + }, + { + "part": "B", + "index": 280, + "before": [ + "add", + 700, + 506, + 2, + 1, + [ + 24 + ] + ], + "after": [ + "add", + 700, + 578, + -2, + 1, + [ + 24 + ] + ] + }, + { + "part": "B", + "index": 702, + "before": [ + "add", + 578, + 506, + -1, + 1, + [ + 24 + ] + ], + "after": [ + "add", + 506, + 578, + -1, + 1, + [ + 24 + ] + ] + } + ] + }, + { + "pivot": 507, + "new_pivot": 579, + "entrance": [ + 24 + ], + "gates": [ + { + "part": "B", + "index": 93, + "before": [ + "add", + 211, + 507, + -1, + 1, + [ + 24 + ] + ], + "after": [ + "add", + 211, + 579, + 1, + 1, + [ + 24 + ] + ] + }, + { + "part": "B", + "index": 541, + "before": [ + "add", + 147, + 507, + 1, + 1, + [ + 24 + ] + ], + "after": [ + "add", + 147, + 579, + -1, + 1, + [ + 24 + ] + ] + }, + { + "part": "B", + "index": 704, + "before": [ + "add", + 579, + 507, + -1, + 1, + [ + 24 + ] + ], + "after": [ + "add", + 507, + 579, + -1, + 1, + [ + 24 + ] + ] + } + ] + }, + { + "pivot": 519, + "new_pivot": 543, + "entrance": [ + 30 + ], + "gates": [ + { + "part": "B", + "index": 507, + "before": [ + "add", + 115, + 519, + -1, + 1, + [ + 30 + ] + ], + "after": [ + "add", + 115, + 543, + 1, + 1, + [ + 30 + ] + ] + }, + { + "part": "B", + "index": 575, + "before": [ + "add", + 179, + 519, + 1, + 1, + [ + 30 + ] + ], + "after": [ + "add", + 179, + 543, + -1, + 1, + [ + 30 + ] + ] + }, + { + "part": "B", + "index": 722, + "before": [ + "add", + 543, + 519, + -1, + 1, + [ + 30 + ] + ], + "after": [ + "add", + 519, + 543, + -1, + 1, + [ + 30 + ] + ] + } + ] + }, + { + "pivot": 531, + "new_pivot": 555, + "entrance": [ + 30 + ], + "gates": [ + { + "part": "B", + "index": 550, + "before": [ + "add", + 155, + 531, + -1, + 1, + [ + 30 + ] + ], + "after": [ + "add", + 155, + 555, + 1, + 1, + [ + 30 + ] + ] + }, + { + "part": "B", + "index": 617, + "before": [ + "add", + 219, + 531, + 1, + 1, + [ + 30 + ] + ], + "after": [ + "add", + 219, + 555, + -1, + 1, + [ + 30 + ] + ] + }, + { + "part": "B", + "index": 740, + "before": [ + "add", + 555, + 531, + -1, + 1, + [ + 30 + ] + ], + "after": [ + "add", + 531, + 555, + -1, + 1, + [ + 30 + ] + ] + } + ] + } + ] +} diff --git a/research/complex-t37-independent-seed39/vendor/pr870/construction/layers_p6n/layer_end_controls.py b/research/complex-t37-independent-seed39/vendor/pr870/construction/layers_p6n/layer_end_controls.py new file mode 100644 index 0000000000..dd321fe255 --- /dev/null +++ b/research/complex-t37-independent-seed39/vendor/pr870/construction/layers_p6n/layer_end_controls.py @@ -0,0 +1,199 @@ +"""layer_end_controls.py LAYERED-WORD.json.gz ROUTING OUTDIR (env PR635_CODE): adapted PR635 cold_end_controls.py (LayerReviewer): raw-word negative controls for the cold low-frame ends and the +refactored cleanup accepted by hpe_audit_and_transport.py. Every mutation MUST be rejected (AssertionError); the +unmutated word MUST pass. Apache-2.0. DreamingOfClouds with Claude Opus 5.5 (Anthropic), via Claude Code.""" +import copy, gzip, json, shutil, sys, tempfile +from pathlib import Path +import os +sys.path.insert(0, os.environ['PR635_CODE']) # PR635's unchanged hpe_audit_and_transport.py +import hpe_audit_and_transport as atc + +src, routing, outdir = Path(sys.argv[1]), Path(sys.argv[2]), Path(sys.argv[3]) +word = json.load(gzip.open(src)) +v, R = word['report']['v'], word['report']['R']; n = 2*v + R +regs = lambda e: [e[1]] + ([e[2]] if e[0] == 'add' else []) +meta = word['refactored_cleanup'] +cold = [int(h) for h in meta['cold_low_frame_ended_helpers']] +npre = meta['premix_gates']; nlow = meta['lower_frame_gates'] +early = word['early_cleanup']; eidx = {i for i, _ in early} +rest = [i for i in range(len(word['cleanup'])) if i not in eidx] + + +def trial(w): + """None if the transport audit accepts w, else the AssertionError message.""" + tmp = Path(tempfile.mkdtemp()) + p = tmp/'w.json.gz'; p.write_bytes(gzip.compress(json.dumps(w).encode(), mtime=0)) + try: + atc.run(p, routing, tmp/'out') + return None + except AssertionError as e: + return repr(e.args[0]) if e.args else 'AssertionError' + finally: + shutil.rmtree(tmp, ignore_errors=True) + + +# Pinned rejection reasons: each mutant must fail at this assertion of hpe_audit_and_transport.py (message substring). +ENDPOINT, COLDPRE, CONE = "'arbitrary-dirt endpoint'", 'touches a cold hyperplane-ended helper', 'hpe cone pre-check (row / column)' +WHY = dict(premix_to_precondition=COLDPRE, premix_dropped=COLDPRE, e_premix_dropped=ENDPOINT, lower_dropped=ENDPOINT, + remainder_dropped=ENDPOINT, coefficient=ENDPOINT, into_full='cleanup on non-FULL end', dyadic=ENDPOINT, frame_below="'nonmonotone'", + nonmonotone="'nonmonotone'", other_frame=CONE, cone=CONE, extra_end=COLDPRE, marker='cleanup is not the literal reversed inverse', + target='refactored cleanup touches a target', profile_pin='paid local profile differs from the reported local_profile', + entering_precondition='zero-frame precondition/compensation touches an entering helper') +assert trial(word) is None, 'unmutated cold-end word must pass' +results = [] + + +def reject(name, mut, why): + """the mutation must be rejected, and for the pinned reason (a substring of the audit's assertion message).""" + w = copy.deepcopy(word); mut(w) + msg = trial(w) + assert msg is not None, 'cold-end mutation accepted: ' + name + assert why in msg, 'cold-end mutation %r rejected for the wrong reason: %s' % (name, msg[:300]) + results.append(name); print('rejected', name, '|', why, flush=True) + + +h0 = cold[0] +i0, U0 = next((i, f) for i, f in early if h0 in regs(word['cleanup'][i])) +r0 = rest[len(rest)//2] + + +def premix_to_precondition(w): # premix before the wrappers; compensation then reads the cold ends + w['precondition'] = w['precondition'] + w['A'][:npre]; w['A'] = w['A'][npre:] + + +def lower_gate_into_full(w): # a lower-frame gate on a cold-ended helper executed in the FULL remainder instead + w['early_cleanup'] = [x for x in w['early_cleanup'] if x[0] != i0] + + +def drop_cleanup_gate(w, i): # remove the gate AND its early_cleanup entry: a structurally valid word missing one gate + w['cleanup'].pop(i) + w['early_cleanup'] = [[j - (j > i), f] for j, f in w['early_cleanup'] if j != i] + + +def other_frame(w): # a different frame of the same dimension as the cold end (another cold helper's) + f = next(w['helper_final'][str(h)] for h in cold if w['helper_final'][str(h)] != w['helper_final'][str(h0)]) + w['helper_final'][str(h0)] = f + + +def extra_cold_end(w): # declare a premixed partner of h0 cold-ended at h0's frame: fails the row/column cone + p = next(r for e in w['A'][:npre] for r in regs(e) if r != h0 and h0 in regs(e)) + w['helper_final'][str(p)] = w['helper_final'][str(h0)] + + +reject('premix placed in the zero-frame precondition (before the cold wrappers)', premix_to_precondition, WHY['premix_to_precondition']) +reject('one premix gate dropped (the compensation then reads a cold-ended helper)', lambda w: w['A'].pop(npre - 1), WHY['premix_dropped']) +reject('one lower-frame cleanup gate dropped (gate and its early_cleanup entry)', lambda w: drop_cleanup_gate(w, i0), WHY['lower_dropped']) +reject('one FULL-remainder gate dropped', lambda w: drop_cleanup_gate(w, r0), WHY['remainder_dropped']) +reject('lower-frame gate coefficient changed', lambda w: w['cleanup'][i0].__setitem__(3, w['cleanup'][i0][3] * 2), WHY['coefficient']) +reject('lower-frame gate moved into the FULL remainder (touches a cold-ended helper at FULL)', lower_gate_into_full, WHY['into_full']) +reject('lower-frame gate frame below its registers\' frames', lambda w: next(x for x in w['early_cleanup'] if x[0] == i0).__setitem__(1, U0[:-1]), WHY['frame_below']) +reject('cold end at another dim-4 frame', other_frame, WHY['other_frame']) +# PROFILE-PIN control: without its helper_final entry the cold-ended helper is a valid FULL-ended helper; the word is +# rejected because its reported paid profile (which counts the low end) no longer matches the frame chains. +reject('profile pin: cold end dropped (valid FULL end, but the reported profile counts the low end)', lambda w: w['helper_final'].pop(str(h0)), WHY['profile_pin']) +reject('extra cold end on a premixed partner (the compensation reads it before its wrapper)', extra_cold_end, WHY['extra_end']) +reject('refactored-cleanup marker removed (literal-inverse rule applies)', lambda w: w.pop('refactored_cleanup'), WHY['marker']) +reject('remainder gate retargeted to a target register', lambda w: w['cleanup'][r0].__setitem__(1, v + 3), WHY['target']) +reject('non-dyadic remainder coefficient', lambda w: w['cleanup'][r0].__setitem__(4 if w['cleanup'][r0][0] == 'add' else 3, 3 * w['cleanup'][r0][4 if w['cleanup'][r0][0] == 'add' else 3]), WHY['dyadic']) +reject('profile not updated (paid climbs misreported)', lambda w: w['report']['local_profile'].__setitem__('5', w['report']['local_profile']['5'] - 1), WHY['profile_pin']) +ent = [int(h) for h in sys.argv[4].split(',')] if len(sys.argv) > 4 else [int(h) for h in meta.get('entering_low_frame_ended_helpers', [])] +for e0 in ent: # ENTERING LOW-FRAME ENDS (ColdSupply extension; every entering end; absent for words without them) + j0 = next((i for i, e in enumerate(word['A'][:npre]) if e0 in regs(e)), None) + print('entering end', e0, 'premix gate', j0, flush=True) + k0, Ue = next((i, f) for i, f in early if e0 in regs(word['cleanup'][i])) + def to_pre(w, j0=j0): w['precondition'].append(w['A'][j0]); w['A'].pop(j0) + def other_hp(w, e0=e0, Ue=Ue): w['helper_final'][str(e0)] = next(f for h, f in w['helper_final'].items() if len(f) == len(Ue) and sorted(f) != sorted(Ue)) + if j0 is not None: reject('entering end %d: premix gate dropped' % e0, lambda w, j0=j0: w['A'].pop(j0), WHY['e_premix_dropped']) + if j0 is not None: reject('entering end %d: premix gate at frame [] instead of its entrance E' % e0, lambda w, j0=j0: w['A'][j0].__setitem__(-1, []), WHY['nonmonotone']) + if j0 is not None: reject('entering end %d: premix gate moved into the zero-frame precondition' % e0, to_pre, WHY['entering_precondition']) + reject('entering end %d: lower-frame gate dropped (gate and its early_cleanup entry)' % e0, lambda w, k0=k0: drop_cleanup_gate(w, k0), WHY['lower_dropped']) + reject('entering end %d: profile pin: end dropped (valid FULL end, but the reported profile counts the low end)' % e0, lambda w, e0=e0: w['helper_final'].pop(str(e0)), WHY['profile_pin']) + reject('entering end %d: end at another hyperplane' % e0, other_hp, WHY['cone']) +# Pinned rejection reasons of the COLD-BEYOND mutants (substrings of hpe_audit_and_transport.py assertion messages). +MYWHY = dict(tw_precondition=COLDPRE, tw_dropped=COLDPRE, tw_coefficient=COLDPRE, tw_other_block=COLDPRE, + tw_entering='zero-frame compensation reads an entering helper', + ab_dropped=ENDPOINT, ab_coefficient=ENDPOINT, ab_early=ENDPOINT, ab_live=ENDPOINT, ab_centre=ENDPOINT, + ab_lower="'nonmonotone'", ab_higher="'nonmonotone'", + sh_dropped=ENDPOINT, sh_coefficient=ENDPOINT, rel_dropped=ENDPOINT, rel_coefficient=ENDPOINT, rel_live=ENDPOINT, + h8_other=CONE, h8_lower=ENDPOINT) +# COLD-BEYOND primitives (present only when the word carries them): frame-[] target writes in the premix (explicit +# post-wrapper compensation of an ended helper's dirt) and forward absorptions into dead registers. +nw = meta.get('premix_target_writes', 0) +if nw: + wi = [i for i in range(npre) if v <= word['A'][i][1] < 2*v] + assert len(wi) == nw + + def writes_to_precondition(w): # the target writes run before the cold wrappers (inside the zero-frame precondition) + g = [w['A'][i] for i in wi]; w['precondition'] = w['precondition'] + g + w['A'] = [e for i, e in enumerate(w['A']) if i not in set(wi)] + reject('premix target writes placed in the zero-frame precondition (before the cold wrappers)', writes_to_precondition, MYWHY['tw_precondition']) + reject('one premix target write dropped (compensation must read an ended helper)', lambda w: w['A'].pop(wi[0]), MYWHY['tw_dropped']) + reject('premix target write coefficient changed', lambda w: w['A'][wi[0]].__setitem__(3, w['A'][wi[0]][3] * 2), MYWHY['tw_coefficient']) + # (reading another register that carries the SAME weight of the ended helper's dirt is a valid variant, so the mutant reads + # the same factory slot of the next block, which carries none of it) + entering_regs = sorted(int(r) for r in word.get('start_extra', {})) + reject('premix target write reads an entering helper', lambda w: w['A'][wi[0]].__setitem__(2, entering_regs[0]), MYWHY['tw_entering']) + reject('premix target write reads a cold helper of another block', lambda w: w['A'][wi[0]].__setitem__(2, 2*v + (w['A'][wi[0]][2] - 2*v + 16) % 224), MYWHY['tw_other_block']) +ab = meta.get('forward_absorption_A_indices', []) +if any(len(word['helper_final'][str(h)]) == 8 for h in cold): + # with dim-8 cold ends, the centre-retargeted absorption first leaks an ended helper's dirt into the cut's targets + MYWHY['ab_centre'] = COLDPRE +if ab: + # the ColdBeyond U_b absorption (q += -1/2 g); ColdThird's extra absorptions have their own controls below + a0 = next(a for a in ab if word['A'][a][3] * 2 == -word['A'][a][4]); g0 = word['A'][a0] + + def absorption_moved_early(w): # absorbed before the absorbed register's last kernel write + e = w['A'].pop(a0); j = max(i for i in range(npre, a0) if g0[2] == w['A'][i][1] and w['A'][i][-1] == g0[-1]) + w['A'].insert(j, e) + + def absorption_into_live(w): # q += a g moved right after g's previous frame-mate gate, while q is still live + e = w['A'].pop(a0); j = max(i for i in range(npre, a0) if g0[1] in regs(w['A'][i])) + w['A'].insert(j, e) + reject('forward absorption dropped', lambda w: w['A'].pop(a0), MYWHY['ab_dropped']) + reject('forward absorption into a centre (a live register read by the cut)', lambda w: w['A'][a0].__setitem__(1, next(c for c in word['centers'] if c not in g0[1:3] and c not in cold)), MYWHY['ab_centre']) + reject('forward absorption coefficient changed', lambda w: w['A'][a0].__setitem__(3, w['A'][a0][3] * 2), MYWHY['ab_coefficient']) + reject('forward absorption placed before the absorbed register\'s last kernel write', absorption_moved_early, MYWHY['ab_early']) + reject('forward absorption placed while the absorbing register is still live', absorption_into_live, MYWHY['ab_live']) + reject('forward absorption at a lower frame than its registers', lambda w: w['A'][a0].__setitem__(-1, w['A'][a0][-1][:-1]), MYWHY['ab_lower']) + reject('forward absorption at a higher frame (FULL) than its registers', lambda w: w['A'][a0].__setitem__(-1, [256, 128, 64, 32, 16, 8, 4, 2, 1]), MYWHY['ab_higher']) +# COLD-THIRD primitives (present only when the word carries them): several absorptions after one input gate, dirt-release +# absorptions (a dead port takes a live helper's value so that a hyperplane unit's column has no dirt on it), and cold ends at +# a dim-8 frame with lifted partners. +hyper = [h for h in cold if len(word['helper_final'][str(h)]) == 8] +if hyper and ab: + sh = next(a for a, b in zip(ab, ab[1:]) if b == a + 1) # two absorptions sharing one input anchor + rel = next(a for a in ab if a - 1 not in ab and a + 1 not in ab and word['A'][a][2] in hyper and word['A'][a][3] * 2 != -word['A'][a][4]) + hh = hyper[0]; ih = next(i for i, f in early if hh in regs(word['cleanup'][i])) + reject('second absorption sharing an input anchor dropped', lambda w: w['A'].pop(sh + 1), MYWHY['sh_dropped']) + reject('shared-anchor absorption coefficient changed', lambda w: w['A'][sh + 1].__setitem__(3, w['A'][sh + 1][3] * 2), MYWHY['sh_coefficient']) + reject('dirt-release absorption dropped', lambda w: w['A'].pop(rel), MYWHY['rel_dropped']) + reject('dirt-release absorption coefficient changed', lambda w: w['A'][rel].__setitem__(3, w['A'][rel][3] * 2), MYWHY['rel_coefficient']) + jr = max(i for i in range(npre, rel) if word['A'][i][0] == 'add' and word['A'][i][2] == word['A'][rel][1]) + + def release_while_read(w): # the release runs before a kernel gate that still READS the port (port live) + e = w['A'].pop(rel); w['A'].insert(jr, e) + reject('dirt-release absorption moved before a kernel gate that still reads the port', release_while_read, MYWHY['rel_live']) +if hyper: + # dim-8 cold-end controls for EVERY dim-8 cold end of the word (read from the word's helper_final and the recipe meta's + # cold_low_frame_ended_helpers), not one representative per terminal frame + for hh in hyper: + ih = next(i for i, f in early if hh in regs(word['cleanup'][i])) + Uh = word['helper_final'][str(hh)] + reject('dim-8 cold end %d (frame %s) at another dim-8 frame' % (hh, Uh), lambda w, hh=hh: w['helper_final'].__setitem__(str(hh), next(f for h, f in w['helper_final'].items() if len(f) == 8 and sorted(f) != sorted(w['helper_final'][str(hh)]))), MYWHY['h8_other']) + reject('dim-8 cold end %d (frame %s): one lower-frame gate dropped (gate and its early_cleanup entry)' % (hh, Uh), lambda w, ih=ih: drop_cleanup_gate(w, ih), MYWHY['h8_lower']) + reject('dim-8 cold end %d (frame %s): profile pin (end dropped)' % (hh, Uh), lambda w, hh=hh: w['helper_final'].pop(str(hh)), WHY['profile_pin']) +# FACTORED ACCUMULATOR (CarrierBypass; present only when the word carries one): a lower-frame tail gate a += x*g on two +# non-ended registers whose accumulator a is afterwards read by a dim-8 cold end's tail gate (h += y*a at its U). +ended_all = {int(h) for h in word['helper_final']} +tailg = [(i, word['cleanup'][i]) for i, _ in early] +accs = [] # EVERY factored accumulator gate (one per accumulator register a), each controlled on its own +for k, (i, e) in enumerate(tailg): + if e[0] == 'add' and e[1] not in ended_all and e[2] not in ended_all and len(next(f for j, f in early if j == i)) < 8: + if e[1] not in [word['cleanup'][j][1] for j in accs] and any(t[0] == 'add' and t[2] == e[1] and t[1] in hyper for _, t in tailg[k + 1:]): + accs.append(i) +for acc in accs: + a = word['cleanup'][acc][1] + reject('factored accumulator %d (gate %d) zeroed' % (a, acc), lambda w, acc=acc: w['cleanup'][acc].__setitem__(3, 0), ENDPOINT) + reject('factored accumulator %d (gate %d) coefficient doubled' % (a, acc), lambda w, acc=acc: w['cleanup'][acc].__setitem__(3, w['cleanup'][acc][3] * 2), ENDPOINT) +outdir.mkdir(parents=True, exist_ok=True) +(outdir/'COLD-END-CONTROLS.json').write_text(json.dumps(dict(status='PASS_COLD_END_RAW_WORD_CONTROLS', word=str(src), rejected=results), indent=1) + '\n') +print('PASS', len(results), 'cold-end raw-word mutations rejected') diff --git a/research/complex-t37-independent-seed39/vendor/pr870/data/T8/PLAN.json b/research/complex-t37-independent-seed39/vendor/pr870/data/T8/PLAN.json new file mode 100644 index 0000000000..da4157cfca --- /dev/null +++ b/research/complex-t37-independent-seed39/vendor/pr870/data/T8/PLAN.json @@ -0,0 +1,42000 @@ +{ + "status": "FROZEN_EXPLICIT_GAUGE44_WHOLE_OWNER_NOMINATION", + "mode": "gauge44-all72", + "K": 4, + "T": 8, + "M": 73, + "L": 9, + "live": 7168, + "deficit": 2560, + "profile": { + "1": 183457, + "2": 24336, + "3": 32113, + "4": 11664, + "5": 5184, + "8": 576, + "44": 1, + "48": 2396 + }, + "order": [ + [ + 0, + 0 + ], + [ + 0, + 1 + ], + [ + 1, + 0 + ], + [ + 0, + 2 + ], + [ + 1, + 1 + ], + [ + 2, + 0 + ], + [ + 0, + 3 + ], + [ + 1, + 2 + ], + [ + 2, + 1 + ], + [ + 3, + 0 + ], + [ + 0, + 4 + ], + [ + 1, + 3 + ], + [ + 2, + 2 + ], + [ + 3, + 1 + ], + [ + 4, + 0 + ], + [ + 0, + 5 + ], + [ + 1, + 4 + ], + [ + 2, + 3 + ], + [ + 3, + 2 + ], + [ + 4, + 1 + ], + [ + 5, + 0 + ], + [ + 0, + 6 + ], + [ + 1, + 5 + ], + [ + 2, + 4 + ], + [ + 3, + 3 + ], + [ + 4, + 2 + ], + [ + 5, + 1 + ], + [ + 0, + 7 + ], + [ + 6, + 0 + ], + [ + 1, + 6 + ], + [ + 2, + 5 + ], + [ + 3, + 4 + ], + [ + 4, + 3 + ], + [ + 5, + 2 + ], + [ + 6, + 1 + ], + [ + 1, + 7 + ], + [ + 7, + 0 + ], + [ + 2, + 6 + ], + [ + 3, + 5 + ], + [ + 4, + 4 + ], + [ + 5, + 3 + ], + [ + 6, + 2 + ], + [ + 7, + 1 + ], + [ + 2, + 7 + ], + [ + 8, + 0 + ], + [ + 3, + 6 + ], + [ + 4, + 5 + ], + [ + 5, + 4 + ], + [ + 6, + 3 + ], + [ + 7, + 2 + ], + [ + 8, + 1 + ], + [ + 3, + 7 + ], + [ + 4, + 6 + ], + [ + 5, + 5 + ], + [ + 6, + 4 + ], + [ + 7, + 3 + ], + [ + 8, + 2 + ], + [ + 4, + 7 + ], + [ + 5, + 6 + ], + [ + 6, + 5 + ], + [ + 7, + 4 + ], + [ + 8, + 3 + ], + [ + 5, + 7 + ], + [ + 6, + 6 + ], + [ + 7, + 5 + ], + [ + 8, + 4 + ], + [ + 6, + 7 + ], + [ + 7, + 6 + ], + [ + 8, + 5 + ], + [ + 7, + 7 + ], + [ + 8, + 6 + ], + [ + 8, + 7 + ] + ], + "windows": { + "0,0": [ + 16, + [ + 0, + 1, + 2 + ] + ], + "0,2": [ + 16, + [ + 0, + 1, + 2 + ] + ], + "0,1": [ + 8, + [ + 3, + 4, + 5 + ] + ], + "0,3": [ + 8, + [ + 3, + 4, + 5 + ] + ], + "0,4": [ + 32, + [ + 0, + 1, + 2, + 3, + 4, + 5, + 6, + 7, + 8, + 9 + ] + ], + "0,6": [ + 32, + [ + 0, + 1, + 2, + 3, + 4, + 5, + 6, + 7, + 8, + 9 + ] + ], + "0,5": [ + 8, + [ + 10, + 11, + 12, + 13, + 14 + ] + ], + "0,7": [ + 8, + [ + 10, + 11, + 12, + 13, + 14 + ] + ], + "0,8": [ + 48, + [ + 0, + 1, + 2, + 3, + 4, + 5, + 6, + 7, + 8, + 9, + 10, + 11, + 12, + 13, + 14, + 15, + 16, + 17, + 18, + 19, + 20 + ] + ], + "0,10": [ + 48, + [ + 0, + 1, + 2, + 3, + 4, + 5, + 6, + 7, + 8, + 9, + 10, + 11, + 12, + 13, + 14, + 15, + 16, + 17, + 18, + 19, + 20 + ] + ], + "0,9": [ + 8, + [ + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28 + ] + ], + "0,11": [ + 8, + [ + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28 + ] + ], + "0,12": [ + 48, + [ + 6, + 7, + 8, + 9, + 10, + 11, + 12, + 13, + 14, + 15, + 16, + 17, + 18, + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44 + ] + ], + "0,13": [ + 48, + [ + 6, + 7, + 8, + 9, + 10, + 11, + 12, + 13, + 14, + 15, + 16, + 17, + 18, + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44 + ] + ], + "0,14": [ + 32, + [ + 15, + 16, + 17, + 18, + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44 + ] + ], + "0,15": [ + 32, + [ + 15, + 16, + 17, + 18, + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44 + ] + ], + "0,16": [ + 16, + [ + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44 + ] + ], + "0,17": [ + 16, + [ + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44 + ] + ], + "1,0": [ + 16, + [ + 0, + 1, + 2, + 3, + 4 + ] + ], + "1,2": [ + 16, + [ + 0, + 1, + 2, + 3, + 4 + ] + ], + "1,1": [ + 8, + [ + 5, + 6, + 7, + 8 + ] + ], + "1,3": [ + 8, + [ + 5, + 6, + 7, + 8 + ] + ], + "1,4": [ + 32, + [ + 0, + 1, + 2, + 3, + 4, + 5, + 6, + 7, + 8, + 9, + 10, + 11, + 12, + 13 + ] + ], + "1,6": [ + 32, + [ + 0, + 1, + 2, + 3, + 4, + 5, + 6, + 7, + 8, + 9, + 10, + 11, + 12, + 13 + ] + ], + "1,5": [ + 8, + [ + 14, + 15, + 16, + 17, + 18, + 19 + ] + ], + "1,7": [ + 8, + [ + 14, + 15, + 16, + 17, + 18, + 19 + ] + ], + "1,8": [ + 48, + [ + 0, + 1, + 2, + 3, + 4, + 5, + 6, + 7, + 8, + 9, + 10, + 11, + 12, + 13, + 14, + 15, + 16, + 17, + 18, + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26 + ] + ], + "1,10": [ + 48, + [ + 0, + 1, + 2, + 3, + 4, + 5, + 6, + 7, + 8, + 9, + 10, + 11, + 12, + 13, + 14, + 15, + 16, + 17, + 18, + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26 + ] + ], + "1,9": [ + 8, + [ + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34 + ] + ], + "1,11": [ + 8, + [ + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34 + ] + ], + "1,12": [ + 48, + [ + 9, + 10, + 11, + 12, + 13, + 14, + 15, + 16, + 17, + 18, + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50 + ] + ], + "1,13": [ + 48, + [ + 9, + 10, + 11, + 12, + 13, + 14, + 15, + 16, + 17, + 18, + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50 + ] + ], + "1,14": [ + 32, + [ + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50 + ] + ], + "1,15": [ + 32, + [ + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50 + ] + ], + "1,16": [ + 16, + [ + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50 + ] + ], + "1,17": [ + 16, + [ + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50 + ] + ], + "2,0": [ + 16, + [ + 0, + 1, + 2, + 3, + 4, + 5, + 6, + 7 + ] + ], + "2,2": [ + 16, + [ + 0, + 1, + 2, + 3, + 4, + 5, + 6, + 7 + ] + ], + "2,1": [ + 8, + [ + 8, + 9, + 10, + 11, + 12 + ] + ], + "2,3": [ + 8, + [ + 8, + 9, + 10, + 11, + 12 + ] + ], + "2,4": [ + 32, + [ + 0, + 1, + 2, + 3, + 4, + 5, + 6, + 7, + 8, + 9, + 10, + 11, + 12, + 13, + 14, + 15, + 16, + 17, + 18 + ] + ], + "2,6": [ + 32, + [ + 0, + 1, + 2, + 3, + 4, + 5, + 6, + 7, + 8, + 9, + 10, + 11, + 12, + 13, + 14, + 15, + 16, + 17, + 18 + ] + ], + "2,5": [ + 8, + [ + 19, + 20, + 21, + 22, + 23, + 24, + 25 + ] + ], + "2,7": [ + 8, + [ + 19, + 20, + 21, + 22, + 23, + 24, + 25 + ] + ], + "2,8": [ + 48, + [ + 0, + 1, + 2, + 3, + 4, + 5, + 6, + 7, + 8, + 9, + 10, + 11, + 12, + 13, + 14, + 15, + 16, + 17, + 18, + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33 + ] + ], + "2,10": [ + 48, + [ + 0, + 1, + 2, + 3, + 4, + 5, + 6, + 7, + 8, + 9, + 10, + 11, + 12, + 13, + 14, + 15, + 16, + 17, + 18, + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33 + ] + ], + "2,9": [ + 8, + [ + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41 + ] + ], + "2,11": [ + 8, + [ + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41 + ] + ], + "2,12": [ + 48, + [ + 13, + 14, + 15, + 16, + 17, + 18, + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56 + ] + ], + "2,13": [ + 48, + [ + 13, + 14, + 15, + 16, + 17, + 18, + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56 + ] + ], + "2,14": [ + 32, + [ + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56 + ] + ], + "2,15": [ + 32, + [ + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56 + ] + ], + "2,16": [ + 16, + [ + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56 + ] + ], + "2,17": [ + 16, + [ + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56 + ] + ], + "3,0": [ + 16, + [ + 0, + 1, + 2, + 3, + 4, + 5, + 6, + 7, + 8, + 9, + 10, + 11 + ] + ], + "3,2": [ + 16, + [ + 0, + 1, + 2, + 3, + 4, + 5, + 6, + 7, + 8, + 9, + 10, + 11 + ] + ], + "3,1": [ + 8, + [ + 12, + 13, + 14, + 15, + 16, + 17 + ] + ], + "3,3": [ + 8, + [ + 12, + 13, + 14, + 15, + 16, + 17 + ] + ], + "3,4": [ + 32, + [ + 0, + 1, + 2, + 3, + 4, + 5, + 6, + 7, + 8, + 9, + 10, + 11, + 12, + 13, + 14, + 15, + 16, + 17, + 18, + 19, + 20, + 21, + 22, + 23, + 24 + ] + ], + "3,6": [ + 32, + [ + 0, + 1, + 2, + 3, + 4, + 5, + 6, + 7, + 8, + 9, + 10, + 11, + 12, + 13, + 14, + 15, + 16, + 17, + 18, + 19, + 20, + 21, + 22, + 23, + 24 + ] + ], + "3,5": [ + 8, + [ + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32 + ] + ], + "3,7": [ + 8, + [ + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32 + ] + ], + "3,8": [ + 48, + [ + 0, + 1, + 2, + 3, + 4, + 5, + 6, + 7, + 8, + 9, + 10, + 11, + 12, + 13, + 14, + 15, + 16, + 17, + 18, + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40 + ] + ], + "3,10": [ + 48, + [ + 0, + 1, + 2, + 3, + 4, + 5, + 6, + 7, + 8, + 9, + 10, + 11, + 12, + 13, + 14, + 15, + 16, + 17, + 18, + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40 + ] + ], + "3,9": [ + 8, + [ + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48 + ] + ], + "3,11": [ + 8, + [ + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48 + ] + ], + "3,12": [ + 48, + [ + 18, + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61 + ] + ], + "3,13": [ + 48, + [ + 18, + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61 + ] + ], + "3,14": [ + 32, + [ + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61 + ] + ], + "3,15": [ + 32, + [ + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61 + ] + ], + "3,16": [ + 16, + [ + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61 + ] + ], + "3,17": [ + 16, + [ + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61 + ] + ], + "4,0": [ + 16, + [ + 0, + 1, + 2, + 3, + 4, + 5, + 6, + 7, + 8, + 9, + 10, + 11, + 12, + 13, + 14, + 15, + 16 + ] + ], + "4,2": [ + 16, + [ + 0, + 1, + 2, + 3, + 4, + 5, + 6, + 7, + 8, + 9, + 10, + 11, + 12, + 13, + 14, + 15, + 16 + ] + ], + "4,1": [ + 8, + [ + 17, + 18, + 19, + 20, + 21, + 22, + 23 + ] + ], + "4,3": [ + 8, + [ + 17, + 18, + 19, + 20, + 21, + 22, + 23 + ] + ], + "4,4": [ + 32, + [ + 0, + 1, + 2, + 3, + 4, + 5, + 6, + 7, + 8, + 9, + 10, + 11, + 12, + 13, + 14, + 15, + 16, + 17, + 18, + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31 + ] + ], + "4,6": [ + 32, + [ + 0, + 1, + 2, + 3, + 4, + 5, + 6, + 7, + 8, + 9, + 10, + 11, + 12, + 13, + 14, + 15, + 16, + 17, + 18, + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31 + ] + ], + "4,5": [ + 8, + [ + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39 + ] + ], + "4,7": [ + 8, + [ + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39 + ] + ], + "4,8": [ + 48, + [ + 0, + 1, + 2, + 3, + 4, + 5, + 6, + 7, + 8, + 9, + 10, + 11, + 12, + 13, + 14, + 15, + 16, + 17, + 18, + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47 + ] + ], + "4,10": [ + 48, + [ + 0, + 1, + 2, + 3, + 4, + 5, + 6, + 7, + 8, + 9, + 10, + 11, + 12, + 13, + 14, + 15, + 16, + 17, + 18, + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47 + ] + ], + "4,9": [ + 8, + [ + 48, + 49, + 50, + 51, + 52, + 53, + 54 + ] + ], + "4,11": [ + 8, + [ + 48, + 49, + 50, + 51, + 52, + 53, + 54 + ] + ], + "4,12": [ + 48, + [ + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65 + ] + ], + "4,13": [ + 48, + [ + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65 + ] + ], + "4,14": [ + 32, + [ + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65 + ] + ], + "4,15": [ + 32, + [ + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65 + ] + ], + "4,16": [ + 16, + [ + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65 + ] + ], + "4,17": [ + 16, + [ + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65 + ] + ], + "5,0": [ + 16, + [ + 0, + 1, + 2, + 3, + 4, + 5, + 6, + 7, + 8, + 9, + 10, + 11, + 12, + 13, + 14, + 15, + 16, + 17, + 18, + 19, + 20, + 21, + 22 + ] + ], + "5,2": [ + 16, + [ + 0, + 1, + 2, + 3, + 4, + 5, + 6, + 7, + 8, + 9, + 10, + 11, + 12, + 13, + 14, + 15, + 16, + 17, + 18, + 19, + 20, + 21, + 22 + ] + ], + "5,1": [ + 8, + [ + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30 + ] + ], + "5,3": [ + 8, + [ + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30 + ] + ], + "5,4": [ + 32, + [ + 0, + 1, + 2, + 3, + 4, + 5, + 6, + 7, + 8, + 9, + 10, + 11, + 12, + 13, + 14, + 15, + 16, + 17, + 18, + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38 + ] + ], + "5,6": [ + 32, + [ + 0, + 1, + 2, + 3, + 4, + 5, + 6, + 7, + 8, + 9, + 10, + 11, + 12, + 13, + 14, + 15, + 16, + 17, + 18, + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38 + ] + ], + "5,5": [ + 8, + [ + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46 + ] + ], + "5,7": [ + 8, + [ + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46 + ] + ], + "5,8": [ + 48, + [ + 0, + 1, + 2, + 3, + 4, + 5, + 6, + 7, + 8, + 9, + 10, + 11, + 12, + 13, + 14, + 15, + 16, + 17, + 18, + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53 + ] + ], + "5,10": [ + 48, + [ + 0, + 1, + 2, + 3, + 4, + 5, + 6, + 7, + 8, + 9, + 10, + 11, + 12, + 13, + 14, + 15, + 16, + 17, + 18, + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53 + ] + ], + "5,9": [ + 8, + [ + 54, + 55, + 56, + 57, + 58, + 59 + ] + ], + "5,11": [ + 8, + [ + 54, + 55, + 56, + 57, + 58, + 59 + ] + ], + "5,12": [ + 48, + [ + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68 + ] + ], + "5,13": [ + 48, + [ + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68 + ] + ], + "5,14": [ + 32, + [ + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68 + ] + ], + "5,15": [ + 32, + [ + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68 + ] + ], + "5,16": [ + 16, + [ + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68 + ] + ], + "5,17": [ + 16, + [ + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68 + ] + ], + "6,0": [ + 16, + [ + 0, + 1, + 2, + 3, + 4, + 5, + 6, + 7, + 8, + 9, + 10, + 11, + 12, + 13, + 14, + 15, + 16, + 17, + 18, + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29 + ] + ], + "6,2": [ + 16, + [ + 0, + 1, + 2, + 3, + 4, + 5, + 6, + 7, + 8, + 9, + 10, + 11, + 12, + 13, + 14, + 15, + 16, + 17, + 18, + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29 + ] + ], + "6,1": [ + 8, + [ + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37 + ] + ], + "6,3": [ + 8, + [ + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37 + ] + ], + "6,4": [ + 32, + [ + 0, + 1, + 2, + 3, + 4, + 5, + 6, + 7, + 8, + 9, + 10, + 11, + 12, + 13, + 14, + 15, + 16, + 17, + 18, + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45 + ] + ], + "6,6": [ + 32, + [ + 0, + 1, + 2, + 3, + 4, + 5, + 6, + 7, + 8, + 9, + 10, + 11, + 12, + 13, + 14, + 15, + 16, + 17, + 18, + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45 + ] + ], + "6,5": [ + 8, + [ + 46, + 47, + 48, + 49, + 50, + 51, + 52 + ] + ], + "6,7": [ + 8, + [ + 46, + 47, + 48, + 49, + 50, + 51, + 52 + ] + ], + "6,8": [ + 48, + [ + 0, + 1, + 2, + 3, + 4, + 5, + 6, + 7, + 8, + 9, + 10, + 11, + 12, + 13, + 14, + 15, + 16, + 17, + 18, + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58 + ] + ], + "6,10": [ + 48, + [ + 0, + 1, + 2, + 3, + 4, + 5, + 6, + 7, + 8, + 9, + 10, + 11, + 12, + 13, + 14, + 15, + 16, + 17, + 18, + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58 + ] + ], + "6,9": [ + 8, + [ + 59, + 60, + 61, + 62, + 63 + ] + ], + "6,11": [ + 8, + [ + 59, + 60, + 61, + 62, + 63 + ] + ], + "6,12": [ + 48, + [ + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70 + ] + ], + "6,13": [ + 48, + [ + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70 + ] + ], + "6,14": [ + 32, + [ + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70 + ] + ], + "6,15": [ + 32, + [ + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70 + ] + ], + "6,16": [ + 16, + [ + 64, + 65, + 66, + 67, + 68, + 69, + 70 + ] + ], + "6,17": [ + 16, + [ + 64, + 65, + 66, + 67, + 68, + 69, + 70 + ] + ], + "7,0": [ + 16, + [ + 0, + 1, + 2, + 3, + 4, + 5, + 6, + 7, + 8, + 9, + 10, + 11, + 12, + 13, + 14, + 15, + 16, + 17, + 18, + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35 + ] + ], + "7,2": [ + 16, + [ + 0, + 1, + 2, + 3, + 4, + 5, + 6, + 7, + 8, + 9, + 10, + 11, + 12, + 13, + 14, + 15, + 16, + 17, + 18, + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35 + ] + ], + "7,1": [ + 8, + [ + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43 + ] + ], + "7,3": [ + 8, + [ + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43 + ] + ], + "7,4": [ + 32, + [ + 0, + 1, + 2, + 3, + 4, + 5, + 6, + 7, + 8, + 9, + 10, + 11, + 12, + 13, + 14, + 15, + 16, + 17, + 18, + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51 + ] + ], + "7,6": [ + 32, + [ + 0, + 1, + 2, + 3, + 4, + 5, + 6, + 7, + 8, + 9, + 10, + 11, + 12, + 13, + 14, + 15, + 16, + 17, + 18, + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51 + ] + ], + "7,5": [ + 8, + [ + 52, + 53, + 54, + 55, + 56, + 57 + ] + ], + "7,7": [ + 8, + [ + 52, + 53, + 54, + 55, + 56, + 57 + ] + ], + "7,8": [ + 48, + [ + 0, + 1, + 2, + 3, + 4, + 5, + 6, + 7, + 8, + 9, + 10, + 11, + 12, + 13, + 14, + 15, + 16, + 17, + 18, + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62 + ] + ], + "7,10": [ + 48, + [ + 0, + 1, + 2, + 3, + 4, + 5, + 6, + 7, + 8, + 9, + 10, + 11, + 12, + 13, + 14, + 15, + 16, + 17, + 18, + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62 + ] + ], + "7,9": [ + 8, + [ + 63, + 64, + 65, + 66 + ] + ], + "7,11": [ + 8, + [ + 63, + 64, + 65, + 66 + ] + ], + "7,12": [ + 48, + [ + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71 + ] + ], + "7,13": [ + 48, + [ + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71 + ] + ], + "7,14": [ + 32, + [ + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71 + ] + ], + "7,15": [ + 32, + [ + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71 + ] + ], + "7,16": [ + 16, + [ + 67, + 68, + 69, + 70, + 71 + ] + ], + "7,17": [ + 16, + [ + 67, + 68, + 69, + 70, + 71 + ] + ] + }, + "sides": { + "0": 0, + "2": 1, + "1": 0, + "3": 1, + "4": 0, + "6": 1, + "5": 0, + "7": 1, + "8": 0, + "10": 1, + "9": 0, + "11": 1, + "12": 0, + "13": 1, + "14": 0, + "15": 1, + "16": 0, + "17": 1 + }, + "pairs": { + "0": 1, + "2": 1, + "1": 1, + "3": 1, + "4": 2, + "6": 2, + "5": 2, + "7": 2, + "8": 3, + "10": 3, + "9": 3, + "11": 3, + "12": 0, + "13": 0, + "14": 1, + "15": 1, + "16": 2, + "17": 2 + }, + "solver_status": "g44pack_early_lns_of_deterministic-capacity-matching", + "gap": null, + "provider_calls": [ + { + "time": 0, + "stage": 0, + "replica": 0, + "provider": "gauge44", + "orientation": "forward", + "local_program_sha256": "83d65a63f51bd1ce7f3dd4e4d3597311e065b4775796cd87aea3e3a62689047c" + }, + { + "time": 1, + "stage": 0, + "replica": 1, + "provider": "gauge44", + "orientation": "forward", + "local_program_sha256": "83d65a63f51bd1ce7f3dd4e4d3597311e065b4775796cd87aea3e3a62689047c" + }, + { + "time": 2, + "stage": 1, + "replica": 0, + "provider": "gauge44", + "orientation": "backward", + "local_program_sha256": "e4e483b764e9a85f84a04425e57d73ecdcc72eb2e4d97a64f17d9da58fa5ace0" + }, + { + "time": 3, + "stage": 0, + "replica": 2, + "provider": "gauge44", + "orientation": "forward", + "local_program_sha256": "83d65a63f51bd1ce7f3dd4e4d3597311e065b4775796cd87aea3e3a62689047c" + }, + { + "time": 4, + "stage": 1, + "replica": 1, + "provider": "gauge44", + "orientation": "backward", + "local_program_sha256": "e4e483b764e9a85f84a04425e57d73ecdcc72eb2e4d97a64f17d9da58fa5ace0" + }, + { + "time": 5, + "stage": 2, + "replica": 0, + "provider": "gauge44", + "orientation": "forward", + "local_program_sha256": "83d65a63f51bd1ce7f3dd4e4d3597311e065b4775796cd87aea3e3a62689047c" + }, + { + "time": 6, + "stage": 0, + "replica": 3, + "provider": "gauge44", + "orientation": "forward", + "local_program_sha256": "83d65a63f51bd1ce7f3dd4e4d3597311e065b4775796cd87aea3e3a62689047c" + }, + { + "time": 7, + "stage": 1, + "replica": 2, + "provider": "gauge44", + "orientation": "backward", + "local_program_sha256": "e4e483b764e9a85f84a04425e57d73ecdcc72eb2e4d97a64f17d9da58fa5ace0" + }, + { + "time": 8, + "stage": 2, + "replica": 1, + "provider": "gauge44", + "orientation": "forward", + "local_program_sha256": "83d65a63f51bd1ce7f3dd4e4d3597311e065b4775796cd87aea3e3a62689047c" + }, + { + "time": 9, + "stage": 3, + "replica": 0, + "provider": "gauge44", + "orientation": "backward", + "local_program_sha256": "e4e483b764e9a85f84a04425e57d73ecdcc72eb2e4d97a64f17d9da58fa5ace0" + }, + { + "time": 10, + "stage": 0, + "replica": 4, + "provider": "gauge44", + "orientation": "forward", + "local_program_sha256": "83d65a63f51bd1ce7f3dd4e4d3597311e065b4775796cd87aea3e3a62689047c" + }, + { + "time": 11, + "stage": 1, + "replica": 3, + "provider": "gauge44", + "orientation": "backward", + "local_program_sha256": "e4e483b764e9a85f84a04425e57d73ecdcc72eb2e4d97a64f17d9da58fa5ace0" + }, + { + "time": 12, + "stage": 2, + "replica": 2, + "provider": "gauge44", + "orientation": "forward", + "local_program_sha256": "83d65a63f51bd1ce7f3dd4e4d3597311e065b4775796cd87aea3e3a62689047c" + }, + { + "time": 13, + "stage": 3, + "replica": 1, + "provider": "gauge44", + "orientation": "backward", + "local_program_sha256": "e4e483b764e9a85f84a04425e57d73ecdcc72eb2e4d97a64f17d9da58fa5ace0" + }, + { + "time": 14, + "stage": 4, + "replica": 0, + "provider": "gauge44", + "orientation": "forward", + "local_program_sha256": "83d65a63f51bd1ce7f3dd4e4d3597311e065b4775796cd87aea3e3a62689047c" + }, + { + "time": 15, + "stage": 0, + "replica": 5, + "provider": "gauge44", + "orientation": "forward", + "local_program_sha256": "83d65a63f51bd1ce7f3dd4e4d3597311e065b4775796cd87aea3e3a62689047c" + }, + { + "time": 16, + "stage": 1, + "replica": 4, + "provider": "gauge44", + "orientation": "backward", + "local_program_sha256": "e4e483b764e9a85f84a04425e57d73ecdcc72eb2e4d97a64f17d9da58fa5ace0" + }, + { + "time": 17, + "stage": 2, + "replica": 3, + "provider": "gauge44", + "orientation": "forward", + "local_program_sha256": "83d65a63f51bd1ce7f3dd4e4d3597311e065b4775796cd87aea3e3a62689047c" + }, + { + "time": 18, + "stage": 3, + "replica": 2, + "provider": "gauge44", + "orientation": "backward", + "local_program_sha256": "e4e483b764e9a85f84a04425e57d73ecdcc72eb2e4d97a64f17d9da58fa5ace0" + }, + { + "time": 19, + "stage": 4, + "replica": 1, + "provider": "gauge44", + "orientation": "forward", + "local_program_sha256": "83d65a63f51bd1ce7f3dd4e4d3597311e065b4775796cd87aea3e3a62689047c" + }, + { + "time": 20, + "stage": 5, + "replica": 0, + "provider": "gauge44", + "orientation": "backward", + "local_program_sha256": "e4e483b764e9a85f84a04425e57d73ecdcc72eb2e4d97a64f17d9da58fa5ace0" + }, + { + "time": 21, + "stage": 0, + "replica": 6, + "provider": "gauge44", + "orientation": "forward", + "local_program_sha256": "83d65a63f51bd1ce7f3dd4e4d3597311e065b4775796cd87aea3e3a62689047c" + }, + { + "time": 22, + "stage": 1, + "replica": 5, + "provider": "gauge44", + "orientation": "backward", + "local_program_sha256": "e4e483b764e9a85f84a04425e57d73ecdcc72eb2e4d97a64f17d9da58fa5ace0" + }, + { + "time": 23, + "stage": 2, + "replica": 4, + "provider": "gauge44", + "orientation": "forward", + "local_program_sha256": "83d65a63f51bd1ce7f3dd4e4d3597311e065b4775796cd87aea3e3a62689047c" + }, + { + "time": 24, + "stage": 3, + "replica": 3, + "provider": "gauge44", + "orientation": "backward", + "local_program_sha256": "e4e483b764e9a85f84a04425e57d73ecdcc72eb2e4d97a64f17d9da58fa5ace0" + }, + { + "time": 25, + "stage": 4, + "replica": 2, + "provider": "gauge44", + "orientation": "forward", + "local_program_sha256": "83d65a63f51bd1ce7f3dd4e4d3597311e065b4775796cd87aea3e3a62689047c" + }, + { + "time": 26, + "stage": 5, + "replica": 1, + "provider": "gauge44", + "orientation": "backward", + "local_program_sha256": "e4e483b764e9a85f84a04425e57d73ecdcc72eb2e4d97a64f17d9da58fa5ace0" + }, + { + "time": 27, + "stage": 0, + "replica": 7, + "provider": "gauge44", + "orientation": "forward", + "local_program_sha256": "83d65a63f51bd1ce7f3dd4e4d3597311e065b4775796cd87aea3e3a62689047c" + }, + { + "time": 28, + "stage": 6, + "replica": 0, + "provider": "gauge44", + "orientation": "forward", + "local_program_sha256": "83d65a63f51bd1ce7f3dd4e4d3597311e065b4775796cd87aea3e3a62689047c" + }, + { + "time": 29, + "stage": 1, + "replica": 6, + "provider": "gauge44", + "orientation": "backward", + "local_program_sha256": "e4e483b764e9a85f84a04425e57d73ecdcc72eb2e4d97a64f17d9da58fa5ace0" + }, + { + "time": 30, + "stage": 2, + "replica": 5, + "provider": "gauge44", + "orientation": "forward", + "local_program_sha256": "83d65a63f51bd1ce7f3dd4e4d3597311e065b4775796cd87aea3e3a62689047c" + }, + { + "time": 31, + "stage": 3, + "replica": 4, + "provider": "gauge44", + "orientation": "backward", + "local_program_sha256": "e4e483b764e9a85f84a04425e57d73ecdcc72eb2e4d97a64f17d9da58fa5ace0" + }, + { + "time": 32, + "stage": 4, + "replica": 3, + "provider": "gauge44", + "orientation": "forward", + "local_program_sha256": "83d65a63f51bd1ce7f3dd4e4d3597311e065b4775796cd87aea3e3a62689047c" + }, + { + "time": 33, + "stage": 5, + "replica": 2, + "provider": "gauge44", + "orientation": "backward", + "local_program_sha256": "e4e483b764e9a85f84a04425e57d73ecdcc72eb2e4d97a64f17d9da58fa5ace0" + }, + { + "time": 34, + "stage": 6, + "replica": 1, + "provider": "gauge44", + "orientation": "forward", + "local_program_sha256": "83d65a63f51bd1ce7f3dd4e4d3597311e065b4775796cd87aea3e3a62689047c" + }, + { + "time": 35, + "stage": 1, + "replica": 7, + "provider": "gauge44", + "orientation": "backward", + "local_program_sha256": "e4e483b764e9a85f84a04425e57d73ecdcc72eb2e4d97a64f17d9da58fa5ace0" + }, + { + "time": 36, + "stage": 7, + "replica": 0, + "provider": "gauge44", + "orientation": "backward", + "local_program_sha256": "e4e483b764e9a85f84a04425e57d73ecdcc72eb2e4d97a64f17d9da58fa5ace0" + }, + { + "time": 37, + "stage": 2, + "replica": 6, + "provider": "gauge44", + "orientation": "forward", + "local_program_sha256": "83d65a63f51bd1ce7f3dd4e4d3597311e065b4775796cd87aea3e3a62689047c" + }, + { + "time": 38, + "stage": 3, + "replica": 5, + "provider": "gauge44", + "orientation": "backward", + "local_program_sha256": "e4e483b764e9a85f84a04425e57d73ecdcc72eb2e4d97a64f17d9da58fa5ace0" + }, + { + "time": 39, + "stage": 4, + "replica": 4, + "provider": "gauge44", + "orientation": "forward", + "local_program_sha256": "83d65a63f51bd1ce7f3dd4e4d3597311e065b4775796cd87aea3e3a62689047c" + }, + { + "time": 40, + "stage": 5, + "replica": 3, + "provider": "gauge44", + "orientation": "backward", + "local_program_sha256": "e4e483b764e9a85f84a04425e57d73ecdcc72eb2e4d97a64f17d9da58fa5ace0" + }, + { + "time": 41, + "stage": 6, + "replica": 2, + "provider": "gauge44", + "orientation": "forward", + "local_program_sha256": "83d65a63f51bd1ce7f3dd4e4d3597311e065b4775796cd87aea3e3a62689047c" + }, + { + "time": 42, + "stage": 7, + "replica": 1, + "provider": "gauge44", + "orientation": "backward", + "local_program_sha256": "e4e483b764e9a85f84a04425e57d73ecdcc72eb2e4d97a64f17d9da58fa5ace0" + }, + { + "time": 43, + "stage": 2, + "replica": 7, + "provider": "gauge44", + "orientation": "forward", + "local_program_sha256": "83d65a63f51bd1ce7f3dd4e4d3597311e065b4775796cd87aea3e3a62689047c" + }, + { + "time": 44, + "stage": 8, + "replica": 0, + "provider": "gauge44", + "orientation": "forward", + "local_program_sha256": "83d65a63f51bd1ce7f3dd4e4d3597311e065b4775796cd87aea3e3a62689047c" + }, + { + "time": 45, + "stage": 3, + "replica": 6, + "provider": "gauge44", + "orientation": "backward", + "local_program_sha256": "e4e483b764e9a85f84a04425e57d73ecdcc72eb2e4d97a64f17d9da58fa5ace0" + }, + { + "time": 46, + "stage": 4, + "replica": 5, + "provider": "gauge44", + "orientation": "forward", + "local_program_sha256": "83d65a63f51bd1ce7f3dd4e4d3597311e065b4775796cd87aea3e3a62689047c" + }, + { + "time": 47, + "stage": 5, + "replica": 4, + "provider": "gauge44", + "orientation": "backward", + "local_program_sha256": "e4e483b764e9a85f84a04425e57d73ecdcc72eb2e4d97a64f17d9da58fa5ace0" + }, + { + "time": 48, + "stage": 6, + "replica": 3, + "provider": "gauge44", + "orientation": "forward", + "local_program_sha256": "83d65a63f51bd1ce7f3dd4e4d3597311e065b4775796cd87aea3e3a62689047c" + }, + { + "time": 49, + "stage": 7, + "replica": 2, + "provider": "gauge44", + "orientation": "backward", + "local_program_sha256": "e4e483b764e9a85f84a04425e57d73ecdcc72eb2e4d97a64f17d9da58fa5ace0" + }, + { + "time": 50, + "stage": 8, + "replica": 1, + "provider": "gauge44", + "orientation": "forward", + "local_program_sha256": "83d65a63f51bd1ce7f3dd4e4d3597311e065b4775796cd87aea3e3a62689047c" + }, + { + "time": 51, + "stage": 3, + "replica": 7, + "provider": "gauge44", + "orientation": "backward", + "local_program_sha256": "e4e483b764e9a85f84a04425e57d73ecdcc72eb2e4d97a64f17d9da58fa5ace0" + }, + { + "time": 52, + "stage": 4, + "replica": 6, + "provider": "gauge44", + "orientation": "forward", + "local_program_sha256": "83d65a63f51bd1ce7f3dd4e4d3597311e065b4775796cd87aea3e3a62689047c" + }, + { + "time": 53, + "stage": 5, + "replica": 5, + "provider": "gauge44", + "orientation": "backward", + "local_program_sha256": "e4e483b764e9a85f84a04425e57d73ecdcc72eb2e4d97a64f17d9da58fa5ace0" + }, + { + "time": 54, + "stage": 6, + "replica": 4, + "provider": "gauge44", + "orientation": "forward", + "local_program_sha256": "83d65a63f51bd1ce7f3dd4e4d3597311e065b4775796cd87aea3e3a62689047c" + }, + { + "time": 55, + "stage": 7, + "replica": 3, + "provider": "gauge44", + "orientation": "backward", + "local_program_sha256": "e4e483b764e9a85f84a04425e57d73ecdcc72eb2e4d97a64f17d9da58fa5ace0" + }, + { + "time": 56, + "stage": 8, + "replica": 2, + "provider": "gauge44", + "orientation": "forward", + "local_program_sha256": "83d65a63f51bd1ce7f3dd4e4d3597311e065b4775796cd87aea3e3a62689047c" + }, + { + "time": 57, + "stage": 4, + "replica": 7, + "provider": "gauge44", + "orientation": "forward", + "local_program_sha256": "83d65a63f51bd1ce7f3dd4e4d3597311e065b4775796cd87aea3e3a62689047c" + }, + { + "time": 58, + "stage": 5, + "replica": 6, + "provider": "gauge44", + "orientation": "backward", + "local_program_sha256": "e4e483b764e9a85f84a04425e57d73ecdcc72eb2e4d97a64f17d9da58fa5ace0" + }, + { + "time": 59, + "stage": 6, + "replica": 5, + "provider": "gauge44", + "orientation": "forward", + "local_program_sha256": "83d65a63f51bd1ce7f3dd4e4d3597311e065b4775796cd87aea3e3a62689047c" + }, + { + "time": 60, + "stage": 7, + "replica": 4, + "provider": "gauge44", + "orientation": "backward", + "local_program_sha256": "e4e483b764e9a85f84a04425e57d73ecdcc72eb2e4d97a64f17d9da58fa5ace0" + }, + { + "time": 61, + "stage": 8, + "replica": 3, + "provider": "gauge44", + "orientation": "forward", + "local_program_sha256": "83d65a63f51bd1ce7f3dd4e4d3597311e065b4775796cd87aea3e3a62689047c" + }, + { + "time": 62, + "stage": 5, + "replica": 7, + "provider": "gauge44", + "orientation": "backward", + "local_program_sha256": "e4e483b764e9a85f84a04425e57d73ecdcc72eb2e4d97a64f17d9da58fa5ace0" + }, + { + "time": 63, + "stage": 6, + "replica": 6, + "provider": "gauge44", + "orientation": "forward", + "local_program_sha256": "83d65a63f51bd1ce7f3dd4e4d3597311e065b4775796cd87aea3e3a62689047c" + }, + { + "time": 64, + "stage": 7, + "replica": 5, + "provider": "gauge44", + "orientation": "backward", + "local_program_sha256": "e4e483b764e9a85f84a04425e57d73ecdcc72eb2e4d97a64f17d9da58fa5ace0" + }, + { + "time": 65, + "stage": 8, + "replica": 4, + "provider": "gauge44", + "orientation": "forward", + "local_program_sha256": "83d65a63f51bd1ce7f3dd4e4d3597311e065b4775796cd87aea3e3a62689047c" + }, + { + "time": 66, + "stage": 6, + "replica": 7, + "provider": "gauge44", + "orientation": "forward", + "local_program_sha256": "83d65a63f51bd1ce7f3dd4e4d3597311e065b4775796cd87aea3e3a62689047c" + }, + { + "time": 67, + "stage": 7, + "replica": 6, + "provider": "gauge44", + "orientation": "backward", + "local_program_sha256": "e4e483b764e9a85f84a04425e57d73ecdcc72eb2e4d97a64f17d9da58fa5ace0" + }, + { + "time": 68, + "stage": 8, + "replica": 5, + "provider": "gauge44", + "orientation": "forward", + "local_program_sha256": "83d65a63f51bd1ce7f3dd4e4d3597311e065b4775796cd87aea3e3a62689047c" + }, + { + "time": 69, + "stage": 7, + "replica": 7, + "provider": "gauge44", + "orientation": "backward", + "local_program_sha256": "e4e483b764e9a85f84a04425e57d73ecdcc72eb2e4d97a64f17d9da58fa5ace0" + }, + { + "time": 70, + "stage": 8, + "replica": 6, + "provider": "gauge44", + "orientation": "forward", + "local_program_sha256": "83d65a63f51bd1ce7f3dd4e4d3597311e065b4775796cd87aea3e3a62689047c" + }, + { + "time": 71, + "stage": 8, + "replica": 7, + "provider": "gauge44", + "orientation": "forward", + "local_program_sha256": "83d65a63f51bd1ce7f3dd4e4d3597311e065b4775796cd87aea3e3a62689047c" + } + ], + "per_call_widths": [ + { + "stage": 0, + "replica": 0, + "widths": [ + 9, + 4, + 9, + 4, + 9, + 4, + 9, + 9, + 9, + 9, + 4, + 9, + 9, + 9, + 9, + 9, + 9, + 4, + 9, + 4, + 9, + 4, + 9, + 9, + 9, + 9, + 4, + 9, + 9, + 9, + 9, + 9, + 9, + 4, + 9, + 4, + 9, + 4, + 9, + 9, + 9, + 9, + 4, + 9, + 9, + 9, + 9, + 9, + 9, + 4, + 9, + 4, + 9, + 4, + 9, + 9, + 9, + 9, + 4, + 9, + 9, + 9, + 9, + 9, + 9, + 4, + 9, + 4, + 9, + 4, + 9, + 9, + 9, + 9, + 4, + 9, + 9, + 9, + 9, + 9, + 9, + 4, + 9, + 4, + 9, + 4, + 9, + 8, + 9, + 9, + 4, + 9, + 9, + 9, + 9, + 9, + 9, + 4, + 9, + 4, + 9, + 4, + 9, + 8, + 9, + 9, + 4, + 9, + 9, + 9, + 9, + 9, + 9, + 4, + 9, + 4, + 9, + 4, + 9, + 9, + 9, + 9, + 4, + 9, + 9, + 9, + 9, + 9, + 9, + 4, + 9, + 4, + 9, + 4, + 9, + 9, + 9, + 9, + 4, + 9, + 9, + 9, + 9, + 9, + 9, + 4, + 9, + 4, + 9, + 4, + 9, + 9, + 9, + 9, + 4, + 9, + 9, + 9, + 9, + 9, + 9, + 4, + 9, + 4, + 9, + 4, + 9, + 9, + 9, + 9, + 4, + 9, + 9, + 9, + 9, + 9, + 9, + 4, + 9, + 4, + 9, + 4, + 9, + 9, + 9, + 9, + 4, + 9, + 9, + 9, + 9, + 9, + 9, + 4, + 9, + 4, + 9, + 4, + 9, + 9, + 9, + 9, + 4, + 9, + 9, + 9, + 9, + 9, + 9, + 4, + 9, + 4, + 9, + 4, + 9, + 9, + 9, + 9, + 4, + 9, + 9, + 9, + 9, + 9, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 7, + 7, + 7, + 7, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 7, + 7, + 8, + 8, + 8, + 8, + 8, + 8, + 9, + 9, + 9, + 9, + 9, + 9, + 7, + 7, + 8, + 8, + 8, + 8, + 9, + 9, + 9, + 9, + 9, + 9, + 8, + 8, + 8, + 9, + 8, + 8, + 9, + 9, + 9, + 9, + 8, + 9, + 7, + 7, + 8, + 9, + 8, + 8, + 9, + 9, + 9, + 9, + 8, + 9, + 8, + 8, + 8, + 8, + 8, + 8, + 8, + 8, + 8, + 8, + 9, + 7, + 7, + 7, + 8, + 8, + 8, + 8, + 8, + 8, + 8, + 8, + 9, + 7, + 8, + 8, + 9, + 9, + 9, + 9, + 8, + 8, + 8, + 8, + 7, + 7, + 7, + 7, + 9, + 8, + 9, + 8, + 8, + 8, + 8, + 8, + 7, + 7, + 7, + 7, + 9, + 8, + 9, + 8, + 8, + 8, + 8, + 8, + 7, + 7, + 7, + 7, + 8, + 8, + 8, + 8, + 8, + 8, + 8, + 8, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 8, + 8, + 8, + 5, + 8, + 5, + 5, + 5, + 8, + 8, + 8, + 4, + 8, + 4, + 4, + 4, + 8, + 8, + 8, + 4, + 8, + 4, + 4, + 4, + 8, + 8, + 8, + 4, + 8, + 4, + 4, + 4, + 8, + 8, + 8, + 4, + 8, + 4, + 4, + 4, + 8, + 8, + 8, + 4, + 8, + 4, + 4, + 4, + 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 + ] + }, + { + "stage": 0, + "replica": 1, + "widths": [ + 9, + 4, + 9, + 4, + 9, + 4, + 9, + 9, + 9, + 9, + 4, + 9, + 9, + 9, + 9, + 9, + 9, + 4, + 9, + 4, + 9, + 4, + 9, + 9, + 9, + 9, + 4, + 9, + 9, + 9, + 9, + 9, + 9, + 4, + 9, + 4, + 9, + 4, + 9, + 9, + 9, + 9, + 4, + 9, + 9, + 9, + 9, + 9, + 9, + 4, + 9, + 4, + 9, + 4, + 9, + 9, + 9, + 9, + 4, + 9, + 9, + 9, + 9, + 9, + 9, + 4, + 9, + 4, + 9, + 4, + 9, + 9, + 9, + 9, + 4, + 9, + 9, + 9, + 9, + 9, + 9, + 4, + 9, + 4, + 9, + 4, + 9, + 8, + 9, + 9, + 4, + 9, + 9, + 9, + 9, + 9, + 9, + 4, + 9, + 4, + 9, + 4, + 9, + 8, + 9, + 9, + 4, + 9, + 9, + 9, + 9, + 9, + 9, + 4, + 9, + 4, + 9, + 4, + 9, + 9, + 9, + 9, + 4, + 9, + 9, + 9, + 9, + 9, + 9, + 4, + 9, + 4, + 9, + 4, + 9, + 9, + 9, + 9, + 4, + 9, + 9, + 9, + 9, + 9, + 9, + 4, + 9, + 4, + 9, + 4, + 9, + 9, + 9, + 9, + 4, + 9, + 9, + 9, + 9, + 9, + 9, + 4, + 9, + 4, + 9, + 4, + 9, + 9, + 9, + 9, + 4, + 9, + 9, + 9, + 9, + 9, + 9, + 4, + 9, + 4, + 9, + 4, + 9, + 9, + 9, + 9, + 4, + 9, + 9, + 9, + 9, + 9, + 9, + 4, + 9, + 4, + 9, + 4, + 9, + 9, + 9, + 9, + 4, + 9, + 9, + 9, + 9, + 9, + 9, + 4, + 9, + 4, + 9, + 4, + 9, + 9, + 9, + 9, + 4, + 9, + 9, + 9, + 9, + 9, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 7, + 7, + 7, + 7, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 7, + 7, + 8, + 8, + 8, + 8, + 8, + 8, + 9, + 9, + 9, + 9, + 9, + 9, + 7, + 7, + 8, + 8, + 8, + 8, + 9, + 9, + 9, + 9, + 9, + 9, + 8, + 8, + 8, + 9, + 8, + 8, + 9, + 9, + 9, + 9, + 8, + 9, + 7, + 7, + 8, + 9, + 8, + 8, + 9, + 9, + 9, + 9, + 8, + 9, + 8, + 8, + 8, + 8, + 8, + 8, + 8, + 8, + 8, + 8, + 9, + 7, + 7, + 7, + 8, + 8, + 8, + 8, + 8, + 8, + 8, + 8, + 9, + 7, + 8, + 8, + 9, + 9, + 9, + 9, + 8, + 8, + 8, + 8, + 7, + 7, + 7, + 7, + 9, + 8, + 9, + 8, + 8, + 8, + 8, + 8, + 7, + 7, + 7, + 7, + 9, + 8, + 9, + 8, + 8, + 8, + 8, + 8, + 7, + 7, + 7, + 7, + 8, + 8, + 8, + 8, + 8, + 8, + 8, + 8, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 8, + 8, + 8, + 5, + 8, + 5, + 5, + 5, + 8, + 8, + 8, + 4, + 8, + 4, + 4, + 4, + 8, + 8, + 8, + 4, + 8, + 4, + 4, + 4, + 8, + 8, + 8, + 4, + 8, + 4, + 4, + 4, + 8, + 8, + 8, + 4, + 8, + 4, + 4, + 4, + 8, + 8, + 8, + 4, + 8, + 4, + 4, + 4, + 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 + ] + }, + { + "stage": 1, + "replica": 0, + "widths": [ + 9, + 4, + 9, + 4, + 9, + 4, + 9, + 9, + 9, + 9, + 4, + 9, + 9, + 9, + 9, + 9, + 9, + 4, + 9, + 4, + 9, + 4, + 9, + 9, + 9, + 9, + 4, + 9, + 9, + 9, + 9, + 9, + 9, + 4, + 9, + 4, + 9, + 4, + 9, + 9, + 9, + 9, + 4, + 9, + 9, + 9, + 9, + 9, + 9, + 4, + 9, + 4, + 9, + 4, + 9, + 9, + 9, + 9, + 4, + 9, + 9, + 9, + 9, + 9, + 9, + 4, + 9, + 4, + 9, + 4, + 9, + 9, + 9, + 9, + 4, + 9, + 9, + 9, + 9, + 9, + 9, + 4, + 9, + 4, + 9, + 4, + 9, + 8, + 9, + 9, + 4, + 9, + 9, + 9, + 9, + 9, + 9, + 4, + 9, + 4, + 9, + 4, + 9, + 8, + 9, + 9, + 4, + 9, + 9, + 9, + 9, + 9, + 9, + 4, + 9, + 4, + 9, + 4, + 9, + 9, + 9, + 9, + 4, + 9, + 9, + 9, + 9, + 9, + 9, + 4, + 9, + 4, + 9, + 4, + 9, + 9, + 9, + 9, + 4, + 9, + 9, + 9, + 9, + 9, + 9, + 4, + 9, + 4, + 9, + 4, + 9, + 9, + 9, + 9, + 4, + 9, + 9, + 9, + 9, + 9, + 9, + 4, + 9, + 4, + 9, + 4, + 9, + 9, + 9, + 9, + 4, + 9, + 9, + 9, + 9, + 9, + 9, + 4, + 9, + 4, + 9, + 4, + 9, + 9, + 9, + 9, + 4, + 9, + 9, + 9, + 9, + 9, + 9, + 4, + 9, + 4, + 9, + 4, + 9, + 9, + 9, + 9, + 4, + 9, + 9, + 9, + 9, + 9, + 9, + 4, + 9, + 4, + 9, + 4, + 9, + 9, + 9, + 9, + 4, + 9, + 9, + 9, + 9, + 9, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 7, + 7, + 7, + 7, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 7, + 7, + 8, + 8, + 8, + 8, + 8, + 8, + 9, + 9, + 9, + 9, + 9, + 9, + 7, + 7, + 8, + 8, + 8, + 8, + 9, + 9, + 9, + 9, + 9, + 9, + 8, + 8, + 8, + 9, + 8, + 8, + 9, + 9, + 9, + 9, + 8, + 9, + 7, + 7, + 8, + 9, + 8, + 8, + 9, + 9, + 9, + 9, + 8, + 9, + 8, + 8, + 8, + 8, + 8, + 8, + 8, + 8, + 8, + 8, + 9, + 7, + 7, + 7, + 8, + 8, + 8, + 8, + 8, + 8, + 8, + 8, + 9, + 7, + 8, + 8, + 9, + 9, + 9, + 9, + 8, + 8, + 8, + 8, + 7, + 7, + 7, + 7, + 9, + 8, + 9, + 8, + 8, + 8, + 8, + 8, + 7, + 7, + 7, + 7, + 9, + 8, + 9, + 8, + 8, + 8, + 8, + 8, + 7, + 7, + 7, + 7, + 8, + 8, + 8, + 8, + 8, + 8, + 8, + 8, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 8, + 8, + 8, + 5, + 8, + 5, + 5, + 5, + 8, + 8, + 8, + 4, + 8, + 4, + 4, + 4, + 8, + 8, + 8, + 4, + 8, + 4, + 4, + 4, + 8, + 8, + 8, + 4, + 8, + 4, + 4, + 4, + 8, + 8, + 8, + 4, + 8, + 4, + 4, + 4, + 8, + 8, + 8, + 4, + 8, + 4, + 4, + 4, + 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 + ] + }, + { + "stage": 0, + "replica": 2, + "widths": [ + 9, + 4, + 9, + 4, + 9, + 4, + 9, + 9, + 9, + 9, + 4, + 9, + 9, + 9, + 9, + 9, + 9, + 4, + 9, + 4, + 9, + 4, + 9, + 9, + 9, + 9, + 4, + 9, + 9, + 9, + 9, + 9, + 9, + 4, + 9, + 4, + 9, + 4, + 9, + 9, + 9, + 9, + 4, + 9, + 9, + 9, + 9, + 9, + 9, + 4, + 9, + 4, + 9, + 4, + 9, + 9, + 9, + 9, + 4, + 9, + 9, + 9, + 9, + 9, + 9, + 4, + 9, + 4, + 9, + 4, + 9, + 9, + 9, + 9, + 4, + 9, + 9, + 9, + 9, + 9, + 9, + 4, + 9, + 4, + 9, + 4, + 9, + 8, + 9, + 9, + 4, + 9, + 9, + 9, + 9, + 9, + 9, + 4, + 9, + 4, + 9, + 4, + 9, + 8, + 9, + 9, + 4, + 9, + 9, + 9, + 9, + 9, + 9, + 4, + 9, + 4, + 9, + 4, + 9, + 9, + 9, + 9, + 4, + 9, + 9, + 9, + 9, + 9, + 9, + 4, + 9, + 4, + 9, + 4, + 9, + 9, + 9, + 9, + 4, + 9, + 9, + 9, + 9, + 9, + 9, + 4, + 9, + 4, + 9, + 4, + 9, + 9, + 9, + 9, + 4, + 9, + 9, + 9, + 9, + 9, + 9, + 4, + 9, + 4, + 9, + 4, + 9, + 9, + 9, + 9, + 4, + 9, + 9, + 9, + 9, + 9, + 9, + 4, + 9, + 4, + 9, + 4, + 9, + 9, + 9, + 9, + 4, + 9, + 9, + 9, + 9, + 9, + 9, + 4, + 9, + 4, + 9, + 4, + 9, + 9, + 9, + 9, + 4, + 9, + 9, + 9, + 9, + 9, + 9, + 4, + 9, + 4, + 9, + 4, + 9, + 9, + 9, + 9, + 4, + 9, + 9, + 9, + 9, + 9, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 7, + 7, + 7, + 7, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 7, + 7, + 8, + 8, + 8, + 8, + 8, + 8, + 9, + 9, + 9, + 9, + 9, + 9, + 7, + 7, + 8, + 8, + 8, + 8, + 9, + 9, + 9, + 9, + 9, + 9, + 8, + 8, + 8, + 9, + 8, + 8, + 9, + 9, + 9, + 9, + 8, + 9, + 7, + 7, + 8, + 9, + 8, + 8, + 9, + 9, + 9, + 9, + 8, + 9, + 8, + 8, + 8, + 8, + 8, + 8, + 8, + 8, + 8, + 8, + 9, + 7, + 7, + 7, + 8, + 8, + 8, + 8, + 8, + 8, + 8, + 8, + 9, + 7, + 8, + 8, + 9, + 9, + 9, + 9, + 8, + 8, + 8, + 8, + 7, + 7, + 7, + 7, + 9, + 8, + 9, + 8, + 8, + 8, + 8, + 8, + 7, + 7, + 7, + 7, + 9, + 8, + 9, + 8, + 8, + 8, + 8, + 8, + 7, + 7, + 7, + 7, + 8, + 8, + 8, + 8, + 8, + 8, + 8, + 8, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 8, + 8, + 8, + 5, + 8, + 5, + 5, + 5, + 8, + 8, + 8, + 4, + 8, + 4, + 4, + 4, + 8, + 8, + 8, + 4, + 8, + 4, + 4, + 4, + 8, + 8, + 8, + 4, + 8, + 4, + 4, + 4, + 8, + 8, + 8, + 4, + 8, + 4, + 4, + 4, + 8, + 8, + 8, + 4, + 8, + 4, + 4, + 4, + 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 + ] + }, + { + "stage": 1, + "replica": 1, + "widths": [ + 9, + 4, + 9, + 4, + 9, + 4, + 9, + 9, + 9, + 9, + 4, + 9, + 9, + 9, + 9, + 9, + 9, + 4, + 9, + 4, + 9, + 4, + 9, + 9, + 9, + 9, + 4, + 9, + 9, + 9, + 9, + 9, + 9, + 4, + 9, + 4, + 9, + 4, + 9, + 9, + 9, + 9, + 4, + 9, + 9, + 9, + 9, + 9, + 9, + 4, + 9, + 4, + 9, + 4, + 9, + 9, + 9, + 9, + 4, + 9, + 9, + 9, + 9, + 9, + 9, + 4, + 9, + 4, + 9, + 4, + 9, + 9, + 9, + 9, + 4, + 9, + 9, + 9, + 9, + 9, + 9, + 4, + 9, + 4, + 9, + 4, + 9, + 8, + 9, + 9, + 4, + 9, + 9, + 9, + 9, + 9, + 9, + 4, + 9, + 4, + 9, + 4, + 9, + 8, + 9, + 9, + 4, + 9, + 9, + 9, + 9, + 9, + 9, + 4, + 9, + 4, + 9, + 4, + 9, + 9, + 9, + 9, + 4, + 9, + 9, + 9, + 9, + 9, + 9, + 4, + 9, + 4, + 9, + 4, + 9, + 9, + 9, + 9, + 4, + 9, + 9, + 9, + 9, + 9, + 9, + 4, + 9, + 4, + 9, + 4, + 9, + 9, + 9, + 9, + 4, + 9, + 9, + 9, + 9, + 9, + 9, + 4, + 9, + 4, + 9, + 4, + 9, + 9, + 9, + 9, + 4, + 9, + 9, + 9, + 9, + 9, + 9, + 4, + 9, + 4, + 9, + 4, + 9, + 9, + 9, + 9, + 4, + 9, + 9, + 9, + 9, + 9, + 9, + 4, + 9, + 4, + 9, + 4, + 9, + 9, + 9, + 9, + 4, + 9, + 9, + 9, + 9, + 9, + 9, + 4, + 9, + 4, + 9, + 4, + 9, + 9, + 9, + 9, + 4, + 9, + 9, + 9, + 9, + 9, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 7, + 7, + 7, + 7, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 7, + 7, + 8, + 8, + 8, + 8, + 8, + 8, + 9, + 9, + 9, + 9, + 9, + 9, + 7, + 7, + 8, + 8, + 8, + 8, + 9, + 9, + 9, + 9, + 9, + 9, + 8, + 8, + 8, + 9, + 8, + 8, + 9, + 9, + 9, + 9, + 8, + 9, + 7, + 7, + 8, + 9, + 8, + 8, + 9, + 9, + 9, + 9, + 8, + 9, + 8, + 8, + 8, + 8, + 8, + 8, + 8, + 8, + 8, + 8, + 9, + 7, + 7, + 7, + 8, + 8, + 8, + 8, + 8, + 8, + 8, + 8, + 9, + 7, + 8, + 8, + 9, + 9, + 9, + 9, + 8, + 8, + 8, + 8, + 7, + 7, + 7, + 7, + 9, + 8, + 9, + 8, + 8, + 8, + 8, + 8, + 7, + 7, + 7, + 7, + 9, + 8, + 9, + 8, + 8, + 8, + 8, + 8, + 7, + 7, + 7, + 7, + 8, + 8, + 8, + 8, + 8, + 8, + 8, + 8, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 8, + 8, + 8, + 5, + 8, + 5, + 5, + 5, + 8, + 8, + 8, + 4, + 8, + 4, + 4, + 4, + 8, + 8, + 8, + 4, + 8, + 4, + 4, + 4, + 8, + 8, + 8, + 4, + 8, + 4, + 4, + 4, + 8, + 8, + 8, + 4, + 8, + 4, + 4, + 4, + 8, + 8, + 8, + 4, + 8, + 4, + 4, + 4, + 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 + ] + }, + { + "stage": 2, + "replica": 0, + "widths": [ + 9, + 4, + 9, + 4, + 9, + 4, + 9, + 9, + 9, + 9, + 4, + 9, + 9, + 9, + 9, + 9, + 9, + 4, + 9, + 4, + 9, + 4, + 9, + 9, + 9, + 9, + 4, + 9, + 9, + 9, + 9, + 9, + 9, + 4, + 9, + 4, + 9, + 4, + 9, + 9, + 9, + 9, + 4, + 9, + 9, + 9, + 9, + 9, + 9, + 4, + 9, + 4, + 9, + 4, + 9, + 9, + 9, + 9, + 4, + 9, + 9, + 9, + 9, + 9, + 9, + 4, + 9, + 4, + 9, + 4, + 9, + 9, + 9, + 9, + 4, + 9, + 9, + 9, + 9, + 9, + 9, + 4, + 9, + 4, + 9, + 4, + 9, + 8, + 9, + 9, + 4, + 9, + 9, + 9, + 9, + 9, + 9, + 4, + 9, + 4, + 9, + 4, + 9, + 8, + 9, + 9, + 4, + 9, + 9, + 9, + 9, + 9, + 9, + 4, + 9, + 4, + 9, + 4, + 9, + 9, + 9, + 9, + 4, + 9, + 9, + 9, + 9, + 9, + 9, + 4, + 9, + 4, + 9, + 4, + 9, + 9, + 9, + 9, + 4, + 9, + 9, + 9, + 9, + 9, + 9, + 4, + 9, + 4, + 9, + 4, + 9, + 9, + 9, + 9, + 4, + 9, + 9, + 9, + 9, + 9, + 9, + 4, + 9, + 4, + 9, + 4, + 9, + 9, + 9, + 9, + 4, + 9, + 9, + 9, + 9, + 9, + 9, + 4, + 9, + 4, + 9, + 4, + 9, + 9, + 9, + 9, + 4, + 9, + 9, + 9, + 9, + 9, + 9, + 4, + 9, + 4, + 9, + 4, + 9, + 9, + 9, + 9, + 4, + 9, + 9, + 9, + 9, + 9, + 9, + 4, + 9, + 4, + 9, + 4, + 9, + 9, + 9, + 9, + 4, + 9, + 9, + 9, + 9, + 9, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 7, + 7, + 7, + 7, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 7, + 7, + 8, + 8, + 8, + 8, + 8, + 8, + 9, + 9, + 9, + 9, + 9, + 9, + 7, + 7, + 8, + 8, + 8, + 8, + 9, + 9, + 9, + 9, + 9, + 9, + 8, + 8, + 8, + 9, + 8, + 8, + 9, + 9, + 9, + 9, + 8, + 9, + 7, + 7, + 8, + 9, + 8, + 8, + 9, + 9, + 9, + 9, + 8, + 9, + 8, + 8, + 8, + 8, + 8, + 8, + 8, + 8, + 8, + 8, + 9, + 7, + 7, + 7, + 8, + 8, + 8, + 8, + 8, + 8, + 8, + 8, + 9, + 7, + 8, + 8, + 9, + 9, + 9, + 9, + 8, + 8, + 8, + 8, + 7, + 7, + 7, + 7, + 9, + 8, + 9, + 8, + 8, + 8, + 8, + 8, + 7, + 7, + 7, + 7, + 9, + 8, + 9, + 8, + 8, + 8, + 8, + 8, + 7, + 7, + 7, + 7, + 8, + 8, + 8, + 8, + 8, + 8, + 8, + 8, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 8, + 8, + 8, + 5, + 8, + 5, + 5, + 5, + 8, + 8, + 8, + 4, + 8, + 4, + 4, + 4, + 8, + 8, + 8, + 4, + 8, + 4, + 4, + 4, + 8, + 8, + 8, + 4, + 8, + 4, + 4, + 4, + 8, + 8, + 8, + 4, + 8, + 4, + 4, + 4, + 8, + 8, + 8, + 4, + 8, + 4, + 4, + 4, + 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 + ] + }, + { + "stage": 0, + "replica": 3, + "widths": [ + 9, + 4, + 9, + 4, + 9, + 4, + 9, + 9, + 9, + 9, + 4, + 9, + 9, + 9, + 9, + 9, + 9, + 4, + 9, + 4, + 9, + 4, + 9, + 9, + 9, + 9, + 4, + 9, + 9, + 9, + 9, + 9, + 9, + 4, + 9, + 4, + 9, + 4, + 9, + 9, + 9, + 9, + 4, + 9, + 9, + 9, + 9, + 9, + 9, + 4, + 9, + 4, + 9, + 4, + 9, + 9, + 9, + 9, + 4, + 9, + 9, + 9, + 9, + 9, + 9, + 4, + 9, + 4, + 9, + 4, + 9, + 9, + 9, + 9, + 4, + 9, + 9, + 9, + 9, + 9, + 9, + 4, + 9, + 4, + 9, + 4, + 9, + 8, + 9, + 9, + 4, + 9, + 9, + 9, + 9, + 9, + 9, + 4, + 9, + 4, + 9, + 4, + 9, + 8, + 9, + 9, + 4, + 9, + 9, + 9, + 9, + 9, + 9, + 4, + 9, + 4, + 9, + 4, + 9, + 9, + 9, + 9, + 4, + 9, + 9, + 9, + 9, + 9, + 9, + 4, + 9, + 4, + 9, + 4, + 9, + 9, + 9, + 9, + 4, + 9, + 9, + 9, + 9, + 9, + 9, + 4, + 9, + 4, + 9, + 4, + 9, + 9, + 9, + 9, + 4, + 9, + 9, + 9, + 9, + 9, + 9, + 4, + 9, + 4, + 9, + 4, + 9, + 9, + 9, + 9, + 4, + 9, + 9, + 9, + 9, + 9, + 9, + 4, + 9, + 4, + 9, + 4, + 9, + 9, + 9, + 9, + 4, + 9, + 9, + 9, + 9, + 9, + 9, + 4, + 9, + 4, + 9, + 4, + 9, + 9, + 9, + 9, + 4, + 9, + 9, + 9, + 9, + 9, + 9, + 4, + 9, + 4, + 9, + 4, + 9, + 9, + 9, + 9, + 4, + 9, + 9, + 9, + 9, + 9, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 7, + 7, + 7, + 7, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 7, + 7, + 8, + 8, + 8, + 8, + 8, + 8, + 9, + 9, + 9, + 9, + 9, + 9, + 7, + 7, + 8, + 8, + 8, + 8, + 9, + 9, + 9, + 9, + 9, + 9, + 8, + 8, + 8, + 9, + 8, + 8, + 9, + 9, + 9, + 9, + 8, + 9, + 7, + 7, + 8, + 9, + 8, + 8, + 9, + 9, + 9, + 9, + 8, + 9, + 8, + 8, + 8, + 8, + 8, + 8, + 8, + 8, + 8, + 8, + 9, + 7, + 7, + 7, + 8, + 8, + 8, + 8, + 8, + 8, + 8, + 8, + 9, + 7, + 8, + 8, + 9, + 9, + 9, + 9, + 8, + 8, + 8, + 8, + 7, + 7, + 7, + 7, + 9, + 8, + 9, + 8, + 8, + 8, + 8, + 8, + 7, + 7, + 7, + 7, + 9, + 8, + 9, + 8, + 8, + 8, + 8, + 8, + 7, + 7, + 7, + 7, + 8, + 8, + 8, + 8, + 8, + 8, + 8, + 8, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 8, + 8, + 8, + 5, + 8, + 5, + 5, + 5, + 8, + 8, + 8, + 4, + 8, + 4, + 4, + 4, + 8, + 8, + 8, + 4, + 8, + 4, + 4, + 4, + 8, + 8, + 8, + 4, + 8, + 4, + 4, + 4, + 8, + 8, + 8, + 4, + 8, + 4, + 4, + 4, + 8, + 8, + 8, + 4, + 8, + 4, + 4, + 4, + 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 + ] + }, + { + "stage": 1, + "replica": 2, + "widths": [ + 9, + 4, + 9, + 4, + 9, + 4, + 9, + 9, + 9, + 9, + 4, + 9, + 9, + 9, + 9, + 9, + 9, + 4, + 9, + 4, + 9, + 4, + 9, + 9, + 9, + 9, + 4, + 9, + 9, + 9, + 9, + 9, + 9, + 4, + 9, + 4, + 9, + 4, + 9, + 9, + 9, + 9, + 4, + 9, + 9, + 9, + 9, + 9, + 9, + 4, + 9, + 4, + 9, + 4, + 9, + 9, + 9, + 9, + 4, + 9, + 9, + 9, + 9, + 9, + 9, + 4, + 9, + 4, + 9, + 4, + 9, + 9, + 9, + 9, + 4, + 9, + 9, + 9, + 9, + 9, + 9, + 4, + 9, + 4, + 9, + 4, + 9, + 8, + 9, + 9, + 4, + 9, + 9, + 9, + 9, + 9, + 9, + 4, + 9, + 4, + 9, + 4, + 9, + 8, + 9, + 9, + 4, + 9, + 9, + 9, + 9, + 9, + 9, + 4, + 9, + 4, + 9, + 4, + 9, + 9, + 9, + 9, + 4, + 9, + 9, + 9, + 9, + 9, + 9, + 4, + 9, + 4, + 9, + 4, + 9, + 9, + 9, + 9, + 4, + 9, + 9, + 9, + 9, + 9, + 9, + 4, + 9, + 4, + 9, + 4, + 9, + 9, + 9, + 9, + 4, + 9, + 9, + 9, + 9, + 9, + 9, + 4, + 9, + 4, + 9, + 4, + 9, + 9, + 9, + 9, + 4, + 9, + 9, + 9, + 9, + 9, + 9, + 4, + 9, + 4, + 9, + 4, + 9, + 9, + 9, + 9, + 4, + 9, + 9, + 9, + 9, + 9, + 9, + 4, + 9, + 4, + 9, + 4, + 9, + 9, + 9, + 9, + 4, + 9, + 9, + 9, + 9, + 9, + 9, + 4, + 9, + 4, + 9, + 4, + 9, + 9, + 9, + 9, + 4, + 9, + 9, + 9, + 9, + 9, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 7, + 7, + 7, + 7, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 7, + 7, + 8, + 8, + 8, + 8, + 8, + 8, + 9, + 9, + 9, + 9, + 9, + 9, + 7, + 7, + 8, + 8, + 8, + 8, + 9, + 9, + 9, + 9, + 9, + 9, + 8, + 8, + 8, + 9, + 8, + 8, + 9, + 9, + 9, + 9, + 8, + 9, + 7, + 7, + 8, + 9, + 8, + 8, + 9, + 9, + 9, + 9, + 8, + 9, + 8, + 8, + 8, + 8, + 8, + 8, + 8, + 8, + 8, + 8, + 9, + 7, + 7, + 7, + 8, + 8, + 8, + 8, + 8, + 8, + 8, + 8, + 9, + 7, + 8, + 8, + 9, + 9, + 9, + 9, + 8, + 8, + 8, + 8, + 7, + 7, + 7, + 7, + 9, + 8, + 9, + 8, + 8, + 8, + 8, + 8, + 7, + 7, + 7, + 7, + 9, + 8, + 9, + 8, + 8, + 8, + 8, + 8, + 7, + 7, + 7, + 7, + 8, + 8, + 8, + 8, + 8, + 8, + 8, + 8, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 8, + 8, + 8, + 5, + 8, + 5, + 5, + 5, + 8, + 8, + 8, + 4, + 8, + 4, + 4, + 4, + 8, + 8, + 8, + 4, + 8, + 4, + 4, + 4, + 8, + 8, + 8, + 4, + 8, + 4, + 4, + 4, + 8, + 8, + 8, + 4, + 8, + 4, + 4, + 4, + 8, + 8, + 8, + 4, + 8, + 4, + 4, + 4, + 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 + ] + }, + { + "stage": 2, + "replica": 1, + "widths": [ + 9, + 4, + 9, + 4, + 9, + 4, + 9, + 9, + 9, + 9, + 4, + 9, + 9, + 9, + 9, + 9, + 9, + 4, + 9, + 4, + 9, + 4, + 9, + 9, + 9, + 9, + 4, + 9, + 9, + 9, + 9, + 9, + 9, + 4, + 9, + 4, + 9, + 4, + 9, + 9, + 9, + 9, + 4, + 9, + 9, + 9, + 9, + 9, + 9, + 4, + 9, + 4, + 9, + 4, + 9, + 9, + 9, + 9, + 4, + 9, + 9, + 9, + 9, + 9, + 9, + 4, + 9, + 4, + 9, + 4, + 9, + 9, + 9, + 9, + 4, + 9, + 9, + 9, + 9, + 9, + 9, + 4, + 9, + 4, + 9, + 4, + 9, + 8, + 9, + 9, + 4, + 9, + 9, + 9, + 9, + 9, + 9, + 4, + 9, + 4, + 9, + 4, + 9, + 8, + 9, + 9, + 4, + 9, + 9, + 9, + 9, + 9, + 9, + 4, + 9, + 4, + 9, + 4, + 9, + 9, + 9, + 9, + 4, + 9, + 9, + 9, + 9, + 9, + 9, + 4, + 9, + 4, + 9, + 4, + 9, + 9, + 9, + 9, + 4, + 9, + 9, + 9, + 9, + 9, + 9, + 4, + 9, + 4, + 9, + 4, + 9, + 9, + 9, + 9, + 4, + 9, + 9, + 9, + 9, + 9, + 9, + 4, + 9, + 4, + 9, + 4, + 9, + 9, + 9, + 9, + 4, + 9, + 9, + 9, + 9, + 9, + 9, + 4, + 9, + 4, + 9, + 4, + 9, + 9, + 9, + 9, + 4, + 9, + 9, + 9, + 9, + 9, + 9, + 4, + 9, + 4, + 9, + 4, + 9, + 9, + 9, + 9, + 4, + 9, + 9, + 9, + 9, + 9, + 9, + 4, + 9, + 4, + 9, + 4, + 9, + 9, + 9, + 9, + 4, + 9, + 9, + 9, + 9, + 9, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 7, + 7, + 7, + 7, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 7, + 7, + 8, + 8, + 8, + 8, + 8, + 8, + 9, + 9, + 9, + 9, + 9, + 9, + 7, + 7, + 8, + 8, + 8, + 8, + 9, + 9, + 9, + 9, + 9, + 9, + 8, + 8, + 8, + 9, + 8, + 8, + 9, + 9, + 9, + 9, + 8, + 9, + 7, + 7, + 8, + 9, + 8, + 8, + 9, + 9, + 9, + 9, + 8, + 9, + 8, + 8, + 8, + 8, + 8, + 8, + 8, + 8, + 8, + 8, + 9, + 7, + 7, + 7, + 8, + 8, + 8, + 8, + 8, + 8, + 8, + 8, + 9, + 7, + 8, + 8, + 9, + 9, + 9, + 9, + 8, + 8, + 8, + 8, + 7, + 7, + 7, + 7, + 9, + 8, + 9, + 8, + 8, + 8, + 8, + 8, + 7, + 7, + 7, + 7, + 9, + 8, + 9, + 8, + 8, + 8, + 8, + 8, + 7, + 7, + 7, + 7, + 8, + 8, + 8, + 8, + 8, + 8, + 8, + 8, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 8, + 8, + 8, + 5, + 8, + 5, + 5, + 5, + 8, + 8, + 8, + 4, + 8, + 4, + 4, + 4, + 8, + 8, + 8, + 4, + 8, + 4, + 4, + 4, + 8, + 8, + 8, + 4, + 8, + 4, + 4, + 4, + 8, + 8, + 8, + 4, + 8, + 4, + 4, + 4, + 8, + 8, + 8, + 4, + 8, + 4, + 4, + 4, + 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 + ] + }, + { + "stage": 3, + "replica": 0, + "widths": [ + 9, + 4, + 9, + 4, + 9, + 4, + 9, + 9, + 9, + 9, + 4, + 9, + 9, + 9, + 9, + 9, + 9, + 4, + 9, + 4, + 9, + 4, + 9, + 9, + 9, + 9, + 4, + 9, + 9, + 9, + 9, + 9, + 9, + 4, + 9, + 4, + 9, + 4, + 9, + 9, + 9, + 9, + 4, + 9, + 9, + 9, + 9, + 9, + 9, + 4, + 9, + 4, + 9, + 4, + 9, + 9, + 9, + 9, + 4, + 9, + 9, + 9, + 9, + 9, + 9, + 4, + 9, + 4, + 9, + 4, + 9, + 9, + 9, + 9, + 4, + 9, + 9, + 9, + 9, + 9, + 9, + 4, + 9, + 4, + 9, + 4, + 9, + 8, + 9, + 9, + 4, + 9, + 9, + 9, + 9, + 9, + 9, + 4, + 9, + 4, + 9, + 4, + 9, + 8, + 9, + 9, + 4, + 9, + 9, + 9, + 9, + 9, + 9, + 4, + 9, + 4, + 9, + 4, + 9, + 9, + 9, + 9, + 4, + 9, + 9, + 9, + 9, + 9, + 9, + 4, + 9, + 4, + 9, + 4, + 9, + 9, + 9, + 9, + 4, + 9, + 9, + 9, + 9, + 9, + 9, + 4, + 9, + 4, + 9, + 4, + 9, + 9, + 9, + 9, + 4, + 9, + 9, + 9, + 9, + 9, + 9, + 4, + 9, + 4, + 9, + 4, + 9, + 9, + 9, + 9, + 4, + 9, + 9, + 9, + 9, + 9, + 9, + 4, + 9, + 4, + 9, + 4, + 9, + 9, + 9, + 9, + 4, + 9, + 9, + 9, + 9, + 9, + 9, + 4, + 9, + 4, + 9, + 4, + 9, + 9, + 9, + 9, + 4, + 9, + 9, + 9, + 9, + 9, + 9, + 4, + 9, + 4, + 9, + 4, + 9, + 9, + 9, + 9, + 4, + 9, + 9, + 9, + 9, + 9, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 7, + 7, + 7, + 7, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 7, + 7, + 8, + 8, + 8, + 8, + 8, + 8, + 9, + 9, + 9, + 9, + 9, + 9, + 7, + 7, + 8, + 8, + 8, + 8, + 9, + 9, + 9, + 9, + 9, + 9, + 8, + 8, + 8, + 9, + 8, + 8, + 9, + 9, + 9, + 9, + 8, + 9, + 7, + 7, + 8, + 9, + 8, + 8, + 9, + 9, + 9, + 9, + 8, + 9, + 8, + 8, + 8, + 8, + 8, + 8, + 8, + 8, + 8, + 8, + 9, + 7, + 7, + 7, + 8, + 8, + 8, + 8, + 8, + 8, + 8, + 8, + 9, + 7, + 8, + 8, + 9, + 9, + 9, + 9, + 8, + 8, + 8, + 8, + 7, + 7, + 7, + 7, + 9, + 8, + 9, + 8, + 8, + 8, + 8, + 8, + 7, + 7, + 7, + 7, + 9, + 8, + 9, + 8, + 8, + 8, + 8, + 8, + 7, + 7, + 7, + 7, + 8, + 8, + 8, + 8, + 8, + 8, + 8, + 8, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 8, + 8, + 8, + 5, + 8, + 5, + 5, + 5, + 8, + 8, + 8, + 4, + 8, + 4, + 4, + 4, + 8, + 8, + 8, + 4, + 8, + 4, + 4, + 4, + 8, + 8, + 8, + 4, + 8, + 4, + 4, + 4, + 8, + 8, + 8, + 4, + 8, + 4, + 4, + 4, + 8, + 8, + 8, + 4, + 8, + 4, + 4, + 4, + 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 + ] + }, + { + "stage": 0, + "replica": 4, + "widths": [ + 9, + 4, + 9, + 4, + 9, + 4, + 9, + 9, + 9, + 9, + 4, + 9, + 9, + 9, + 9, + 9, + 9, + 4, + 9, + 4, + 9, + 4, + 9, + 9, + 9, + 9, + 4, + 9, + 9, + 9, + 9, + 9, + 9, + 4, + 9, + 4, + 9, + 4, + 9, + 9, + 9, + 9, + 4, + 9, + 9, + 9, + 9, + 9, + 9, + 4, + 9, + 4, + 9, + 4, + 9, + 9, + 9, + 9, + 4, + 9, + 9, + 9, + 9, + 9, + 9, + 4, + 9, + 4, + 9, + 4, + 9, + 9, + 9, + 9, + 4, + 9, + 9, + 9, + 9, + 9, + 9, + 4, + 9, + 4, + 9, + 4, + 9, + 8, + 9, + 9, + 4, + 9, + 9, + 9, + 9, + 9, + 9, + 4, + 9, + 4, + 9, + 4, + 9, + 8, + 9, + 9, + 4, + 9, + 9, + 9, + 9, + 9, + 9, + 4, + 9, + 4, + 9, + 4, + 9, + 9, + 9, + 9, + 4, + 9, + 9, + 9, + 9, + 9, + 9, + 4, + 9, + 4, + 9, + 4, + 9, + 9, + 9, + 9, + 4, + 9, + 9, + 9, + 9, + 9, + 9, + 4, + 9, + 4, + 9, + 4, + 9, + 9, + 9, + 9, + 4, + 9, + 9, + 9, + 9, + 9, + 9, + 4, + 9, + 4, + 9, + 4, + 9, + 9, + 9, + 9, + 4, + 9, + 9, + 9, + 9, + 9, + 9, + 4, + 9, + 4, + 9, + 4, + 9, + 9, + 9, + 9, + 4, + 9, + 9, + 9, + 9, + 9, + 9, + 4, + 9, + 4, + 9, + 4, + 9, + 9, + 9, + 9, + 4, + 9, + 9, + 9, + 9, + 9, + 9, + 4, + 9, + 4, + 9, + 4, + 9, + 9, + 9, + 9, + 4, + 9, + 9, + 9, + 9, + 9, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 7, + 7, + 7, + 7, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 7, + 7, + 8, + 8, + 8, + 8, + 8, + 8, + 9, + 9, + 9, + 9, + 9, + 9, + 7, + 7, + 8, + 8, + 8, + 8, + 9, + 9, + 9, + 9, + 9, + 9, + 8, + 8, + 8, + 9, + 8, + 8, + 9, + 9, + 9, + 9, + 8, + 9, + 7, + 7, + 8, + 9, + 8, + 8, + 9, + 9, + 9, + 9, + 8, + 9, + 8, + 8, + 8, + 8, + 8, + 8, + 8, + 8, + 8, + 8, + 9, + 7, + 7, + 7, + 8, + 8, + 8, + 8, + 8, + 8, + 8, + 8, + 9, + 7, + 8, + 8, + 9, + 9, + 9, + 9, + 8, + 8, + 8, + 8, + 7, + 7, + 7, + 7, + 9, + 8, + 9, + 8, + 8, + 8, + 8, + 8, + 7, + 7, + 7, + 7, + 9, + 8, + 9, + 8, + 8, + 8, + 8, + 8, + 7, + 7, + 7, + 7, + 8, + 8, + 8, + 8, + 8, + 8, + 8, + 8, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 8, + 8, + 8, + 5, + 8, + 5, + 5, + 5, + 8, + 8, + 8, + 4, + 8, + 4, + 4, + 4, + 8, + 8, + 8, + 4, + 8, + 4, + 4, + 4, + 8, + 8, + 8, + 4, + 8, + 4, + 4, + 4, + 8, + 8, + 8, + 4, + 8, + 4, + 4, + 4, + 8, + 8, + 8, + 4, + 8, + 4, + 4, + 4, + 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 + ] + }, + { + "stage": 1, + "replica": 3, + "widths": [ + 9, + 4, + 9, + 4, + 9, + 4, + 9, + 9, + 9, + 9, + 4, + 9, + 9, + 9, + 9, + 9, + 9, + 4, + 9, + 4, + 9, + 4, + 9, + 9, + 9, + 9, + 4, + 9, + 9, + 9, + 9, + 9, + 9, + 4, + 9, + 4, + 9, + 4, + 9, + 9, + 9, + 9, + 4, + 9, + 9, + 9, + 9, + 9, + 9, + 4, + 9, + 4, + 9, + 4, + 9, + 9, + 9, + 9, + 4, + 9, + 9, + 9, + 9, + 9, + 9, + 4, + 9, + 4, + 9, + 4, + 9, + 9, + 9, + 9, + 4, + 9, + 9, + 9, + 9, + 9, + 9, + 4, + 9, + 4, + 9, + 4, + 9, + 8, + 9, + 9, + 4, + 9, + 9, + 9, + 9, + 9, + 9, + 4, + 9, + 4, + 9, + 4, + 9, + 8, + 9, + 9, + 4, + 9, + 9, + 9, + 9, + 9, + 9, + 4, + 9, + 4, + 9, + 4, + 9, + 9, + 9, + 9, + 4, + 9, + 9, + 9, + 9, + 9, + 9, + 4, + 9, + 4, + 9, + 4, + 9, + 9, + 9, + 9, + 4, + 9, + 9, + 9, + 9, + 9, + 9, + 4, + 9, + 4, + 9, + 4, + 9, + 9, + 9, + 9, + 4, + 9, + 9, + 9, + 9, + 9, + 9, + 4, + 9, + 4, + 9, + 4, + 9, + 9, + 9, + 9, + 4, + 9, + 9, + 9, + 9, + 9, + 9, + 4, + 9, + 4, + 9, + 4, + 9, + 9, + 9, + 9, + 4, + 9, + 9, + 9, + 9, + 9, + 9, + 4, + 9, + 4, + 9, + 4, + 9, + 9, + 9, + 9, + 4, + 9, + 9, + 9, + 9, + 9, + 9, + 4, + 9, + 4, + 9, + 4, + 9, + 9, + 9, + 9, + 4, + 9, + 9, + 9, + 9, + 9, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 7, + 7, + 7, + 7, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 7, + 7, + 8, + 8, + 8, + 8, + 8, + 8, + 9, + 9, + 9, + 9, + 9, + 9, + 7, + 7, + 8, + 8, + 8, + 8, + 9, + 9, + 9, + 9, + 9, + 9, + 8, + 8, + 8, + 9, + 8, + 8, + 9, + 9, + 9, + 9, + 8, + 9, + 7, + 7, + 8, + 9, + 8, + 8, + 9, + 9, + 9, + 9, + 8, + 9, + 8, + 8, + 8, + 8, + 8, + 8, + 8, + 8, + 8, + 8, + 9, + 7, + 7, + 7, + 8, + 8, + 8, + 8, + 8, + 8, + 8, + 8, + 9, + 7, + 8, + 8, + 9, + 9, + 9, + 9, + 8, + 8, + 8, + 8, + 7, + 7, + 7, + 7, + 9, + 8, + 9, + 8, + 8, + 8, + 8, + 8, + 7, + 7, + 7, + 7, + 9, + 8, + 9, + 8, + 8, + 8, + 8, + 8, + 7, + 7, + 7, + 7, + 8, + 8, + 8, + 8, + 8, + 8, + 8, + 8, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 8, + 8, + 8, + 5, + 8, + 5, + 5, + 5, + 8, + 8, + 8, + 4, + 8, + 4, + 4, + 4, + 8, + 8, + 8, + 4, + 8, + 4, + 4, + 4, + 8, + 8, + 8, + 4, + 8, + 4, + 4, + 4, + 8, + 8, + 8, + 4, + 8, + 4, + 4, + 4, + 8, + 8, + 8, + 4, + 8, + 4, + 4, + 4, + 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 + ] + }, + { + "stage": 2, + "replica": 2, + "widths": [ + 9, + 4, + 9, + 4, + 9, + 4, + 9, + 9, + 9, + 9, + 4, + 9, + 9, + 9, + 9, + 9, + 9, + 4, + 9, + 4, + 9, + 4, + 9, + 9, + 9, + 9, + 4, + 9, + 9, + 9, + 9, + 9, + 9, + 4, + 9, + 4, + 9, + 4, + 9, + 9, + 9, + 9, + 4, + 9, + 9, + 9, + 9, + 9, + 9, + 4, + 9, + 4, + 9, + 4, + 9, + 9, + 9, + 9, + 4, + 9, + 9, + 9, + 9, + 9, + 9, + 4, + 9, + 4, + 9, + 4, + 9, + 9, + 9, + 9, + 4, + 9, + 9, + 9, + 9, + 9, + 9, + 4, + 9, + 4, + 9, + 4, + 9, + 8, + 9, + 9, + 4, + 9, + 9, + 9, + 9, + 9, + 9, + 4, + 9, + 4, + 9, + 4, + 9, + 8, + 9, + 9, + 4, + 9, + 9, + 9, + 9, + 9, + 9, + 4, + 9, + 4, + 9, + 4, + 9, + 9, + 9, + 9, + 4, + 9, + 9, + 9, + 9, + 9, + 9, + 4, + 9, + 4, + 9, + 4, + 9, + 9, + 9, + 9, + 4, + 9, + 9, + 9, + 9, + 9, + 9, + 4, + 9, + 4, + 9, + 4, + 9, + 9, + 9, + 9, + 4, + 9, + 9, + 9, + 9, + 9, + 9, + 4, + 9, + 4, + 9, + 4, + 9, + 9, + 9, + 9, + 4, + 9, + 9, + 9, + 9, + 9, + 9, + 4, + 9, + 4, + 9, + 4, + 9, + 9, + 9, + 9, + 4, + 9, + 9, + 9, + 9, + 9, + 9, + 4, + 9, + 4, + 9, + 4, + 9, + 9, + 9, + 9, + 4, + 9, + 9, + 9, + 9, + 9, + 9, + 4, + 9, + 4, + 9, + 4, + 9, + 9, + 9, + 9, + 4, + 9, + 9, + 9, + 9, + 9, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 7, + 7, + 7, + 7, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 7, + 7, + 8, + 8, + 8, + 8, + 8, + 8, + 9, + 9, + 9, + 9, + 9, + 9, + 7, + 7, + 8, + 8, + 8, + 8, + 9, + 9, + 9, + 9, + 9, + 9, + 8, + 8, + 8, + 9, + 8, + 8, + 9, + 9, + 9, + 9, + 8, + 9, + 7, + 7, + 8, + 9, + 8, + 8, + 9, + 9, + 9, + 9, + 8, + 9, + 8, + 8, + 8, + 8, + 8, + 8, + 8, + 8, + 8, + 8, + 9, + 7, + 7, + 7, + 8, + 8, + 8, + 8, + 8, + 8, + 8, + 8, + 9, + 7, + 8, + 8, + 9, + 9, + 9, + 9, + 8, + 8, + 8, + 8, + 7, + 7, + 7, + 7, + 9, + 8, + 9, + 8, + 8, + 8, + 8, + 8, + 7, + 7, + 7, + 7, + 9, + 8, + 9, + 8, + 8, + 8, + 8, + 8, + 7, + 7, + 7, + 7, + 8, + 8, + 8, + 8, + 8, + 8, + 8, + 8, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 8, + 8, + 8, + 5, + 8, + 5, + 5, + 5, + 8, + 8, + 8, + 4, + 8, + 4, + 4, + 4, + 8, + 8, + 8, + 4, + 8, + 4, + 4, + 4, + 8, + 8, + 8, + 4, + 8, + 4, + 4, + 4, + 8, + 8, + 8, + 4, + 8, + 4, + 4, + 4, + 8, + 8, + 8, + 4, + 8, + 4, + 4, + 4, + 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 + ] + }, + { + "stage": 3, + "replica": 1, + "widths": [ + 9, + 4, + 9, + 4, + 9, + 4, + 9, + 9, + 9, + 9, + 4, + 9, + 9, + 9, + 9, + 9, + 9, + 4, + 9, + 4, + 9, + 4, + 9, + 9, + 9, + 9, + 4, + 9, + 9, + 9, + 9, + 9, + 9, + 4, + 9, + 4, + 9, + 4, + 9, + 9, + 9, + 9, + 4, + 9, + 9, + 9, + 9, + 9, + 9, + 4, + 9, + 4, + 9, + 4, + 9, + 9, + 9, + 9, + 4, + 9, + 9, + 9, + 9, + 9, + 9, + 4, + 9, + 4, + 9, + 4, + 9, + 9, + 9, + 9, + 4, + 9, + 9, + 9, + 9, + 9, + 9, + 4, + 9, + 4, + 9, + 4, + 9, + 8, + 9, + 9, + 4, + 9, + 9, + 9, + 9, + 9, + 9, + 4, + 9, + 4, + 9, + 4, + 9, + 8, + 9, + 9, + 4, + 9, + 9, + 9, + 9, + 9, + 9, + 4, + 9, + 4, + 9, + 4, + 9, + 9, + 9, + 9, + 4, + 9, + 9, + 9, + 9, + 9, + 9, + 4, + 9, + 4, + 9, + 4, + 9, + 9, + 9, + 9, + 4, + 9, + 9, + 9, + 9, + 9, + 9, + 4, + 9, + 4, + 9, + 4, + 9, + 9, + 9, + 9, + 4, + 9, + 9, + 9, + 9, + 9, + 9, + 4, + 9, + 4, + 9, + 4, + 9, + 9, + 9, + 9, + 4, + 9, + 9, + 9, + 9, + 9, + 9, + 4, + 9, + 4, + 9, + 4, + 9, + 9, + 9, + 9, + 4, + 9, + 9, + 9, + 9, + 9, + 9, + 4, + 9, + 4, + 9, + 4, + 9, + 9, + 9, + 9, + 4, + 9, + 9, + 9, + 9, + 9, + 9, + 4, + 9, + 4, + 9, + 4, + 9, + 9, + 9, + 9, + 4, + 9, + 9, + 9, + 9, + 9, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 7, + 7, + 7, + 7, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 7, + 7, + 8, + 8, + 8, + 8, + 8, + 8, + 9, + 9, + 9, + 9, + 9, + 9, + 7, + 7, + 8, + 8, + 8, + 8, + 9, + 9, + 9, + 9, + 9, + 9, + 8, + 8, + 8, + 9, + 8, + 8, + 9, + 9, + 9, + 9, + 8, + 9, + 7, + 7, + 8, + 9, + 8, + 8, + 9, + 9, + 9, + 9, + 8, + 9, + 8, + 8, + 8, + 8, + 8, + 8, + 8, + 8, + 8, + 8, + 9, + 7, + 7, + 7, + 8, + 8, + 8, + 8, + 8, + 8, + 8, + 8, + 9, + 7, + 8, + 8, + 9, + 9, + 9, + 9, + 8, + 8, + 8, + 8, + 7, + 7, + 7, + 7, + 9, + 8, + 9, + 8, + 8, + 8, + 8, + 8, + 7, + 7, + 7, + 7, + 9, + 8, + 9, + 8, + 8, + 8, + 8, + 8, + 7, + 7, + 7, + 7, + 8, + 8, + 8, + 8, + 8, + 8, + 8, + 8, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 8, + 8, + 8, + 5, + 8, + 5, + 5, + 5, + 8, + 8, + 8, + 4, + 8, + 4, + 4, + 4, + 8, + 8, + 8, + 4, + 8, + 4, + 4, + 4, + 8, + 8, + 8, + 4, + 8, + 4, + 4, + 4, + 8, + 8, + 8, + 4, + 8, + 4, + 4, + 4, + 8, + 8, + 8, + 4, + 8, + 4, + 4, + 4, + 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 + ] + }, + { + "stage": 4, + "replica": 0, + "widths": [ + 9, + 4, + 9, + 4, + 9, + 4, + 9, + 9, + 9, + 9, + 4, + 9, + 9, + 9, + 9, + 9, + 9, + 4, + 9, + 4, + 9, + 4, + 9, + 9, + 9, + 9, + 4, + 9, + 9, + 9, + 9, + 9, + 9, + 4, + 9, + 4, + 9, + 4, + 9, + 9, + 9, + 9, + 4, + 9, + 9, + 9, + 9, + 9, + 9, + 4, + 9, + 4, + 9, + 4, + 9, + 9, + 9, + 9, + 4, + 9, + 9, + 9, + 9, + 9, + 9, + 4, + 9, + 4, + 9, + 4, + 9, + 9, + 9, + 9, + 4, + 9, + 9, + 9, + 9, + 9, + 9, + 4, + 9, + 4, + 9, + 4, + 9, + 8, + 9, + 9, + 4, + 9, + 9, + 9, + 9, + 9, + 9, + 4, + 9, + 4, + 9, + 4, + 9, + 8, + 9, + 9, + 4, + 9, + 9, + 9, + 9, + 9, + 9, + 4, + 9, + 4, + 9, + 4, + 9, + 9, + 9, + 9, + 4, + 9, + 9, + 9, + 9, + 9, + 9, + 4, + 9, + 4, + 9, + 4, + 9, + 9, + 9, + 9, + 4, + 9, + 9, + 9, + 9, + 9, + 9, + 4, + 9, + 4, + 9, + 4, + 9, + 9, + 9, + 9, + 4, + 9, + 9, + 9, + 9, + 9, + 9, + 4, + 9, + 4, + 9, + 4, + 9, + 9, + 9, + 9, + 4, + 9, + 9, + 9, + 9, + 9, + 9, + 4, + 9, + 4, + 9, + 4, + 9, + 9, + 9, + 9, + 4, + 9, + 9, + 9, + 9, + 9, + 9, + 4, + 9, + 4, + 9, + 4, + 9, + 9, + 9, + 9, + 4, + 9, + 9, + 9, + 9, + 9, + 9, + 4, + 9, + 4, + 9, + 4, + 9, + 9, + 9, + 9, + 4, + 9, + 9, + 9, + 9, + 9, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 7, + 7, + 7, + 7, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 7, + 7, + 8, + 8, + 8, + 8, + 8, + 8, + 9, + 9, + 9, + 9, + 9, + 9, + 7, + 7, + 8, + 8, + 8, + 8, + 9, + 9, + 9, + 9, + 9, + 9, + 8, + 8, + 8, + 9, + 8, + 8, + 9, + 9, + 9, + 9, + 8, + 9, + 7, + 7, + 8, + 9, + 8, + 8, + 9, + 9, + 9, + 9, + 8, + 9, + 8, + 8, + 8, + 8, + 8, + 8, + 8, + 8, + 8, + 8, + 9, + 7, + 7, + 7, + 8, + 8, + 8, + 8, + 8, + 8, + 8, + 8, + 9, + 7, + 8, + 8, + 9, + 9, + 9, + 9, + 8, + 8, + 8, + 8, + 7, + 7, + 7, + 7, + 9, + 8, + 9, + 8, + 8, + 8, + 8, + 8, + 7, + 7, + 7, + 7, + 9, + 8, + 9, + 8, + 8, + 8, + 8, + 8, + 7, + 7, + 7, + 7, + 8, + 8, + 8, + 8, + 8, + 8, + 8, + 8, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 8, + 8, + 8, + 5, + 8, + 5, + 5, + 5, + 8, + 8, + 8, + 4, + 8, + 4, + 4, + 4, + 8, + 8, + 8, + 4, + 8, + 4, + 4, + 4, + 8, + 8, + 8, + 4, + 8, + 4, + 4, + 4, + 8, + 8, + 8, + 4, + 8, + 4, + 4, + 4, + 8, + 8, + 8, + 4, + 8, + 4, + 4, + 4, + 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 + ] + }, + { + "stage": 0, + "replica": 5, + "widths": [ + 9, + 4, + 9, + 4, + 9, + 4, + 9, + 9, + 9, + 9, + 4, + 9, + 9, + 9, + 9, + 9, + 9, + 4, + 9, + 4, + 9, + 4, + 9, + 9, + 9, + 9, + 4, + 9, + 9, + 9, + 9, + 9, + 9, + 4, + 9, + 4, + 9, + 4, + 9, + 9, + 9, + 9, + 4, + 9, + 9, + 9, + 9, + 9, + 9, + 4, + 9, + 4, + 9, + 4, + 9, + 9, + 9, + 9, + 4, + 9, + 9, + 9, + 9, + 9, + 9, + 4, + 9, + 4, + 9, + 4, + 9, + 9, + 9, + 9, + 4, + 9, + 9, + 9, + 9, + 9, + 9, + 4, + 9, + 4, + 9, + 4, + 9, + 8, + 9, + 9, + 4, + 9, + 9, + 9, + 9, + 9, + 9, + 4, + 9, + 4, + 9, + 4, + 9, + 8, + 9, + 9, + 4, + 9, + 9, + 9, + 9, + 9, + 9, + 4, + 9, + 4, + 9, + 4, + 9, + 9, + 9, + 9, + 4, + 9, + 9, + 9, + 9, + 9, + 9, + 4, + 9, + 4, + 9, + 4, + 9, + 9, + 9, + 9, + 4, + 9, + 9, + 9, + 9, + 9, + 9, + 4, + 9, + 4, + 9, + 4, + 9, + 9, + 9, + 9, + 4, + 9, + 9, + 9, + 9, + 9, + 9, + 4, + 9, + 4, + 9, + 4, + 9, + 9, + 9, + 9, + 4, + 9, + 9, + 9, + 9, + 9, + 9, + 4, + 9, + 4, + 9, + 4, + 9, + 9, + 9, + 9, + 4, + 9, + 9, + 9, + 9, + 9, + 9, + 4, + 9, + 4, + 9, + 4, + 9, + 9, + 9, + 9, + 4, + 9, + 9, + 9, + 9, + 9, + 9, + 4, + 9, + 4, + 9, + 4, + 9, + 9, + 9, + 9, + 4, + 9, + 9, + 9, + 9, + 9, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 7, + 7, + 7, + 7, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 7, + 7, + 8, + 8, + 8, + 8, + 8, + 8, + 9, + 9, + 9, + 9, + 9, + 9, + 7, + 7, + 8, + 8, + 8, + 8, + 9, + 9, + 9, + 9, + 9, + 9, + 8, + 8, + 8, + 9, + 8, + 8, + 9, + 9, + 9, + 9, + 8, + 9, + 7, + 7, + 8, + 9, + 8, + 8, + 9, + 9, + 9, + 9, + 8, + 9, + 8, + 8, + 8, + 8, + 8, + 8, + 8, + 8, + 8, + 8, + 9, + 7, + 7, + 7, + 8, + 8, + 8, + 8, + 8, + 8, + 8, + 8, + 9, + 7, + 8, + 8, + 9, + 9, + 9, + 9, + 8, + 8, + 8, + 8, + 7, + 7, + 7, + 7, + 9, + 8, + 9, + 8, + 8, + 8, + 8, + 8, + 7, + 7, + 7, + 7, + 9, + 8, + 9, + 8, + 8, + 8, + 8, + 8, + 7, + 7, + 7, + 7, + 8, + 8, + 8, + 8, + 8, + 8, + 8, + 8, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 8, + 8, + 8, + 5, + 8, + 5, + 5, + 5, + 8, + 8, + 8, + 4, + 8, + 4, + 4, + 4, + 8, + 8, + 8, + 4, + 8, + 4, + 4, + 4, + 8, + 8, + 8, + 4, + 8, + 4, + 4, + 4, + 8, + 8, + 8, + 4, + 8, + 4, + 4, + 4, + 8, + 8, + 8, + 4, + 8, + 4, + 4, + 4, + 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 + ] + }, + { + "stage": 1, + "replica": 4, + "widths": [ + 9, + 4, + 9, + 4, + 9, + 4, + 9, + 9, + 9, + 9, + 4, + 9, + 9, + 9, + 9, + 9, + 9, + 4, + 9, + 4, + 9, + 4, + 9, + 9, + 9, + 9, + 4, + 9, + 9, + 9, + 9, + 9, + 9, + 4, + 9, + 4, + 9, + 4, + 9, + 9, + 9, + 9, + 4, + 9, + 9, + 9, + 9, + 9, + 9, + 4, + 9, + 4, + 9, + 4, + 9, + 9, + 9, + 9, + 4, + 9, + 9, + 9, + 9, + 9, + 9, + 4, + 9, + 4, + 9, + 4, + 9, + 9, + 9, + 9, + 4, + 9, + 9, + 9, + 9, + 9, + 9, + 4, + 9, + 4, + 9, + 4, + 9, + 8, + 9, + 9, + 4, + 9, + 9, + 9, + 9, + 9, + 9, + 4, + 9, + 4, + 9, + 4, + 9, + 8, + 9, + 9, + 4, + 9, + 9, + 9, + 9, + 9, + 9, + 4, + 9, + 4, + 9, + 4, + 9, + 9, + 9, + 9, + 4, + 9, + 9, + 9, + 9, + 9, + 9, + 4, + 9, + 4, + 9, + 4, + 9, + 9, + 9, + 9, + 4, + 9, + 9, + 9, + 9, + 9, + 9, + 4, + 9, + 4, + 9, + 4, + 9, + 9, + 9, + 9, + 4, + 9, + 9, + 9, + 9, + 9, + 9, + 4, + 9, + 4, + 9, + 4, + 9, + 9, + 9, + 9, + 4, + 9, + 9, + 9, + 9, + 9, + 9, + 4, + 9, + 4, + 9, + 4, + 9, + 9, + 9, + 9, + 4, + 9, + 9, + 9, + 9, + 9, + 9, + 4, + 9, + 4, + 9, + 4, + 9, + 9, + 9, + 9, + 4, + 9, + 9, + 9, + 9, + 9, + 9, + 4, + 9, + 4, + 9, + 4, + 9, + 9, + 9, + 9, + 4, + 9, + 9, + 9, + 9, + 9, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 7, + 7, + 7, + 7, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 7, + 7, + 8, + 8, + 8, + 8, + 8, + 8, + 9, + 9, + 9, + 9, + 9, + 9, + 7, + 7, + 8, + 8, + 8, + 8, + 9, + 9, + 9, + 9, + 9, + 9, + 8, + 8, + 8, + 9, + 8, + 8, + 9, + 9, + 9, + 9, + 8, + 9, + 7, + 7, + 8, + 9, + 8, + 8, + 9, + 9, + 9, + 9, + 8, + 9, + 8, + 8, + 8, + 8, + 8, + 8, + 8, + 8, + 8, + 8, + 9, + 7, + 7, + 7, + 8, + 8, + 8, + 8, + 8, + 8, + 8, + 8, + 9, + 7, + 8, + 8, + 9, + 9, + 9, + 9, + 8, + 8, + 8, + 8, + 7, + 7, + 7, + 7, + 9, + 8, + 9, + 8, + 8, + 8, + 8, + 8, + 7, + 7, + 7, + 7, + 9, + 8, + 9, + 8, + 8, + 8, + 8, + 8, + 7, + 7, + 7, + 7, + 8, + 8, + 8, + 8, + 8, + 8, + 8, + 8, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 8, + 8, + 8, + 5, + 8, + 5, + 5, + 5, + 8, + 8, + 8, + 4, + 8, + 4, + 4, + 4, + 8, + 8, + 8, + 4, + 8, + 4, + 4, + 4, + 8, + 8, + 8, + 4, + 8, + 4, + 4, + 4, + 8, + 8, + 8, + 4, + 8, + 4, + 4, + 4, + 8, + 8, + 8, + 4, + 8, + 4, + 4, + 4, + 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 + ] + }, + { + "stage": 2, + "replica": 3, + "widths": [ + 9, + 4, + 9, + 4, + 9, + 4, + 9, + 9, + 9, + 9, + 4, + 9, + 9, + 9, + 9, + 9, + 9, + 4, + 9, + 4, + 9, + 4, + 9, + 9, + 9, + 9, + 4, + 9, + 9, + 9, + 9, + 9, + 9, + 4, + 9, + 4, + 9, + 4, + 9, + 9, + 9, + 9, + 4, + 9, + 9, + 9, + 9, + 9, + 9, + 4, + 9, + 4, + 9, + 4, + 9, + 9, + 9, + 9, + 4, + 9, + 9, + 9, + 9, + 9, + 9, + 4, + 9, + 4, + 9, + 4, + 9, + 9, + 9, + 9, + 4, + 9, + 9, + 9, + 9, + 9, + 9, + 4, + 9, + 4, + 9, + 4, + 9, + 8, + 9, + 9, + 4, + 9, + 9, + 9, + 9, + 9, + 9, + 4, + 9, + 4, + 9, + 4, + 9, + 8, + 9, + 9, + 4, + 9, + 9, + 9, + 9, + 9, + 9, + 4, + 9, + 4, + 9, + 4, + 9, + 9, + 9, + 9, + 4, + 9, + 9, + 9, + 9, + 9, + 9, + 4, + 9, + 4, + 9, + 4, + 9, + 9, + 9, + 9, + 4, + 9, + 9, + 9, + 9, + 9, + 9, + 4, + 9, + 4, + 9, + 4, + 9, + 9, + 9, + 9, + 4, + 9, + 9, + 9, + 9, + 9, + 9, + 4, + 9, + 4, + 9, + 4, + 9, + 9, + 9, + 9, + 4, + 9, + 9, + 9, + 9, + 9, + 9, + 4, + 9, + 4, + 9, + 4, + 9, + 9, + 9, + 9, + 4, + 9, + 9, + 9, + 9, + 9, + 9, + 4, + 9, + 4, + 9, + 4, + 9, + 9, + 9, + 9, + 4, + 9, + 9, + 9, + 9, + 9, + 9, + 4, + 9, + 4, + 9, + 4, + 9, + 9, + 9, + 9, + 4, + 9, + 9, + 9, + 9, + 9, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 7, + 7, + 7, + 7, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 7, + 7, + 8, + 8, + 8, + 8, + 8, + 8, + 9, + 9, + 9, + 9, + 9, + 9, + 7, + 7, + 8, + 8, + 8, + 8, + 9, + 9, + 9, + 9, + 9, + 9, + 8, + 8, + 8, + 9, + 8, + 8, + 9, + 9, + 9, + 9, + 8, + 9, + 7, + 7, + 8, + 9, + 8, + 8, + 9, + 9, + 9, + 9, + 8, + 9, + 8, + 8, + 8, + 8, + 8, + 8, + 8, + 8, + 8, + 8, + 9, + 7, + 7, + 7, + 8, + 8, + 8, + 8, + 8, + 8, + 8, + 8, + 9, + 7, + 8, + 8, + 9, + 9, + 9, + 9, + 8, + 8, + 8, + 8, + 7, + 7, + 7, + 7, + 9, + 8, + 9, + 8, + 8, + 8, + 8, + 8, + 7, + 7, + 7, + 7, + 9, + 8, + 9, + 8, + 8, + 8, + 8, + 8, + 7, + 7, + 7, + 7, + 8, + 8, + 8, + 8, + 8, + 8, + 8, + 8, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 8, + 8, + 8, + 5, + 8, + 5, + 5, + 5, + 8, + 8, + 8, + 4, + 8, + 4, + 4, + 4, + 8, + 8, + 8, + 4, + 8, + 4, + 4, + 4, + 8, + 8, + 8, + 4, + 8, + 4, + 4, + 4, + 8, + 8, + 8, + 4, + 8, + 4, + 4, + 4, + 8, + 8, + 8, + 4, + 8, + 4, + 4, + 4, + 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 + ] + }, + { + "stage": 3, + "replica": 2, + "widths": [ + 9, + 4, + 9, + 4, + 9, + 4, + 9, + 9, + 9, + 9, + 4, + 9, + 9, + 9, + 9, + 9, + 9, + 4, + 9, + 4, + 9, + 4, + 9, + 9, + 9, + 9, + 4, + 9, + 9, + 9, + 9, + 9, + 9, + 4, + 9, + 4, + 9, + 4, + 9, + 9, + 9, + 9, + 4, + 9, + 9, + 9, + 9, + 9, + 9, + 4, + 9, + 4, + 9, + 4, + 9, + 9, + 9, + 9, + 4, + 9, + 9, + 9, + 9, + 9, + 9, + 4, + 9, + 4, + 9, + 4, + 9, + 9, + 9, + 9, + 4, + 9, + 9, + 9, + 9, + 9, + 9, + 4, + 9, + 4, + 9, + 4, + 9, + 8, + 9, + 9, + 4, + 9, + 9, + 9, + 9, + 9, + 9, + 4, + 9, + 4, + 9, + 4, + 9, + 8, + 9, + 9, + 4, + 9, + 9, + 9, + 9, + 9, + 9, + 4, + 9, + 4, + 9, + 4, + 9, + 9, + 9, + 9, + 4, + 9, + 9, + 9, + 9, + 9, + 9, + 4, + 9, + 4, + 9, + 4, + 9, + 9, + 9, + 9, + 4, + 9, + 9, + 9, + 9, + 9, + 9, + 4, + 9, + 4, + 9, + 4, + 9, + 9, + 9, + 9, + 4, + 9, + 9, + 9, + 9, + 9, + 9, + 4, + 9, + 4, + 9, + 4, + 9, + 9, + 9, + 9, + 4, + 9, + 9, + 9, + 9, + 9, + 9, + 4, + 9, + 4, + 9, + 4, + 9, + 9, + 9, + 9, + 4, + 9, + 9, + 9, + 9, + 9, + 9, + 4, + 9, + 4, + 9, + 4, + 9, + 9, + 9, + 9, + 4, + 9, + 9, + 9, + 9, + 9, + 9, + 4, + 9, + 4, + 9, + 4, + 9, + 9, + 9, + 9, + 4, + 9, + 9, + 9, + 9, + 9, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 7, + 7, + 7, + 7, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 7, + 7, + 8, + 8, + 8, + 8, + 8, + 8, + 9, + 9, + 9, + 9, + 9, + 9, + 7, + 7, + 8, + 8, + 8, + 8, + 9, + 9, + 9, + 9, + 9, + 9, + 8, + 8, + 8, + 9, + 8, + 8, + 9, + 9, + 9, + 9, + 8, + 9, + 7, + 7, + 8, + 9, + 8, + 8, + 9, + 9, + 9, + 9, + 8, + 9, + 8, + 8, + 8, + 8, + 8, + 8, + 8, + 8, + 8, + 8, + 9, + 7, + 7, + 7, + 8, + 8, + 8, + 8, + 8, + 8, + 8, + 8, + 9, + 7, + 8, + 8, + 9, + 9, + 9, + 9, + 8, + 8, + 8, + 8, + 7, + 7, + 7, + 7, + 9, + 8, + 9, + 8, + 8, + 8, + 8, + 8, + 7, + 7, + 7, + 7, + 9, + 8, + 9, + 8, + 8, + 8, + 8, + 8, + 7, + 7, + 7, + 7, + 8, + 8, + 8, + 8, + 8, + 8, + 8, + 8, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 8, + 8, + 8, + 5, + 8, + 5, + 5, + 5, + 8, + 8, + 8, + 4, + 8, + 4, + 4, + 4, + 8, + 8, + 8, + 4, + 8, + 4, + 4, + 4, + 8, + 8, + 8, + 4, + 8, + 4, + 4, + 4, + 8, + 8, + 8, + 4, + 8, + 4, + 4, + 4, + 8, + 8, + 8, + 4, + 8, + 4, + 4, + 4, + 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 + ] + }, + { + "stage": 4, + "replica": 1, + "widths": [ + 9, + 4, + 9, + 4, + 9, + 4, + 9, + 9, + 9, + 9, + 4, + 9, + 9, + 9, + 9, + 9, + 9, + 4, + 9, + 4, + 9, + 4, + 9, + 9, + 9, + 9, + 4, + 9, + 9, + 9, + 9, + 9, + 9, + 4, + 9, + 4, + 9, + 4, + 9, + 9, + 9, + 9, + 4, + 9, + 9, + 9, + 9, + 9, + 9, + 4, + 9, + 4, + 9, + 4, + 9, + 9, + 9, + 9, + 4, + 9, + 9, + 9, + 9, + 9, + 9, + 4, + 9, + 4, + 9, + 4, + 9, + 9, + 9, + 9, + 4, + 9, + 9, + 9, + 9, + 9, + 9, + 4, + 9, + 4, + 9, + 4, + 9, + 8, + 9, + 9, + 4, + 9, + 9, + 9, + 9, + 9, + 9, + 4, + 9, + 4, + 9, + 4, + 9, + 8, + 9, + 9, + 4, + 9, + 9, + 9, + 9, + 9, + 9, + 4, + 9, + 4, + 9, + 4, + 9, + 9, + 9, + 9, + 4, + 9, + 9, + 9, + 9, + 9, + 9, + 4, + 9, + 4, + 9, + 4, + 9, + 9, + 9, + 9, + 4, + 9, + 9, + 9, + 9, + 9, + 9, + 4, + 9, + 4, + 9, + 4, + 9, + 9, + 9, + 9, + 4, + 9, + 9, + 9, + 9, + 9, + 9, + 4, + 9, + 4, + 9, + 4, + 9, + 9, + 9, + 9, + 4, + 9, + 9, + 9, + 9, + 9, + 9, + 4, + 9, + 4, + 9, + 4, + 9, + 9, + 9, + 9, + 4, + 9, + 9, + 9, + 9, + 9, + 9, + 4, + 9, + 4, + 9, + 4, + 9, + 9, + 9, + 9, + 4, + 9, + 9, + 9, + 9, + 9, + 9, + 4, + 9, + 4, + 9, + 4, + 9, + 9, + 9, + 9, + 4, + 9, + 9, + 9, + 9, + 9, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 7, + 7, + 7, + 7, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 7, + 7, + 8, + 8, + 8, + 8, + 8, + 8, + 9, + 9, + 9, + 9, + 9, + 9, + 7, + 7, + 8, + 8, + 8, + 8, + 9, + 9, + 9, + 9, + 9, + 9, + 8, + 8, + 8, + 9, + 8, + 8, + 9, + 9, + 9, + 9, + 8, + 9, + 7, + 7, + 8, + 9, + 8, + 8, + 9, + 9, + 9, + 9, + 8, + 9, + 8, + 8, + 8, + 8, + 8, + 8, + 8, + 8, + 8, + 8, + 9, + 7, + 7, + 7, + 8, + 8, + 8, + 8, + 8, + 8, + 8, + 8, + 9, + 7, + 8, + 8, + 9, + 9, + 9, + 9, + 8, + 8, + 8, + 8, + 7, + 7, + 7, + 7, + 9, + 8, + 9, + 8, + 8, + 8, + 8, + 8, + 7, + 7, + 7, + 7, + 9, + 8, + 9, + 8, + 8, + 8, + 8, + 8, + 7, + 7, + 7, + 7, + 8, + 8, + 8, + 8, + 8, + 8, + 8, + 8, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 8, + 8, + 8, + 5, + 8, + 5, + 5, + 5, + 8, + 8, + 8, + 4, + 8, + 4, + 4, + 4, + 8, + 8, + 8, + 4, + 8, + 4, + 4, + 4, + 8, + 8, + 8, + 4, + 8, + 4, + 4, + 4, + 8, + 8, + 8, + 4, + 8, + 4, + 4, + 4, + 8, + 8, + 8, + 4, + 8, + 4, + 4, + 4, + 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 + ] + }, + { + "stage": 5, + "replica": 0, + "widths": [ + 9, + 4, + 9, + 4, + 9, + 4, + 9, + 9, + 9, + 9, + 4, + 9, + 9, + 9, + 9, + 9, + 9, + 4, + 9, + 4, + 9, + 4, + 9, + 9, + 9, + 9, + 4, + 9, + 9, + 9, + 9, + 9, + 9, + 4, + 9, + 4, + 9, + 4, + 9, + 9, + 9, + 9, + 4, + 9, + 9, + 9, + 9, + 9, + 9, + 4, + 9, + 4, + 9, + 4, + 9, + 9, + 9, + 9, + 4, + 9, + 9, + 9, + 9, + 9, + 9, + 4, + 9, + 4, + 9, + 4, + 9, + 9, + 9, + 9, + 4, + 9, + 9, + 9, + 9, + 9, + 9, + 4, + 9, + 4, + 9, + 4, + 9, + 8, + 9, + 9, + 4, + 9, + 9, + 9, + 9, + 9, + 9, + 4, + 9, + 4, + 9, + 4, + 9, + 8, + 9, + 9, + 4, + 9, + 9, + 9, + 9, + 9, + 9, + 4, + 9, + 4, + 9, + 4, + 9, + 9, + 9, + 9, + 4, + 9, + 9, + 9, + 9, + 9, + 9, + 4, + 9, + 4, + 9, + 4, + 9, + 9, + 9, + 9, + 4, + 9, + 9, + 9, + 9, + 9, + 9, + 4, + 9, + 4, + 9, + 4, + 9, + 9, + 9, + 9, + 4, + 9, + 9, + 9, + 9, + 9, + 9, + 4, + 9, + 4, + 9, + 4, + 9, + 9, + 9, + 9, + 4, + 9, + 9, + 9, + 9, + 9, + 9, + 4, + 9, + 4, + 9, + 4, + 9, + 9, + 9, + 9, + 4, + 9, + 9, + 9, + 9, + 9, + 9, + 4, + 9, + 4, + 9, + 4, + 9, + 9, + 9, + 9, + 4, + 9, + 9, + 9, + 9, + 9, + 9, + 4, + 9, + 4, + 9, + 4, + 9, + 9, + 9, + 9, + 4, + 9, + 9, + 9, + 9, + 9, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 7, + 7, + 7, + 7, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 7, + 7, + 8, + 8, + 8, + 8, + 8, + 8, + 9, + 9, + 9, + 9, + 9, + 9, + 7, + 7, + 8, + 8, + 8, + 8, + 9, + 9, + 9, + 9, + 9, + 9, + 8, + 8, + 8, + 9, + 8, + 8, + 9, + 9, + 9, + 9, + 8, + 9, + 7, + 7, + 8, + 9, + 8, + 8, + 9, + 9, + 9, + 9, + 8, + 9, + 8, + 8, + 8, + 8, + 8, + 8, + 8, + 8, + 8, + 8, + 9, + 7, + 7, + 7, + 8, + 8, + 8, + 8, + 8, + 8, + 8, + 8, + 9, + 7, + 8, + 8, + 9, + 9, + 9, + 9, + 8, + 8, + 8, + 8, + 7, + 7, + 7, + 7, + 9, + 8, + 9, + 8, + 8, + 8, + 8, + 8, + 7, + 7, + 7, + 7, + 9, + 8, + 9, + 8, + 8, + 8, + 8, + 8, + 7, + 7, + 7, + 7, + 8, + 8, + 8, + 8, + 8, + 8, + 8, + 8, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 8, + 8, + 8, + 5, + 8, + 5, + 5, + 5, + 8, + 8, + 8, + 4, + 8, + 4, + 4, + 4, + 8, + 8, + 8, + 4, + 8, + 4, + 4, + 4, + 8, + 8, + 8, + 4, + 8, + 4, + 4, + 4, + 8, + 8, + 8, + 4, + 8, + 4, + 4, + 4, + 8, + 8, + 8, + 4, + 8, + 4, + 4, + 4, + 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 + ] + }, + { + "stage": 0, + "replica": 6, + "widths": [ + 9, + 4, + 9, + 4, + 9, + 4, + 9, + 9, + 9, + 9, + 4, + 9, + 9, + 9, + 9, + 9, + 9, + 4, + 9, + 4, + 9, + 4, + 9, + 9, + 9, + 9, + 4, + 9, + 9, + 9, + 9, + 9, + 9, + 4, + 9, + 4, + 9, + 4, + 9, + 9, + 9, + 9, + 4, + 9, + 9, + 9, + 9, + 9, + 9, + 4, + 9, + 4, + 9, + 4, + 9, + 9, + 9, + 9, + 4, + 9, + 9, + 9, + 9, + 9, + 9, + 4, + 9, + 4, + 9, + 4, + 9, + 9, + 9, + 9, + 4, + 9, + 9, + 9, + 9, + 9, + 9, + 4, + 9, + 4, + 9, + 4, + 9, + 8, + 9, + 9, + 4, + 9, + 9, + 9, + 9, + 9, + 9, + 4, + 9, + 4, + 9, + 4, + 9, + 8, + 9, + 9, + 4, + 9, + 9, + 9, + 9, + 9, + 9, + 4, + 9, + 4, + 9, + 4, + 9, + 9, + 9, + 9, + 4, + 9, + 9, + 9, + 9, + 9, + 9, + 4, + 9, + 4, + 9, + 4, + 9, + 9, + 9, + 9, + 4, + 9, + 9, + 9, + 9, + 9, + 9, + 4, + 9, + 4, + 9, + 4, + 9, + 9, + 9, + 9, + 4, + 9, + 9, + 9, + 9, + 9, + 9, + 4, + 9, + 4, + 9, + 4, + 9, + 9, + 9, + 9, + 4, + 9, + 9, + 9, + 9, + 9, + 9, + 4, + 9, + 4, + 9, + 4, + 9, + 9, + 9, + 9, + 4, + 9, + 9, + 9, + 9, + 9, + 9, + 4, + 9, + 4, + 9, + 4, + 9, + 9, + 9, + 9, + 4, + 9, + 9, + 9, + 9, + 9, + 9, + 4, + 9, + 4, + 9, + 4, + 9, + 9, + 9, + 9, + 4, + 9, + 9, + 9, + 9, + 9, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 7, + 7, + 7, + 7, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 7, + 7, + 8, + 8, + 8, + 8, + 8, + 8, + 9, + 9, + 9, + 9, + 9, + 9, + 7, + 7, + 8, + 8, + 8, + 8, + 9, + 9, + 9, + 9, + 9, + 9, + 8, + 8, + 8, + 9, + 8, + 8, + 9, + 9, + 9, + 9, + 8, + 9, + 7, + 7, + 8, + 9, + 8, + 8, + 9, + 9, + 9, + 9, + 8, + 9, + 8, + 8, + 8, + 8, + 8, + 8, + 8, + 8, + 8, + 8, + 9, + 7, + 7, + 7, + 8, + 8, + 8, + 8, + 8, + 8, + 8, + 8, + 9, + 7, + 8, + 8, + 9, + 9, + 9, + 9, + 8, + 8, + 8, + 8, + 7, + 7, + 7, + 7, + 9, + 8, + 9, + 8, + 8, + 8, + 8, + 8, + 7, + 7, + 7, + 7, + 9, + 8, + 9, + 8, + 8, + 8, + 8, + 8, + 7, + 7, + 7, + 7, + 8, + 8, + 8, + 8, + 8, + 8, + 8, + 8, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 8, + 8, + 8, + 5, + 8, + 5, + 5, + 5, + 8, + 8, + 8, + 4, + 8, + 4, + 4, + 4, + 8, + 8, + 8, + 4, + 8, + 4, + 4, + 4, + 8, + 8, + 8, + 4, + 8, + 4, + 4, + 4, + 8, + 8, + 8, + 4, + 8, + 4, + 4, + 4, + 8, + 8, + 8, + 4, + 8, + 4, + 4, + 4, + 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 + ] + }, + { + "stage": 1, + "replica": 5, + "widths": [ + 9, + 4, + 9, + 4, + 9, + 4, + 9, + 9, + 9, + 9, + 4, + 9, + 9, + 9, + 9, + 9, + 9, + 4, + 9, + 4, + 9, + 4, + 9, + 9, + 9, + 9, + 4, + 9, + 9, + 9, + 9, + 9, + 9, + 4, + 9, + 4, + 9, + 4, + 9, + 9, + 9, + 9, + 4, + 9, + 9, + 9, + 9, + 9, + 9, + 4, + 9, + 4, + 9, + 4, + 9, + 9, + 9, + 9, + 4, + 9, + 9, + 9, + 9, + 9, + 9, + 4, + 9, + 4, + 9, + 4, + 9, + 9, + 9, + 9, + 4, + 9, + 9, + 9, + 9, + 9, + 9, + 4, + 9, + 4, + 9, + 4, + 9, + 8, + 9, + 9, + 4, + 9, + 9, + 9, + 9, + 9, + 9, + 4, + 9, + 4, + 9, + 4, + 9, + 8, + 9, + 9, + 4, + 9, + 9, + 9, + 9, + 9, + 9, + 4, + 9, + 4, + 9, + 4, + 9, + 9, + 9, + 9, + 4, + 9, + 9, + 9, + 9, + 9, + 9, + 4, + 9, + 4, + 9, + 4, + 9, + 9, + 9, + 9, + 4, + 9, + 9, + 9, + 9, + 9, + 9, + 4, + 9, + 4, + 9, + 4, + 9, + 9, + 9, + 9, + 4, + 9, + 9, + 9, + 9, + 9, + 9, + 4, + 9, + 4, + 9, + 4, + 9, + 9, + 9, + 9, + 4, + 9, + 9, + 9, + 9, + 9, + 9, + 4, + 9, + 4, + 9, + 4, + 9, + 9, + 9, + 9, + 4, + 9, + 9, + 9, + 9, + 9, + 9, + 4, + 9, + 4, + 9, + 4, + 9, + 9, + 9, + 9, + 4, + 9, + 9, + 9, + 9, + 9, + 9, + 4, + 9, + 4, + 9, + 4, + 9, + 9, + 9, + 9, + 4, + 9, + 9, + 9, + 9, + 9, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 7, + 7, + 7, + 7, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 7, + 7, + 8, + 8, + 8, + 8, + 8, + 8, + 9, + 9, + 9, + 9, + 9, + 9, + 7, + 7, + 8, + 8, + 8, + 8, + 9, + 9, + 9, + 9, + 9, + 9, + 8, + 8, + 8, + 9, + 8, + 8, + 9, + 9, + 9, + 9, + 8, + 9, + 7, + 7, + 8, + 9, + 8, + 8, + 9, + 9, + 9, + 9, + 8, + 9, + 8, + 8, + 8, + 8, + 8, + 8, + 8, + 8, + 8, + 8, + 9, + 7, + 7, + 7, + 8, + 8, + 8, + 8, + 8, + 8, + 8, + 8, + 9, + 7, + 8, + 8, + 9, + 9, + 9, + 9, + 8, + 8, + 8, + 8, + 7, + 7, + 7, + 7, + 9, + 8, + 9, + 8, + 8, + 8, + 8, + 8, + 7, + 7, + 7, + 7, + 9, + 8, + 9, + 8, + 8, + 8, + 8, + 8, + 7, + 7, + 7, + 7, + 8, + 8, + 8, + 8, + 8, + 8, + 8, + 8, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 8, + 8, + 8, + 5, + 8, + 5, + 5, + 5, + 8, + 8, + 8, + 4, + 8, + 4, + 4, + 4, + 8, + 8, + 8, + 4, + 8, + 4, + 4, + 4, + 8, + 8, + 8, + 4, + 8, + 4, + 4, + 4, + 8, + 8, + 8, + 4, + 8, + 4, + 4, + 4, + 8, + 8, + 8, + 4, + 8, + 4, + 4, + 4, + 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 + ] + }, + { + "stage": 2, + "replica": 4, + "widths": [ + 9, + 4, + 9, + 4, + 9, + 4, + 9, + 9, + 9, + 9, + 4, + 9, + 9, + 9, + 9, + 9, + 9, + 4, + 9, + 4, + 9, + 4, + 9, + 9, + 9, + 9, + 4, + 9, + 9, + 9, + 9, + 9, + 9, + 4, + 9, + 4, + 9, + 4, + 9, + 9, + 9, + 9, + 4, + 9, + 9, + 9, + 9, + 9, + 9, + 4, + 9, + 4, + 9, + 4, + 9, + 9, + 9, + 9, + 4, + 9, + 9, + 9, + 9, + 9, + 9, + 4, + 9, + 4, + 9, + 4, + 9, + 9, + 9, + 9, + 4, + 9, + 9, + 9, + 9, + 9, + 9, + 4, + 9, + 4, + 9, + 4, + 9, + 8, + 9, + 9, + 4, + 9, + 9, + 9, + 9, + 9, + 9, + 4, + 9, + 4, + 9, + 4, + 9, + 8, + 9, + 9, + 4, + 9, + 9, + 9, + 9, + 9, + 9, + 4, + 9, + 4, + 9, + 4, + 9, + 9, + 9, + 9, + 4, + 9, + 9, + 9, + 9, + 9, + 9, + 4, + 9, + 4, + 9, + 4, + 9, + 9, + 9, + 9, + 4, + 9, + 9, + 9, + 9, + 9, + 9, + 4, + 9, + 4, + 9, + 4, + 9, + 9, + 9, + 9, + 4, + 9, + 9, + 9, + 9, + 9, + 9, + 4, + 9, + 4, + 9, + 4, + 9, + 9, + 9, + 9, + 4, + 9, + 9, + 9, + 9, + 9, + 9, + 4, + 9, + 4, + 9, + 4, + 9, + 9, + 9, + 9, + 4, + 9, + 9, + 9, + 9, + 9, + 9, + 4, + 9, + 4, + 9, + 4, + 9, + 9, + 9, + 9, + 4, + 9, + 9, + 9, + 9, + 9, + 9, + 4, + 9, + 4, + 9, + 4, + 9, + 9, + 9, + 9, + 4, + 9, + 9, + 9, + 9, + 9, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 7, + 7, + 7, + 7, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 7, + 7, + 8, + 8, + 8, + 8, + 8, + 8, + 9, + 9, + 9, + 9, + 9, + 9, + 7, + 7, + 8, + 8, + 8, + 8, + 9, + 9, + 9, + 9, + 9, + 9, + 8, + 8, + 8, + 9, + 8, + 8, + 9, + 9, + 9, + 9, + 8, + 9, + 7, + 7, + 8, + 9, + 8, + 8, + 9, + 9, + 9, + 9, + 8, + 9, + 8, + 8, + 8, + 8, + 8, + 8, + 8, + 8, + 8, + 8, + 9, + 7, + 7, + 7, + 8, + 8, + 8, + 8, + 8, + 8, + 8, + 8, + 9, + 7, + 8, + 8, + 9, + 9, + 9, + 9, + 8, + 8, + 8, + 8, + 7, + 7, + 7, + 7, + 9, + 8, + 9, + 8, + 8, + 8, + 8, + 8, + 7, + 7, + 7, + 7, + 9, + 8, + 9, + 8, + 8, + 8, + 8, + 8, + 7, + 7, + 7, + 7, + 8, + 8, + 8, + 8, + 8, + 8, + 8, + 8, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 8, + 8, + 8, + 5, + 8, + 5, + 5, + 5, + 8, + 8, + 8, + 4, + 8, + 4, + 4, + 4, + 8, + 8, + 8, + 4, + 8, + 4, + 4, + 4, + 8, + 8, + 8, + 4, + 8, + 4, + 4, + 4, + 8, + 8, + 8, + 4, + 8, + 4, + 4, + 4, + 8, + 8, + 8, + 4, + 8, + 4, + 4, + 4, + 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 + ] + }, + { + "stage": 3, + "replica": 3, + "widths": [ + 9, + 4, + 9, + 4, + 9, + 4, + 9, + 9, + 9, + 9, + 4, + 9, + 9, + 9, + 9, + 9, + 9, + 4, + 9, + 4, + 9, + 4, + 9, + 9, + 9, + 9, + 4, + 9, + 9, + 9, + 9, + 9, + 9, + 4, + 9, + 4, + 9, + 4, + 9, + 9, + 9, + 9, + 4, + 9, + 9, + 9, + 9, + 9, + 9, + 4, + 9, + 4, + 9, + 4, + 9, + 9, + 9, + 9, + 4, + 9, + 9, + 9, + 9, + 9, + 9, + 4, + 9, + 4, + 9, + 4, + 9, + 9, + 9, + 9, + 4, + 9, + 9, + 9, + 9, + 9, + 9, + 4, + 9, + 4, + 9, + 4, + 9, + 8, + 9, + 9, + 4, + 9, + 9, + 9, + 9, + 9, + 9, + 4, + 9, + 4, + 9, + 4, + 9, + 8, + 9, + 9, + 4, + 9, + 9, + 9, + 9, + 9, + 9, + 4, + 9, + 4, + 9, + 4, + 9, + 9, + 9, + 9, + 4, + 9, + 9, + 9, + 9, + 9, + 9, + 4, + 9, + 4, + 9, + 4, + 9, + 9, + 9, + 9, + 4, + 9, + 9, + 9, + 9, + 9, + 9, + 4, + 9, + 4, + 9, + 4, + 9, + 9, + 9, + 9, + 4, + 9, + 9, + 9, + 9, + 9, + 9, + 4, + 9, + 4, + 9, + 4, + 9, + 9, + 9, + 9, + 4, + 9, + 9, + 9, + 9, + 9, + 9, + 4, + 9, + 4, + 9, + 4, + 9, + 9, + 9, + 9, + 4, + 9, + 9, + 9, + 9, + 9, + 9, + 4, + 9, + 4, + 9, + 4, + 9, + 9, + 9, + 9, + 4, + 9, + 9, + 9, + 9, + 9, + 9, + 4, + 9, + 4, + 9, + 4, + 9, + 9, + 9, + 9, + 4, + 9, + 9, + 9, + 9, + 9, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 7, + 7, + 7, + 7, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 7, + 7, + 8, + 8, + 8, + 8, + 8, + 8, + 9, + 9, + 9, + 9, + 9, + 9, + 7, + 7, + 8, + 8, + 8, + 8, + 9, + 9, + 9, + 9, + 9, + 9, + 8, + 8, + 8, + 9, + 8, + 8, + 9, + 9, + 9, + 9, + 8, + 9, + 7, + 7, + 8, + 9, + 8, + 8, + 9, + 9, + 9, + 9, + 8, + 9, + 8, + 8, + 8, + 8, + 8, + 8, + 8, + 8, + 8, + 8, + 9, + 7, + 7, + 7, + 8, + 8, + 8, + 8, + 8, + 8, + 8, + 8, + 9, + 7, + 8, + 8, + 9, + 9, + 9, + 9, + 8, + 8, + 8, + 8, + 7, + 7, + 7, + 7, + 9, + 8, + 9, + 8, + 8, + 8, + 8, + 8, + 7, + 7, + 7, + 7, + 9, + 8, + 9, + 8, + 8, + 8, + 8, + 8, + 7, + 7, + 7, + 7, + 8, + 8, + 8, + 8, + 8, + 8, + 8, + 8, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 8, + 8, + 8, + 5, + 8, + 5, + 5, + 5, + 8, + 8, + 8, + 4, + 8, + 4, + 4, + 4, + 8, + 8, + 8, + 4, + 8, + 4, + 4, + 4, + 8, + 8, + 8, + 4, + 8, + 4, + 4, + 4, + 8, + 8, + 8, + 4, + 8, + 4, + 4, + 4, + 8, + 8, + 8, + 4, + 8, + 4, + 4, + 4, + 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 + ] + }, + { + "stage": 4, + "replica": 2, + "widths": [ + 9, + 4, + 9, + 4, + 9, + 4, + 9, + 9, + 9, + 9, + 4, + 9, + 9, + 9, + 9, + 9, + 9, + 4, + 9, + 4, + 9, + 4, + 9, + 9, + 9, + 9, + 4, + 9, + 9, + 9, + 9, + 9, + 9, + 4, + 9, + 4, + 9, + 4, + 9, + 9, + 9, + 9, + 4, + 9, + 9, + 9, + 9, + 9, + 9, + 4, + 9, + 4, + 9, + 4, + 9, + 9, + 9, + 9, + 4, + 9, + 9, + 9, + 9, + 9, + 9, + 4, + 9, + 4, + 9, + 4, + 9, + 9, + 9, + 9, + 4, + 9, + 9, + 9, + 9, + 9, + 9, + 4, + 9, + 4, + 9, + 4, + 9, + 8, + 9, + 9, + 4, + 9, + 9, + 9, + 9, + 9, + 9, + 4, + 9, + 4, + 9, + 4, + 9, + 8, + 9, + 9, + 4, + 9, + 9, + 9, + 9, + 9, + 9, + 4, + 9, + 4, + 9, + 4, + 9, + 9, + 9, + 9, + 4, + 9, + 9, + 9, + 9, + 9, + 9, + 4, + 9, + 4, + 9, + 4, + 9, + 9, + 9, + 9, + 4, + 9, + 9, + 9, + 9, + 9, + 9, + 4, + 9, + 4, + 9, + 4, + 9, + 9, + 9, + 9, + 4, + 9, + 9, + 9, + 9, + 9, + 9, + 4, + 9, + 4, + 9, + 4, + 9, + 9, + 9, + 9, + 4, + 9, + 9, + 9, + 9, + 9, + 9, + 4, + 9, + 4, + 9, + 4, + 9, + 9, + 9, + 9, + 4, + 9, + 9, + 9, + 9, + 9, + 9, + 4, + 9, + 4, + 9, + 4, + 9, + 9, + 9, + 9, + 4, + 9, + 9, + 9, + 9, + 9, + 9, + 4, + 9, + 4, + 9, + 4, + 9, + 9, + 9, + 9, + 4, + 9, + 9, + 9, + 9, + 9, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 7, + 7, + 7, + 7, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 7, + 7, + 8, + 8, + 8, + 8, + 8, + 8, + 9, + 9, + 9, + 9, + 9, + 9, + 7, + 7, + 8, + 8, + 8, + 8, + 9, + 9, + 9, + 9, + 9, + 9, + 8, + 8, + 8, + 9, + 8, + 8, + 9, + 9, + 9, + 9, + 8, + 9, + 7, + 7, + 8, + 9, + 8, + 8, + 9, + 9, + 9, + 9, + 8, + 9, + 8, + 8, + 8, + 8, + 8, + 8, + 8, + 8, + 8, + 8, + 9, + 7, + 7, + 7, + 8, + 8, + 8, + 8, + 8, + 8, + 8, + 8, + 9, + 7, + 8, + 8, + 9, + 9, + 9, + 9, + 8, + 8, + 8, + 8, + 7, + 7, + 7, + 7, + 9, + 8, + 9, + 8, + 8, + 8, + 8, + 8, + 7, + 7, + 7, + 7, + 9, + 8, + 9, + 8, + 8, + 8, + 8, + 8, + 7, + 7, + 7, + 7, + 8, + 8, + 8, + 8, + 8, + 8, + 8, + 8, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 8, + 8, + 8, + 5, + 8, + 5, + 5, + 5, + 8, + 8, + 8, + 4, + 8, + 4, + 4, + 4, + 8, + 8, + 8, + 4, + 8, + 4, + 4, + 4, + 8, + 8, + 8, + 4, + 8, + 4, + 4, + 4, + 8, + 8, + 8, + 4, + 8, + 4, + 4, + 4, + 8, + 8, + 8, + 4, + 8, + 4, + 4, + 4, + 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 + ] + }, + { + "stage": 5, + "replica": 1, + "widths": [ + 9, + 4, + 9, + 4, + 9, + 4, + 9, + 9, + 9, + 9, + 4, + 9, + 9, + 9, + 9, + 9, + 9, + 4, + 9, + 4, + 9, + 4, + 9, + 9, + 9, + 9, + 4, + 9, + 9, + 9, + 9, + 9, + 9, + 4, + 9, + 4, + 9, + 4, + 9, + 9, + 9, + 9, + 4, + 9, + 9, + 9, + 9, + 9, + 9, + 4, + 9, + 4, + 9, + 4, + 9, + 9, + 9, + 9, + 4, + 9, + 9, + 9, + 9, + 9, + 9, + 4, + 9, + 4, + 9, + 4, + 9, + 9, + 9, + 9, + 4, + 9, + 9, + 9, + 9, + 9, + 9, + 4, + 9, + 4, + 9, + 4, + 9, + 8, + 9, + 9, + 4, + 9, + 9, + 9, + 9, + 9, + 9, + 4, + 9, + 4, + 9, + 4, + 9, + 8, + 9, + 9, + 4, + 9, + 9, + 9, + 9, + 9, + 9, + 4, + 9, + 4, + 9, + 4, + 9, + 9, + 9, + 9, + 4, + 9, + 9, + 9, + 9, + 9, + 9, + 4, + 9, + 4, + 9, + 4, + 9, + 9, + 9, + 9, + 4, + 9, + 9, + 9, + 9, + 9, + 9, + 4, + 9, + 4, + 9, + 4, + 9, + 9, + 9, + 9, + 4, + 9, + 9, + 9, + 9, + 9, + 9, + 4, + 9, + 4, + 9, + 4, + 9, + 9, + 9, + 9, + 4, + 9, + 9, + 9, + 9, + 9, + 9, + 4, + 9, + 4, + 9, + 4, + 9, + 9, + 9, + 9, + 4, + 9, + 9, + 9, + 9, + 9, + 9, + 4, + 9, + 4, + 9, + 4, + 9, + 9, + 9, + 9, + 4, + 9, + 9, + 9, + 9, + 9, + 9, + 4, + 9, + 4, + 9, + 4, + 9, + 9, + 9, + 9, + 4, + 9, + 9, + 9, + 9, + 9, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 7, + 7, + 7, + 7, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 7, + 7, + 8, + 8, + 8, + 8, + 8, + 8, + 9, + 9, + 9, + 9, + 9, + 9, + 7, + 7, + 8, + 8, + 8, + 8, + 9, + 9, + 9, + 9, + 9, + 9, + 8, + 8, + 8, + 9, + 8, + 8, + 9, + 9, + 9, + 9, + 8, + 9, + 7, + 7, + 8, + 9, + 8, + 8, + 9, + 9, + 9, + 9, + 8, + 9, + 8, + 8, + 8, + 8, + 8, + 8, + 8, + 8, + 8, + 8, + 9, + 7, + 7, + 7, + 8, + 8, + 8, + 8, + 8, + 8, + 8, + 8, + 9, + 7, + 8, + 8, + 9, + 9, + 9, + 9, + 8, + 8, + 8, + 8, + 7, + 7, + 7, + 7, + 9, + 8, + 9, + 8, + 8, + 8, + 8, + 8, + 7, + 7, + 7, + 7, + 9, + 8, + 9, + 8, + 8, + 8, + 8, + 8, + 7, + 7, + 7, + 7, + 8, + 8, + 8, + 8, + 8, + 8, + 8, + 8, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 8, + 8, + 8, + 5, + 8, + 5, + 5, + 5, + 8, + 8, + 8, + 4, + 8, + 4, + 4, + 4, + 8, + 8, + 8, + 4, + 8, + 4, + 4, + 4, + 8, + 8, + 8, + 4, + 8, + 4, + 4, + 4, + 8, + 8, + 8, + 4, + 8, + 4, + 4, + 4, + 8, + 8, + 8, + 4, + 8, + 4, + 4, + 4, + 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 + ] + }, + { + "stage": 0, + "replica": 7, + "widths": [ + 9, + 4, + 9, + 4, + 9, + 4, + 9, + 9, + 9, + 9, + 4, + 9, + 9, + 9, + 9, + 9, + 9, + 4, + 9, + 4, + 9, + 4, + 9, + 9, + 9, + 9, + 4, + 9, + 9, + 9, + 9, + 9, + 9, + 4, + 9, + 4, + 9, + 4, + 9, + 9, + 9, + 9, + 4, + 9, + 9, + 9, + 9, + 9, + 9, + 4, + 9, + 4, + 9, + 4, + 9, + 9, + 9, + 9, + 4, + 9, + 9, + 9, + 9, + 9, + 9, + 4, + 9, + 4, + 9, + 4, + 9, + 9, + 9, + 9, + 4, + 9, + 9, + 9, + 9, + 9, + 9, + 4, + 9, + 4, + 9, + 4, + 9, + 8, + 9, + 9, + 4, + 9, + 9, + 9, + 9, + 9, + 9, + 4, + 9, + 4, + 9, + 4, + 9, + 8, + 9, + 9, + 4, + 9, + 9, + 9, + 9, + 9, + 9, + 4, + 9, + 4, + 9, + 4, + 9, + 9, + 9, + 9, + 4, + 9, + 9, + 9, + 9, + 9, + 9, + 4, + 9, + 4, + 9, + 4, + 9, + 9, + 9, + 9, + 4, + 9, + 9, + 9, + 9, + 9, + 9, + 4, + 9, + 4, + 9, + 4, + 9, + 9, + 9, + 9, + 4, + 9, + 9, + 9, + 9, + 9, + 9, + 4, + 9, + 4, + 9, + 4, + 9, + 9, + 9, + 9, + 4, + 9, + 9, + 9, + 9, + 9, + 9, + 4, + 9, + 4, + 9, + 4, + 9, + 9, + 9, + 9, + 4, + 9, + 9, + 9, + 9, + 9, + 9, + 4, + 9, + 4, + 9, + 4, + 9, + 9, + 9, + 9, + 4, + 9, + 9, + 9, + 9, + 9, + 9, + 4, + 9, + 4, + 9, + 4, + 9, + 9, + 9, + 9, + 4, + 9, + 9, + 9, + 9, + 9, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 7, + 7, + 7, + 7, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 7, + 7, + 8, + 8, + 8, + 8, + 8, + 8, + 9, + 9, + 9, + 9, + 9, + 9, + 7, + 7, + 8, + 8, + 8, + 8, + 9, + 9, + 9, + 9, + 9, + 9, + 8, + 8, + 8, + 9, + 8, + 8, + 9, + 9, + 9, + 9, + 8, + 9, + 7, + 7, + 8, + 9, + 8, + 8, + 9, + 9, + 9, + 9, + 8, + 9, + 8, + 8, + 8, + 8, + 8, + 8, + 8, + 8, + 8, + 8, + 9, + 7, + 7, + 7, + 8, + 8, + 8, + 8, + 8, + 8, + 8, + 8, + 9, + 7, + 8, + 8, + 9, + 9, + 9, + 9, + 8, + 8, + 8, + 8, + 7, + 7, + 7, + 7, + 9, + 8, + 9, + 8, + 8, + 8, + 8, + 8, + 7, + 7, + 7, + 7, + 9, + 8, + 9, + 8, + 8, + 8, + 8, + 8, + 7, + 7, + 7, + 7, + 8, + 8, + 8, + 8, + 8, + 8, + 8, + 8, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 8, + 8, + 8, + 5, + 8, + 5, + 5, + 5, + 8, + 8, + 8, + 4, + 8, + 4, + 4, + 4, + 8, + 8, + 8, + 4, + 8, + 4, + 4, + 4, + 8, + 8, + 8, + 4, + 8, + 4, + 4, + 4, + 8, + 8, + 8, + 4, + 8, + 4, + 4, + 4, + 8, + 8, + 8, + 4, + 8, + 4, + 4, + 4, + 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 + ] + }, + { + "stage": 6, + "replica": 0, + "widths": [ + 9, + 4, + 9, + 4, + 9, + 4, + 9, + 9, + 9, + 9, + 4, + 9, + 9, + 9, + 9, + 9, + 9, + 4, + 9, + 4, + 9, + 4, + 9, + 9, + 9, + 9, + 4, + 9, + 9, + 9, + 9, + 9, + 9, + 4, + 9, + 4, + 9, + 4, + 9, + 9, + 9, + 9, + 4, + 9, + 9, + 9, + 9, + 9, + 9, + 4, + 9, + 4, + 9, + 4, + 9, + 9, + 9, + 9, + 4, + 9, + 9, + 9, + 9, + 9, + 9, + 4, + 9, + 4, + 9, + 4, + 9, + 9, + 9, + 9, + 4, + 9, + 9, + 9, + 9, + 9, + 9, + 4, + 9, + 4, + 9, + 4, + 9, + 8, + 9, + 9, + 4, + 9, + 9, + 9, + 9, + 9, + 9, + 4, + 9, + 4, + 9, + 4, + 9, + 8, + 9, + 9, + 4, + 9, + 9, + 9, + 9, + 9, + 9, + 4, + 9, + 4, + 9, + 4, + 9, + 9, + 9, + 9, + 4, + 9, + 9, + 9, + 9, + 9, + 9, + 4, + 9, + 4, + 9, + 4, + 9, + 9, + 9, + 9, + 4, + 9, + 9, + 9, + 9, + 9, + 9, + 4, + 9, + 4, + 9, + 4, + 9, + 9, + 9, + 9, + 4, + 9, + 9, + 9, + 9, + 9, + 9, + 4, + 9, + 4, + 9, + 4, + 9, + 9, + 9, + 9, + 4, + 9, + 9, + 9, + 9, + 9, + 9, + 4, + 9, + 4, + 9, + 4, + 9, + 9, + 9, + 9, + 4, + 9, + 9, + 9, + 9, + 9, + 9, + 4, + 9, + 4, + 9, + 4, + 9, + 9, + 9, + 9, + 4, + 9, + 9, + 9, + 9, + 9, + 9, + 4, + 9, + 4, + 9, + 4, + 9, + 9, + 9, + 9, + 4, + 9, + 9, + 9, + 9, + 9, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 7, + 7, + 7, + 7, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 7, + 7, + 8, + 8, + 8, + 8, + 8, + 8, + 9, + 9, + 9, + 9, + 9, + 9, + 7, + 7, + 8, + 8, + 8, + 8, + 9, + 9, + 9, + 9, + 9, + 9, + 8, + 8, + 8, + 9, + 8, + 8, + 9, + 9, + 9, + 9, + 8, + 9, + 7, + 7, + 8, + 9, + 8, + 8, + 9, + 9, + 9, + 9, + 8, + 9, + 8, + 8, + 8, + 8, + 8, + 8, + 8, + 8, + 8, + 8, + 9, + 7, + 7, + 7, + 8, + 8, + 8, + 8, + 8, + 8, + 8, + 8, + 9, + 7, + 8, + 8, + 9, + 9, + 9, + 9, + 8, + 8, + 8, + 8, + 7, + 7, + 7, + 7, + 9, + 8, + 9, + 8, + 8, + 8, + 8, + 8, + 7, + 7, + 7, + 7, + 9, + 8, + 9, + 8, + 8, + 8, + 8, + 8, + 7, + 7, + 7, + 7, + 8, + 8, + 8, + 8, + 8, + 8, + 8, + 8, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 8, + 8, + 8, + 5, + 8, + 5, + 5, + 5, + 8, + 8, + 8, + 4, + 8, + 4, + 4, + 4, + 8, + 8, + 8, + 4, + 8, + 4, + 4, + 4, + 8, + 8, + 8, + 4, + 8, + 4, + 4, + 4, + 8, + 8, + 8, + 4, + 8, + 4, + 4, + 4, + 8, + 8, + 8, + 4, + 8, + 4, + 4, + 4, + 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 + ] + }, + { + "stage": 1, + "replica": 6, + "widths": [ + 9, + 4, + 9, + 4, + 9, + 4, + 9, + 9, + 9, + 9, + 4, + 9, + 9, + 9, + 9, + 9, + 9, + 4, + 9, + 4, + 9, + 4, + 9, + 9, + 9, + 9, + 4, + 9, + 9, + 9, + 9, + 9, + 9, + 4, + 9, + 4, + 9, + 4, + 9, + 9, + 9, + 9, + 4, + 9, + 9, + 9, + 9, + 9, + 9, + 4, + 9, + 4, + 9, + 4, + 9, + 9, + 9, + 9, + 4, + 9, + 9, + 9, + 9, + 9, + 9, + 4, + 9, + 4, + 9, + 4, + 9, + 9, + 9, + 9, + 4, + 9, + 9, + 9, + 9, + 9, + 9, + 4, + 9, + 4, + 9, + 4, + 9, + 8, + 9, + 9, + 4, + 9, + 9, + 9, + 9, + 9, + 9, + 4, + 9, + 4, + 9, + 4, + 9, + 8, + 9, + 9, + 4, + 9, + 9, + 9, + 9, + 9, + 9, + 4, + 9, + 4, + 9, + 4, + 9, + 9, + 9, + 9, + 4, + 9, + 9, + 9, + 9, + 9, + 9, + 4, + 9, + 4, + 9, + 4, + 9, + 9, + 9, + 9, + 4, + 9, + 9, + 9, + 9, + 9, + 9, + 4, + 9, + 4, + 9, + 4, + 9, + 9, + 9, + 9, + 4, + 9, + 9, + 9, + 9, + 9, + 9, + 4, + 9, + 4, + 9, + 4, + 9, + 9, + 9, + 9, + 4, + 9, + 9, + 9, + 9, + 9, + 9, + 4, + 9, + 4, + 9, + 4, + 9, + 9, + 9, + 9, + 4, + 9, + 9, + 9, + 9, + 9, + 9, + 4, + 9, + 4, + 9, + 4, + 9, + 9, + 9, + 9, + 4, + 9, + 9, + 9, + 9, + 9, + 9, + 4, + 9, + 4, + 9, + 4, + 9, + 9, + 9, + 9, + 4, + 9, + 9, + 9, + 9, + 9, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 7, + 7, + 7, + 7, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 7, + 7, + 8, + 8, + 8, + 8, + 8, + 8, + 9, + 9, + 9, + 9, + 9, + 9, + 7, + 7, + 8, + 8, + 8, + 8, + 9, + 9, + 9, + 9, + 9, + 9, + 8, + 8, + 8, + 9, + 8, + 8, + 9, + 9, + 9, + 9, + 8, + 9, + 7, + 7, + 8, + 9, + 8, + 8, + 9, + 9, + 9, + 9, + 8, + 9, + 8, + 8, + 8, + 8, + 8, + 8, + 8, + 8, + 8, + 8, + 9, + 7, + 7, + 7, + 8, + 8, + 8, + 8, + 8, + 8, + 8, + 8, + 9, + 7, + 8, + 8, + 9, + 9, + 9, + 9, + 8, + 8, + 8, + 8, + 7, + 7, + 7, + 7, + 9, + 8, + 9, + 8, + 8, + 8, + 8, + 8, + 7, + 7, + 7, + 7, + 9, + 8, + 9, + 8, + 8, + 8, + 8, + 8, + 7, + 7, + 7, + 7, + 8, + 8, + 8, + 8, + 8, + 8, + 8, + 8, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 8, + 8, + 8, + 5, + 8, + 5, + 5, + 5, + 8, + 8, + 8, + 4, + 8, + 4, + 4, + 4, + 8, + 8, + 8, + 4, + 8, + 4, + 4, + 4, + 8, + 8, + 8, + 4, + 8, + 4, + 4, + 4, + 8, + 8, + 8, + 4, + 8, + 4, + 4, + 4, + 8, + 8, + 8, + 4, + 8, + 4, + 4, + 4, + 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 + ] + }, + { + "stage": 2, + "replica": 5, + "widths": [ + 9, + 4, + 9, + 4, + 9, + 4, + 9, + 9, + 9, + 9, + 4, + 9, + 9, + 9, + 9, + 9, + 9, + 4, + 9, + 4, + 9, + 4, + 9, + 9, + 9, + 9, + 4, + 9, + 9, + 9, + 9, + 9, + 9, + 4, + 9, + 4, + 9, + 4, + 9, + 9, + 9, + 9, + 4, + 9, + 9, + 9, + 9, + 9, + 9, + 4, + 9, + 4, + 9, + 4, + 9, + 9, + 9, + 9, + 4, + 9, + 9, + 9, + 9, + 9, + 9, + 4, + 9, + 4, + 9, + 4, + 9, + 9, + 9, + 9, + 4, + 9, + 9, + 9, + 9, + 9, + 9, + 4, + 9, + 4, + 9, + 4, + 9, + 8, + 9, + 9, + 4, + 9, + 9, + 9, + 9, + 9, + 9, + 4, + 9, + 4, + 9, + 4, + 9, + 8, + 9, + 9, + 4, + 9, + 9, + 9, + 9, + 9, + 9, + 4, + 9, + 4, + 9, + 4, + 9, + 9, + 9, + 9, + 4, + 9, + 9, + 9, + 9, + 9, + 9, + 4, + 9, + 4, + 9, + 4, + 9, + 9, + 9, + 9, + 4, + 9, + 9, + 9, + 9, + 9, + 9, + 4, + 9, + 4, + 9, + 4, + 9, + 9, + 9, + 9, + 4, + 9, + 9, + 9, + 9, + 9, + 9, + 4, + 9, + 4, + 9, + 4, + 9, + 9, + 9, + 9, + 4, + 9, + 9, + 9, + 9, + 9, + 9, + 4, + 9, + 4, + 9, + 4, + 9, + 9, + 9, + 9, + 4, + 9, + 9, + 9, + 9, + 9, + 9, + 4, + 9, + 4, + 9, + 4, + 9, + 9, + 9, + 9, + 4, + 9, + 9, + 9, + 9, + 9, + 9, + 4, + 9, + 4, + 9, + 4, + 9, + 9, + 9, + 9, + 4, + 9, + 9, + 9, + 9, + 9, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 7, + 7, + 7, + 7, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 7, + 7, + 8, + 8, + 8, + 8, + 8, + 8, + 9, + 9, + 9, + 9, + 9, + 9, + 7, + 7, + 8, + 8, + 8, + 8, + 9, + 9, + 9, + 9, + 9, + 9, + 8, + 8, + 8, + 9, + 8, + 8, + 9, + 9, + 9, + 9, + 8, + 9, + 7, + 7, + 8, + 9, + 8, + 8, + 9, + 9, + 9, + 9, + 8, + 9, + 8, + 8, + 8, + 8, + 8, + 8, + 8, + 8, + 8, + 8, + 9, + 7, + 7, + 7, + 8, + 8, + 8, + 8, + 8, + 8, + 8, + 8, + 9, + 7, + 8, + 8, + 9, + 9, + 9, + 9, + 8, + 8, + 8, + 8, + 7, + 7, + 7, + 7, + 9, + 8, + 9, + 8, + 8, + 8, + 8, + 8, + 7, + 7, + 7, + 7, + 9, + 8, + 9, + 8, + 8, + 8, + 8, + 8, + 7, + 7, + 7, + 7, + 8, + 8, + 8, + 8, + 8, + 8, + 8, + 8, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 8, + 8, + 8, + 5, + 8, + 5, + 5, + 5, + 8, + 8, + 8, + 4, + 8, + 4, + 4, + 4, + 8, + 8, + 8, + 4, + 8, + 4, + 4, + 4, + 8, + 8, + 8, + 4, + 8, + 4, + 4, + 4, + 8, + 8, + 8, + 4, + 8, + 4, + 4, + 4, + 8, + 8, + 8, + 4, + 8, + 4, + 4, + 4, + 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 + ] + }, + { + "stage": 3, + "replica": 4, + "widths": [ + 9, + 4, + 9, + 4, + 9, + 4, + 9, + 9, + 9, + 9, + 4, + 9, + 9, + 9, + 9, + 9, + 9, + 4, + 9, + 4, + 9, + 4, + 9, + 9, + 9, + 9, + 4, + 9, + 9, + 9, + 9, + 9, + 9, + 4, + 9, + 4, + 9, + 4, + 9, + 9, + 9, + 9, + 4, + 9, + 9, + 9, + 9, + 9, + 9, + 4, + 9, + 4, + 9, + 4, + 9, + 9, + 9, + 9, + 4, + 9, + 9, + 9, + 9, + 9, + 9, + 4, + 9, + 4, + 9, + 4, + 9, + 9, + 9, + 9, + 4, + 9, + 9, + 9, + 9, + 9, + 9, + 4, + 9, + 4, + 9, + 4, + 9, + 8, + 9, + 9, + 4, + 9, + 9, + 9, + 9, + 9, + 9, + 4, + 9, + 4, + 9, + 4, + 9, + 8, + 9, + 9, + 4, + 9, + 9, + 9, + 9, + 9, + 9, + 4, + 9, + 4, + 9, + 4, + 9, + 9, + 9, + 9, + 4, + 9, + 9, + 9, + 9, + 9, + 9, + 4, + 9, + 4, + 9, + 4, + 9, + 9, + 9, + 9, + 4, + 9, + 9, + 9, + 9, + 9, + 9, + 4, + 9, + 4, + 9, + 4, + 9, + 9, + 9, + 9, + 4, + 9, + 9, + 9, + 9, + 9, + 9, + 4, + 9, + 4, + 9, + 4, + 9, + 9, + 9, + 9, + 4, + 9, + 9, + 9, + 9, + 9, + 9, + 4, + 9, + 4, + 9, + 4, + 9, + 9, + 9, + 9, + 4, + 9, + 9, + 9, + 9, + 9, + 9, + 4, + 9, + 4, + 9, + 4, + 9, + 9, + 9, + 9, + 4, + 9, + 9, + 9, + 9, + 9, + 9, + 4, + 9, + 4, + 9, + 4, + 9, + 9, + 9, + 9, + 4, + 9, + 9, + 9, + 9, + 9, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 7, + 7, + 7, + 7, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 7, + 7, + 8, + 8, + 8, + 8, + 8, + 8, + 9, + 9, + 9, + 9, + 9, + 9, + 7, + 7, + 8, + 8, + 8, + 8, + 9, + 9, + 9, + 9, + 9, + 9, + 8, + 8, + 8, + 9, + 8, + 8, + 9, + 9, + 9, + 9, + 8, + 9, + 7, + 7, + 8, + 9, + 8, + 8, + 9, + 9, + 9, + 9, + 8, + 9, + 8, + 8, + 8, + 8, + 8, + 8, + 8, + 8, + 8, + 8, + 9, + 7, + 7, + 7, + 8, + 8, + 8, + 8, + 8, + 8, + 8, + 8, + 9, + 7, + 8, + 8, + 9, + 9, + 9, + 9, + 8, + 8, + 8, + 8, + 7, + 7, + 7, + 7, + 9, + 8, + 9, + 8, + 8, + 8, + 8, + 8, + 7, + 7, + 7, + 7, + 9, + 8, + 9, + 8, + 8, + 8, + 8, + 8, + 7, + 7, + 7, + 7, + 8, + 8, + 8, + 8, + 8, + 8, + 8, + 8, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 8, + 8, + 8, + 5, + 8, + 5, + 5, + 5, + 8, + 8, + 8, + 4, + 8, + 4, + 4, + 4, + 8, + 8, + 8, + 4, + 8, + 4, + 4, + 4, + 8, + 8, + 8, + 4, + 8, + 4, + 4, + 4, + 8, + 8, + 8, + 4, + 8, + 4, + 4, + 4, + 8, + 8, + 8, + 4, + 8, + 4, + 4, + 4, + 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 + ] + }, + { + "stage": 4, + "replica": 3, + "widths": [ + 9, + 4, + 9, + 4, + 9, + 4, + 9, + 9, + 9, + 9, + 4, + 9, + 9, + 9, + 9, + 9, + 9, + 4, + 9, + 4, + 9, + 4, + 9, + 9, + 9, + 9, + 4, + 9, + 9, + 9, + 9, + 9, + 9, + 4, + 9, + 4, + 9, + 4, + 9, + 9, + 9, + 9, + 4, + 9, + 9, + 9, + 9, + 9, + 9, + 4, + 9, + 4, + 9, + 4, + 9, + 9, + 9, + 9, + 4, + 9, + 9, + 9, + 9, + 9, + 9, + 4, + 9, + 4, + 9, + 4, + 9, + 9, + 9, + 9, + 4, + 9, + 9, + 9, + 9, + 9, + 9, + 4, + 9, + 4, + 9, + 4, + 9, + 8, + 9, + 9, + 4, + 9, + 9, + 9, + 9, + 9, + 9, + 4, + 9, + 4, + 9, + 4, + 9, + 8, + 9, + 9, + 4, + 9, + 9, + 9, + 9, + 9, + 9, + 4, + 9, + 4, + 9, + 4, + 9, + 9, + 9, + 9, + 4, + 9, + 9, + 9, + 9, + 9, + 9, + 4, + 9, + 4, + 9, + 4, + 9, + 9, + 9, + 9, + 4, + 9, + 9, + 9, + 9, + 9, + 9, + 4, + 9, + 4, + 9, + 4, + 9, + 9, + 9, + 9, + 4, + 9, + 9, + 9, + 9, + 9, + 9, + 4, + 9, + 4, + 9, + 4, + 9, + 9, + 9, + 9, + 4, + 9, + 9, + 9, + 9, + 9, + 9, + 4, + 9, + 4, + 9, + 4, + 9, + 9, + 9, + 9, + 4, + 9, + 9, + 9, + 9, + 9, + 9, + 4, + 9, + 4, + 9, + 4, + 9, + 9, + 9, + 9, + 4, + 9, + 9, + 9, + 9, + 9, + 9, + 4, + 9, + 4, + 9, + 4, + 9, + 9, + 9, + 9, + 4, + 9, + 9, + 9, + 9, + 9, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 7, + 7, + 7, + 7, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 7, + 7, + 8, + 8, + 8, + 8, + 8, + 8, + 9, + 9, + 9, + 9, + 9, + 9, + 7, + 7, + 8, + 8, + 8, + 8, + 9, + 9, + 9, + 9, + 9, + 9, + 8, + 8, + 8, + 9, + 8, + 8, + 9, + 9, + 9, + 9, + 8, + 9, + 7, + 7, + 8, + 9, + 8, + 8, + 9, + 9, + 9, + 9, + 8, + 9, + 8, + 8, + 8, + 8, + 8, + 8, + 8, + 8, + 8, + 8, + 9, + 7, + 7, + 7, + 8, + 8, + 8, + 8, + 8, + 8, + 8, + 8, + 9, + 7, + 8, + 8, + 9, + 9, + 9, + 9, + 8, + 8, + 8, + 8, + 7, + 7, + 7, + 7, + 9, + 8, + 9, + 8, + 8, + 8, + 8, + 8, + 7, + 7, + 7, + 7, + 9, + 8, + 9, + 8, + 8, + 8, + 8, + 8, + 7, + 7, + 7, + 7, + 8, + 8, + 8, + 8, + 8, + 8, + 8, + 8, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 8, + 8, + 8, + 5, + 8, + 5, + 5, + 5, + 8, + 8, + 8, + 4, + 8, + 4, + 4, + 4, + 8, + 8, + 8, + 4, + 8, + 4, + 4, + 4, + 8, + 8, + 8, + 4, + 8, + 4, + 4, + 4, + 8, + 8, + 8, + 4, + 8, + 4, + 4, + 4, + 8, + 8, + 8, + 4, + 8, + 4, + 4, + 4, + 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 + ] + }, + { + "stage": 5, + "replica": 2, + "widths": [ + 9, + 4, + 9, + 4, + 9, + 4, + 9, + 9, + 9, + 9, + 4, + 9, + 9, + 9, + 9, + 9, + 9, + 4, + 9, + 4, + 9, + 4, + 9, + 9, + 9, + 9, + 4, + 9, + 9, + 9, + 9, + 9, + 9, + 4, + 9, + 4, + 9, + 4, + 9, + 9, + 9, + 9, + 4, + 9, + 9, + 9, + 9, + 9, + 9, + 4, + 9, + 4, + 9, + 4, + 9, + 9, + 9, + 9, + 4, + 9, + 9, + 9, + 9, + 9, + 9, + 4, + 9, + 4, + 9, + 4, + 9, + 9, + 9, + 9, + 4, + 9, + 9, + 9, + 9, + 9, + 9, + 4, + 9, + 4, + 9, + 4, + 9, + 8, + 9, + 9, + 4, + 9, + 9, + 9, + 9, + 9, + 9, + 4, + 9, + 4, + 9, + 4, + 9, + 8, + 9, + 9, + 4, + 9, + 9, + 9, + 9, + 9, + 9, + 4, + 9, + 4, + 9, + 4, + 9, + 9, + 9, + 9, + 4, + 9, + 9, + 9, + 9, + 9, + 9, + 4, + 9, + 4, + 9, + 4, + 9, + 9, + 9, + 9, + 4, + 9, + 9, + 9, + 9, + 9, + 9, + 4, + 9, + 4, + 9, + 4, + 9, + 9, + 9, + 9, + 4, + 9, + 9, + 9, + 9, + 9, + 9, + 4, + 9, + 4, + 9, + 4, + 9, + 9, + 9, + 9, + 4, + 9, + 9, + 9, + 9, + 9, + 9, + 4, + 9, + 4, + 9, + 4, + 9, + 9, + 9, + 9, + 4, + 9, + 9, + 9, + 9, + 9, + 9, + 4, + 9, + 4, + 9, + 4, + 9, + 9, + 9, + 9, + 4, + 9, + 9, + 9, + 9, + 9, + 9, + 4, + 9, + 4, + 9, + 4, + 9, + 9, + 9, + 9, + 4, + 9, + 9, + 9, + 9, + 9, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 7, + 7, + 7, + 7, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 7, + 7, + 8, + 8, + 8, + 8, + 8, + 8, + 9, + 9, + 9, + 9, + 9, + 9, + 7, + 7, + 8, + 8, + 8, + 8, + 9, + 9, + 9, + 9, + 9, + 9, + 8, + 8, + 8, + 9, + 8, + 8, + 9, + 9, + 9, + 9, + 8, + 9, + 7, + 7, + 8, + 9, + 8, + 8, + 9, + 9, + 9, + 9, + 8, + 9, + 8, + 8, + 8, + 8, + 8, + 8, + 8, + 8, + 8, + 8, + 9, + 7, + 7, + 7, + 8, + 8, + 8, + 8, + 8, + 8, + 8, + 8, + 9, + 7, + 8, + 8, + 9, + 9, + 9, + 9, + 8, + 8, + 8, + 8, + 7, + 7, + 7, + 7, + 9, + 8, + 9, + 8, + 8, + 8, + 8, + 8, + 7, + 7, + 7, + 7, + 9, + 8, + 9, + 8, + 8, + 8, + 8, + 8, + 7, + 7, + 7, + 7, + 8, + 8, + 8, + 8, + 8, + 8, + 8, + 8, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 8, + 8, + 8, + 5, + 8, + 5, + 5, + 5, + 8, + 8, + 8, + 4, + 8, + 4, + 4, + 4, + 8, + 8, + 8, + 4, + 8, + 4, + 4, + 4, + 8, + 8, + 8, + 4, + 8, + 4, + 4, + 4, + 8, + 8, + 8, + 4, + 8, + 4, + 4, + 4, + 8, + 8, + 8, + 4, + 8, + 4, + 4, + 4, + 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 + ] + }, + { + "stage": 6, + "replica": 1, + "widths": [ + 9, + 4, + 9, + 4, + 9, + 4, + 9, + 9, + 9, + 9, + 4, + 9, + 9, + 9, + 9, + 9, + 9, + 4, + 9, + 4, + 9, + 4, + 9, + 9, + 9, + 9, + 4, + 9, + 9, + 9, + 9, + 9, + 9, + 4, + 9, + 4, + 9, + 4, + 9, + 9, + 9, + 9, + 4, + 9, + 9, + 9, + 9, + 9, + 9, + 4, + 9, + 4, + 9, + 4, + 9, + 9, + 9, + 9, + 4, + 9, + 9, + 9, + 9, + 9, + 9, + 4, + 9, + 4, + 9, + 4, + 9, + 9, + 9, + 9, + 4, + 9, + 9, + 9, + 9, + 9, + 9, + 4, + 9, + 4, + 9, + 4, + 9, + 8, + 9, + 9, + 4, + 9, + 9, + 9, + 9, + 9, + 9, + 4, + 9, + 4, + 9, + 4, + 9, + 8, + 9, + 9, + 4, + 9, + 9, + 9, + 9, + 9, + 9, + 4, + 9, + 4, + 9, + 4, + 9, + 9, + 9, + 9, + 4, + 9, + 9, + 9, + 9, + 9, + 9, + 4, + 9, + 4, + 9, + 4, + 9, + 9, + 9, + 9, + 4, + 9, + 9, + 9, + 9, + 9, + 9, + 4, + 9, + 4, + 9, + 4, + 9, + 9, + 9, + 9, + 4, + 9, + 9, + 9, + 9, + 9, + 9, + 4, + 9, + 4, + 9, + 4, + 9, + 9, + 9, + 9, + 4, + 9, + 9, + 9, + 9, + 9, + 9, + 4, + 9, + 4, + 9, + 4, + 9, + 9, + 9, + 9, + 4, + 9, + 9, + 9, + 9, + 9, + 9, + 4, + 9, + 4, + 9, + 4, + 9, + 9, + 9, + 9, + 4, + 9, + 9, + 9, + 9, + 9, + 9, + 4, + 9, + 4, + 9, + 4, + 9, + 9, + 9, + 9, + 4, + 9, + 9, + 9, + 9, + 9, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 7, + 7, + 7, + 7, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 7, + 7, + 8, + 8, + 8, + 8, + 8, + 8, + 9, + 9, + 9, + 9, + 9, + 9, + 7, + 7, + 8, + 8, + 8, + 8, + 9, + 9, + 9, + 9, + 9, + 9, + 8, + 8, + 8, + 9, + 8, + 8, + 9, + 9, + 9, + 9, + 8, + 9, + 7, + 7, + 8, + 9, + 8, + 8, + 9, + 9, + 9, + 9, + 8, + 9, + 8, + 8, + 8, + 8, + 8, + 8, + 8, + 8, + 8, + 8, + 9, + 7, + 7, + 7, + 8, + 8, + 8, + 8, + 8, + 8, + 8, + 8, + 9, + 7, + 8, + 8, + 9, + 9, + 9, + 9, + 8, + 8, + 8, + 8, + 7, + 7, + 7, + 7, + 9, + 8, + 9, + 8, + 8, + 8, + 8, + 8, + 7, + 7, + 7, + 7, + 9, + 8, + 9, + 8, + 8, + 8, + 8, + 8, + 7, + 7, + 7, + 7, + 8, + 8, + 8, + 8, + 8, + 8, + 8, + 8, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 8, + 8, + 8, + 5, + 8, + 5, + 5, + 5, + 8, + 8, + 8, + 4, + 8, + 4, + 4, + 4, + 8, + 8, + 8, + 4, + 8, + 4, + 4, + 4, + 8, + 8, + 8, + 4, + 8, + 4, + 4, + 4, + 8, + 8, + 8, + 4, + 8, + 4, + 4, + 4, + 8, + 8, + 8, + 4, + 8, + 4, + 4, + 4, + 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 + ] + }, + { + "stage": 1, + "replica": 7, + "widths": [ + 9, + 4, + 9, + 4, + 9, + 4, + 9, + 9, + 9, + 9, + 4, + 9, + 9, + 9, + 9, + 9, + 9, + 4, + 9, + 4, + 9, + 4, + 9, + 9, + 9, + 9, + 4, + 9, + 9, + 9, + 9, + 9, + 9, + 4, + 9, + 4, + 9, + 4, + 9, + 9, + 9, + 9, + 4, + 9, + 9, + 9, + 9, + 9, + 9, + 4, + 9, + 4, + 9, + 4, + 9, + 9, + 9, + 9, + 4, + 9, + 9, + 9, + 9, + 9, + 9, + 4, + 9, + 4, + 9, + 4, + 9, + 9, + 9, + 9, + 4, + 9, + 9, + 9, + 9, + 9, + 9, + 4, + 9, + 4, + 9, + 4, + 9, + 8, + 9, + 9, + 4, + 9, + 9, + 9, + 9, + 9, + 9, + 4, + 9, + 4, + 9, + 4, + 9, + 8, + 9, + 9, + 4, + 9, + 9, + 9, + 9, + 9, + 9, + 4, + 9, + 4, + 9, + 4, + 9, + 9, + 9, + 9, + 4, + 9, + 9, + 9, + 9, + 9, + 9, + 4, + 9, + 4, + 9, + 4, + 9, + 9, + 9, + 9, + 4, + 9, + 9, + 9, + 9, + 9, + 9, + 4, + 9, + 4, + 9, + 4, + 9, + 9, + 9, + 9, + 4, + 9, + 9, + 9, + 9, + 9, + 9, + 4, + 9, + 4, + 9, + 4, + 9, + 9, + 9, + 9, + 4, + 9, + 9, + 9, + 9, + 9, + 9, + 4, + 9, + 4, + 9, + 4, + 9, + 9, + 9, + 9, + 4, + 9, + 9, + 9, + 9, + 9, + 9, + 4, + 9, + 4, + 9, + 4, + 9, + 9, + 9, + 9, + 4, + 9, + 9, + 9, + 9, + 9, + 9, + 4, + 9, + 4, + 9, + 4, + 9, + 9, + 9, + 9, + 4, + 9, + 9, + 9, + 9, + 9, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 7, + 7, + 7, + 7, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 7, + 7, + 8, + 8, + 8, + 8, + 8, + 8, + 9, + 9, + 9, + 9, + 9, + 9, + 7, + 7, + 8, + 8, + 8, + 8, + 9, + 9, + 9, + 9, + 9, + 9, + 8, + 8, + 8, + 9, + 8, + 8, + 9, + 9, + 9, + 9, + 8, + 9, + 7, + 7, + 8, + 9, + 8, + 8, + 9, + 9, + 9, + 9, + 8, + 9, + 8, + 8, + 8, + 8, + 8, + 8, + 8, + 8, + 8, + 8, + 9, + 7, + 7, + 7, + 8, + 8, + 8, + 8, + 8, + 8, + 8, + 8, + 9, + 7, + 8, + 8, + 9, + 9, + 9, + 9, + 8, + 8, + 8, + 8, + 7, + 7, + 7, + 7, + 9, + 8, + 9, + 8, + 8, + 8, + 8, + 8, + 7, + 7, + 7, + 7, + 9, + 8, + 9, + 8, + 8, + 8, + 8, + 8, + 7, + 7, + 7, + 7, + 8, + 8, + 8, + 8, + 8, + 8, + 8, + 8, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 8, + 8, + 8, + 5, + 8, + 5, + 5, + 5, + 8, + 8, + 8, + 4, + 8, + 4, + 4, + 4, + 8, + 8, + 8, + 4, + 8, + 4, + 4, + 4, + 8, + 8, + 8, + 4, + 8, + 4, + 4, + 4, + 8, + 8, + 8, + 4, + 8, + 4, + 4, + 4, + 8, + 8, + 8, + 4, + 8, + 4, + 4, + 4, + 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 + ] + }, + { + "stage": 7, + "replica": 0, + "widths": [ + 9, + 4, + 9, + 4, + 9, + 4, + 9, + 9, + 9, + 9, + 4, + 9, + 9, + 9, + 9, + 9, + 9, + 4, + 9, + 4, + 9, + 4, + 9, + 9, + 9, + 9, + 4, + 9, + 9, + 9, + 9, + 9, + 9, + 4, + 9, + 4, + 9, + 4, + 9, + 9, + 9, + 9, + 4, + 9, + 9, + 9, + 9, + 9, + 9, + 4, + 9, + 4, + 9, + 4, + 9, + 9, + 9, + 9, + 4, + 9, + 9, + 9, + 9, + 9, + 9, + 4, + 9, + 4, + 9, + 4, + 9, + 9, + 9, + 9, + 4, + 9, + 9, + 9, + 9, + 9, + 9, + 4, + 9, + 4, + 9, + 4, + 9, + 8, + 9, + 9, + 4, + 9, + 9, + 9, + 9, + 9, + 9, + 4, + 9, + 4, + 9, + 4, + 9, + 8, + 9, + 9, + 4, + 9, + 9, + 9, + 9, + 9, + 9, + 4, + 9, + 4, + 9, + 4, + 9, + 9, + 9, + 9, + 4, + 9, + 9, + 9, + 9, + 9, + 9, + 4, + 9, + 4, + 9, + 4, + 9, + 9, + 9, + 9, + 4, + 9, + 9, + 9, + 9, + 9, + 9, + 4, + 9, + 4, + 9, + 4, + 9, + 9, + 9, + 9, + 4, + 9, + 9, + 9, + 9, + 9, + 9, + 4, + 9, + 4, + 9, + 4, + 9, + 9, + 9, + 9, + 4, + 9, + 9, + 9, + 9, + 9, + 9, + 4, + 9, + 4, + 9, + 4, + 9, + 9, + 9, + 9, + 4, + 9, + 9, + 9, + 9, + 9, + 9, + 4, + 9, + 4, + 9, + 4, + 9, + 9, + 9, + 9, + 4, + 9, + 9, + 9, + 9, + 9, + 9, + 4, + 9, + 4, + 9, + 4, + 9, + 9, + 9, + 9, + 4, + 9, + 9, + 9, + 9, + 9, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 7, + 7, + 7, + 7, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 7, + 7, + 8, + 8, + 8, + 8, + 8, + 8, + 9, + 9, + 9, + 9, + 9, + 9, + 7, + 7, + 8, + 8, + 8, + 8, + 9, + 9, + 9, + 9, + 9, + 9, + 8, + 8, + 8, + 9, + 8, + 8, + 9, + 9, + 9, + 9, + 8, + 9, + 7, + 7, + 8, + 9, + 8, + 8, + 9, + 9, + 9, + 9, + 8, + 9, + 8, + 8, + 8, + 8, + 8, + 8, + 8, + 8, + 8, + 8, + 9, + 7, + 7, + 7, + 8, + 8, + 8, + 8, + 8, + 8, + 8, + 8, + 9, + 7, + 8, + 8, + 9, + 9, + 9, + 9, + 8, + 8, + 8, + 8, + 7, + 7, + 7, + 7, + 9, + 8, + 9, + 8, + 8, + 8, + 8, + 8, + 7, + 7, + 7, + 7, + 9, + 8, + 9, + 8, + 8, + 8, + 8, + 8, + 7, + 7, + 7, + 7, + 8, + 8, + 8, + 8, + 8, + 8, + 8, + 8, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 8, + 8, + 8, + 5, + 8, + 5, + 5, + 5, + 8, + 8, + 8, + 4, + 8, + 4, + 4, + 4, + 8, + 8, + 8, + 4, + 8, + 4, + 4, + 4, + 8, + 8, + 8, + 4, + 8, + 4, + 4, + 4, + 8, + 8, + 8, + 4, + 8, + 4, + 4, + 4, + 8, + 8, + 8, + 4, + 8, + 4, + 4, + 4, + 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 + ] + }, + { + "stage": 2, + "replica": 6, + "widths": [ + 9, + 4, + 9, + 4, + 9, + 4, + 9, + 9, + 9, + 9, + 4, + 9, + 9, + 9, + 9, + 9, + 9, + 4, + 9, + 4, + 9, + 4, + 9, + 9, + 9, + 9, + 4, + 9, + 9, + 9, + 9, + 9, + 9, + 4, + 9, + 4, + 9, + 4, + 9, + 9, + 9, + 9, + 4, + 9, + 9, + 9, + 9, + 9, + 9, + 4, + 9, + 4, + 9, + 4, + 9, + 9, + 9, + 9, + 4, + 9, + 9, + 9, + 9, + 9, + 9, + 4, + 9, + 4, + 9, + 4, + 9, + 9, + 9, + 9, + 4, + 9, + 9, + 9, + 9, + 9, + 9, + 4, + 9, + 4, + 9, + 4, + 9, + 8, + 9, + 9, + 4, + 9, + 9, + 9, + 9, + 9, + 9, + 4, + 9, + 4, + 9, + 4, + 9, + 8, + 9, + 9, + 4, + 9, + 9, + 9, + 9, + 9, + 9, + 4, + 9, + 4, + 9, + 4, + 9, + 9, + 9, + 9, + 4, + 9, + 9, + 9, + 9, + 9, + 9, + 4, + 9, + 4, + 9, + 4, + 9, + 9, + 9, + 9, + 4, + 9, + 9, + 9, + 9, + 9, + 9, + 4, + 9, + 4, + 9, + 4, + 9, + 9, + 9, + 9, + 4, + 9, + 9, + 9, + 9, + 9, + 9, + 4, + 9, + 4, + 9, + 4, + 9, + 9, + 9, + 9, + 4, + 9, + 9, + 9, + 9, + 9, + 9, + 4, + 9, + 4, + 9, + 4, + 9, + 9, + 9, + 9, + 4, + 9, + 9, + 9, + 9, + 9, + 9, + 4, + 9, + 4, + 9, + 4, + 9, + 9, + 9, + 9, + 4, + 9, + 9, + 9, + 9, + 9, + 9, + 4, + 9, + 4, + 9, + 4, + 9, + 9, + 9, + 9, + 4, + 9, + 9, + 9, + 9, + 9, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 7, + 7, + 7, + 7, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 7, + 7, + 8, + 8, + 8, + 8, + 8, + 8, + 9, + 9, + 9, + 9, + 9, + 9, + 7, + 7, + 8, + 8, + 8, + 8, + 9, + 9, + 9, + 9, + 9, + 9, + 8, + 8, + 8, + 9, + 8, + 8, + 9, + 9, + 9, + 9, + 8, + 9, + 7, + 7, + 8, + 9, + 8, + 8, + 9, + 9, + 9, + 9, + 8, + 9, + 8, + 8, + 8, + 8, + 8, + 8, + 8, + 8, + 8, + 8, + 9, + 7, + 7, + 7, + 8, + 8, + 8, + 8, + 8, + 8, + 8, + 8, + 9, + 7, + 8, + 8, + 9, + 9, + 9, + 9, + 8, + 8, + 8, + 8, + 7, + 7, + 7, + 7, + 9, + 8, + 9, + 8, + 8, + 8, + 8, + 8, + 7, + 7, + 7, + 7, + 9, + 8, + 9, + 8, + 8, + 8, + 8, + 8, + 7, + 7, + 7, + 7, + 8, + 8, + 8, + 8, + 8, + 8, + 8, + 8, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 8, + 8, + 8, + 5, + 8, + 5, + 5, + 5, + 8, + 8, + 8, + 4, + 8, + 4, + 4, + 4, + 8, + 8, + 8, + 4, + 8, + 4, + 4, + 4, + 8, + 8, + 8, + 4, + 8, + 4, + 4, + 4, + 8, + 8, + 8, + 4, + 8, + 4, + 4, + 4, + 8, + 8, + 8, + 4, + 8, + 4, + 4, + 4, + 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 + ] + }, + { + "stage": 3, + "replica": 5, + "widths": [ + 9, + 4, + 9, + 4, + 9, + 4, + 9, + 9, + 9, + 9, + 4, + 9, + 9, + 9, + 9, + 9, + 9, + 4, + 9, + 4, + 9, + 4, + 9, + 9, + 9, + 9, + 4, + 9, + 9, + 9, + 9, + 9, + 9, + 4, + 9, + 4, + 9, + 4, + 9, + 9, + 9, + 9, + 4, + 9, + 9, + 9, + 9, + 9, + 9, + 4, + 9, + 4, + 9, + 4, + 9, + 9, + 9, + 9, + 4, + 9, + 9, + 9, + 9, + 9, + 9, + 4, + 9, + 4, + 9, + 4, + 9, + 9, + 9, + 9, + 4, + 9, + 9, + 9, + 9, + 9, + 9, + 4, + 9, + 4, + 9, + 4, + 9, + 8, + 9, + 9, + 4, + 9, + 9, + 9, + 9, + 9, + 9, + 4, + 9, + 4, + 9, + 4, + 9, + 8, + 9, + 9, + 4, + 9, + 9, + 9, + 9, + 9, + 9, + 4, + 9, + 4, + 9, + 4, + 9, + 9, + 9, + 9, + 4, + 9, + 9, + 9, + 9, + 9, + 9, + 4, + 9, + 4, + 9, + 4, + 9, + 9, + 9, + 9, + 4, + 9, + 9, + 9, + 9, + 9, + 9, + 4, + 9, + 4, + 9, + 4, + 9, + 9, + 9, + 9, + 4, + 9, + 9, + 9, + 9, + 9, + 9, + 4, + 9, + 4, + 9, + 4, + 9, + 9, + 9, + 9, + 4, + 9, + 9, + 9, + 9, + 9, + 9, + 4, + 9, + 4, + 9, + 4, + 9, + 9, + 9, + 9, + 4, + 9, + 9, + 9, + 9, + 9, + 9, + 4, + 9, + 4, + 9, + 4, + 9, + 9, + 9, + 9, + 4, + 9, + 9, + 9, + 9, + 9, + 9, + 4, + 9, + 4, + 9, + 4, + 9, + 9, + 9, + 9, + 4, + 9, + 9, + 9, + 9, + 9, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 7, + 7, + 7, + 7, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 7, + 7, + 8, + 8, + 8, + 8, + 8, + 8, + 9, + 9, + 9, + 9, + 9, + 9, + 7, + 7, + 8, + 8, + 8, + 8, + 9, + 9, + 9, + 9, + 9, + 9, + 8, + 8, + 8, + 9, + 8, + 8, + 9, + 9, + 9, + 9, + 8, + 9, + 7, + 7, + 8, + 9, + 8, + 8, + 9, + 9, + 9, + 9, + 8, + 9, + 8, + 8, + 8, + 8, + 8, + 8, + 8, + 8, + 8, + 8, + 9, + 7, + 7, + 7, + 8, + 8, + 8, + 8, + 8, + 8, + 8, + 8, + 9, + 7, + 8, + 8, + 9, + 9, + 9, + 9, + 8, + 8, + 8, + 8, + 7, + 7, + 7, + 7, + 9, + 8, + 9, + 8, + 8, + 8, + 8, + 8, + 7, + 7, + 7, + 7, + 9, + 8, + 9, + 8, + 8, + 8, + 8, + 8, + 7, + 7, + 7, + 7, + 8, + 8, + 8, + 8, + 8, + 8, + 8, + 8, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 8, + 8, + 8, + 5, + 8, + 5, + 5, + 5, + 8, + 8, + 8, + 4, + 8, + 4, + 4, + 4, + 8, + 8, + 8, + 4, + 8, + 4, + 4, + 4, + 8, + 8, + 8, + 4, + 8, + 4, + 4, + 4, + 8, + 8, + 8, + 4, + 8, + 4, + 4, + 4, + 8, + 8, + 8, + 4, + 8, + 4, + 4, + 4, + 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 + ] + }, + { + "stage": 4, + "replica": 4, + "widths": [ + 9, + 4, + 9, + 4, + 9, + 4, + 9, + 9, + 9, + 9, + 4, + 9, + 9, + 9, + 9, + 9, + 9, + 4, + 9, + 4, + 9, + 4, + 9, + 9, + 9, + 9, + 4, + 9, + 9, + 9, + 9, + 9, + 9, + 4, + 9, + 4, + 9, + 4, + 9, + 9, + 9, + 9, + 4, + 9, + 9, + 9, + 9, + 9, + 9, + 4, + 9, + 4, + 9, + 4, + 9, + 9, + 9, + 9, + 4, + 9, + 9, + 9, + 9, + 9, + 9, + 4, + 9, + 4, + 9, + 4, + 9, + 9, + 9, + 9, + 4, + 9, + 9, + 9, + 9, + 9, + 9, + 4, + 9, + 4, + 9, + 4, + 9, + 8, + 9, + 9, + 4, + 9, + 9, + 9, + 9, + 9, + 9, + 4, + 9, + 4, + 9, + 4, + 9, + 8, + 9, + 9, + 4, + 9, + 9, + 9, + 9, + 9, + 9, + 4, + 9, + 4, + 9, + 4, + 9, + 9, + 9, + 9, + 4, + 9, + 9, + 9, + 9, + 9, + 9, + 4, + 9, + 4, + 9, + 4, + 9, + 9, + 9, + 9, + 4, + 9, + 9, + 9, + 9, + 9, + 9, + 4, + 9, + 4, + 9, + 4, + 9, + 9, + 9, + 9, + 4, + 9, + 9, + 9, + 9, + 9, + 9, + 4, + 9, + 4, + 9, + 4, + 9, + 9, + 9, + 9, + 4, + 9, + 9, + 9, + 9, + 9, + 9, + 4, + 9, + 4, + 9, + 4, + 9, + 9, + 9, + 9, + 4, + 9, + 9, + 9, + 9, + 9, + 9, + 4, + 9, + 4, + 9, + 4, + 9, + 9, + 9, + 9, + 4, + 9, + 9, + 9, + 9, + 9, + 9, + 4, + 9, + 4, + 9, + 4, + 9, + 9, + 9, + 9, + 4, + 9, + 9, + 9, + 9, + 9, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 7, + 7, + 7, + 7, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 7, + 7, + 8, + 8, + 8, + 8, + 8, + 8, + 9, + 9, + 9, + 9, + 9, + 9, + 7, + 7, + 8, + 8, + 8, + 8, + 9, + 9, + 9, + 9, + 9, + 9, + 8, + 8, + 8, + 9, + 8, + 8, + 9, + 9, + 9, + 9, + 8, + 9, + 7, + 7, + 8, + 9, + 8, + 8, + 9, + 9, + 9, + 9, + 8, + 9, + 8, + 8, + 8, + 8, + 8, + 8, + 8, + 8, + 8, + 8, + 9, + 7, + 7, + 7, + 8, + 8, + 8, + 8, + 8, + 8, + 8, + 8, + 9, + 7, + 8, + 8, + 9, + 9, + 9, + 9, + 8, + 8, + 8, + 8, + 7, + 7, + 7, + 7, + 9, + 8, + 9, + 8, + 8, + 8, + 8, + 8, + 7, + 7, + 7, + 7, + 9, + 8, + 9, + 8, + 8, + 8, + 8, + 8, + 7, + 7, + 7, + 7, + 8, + 8, + 8, + 8, + 8, + 8, + 8, + 8, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 8, + 8, + 8, + 5, + 8, + 5, + 5, + 5, + 8, + 8, + 8, + 4, + 8, + 4, + 4, + 4, + 8, + 8, + 8, + 4, + 8, + 4, + 4, + 4, + 8, + 8, + 8, + 4, + 8, + 4, + 4, + 4, + 8, + 8, + 8, + 4, + 8, + 4, + 4, + 4, + 8, + 8, + 8, + 4, + 8, + 4, + 4, + 4, + 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 + ] + }, + { + "stage": 5, + "replica": 3, + "widths": [ + 9, + 4, + 9, + 4, + 9, + 4, + 9, + 9, + 9, + 9, + 4, + 9, + 9, + 9, + 9, + 9, + 9, + 4, + 9, + 4, + 9, + 4, + 9, + 9, + 9, + 9, + 4, + 9, + 9, + 9, + 9, + 9, + 9, + 4, + 9, + 4, + 9, + 4, + 9, + 9, + 9, + 9, + 4, + 9, + 9, + 9, + 9, + 9, + 9, + 4, + 9, + 4, + 9, + 4, + 9, + 9, + 9, + 9, + 4, + 9, + 9, + 9, + 9, + 9, + 9, + 4, + 9, + 4, + 9, + 4, + 9, + 9, + 9, + 9, + 4, + 9, + 9, + 9, + 9, + 9, + 9, + 4, + 9, + 4, + 9, + 4, + 9, + 8, + 9, + 9, + 4, + 9, + 9, + 9, + 9, + 9, + 9, + 4, + 9, + 4, + 9, + 4, + 9, + 8, + 9, + 9, + 4, + 9, + 9, + 9, + 9, + 9, + 9, + 4, + 9, + 4, + 9, + 4, + 9, + 9, + 9, + 9, + 4, + 9, + 9, + 9, + 9, + 9, + 9, + 4, + 9, + 4, + 9, + 4, + 9, + 9, + 9, + 9, + 4, + 9, + 9, + 9, + 9, + 9, + 9, + 4, + 9, + 4, + 9, + 4, + 9, + 9, + 9, + 9, + 4, + 9, + 9, + 9, + 9, + 9, + 9, + 4, + 9, + 4, + 9, + 4, + 9, + 9, + 9, + 9, + 4, + 9, + 9, + 9, + 9, + 9, + 9, + 4, + 9, + 4, + 9, + 4, + 9, + 9, + 9, + 9, + 4, + 9, + 9, + 9, + 9, + 9, + 9, + 4, + 9, + 4, + 9, + 4, + 9, + 9, + 9, + 9, + 4, + 9, + 9, + 9, + 9, + 9, + 9, + 4, + 9, + 4, + 9, + 4, + 9, + 9, + 9, + 9, + 4, + 9, + 9, + 9, + 9, + 9, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 7, + 7, + 7, + 7, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 7, + 7, + 8, + 8, + 8, + 8, + 8, + 8, + 9, + 9, + 9, + 9, + 9, + 9, + 7, + 7, + 8, + 8, + 8, + 8, + 9, + 9, + 9, + 9, + 9, + 9, + 8, + 8, + 8, + 9, + 8, + 8, + 9, + 9, + 9, + 9, + 8, + 9, + 7, + 7, + 8, + 9, + 8, + 8, + 9, + 9, + 9, + 9, + 8, + 9, + 8, + 8, + 8, + 8, + 8, + 8, + 8, + 8, + 8, + 8, + 9, + 7, + 7, + 7, + 8, + 8, + 8, + 8, + 8, + 8, + 8, + 8, + 9, + 7, + 8, + 8, + 9, + 9, + 9, + 9, + 8, + 8, + 8, + 8, + 7, + 7, + 7, + 7, + 9, + 8, + 9, + 8, + 8, + 8, + 8, + 8, + 7, + 7, + 7, + 7, + 9, + 8, + 9, + 8, + 8, + 8, + 8, + 8, + 7, + 7, + 7, + 7, + 8, + 8, + 8, + 8, + 8, + 8, + 8, + 8, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 8, + 8, + 8, + 5, + 8, + 5, + 5, + 5, + 8, + 8, + 8, + 4, + 8, + 4, + 4, + 4, + 8, + 8, + 8, + 4, + 8, + 4, + 4, + 4, + 8, + 8, + 8, + 4, + 8, + 4, + 4, + 4, + 8, + 8, + 8, + 4, + 8, + 4, + 4, + 4, + 8, + 8, + 8, + 4, + 8, + 4, + 4, + 4, + 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 + ] + }, + { + "stage": 6, + "replica": 2, + "widths": [ + 9, + 4, + 9, + 4, + 9, + 4, + 9, + 9, + 9, + 9, + 4, + 9, + 9, + 9, + 9, + 9, + 9, + 4, + 9, + 4, + 9, + 4, + 9, + 9, + 9, + 9, + 4, + 9, + 9, + 9, + 9, + 9, + 9, + 4, + 9, + 4, + 9, + 4, + 9, + 9, + 9, + 9, + 4, + 9, + 9, + 9, + 9, + 9, + 9, + 4, + 9, + 4, + 9, + 4, + 9, + 9, + 9, + 9, + 4, + 9, + 9, + 9, + 9, + 9, + 9, + 4, + 9, + 4, + 9, + 4, + 9, + 9, + 9, + 9, + 4, + 9, + 9, + 9, + 9, + 9, + 9, + 4, + 9, + 4, + 9, + 4, + 9, + 8, + 9, + 9, + 4, + 9, + 9, + 9, + 9, + 9, + 9, + 4, + 9, + 4, + 9, + 4, + 9, + 8, + 9, + 9, + 4, + 9, + 9, + 9, + 9, + 9, + 9, + 4, + 9, + 4, + 9, + 4, + 9, + 9, + 9, + 9, + 4, + 9, + 9, + 9, + 9, + 9, + 9, + 4, + 9, + 4, + 9, + 4, + 9, + 9, + 9, + 9, + 4, + 9, + 9, + 9, + 9, + 9, + 9, + 4, + 9, + 4, + 9, + 4, + 9, + 9, + 9, + 9, + 4, + 9, + 9, + 9, + 9, + 9, + 9, + 4, + 9, + 4, + 9, + 4, + 9, + 9, + 9, + 9, + 4, + 9, + 9, + 9, + 9, + 9, + 9, + 4, + 9, + 4, + 9, + 4, + 9, + 9, + 9, + 9, + 4, + 9, + 9, + 9, + 9, + 9, + 9, + 4, + 9, + 4, + 9, + 4, + 9, + 9, + 9, + 9, + 4, + 9, + 9, + 9, + 9, + 9, + 9, + 4, + 9, + 4, + 9, + 4, + 9, + 9, + 9, + 9, + 4, + 9, + 9, + 9, + 9, + 9, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 7, + 7, + 7, + 7, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 7, + 7, + 8, + 8, + 8, + 8, + 8, + 8, + 9, + 9, + 9, + 9, + 9, + 9, + 7, + 7, + 8, + 8, + 8, + 8, + 9, + 9, + 9, + 9, + 9, + 9, + 8, + 8, + 8, + 9, + 8, + 8, + 9, + 9, + 9, + 9, + 8, + 9, + 7, + 7, + 8, + 9, + 8, + 8, + 9, + 9, + 9, + 9, + 8, + 9, + 8, + 8, + 8, + 8, + 8, + 8, + 8, + 8, + 8, + 8, + 9, + 7, + 7, + 7, + 8, + 8, + 8, + 8, + 8, + 8, + 8, + 8, + 9, + 7, + 8, + 8, + 9, + 9, + 9, + 9, + 8, + 8, + 8, + 8, + 7, + 7, + 7, + 7, + 9, + 8, + 9, + 8, + 8, + 8, + 8, + 8, + 7, + 7, + 7, + 7, + 9, + 8, + 9, + 8, + 8, + 8, + 8, + 8, + 7, + 7, + 7, + 7, + 8, + 8, + 8, + 8, + 8, + 8, + 8, + 8, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 8, + 8, + 8, + 5, + 8, + 5, + 5, + 5, + 8, + 8, + 8, + 4, + 8, + 4, + 4, + 4, + 8, + 8, + 8, + 4, + 8, + 4, + 4, + 4, + 8, + 8, + 8, + 4, + 8, + 4, + 4, + 4, + 8, + 8, + 8, + 4, + 8, + 4, + 4, + 4, + 8, + 8, + 8, + 4, + 8, + 4, + 4, + 4, + 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 + ] + }, + { + "stage": 7, + "replica": 1, + "widths": [ + 9, + 4, + 9, + 4, + 9, + 4, + 9, + 9, + 9, + 9, + 4, + 9, + 9, + 9, + 9, + 9, + 9, + 4, + 9, + 4, + 9, + 4, + 9, + 9, + 9, + 9, + 4, + 9, + 9, + 9, + 9, + 9, + 9, + 4, + 9, + 4, + 9, + 4, + 9, + 9, + 9, + 9, + 4, + 9, + 9, + 9, + 9, + 9, + 9, + 4, + 9, + 4, + 9, + 4, + 9, + 9, + 9, + 9, + 4, + 9, + 9, + 9, + 9, + 9, + 9, + 4, + 9, + 4, + 9, + 4, + 9, + 9, + 9, + 9, + 4, + 9, + 9, + 9, + 9, + 9, + 9, + 4, + 9, + 4, + 9, + 4, + 9, + 8, + 9, + 9, + 4, + 9, + 9, + 9, + 9, + 9, + 9, + 4, + 9, + 4, + 9, + 4, + 9, + 8, + 9, + 9, + 4, + 9, + 9, + 9, + 9, + 9, + 9, + 4, + 9, + 4, + 9, + 4, + 9, + 9, + 9, + 9, + 4, + 9, + 9, + 9, + 9, + 9, + 9, + 4, + 9, + 4, + 9, + 4, + 9, + 9, + 9, + 9, + 4, + 9, + 9, + 9, + 9, + 9, + 9, + 4, + 9, + 4, + 9, + 4, + 9, + 9, + 9, + 9, + 4, + 9, + 9, + 9, + 9, + 9, + 9, + 4, + 9, + 4, + 9, + 4, + 9, + 9, + 9, + 9, + 4, + 9, + 9, + 9, + 9, + 9, + 9, + 4, + 9, + 4, + 9, + 4, + 9, + 9, + 9, + 9, + 4, + 9, + 9, + 9, + 9, + 9, + 9, + 4, + 9, + 4, + 9, + 4, + 9, + 9, + 9, + 9, + 4, + 9, + 9, + 9, + 9, + 9, + 9, + 4, + 9, + 4, + 9, + 4, + 9, + 9, + 9, + 9, + 4, + 9, + 9, + 9, + 9, + 9, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 7, + 7, + 7, + 7, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 7, + 7, + 8, + 8, + 8, + 8, + 8, + 8, + 9, + 9, + 9, + 9, + 9, + 9, + 7, + 7, + 8, + 8, + 8, + 8, + 9, + 9, + 9, + 9, + 9, + 9, + 8, + 8, + 8, + 9, + 8, + 8, + 9, + 9, + 9, + 9, + 8, + 9, + 7, + 7, + 8, + 9, + 8, + 8, + 9, + 9, + 9, + 9, + 8, + 9, + 8, + 8, + 8, + 8, + 8, + 8, + 8, + 8, + 8, + 8, + 9, + 7, + 7, + 7, + 8, + 8, + 8, + 8, + 8, + 8, + 8, + 8, + 9, + 7, + 8, + 8, + 9, + 9, + 9, + 9, + 8, + 8, + 8, + 8, + 7, + 7, + 7, + 7, + 9, + 8, + 9, + 8, + 8, + 8, + 8, + 8, + 7, + 7, + 7, + 7, + 9, + 8, + 9, + 8, + 8, + 8, + 8, + 8, + 7, + 7, + 7, + 7, + 8, + 8, + 8, + 8, + 8, + 8, + 8, + 8, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 8, + 8, + 8, + 5, + 8, + 5, + 5, + 5, + 8, + 8, + 8, + 4, + 8, + 4, + 4, + 4, + 8, + 8, + 8, + 4, + 8, + 4, + 4, + 4, + 8, + 8, + 8, + 4, + 8, + 4, + 4, + 4, + 8, + 8, + 8, + 4, + 8, + 4, + 4, + 4, + 8, + 8, + 8, + 4, + 8, + 4, + 4, + 4, + 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 + ] + }, + { + "stage": 2, + "replica": 7, + "widths": [ + 9, + 4, + 9, + 4, + 9, + 4, + 9, + 9, + 9, + 9, + 4, + 9, + 9, + 9, + 9, + 9, + 9, + 4, + 9, + 4, + 9, + 4, + 9, + 9, + 9, + 9, + 4, + 9, + 9, + 9, + 9, + 9, + 9, + 4, + 9, + 4, + 9, + 4, + 9, + 9, + 9, + 9, + 4, + 9, + 9, + 9, + 9, + 9, + 9, + 4, + 9, + 4, + 9, + 4, + 9, + 9, + 9, + 9, + 4, + 9, + 9, + 9, + 9, + 9, + 9, + 4, + 9, + 4, + 9, + 4, + 9, + 9, + 9, + 9, + 4, + 9, + 9, + 9, + 9, + 9, + 9, + 4, + 9, + 4, + 9, + 4, + 9, + 8, + 9, + 9, + 4, + 9, + 9, + 9, + 9, + 9, + 9, + 4, + 9, + 4, + 9, + 4, + 9, + 8, + 9, + 9, + 4, + 9, + 9, + 9, + 9, + 9, + 9, + 4, + 9, + 4, + 9, + 4, + 9, + 9, + 9, + 9, + 4, + 9, + 9, + 9, + 9, + 9, + 9, + 4, + 9, + 4, + 9, + 4, + 9, + 9, + 9, + 9, + 4, + 9, + 9, + 9, + 9, + 9, + 9, + 4, + 9, + 4, + 9, + 4, + 9, + 9, + 9, + 9, + 4, + 9, + 9, + 9, + 9, + 9, + 9, + 4, + 9, + 4, + 9, + 4, + 9, + 9, + 9, + 9, + 4, + 9, + 9, + 9, + 9, + 9, + 9, + 4, + 9, + 4, + 9, + 4, + 9, + 9, + 9, + 9, + 4, + 9, + 9, + 9, + 9, + 9, + 9, + 4, + 9, + 4, + 9, + 4, + 9, + 9, + 9, + 9, + 4, + 9, + 9, + 9, + 9, + 9, + 9, + 4, + 9, + 4, + 9, + 4, + 9, + 9, + 9, + 9, + 4, + 9, + 9, + 9, + 9, + 9, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 7, + 7, + 7, + 7, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 7, + 7, + 8, + 8, + 8, + 8, + 8, + 8, + 9, + 9, + 9, + 9, + 9, + 9, + 7, + 7, + 8, + 8, + 8, + 8, + 9, + 9, + 9, + 9, + 9, + 9, + 8, + 8, + 8, + 9, + 8, + 8, + 9, + 9, + 9, + 9, + 8, + 9, + 7, + 7, + 8, + 9, + 8, + 8, + 9, + 9, + 9, + 9, + 8, + 9, + 8, + 8, + 8, + 8, + 8, + 8, + 8, + 8, + 8, + 8, + 9, + 7, + 7, + 7, + 8, + 8, + 8, + 8, + 8, + 8, + 8, + 8, + 9, + 7, + 8, + 8, + 9, + 9, + 9, + 9, + 8, + 8, + 8, + 8, + 7, + 7, + 7, + 7, + 9, + 8, + 9, + 8, + 8, + 8, + 8, + 8, + 7, + 7, + 7, + 7, + 9, + 8, + 9, + 8, + 8, + 8, + 8, + 8, + 7, + 7, + 7, + 7, + 8, + 8, + 8, + 8, + 8, + 8, + 8, + 8, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 8, + 8, + 8, + 5, + 8, + 5, + 5, + 5, + 8, + 8, + 8, + 4, + 8, + 4, + 4, + 4, + 8, + 8, + 8, + 4, + 8, + 4, + 4, + 4, + 8, + 8, + 8, + 4, + 8, + 4, + 4, + 4, + 8, + 8, + 8, + 4, + 8, + 4, + 4, + 4, + 8, + 8, + 8, + 4, + 8, + 4, + 4, + 4, + 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 + ] + }, + { + "stage": 8, + "replica": 0, + "widths": [ + 9, + 4, + 9, + 4, + 9, + 4, + 9, + 9, + 9, + 9, + 4, + 9, + 9, + 9, + 9, + 9, + 9, + 4, + 9, + 4, + 9, + 4, + 9, + 9, + 9, + 9, + 4, + 9, + 9, + 9, + 9, + 9, + 9, + 4, + 9, + 4, + 9, + 4, + 9, + 9, + 9, + 9, + 4, + 9, + 9, + 9, + 9, + 9, + 9, + 4, + 9, + 4, + 9, + 4, + 9, + 9, + 9, + 9, + 4, + 9, + 9, + 9, + 9, + 9, + 9, + 4, + 9, + 4, + 9, + 4, + 9, + 9, + 9, + 9, + 4, + 9, + 9, + 9, + 9, + 9, + 9, + 4, + 9, + 4, + 9, + 4, + 9, + 8, + 9, + 9, + 4, + 9, + 9, + 9, + 9, + 9, + 9, + 4, + 9, + 4, + 9, + 4, + 9, + 8, + 9, + 9, + 4, + 9, + 9, + 9, + 9, + 9, + 9, + 4, + 9, + 4, + 9, + 4, + 9, + 9, + 9, + 9, + 4, + 9, + 9, + 9, + 9, + 9, + 9, + 4, + 9, + 4, + 9, + 4, + 9, + 9, + 9, + 9, + 4, + 9, + 9, + 9, + 9, + 9, + 9, + 4, + 9, + 4, + 9, + 4, + 9, + 9, + 9, + 9, + 4, + 9, + 9, + 9, + 9, + 9, + 9, + 4, + 9, + 4, + 9, + 4, + 9, + 9, + 9, + 9, + 4, + 9, + 9, + 9, + 9, + 9, + 9, + 4, + 9, + 4, + 9, + 4, + 9, + 9, + 9, + 9, + 4, + 9, + 9, + 9, + 9, + 9, + 9, + 4, + 9, + 4, + 9, + 4, + 9, + 9, + 9, + 9, + 4, + 9, + 9, + 9, + 9, + 9, + 9, + 4, + 9, + 4, + 9, + 4, + 9, + 9, + 9, + 9, + 4, + 9, + 9, + 9, + 9, + 9, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 7, + 7, + 7, + 7, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 7, + 7, + 8, + 8, + 8, + 8, + 8, + 8, + 9, + 9, + 9, + 9, + 9, + 9, + 7, + 7, + 8, + 8, + 8, + 8, + 9, + 9, + 9, + 9, + 9, + 9, + 8, + 8, + 8, + 9, + 8, + 8, + 9, + 9, + 9, + 9, + 8, + 9, + 7, + 7, + 8, + 9, + 8, + 8, + 9, + 9, + 9, + 9, + 8, + 9, + 8, + 8, + 8, + 8, + 8, + 8, + 8, + 8, + 8, + 8, + 9, + 7, + 7, + 7, + 8, + 8, + 8, + 8, + 8, + 8, + 8, + 8, + 9, + 7, + 8, + 8, + 9, + 9, + 9, + 9, + 8, + 8, + 8, + 8, + 7, + 7, + 7, + 7, + 9, + 8, + 9, + 8, + 8, + 8, + 8, + 8, + 7, + 7, + 7, + 7, + 9, + 8, + 9, + 8, + 8, + 8, + 8, + 8, + 7, + 7, + 7, + 7, + 8, + 8, + 8, + 8, + 8, + 8, + 8, + 8, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 8, + 8, + 8, + 5, + 8, + 5, + 5, + 5, + 8, + 8, + 8, + 4, + 8, + 4, + 4, + 4, + 8, + 8, + 8, + 4, + 8, + 4, + 4, + 4, + 8, + 8, + 8, + 4, + 8, + 4, + 4, + 4, + 8, + 8, + 8, + 4, + 8, + 4, + 4, + 4, + 8, + 8, + 8, + 4, + 8, + 4, + 4, + 4, + 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 + ] + }, + { + "stage": 3, + "replica": 6, + "widths": [ + 9, + 4, + 9, + 4, + 9, + 4, + 9, + 9, + 9, + 9, + 4, + 9, + 9, + 9, + 9, + 9, + 9, + 4, + 9, + 4, + 9, + 4, + 9, + 9, + 9, + 9, + 4, + 9, + 9, + 9, + 9, + 9, + 9, + 4, + 9, + 4, + 9, + 4, + 9, + 9, + 9, + 9, + 4, + 9, + 9, + 9, + 9, + 9, + 9, + 4, + 9, + 4, + 9, + 4, + 9, + 9, + 9, + 9, + 4, + 9, + 9, + 9, + 9, + 9, + 9, + 4, + 9, + 4, + 9, + 4, + 9, + 9, + 9, + 9, + 4, + 9, + 9, + 9, + 9, + 9, + 9, + 4, + 9, + 4, + 9, + 4, + 9, + 8, + 9, + 9, + 4, + 9, + 9, + 9, + 9, + 9, + 9, + 4, + 9, + 4, + 9, + 4, + 9, + 8, + 9, + 9, + 4, + 9, + 9, + 9, + 9, + 9, + 9, + 4, + 9, + 4, + 9, + 4, + 9, + 9, + 9, + 9, + 4, + 9, + 9, + 9, + 9, + 9, + 9, + 4, + 9, + 4, + 9, + 4, + 9, + 9, + 9, + 9, + 4, + 9, + 9, + 9, + 9, + 9, + 9, + 4, + 9, + 4, + 9, + 4, + 9, + 9, + 9, + 9, + 4, + 9, + 9, + 9, + 9, + 9, + 9, + 4, + 9, + 4, + 9, + 4, + 9, + 9, + 9, + 9, + 4, + 9, + 9, + 9, + 9, + 9, + 9, + 4, + 9, + 4, + 9, + 4, + 9, + 9, + 9, + 9, + 4, + 9, + 9, + 9, + 9, + 9, + 9, + 4, + 9, + 4, + 9, + 4, + 9, + 9, + 9, + 9, + 4, + 9, + 9, + 9, + 9, + 9, + 9, + 4, + 9, + 4, + 9, + 4, + 9, + 9, + 9, + 9, + 4, + 9, + 9, + 9, + 9, + 9, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 7, + 7, + 7, + 7, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 7, + 7, + 8, + 8, + 8, + 8, + 8, + 8, + 9, + 9, + 9, + 9, + 9, + 9, + 7, + 7, + 8, + 8, + 8, + 8, + 9, + 9, + 9, + 9, + 9, + 9, + 8, + 8, + 8, + 9, + 8, + 8, + 9, + 9, + 9, + 9, + 8, + 9, + 7, + 7, + 8, + 9, + 8, + 8, + 9, + 9, + 9, + 9, + 8, + 9, + 8, + 8, + 8, + 8, + 8, + 8, + 8, + 8, + 8, + 8, + 9, + 7, + 7, + 7, + 8, + 8, + 8, + 8, + 8, + 8, + 8, + 8, + 9, + 7, + 8, + 8, + 9, + 9, + 9, + 9, + 8, + 8, + 8, + 8, + 7, + 7, + 7, + 7, + 9, + 8, + 9, + 8, + 8, + 8, + 8, + 8, + 7, + 7, + 7, + 7, + 9, + 8, + 9, + 8, + 8, + 8, + 8, + 8, + 7, + 7, + 7, + 7, + 8, + 8, + 8, + 8, + 8, + 8, + 8, + 8, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 8, + 8, + 8, + 5, + 8, + 5, + 5, + 5, + 8, + 8, + 8, + 4, + 8, + 4, + 4, + 4, + 8, + 8, + 8, + 4, + 8, + 4, + 4, + 4, + 8, + 8, + 8, + 4, + 8, + 4, + 4, + 4, + 8, + 8, + 8, + 4, + 8, + 4, + 4, + 4, + 8, + 8, + 8, + 4, + 8, + 4, + 4, + 4, + 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 + ] + }, + { + "stage": 4, + "replica": 5, + "widths": [ + 9, + 4, + 9, + 4, + 9, + 4, + 9, + 9, + 9, + 9, + 4, + 9, + 9, + 9, + 9, + 9, + 9, + 4, + 9, + 4, + 9, + 4, + 9, + 9, + 9, + 9, + 4, + 9, + 9, + 9, + 9, + 9, + 9, + 4, + 9, + 4, + 9, + 4, + 9, + 9, + 9, + 9, + 4, + 9, + 9, + 9, + 9, + 9, + 9, + 4, + 9, + 4, + 9, + 4, + 9, + 9, + 9, + 9, + 4, + 9, + 9, + 9, + 9, + 9, + 9, + 4, + 9, + 4, + 9, + 4, + 9, + 9, + 9, + 9, + 4, + 9, + 9, + 9, + 9, + 9, + 9, + 4, + 9, + 4, + 9, + 4, + 9, + 8, + 9, + 9, + 4, + 9, + 9, + 9, + 9, + 9, + 9, + 4, + 9, + 4, + 9, + 4, + 9, + 8, + 9, + 9, + 4, + 9, + 9, + 9, + 9, + 9, + 9, + 4, + 9, + 4, + 9, + 4, + 9, + 9, + 9, + 9, + 4, + 9, + 9, + 9, + 9, + 9, + 9, + 4, + 9, + 4, + 9, + 4, + 9, + 9, + 9, + 9, + 4, + 9, + 9, + 9, + 9, + 9, + 9, + 4, + 9, + 4, + 9, + 4, + 9, + 9, + 9, + 9, + 4, + 9, + 9, + 9, + 9, + 9, + 9, + 4, + 9, + 4, + 9, + 4, + 9, + 9, + 9, + 9, + 4, + 9, + 9, + 9, + 9, + 9, + 9, + 4, + 9, + 4, + 9, + 4, + 9, + 9, + 9, + 9, + 4, + 9, + 9, + 9, + 9, + 9, + 9, + 4, + 9, + 4, + 9, + 4, + 9, + 9, + 9, + 9, + 4, + 9, + 9, + 9, + 9, + 9, + 9, + 4, + 9, + 4, + 9, + 4, + 9, + 9, + 9, + 9, + 4, + 9, + 9, + 9, + 9, + 9, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 7, + 7, + 7, + 7, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 7, + 7, + 8, + 8, + 8, + 8, + 8, + 8, + 9, + 9, + 9, + 9, + 9, + 9, + 7, + 7, + 8, + 8, + 8, + 8, + 9, + 9, + 9, + 9, + 9, + 9, + 8, + 8, + 8, + 9, + 8, + 8, + 9, + 9, + 9, + 9, + 8, + 9, + 7, + 7, + 8, + 9, + 8, + 8, + 9, + 9, + 9, + 9, + 8, + 9, + 8, + 8, + 8, + 8, + 8, + 8, + 8, + 8, + 8, + 8, + 9, + 7, + 7, + 7, + 8, + 8, + 8, + 8, + 8, + 8, + 8, + 8, + 9, + 7, + 8, + 8, + 9, + 9, + 9, + 9, + 8, + 8, + 8, + 8, + 7, + 7, + 7, + 7, + 9, + 8, + 9, + 8, + 8, + 8, + 8, + 8, + 7, + 7, + 7, + 7, + 9, + 8, + 9, + 8, + 8, + 8, + 8, + 8, + 7, + 7, + 7, + 7, + 8, + 8, + 8, + 8, + 8, + 8, + 8, + 8, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 8, + 8, + 8, + 5, + 8, + 5, + 5, + 5, + 8, + 8, + 8, + 4, + 8, + 4, + 4, + 4, + 8, + 8, + 8, + 4, + 8, + 4, + 4, + 4, + 8, + 8, + 8, + 4, + 8, + 4, + 4, + 4, + 8, + 8, + 8, + 4, + 8, + 4, + 4, + 4, + 8, + 8, + 8, + 4, + 8, + 4, + 4, + 4, + 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 + ] + }, + { + "stage": 5, + "replica": 4, + "widths": [ + 9, + 4, + 9, + 4, + 9, + 4, + 9, + 9, + 9, + 9, + 4, + 9, + 9, + 9, + 9, + 9, + 9, + 4, + 9, + 4, + 9, + 4, + 9, + 9, + 9, + 9, + 4, + 9, + 9, + 9, + 9, + 9, + 9, + 4, + 9, + 4, + 9, + 4, + 9, + 9, + 9, + 9, + 4, + 9, + 9, + 9, + 9, + 9, + 9, + 4, + 9, + 4, + 9, + 4, + 9, + 9, + 9, + 9, + 4, + 9, + 9, + 9, + 9, + 9, + 9, + 4, + 9, + 4, + 9, + 4, + 9, + 9, + 9, + 9, + 4, + 9, + 9, + 9, + 9, + 9, + 9, + 4, + 9, + 4, + 9, + 4, + 9, + 8, + 9, + 9, + 4, + 9, + 9, + 9, + 9, + 9, + 9, + 4, + 9, + 4, + 9, + 4, + 9, + 8, + 9, + 9, + 4, + 9, + 9, + 9, + 9, + 9, + 9, + 4, + 9, + 4, + 9, + 4, + 9, + 9, + 9, + 9, + 4, + 9, + 9, + 9, + 9, + 9, + 9, + 4, + 9, + 4, + 9, + 4, + 9, + 9, + 9, + 9, + 4, + 9, + 9, + 9, + 9, + 9, + 9, + 4, + 9, + 4, + 9, + 4, + 9, + 9, + 9, + 9, + 4, + 9, + 9, + 9, + 9, + 9, + 9, + 4, + 9, + 4, + 9, + 4, + 9, + 9, + 9, + 9, + 4, + 9, + 9, + 9, + 9, + 9, + 9, + 4, + 9, + 4, + 9, + 4, + 9, + 9, + 9, + 9, + 4, + 9, + 9, + 9, + 9, + 9, + 9, + 4, + 9, + 4, + 9, + 4, + 9, + 9, + 9, + 9, + 4, + 9, + 9, + 9, + 9, + 9, + 9, + 4, + 9, + 4, + 9, + 4, + 9, + 9, + 9, + 9, + 4, + 9, + 9, + 9, + 9, + 9, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 7, + 7, + 7, + 7, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 7, + 7, + 8, + 8, + 8, + 8, + 8, + 8, + 9, + 9, + 9, + 9, + 9, + 9, + 7, + 7, + 8, + 8, + 8, + 8, + 9, + 9, + 9, + 9, + 9, + 9, + 8, + 8, + 8, + 9, + 8, + 8, + 9, + 9, + 9, + 9, + 8, + 9, + 7, + 7, + 8, + 9, + 8, + 8, + 9, + 9, + 9, + 9, + 8, + 9, + 8, + 8, + 8, + 8, + 8, + 8, + 8, + 8, + 8, + 8, + 9, + 7, + 7, + 7, + 8, + 8, + 8, + 8, + 8, + 8, + 8, + 8, + 9, + 7, + 8, + 8, + 9, + 9, + 9, + 9, + 8, + 8, + 8, + 8, + 7, + 7, + 7, + 7, + 9, + 8, + 9, + 8, + 8, + 8, + 8, + 8, + 7, + 7, + 7, + 7, + 9, + 8, + 9, + 8, + 8, + 8, + 8, + 8, + 7, + 7, + 7, + 7, + 8, + 8, + 8, + 8, + 8, + 8, + 8, + 8, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 8, + 8, + 8, + 5, + 8, + 5, + 5, + 5, + 8, + 8, + 8, + 4, + 8, + 4, + 4, + 4, + 8, + 8, + 8, + 4, + 8, + 4, + 4, + 4, + 8, + 8, + 8, + 4, + 8, + 4, + 4, + 4, + 8, + 8, + 8, + 4, + 8, + 4, + 4, + 4, + 8, + 8, + 8, + 4, + 8, + 4, + 4, + 4, + 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 + ] + }, + { + "stage": 6, + "replica": 3, + "widths": [ + 9, + 4, + 9, + 4, + 9, + 4, + 9, + 9, + 9, + 9, + 4, + 9, + 9, + 9, + 9, + 9, + 9, + 4, + 9, + 4, + 9, + 4, + 9, + 9, + 9, + 9, + 4, + 9, + 9, + 9, + 9, + 9, + 9, + 4, + 9, + 4, + 9, + 4, + 9, + 9, + 9, + 9, + 4, + 9, + 9, + 9, + 9, + 9, + 9, + 4, + 9, + 4, + 9, + 4, + 9, + 9, + 9, + 9, + 4, + 9, + 9, + 9, + 9, + 9, + 9, + 4, + 9, + 4, + 9, + 4, + 9, + 9, + 9, + 9, + 4, + 9, + 9, + 9, + 9, + 9, + 9, + 4, + 9, + 4, + 9, + 4, + 9, + 8, + 9, + 9, + 4, + 9, + 9, + 9, + 9, + 9, + 9, + 4, + 9, + 4, + 9, + 4, + 9, + 8, + 9, + 9, + 4, + 9, + 9, + 9, + 9, + 9, + 9, + 4, + 9, + 4, + 9, + 4, + 9, + 9, + 9, + 9, + 4, + 9, + 9, + 9, + 9, + 9, + 9, + 4, + 9, + 4, + 9, + 4, + 9, + 9, + 9, + 9, + 4, + 9, + 9, + 9, + 9, + 9, + 9, + 4, + 9, + 4, + 9, + 4, + 9, + 9, + 9, + 9, + 4, + 9, + 9, + 9, + 9, + 9, + 9, + 4, + 9, + 4, + 9, + 4, + 9, + 9, + 9, + 9, + 4, + 9, + 9, + 9, + 9, + 9, + 9, + 4, + 9, + 4, + 9, + 4, + 9, + 9, + 9, + 9, + 4, + 9, + 9, + 9, + 9, + 9, + 9, + 4, + 9, + 4, + 9, + 4, + 9, + 9, + 9, + 9, + 4, + 9, + 9, + 9, + 9, + 9, + 9, + 4, + 9, + 4, + 9, + 4, + 9, + 9, + 9, + 9, + 4, + 9, + 9, + 9, + 9, + 9, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 7, + 7, + 7, + 7, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 7, + 7, + 8, + 8, + 8, + 8, + 8, + 8, + 9, + 9, + 9, + 9, + 9, + 9, + 7, + 7, + 8, + 8, + 8, + 8, + 9, + 9, + 9, + 9, + 9, + 9, + 8, + 8, + 8, + 9, + 8, + 8, + 9, + 9, + 9, + 9, + 8, + 9, + 7, + 7, + 8, + 9, + 8, + 8, + 9, + 9, + 9, + 9, + 8, + 9, + 8, + 8, + 8, + 8, + 8, + 8, + 8, + 8, + 8, + 8, + 9, + 7, + 7, + 7, + 8, + 8, + 8, + 8, + 8, + 8, + 8, + 8, + 9, + 7, + 8, + 8, + 9, + 9, + 9, + 9, + 8, + 8, + 8, + 8, + 7, + 7, + 7, + 7, + 9, + 8, + 9, + 8, + 8, + 8, + 8, + 8, + 7, + 7, + 7, + 7, + 9, + 8, + 9, + 8, + 8, + 8, + 8, + 8, + 7, + 7, + 7, + 7, + 8, + 8, + 8, + 8, + 8, + 8, + 8, + 8, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 8, + 8, + 8, + 5, + 8, + 5, + 5, + 5, + 8, + 8, + 8, + 4, + 8, + 4, + 4, + 4, + 8, + 8, + 8, + 4, + 8, + 4, + 4, + 4, + 8, + 8, + 8, + 4, + 8, + 4, + 4, + 4, + 8, + 8, + 8, + 4, + 8, + 4, + 4, + 4, + 8, + 8, + 8, + 4, + 8, + 4, + 4, + 4, + 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 + ] + }, + { + "stage": 7, + "replica": 2, + "widths": [ + 9, + 4, + 9, + 4, + 9, + 4, + 9, + 9, + 9, + 9, + 4, + 9, + 9, + 9, + 9, + 9, + 9, + 4, + 9, + 4, + 9, + 4, + 9, + 9, + 9, + 9, + 4, + 9, + 9, + 9, + 9, + 9, + 9, + 4, + 9, + 4, + 9, + 4, + 9, + 9, + 9, + 9, + 4, + 9, + 9, + 9, + 9, + 9, + 9, + 4, + 9, + 4, + 9, + 4, + 9, + 9, + 9, + 9, + 4, + 9, + 9, + 9, + 9, + 9, + 9, + 4, + 9, + 4, + 9, + 4, + 9, + 9, + 9, + 9, + 4, + 9, + 9, + 9, + 9, + 9, + 9, + 4, + 9, + 4, + 9, + 4, + 9, + 8, + 9, + 9, + 4, + 9, + 9, + 9, + 9, + 9, + 9, + 4, + 9, + 4, + 9, + 4, + 9, + 8, + 9, + 9, + 4, + 9, + 9, + 9, + 9, + 9, + 9, + 4, + 9, + 4, + 9, + 4, + 9, + 9, + 9, + 9, + 4, + 9, + 9, + 9, + 9, + 9, + 9, + 4, + 9, + 4, + 9, + 4, + 9, + 9, + 9, + 9, + 4, + 9, + 9, + 9, + 9, + 9, + 9, + 4, + 9, + 4, + 9, + 4, + 9, + 9, + 9, + 9, + 4, + 9, + 9, + 9, + 9, + 9, + 9, + 4, + 9, + 4, + 9, + 4, + 9, + 9, + 9, + 9, + 4, + 9, + 9, + 9, + 9, + 9, + 9, + 4, + 9, + 4, + 9, + 4, + 9, + 9, + 9, + 9, + 4, + 9, + 9, + 9, + 9, + 9, + 9, + 4, + 9, + 4, + 9, + 4, + 9, + 9, + 9, + 9, + 4, + 9, + 9, + 9, + 9, + 9, + 9, + 4, + 9, + 4, + 9, + 4, + 9, + 9, + 9, + 9, + 4, + 9, + 9, + 9, + 9, + 9, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 7, + 7, + 7, + 7, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 7, + 7, + 8, + 8, + 8, + 8, + 8, + 8, + 9, + 9, + 9, + 9, + 9, + 9, + 7, + 7, + 8, + 8, + 8, + 8, + 9, + 9, + 9, + 9, + 9, + 9, + 8, + 8, + 8, + 9, + 8, + 8, + 9, + 9, + 9, + 9, + 8, + 9, + 7, + 7, + 8, + 9, + 8, + 8, + 9, + 9, + 9, + 9, + 8, + 9, + 8, + 8, + 8, + 8, + 8, + 8, + 8, + 8, + 8, + 8, + 9, + 7, + 7, + 7, + 8, + 8, + 8, + 8, + 8, + 8, + 8, + 8, + 9, + 7, + 8, + 8, + 9, + 9, + 9, + 9, + 8, + 8, + 8, + 8, + 7, + 7, + 7, + 7, + 9, + 8, + 9, + 8, + 8, + 8, + 8, + 8, + 7, + 7, + 7, + 7, + 9, + 8, + 9, + 8, + 8, + 8, + 8, + 8, + 7, + 7, + 7, + 7, + 8, + 8, + 8, + 8, + 8, + 8, + 8, + 8, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 8, + 8, + 8, + 5, + 8, + 5, + 5, + 5, + 8, + 8, + 8, + 4, + 8, + 4, + 4, + 4, + 8, + 8, + 8, + 4, + 8, + 4, + 4, + 4, + 8, + 8, + 8, + 4, + 8, + 4, + 4, + 4, + 8, + 8, + 8, + 4, + 8, + 4, + 4, + 4, + 8, + 8, + 8, + 4, + 8, + 4, + 4, + 4, + 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 + ] + }, + { + "stage": 8, + "replica": 1, + "widths": [ + 9, + 4, + 9, + 4, + 9, + 4, + 9, + 9, + 9, + 9, + 4, + 9, + 9, + 9, + 9, + 9, + 9, + 4, + 9, + 4, + 9, + 4, + 9, + 9, + 9, + 9, + 4, + 9, + 9, + 9, + 9, + 9, + 9, + 4, + 9, + 4, + 9, + 4, + 9, + 9, + 9, + 9, + 4, + 9, + 9, + 9, + 9, + 9, + 9, + 4, + 9, + 4, + 9, + 4, + 9, + 9, + 9, + 9, + 4, + 9, + 9, + 9, + 9, + 9, + 9, + 4, + 9, + 4, + 9, + 4, + 9, + 9, + 9, + 9, + 4, + 9, + 9, + 9, + 9, + 9, + 9, + 4, + 9, + 4, + 9, + 4, + 9, + 8, + 9, + 9, + 4, + 9, + 9, + 9, + 9, + 9, + 9, + 4, + 9, + 4, + 9, + 4, + 9, + 8, + 9, + 9, + 4, + 9, + 9, + 9, + 9, + 9, + 9, + 4, + 9, + 4, + 9, + 4, + 9, + 9, + 9, + 9, + 4, + 9, + 9, + 9, + 9, + 9, + 9, + 4, + 9, + 4, + 9, + 4, + 9, + 9, + 9, + 9, + 4, + 9, + 9, + 9, + 9, + 9, + 9, + 4, + 9, + 4, + 9, + 4, + 9, + 9, + 9, + 9, + 4, + 9, + 9, + 9, + 9, + 9, + 9, + 4, + 9, + 4, + 9, + 4, + 9, + 9, + 9, + 9, + 4, + 9, + 9, + 9, + 9, + 9, + 9, + 4, + 9, + 4, + 9, + 4, + 9, + 9, + 9, + 9, + 4, + 9, + 9, + 9, + 9, + 9, + 9, + 4, + 9, + 4, + 9, + 4, + 9, + 9, + 9, + 9, + 4, + 9, + 9, + 9, + 9, + 9, + 9, + 4, + 9, + 4, + 9, + 4, + 9, + 9, + 9, + 9, + 4, + 9, + 9, + 9, + 9, + 9, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 7, + 7, + 7, + 7, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 7, + 7, + 8, + 8, + 8, + 8, + 8, + 8, + 9, + 9, + 9, + 9, + 9, + 9, + 7, + 7, + 8, + 8, + 8, + 8, + 9, + 9, + 9, + 9, + 9, + 9, + 8, + 8, + 8, + 9, + 8, + 8, + 9, + 9, + 9, + 9, + 8, + 9, + 7, + 7, + 8, + 9, + 8, + 8, + 9, + 9, + 9, + 9, + 8, + 9, + 8, + 8, + 8, + 8, + 8, + 8, + 8, + 8, + 8, + 8, + 9, + 7, + 7, + 7, + 8, + 8, + 8, + 8, + 8, + 8, + 8, + 8, + 9, + 7, + 8, + 8, + 9, + 9, + 9, + 9, + 8, + 8, + 8, + 8, + 7, + 7, + 7, + 7, + 9, + 8, + 9, + 8, + 8, + 8, + 8, + 8, + 7, + 7, + 7, + 7, + 9, + 8, + 9, + 8, + 8, + 8, + 8, + 8, + 7, + 7, + 7, + 7, + 8, + 8, + 8, + 8, + 8, + 8, + 8, + 8, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 8, + 8, + 8, + 5, + 8, + 5, + 5, + 5, + 8, + 8, + 8, + 4, + 8, + 4, + 4, + 4, + 8, + 8, + 8, + 4, + 8, + 4, + 4, + 4, + 8, + 8, + 8, + 4, + 8, + 4, + 4, + 4, + 8, + 8, + 8, + 4, + 8, + 4, + 4, + 4, + 8, + 8, + 8, + 4, + 8, + 4, + 4, + 4, + 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 + ] + }, + { + "stage": 3, + "replica": 7, + "widths": [ + 9, + 4, + 9, + 4, + 9, + 4, + 9, + 9, + 9, + 9, + 4, + 9, + 9, + 9, + 9, + 9, + 9, + 4, + 9, + 4, + 9, + 4, + 9, + 9, + 9, + 9, + 4, + 9, + 9, + 9, + 9, + 9, + 9, + 4, + 9, + 4, + 9, + 4, + 9, + 9, + 9, + 9, + 4, + 9, + 9, + 9, + 9, + 9, + 9, + 4, + 9, + 4, + 9, + 4, + 9, + 9, + 9, + 9, + 4, + 9, + 9, + 9, + 9, + 9, + 9, + 4, + 9, + 4, + 9, + 4, + 9, + 9, + 9, + 9, + 4, + 9, + 9, + 9, + 9, + 9, + 9, + 4, + 9, + 4, + 9, + 4, + 9, + 8, + 9, + 9, + 4, + 9, + 9, + 9, + 9, + 9, + 9, + 4, + 9, + 4, + 9, + 4, + 9, + 8, + 9, + 9, + 4, + 9, + 9, + 9, + 9, + 9, + 9, + 4, + 9, + 4, + 9, + 4, + 9, + 9, + 9, + 9, + 4, + 9, + 9, + 9, + 9, + 9, + 9, + 4, + 9, + 4, + 9, + 4, + 9, + 9, + 9, + 9, + 4, + 9, + 9, + 9, + 9, + 9, + 9, + 4, + 9, + 4, + 9, + 4, + 9, + 9, + 9, + 9, + 4, + 9, + 9, + 9, + 9, + 9, + 9, + 4, + 9, + 4, + 9, + 4, + 9, + 9, + 9, + 9, + 4, + 9, + 9, + 9, + 9, + 9, + 9, + 4, + 9, + 4, + 9, + 4, + 9, + 9, + 9, + 9, + 4, + 9, + 9, + 9, + 9, + 9, + 9, + 4, + 9, + 4, + 9, + 4, + 9, + 9, + 9, + 9, + 4, + 9, + 9, + 9, + 9, + 9, + 9, + 4, + 9, + 4, + 9, + 4, + 9, + 9, + 9, + 9, + 4, + 9, + 9, + 9, + 9, + 9, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 7, + 7, + 7, + 7, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 7, + 7, + 8, + 8, + 8, + 8, + 8, + 8, + 9, + 9, + 9, + 9, + 9, + 9, + 7, + 7, + 8, + 8, + 8, + 8, + 9, + 9, + 9, + 9, + 9, + 9, + 8, + 8, + 8, + 9, + 8, + 8, + 9, + 9, + 9, + 9, + 8, + 9, + 7, + 7, + 8, + 9, + 8, + 8, + 9, + 9, + 9, + 9, + 8, + 9, + 8, + 8, + 8, + 8, + 8, + 8, + 8, + 8, + 8, + 8, + 9, + 7, + 7, + 7, + 8, + 8, + 8, + 8, + 8, + 8, + 8, + 8, + 9, + 7, + 8, + 8, + 9, + 9, + 9, + 9, + 8, + 8, + 8, + 8, + 7, + 7, + 7, + 7, + 9, + 8, + 9, + 8, + 8, + 8, + 8, + 8, + 7, + 7, + 7, + 7, + 9, + 8, + 9, + 8, + 8, + 8, + 8, + 8, + 7, + 7, + 7, + 7, + 8, + 8, + 8, + 8, + 8, + 8, + 8, + 8, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 8, + 8, + 8, + 5, + 8, + 5, + 5, + 5, + 8, + 8, + 8, + 4, + 8, + 4, + 4, + 4, + 8, + 8, + 8, + 4, + 8, + 4, + 4, + 4, + 8, + 8, + 8, + 4, + 8, + 4, + 4, + 4, + 8, + 8, + 8, + 4, + 8, + 4, + 4, + 4, + 8, + 8, + 8, + 4, + 8, + 4, + 4, + 4, + 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 + ] + }, + { + "stage": 4, + "replica": 6, + "widths": [ + 9, + 4, + 9, + 4, + 9, + 4, + 9, + 9, + 9, + 9, + 4, + 9, + 9, + 9, + 9, + 9, + 9, + 4, + 9, + 4, + 9, + 4, + 9, + 9, + 9, + 9, + 4, + 9, + 9, + 9, + 9, + 9, + 9, + 4, + 9, + 4, + 9, + 4, + 9, + 9, + 9, + 9, + 4, + 9, + 9, + 9, + 9, + 9, + 9, + 4, + 9, + 4, + 9, + 4, + 9, + 9, + 9, + 9, + 4, + 9, + 9, + 9, + 9, + 9, + 9, + 4, + 9, + 4, + 9, + 4, + 9, + 9, + 9, + 9, + 4, + 9, + 9, + 9, + 9, + 9, + 9, + 4, + 9, + 4, + 9, + 4, + 9, + 8, + 9, + 9, + 4, + 9, + 9, + 9, + 9, + 9, + 9, + 4, + 9, + 4, + 9, + 4, + 9, + 8, + 9, + 9, + 4, + 9, + 9, + 9, + 9, + 9, + 9, + 4, + 9, + 4, + 9, + 4, + 9, + 9, + 9, + 9, + 4, + 9, + 9, + 9, + 9, + 9, + 9, + 4, + 9, + 4, + 9, + 4, + 9, + 9, + 9, + 9, + 4, + 9, + 9, + 9, + 9, + 9, + 9, + 4, + 9, + 4, + 9, + 4, + 9, + 9, + 9, + 9, + 4, + 9, + 9, + 9, + 9, + 9, + 9, + 4, + 9, + 4, + 9, + 4, + 9, + 9, + 9, + 9, + 4, + 9, + 9, + 9, + 9, + 9, + 9, + 4, + 9, + 4, + 9, + 4, + 9, + 9, + 9, + 9, + 4, + 9, + 9, + 9, + 9, + 9, + 9, + 4, + 9, + 4, + 9, + 4, + 9, + 9, + 9, + 9, + 4, + 9, + 9, + 9, + 9, + 9, + 9, + 4, + 9, + 4, + 9, + 4, + 9, + 9, + 9, + 9, + 4, + 9, + 9, + 9, + 9, + 9, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 7, + 7, + 7, + 7, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 7, + 7, + 8, + 8, + 8, + 8, + 8, + 8, + 9, + 9, + 9, + 9, + 9, + 9, + 7, + 7, + 8, + 8, + 8, + 8, + 9, + 9, + 9, + 9, + 9, + 9, + 8, + 8, + 8, + 9, + 8, + 8, + 9, + 9, + 9, + 9, + 8, + 9, + 7, + 7, + 8, + 9, + 8, + 8, + 9, + 9, + 9, + 9, + 8, + 9, + 8, + 8, + 8, + 8, + 8, + 8, + 8, + 8, + 8, + 8, + 9, + 7, + 7, + 7, + 8, + 8, + 8, + 8, + 8, + 8, + 8, + 8, + 9, + 7, + 8, + 8, + 9, + 9, + 9, + 9, + 8, + 8, + 8, + 8, + 7, + 7, + 7, + 7, + 9, + 8, + 9, + 8, + 8, + 8, + 8, + 8, + 7, + 7, + 7, + 7, + 9, + 8, + 9, + 8, + 8, + 8, + 8, + 8, + 7, + 7, + 7, + 7, + 8, + 8, + 8, + 8, + 8, + 8, + 8, + 8, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 8, + 8, + 8, + 5, + 8, + 5, + 5, + 5, + 8, + 8, + 8, + 4, + 8, + 4, + 4, + 4, + 8, + 8, + 8, + 4, + 8, + 4, + 4, + 4, + 8, + 8, + 8, + 4, + 8, + 4, + 4, + 4, + 8, + 8, + 8, + 4, + 8, + 4, + 4, + 4, + 8, + 8, + 8, + 4, + 8, + 4, + 4, + 4, + 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 + ] + }, + { + "stage": 5, + "replica": 5, + "widths": [ + 9, + 4, + 9, + 4, + 9, + 4, + 9, + 9, + 9, + 9, + 4, + 9, + 9, + 9, + 9, + 9, + 9, + 4, + 9, + 4, + 9, + 4, + 9, + 9, + 9, + 9, + 4, + 9, + 9, + 9, + 9, + 9, + 9, + 4, + 9, + 4, + 9, + 4, + 9, + 9, + 9, + 9, + 4, + 9, + 9, + 9, + 9, + 9, + 9, + 4, + 9, + 4, + 9, + 4, + 9, + 9, + 9, + 9, + 4, + 9, + 9, + 9, + 9, + 9, + 9, + 4, + 9, + 4, + 9, + 4, + 9, + 9, + 9, + 9, + 4, + 9, + 9, + 9, + 9, + 9, + 9, + 4, + 9, + 4, + 9, + 4, + 9, + 8, + 9, + 9, + 4, + 9, + 9, + 9, + 9, + 9, + 9, + 4, + 9, + 4, + 9, + 4, + 9, + 8, + 9, + 9, + 4, + 9, + 9, + 9, + 9, + 9, + 9, + 4, + 9, + 4, + 9, + 4, + 9, + 9, + 9, + 9, + 4, + 9, + 9, + 9, + 9, + 9, + 9, + 4, + 9, + 4, + 9, + 4, + 9, + 9, + 9, + 9, + 4, + 9, + 9, + 9, + 9, + 9, + 9, + 4, + 9, + 4, + 9, + 4, + 9, + 9, + 9, + 9, + 4, + 9, + 9, + 9, + 9, + 9, + 9, + 4, + 9, + 4, + 9, + 4, + 9, + 9, + 9, + 9, + 4, + 9, + 9, + 9, + 9, + 9, + 9, + 4, + 9, + 4, + 9, + 4, + 9, + 9, + 9, + 9, + 4, + 9, + 9, + 9, + 9, + 9, + 9, + 4, + 9, + 4, + 9, + 4, + 9, + 9, + 9, + 9, + 4, + 9, + 9, + 9, + 9, + 9, + 9, + 4, + 9, + 4, + 9, + 4, + 9, + 9, + 9, + 9, + 4, + 9, + 9, + 9, + 9, + 9, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 7, + 7, + 7, + 7, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 7, + 7, + 8, + 8, + 8, + 8, + 8, + 8, + 9, + 9, + 9, + 9, + 9, + 9, + 7, + 7, + 8, + 8, + 8, + 8, + 9, + 9, + 9, + 9, + 9, + 9, + 8, + 8, + 8, + 9, + 8, + 8, + 9, + 9, + 9, + 9, + 8, + 9, + 7, + 7, + 8, + 9, + 8, + 8, + 9, + 9, + 9, + 9, + 8, + 9, + 8, + 8, + 8, + 8, + 8, + 8, + 8, + 8, + 8, + 8, + 9, + 7, + 7, + 7, + 8, + 8, + 8, + 8, + 8, + 8, + 8, + 8, + 9, + 7, + 8, + 8, + 9, + 9, + 9, + 9, + 8, + 8, + 8, + 8, + 7, + 7, + 7, + 7, + 9, + 8, + 9, + 8, + 8, + 8, + 8, + 8, + 7, + 7, + 7, + 7, + 9, + 8, + 9, + 8, + 8, + 8, + 8, + 8, + 7, + 7, + 7, + 7, + 8, + 8, + 8, + 8, + 8, + 8, + 8, + 8, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 8, + 8, + 8, + 5, + 8, + 5, + 5, + 5, + 8, + 8, + 8, + 4, + 8, + 4, + 4, + 4, + 8, + 8, + 8, + 4, + 8, + 4, + 4, + 4, + 8, + 8, + 8, + 4, + 8, + 4, + 4, + 4, + 8, + 8, + 8, + 4, + 8, + 4, + 4, + 4, + 8, + 8, + 8, + 4, + 8, + 4, + 4, + 4, + 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 + ] + }, + { + "stage": 6, + "replica": 4, + "widths": [ + 9, + 4, + 9, + 4, + 9, + 4, + 9, + 9, + 9, + 9, + 4, + 9, + 9, + 9, + 9, + 9, + 9, + 4, + 9, + 4, + 9, + 4, + 9, + 9, + 9, + 9, + 4, + 9, + 9, + 9, + 9, + 9, + 9, + 4, + 9, + 4, + 9, + 4, + 9, + 9, + 9, + 9, + 4, + 9, + 9, + 9, + 9, + 9, + 9, + 4, + 9, + 4, + 9, + 4, + 9, + 9, + 9, + 9, + 4, + 9, + 9, + 9, + 9, + 9, + 9, + 4, + 9, + 4, + 9, + 4, + 9, + 9, + 9, + 9, + 4, + 9, + 9, + 9, + 9, + 9, + 9, + 4, + 9, + 4, + 9, + 4, + 9, + 8, + 9, + 9, + 4, + 9, + 9, + 9, + 9, + 9, + 9, + 4, + 9, + 4, + 9, + 4, + 9, + 8, + 9, + 9, + 4, + 9, + 9, + 9, + 9, + 9, + 9, + 4, + 9, + 4, + 9, + 4, + 9, + 9, + 9, + 9, + 4, + 9, + 9, + 9, + 9, + 9, + 9, + 4, + 9, + 4, + 9, + 4, + 9, + 9, + 9, + 9, + 4, + 9, + 9, + 9, + 9, + 9, + 9, + 4, + 9, + 4, + 9, + 4, + 9, + 9, + 9, + 9, + 4, + 9, + 9, + 9, + 9, + 9, + 9, + 4, + 9, + 4, + 9, + 4, + 9, + 9, + 9, + 9, + 4, + 9, + 9, + 9, + 9, + 9, + 9, + 4, + 9, + 4, + 9, + 4, + 9, + 9, + 9, + 9, + 4, + 9, + 9, + 9, + 9, + 9, + 9, + 4, + 9, + 4, + 9, + 4, + 9, + 9, + 9, + 9, + 4, + 9, + 9, + 9, + 9, + 9, + 9, + 4, + 9, + 4, + 9, + 4, + 9, + 9, + 9, + 9, + 4, + 9, + 9, + 9, + 9, + 9, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 7, + 7, + 7, + 7, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 7, + 7, + 8, + 8, + 8, + 8, + 8, + 8, + 9, + 9, + 9, + 9, + 9, + 9, + 7, + 7, + 8, + 8, + 8, + 8, + 9, + 9, + 9, + 9, + 9, + 9, + 8, + 8, + 8, + 9, + 8, + 8, + 9, + 9, + 9, + 9, + 8, + 9, + 7, + 7, + 8, + 9, + 8, + 8, + 9, + 9, + 9, + 9, + 8, + 9, + 8, + 8, + 8, + 8, + 8, + 8, + 8, + 8, + 8, + 8, + 9, + 7, + 7, + 7, + 8, + 8, + 8, + 8, + 8, + 8, + 8, + 8, + 9, + 7, + 8, + 8, + 9, + 9, + 9, + 9, + 8, + 8, + 8, + 8, + 7, + 7, + 7, + 7, + 9, + 8, + 9, + 8, + 8, + 8, + 8, + 8, + 7, + 7, + 7, + 7, + 9, + 8, + 9, + 8, + 8, + 8, + 8, + 8, + 7, + 7, + 7, + 7, + 8, + 8, + 8, + 8, + 8, + 8, + 8, + 8, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 8, + 8, + 8, + 5, + 8, + 5, + 5, + 5, + 8, + 8, + 8, + 4, + 8, + 4, + 4, + 4, + 8, + 8, + 8, + 4, + 8, + 4, + 4, + 4, + 8, + 8, + 8, + 4, + 8, + 4, + 4, + 4, + 8, + 8, + 8, + 4, + 8, + 4, + 4, + 4, + 8, + 8, + 8, + 4, + 8, + 4, + 4, + 4, + 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 + ] + }, + { + "stage": 7, + "replica": 3, + "widths": [ + 9, + 4, + 9, + 4, + 9, + 4, + 9, + 9, + 9, + 9, + 4, + 9, + 9, + 9, + 9, + 9, + 9, + 4, + 9, + 4, + 9, + 4, + 9, + 9, + 9, + 9, + 4, + 9, + 9, + 9, + 9, + 9, + 9, + 4, + 9, + 4, + 9, + 4, + 9, + 9, + 9, + 9, + 4, + 9, + 9, + 9, + 9, + 9, + 9, + 4, + 9, + 4, + 9, + 4, + 9, + 9, + 9, + 9, + 4, + 9, + 9, + 9, + 9, + 9, + 9, + 4, + 9, + 4, + 9, + 4, + 9, + 9, + 9, + 9, + 4, + 9, + 9, + 9, + 9, + 9, + 9, + 4, + 9, + 4, + 9, + 4, + 9, + 8, + 9, + 9, + 4, + 9, + 9, + 9, + 9, + 9, + 9, + 4, + 9, + 4, + 9, + 4, + 9, + 8, + 9, + 9, + 4, + 9, + 9, + 9, + 9, + 9, + 9, + 4, + 9, + 4, + 9, + 4, + 9, + 9, + 9, + 9, + 4, + 9, + 9, + 9, + 9, + 9, + 9, + 4, + 9, + 4, + 9, + 4, + 9, + 9, + 9, + 9, + 4, + 9, + 9, + 9, + 9, + 9, + 9, + 4, + 9, + 4, + 9, + 4, + 9, + 9, + 9, + 9, + 4, + 9, + 9, + 9, + 9, + 9, + 9, + 4, + 9, + 4, + 9, + 4, + 9, + 9, + 9, + 9, + 4, + 9, + 9, + 9, + 9, + 9, + 9, + 4, + 9, + 4, + 9, + 4, + 9, + 9, + 9, + 9, + 4, + 9, + 9, + 9, + 9, + 9, + 9, + 4, + 9, + 4, + 9, + 4, + 9, + 9, + 9, + 9, + 4, + 9, + 9, + 9, + 9, + 9, + 9, + 4, + 9, + 4, + 9, + 4, + 9, + 9, + 9, + 9, + 4, + 9, + 9, + 9, + 9, + 9, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 7, + 7, + 7, + 7, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 7, + 7, + 8, + 8, + 8, + 8, + 8, + 8, + 9, + 9, + 9, + 9, + 9, + 9, + 7, + 7, + 8, + 8, + 8, + 8, + 9, + 9, + 9, + 9, + 9, + 9, + 8, + 8, + 8, + 9, + 8, + 8, + 9, + 9, + 9, + 9, + 8, + 9, + 7, + 7, + 8, + 9, + 8, + 8, + 9, + 9, + 9, + 9, + 8, + 9, + 8, + 8, + 8, + 8, + 8, + 8, + 8, + 8, + 8, + 8, + 9, + 7, + 7, + 7, + 8, + 8, + 8, + 8, + 8, + 8, + 8, + 8, + 9, + 7, + 8, + 8, + 9, + 9, + 9, + 9, + 8, + 8, + 8, + 8, + 7, + 7, + 7, + 7, + 9, + 8, + 9, + 8, + 8, + 8, + 8, + 8, + 7, + 7, + 7, + 7, + 9, + 8, + 9, + 8, + 8, + 8, + 8, + 8, + 7, + 7, + 7, + 7, + 8, + 8, + 8, + 8, + 8, + 8, + 8, + 8, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 8, + 8, + 8, + 5, + 8, + 5, + 5, + 5, + 8, + 8, + 8, + 4, + 8, + 4, + 4, + 4, + 8, + 8, + 8, + 4, + 8, + 4, + 4, + 4, + 8, + 8, + 8, + 4, + 8, + 4, + 4, + 4, + 8, + 8, + 8, + 4, + 8, + 4, + 4, + 4, + 8, + 8, + 8, + 4, + 8, + 4, + 4, + 4, + 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 + ] + }, + { + "stage": 8, + "replica": 2, + "widths": [ + 9, + 4, + 9, + 4, + 9, + 4, + 9, + 9, + 9, + 9, + 4, + 9, + 9, + 9, + 9, + 9, + 9, + 4, + 9, + 4, + 9, + 4, + 9, + 9, + 9, + 9, + 4, + 9, + 9, + 9, + 9, + 9, + 9, + 4, + 9, + 4, + 9, + 4, + 9, + 9, + 9, + 9, + 4, + 9, + 9, + 9, + 9, + 9, + 9, + 4, + 9, + 4, + 9, + 4, + 9, + 9, + 9, + 9, + 4, + 9, + 9, + 9, + 9, + 9, + 9, + 4, + 9, + 4, + 9, + 4, + 9, + 9, + 9, + 9, + 4, + 9, + 9, + 9, + 9, + 9, + 9, + 4, + 9, + 4, + 9, + 4, + 9, + 8, + 9, + 9, + 4, + 9, + 9, + 9, + 9, + 9, + 9, + 4, + 9, + 4, + 9, + 4, + 9, + 8, + 9, + 9, + 4, + 9, + 9, + 9, + 9, + 9, + 9, + 4, + 9, + 4, + 9, + 4, + 9, + 9, + 9, + 9, + 4, + 9, + 9, + 9, + 9, + 9, + 9, + 4, + 9, + 4, + 9, + 4, + 9, + 9, + 9, + 9, + 4, + 9, + 9, + 9, + 9, + 9, + 9, + 4, + 9, + 4, + 9, + 4, + 9, + 9, + 9, + 9, + 4, + 9, + 9, + 9, + 9, + 9, + 9, + 4, + 9, + 4, + 9, + 4, + 9, + 9, + 9, + 9, + 4, + 9, + 9, + 9, + 9, + 9, + 9, + 4, + 9, + 4, + 9, + 4, + 9, + 9, + 9, + 9, + 4, + 9, + 9, + 9, + 9, + 9, + 9, + 4, + 9, + 4, + 9, + 4, + 9, + 9, + 9, + 9, + 4, + 9, + 9, + 9, + 9, + 9, + 9, + 4, + 9, + 4, + 9, + 4, + 9, + 9, + 9, + 9, + 4, + 9, + 9, + 9, + 9, + 9, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 7, + 7, + 7, + 7, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 7, + 7, + 8, + 8, + 8, + 8, + 8, + 8, + 9, + 9, + 9, + 9, + 9, + 9, + 7, + 7, + 8, + 8, + 8, + 8, + 9, + 9, + 9, + 9, + 9, + 9, + 8, + 8, + 8, + 9, + 8, + 8, + 9, + 9, + 9, + 9, + 8, + 9, + 7, + 7, + 8, + 9, + 8, + 8, + 9, + 9, + 9, + 9, + 8, + 9, + 8, + 8, + 8, + 8, + 8, + 8, + 8, + 8, + 8, + 8, + 9, + 7, + 7, + 7, + 8, + 8, + 8, + 8, + 8, + 8, + 8, + 8, + 9, + 7, + 8, + 8, + 9, + 9, + 9, + 9, + 8, + 8, + 8, + 8, + 7, + 7, + 7, + 7, + 9, + 8, + 9, + 8, + 8, + 8, + 8, + 8, + 7, + 7, + 7, + 7, + 9, + 8, + 9, + 8, + 8, + 8, + 8, + 8, + 7, + 7, + 7, + 7, + 8, + 8, + 8, + 8, + 8, + 8, + 8, + 8, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 8, + 8, + 8, + 5, + 8, + 5, + 5, + 5, + 8, + 8, + 8, + 4, + 8, + 4, + 4, + 4, + 8, + 8, + 8, + 4, + 8, + 4, + 4, + 4, + 8, + 8, + 8, + 4, + 8, + 4, + 4, + 4, + 8, + 8, + 8, + 4, + 8, + 4, + 4, + 4, + 8, + 8, + 8, + 4, + 8, + 4, + 4, + 4, + 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 + ] + }, + { + "stage": 4, + "replica": 7, + "widths": [ + 9, + 4, + 9, + 4, + 9, + 4, + 9, + 9, + 9, + 9, + 4, + 9, + 9, + 9, + 9, + 9, + 9, + 4, + 9, + 4, + 9, + 4, + 9, + 9, + 9, + 9, + 4, + 9, + 9, + 9, + 9, + 9, + 9, + 4, + 9, + 4, + 9, + 4, + 9, + 9, + 9, + 9, + 4, + 9, + 9, + 9, + 9, + 9, + 9, + 4, + 9, + 4, + 9, + 4, + 9, + 9, + 9, + 9, + 4, + 9, + 9, + 9, + 9, + 9, + 9, + 4, + 9, + 4, + 9, + 4, + 9, + 9, + 9, + 9, + 4, + 9, + 9, + 9, + 9, + 9, + 9, + 4, + 9, + 4, + 9, + 4, + 9, + 8, + 9, + 9, + 4, + 9, + 9, + 9, + 9, + 9, + 9, + 4, + 9, + 4, + 9, + 4, + 9, + 8, + 9, + 9, + 4, + 9, + 9, + 9, + 9, + 9, + 9, + 4, + 9, + 4, + 9, + 4, + 9, + 9, + 9, + 9, + 4, + 9, + 9, + 9, + 9, + 9, + 9, + 4, + 9, + 4, + 9, + 4, + 9, + 9, + 9, + 9, + 4, + 9, + 9, + 9, + 9, + 9, + 9, + 4, + 9, + 4, + 9, + 4, + 9, + 9, + 9, + 9, + 4, + 9, + 9, + 9, + 9, + 9, + 9, + 4, + 9, + 4, + 9, + 4, + 9, + 9, + 9, + 9, + 4, + 9, + 9, + 9, + 9, + 9, + 9, + 4, + 9, + 4, + 9, + 4, + 9, + 9, + 9, + 9, + 4, + 9, + 9, + 9, + 9, + 9, + 9, + 4, + 9, + 4, + 9, + 4, + 9, + 9, + 9, + 9, + 4, + 9, + 9, + 9, + 9, + 9, + 9, + 4, + 9, + 4, + 9, + 4, + 9, + 9, + 9, + 9, + 4, + 9, + 9, + 9, + 9, + 9, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 7, + 7, + 7, + 7, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 7, + 7, + 8, + 8, + 8, + 8, + 8, + 8, + 9, + 9, + 9, + 9, + 9, + 9, + 7, + 7, + 8, + 8, + 8, + 8, + 9, + 9, + 9, + 9, + 9, + 9, + 8, + 8, + 8, + 9, + 8, + 8, + 9, + 9, + 9, + 9, + 8, + 9, + 7, + 7, + 8, + 9, + 8, + 8, + 9, + 9, + 9, + 9, + 8, + 9, + 8, + 8, + 8, + 8, + 8, + 8, + 8, + 8, + 8, + 8, + 9, + 7, + 7, + 7, + 8, + 8, + 8, + 8, + 8, + 8, + 8, + 8, + 9, + 7, + 8, + 8, + 9, + 9, + 9, + 9, + 8, + 8, + 8, + 8, + 7, + 7, + 7, + 7, + 9, + 8, + 9, + 8, + 8, + 8, + 8, + 8, + 7, + 7, + 7, + 7, + 9, + 8, + 9, + 8, + 8, + 8, + 8, + 8, + 7, + 7, + 7, + 7, + 8, + 8, + 8, + 8, + 8, + 8, + 8, + 8, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 8, + 8, + 8, + 5, + 8, + 5, + 5, + 5, + 8, + 8, + 8, + 4, + 8, + 4, + 4, + 4, + 8, + 8, + 8, + 4, + 8, + 4, + 4, + 4, + 8, + 8, + 8, + 4, + 8, + 4, + 4, + 4, + 8, + 8, + 8, + 4, + 8, + 4, + 4, + 4, + 8, + 8, + 8, + 4, + 8, + 4, + 4, + 4, + 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 + ] + }, + { + "stage": 5, + "replica": 6, + "widths": [ + 9, + 4, + 9, + 4, + 9, + 4, + 9, + 9, + 9, + 9, + 4, + 9, + 9, + 9, + 9, + 9, + 9, + 4, + 9, + 4, + 9, + 4, + 9, + 9, + 9, + 9, + 4, + 9, + 9, + 9, + 9, + 9, + 9, + 4, + 9, + 4, + 9, + 4, + 9, + 9, + 9, + 9, + 4, + 9, + 9, + 9, + 9, + 9, + 9, + 4, + 9, + 4, + 9, + 4, + 9, + 9, + 9, + 9, + 4, + 9, + 9, + 9, + 9, + 9, + 9, + 4, + 9, + 4, + 9, + 4, + 9, + 9, + 9, + 9, + 4, + 9, + 9, + 9, + 9, + 9, + 9, + 4, + 9, + 4, + 9, + 4, + 9, + 8, + 9, + 9, + 4, + 9, + 9, + 9, + 9, + 9, + 9, + 4, + 9, + 4, + 9, + 4, + 9, + 8, + 9, + 9, + 4, + 9, + 9, + 9, + 9, + 9, + 9, + 4, + 9, + 4, + 9, + 4, + 9, + 9, + 9, + 9, + 4, + 9, + 9, + 9, + 9, + 9, + 9, + 4, + 9, + 4, + 9, + 4, + 9, + 9, + 9, + 9, + 4, + 9, + 9, + 9, + 9, + 9, + 9, + 4, + 9, + 4, + 9, + 4, + 9, + 9, + 9, + 9, + 4, + 9, + 9, + 9, + 9, + 9, + 9, + 4, + 9, + 4, + 9, + 4, + 9, + 9, + 9, + 9, + 4, + 9, + 9, + 9, + 9, + 9, + 9, + 4, + 9, + 4, + 9, + 4, + 9, + 9, + 9, + 9, + 4, + 9, + 9, + 9, + 9, + 9, + 9, + 4, + 9, + 4, + 9, + 4, + 9, + 9, + 9, + 9, + 4, + 9, + 9, + 9, + 9, + 9, + 9, + 4, + 9, + 4, + 9, + 4, + 9, + 9, + 9, + 9, + 4, + 9, + 9, + 9, + 9, + 9, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 7, + 7, + 7, + 7, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 7, + 7, + 8, + 8, + 8, + 8, + 8, + 8, + 9, + 9, + 9, + 9, + 9, + 9, + 7, + 7, + 8, + 8, + 8, + 8, + 9, + 9, + 9, + 9, + 9, + 9, + 8, + 8, + 8, + 9, + 8, + 8, + 9, + 9, + 9, + 9, + 8, + 9, + 7, + 7, + 8, + 9, + 8, + 8, + 9, + 9, + 9, + 9, + 8, + 9, + 8, + 8, + 8, + 8, + 8, + 8, + 8, + 8, + 8, + 8, + 9, + 7, + 7, + 7, + 8, + 8, + 8, + 8, + 8, + 8, + 8, + 8, + 9, + 7, + 8, + 8, + 9, + 9, + 9, + 9, + 8, + 8, + 8, + 8, + 7, + 7, + 7, + 7, + 9, + 8, + 9, + 8, + 8, + 8, + 8, + 8, + 7, + 7, + 7, + 7, + 9, + 8, + 9, + 8, + 8, + 8, + 8, + 8, + 7, + 7, + 7, + 7, + 8, + 8, + 8, + 8, + 8, + 8, + 8, + 8, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 8, + 8, + 8, + 5, + 8, + 5, + 5, + 5, + 8, + 8, + 8, + 4, + 8, + 4, + 4, + 4, + 8, + 8, + 8, + 4, + 8, + 4, + 4, + 4, + 8, + 8, + 8, + 4, + 8, + 4, + 4, + 4, + 8, + 8, + 8, + 4, + 8, + 4, + 4, + 4, + 8, + 8, + 8, + 4, + 8, + 4, + 4, + 4, + 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 + ] + }, + { + "stage": 6, + "replica": 5, + "widths": [ + 9, + 4, + 9, + 4, + 9, + 4, + 9, + 9, + 9, + 9, + 4, + 9, + 9, + 9, + 9, + 9, + 9, + 4, + 9, + 4, + 9, + 4, + 9, + 9, + 9, + 9, + 4, + 9, + 9, + 9, + 9, + 9, + 9, + 4, + 9, + 4, + 9, + 4, + 9, + 9, + 9, + 9, + 4, + 9, + 9, + 9, + 9, + 9, + 9, + 4, + 9, + 4, + 9, + 4, + 9, + 9, + 9, + 9, + 4, + 9, + 9, + 9, + 9, + 9, + 9, + 4, + 9, + 4, + 9, + 4, + 9, + 9, + 9, + 9, + 4, + 9, + 9, + 9, + 9, + 9, + 9, + 4, + 9, + 4, + 9, + 4, + 9, + 8, + 9, + 9, + 4, + 9, + 9, + 9, + 9, + 9, + 9, + 4, + 9, + 4, + 9, + 4, + 9, + 8, + 9, + 9, + 4, + 9, + 9, + 9, + 9, + 9, + 9, + 4, + 9, + 4, + 9, + 4, + 9, + 9, + 9, + 9, + 4, + 9, + 9, + 9, + 9, + 9, + 9, + 4, + 9, + 4, + 9, + 4, + 9, + 9, + 9, + 9, + 4, + 9, + 9, + 9, + 9, + 9, + 9, + 4, + 9, + 4, + 9, + 4, + 9, + 9, + 9, + 9, + 4, + 9, + 9, + 9, + 9, + 9, + 9, + 4, + 9, + 4, + 9, + 4, + 9, + 9, + 9, + 9, + 4, + 9, + 9, + 9, + 9, + 9, + 9, + 4, + 9, + 4, + 9, + 4, + 9, + 9, + 9, + 9, + 4, + 9, + 9, + 9, + 9, + 9, + 9, + 4, + 9, + 4, + 9, + 4, + 9, + 9, + 9, + 9, + 4, + 9, + 9, + 9, + 9, + 9, + 9, + 4, + 9, + 4, + 9, + 4, + 9, + 9, + 9, + 9, + 4, + 9, + 9, + 9, + 9, + 9, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 7, + 7, + 7, + 7, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 7, + 7, + 8, + 8, + 8, + 8, + 8, + 8, + 9, + 9, + 9, + 9, + 9, + 9, + 7, + 7, + 8, + 8, + 8, + 8, + 9, + 9, + 9, + 9, + 9, + 9, + 8, + 8, + 8, + 9, + 8, + 8, + 9, + 9, + 9, + 9, + 8, + 9, + 7, + 7, + 8, + 9, + 8, + 8, + 9, + 9, + 9, + 9, + 8, + 9, + 8, + 8, + 8, + 8, + 8, + 8, + 8, + 8, + 8, + 8, + 9, + 7, + 7, + 7, + 8, + 8, + 8, + 8, + 8, + 8, + 8, + 8, + 9, + 7, + 8, + 8, + 9, + 9, + 9, + 9, + 8, + 8, + 8, + 8, + 7, + 7, + 7, + 7, + 9, + 8, + 9, + 8, + 8, + 8, + 8, + 8, + 7, + 7, + 7, + 7, + 9, + 8, + 9, + 8, + 8, + 8, + 8, + 8, + 7, + 7, + 7, + 7, + 8, + 8, + 8, + 8, + 8, + 8, + 8, + 8, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 8, + 8, + 8, + 5, + 8, + 5, + 5, + 5, + 8, + 8, + 8, + 4, + 8, + 4, + 4, + 4, + 8, + 8, + 8, + 4, + 8, + 4, + 4, + 4, + 8, + 8, + 8, + 4, + 8, + 4, + 4, + 4, + 8, + 8, + 8, + 4, + 8, + 4, + 4, + 4, + 8, + 8, + 8, + 4, + 8, + 4, + 4, + 4, + 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 + ] + }, + { + "stage": 7, + "replica": 4, + "widths": [ + 9, + 4, + 9, + 4, + 9, + 4, + 9, + 9, + 9, + 9, + 4, + 9, + 9, + 9, + 9, + 9, + 9, + 4, + 9, + 4, + 9, + 4, + 9, + 9, + 9, + 9, + 4, + 9, + 9, + 9, + 9, + 9, + 9, + 4, + 9, + 4, + 9, + 4, + 9, + 9, + 9, + 9, + 4, + 9, + 9, + 9, + 9, + 9, + 9, + 4, + 9, + 4, + 9, + 4, + 9, + 9, + 9, + 9, + 4, + 9, + 9, + 9, + 9, + 9, + 9, + 4, + 9, + 4, + 9, + 4, + 9, + 9, + 9, + 9, + 4, + 9, + 9, + 9, + 9, + 9, + 9, + 4, + 9, + 4, + 9, + 4, + 9, + 8, + 9, + 9, + 4, + 9, + 9, + 9, + 9, + 9, + 9, + 4, + 9, + 4, + 9, + 4, + 9, + 8, + 9, + 9, + 4, + 9, + 9, + 9, + 9, + 9, + 9, + 4, + 9, + 4, + 9, + 4, + 9, + 9, + 9, + 9, + 4, + 9, + 9, + 9, + 9, + 9, + 9, + 4, + 9, + 4, + 9, + 4, + 9, + 9, + 9, + 9, + 4, + 9, + 9, + 9, + 9, + 9, + 9, + 4, + 9, + 4, + 9, + 4, + 9, + 9, + 9, + 9, + 4, + 9, + 9, + 9, + 9, + 9, + 9, + 4, + 9, + 4, + 9, + 4, + 9, + 9, + 9, + 9, + 4, + 9, + 9, + 9, + 9, + 9, + 9, + 4, + 9, + 4, + 9, + 4, + 9, + 9, + 9, + 9, + 4, + 9, + 9, + 9, + 9, + 9, + 9, + 4, + 9, + 4, + 9, + 4, + 9, + 9, + 9, + 9, + 4, + 9, + 9, + 9, + 9, + 9, + 9, + 4, + 9, + 4, + 9, + 4, + 9, + 9, + 9, + 9, + 4, + 9, + 9, + 9, + 9, + 9, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 7, + 7, + 7, + 7, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 7, + 7, + 8, + 8, + 8, + 8, + 8, + 8, + 9, + 9, + 9, + 9, + 9, + 9, + 7, + 7, + 8, + 8, + 8, + 8, + 9, + 9, + 9, + 9, + 9, + 9, + 8, + 8, + 8, + 9, + 8, + 8, + 9, + 9, + 9, + 9, + 8, + 9, + 7, + 7, + 8, + 9, + 8, + 8, + 9, + 9, + 9, + 9, + 8, + 9, + 8, + 8, + 8, + 8, + 8, + 8, + 8, + 8, + 8, + 8, + 9, + 7, + 7, + 7, + 8, + 8, + 8, + 8, + 8, + 8, + 8, + 8, + 9, + 7, + 8, + 8, + 9, + 9, + 9, + 9, + 8, + 8, + 8, + 8, + 7, + 7, + 7, + 7, + 9, + 8, + 9, + 8, + 8, + 8, + 8, + 8, + 7, + 7, + 7, + 7, + 9, + 8, + 9, + 8, + 8, + 8, + 8, + 8, + 7, + 7, + 7, + 7, + 8, + 8, + 8, + 8, + 8, + 8, + 8, + 8, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 8, + 8, + 8, + 5, + 8, + 5, + 5, + 5, + 8, + 8, + 8, + 4, + 8, + 4, + 4, + 4, + 8, + 8, + 8, + 4, + 8, + 4, + 4, + 4, + 8, + 8, + 8, + 4, + 8, + 4, + 4, + 4, + 8, + 8, + 8, + 4, + 8, + 4, + 4, + 4, + 8, + 8, + 8, + 4, + 8, + 4, + 4, + 4, + 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 + ] + }, + { + "stage": 8, + "replica": 3, + "widths": [ + 9, + 4, + 9, + 4, + 9, + 4, + 9, + 9, + 9, + 9, + 4, + 9, + 9, + 9, + 9, + 9, + 9, + 4, + 9, + 4, + 9, + 4, + 9, + 9, + 9, + 9, + 4, + 9, + 9, + 9, + 9, + 9, + 9, + 4, + 9, + 4, + 9, + 4, + 9, + 9, + 9, + 9, + 4, + 9, + 9, + 9, + 9, + 9, + 9, + 4, + 9, + 4, + 9, + 4, + 9, + 9, + 9, + 9, + 4, + 9, + 9, + 9, + 9, + 9, + 9, + 4, + 9, + 4, + 9, + 4, + 9, + 9, + 9, + 9, + 4, + 9, + 9, + 9, + 9, + 9, + 9, + 4, + 9, + 4, + 9, + 4, + 9, + 8, + 9, + 9, + 4, + 9, + 9, + 9, + 9, + 9, + 9, + 4, + 9, + 4, + 9, + 4, + 9, + 8, + 9, + 9, + 4, + 9, + 9, + 9, + 9, + 9, + 9, + 4, + 9, + 4, + 9, + 4, + 9, + 9, + 9, + 9, + 4, + 9, + 9, + 9, + 9, + 9, + 9, + 4, + 9, + 4, + 9, + 4, + 9, + 9, + 9, + 9, + 4, + 9, + 9, + 9, + 9, + 9, + 9, + 4, + 9, + 4, + 9, + 4, + 9, + 9, + 9, + 9, + 4, + 9, + 9, + 9, + 9, + 9, + 9, + 4, + 9, + 4, + 9, + 4, + 9, + 9, + 9, + 9, + 4, + 9, + 9, + 9, + 9, + 9, + 9, + 4, + 9, + 4, + 9, + 4, + 9, + 9, + 9, + 9, + 4, + 9, + 9, + 9, + 9, + 9, + 9, + 4, + 9, + 4, + 9, + 4, + 9, + 9, + 9, + 9, + 4, + 9, + 9, + 9, + 9, + 9, + 9, + 4, + 9, + 4, + 9, + 4, + 9, + 9, + 9, + 9, + 4, + 9, + 9, + 9, + 9, + 9, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 7, + 7, + 7, + 7, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 7, + 7, + 8, + 8, + 8, + 8, + 8, + 8, + 9, + 9, + 9, + 9, + 9, + 9, + 7, + 7, + 8, + 8, + 8, + 8, + 9, + 9, + 9, + 9, + 9, + 9, + 8, + 8, + 8, + 9, + 8, + 8, + 9, + 9, + 9, + 9, + 8, + 9, + 7, + 7, + 8, + 9, + 8, + 8, + 9, + 9, + 9, + 9, + 8, + 9, + 8, + 8, + 8, + 8, + 8, + 8, + 8, + 8, + 8, + 8, + 9, + 7, + 7, + 7, + 8, + 8, + 8, + 8, + 8, + 8, + 8, + 8, + 9, + 7, + 8, + 8, + 9, + 9, + 9, + 9, + 8, + 8, + 8, + 8, + 7, + 7, + 7, + 7, + 9, + 8, + 9, + 8, + 8, + 8, + 8, + 8, + 7, + 7, + 7, + 7, + 9, + 8, + 9, + 8, + 8, + 8, + 8, + 8, + 7, + 7, + 7, + 7, + 8, + 8, + 8, + 8, + 8, + 8, + 8, + 8, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 8, + 8, + 8, + 5, + 8, + 5, + 5, + 5, + 8, + 8, + 8, + 4, + 8, + 4, + 4, + 4, + 8, + 8, + 8, + 4, + 8, + 4, + 4, + 4, + 8, + 8, + 8, + 4, + 8, + 4, + 4, + 4, + 8, + 8, + 8, + 4, + 8, + 4, + 4, + 4, + 8, + 8, + 8, + 4, + 8, + 4, + 4, + 4, + 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 + ] + }, + { + "stage": 5, + "replica": 7, + "widths": [ + 9, + 4, + 9, + 4, + 9, + 4, + 9, + 9, + 9, + 9, + 4, + 9, + 9, + 9, + 9, + 9, + 9, + 4, + 9, + 4, + 9, + 4, + 9, + 9, + 9, + 9, + 4, + 9, + 9, + 9, + 9, + 9, + 9, + 4, + 9, + 4, + 9, + 4, + 9, + 9, + 9, + 9, + 4, + 9, + 9, + 9, + 9, + 9, + 9, + 4, + 9, + 4, + 9, + 4, + 9, + 9, + 9, + 9, + 4, + 9, + 9, + 9, + 9, + 9, + 9, + 4, + 9, + 4, + 9, + 4, + 9, + 9, + 9, + 9, + 4, + 9, + 9, + 9, + 9, + 9, + 9, + 4, + 9, + 4, + 9, + 4, + 9, + 8, + 9, + 9, + 4, + 9, + 9, + 9, + 9, + 9, + 9, + 4, + 9, + 4, + 9, + 4, + 9, + 8, + 9, + 9, + 4, + 9, + 9, + 9, + 9, + 9, + 9, + 4, + 9, + 4, + 9, + 4, + 9, + 9, + 9, + 9, + 4, + 9, + 9, + 9, + 9, + 9, + 9, + 4, + 9, + 4, + 9, + 4, + 9, + 9, + 9, + 9, + 4, + 9, + 9, + 9, + 9, + 9, + 9, + 4, + 9, + 4, + 9, + 4, + 9, + 9, + 9, + 9, + 4, + 9, + 9, + 9, + 9, + 9, + 9, + 4, + 9, + 4, + 9, + 4, + 9, + 9, + 9, + 9, + 4, + 9, + 9, + 9, + 9, + 9, + 9, + 4, + 9, + 4, + 9, + 4, + 9, + 9, + 9, + 9, + 4, + 9, + 9, + 9, + 9, + 9, + 9, + 4, + 9, + 4, + 9, + 4, + 9, + 9, + 9, + 9, + 4, + 9, + 9, + 9, + 9, + 9, + 9, + 4, + 9, + 4, + 9, + 4, + 9, + 9, + 9, + 9, + 4, + 9, + 9, + 9, + 9, + 9, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 7, + 7, + 7, + 7, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 7, + 7, + 8, + 8, + 8, + 8, + 8, + 8, + 9, + 9, + 9, + 9, + 9, + 9, + 7, + 7, + 8, + 8, + 8, + 8, + 9, + 9, + 9, + 9, + 9, + 9, + 8, + 8, + 8, + 9, + 8, + 8, + 9, + 9, + 9, + 9, + 8, + 9, + 7, + 7, + 8, + 9, + 8, + 8, + 9, + 9, + 9, + 9, + 8, + 9, + 8, + 8, + 8, + 8, + 8, + 8, + 8, + 8, + 8, + 8, + 9, + 7, + 7, + 7, + 8, + 8, + 8, + 8, + 8, + 8, + 8, + 8, + 9, + 7, + 8, + 8, + 9, + 9, + 9, + 9, + 8, + 8, + 8, + 8, + 7, + 7, + 7, + 7, + 9, + 8, + 9, + 8, + 8, + 8, + 8, + 8, + 7, + 7, + 7, + 7, + 9, + 8, + 9, + 8, + 8, + 8, + 8, + 8, + 7, + 7, + 7, + 7, + 8, + 8, + 8, + 8, + 8, + 8, + 8, + 8, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 8, + 8, + 8, + 5, + 8, + 5, + 5, + 5, + 8, + 8, + 8, + 4, + 8, + 4, + 4, + 4, + 8, + 8, + 8, + 4, + 8, + 4, + 4, + 4, + 8, + 8, + 8, + 4, + 8, + 4, + 4, + 4, + 8, + 8, + 8, + 4, + 8, + 4, + 4, + 4, + 8, + 8, + 8, + 4, + 8, + 4, + 4, + 4, + 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 + ] + }, + { + "stage": 6, + "replica": 6, + "widths": [ + 9, + 4, + 9, + 4, + 9, + 4, + 9, + 9, + 9, + 9, + 4, + 9, + 9, + 9, + 9, + 9, + 9, + 4, + 9, + 4, + 9, + 4, + 9, + 9, + 9, + 9, + 4, + 9, + 9, + 9, + 9, + 9, + 9, + 4, + 9, + 4, + 9, + 4, + 9, + 9, + 9, + 9, + 4, + 9, + 9, + 9, + 9, + 9, + 9, + 4, + 9, + 4, + 9, + 4, + 9, + 9, + 9, + 9, + 4, + 9, + 9, + 9, + 9, + 9, + 9, + 4, + 9, + 4, + 9, + 4, + 9, + 9, + 9, + 9, + 4, + 9, + 9, + 9, + 9, + 9, + 9, + 4, + 9, + 4, + 9, + 4, + 9, + 8, + 9, + 9, + 4, + 9, + 9, + 9, + 9, + 9, + 9, + 4, + 9, + 4, + 9, + 4, + 9, + 8, + 9, + 9, + 4, + 9, + 9, + 9, + 9, + 9, + 9, + 4, + 9, + 4, + 9, + 4, + 9, + 9, + 9, + 9, + 4, + 9, + 9, + 9, + 9, + 9, + 9, + 4, + 9, + 4, + 9, + 4, + 9, + 9, + 9, + 9, + 4, + 9, + 9, + 9, + 9, + 9, + 9, + 4, + 9, + 4, + 9, + 4, + 9, + 9, + 9, + 9, + 4, + 9, + 9, + 9, + 9, + 9, + 9, + 4, + 9, + 4, + 9, + 4, + 9, + 9, + 9, + 9, + 4, + 9, + 9, + 9, + 9, + 9, + 9, + 4, + 9, + 4, + 9, + 4, + 9, + 9, + 9, + 9, + 4, + 9, + 9, + 9, + 9, + 9, + 9, + 4, + 9, + 4, + 9, + 4, + 9, + 9, + 9, + 9, + 4, + 9, + 9, + 9, + 9, + 9, + 9, + 4, + 9, + 4, + 9, + 4, + 9, + 9, + 9, + 9, + 4, + 9, + 9, + 9, + 9, + 9, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 7, + 7, + 7, + 7, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 7, + 7, + 8, + 8, + 8, + 8, + 8, + 8, + 9, + 9, + 9, + 9, + 9, + 9, + 7, + 7, + 8, + 8, + 8, + 8, + 9, + 9, + 9, + 9, + 9, + 9, + 8, + 8, + 8, + 9, + 8, + 8, + 9, + 9, + 9, + 9, + 8, + 9, + 7, + 7, + 8, + 9, + 8, + 8, + 9, + 9, + 9, + 9, + 8, + 9, + 8, + 8, + 8, + 8, + 8, + 8, + 8, + 8, + 8, + 8, + 9, + 7, + 7, + 7, + 8, + 8, + 8, + 8, + 8, + 8, + 8, + 8, + 9, + 7, + 8, + 8, + 9, + 9, + 9, + 9, + 8, + 8, + 8, + 8, + 7, + 7, + 7, + 7, + 9, + 8, + 9, + 8, + 8, + 8, + 8, + 8, + 7, + 7, + 7, + 7, + 9, + 8, + 9, + 8, + 8, + 8, + 8, + 8, + 7, + 7, + 7, + 7, + 8, + 8, + 8, + 8, + 8, + 8, + 8, + 8, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 8, + 8, + 8, + 5, + 8, + 5, + 5, + 5, + 8, + 8, + 8, + 4, + 8, + 4, + 4, + 4, + 8, + 8, + 8, + 4, + 8, + 4, + 4, + 4, + 8, + 8, + 8, + 4, + 8, + 4, + 4, + 4, + 8, + 8, + 8, + 4, + 8, + 4, + 4, + 4, + 8, + 8, + 8, + 4, + 8, + 4, + 4, + 4, + 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 + ] + }, + { + "stage": 7, + "replica": 5, + "widths": [ + 9, + 4, + 9, + 4, + 9, + 4, + 9, + 9, + 9, + 9, + 4, + 9, + 9, + 9, + 9, + 9, + 9, + 4, + 9, + 4, + 9, + 4, + 9, + 9, + 9, + 9, + 4, + 9, + 9, + 9, + 9, + 9, + 9, + 4, + 9, + 4, + 9, + 4, + 9, + 9, + 9, + 9, + 4, + 9, + 9, + 9, + 9, + 9, + 9, + 4, + 9, + 4, + 9, + 4, + 9, + 9, + 9, + 9, + 4, + 9, + 9, + 9, + 9, + 9, + 9, + 4, + 9, + 4, + 9, + 4, + 9, + 9, + 9, + 9, + 4, + 9, + 9, + 9, + 9, + 9, + 9, + 4, + 9, + 4, + 9, + 4, + 9, + 8, + 9, + 9, + 4, + 9, + 9, + 9, + 9, + 9, + 9, + 4, + 9, + 4, + 9, + 4, + 9, + 8, + 9, + 9, + 4, + 9, + 9, + 9, + 9, + 9, + 9, + 4, + 9, + 4, + 9, + 4, + 9, + 9, + 9, + 9, + 4, + 9, + 9, + 9, + 9, + 9, + 9, + 4, + 9, + 4, + 9, + 4, + 9, + 9, + 9, + 9, + 4, + 9, + 9, + 9, + 9, + 9, + 9, + 4, + 9, + 4, + 9, + 4, + 9, + 9, + 9, + 9, + 4, + 9, + 9, + 9, + 9, + 9, + 9, + 4, + 9, + 4, + 9, + 4, + 9, + 9, + 9, + 9, + 4, + 9, + 9, + 9, + 9, + 9, + 9, + 4, + 9, + 4, + 9, + 4, + 9, + 9, + 9, + 9, + 4, + 9, + 9, + 9, + 9, + 9, + 9, + 4, + 9, + 4, + 9, + 4, + 9, + 9, + 9, + 9, + 4, + 9, + 9, + 9, + 9, + 9, + 9, + 4, + 9, + 4, + 9, + 4, + 9, + 9, + 9, + 9, + 4, + 9, + 9, + 9, + 9, + 9, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 7, + 7, + 7, + 7, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 7, + 7, + 8, + 8, + 8, + 8, + 8, + 8, + 9, + 9, + 9, + 9, + 9, + 9, + 7, + 7, + 8, + 8, + 8, + 8, + 9, + 9, + 9, + 9, + 9, + 9, + 8, + 8, + 8, + 9, + 8, + 8, + 9, + 9, + 9, + 9, + 8, + 9, + 7, + 7, + 8, + 9, + 8, + 8, + 9, + 9, + 9, + 9, + 8, + 9, + 8, + 8, + 8, + 8, + 8, + 8, + 8, + 8, + 8, + 8, + 9, + 7, + 7, + 7, + 8, + 8, + 8, + 8, + 8, + 8, + 8, + 8, + 9, + 7, + 8, + 8, + 9, + 9, + 9, + 9, + 8, + 8, + 8, + 8, + 7, + 7, + 7, + 7, + 9, + 8, + 9, + 8, + 8, + 8, + 8, + 8, + 7, + 7, + 7, + 7, + 9, + 8, + 9, + 8, + 8, + 8, + 8, + 8, + 7, + 7, + 7, + 7, + 8, + 8, + 8, + 8, + 8, + 8, + 8, + 8, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 8, + 8, + 8, + 5, + 8, + 5, + 5, + 5, + 8, + 8, + 8, + 4, + 8, + 4, + 4, + 4, + 8, + 8, + 8, + 4, + 8, + 4, + 4, + 4, + 8, + 8, + 8, + 4, + 8, + 4, + 4, + 4, + 8, + 8, + 8, + 4, + 8, + 4, + 4, + 4, + 8, + 8, + 8, + 4, + 8, + 4, + 4, + 4, + 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 + ] + }, + { + "stage": 8, + "replica": 4, + "widths": [ + 9, + 4, + 9, + 4, + 9, + 4, + 9, + 9, + 9, + 9, + 4, + 9, + 9, + 9, + 9, + 9, + 9, + 4, + 9, + 4, + 9, + 4, + 9, + 9, + 9, + 9, + 4, + 9, + 9, + 9, + 9, + 9, + 9, + 4, + 9, + 4, + 9, + 4, + 9, + 9, + 9, + 9, + 4, + 9, + 9, + 9, + 9, + 9, + 9, + 4, + 9, + 4, + 9, + 4, + 9, + 9, + 9, + 9, + 4, + 9, + 9, + 9, + 9, + 9, + 9, + 4, + 9, + 4, + 9, + 4, + 9, + 9, + 9, + 9, + 4, + 9, + 9, + 9, + 9, + 9, + 9, + 4, + 9, + 4, + 9, + 4, + 9, + 8, + 9, + 9, + 4, + 9, + 9, + 9, + 9, + 9, + 9, + 4, + 9, + 4, + 9, + 4, + 9, + 8, + 9, + 9, + 4, + 9, + 9, + 9, + 9, + 9, + 9, + 4, + 9, + 4, + 9, + 4, + 9, + 9, + 9, + 9, + 4, + 9, + 9, + 9, + 9, + 9, + 9, + 4, + 9, + 4, + 9, + 4, + 9, + 9, + 9, + 9, + 4, + 9, + 9, + 9, + 9, + 9, + 9, + 4, + 9, + 4, + 9, + 4, + 9, + 9, + 9, + 9, + 4, + 9, + 9, + 9, + 9, + 9, + 9, + 4, + 9, + 4, + 9, + 4, + 9, + 9, + 9, + 9, + 4, + 9, + 9, + 9, + 9, + 9, + 9, + 4, + 9, + 4, + 9, + 4, + 9, + 9, + 9, + 9, + 4, + 9, + 9, + 9, + 9, + 9, + 9, + 4, + 9, + 4, + 9, + 4, + 9, + 9, + 9, + 9, + 4, + 9, + 9, + 9, + 9, + 9, + 9, + 4, + 9, + 4, + 9, + 4, + 9, + 9, + 9, + 9, + 4, + 9, + 9, + 9, + 9, + 9, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 7, + 7, + 7, + 7, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 7, + 7, + 8, + 8, + 8, + 8, + 8, + 8, + 9, + 9, + 9, + 9, + 9, + 9, + 7, + 7, + 8, + 8, + 8, + 8, + 9, + 9, + 9, + 9, + 9, + 9, + 8, + 8, + 8, + 9, + 8, + 8, + 9, + 9, + 9, + 9, + 8, + 9, + 7, + 7, + 8, + 9, + 8, + 8, + 9, + 9, + 9, + 9, + 8, + 9, + 8, + 8, + 8, + 8, + 8, + 8, + 8, + 8, + 8, + 8, + 9, + 7, + 7, + 7, + 8, + 8, + 8, + 8, + 8, + 8, + 8, + 8, + 9, + 7, + 8, + 8, + 9, + 9, + 9, + 9, + 8, + 8, + 8, + 8, + 7, + 7, + 7, + 7, + 9, + 8, + 9, + 8, + 8, + 8, + 8, + 8, + 7, + 7, + 7, + 7, + 9, + 8, + 9, + 8, + 8, + 8, + 8, + 8, + 7, + 7, + 7, + 7, + 8, + 8, + 8, + 8, + 8, + 8, + 8, + 8, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 8, + 8, + 8, + 5, + 8, + 5, + 5, + 5, + 8, + 8, + 8, + 4, + 8, + 4, + 4, + 4, + 8, + 8, + 8, + 4, + 8, + 4, + 4, + 4, + 8, + 8, + 8, + 4, + 8, + 4, + 4, + 4, + 8, + 8, + 8, + 4, + 8, + 4, + 4, + 4, + 8, + 8, + 8, + 4, + 8, + 4, + 4, + 4, + 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 + ] + }, + { + "stage": 6, + "replica": 7, + "widths": [ + 9, + 4, + 9, + 4, + 9, + 4, + 9, + 9, + 9, + 9, + 4, + 9, + 9, + 9, + 9, + 9, + 9, + 4, + 9, + 4, + 9, + 4, + 9, + 9, + 9, + 9, + 4, + 9, + 9, + 9, + 9, + 9, + 9, + 4, + 9, + 4, + 9, + 4, + 9, + 9, + 9, + 9, + 4, + 9, + 9, + 9, + 9, + 9, + 9, + 4, + 9, + 4, + 9, + 4, + 9, + 9, + 9, + 9, + 4, + 9, + 9, + 9, + 9, + 9, + 9, + 4, + 9, + 4, + 9, + 4, + 9, + 9, + 9, + 9, + 4, + 9, + 9, + 9, + 9, + 9, + 9, + 4, + 9, + 4, + 9, + 4, + 9, + 8, + 9, + 9, + 4, + 9, + 9, + 9, + 9, + 9, + 9, + 4, + 9, + 4, + 9, + 4, + 9, + 8, + 9, + 9, + 4, + 9, + 9, + 9, + 9, + 9, + 9, + 4, + 9, + 4, + 9, + 4, + 9, + 9, + 9, + 9, + 4, + 9, + 9, + 9, + 9, + 9, + 9, + 4, + 9, + 4, + 9, + 4, + 9, + 9, + 9, + 9, + 4, + 9, + 9, + 9, + 9, + 9, + 9, + 4, + 9, + 4, + 9, + 4, + 9, + 9, + 9, + 9, + 4, + 9, + 9, + 9, + 9, + 9, + 9, + 4, + 9, + 4, + 9, + 4, + 9, + 9, + 9, + 9, + 4, + 9, + 9, + 9, + 9, + 9, + 9, + 4, + 9, + 4, + 9, + 4, + 9, + 9, + 9, + 9, + 4, + 9, + 9, + 9, + 9, + 9, + 9, + 4, + 9, + 4, + 9, + 4, + 9, + 9, + 9, + 9, + 4, + 9, + 9, + 9, + 9, + 9, + 9, + 4, + 9, + 4, + 9, + 4, + 9, + 9, + 9, + 9, + 4, + 9, + 9, + 9, + 9, + 9, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 7, + 7, + 7, + 7, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 7, + 7, + 8, + 8, + 8, + 8, + 8, + 8, + 9, + 9, + 9, + 9, + 9, + 9, + 7, + 7, + 8, + 8, + 8, + 8, + 9, + 9, + 9, + 9, + 9, + 9, + 8, + 8, + 8, + 9, + 8, + 8, + 9, + 9, + 9, + 9, + 8, + 9, + 7, + 7, + 8, + 9, + 8, + 8, + 9, + 9, + 9, + 9, + 8, + 9, + 8, + 8, + 8, + 8, + 8, + 8, + 8, + 8, + 8, + 8, + 9, + 7, + 7, + 7, + 8, + 8, + 8, + 8, + 8, + 8, + 8, + 8, + 9, + 7, + 8, + 8, + 9, + 9, + 9, + 9, + 8, + 8, + 8, + 8, + 7, + 7, + 7, + 7, + 9, + 8, + 9, + 8, + 8, + 8, + 8, + 8, + 7, + 7, + 7, + 7, + 9, + 8, + 9, + 8, + 8, + 8, + 8, + 8, + 7, + 7, + 7, + 7, + 8, + 8, + 8, + 8, + 8, + 8, + 8, + 8, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 8, + 8, + 8, + 5, + 8, + 5, + 5, + 5, + 8, + 8, + 8, + 4, + 8, + 4, + 4, + 4, + 8, + 8, + 8, + 4, + 8, + 4, + 4, + 4, + 8, + 8, + 8, + 4, + 8, + 4, + 4, + 4, + 8, + 8, + 8, + 4, + 8, + 4, + 4, + 4, + 8, + 8, + 8, + 4, + 8, + 4, + 4, + 4, + 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 + ] + }, + { + "stage": 7, + "replica": 6, + "widths": [ + 9, + 4, + 9, + 4, + 9, + 4, + 9, + 9, + 9, + 9, + 4, + 9, + 9, + 9, + 9, + 9, + 9, + 4, + 9, + 4, + 9, + 4, + 9, + 9, + 9, + 9, + 4, + 9, + 9, + 9, + 9, + 9, + 9, + 4, + 9, + 4, + 9, + 4, + 9, + 9, + 9, + 9, + 4, + 9, + 9, + 9, + 9, + 9, + 9, + 4, + 9, + 4, + 9, + 4, + 9, + 9, + 9, + 9, + 4, + 9, + 9, + 9, + 9, + 9, + 9, + 4, + 9, + 4, + 9, + 4, + 9, + 9, + 9, + 9, + 4, + 9, + 9, + 9, + 9, + 9, + 9, + 4, + 9, + 4, + 9, + 4, + 9, + 8, + 9, + 9, + 4, + 9, + 9, + 9, + 9, + 9, + 9, + 4, + 9, + 4, + 9, + 4, + 9, + 8, + 9, + 9, + 4, + 9, + 9, + 9, + 9, + 9, + 9, + 4, + 9, + 4, + 9, + 4, + 9, + 9, + 9, + 9, + 4, + 9, + 9, + 9, + 9, + 9, + 9, + 4, + 9, + 4, + 9, + 4, + 9, + 9, + 9, + 9, + 4, + 9, + 9, + 9, + 9, + 9, + 9, + 4, + 9, + 4, + 9, + 4, + 9, + 9, + 9, + 9, + 4, + 9, + 9, + 9, + 9, + 9, + 9, + 4, + 9, + 4, + 9, + 4, + 9, + 9, + 9, + 9, + 4, + 9, + 9, + 9, + 9, + 9, + 9, + 4, + 9, + 4, + 9, + 4, + 9, + 9, + 9, + 9, + 4, + 9, + 9, + 9, + 9, + 9, + 9, + 4, + 9, + 4, + 9, + 4, + 9, + 9, + 9, + 9, + 4, + 9, + 9, + 9, + 9, + 9, + 9, + 4, + 9, + 4, + 9, + 4, + 9, + 9, + 9, + 9, + 4, + 9, + 9, + 9, + 9, + 9, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 7, + 7, + 7, + 7, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 7, + 7, + 8, + 8, + 8, + 8, + 8, + 8, + 9, + 9, + 9, + 9, + 9, + 9, + 7, + 7, + 8, + 8, + 8, + 8, + 9, + 9, + 9, + 9, + 9, + 9, + 8, + 8, + 8, + 9, + 8, + 8, + 9, + 9, + 9, + 9, + 8, + 9, + 7, + 7, + 8, + 9, + 8, + 8, + 9, + 9, + 9, + 9, + 8, + 9, + 8, + 8, + 8, + 8, + 8, + 8, + 8, + 8, + 8, + 8, + 9, + 7, + 7, + 7, + 8, + 8, + 8, + 8, + 8, + 8, + 8, + 8, + 9, + 7, + 8, + 8, + 9, + 9, + 9, + 9, + 8, + 8, + 8, + 8, + 7, + 7, + 7, + 7, + 9, + 8, + 9, + 8, + 8, + 8, + 8, + 8, + 7, + 7, + 7, + 7, + 9, + 8, + 9, + 8, + 8, + 8, + 8, + 8, + 7, + 7, + 7, + 7, + 8, + 8, + 8, + 8, + 8, + 8, + 8, + 8, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 8, + 8, + 8, + 5, + 8, + 5, + 5, + 5, + 8, + 8, + 8, + 4, + 8, + 4, + 4, + 4, + 8, + 8, + 8, + 4, + 8, + 4, + 4, + 4, + 8, + 8, + 8, + 4, + 8, + 4, + 4, + 4, + 8, + 8, + 8, + 4, + 8, + 4, + 4, + 4, + 8, + 8, + 8, + 4, + 8, + 4, + 4, + 4, + 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 + ] + }, + { + "stage": 8, + "replica": 5, + "widths": [ + 9, + 4, + 9, + 4, + 9, + 4, + 9, + 9, + 9, + 9, + 4, + 9, + 9, + 9, + 9, + 9, + 9, + 4, + 9, + 4, + 9, + 4, + 9, + 9, + 9, + 9, + 4, + 9, + 9, + 9, + 9, + 9, + 9, + 4, + 9, + 4, + 9, + 4, + 9, + 9, + 9, + 9, + 4, + 9, + 9, + 9, + 9, + 9, + 9, + 4, + 9, + 4, + 9, + 4, + 9, + 9, + 9, + 9, + 4, + 9, + 9, + 9, + 9, + 9, + 9, + 4, + 9, + 4, + 9, + 4, + 9, + 9, + 9, + 9, + 4, + 9, + 9, + 9, + 9, + 9, + 9, + 4, + 9, + 4, + 9, + 4, + 9, + 8, + 9, + 9, + 4, + 9, + 9, + 9, + 9, + 9, + 9, + 4, + 9, + 4, + 9, + 4, + 9, + 8, + 9, + 9, + 4, + 9, + 9, + 9, + 9, + 9, + 9, + 4, + 9, + 4, + 9, + 4, + 9, + 9, + 9, + 9, + 4, + 9, + 9, + 9, + 9, + 9, + 9, + 4, + 9, + 4, + 9, + 4, + 9, + 9, + 9, + 9, + 4, + 9, + 9, + 9, + 9, + 9, + 9, + 4, + 9, + 4, + 9, + 4, + 9, + 9, + 9, + 9, + 4, + 9, + 9, + 9, + 9, + 9, + 9, + 4, + 9, + 4, + 9, + 4, + 9, + 9, + 9, + 9, + 4, + 9, + 9, + 9, + 9, + 9, + 9, + 4, + 9, + 4, + 9, + 4, + 9, + 9, + 9, + 9, + 4, + 9, + 9, + 9, + 9, + 9, + 9, + 4, + 9, + 4, + 9, + 4, + 9, + 9, + 9, + 9, + 4, + 9, + 9, + 9, + 9, + 9, + 9, + 4, + 9, + 4, + 9, + 4, + 9, + 9, + 9, + 9, + 4, + 9, + 9, + 9, + 9, + 9, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 7, + 7, + 7, + 7, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 7, + 7, + 8, + 8, + 8, + 8, + 8, + 8, + 9, + 9, + 9, + 9, + 9, + 9, + 7, + 7, + 8, + 8, + 8, + 8, + 9, + 9, + 9, + 9, + 9, + 9, + 8, + 8, + 8, + 9, + 8, + 8, + 9, + 9, + 9, + 9, + 8, + 9, + 7, + 7, + 8, + 9, + 8, + 8, + 9, + 9, + 9, + 9, + 8, + 9, + 8, + 8, + 8, + 8, + 8, + 8, + 8, + 8, + 8, + 8, + 9, + 7, + 7, + 7, + 8, + 8, + 8, + 8, + 8, + 8, + 8, + 8, + 9, + 7, + 8, + 8, + 9, + 9, + 9, + 9, + 8, + 8, + 8, + 8, + 7, + 7, + 7, + 7, + 9, + 8, + 9, + 8, + 8, + 8, + 8, + 8, + 7, + 7, + 7, + 7, + 9, + 8, + 9, + 8, + 8, + 8, + 8, + 8, + 7, + 7, + 7, + 7, + 8, + 8, + 8, + 8, + 8, + 8, + 8, + 8, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 8, + 8, + 8, + 5, + 8, + 5, + 5, + 5, + 8, + 8, + 8, + 4, + 8, + 4, + 4, + 4, + 8, + 8, + 8, + 4, + 8, + 4, + 4, + 4, + 8, + 8, + 8, + 4, + 8, + 4, + 4, + 4, + 8, + 8, + 8, + 4, + 8, + 4, + 4, + 4, + 8, + 8, + 8, + 4, + 8, + 4, + 4, + 4, + 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 + ] + }, + { + "stage": 7, + "replica": 7, + "widths": [ + 9, + 4, + 9, + 4, + 9, + 4, + 9, + 9, + 9, + 9, + 4, + 9, + 9, + 9, + 9, + 9, + 9, + 4, + 9, + 4, + 9, + 4, + 9, + 9, + 9, + 9, + 4, + 9, + 9, + 9, + 9, + 9, + 9, + 4, + 9, + 4, + 9, + 4, + 9, + 9, + 9, + 9, + 4, + 9, + 9, + 9, + 9, + 9, + 9, + 4, + 9, + 4, + 9, + 4, + 9, + 9, + 9, + 9, + 4, + 9, + 9, + 9, + 9, + 9, + 9, + 4, + 9, + 4, + 9, + 4, + 9, + 9, + 9, + 9, + 4, + 9, + 9, + 9, + 9, + 9, + 9, + 4, + 9, + 4, + 9, + 4, + 9, + 8, + 9, + 9, + 4, + 9, + 9, + 9, + 9, + 9, + 9, + 4, + 9, + 4, + 9, + 4, + 9, + 8, + 9, + 9, + 4, + 9, + 9, + 9, + 9, + 9, + 9, + 4, + 9, + 4, + 9, + 4, + 9, + 9, + 9, + 9, + 4, + 9, + 9, + 9, + 9, + 9, + 9, + 4, + 9, + 4, + 9, + 4, + 9, + 9, + 9, + 9, + 4, + 9, + 9, + 9, + 9, + 9, + 9, + 4, + 9, + 4, + 9, + 4, + 9, + 9, + 9, + 9, + 4, + 9, + 9, + 9, + 9, + 9, + 9, + 4, + 9, + 4, + 9, + 4, + 9, + 9, + 9, + 9, + 4, + 9, + 9, + 9, + 9, + 9, + 9, + 4, + 9, + 4, + 9, + 4, + 9, + 9, + 9, + 9, + 4, + 9, + 9, + 9, + 9, + 9, + 9, + 4, + 9, + 4, + 9, + 4, + 9, + 9, + 9, + 9, + 4, + 9, + 9, + 9, + 9, + 9, + 9, + 4, + 9, + 4, + 9, + 4, + 9, + 9, + 9, + 9, + 4, + 9, + 9, + 9, + 9, + 9, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 7, + 7, + 7, + 7, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 7, + 7, + 8, + 8, + 8, + 8, + 8, + 8, + 9, + 9, + 9, + 9, + 9, + 9, + 7, + 7, + 8, + 8, + 8, + 8, + 9, + 9, + 9, + 9, + 9, + 9, + 8, + 8, + 8, + 9, + 8, + 8, + 9, + 9, + 9, + 9, + 8, + 9, + 7, + 7, + 8, + 9, + 8, + 8, + 9, + 9, + 9, + 9, + 8, + 9, + 8, + 8, + 8, + 8, + 8, + 8, + 8, + 8, + 8, + 8, + 9, + 7, + 7, + 7, + 8, + 8, + 8, + 8, + 8, + 8, + 8, + 8, + 9, + 7, + 8, + 8, + 9, + 9, + 9, + 9, + 8, + 8, + 8, + 8, + 7, + 7, + 7, + 7, + 9, + 8, + 9, + 8, + 8, + 8, + 8, + 8, + 7, + 7, + 7, + 7, + 9, + 8, + 9, + 8, + 8, + 8, + 8, + 8, + 7, + 7, + 7, + 7, + 8, + 8, + 8, + 8, + 8, + 8, + 8, + 8, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 8, + 8, + 8, + 5, + 8, + 5, + 5, + 5, + 8, + 8, + 8, + 4, + 8, + 4, + 4, + 4, + 8, + 8, + 8, + 4, + 8, + 4, + 4, + 4, + 8, + 8, + 8, + 4, + 8, + 4, + 4, + 4, + 8, + 8, + 8, + 4, + 8, + 4, + 4, + 4, + 8, + 8, + 8, + 4, + 8, + 4, + 4, + 4, + 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 + ] + }, + { + "stage": 8, + "replica": 6, + "widths": [ + 9, + 4, + 9, + 4, + 9, + 4, + 9, + 9, + 9, + 9, + 4, + 9, + 9, + 9, + 9, + 9, + 9, + 4, + 9, + 4, + 9, + 4, + 9, + 9, + 9, + 9, + 4, + 9, + 9, + 9, + 9, + 9, + 9, + 4, + 9, + 4, + 9, + 4, + 9, + 9, + 9, + 9, + 4, + 9, + 9, + 9, + 9, + 9, + 9, + 4, + 9, + 4, + 9, + 4, + 9, + 9, + 9, + 9, + 4, + 9, + 9, + 9, + 9, + 9, + 9, + 4, + 9, + 4, + 9, + 4, + 9, + 9, + 9, + 9, + 4, + 9, + 9, + 9, + 9, + 9, + 9, + 4, + 9, + 4, + 9, + 4, + 9, + 8, + 9, + 9, + 4, + 9, + 9, + 9, + 9, + 9, + 9, + 4, + 9, + 4, + 9, + 4, + 9, + 8, + 9, + 9, + 4, + 9, + 9, + 9, + 9, + 9, + 9, + 4, + 9, + 4, + 9, + 4, + 9, + 9, + 9, + 9, + 4, + 9, + 9, + 9, + 9, + 9, + 9, + 4, + 9, + 4, + 9, + 4, + 9, + 9, + 9, + 9, + 4, + 9, + 9, + 9, + 9, + 9, + 9, + 4, + 9, + 4, + 9, + 4, + 9, + 9, + 9, + 9, + 4, + 9, + 9, + 9, + 9, + 9, + 9, + 4, + 9, + 4, + 9, + 4, + 9, + 9, + 9, + 9, + 4, + 9, + 9, + 9, + 9, + 9, + 9, + 4, + 9, + 4, + 9, + 4, + 9, + 9, + 9, + 9, + 4, + 9, + 9, + 9, + 9, + 9, + 9, + 4, + 9, + 4, + 9, + 4, + 9, + 9, + 9, + 9, + 4, + 9, + 9, + 9, + 9, + 9, + 9, + 4, + 9, + 4, + 9, + 4, + 9, + 9, + 9, + 9, + 4, + 9, + 9, + 9, + 9, + 9, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 7, + 7, + 7, + 7, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 7, + 7, + 8, + 8, + 8, + 8, + 8, + 8, + 9, + 9, + 9, + 9, + 9, + 9, + 7, + 7, + 8, + 8, + 8, + 8, + 9, + 9, + 9, + 9, + 9, + 9, + 8, + 8, + 8, + 9, + 8, + 8, + 9, + 9, + 9, + 9, + 8, + 9, + 7, + 7, + 8, + 9, + 8, + 8, + 9, + 9, + 9, + 9, + 8, + 9, + 8, + 8, + 8, + 8, + 8, + 8, + 8, + 8, + 8, + 8, + 9, + 7, + 7, + 7, + 8, + 8, + 8, + 8, + 8, + 8, + 8, + 8, + 9, + 7, + 8, + 8, + 9, + 9, + 9, + 9, + 8, + 8, + 8, + 8, + 7, + 7, + 7, + 7, + 9, + 8, + 9, + 8, + 8, + 8, + 8, + 8, + 7, + 7, + 7, + 7, + 9, + 8, + 9, + 8, + 8, + 8, + 8, + 8, + 7, + 7, + 7, + 7, + 8, + 8, + 8, + 8, + 8, + 8, + 8, + 8, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 8, + 8, + 8, + 5, + 8, + 5, + 5, + 5, + 8, + 8, + 8, + 4, + 8, + 4, + 4, + 4, + 8, + 8, + 8, + 4, + 8, + 4, + 4, + 4, + 8, + 8, + 8, + 4, + 8, + 4, + 4, + 4, + 8, + 8, + 8, + 4, + 8, + 4, + 4, + 4, + 8, + 8, + 8, + 4, + 8, + 4, + 4, + 4, + 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 + ] + }, + { + "stage": 8, + "replica": 7, + "widths": [ + 9, + 4, + 9, + 4, + 9, + 4, + 9, + 9, + 9, + 9, + 4, + 9, + 9, + 9, + 9, + 9, + 9, + 4, + 9, + 4, + 9, + 4, + 9, + 9, + 9, + 9, + 4, + 9, + 9, + 9, + 9, + 9, + 9, + 4, + 9, + 4, + 9, + 4, + 9, + 9, + 9, + 9, + 4, + 9, + 9, + 9, + 9, + 9, + 9, + 4, + 9, + 4, + 9, + 4, + 9, + 9, + 9, + 9, + 4, + 9, + 9, + 9, + 9, + 9, + 9, + 4, + 9, + 4, + 9, + 4, + 9, + 9, + 9, + 9, + 4, + 9, + 9, + 9, + 9, + 9, + 9, + 4, + 9, + 4, + 9, + 4, + 9, + 8, + 9, + 9, + 4, + 9, + 9, + 9, + 9, + 9, + 9, + 4, + 9, + 4, + 9, + 4, + 9, + 8, + 9, + 9, + 4, + 9, + 9, + 9, + 9, + 9, + 9, + 4, + 9, + 4, + 9, + 4, + 9, + 9, + 9, + 9, + 4, + 9, + 9, + 9, + 9, + 9, + 9, + 4, + 9, + 4, + 9, + 4, + 9, + 9, + 9, + 9, + 4, + 9, + 9, + 9, + 9, + 9, + 9, + 4, + 9, + 4, + 9, + 4, + 9, + 9, + 9, + 9, + 4, + 9, + 9, + 9, + 9, + 9, + 9, + 4, + 9, + 4, + 9, + 4, + 9, + 9, + 9, + 9, + 4, + 9, + 9, + 9, + 9, + 9, + 9, + 4, + 9, + 4, + 9, + 4, + 9, + 9, + 9, + 9, + 4, + 9, + 9, + 9, + 9, + 9, + 9, + 4, + 9, + 4, + 9, + 4, + 9, + 9, + 9, + 9, + 4, + 9, + 9, + 9, + 9, + 9, + 9, + 4, + 9, + 4, + 9, + 4, + 9, + 9, + 9, + 9, + 4, + 9, + 9, + 9, + 9, + 9, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 7, + 7, + 7, + 7, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 7, + 7, + 8, + 8, + 8, + 8, + 8, + 8, + 9, + 9, + 9, + 9, + 9, + 9, + 7, + 7, + 8, + 8, + 8, + 8, + 9, + 9, + 9, + 9, + 9, + 9, + 8, + 8, + 8, + 9, + 8, + 8, + 9, + 9, + 9, + 9, + 8, + 9, + 7, + 7, + 8, + 9, + 8, + 8, + 9, + 9, + 9, + 9, + 8, + 9, + 8, + 8, + 8, + 8, + 8, + 8, + 8, + 8, + 8, + 8, + 9, + 7, + 7, + 7, + 8, + 8, + 8, + 8, + 8, + 8, + 8, + 8, + 9, + 7, + 8, + 8, + 9, + 9, + 9, + 9, + 8, + 8, + 8, + 8, + 7, + 7, + 7, + 7, + 9, + 8, + 9, + 8, + 8, + 8, + 8, + 8, + 7, + 7, + 7, + 7, + 9, + 8, + 9, + 8, + 8, + 8, + 8, + 8, + 7, + 7, + 7, + 7, + 8, + 8, + 8, + 8, + 8, + 8, + 8, + 8, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 8, + 8, + 8, + 5, + 8, + 5, + 5, + 5, + 8, + 8, + 8, + 4, + 8, + 4, + 4, + 4, + 8, + 8, + 8, + 4, + 8, + 4, + 4, + 4, + 8, + 8, + 8, + 4, + 8, + 4, + 4, + 4, + 8, + 8, + 8, + 4, + 8, + 4, + 4, + 4, + 8, + 8, + 8, + 4, + 8, + 4, + 4, + 4, + 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 + ] + } + ], + "provider_registry": { + "gauge44": { + "directory": "providers/gauge44", + "artifact_sha256": { + "CANONICAL-WORD.json.gz": "387a2266ffe006d20042221d967f67a4b18d9bb8de1cd1e01d4031b539fa74a5", + "LOCAL-PROGRAMS.json.gz": "8b6a9e3a2411a04e5ca79ba6cd1dd449b21c95f65ca127475167d9b97c80a1ce", + "LOCAL-CHECKS.json": "a99aef882cd6f7631127fd8a116ad4bbaed60e3822455d4f846ae0f45b5af575", + "INDEPENDENT-LOCAL-REPLAY.json": "53bdbb329c2dec59389ddc4aa804b3df8db826d8e23a5d274b1df9edc632cb38", + "CLIFFORD-RECIPES.json": "4629507dcbdd516457c001ff8f9dbe750d1a0cbfa5cfa3c6be003d45804ba0c5", + "CLIFFORD-REVIEW.json": "5fd33c60126fd67d339e2b80859e3ad4c3c1ba257666dda96b0dd064fd9733fa", + "RESIDUAL-ADAPTERS.json": "8b06181f69832da05e3bffab0737598013e20de6f1f48aad43617fbfe62df615" + }, + "ports": [ + 11, + 19, + 35, + 67, + 131, + 259, + 13, + 21, + 37, + 69, + 133, + 261, + 41, + 73, + 137, + 265, + 49, + 81, + 145, + 273, + 161, + 289, + 193, + 321, + 385, + 14, + 22, + 38, + 70, + 134, + 262, + 26, + 74, + 138, + 266, + 50, + 146, + 274, + 98, + 162, + 290, + 194, + 322, + 386, + 28, + 44, + 140, + 268, + 84, + 148, + 276, + 100, + 164, + 292, + 196, + 324, + 388, + 56, + 88, + 152, + 280, + 104, + 168, + 296, + 200, + 328, + 392, + 112, + 176, + 304, + 208, + 336, + 400, + 224, + 352, + 416, + 448, + 508, + 506, + 502, + 494, + 478, + 446, + 382, + 254, + 505, + 501, + 493, + 477, + 445, + 381, + 253, + 499, + 491, + 475, + 443, + 379, + 251, + 487, + 471, + 439, + 375, + 247, + 463, + 431, + 367, + 239, + 415, + 351, + 223, + 319, + 191 + ], + "centers": [ + 92, + 57, + 81, + 224, + 11, + 240, + 9, + 256 + ], + "widths": [ + 9, + 4, + 9, + 4, + 9, + 4, + 9, + 9, + 9, + 9, + 4, + 9, + 9, + 9, + 9, + 9, + 9, + 4, + 9, + 4, + 9, + 4, + 9, + 9, + 9, + 9, + 4, + 9, + 9, + 9, + 9, + 9, + 9, + 4, + 9, + 4, + 9, + 4, + 9, + 9, + 9, + 9, + 4, + 9, + 9, + 9, + 9, + 9, + 9, + 4, + 9, + 4, + 9, + 4, + 9, + 9, + 9, + 9, + 4, + 9, + 9, + 9, + 9, + 9, + 9, + 4, + 9, + 4, + 9, + 4, + 9, + 9, + 9, + 9, + 4, + 9, + 9, + 9, + 9, + 9, + 9, + 4, + 9, + 4, + 9, + 4, + 9, + 8, + 9, + 9, + 4, + 9, + 9, + 9, + 9, + 9, + 9, + 4, + 9, + 4, + 9, + 4, + 9, + 8, + 9, + 9, + 4, + 9, + 9, + 9, + 9, + 9, + 9, + 4, + 9, + 4, + 9, + 4, + 9, + 9, + 9, + 9, + 4, + 9, + 9, + 9, + 9, + 9, + 9, + 4, + 9, + 4, + 9, + 4, + 9, + 9, + 9, + 9, + 4, + 9, + 9, + 9, + 9, + 9, + 9, + 4, + 9, + 4, + 9, + 4, + 9, + 9, + 9, + 9, + 4, + 9, + 9, + 9, + 9, + 9, + 9, + 4, + 9, + 4, + 9, + 4, + 9, + 9, + 9, + 9, + 4, + 9, + 9, + 9, + 9, + 9, + 9, + 4, + 9, + 4, + 9, + 4, + 9, + 9, + 9, + 9, + 4, + 9, + 9, + 9, + 9, + 9, + 9, + 4, + 9, + 4, + 9, + 4, + 9, + 9, + 9, + 9, + 4, + 9, + 9, + 9, + 9, + 9, + 9, + 4, + 9, + 4, + 9, + 4, + 9, + 9, + 9, + 9, + 4, + 9, + 9, + 9, + 9, + 9, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 7, + 7, + 7, + 7, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 7, + 7, + 8, + 8, + 8, + 8, + 8, + 8, + 9, + 9, + 9, + 9, + 9, + 9, + 7, + 7, + 8, + 8, + 8, + 8, + 9, + 9, + 9, + 9, + 9, + 9, + 8, + 8, + 8, + 9, + 8, + 8, + 9, + 9, + 9, + 9, + 8, + 9, + 7, + 7, + 8, + 9, + 8, + 8, + 9, + 9, + 9, + 9, + 8, + 9, + 8, + 8, + 8, + 8, + 8, + 8, + 8, + 8, + 8, + 8, + 9, + 7, + 7, + 7, + 8, + 8, + 8, + 8, + 8, + 8, + 8, + 8, + 9, + 7, + 8, + 8, + 9, + 9, + 9, + 9, + 8, + 8, + 8, + 8, + 7, + 7, + 7, + 7, + 9, + 8, + 9, + 8, + 8, + 8, + 8, + 8, + 7, + 7, + 7, + 7, + 9, + 8, + 9, + 8, + 8, + 8, + 8, + 8, + 7, + 7, + 7, + 7, + 8, + 8, + 8, + 8, + 8, + 8, + 8, + 8, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 8, + 8, + 8, + 5, + 8, + 5, + 5, + 5, + 8, + 8, + 8, + 4, + 8, + 4, + 4, + 4, + 8, + 8, + 8, + 4, + 8, + 4, + 4, + 4, + 8, + 8, + 8, + 4, + 8, + 4, + 4, + 4, + 8, + 8, + 8, + 4, + 8, + 4, + 4, + 4, + 8, + 8, + 8, + 4, + 8, + 4, + 4, + 4, + 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 + ], + "actual_paid_profile": { + "1": 2548, + "2": 338, + "3": 446, + "4": 162, + "5": 72, + "8": 8 + }, + "orientation_program_sha256": { + "forward": "83d65a63f51bd1ce7f3dd4e4d3597311e065b4775796cd87aea3e3a62689047c", + "backward": "e4e483b764e9a85f84a04425e57d73ecdcc72eb2e4d97a64f17d9da58fa5ace0" + }, + "artifact_semantic_sha256": { + "CANONICAL-WORD.json.gz": "24db880b7dab31e6af4eec8a1aba1bbbae29cd50d9a7b77cf0e9b571b3e5ae7c", + "LOCAL-PROGRAMS.json.gz": "a073d8d6a561cf5c8148d8b29ae2800bbe3978377c016b549edd7523eb3cf7e5", + "LOCAL-CHECKS.json": "7d703fa7fc26edab2d82d16632084d9c4c252789991568fe86a56307a9b11aaf", + "INDEPENDENT-LOCAL-REPLAY.json": "031db822c0db37326ce4f7d3c9d2fa90835b80c96ebb51a03468370052032c77", + "CLIFFORD-RECIPES.json": "4629507dcbdd516457c001ff8f9dbe750d1a0cbfa5cfa3c6be003d45804ba0c5", + "CLIFFORD-REVIEW.json": "65ff1fcadd3d01047ceca7eb2d93bbd08a32d452ccec827c206aa8ff28e2cd2d", + "RESIDUAL-ADAPTERS.json": "55281b345e902c04c38a6e82a44e2c84467cd1b93198c101d5cb00d8f7bf40fb" + } + } + }, + "source_plan_sha256": "258a8b9baa245fa4096828671e2f1d1462b5af08d56890629622ef6125eaddda", + "assignment_sha256": "99d1c4caf85855c353d30f122d9efbd9e51562914facded13027f347b18a6082", + "source_owners_sha256": "935ff1a6823c6625daba3349b28d74acf9a3d70a5947ae155aa66c7821804add" +} diff --git a/research/complex-t37-independent-seed39/vendor/pr870/data/UPSTREAM-PINS.json b/research/complex-t37-independent-seed39/vendor/pr870/data/UPSTREAM-PINS.json new file mode 100644 index 0000000000..68486b84e3 --- /dev/null +++ b/research/complex-t37-independent-seed39/vendor/pr870/data/UPSTREAM-PINS.json @@ -0,0 +1,23 @@ +{ + "research/community-k492-audit/pr622/replay/baseline558/complex-global/base/split-centres/CANONICAL-WORD.json.gz": "66d3c3c70983224650643a0a05a21ac6c6959f84d0f4528650601016f5a76844", + "research/community-k492-audit/pr622/replay/baseline558/complex-global/base/split-centres/CLIFFORD-RECIPES.json": "534ace870cabe515987e00f50f71550030965006ea18978e0924590ac6944345", + "research/community-k492-audit/pr622/replay/baseline558/complex-global/base/split-centres/CLIFFORD-REVIEW.json": "ee9b86428278392d2c933f76d60e51f5af90d4ab67e4d3937ed2fa416e7755ab", + "research/community-k492-audit/pr622/replay/baseline558/complex-global/base/split-centres/INDEPENDENT-LOCAL-REPLAY.json": "ad3f2b941127688f98ce6872d00f110644f1c2b156f8adad1b6700e838ed0e26", + "research/community-k492-audit/pr622/replay/baseline558/complex-global/base/split-centres/INDEPENDENT-REPLAY.json": "ad3f2b941127688f98ce6872d00f110644f1c2b156f8adad1b6700e838ed0e26", + "research/community-k492-audit/pr622/replay/baseline558/complex-global/base/split-centres/INTEGRATION.json": "5c14538134dfffbc58fa4b4d2f26b270ec5f56d17d4bf23752c82964f45171db", + "research/community-k492-audit/pr622/replay/baseline558/complex-global/base/split-centres/LOCAL-CHECKS.json": "79177449e404403964ce1b2f4a9a8bd49e1916daba3123d7fd7f5cfd1f1ac0ea", + "research/community-k492-audit/pr622/replay/baseline558/complex-global/base/split-centres/LOCAL-PROGRAMS.json.gz": "99a18eede965accf65943e490b8d2b2ffb9f1c9bc6babdb825413a80cbea2cde", + "research/community-k492-audit/pr622/replay/baseline558/complex-global/base/split-centres/RESIDUAL-ADAPTERS.json": "baafef737acc16dafbe1150896feb16744f3d669fa123bb2bff19ecc4e71b275", + "research/community-k492-audit/pr622/replay/baseline558/complex-global/base/split-centres/SCALAR-FRAME-AUDIT.json": "73b3601a6239502475a272ea0c46945fd42034486aaf43e66a212eb4f012ca44", + "research/community-k492-audit/pr622/replay/baseline558/complex-global/base/split-centres/WRAPPER-CHECKS.json": "9a09146e686c4f535b04fdef3753fe01dad8f5e8881a69408a91394acb5b48f5", + "research/community-k492-audit/pr622/replay/baseline558/complex-global/base/work/complex-nine-native/DATA-PHASES.json": "c5916ff312678f12aba403847643fbbc29f643acec60bdf836fa56cd3e8251fa", + "research/complex-k492-owner-repair/vendor/multicold/code/run_portable.py": "322d29d43dbee8130cde15d4bf05396698b5e3dfe3735813899db91cc0ba7955", + "research/complex-k492-owner-repair/vendor/multicold/engines/base_two_moment.py": "aee70c242a2f1d225528fabe2002e1564d1dc884797c07d28a831c7878ee9098", + "research/complex-k492-owner-repair/vendor/multicold/engines/moment.py": "81cbc864e106418fc7854322746f72180cb8110ff39f74450a3b8d55a82c1482", + "research/complex-k492-owner-repair/vendor/multicold/engines/outer.py": "c1ebb52163a7219504c728a5c2b098bf1e50bf20148a2879c5a74c3cadc7c03c", + "research/complex-k492-owner-repair/vendor/multicold/inputs/PR543-EXPECTED.json": "06eccee9f6b77e140833df83407e7996dc948c17d49b0779ab171fbe463fd28d", + "research/complex-k492-owner-repair/vendor/multicold/vendor/pr558/vendor/pr552/complex-global/vendor531/evidence/audit/PREFIX-AND-INVOICE.json": "ce1bfa49be88ae67a404f606a11db2232b7e1f2610d4418058e39749d86d8478", + "research/complex-k492-owner-repair/vendor/multicold/vendor/pr558/vendor/pr552/complex-global/vendor535/inputs/ROUND20-PARENT-TEMPLATE.json.gz": "025448abdf2012d327e50a009084e1501690d05e650300d2982836aa0350ae00", + "research/community-k492-audit/pr622/replay/baseline558/complex-global/controller-input/split-centres/CANONICAL-WORD.json.gz": "de2be0f4b6d24ace368fd5b834b7a00f9625d0a1824c4ff969f2db5f115db667", + "research/complex-k492-owner-repair/vendor/multicold/vendor/pr558/vendor/pr552/complex-global/vendor531/code/prepare_supplier_base.py": "f5eae94aca965d0008bc07cff8245ccb7509042ccad457d3bcb7d51c1e9409f0" +} diff --git a/research/complex-t37-independent-seed39/vendor/pr870/independent/audit_local.py b/research/complex-t37-independent-seed39/vendor/pr870/independent/audit_local.py new file mode 100644 index 0000000000..4744d8783c --- /dev/null +++ b/research/complex-t37-independent-seed39/vendor/pr870/independent/audit_local.py @@ -0,0 +1,171 @@ +"""Independent exact scalar/frame audit of the changed forward supplier. + +This does not import a generator, builder, stored compensation, or price. +All claimed endpoint matrices are derived from the input word's gates. +Optional --main checks the transported boundary against the pinned parent. +Prepared for icekylinx with OpenAI GPT-6 Astra assistance. Apache-2.0. +""" +import argparse,gzip,json,hashlib,time +from pathlib import Path +from fractions import Fraction as F +from collections import Counter + +def require(x,label): + if not x:raise RuntimeError(label) + +def basis(vs): + piv={} + for a in vs: + while a: + bit=a.bit_length()-1 + if bit in piv:a^=piv[bit] + else: + piv[bit]=a;break + for k in sorted(piv): + for j in piv: + if j>k and piv[j]>>k&1:piv[j]^=piv[k] + return tuple(piv[k] for k in sorted(piv,reverse=True)) + +def contained(a,b):return basis(a+b)==b + +def registers(e):return e[1:3] if e[0]=='add' else e[1:2] + +def apply(e,rows,dual=False): + if e[0]=='add': + t,s=e[1:3];q=F(e[3],e[4]);require(t!=s,'self add') + if dual:t,s,q=s,t,-q + dst=rows[t] + for k,x in list(rows[s].items()): + a=dst.get(k,F(0))+q*x + if a:dst[k]=a + else:dst.pop(k,None) + elif e[0]=='scale': + t=e[1];q=F(e[2],e[3]);require(q!=0,'zero scale') + if dual:q=1/q + rows[t]={k:q*x for k,x in rows[t].items()} + else:raise RuntimeError('unknown scalar primitive') + +def invert(e): + r=list(e) + if r[0]=='add':r[3]=-r[3] + else:r[2],r[3]=r[3],r[2] + return r + +def check_parent_interface(word,main): + # Read only the retained boundary data. No builder or local checker is imported. + relative="research/community-k492-audit/pr622/replay/baseline558/complex-global/base/split-centres/CANONICAL-WORD.json.gz" + path=main/relative;raw=path.read_bytes() + require(hashlib.sha256(raw).hexdigest()=="66d3c3c70983224650643a0a05a21ac6c6959f84d0f4528650601016f5a76844",'parent canonical input pin') + parent=json.loads(gzip.decompress(raw)) + tau=lambda x:x^(43 if (x&43).bit_count()%2 else 0) + ports=parent['ports'];v=word['report']['v'] + require(len(ports)==len(set(ports))==v,'parent port count') + require(set(map(tau,word['ports']))==set(ports),'transported source/target ports') + moved={i:ports.index(tau(p)) for i,p in enumerate(word['ports'])} + centers=[moved.get(r,r) for r in word['centers']] + actual=[list(basis([tau(x) for x in frame])) for frame in word['center_frames']] + expected=[parent['frames'][f] for f in parent['center_frames']] + require(len(centers)==len(set(centers))==len(actual)==8,'eight distinct centre carriers') + require(actual==expected and all(len(f)==8 for f in actual),'ordered centre frame interface') + return dict(parent_path=relative,parent_file_sha256=hashlib.sha256(raw).hexdigest(), + transport_tau=43,ordered_frame_bases_match=True,all_ports_match=True, + transported_centers=centers,source_centers=[r for r in centers if r=2*v} + for e in w['precondition']:apply(e,dirt) + compensation=[['add',y,k,-a.numerator,a.denominator,[]] for y in range(v,2*v) for k,a in sorted(dirt[y].items())] + entering=set(map(int,w.get('start_extra',{})));lowends=set(map(int,w.get('helper_final',{}))) + coldends=lowends-entering + require(not any(e[2] in entering for e in compensation),'nonzero entrance response') + require(not any(r in entering|coldends for e in w['precondition']+compensation for r in registers(e)), 'pre-wrapper touch of residual helper') + require(all(e[-1]==[] for e in w['precondition']+compensation),'nonzero frame precondition') + early=w.get('early_cleanup',[]);earlyids={i for i,U in early} + require(len(earlyids)==len(early),'duplicate early cleanup gate') + tail=[w['cleanup'][i][:-1]+[U] for i,U in early] + cleanup=[e for i,e in enumerate(w['cleanup']) if i not in earlyids] + prefix=w['precondition']+compensation+main + program=prefix+tail+cleanup + for dual in (False,True): + actual=ident() + for e in program:apply(e,actual,dual) + expected=ident() + for t in range(v):expected[t if dual else v+t][v+t if dual else t]=F(-1 if dual else 1) + bad=[i for i in range(n) if actual[i]!=expected[i]] + require(not bad,'all-column endpoint failure '+str((dual,bad[:8]))) + print('endpoint', 'dual' if dual else 'forward','PASS',flush=True) + full=basis([1< 2*max(H)**2, 'halving guard') + rows = [] + for z, accept in [(lower, True), (lower+Q(1, 10**24), False)]: + l, u = M.moment(H, m, W, z, bad) + ll, uu = B.moment(m, W, list(H.items()), z) + if bad: + fl, fu = B.moment(m, W, [(1, 32*m*m*sum(H.values()))], z) + ll, uu = ll+fl/10**16, uu+fu/10**16 + require((u < 1 and uu < 1) if accept else (l > 1 and ll > 1), 'two exact moment signs') + rows.append(dict(endpoint=str(z), accept=accept, + mercator_residual=[str(l-1), str(u-1)], + base_two_residual=[str(ll-1), str(uu-1)])) + return rows + + +def outer47(c, b, engine): + eta = beta = Q(1, 10**24) + s = min(c, (1-beta)*b)-Q(1, 10**27) + require(0 < s < c and s < (1-beta)*b, 'strict common saving') + a = Q(384599, 10**10) + for _ in range(7): + old = a + a = (1-s)*s+s*old + gap = min(s-a, 1-a-s, 1-a-s*(1-old), 1-s) + require(old < a < s < 1-a and gap > 0, 'bootstrap gap') + ceil = lambda x: -(-x.numerator//x.denominator) + cut = max(ceil(36/gap**2), ceil(2*(4+512)/gap)) + require(cut*gap**2 >= 36 and cut*gap >= 2*(4+512), 'finite bootstrap cutoff') + q = a*(1-2*eta) + margin = (1-eta)*q/(1+q) + ticks = margin*10**18 + k = Q((ticks.numerator-1)//ticks.denominator, 10**18) + bridge = {'semantic': {'C0': {'base': 2, 'exponent': 210000}, 'strict_literal_gap': 1}, + 'rows': {'degree_gap': Q(10**6)-Q(51*20161, 25)}} + result = engine.assembly(a, b, bridge, k, eta=eta, beta=beta) + require(len(result['strict_constraints']) == 47, '47 outer constraints') + require(all(x > 0 for x in result['strict_constraints'].values()), 'strict outer constraints') + rejected = [] + for name, kk, ee, be in [('next_grid', k+Q(1, 10**18), eta, beta), + ('zero_eta', k, Q(0), beta), ('zero_beta', k, eta, Q(0)), + ('unit_beta', k, eta, Q(1))]: + try: + engine.assembly(a, b, bridge, kk, eta=ee, beta=be) + except AssertionError: + rejected.append(name) + else: + raise RuntimeError('accepted negative control: '+name) + return dict(complex_b=str(b), bit_c=str(c), kappa=str(k), kappa_decimal=decimal(k), + binding='bit' if c < (1-beta)*b else 'complex', + strict_constraints_passed=47, controls_rejected=rejected) + + +def main(): + require(__debug__, 'Do not use python -O: the retained outer engine requires assertions') + parser = argparse.ArgumentParser(description=__doc__) + parser.add_argument('--main', type=Path, required=True, help='Pinned main checkout') + parser.add_argument('--profile', type=Path, default=HERE.parent/'data/PLAN.json', + help='Raw profile or a JSON object containing profile/global_profile') + parser.add_argument('--output', type=Path, required=True) + parser.add_argument('--headroom-c', help='Optional alternative bit saving, for comparison only') + args = parser.parse_args() + inputs = json.loads((HERE.parent/'data/UPSTREAM-PINS.json').read_text()) + selected = [SOURCE/'engines'/(n+'.py') for n in ('moment', 'base_two_moment', 'outer')] + for relative in selected: + require(sha(args.main/relative) == inputs[relative.as_posix()], 'pinned input '+str(relative)) + M, B, A = [load(args.main/SOURCE/'engines', n) for n in ('moment', 'base_two_moment', 'outer')] + supplied = json.loads(args.profile.read_text()) + H = {int(r): n for r, n in supplied.get('profile', supplied.get('global_profile', supplied)).items()} + bit_data = BIT_PATH.read_bytes() + require(hashlib.sha1(b'blob '+str(len(bit_data)).encode()+b'\0'+bit_data).hexdigest() == BIT_BLOB, 'PR589 blob pin') + record = json.loads(bit_data) + bit = record['nine'] + require('nine-stage' in bit['pipeline'] and '32 replicas' in bit['pipeline'], 'nine-stage bit record') + bit_deficit = pr589_deficit(record['word'], bit['bit']['live']) + require(sum(int(r)*n for r, n in bit['profile'].items()) == bit['bit']['rank_mass'], 'bit rank mass') + c = Q(bit['bit_lower']) + bit_checks = moment_checks(M, B, {int(r): n for r, n in bit['profile'].items()}, + 64, bit['bit']['live'], c, bit_deficit, True) + prices = {} + for mode, bad in [('native', False), ('conservative', True)]: + root = M.certify(H, 73, 14336, bad) + root = {key: root[key] for key in ('lower', 'upper', 'lower_endpoint_residual_upper', + 'upper_endpoint_residual_lower', 'strict_rational_signs')} + b = Q(root['lower']) + row = dict(root=root, exact_moments=moment_checks(M, B, H, 73, 14336, b, 5120, bad), + outer_with_bit=outer47(c, b, A)) + if args.headroom_c: + alternate = outer47(Q(args.headroom_c), b, A) + require(alternate['kappa'] == row['outer_with_bit']['kappa'], 'headroom comparison changed kappa') + row.update(outer_with_alternative_bit_rate=alternate, same_kappa_with_either_bit_rate=True) + prices[mode] = row + native_k = Q(prices['native']['outer_with_bit']['kappa']) + result = dict(status='PASS_FROZEN_PROFILE_TWO_EXACT_ENGINE_AND_OUTER47_CROSSCHECK', + profile_input_file=args.profile.name, profile_input_sha256=sha(args.profile), + global_profile=H, live=14336, m=73, rank_mass=sum(r*n for r, n in H.items()), deficit=5120, + prices=prices, bit_supplier_pr=589, bit_deficit=bit_deficit, bit_moments_with_surcharge=bit_checks, + gain_over_pr635_percent=decimal(100*(native_k/Q('0.001636241501576388')-1)), + input_sha256={**{relative.as_posix(): sha(args.main/relative) for relative in selected}, 'package:inputs/PR589-EXPECTED.json': sha(BIT_PATH)}, + scope='Independent arithmetic for the exact nominated all144 (T16, two eight-replica groups) profile. Complete local, controller and finite invoice admission are separately replayed by the package driver; this receipt does not replace them. The cited PR589 bit supplier is unchanged and its exceptional-residue surcharge is retained. Any alternative c is only a headroom comparison.') + args.output.write_text(json.dumps(result, indent=2)+'\n') + print(result['status'], prices['native']['outer_with_bit']['kappa_decimal'], result['gain_over_pr635_percent']) + + +if __name__ == '__main__': + main() diff --git a/research/complex-t37-independent-seed39/vendor/pr870/inputs/PR589-EXPECTED.json b/research/complex-t37-independent-seed39/vendor/pr870/inputs/PR589-EXPECTED.json new file mode 100644 index 0000000000..e293ddc557 --- /dev/null +++ b/research/complex-t37-independent-seed39/vendor/pr870/inputs/PR589-EXPECTED.json @@ -0,0 +1,222 @@ +{ + "word": { + "file": "tune/bitE8mut-p111-tuned.json.gz", + "file_sha256": "e3e301e62bc2b41dbf1ceac0acf3d35824ebeab1848c5a2142d4577b109da52f", + "content_sha256": "5642fd0e35a1acc11acff8d0c08350c1617e95f310d4d35ad63a651f9eeeba0b", + "v": 111, + "R": 439, + "punctured": [ + 10, + 15, + 51, + 53, + 56, + 66, + 72, + 89, + 111 + ], + "retained_totals": 9, + "copy_ranks": [ + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7 + ], + "decoder_constant": 63, + "gates": { + "D": 111, + "A": 2075, + "B": 712, + "C": 2574 + }, + "local_histogram": { + "1": 1323, + "2": 1342, + "3": 79, + "4": 44, + "5": 102, + "6": 11, + "7": 19 + }, + "legality": { + "records": 27234, + "common_frame_ADDs": 24305, + "rank_mass": 5129 + }, + "five_stage_columns": 883, + "five_stage_payload_bits": 93, + "nine_stage_columns": 1327, + "nine_stage_payload_bits": 93, + "eleven_stage_columns": 1549, + "eleven_stage_payload_bits": 93, + "base_content_sha256": "d0df3c89ae84989f4045ba1681a5e2e9fcdfa38ed0301c8abf5185537155cbe3" + }, + "interface": { + "hypotheses": { + "H1_no_target_feeds_z": true, + "H2_D_frame0_targets_from_helpers": true, + "H3_A_z_only_scatter_targets_B_split": true, + "H4_C_literal_reverse_at_full": true, + "H5_V_identity": true + }, + "conclusion": { + "U_block_form": true, + "J_identity": true, + "K_equals_D": true, + "C_is_U_inverse": true + }, + "interleaving": { + "z_gates_A": 2075, + "source_writes_A": 0, + "z_gates_B": 499, + "source_writes_B": 483, + "helper_writes_B": 16, + "sources_rewritten_B": 108, + "B_z_write_frame_dims": { + "4": 388, + "6": 111 + }, + "B_z_operand_kinds": { + "helper<-helper": 3, + "helper<-source": 13, + "source<-helper": 108, + "source<-source": 375 + }, + "B_z_operand_kinds_by_dim": { + "dim4:helper<-source": 13, + "dim4:source<-source": 375, + "dim6:helper<-helper": 3, + "dim6:source<-helper": 108 + }, + "B_z_writes_after_a_target_read_of_the_same_register": 454, + "B_target_reads_of_registers_rewritten_earlier_in_B": 111, + "target_reads_of_targets": 0, + "cleanup_gates": 2574 + } + }, + "nine": { + "pipeline": "PR #510 (PR #463 nine-stage template, 32 replicas, PR #442 hosting, PR #493 outer assembly), parameterised for v <= 120 by code/adapt9p.py", + "bit_lower": "1733427039589844234749/1000000000000000000000000", + "bit_lower_decimal": "0.001733427039589844234749", + "profile": { + "1": 381024, + "2": 400416, + "3": 22752, + "4": 26880, + "5": 29376, + "6": 17376, + "7": 26784, + "42": 288 + }, + "bit": { + "live": 28416, + "physical": 28425, + "maxchild": 42, + "rank_mass": 1808352, + "hosted_residuals": 126432, + "bank_assignments": 0, + "prefix_bits": 177, + "charged_prefix_bits": 192, + "coefficient_bits": 177, + "two_level_coefficient_bits": 393, + "charged_two_level_coefficient_bits": 512, + "row_coefficient": 18355, + "halving_depth": 2 + }, + "kappa": { + "pr548": { + "kappa": "49718254847979/31250000000000000", + "kappa_decimal": "0.001590984155135328", + "complex_lower": "796759709641153381751/500000000000000000000000", + "binding_component": "complex" + }, + "pr544": { + "kappa": "397677800014309/250000000000000000", + "kappa_decimal": "0.001590711200057236", + "complex_lower": "31864911873350496687/20000000000000000000000", + "binding_component": "complex" + }, + "pr535": { + "kappa": "793733736881443/500000000000000000", + "kappa_decimal": "0.001587467473762886", + "complex_lower": "1589991533606044174031/1000000000000000000000000", + "binding_component": "complex" + }, + "pr531": { + "kappa": "1517760977820331/1000000000000000000", + "kappa_decimal": "0.001517760977820331", + "complex_lower": "304013615566499291631/200000000000000000000000", + "binding_component": "complex" + } + } + }, + "eleven": { + "pipeline": "PR #493 (PR #445 geometry, PR #472 emitter, audit and invoice, PR #442 hosting), parameterised by PR #545's code/adapt.py", + "bit_lower": "855475950388791987811/500000000000000000000000", + "bit_lower_decimal": "0.001710951900777583975622", + "profile": { + "1": 116424, + "2": 121648, + "3": 6952, + "4": 7424, + "5": 8976, + "6": 4520, + "7": 8776, + "56": 2600 + }, + "bit": { + "live": 8880, + "physical": 8889, + "maxchild": 56, + "rank_mass": 689304, + "hosted_residuals": 38632, + "prefix_bits": 4304, + "charged_prefix_bits": 4352, + "coefficient_bits": 4304, + "three_level_coefficient_bits": 12966, + "charged_three_level_coefficient_bits": 12992, + "row_coefficient": 19431, + "halving_depth": 3 + }, + "emitted_program_sha256": "793b6f40c9aa4b8db57fec0ac0973e16884dae28707e482ee8f7a2349a5d5a4b", + "kappa": { + "pr548": { + "kappa": "49718254847979/31250000000000000", + "kappa_decimal": "0.001590984155135328", + "complex_lower": "796759709641153381751/500000000000000000000000", + "binding_component": "complex" + }, + "pr544": { + "kappa": "397677800014309/250000000000000000", + "kappa_decimal": "0.001590711200057236", + "complex_lower": "31864911873350496687/20000000000000000000000", + "binding_component": "complex" + }, + "pr535": { + "kappa": "793733736881443/500000000000000000", + "kappa_decimal": "0.001587467473762886", + "complex_lower": "1589991533606044174031/1000000000000000000000000", + "binding_component": "complex" + }, + "pr531": { + "kappa": "1517760977820331/1000000000000000000", + "kappa_decimal": "0.001517760977820331", + "complex_lower": "304013615566499291631/200000000000000000000000", + "binding_component": "complex" + } + } + }, + "base": { + "nine_bit_lower": "1733052823330162099157/1000000000000000000000000", + "nine_bit_lower_decimal": "0.001733052823330162099157", + "eleven_bit_lower": "427652201524503168379/250000000000000000000000", + "eleven_bit_lower_decimal": "0.001710608806098012673516", + "note": "PR #555's EXPECTED.json (untuned word); the tune/ pipeline is the same, with the same frozen hosting selections" + } +} diff --git a/research/complex-t37-independent-seed39/vendor/pr870/t16/NOTICE.md b/research/complex-t37-independent-seed39/vendor/pr870/t16/NOTICE.md new file mode 100644 index 0000000000..403f4afffb --- /dev/null +++ b/research/complex-t37-independent-seed39/vendor/pr870/t16/NOTICE.md @@ -0,0 +1,39 @@ +# Attribution and license + +Apache-2.0. New construction and integration: Hao Yan (@FanPUYen), 2026. +Prepared with substantial OpenAI Codex assistance, including separately tasked +AI agents for owner construction, independent mathematical/code checking and +native verification. These are not claims of independent human peer review. + +The exact local supplier is Jeremy Kothe's accepted PR799 X4 word, layered on +Chafik Boukhalfa's PR741 frame changes and PR685 owner construction. Chafik's +PR795 fixed-inventory optimality result motivated changing the replica count. +The original owner bytes, scalar program, local frame and width inventory, +native phase and wrapper implementations retain their existing authorship. + +Credit icekylinx for the source gauge and supplier/admission pipeline; +DreamingOfClouds for the PR589 bit transport and inherited cold-end work; +eumemic for the PR555 bit supplier and earlier supplier work; Rohan Arun for +the native exact-complex recurrence correction; Jeremy Diviney, jaymosley07, +and the other retained owner/allocation contributors; and the complete +PR514/PR484/PR507/PR558 controller, physical hosting and verification lineage. +This list is cumulative credit, not approval of every claim in those PRs. + +All original notices and licenses remain in the referenced source packages: + +- `research/gauge44-frames-x/{NOTICE,UPSTREAM-NOTICE}.md` +- `research/complex-sw4-frame8/PROVENANCE.md` +- `research/e8-bit-p111-tuned/tune/README.md` +- the repository `CONTRIBUTORS.md` and source-package licenses. + +The verifier copies pinned global source files into an external replay +directory and applies an explicit checked edit list. Original attribution +comments are preserved in those generated derivatives. No original source +file or historical certificate is rewritten. + +The optional ancestry-reuse coverage guard addresses the omission issue +identified by Lucas (@ljste) in PR838 and the related PR847 integration by +Chinmay (@chinmayarvind23). Its fixed inventories were read from the accepted +PR741 source; no pending implementation is imported. Charles Bethin's +concurrent PR850 strengthens the fixed-inventory owner-profile theorem and +was checked for overlap before publication; that inventory is changed here. diff --git a/research/complex-t37-independent-seed39/vendor/pr870/t16/build_owners.py b/research/complex-t37-independent-seed39/vendor/pr870/t16/build_owners.py new file mode 100644 index 0000000000..235d2b5435 --- /dev/null +++ b/research/complex-t37-independent-seed39/vendor/pr870/t16/build_owners.py @@ -0,0 +1,198 @@ +#!/usr/bin/env python3 +# SPDX-License-Identifier: Apache-2.0 +# Copyright (c) 2026 Hao Yan (@FanPUYen) +"""Construct the T16 owner map by eleven frozen edits, without an optimizer. + +Authored with OpenAI Codex assistance. Precursor credit: Chafik Boukhalfa's +PR741 frames and owner map, Jeremy Kothe's PR799 paired-read-exchange provider, +and the PR514/PR484/PR507 whole-owner controller lineage. +The original map is duplicated into disjoint replica namespaces. One two-role +augmenting path and two tail-bin repartitions concentrate idle remainders. +Actual source-event windows are checked separately by build_parent.py and the +independent global geometry audit; the source-window screen here is not that +geometric proof. +""" +import argparse +import copy +import gzip +import hashlib +import json +from collections import Counter, defaultdict +from pathlib import Path + +SOURCE_PLAN_SHA256 = '5f40e7ccfca61f298539b4f41286d2a9d62caf947057f9cec82aa53f73f707fd' +SOURCE_OWNERS_SHA256 = '99d1c4caf85855c353d30f122d9efbd9e51562914facded13027f347b18a6082' +EXPECTED_IDLE = {1: 2, 2: 1, 44: 1, 48: 4793} +# (time, helper, width, old(replica,child,port,offset), new(...)). +# Helpers are zero-based, excluding the 224 local data wires. +EDITS = ( + (2, 5, 4, (0, 8, 0, 0), (7, 8, 78, 26)), + (107, 360, 9, (14, 15, 0, 0), (6, 15, 0, 9)), + (112, 193, 4, (6, 15, 0, 9), (6, 15, 0, 18)), + (113, 193, 4, (14, 15, 0, 9), (14, 15, 0, 0)), + (116, 181, 4, (7, 8, 78, 26), (14, 15, 0, 4)), + (134, 414, 4, (6, 15, 0, 13), (6, 15, 0, 22)), + (135, 414, 4, (14, 15, 0, 13), (14, 15, 0, 8)), + (136, 414, 4, (6, 15, 0, 17), (6, 15, 0, 26)), + (137, 414, 4, (14, 15, 0, 17), (14, 15, 0, 12)), + (140, 87, 8, (6, 15, 0, 21), (14, 15, 0, 16)), + (141, 87, 8, (14, 15, 0, 21), (14, 15, 0, 24)), +) + + +def require(condition, reason): + if not condition: + raise ValueError(reason) + + +def canonical(value): + return json.dumps(value, sort_keys=True, separators=(',', ':')).encode() + + +def portable_gzip(raw): + compressed = bytearray(gzip.compress(raw, mtime=0)) + compressed[9] = 255 + return bytes(compressed) + + +def read(path): + raw = Path(path).read_bytes() + return json.loads(gzip.decompress(raw) if str(path).endswith('.gz') else raw) + + +def sha(path): + return hashlib.sha256(Path(path).read_bytes()).hexdigest() + + +def location(role): + return tuple(role[key] for key in ('owner_replica', 'child', 'port', 'offset')) + + +def move(role, destination, plan): + replica, child, port, offset = destination + role.update(owner_replica=replica, child=child, port=port, offset=offset, + copy=replica*112+port, + family=replica*896+(2*plan['pairs'][str(child)]+plan['sides'][str(child)])*112+port) + + +def duplicate(source): + require(len(source) == 72*504, 'source role count') + result = [] + for role in source: + for group in range(2): + new = dict(role) + new['owner_replica'] += 8*group + new['replica'] += 8*group + new['copy'] = new['owner_replica']*112+new['port'] + new['family'] += 7168*group + new['time'] = 2*role['time']+group + result.append(new) + result.sort(key=lambda role: (role['time'], role['helper'])) + require(len({(r['time'], r['helper']) for r in result}) == len(result), 'duplicate role identity') + return result + + +def construct(source, plan): + roles = duplicate(source) + bykey = {(r['time'], r['helper']): r for r in roles} + for time, helper, width, old, new in EDITS: + role = bykey[time, helper] + require(location(role) == old and role['width'] == width, 'frozen edit source mismatch') + move(role, new, plan) + return roles + + +def audit(roles, plan): + require(len(roles) == 144*504, 'role count') + order = [(s, r+8*g) for s, r in plan['order'] for g in range(2)] + require(len(set(order)) == 144, 'call order coverage') + used, helpers, families = defaultdict(set), defaultdict(set), defaultdict(set) + capacities = {} + windows = {} + for key, (capacity, times) in plan['windows'].items(): + replica, child = map(int, key.split(',')) + for group in range(2): + capacities[replica+8*group, child] = capacity + windows[replica+8*group, child] = {2*time+g for time in times for g in range(2)} + widths = plan['provider_registry']['gauge44']['widths'] + for r in roles: + time, helper = r['time'], r['helper'] + owner, child, port, offset = location(r) + require(0 <= time < 144 and order[time] == (r['stage'], r['replica']), 'role invocation') + require(0 <= helper < 504 and r['width'] == widths[helper], 'helper width') + require(0 <= owner < 16 and 0 <= port < 112, 'owner range') + require((owner, child) in capacities, 'owner child') + require(time in windows[owner, child], 'cloned-window screen') + require(r['copy'] == owner*112+port, 'copy identity') + expected_family = owner*896+(2*plan['pairs'][str(child)]+plan['sides'][str(child)])*112+port + require(r['family'] == expected_family, 'family identity') + require(helper not in helpers[time], 'duplicate helper') + require(r['family'] not in families[time], 'two helpers in one family') + helpers[time].add(helper) + families[time].add(r['family']) + cells = set(range(offset, offset+r['width'])) + require(offset >= 0 and offset+r['width'] <= capacities[owner, child], 'capacity overflow') + key = owner, child, port + require(not cells & used[key], 'overlapping residual footprint') + used[key].update(cells) + require(set(helpers) == set(range(144)) and all(h == set(range(504)) for h in helpers.values()), 'complete helper inventory') + idle = Counter() + for (replica, child), capacity in capacities.items(): + for port in range(112): + cells = used[replica, child, port] + require(cells == set(range(len(cells))), 'non-prefix residual footprint') + if len(cells) < capacity: + idle[capacity-len(cells)] += 1 + require(dict(idle) == EXPECTED_IDLE, 'idle profile') + return dict(sorted(idle.items())) + + +def controls(roles, plan): + failures = [] + for time, helper, width, old, new in EDITS: + mutant = copy.deepcopy(roles) + role = next(r for r in mutant if (r['time'], r['helper']) == (time, helper)) + move(role, old, plan) + try: + audit(mutant, plan) + except ValueError as error: + failures.append(dict(time=time, helper=helper, reason=str(error))) + else: + raise ValueError('omitted-edit control accepted: %s' % ((time, helper),)) + return failures + + +def main(): + parser = argparse.ArgumentParser(description=__doc__) + parser.add_argument('--source-plan', type=Path, required=True) + parser.add_argument('--source-owners', type=Path, required=True) + parser.add_argument('--out', type=Path, required=True) + args = parser.parse_args() + require(not args.out.exists(), 'output directory already exists') + require(sha(args.source_plan) == SOURCE_PLAN_SHA256, 'source plan byte pin') + require(sha(args.source_owners) == SOURCE_OWNERS_SHA256, 'source owners byte pin') + plan, source = read(args.source_plan), read(args.source_owners) + roles = construct(source, plan) + idle = audit(roles, plan) + rejected = controls(roles, plan) + baseline = duplicate(source) + require(sum(a != b for a, b in zip(baseline, roles)) == 11, 'exact edit count') + raw = canonical(roles) + compressed = portable_gzip(raw) + require(gzip.decompress(compressed) == raw and compressed[4:8] == bytes(4) and compressed[9] == 255, 'portable gzip') + args.out.mkdir(parents=True) + (args.out/'OWNERS.json.gz').write_bytes(compressed) + receipt = dict(status='PASS_EXPLICIT_ELEVEN_EDIT_OWNER_CONSTRUCTION', + source_plan_sha256=sha(args.source_plan), source_owners_sha256=sha(args.source_owners), + owners_sha256=hashlib.sha256(compressed).hexdigest(), + owners_content_sha256=hashlib.sha256(raw).hexdigest(), + calls=144, helpers_per_call=504, roles=len(roles), changed_roles=11, + edits=EDITS, idle_profile=idle, omitted_edit_controls=rejected, + exact_idle_delta_from_doubled_source={48: 1, 44: -1, 3: -2, 2: 1}, + scope='Explicit owner constructor and structural checks. Actual source-event windows, full global geometry and finite invoice are separately required.') + (args.out/'OWNER-CONSTRUCTION.json').write_bytes((json.dumps(receipt, indent=2)+'\n').encode('utf-8')) + print(json.dumps({k: v for k, v in receipt.items() if k not in ('edits', 'omitted_edit_controls')}, indent=2)) + + +if __name__ == '__main__': + main() diff --git a/research/complex-t37-independent-seed39/vendor/pr870/t16/build_parent.py b/research/complex-t37-independent-seed39/vendor/pr870/t16/build_parent.py new file mode 100644 index 0000000000..bd9e28bd2d --- /dev/null +++ b/research/complex-t37-independent-seed39/vendor/pr870/t16/build_parent.py @@ -0,0 +1,281 @@ +#!/usr/bin/env python3 +# SPDX-License-Identifier: Apache-2.0 +# Copyright (c) 2026 Hao Yan (@FanPUYen) +"""Lift the PR741 controller and PR799 provider plan to sixteen replicas. + +Authored with OpenAI Codex assistance. Precursor credit: the PR514/PR484/PR507 +controller lineage, PR558/PR589 admission, Chafik Boukhalfa's PR741 frames +and owner map, and Jeremy Kothe's PR799 paired-read-exchange provider. +This script changes only the global replica namespace and the nominated owner +map; it reuses the exact local programs and exact data-phase recipes. +""" +import argparse +import copy +import gzip +import hashlib +import json +from collections import Counter +from pathlib import Path + +SOURCE_PLAN_SHA256 = '5f40e7ccfca61f298539b4f41286d2a9d62caf947057f9cec82aa53f73f707fd' +SOURCE_OWNERS_SHA256 = '99d1c4caf85855c353d30f122d9efbd9e51562914facded13027f347b18a6082' + + +def require(condition, reason): + if not condition: + raise ValueError(reason) + + +def read(path): + raw = Path(path).read_bytes() + return json.loads(gzip.decompress(raw) if str(path).endswith('.gz') else raw) + + +def canonical(value): + return json.dumps(value, sort_keys=True, separators=(',', ':')).encode() + + +def portable_gzip(raw): + compressed = bytearray(gzip.compress(raw, mtime=0)) + compressed[9] = 255 # RFC1952 OS=unknown, independent of zlib/Python platform. + return bytes(compressed) + + +def sha(path): + return hashlib.sha256(Path(path).read_bytes()).hexdigest() + + +def content_sha(value): + return hashlib.sha256(canonical(value)).hexdigest() + + +def lift_parent(source, copies=2): + """A direct sum of bank/data stocks; erased private streams are shared. + + copies=1 is deliberately the identity, byte-for-byte after canonicalization. + The helper routes retain replica lanes 0..7 in each *separate* bank group. + No axis index is inferred from the new global replica label 8..15. + """ + require(type(copies) is int and copies in (1, 2), 'only identity or T16 lift') + t = copy.deepcopy(source) + if copies == 1: + return t + require(source['m'] == 73, 'source dimension') + require(len(source['calls']) == 72, 'source calls') + data = 8*8*112 + bank_stock = source['live'] - data + private_stock = source['physical'] - source['live'] + require((bank_stock, private_stock) == (9*504, 504+8+2), 'source namespace') + require({(c['stage'], c['replica']) for c in source['calls']} == + {(s, r) for s in range(9) for r in range(8)}, 'source coverage') + new_data = copies*data + new_live = copies*source['live'] + new_physical = new_live + private_stock + t['calls'] = [] + for c in source['calls']: + for group in range(copies): + new = copy.deepcopy(c) + new['replica'] = c['replica'] + 8*group + owners = [] + for family, route in c['owners']: + require(0 <= family < source['live'], 'owner outside live stock') + mapped = (family + data*group if family < data else + new_data + group*bank_stock + family - data) + owners.append([mapped, copy.deepcopy(route)]) + new['owners'] = owners + t['calls'].append(new) + # Every data/idle recipe is a portwise direct sum, hence only multiplicity + # changes. Its local axis labels and exact phase words stay unchanged. + for child in t['idle_children']: + require(child['replicas'] == 8, 'source idle multiplicity') + child['replicas'] *= copies + for event in t['execution_schedule']: + if 'replicas' in event: + require(event['replicas'] == list(range(8)), 'source sweep replicas') + event['replicas'] = list(range(8*copies)) + if event['kind'] == 'bank_padding_cover_sweep': + event['families'] = [new_data, new_live] + elif event['kind'] == 'translate_every_live_family': + event['families'] = [0, new_live] + event['charged_calls_per_cover'] = new_live + t['bank_padding']['families'] = [] + t['bank_padding']['children'] = [] + for group in range(copies): + for family in source['bank_padding']['families']: + t['bank_padding']['families'].append(new_data + group*bank_stock + family - data) + for child in source['bank_padding']['children']: + new = copy.deepcopy(child) + new['family'] = new_data + group*bank_stock + child['family'] - data + t['bank_padding']['children'].append(new) + t['cover_final_correction'].update(families=[0, new_live], charged_calls_per_cover=new_live) + t['private_namespace'] = { + key: [new_live + x - source['live'] for x in interval] + for key, interval in source['private_namespace'].items() + } + t.update(live=new_live, physical=new_physical, + version='t16-direct-sum-two-bank-groups-parent-v1') + t['route_semantics']['helper'] = ( + 'Two independent groups of nine dedicated banks. Group floor(replica/8) ' + 'selects the bank namespace; the stored original helper route retains ' + 'lane replica%8. All original residual/spectator axes are unchanged.') + t['loop_order'] = ( + 'For each recipe phase: the explicit calls order, then every cover class d; ' + 'each local invocation completes before the next. Each original replica ' + 'has a disjoint data and bank namespace in its group; private erased ' + 'streams are reused between completed calls.') + t['replica_lift'] = dict( + source_template_content_sha256=content_sha(source), groups=copies, + source_replicas=8, replicas=8*copies, data_stock=new_data, + bank_stock=copies*bank_stock, banks_per_stage=copies*504, + private_helpers=504, local_programs_content_sha256=content_sha(source['local_programs']), + construction='direct sum of data and dedicated banks; share only restored private streams', + phase_recipe_unchanged=True) + # Source data and helper owner routes are preserved literally in each copy. + for c in t['calls']: + group, replica = divmod(c['replica'], 8) + old = next(z for z in source['calls'] if (z['stage'], z['replica']) == (c['stage'], replica)) + require([r for f, r in c['owners']] == [r for f, r in old['owners']], 'route changed') + require(c['window'] == old['window'], 'local window changed') + require(len({f for f, r in c['owners']}) == len(c['owners']), 'per-call owner alias') + require(t['local_programs'] == source['local_programs'], 'program changed') + require(t['recipe'] == source['recipe'], 'data recipe changed') + require(len(t['bank_padding']['children']) == copies*bank_stock, 'bank padding count') + require(t['physical'] == t['live']+514, 'private namespace size') + return t + + +def expanded_schedule(parent, order): + blocks = {} + globals_ = [] + stage = None + for index, event in enumerate(parent['execution_schedule']): + if event['kind'] in ('bank_padding_cover_sweep', 'translate_every_live_family'): + globals_.append((index, event)) + continue + if event['kind'] == 'local_cover_sweep': + stage = event['stage'] + blocks[stage] = [] + require(stage is not None, 'event precedes first stage') + blocks[stage].append((index, event)) + schedule = [] + for time, (stage, replica) in enumerate(order): + for index, event in blocks[stage]: + new = copy.deepcopy(event) + new.update(source_event=index, replica=replica, replicas=[replica], time=time) + schedule.append(new) + for index, event in globals_: + schedule.append(dict(event, source_event=index)) + return schedule + + +def actual_windows(parent, order): + ranks = {c['child']: c['rank'] for c in parent['idle_children']} + stage_pair = {e['stage']: e['pair'] for e in parent['recipe'] if e['kind'] == 'local'} + last, intervals, callpos, perrep = {}, {}, {}, {} + schedule = expanded_schedule(parent, order) + for pos, event in enumerate(schedule): + if 'replica' not in event: + continue + replica = event['replica'] + perrep.setdefault(replica, []).append(event['source_event']) + if event['kind'] == 'local_cover_sweep': + last[replica, stage_pair[event['stage']]] = pos + callpos[event['time']] = pos + elif event['kind'] == 'bridge': + last[replica, event['src']] = last[replica, event['dst']] = pos + elif event['kind'] == 'idle_cover_sweep': + for child in event['child_indices']: + if child in ranks: + intervals[replica, child] = (last.get((replica, event['pair']), -1), pos) + require(all(events == list(range(30)) for events in perrep.values()), 'per-replica projection') + require([e['source_event'] for e in schedule if 'replica' not in e] == [30, 31], 'global tail') + require(set(callpos) == set(range(len(order))), 'complete schedule') + windows = {f'{replica},{child}': [ranks[child], [time for time, pos in sorted(callpos.items()) if start < pos < stop]] + for (replica, child), (start, stop) in intervals.items()} + return windows, schedule + + +def lift_plan(source, parent, owners, source_plan_sha, source_owners_sha, owners_sha): + p = copy.deepcopy(source) + require(source['T'] == 8 and len(source['order']) == 72, 'source plan dimensions') + order = [[stage, replica + 8*group] for stage, replica in source['order'] for group in range(2)] + windows, schedule = actual_windows(parent, order) + # These windows are recomputed from actual source-event touches, not copied + # from the old nomination. Their T8 restriction must recover the old plan. + rank = Counter({int(k): 2*v for k, v in source['profile'].items()}) + rank.update({48: 1, 44: -1, 3: -2, 2: 1}) + rank = +rank + p.update(status='FROZEN_EXPLICIT_T16_TWO_BANK_DIRECT_SUM_OWNER_NOMINATION', + mode='gauge44-all144-t16-idle-concentration', T=16, live=14336, + deficit=5120, profile=dict(sorted(rank.items())), order=order, windows=windows, + solver_status='explicit two-role augmenting path and two-bin recombination', gap=None, + source_plan_sha256=source_plan_sha, source_owners_sha256=source_owners_sha, + assignment_sha256=owners_sha, assignment_content_sha256=content_sha(owners)) + for field in ('provider_calls', 'per_call_widths'): + p[field] = [] + for old in source[field]: + for group in range(2): + new = copy.deepcopy(old) + new['replica'] += 8*group + if 'time' in new: + new['time'] = 2*old['time']+group + p[field].append(new) + at = {tuple(x): i for i, x in enumerate(order)} + for field in ('provider_calls', 'per_call_widths'): + p[field].sort(key=lambda c: at[c['stage'], c['replica']]) + p['replica_lift'] = dict(groups=2, source_replicas=8, replicas=16, + parent_template_content_sha256=content_sha(parent), owners_file_sha256=owners_sha, + window_semantics='strict physical source-event touch intervals, including bridges', + schedule_content_sha256=content_sha(schedule)) + require(len(owners) == 144*504, 'owner role count') + for role in owners: + require(role['time'] == at[role['stage'], role['replica']], 'role call time') + require(role['time'] in windows[f"{role['owner_replica']},{role['child']}"][1], + 'owner outside actual source-event window') + require(sum(int(k)*v for k,v in p['profile'].items()) == 73*p['live']-p['deficit'], 'rank mass') + return p, schedule + + +def main(): + parser = argparse.ArgumentParser(description=__doc__) + parser.add_argument('--base', type=Path, required=True) + parser.add_argument('--source-plan', type=Path, required=True) + parser.add_argument('--source-owners', type=Path, required=True) + parser.add_argument('--owners', type=Path, required=True) + parser.add_argument('--out', type=Path, required=True) + args = parser.parse_args() + require(not args.out.exists(), 'output directory already exists') + require(sha(args.source_plan) == SOURCE_PLAN_SHA256, 'source plan byte pin') + require(sha(args.source_owners) == SOURCE_OWNERS_SHA256, 'source owners byte pin') + source_path = args.base/'split-centres/GLOBAL-TEMPLATE.json.gz' + source = read(source_path) + original_plan = read(args.source_plan) + require(lift_parent(source, 1) == source, 'T8 identity control') + require(actual_windows(source, original_plan['order'])[0] == original_plan['windows'], 'T8 source-window replay') + require(source['exact_data_phase_recipe_sha256'] == sha(args.base/'work/complex-nine-native/DATA-PHASES.json'), 'source exact data-phase binding') + parent = lift_parent(source) + owners = read(args.owners) + plan, schedule = lift_plan(original_plan, parent, owners, sha(args.source_plan), sha(args.source_owners), sha(args.owners)) + args.out.mkdir(parents=True) + (args.out/'GLOBAL-TEMPLATE.json.gz').write_bytes(portable_gzip(canonical(parent))) + (args.out/'PLAN.json').write_bytes((json.dumps(plan, indent=2)+'\n').encode('utf-8')) + receipt = dict(status='PASS_T16_DIRECT_SUM_PARENT_AND_LITERAL_SOURCE_WINDOWS', + source_template_file_sha256=sha(source_path), source_template_content_sha256=content_sha(source), + source_plan_sha256=sha(args.source_plan), source_owners_sha256=sha(args.source_owners), + owners_sha256=sha(args.owners), + parent_template_file_sha256=sha(args.out/'GLOBAL-TEMPLATE.json.gz'), + parent_template_content_sha256=content_sha(parent), plan_sha256=sha(args.out/'PLAN.json'), + T8_identity_control=True, T8_source_window_identity=True, + local_programs_identical=True, exact_data_phases_identical=True, + parent_live=parent['live'], parent_physical=parent['physical'], + bank_stock=9072, banks_per_stage=1008, private_helpers=504, + source_idle_children_charged=sum(c['replicas'] for c in parent['idle_children']), + events=len(schedule), replica_source_events=30, global_source_events=[30,31], + calls=len(plan['order']), roles=len(owners), actual_window_membership_checked=len(owners), + scope='Legal direct-sum parent namespace and actual source-event windows; full global emitter, geometry, finite invoice, and recurrence admission remain separate checks.') + (args.out/'PARENT-LIFT-RECEIPT.json').write_bytes((json.dumps(receipt, indent=2)+'\n').encode('utf-8')) + print(json.dumps(receipt, indent=2)) + + +if __name__ == '__main__': + main() diff --git a/research/complex-t37-independent-seed39/vendor/pr890/NOTICE.md b/research/complex-t37-independent-seed39/vendor/pr890/NOTICE.md new file mode 100644 index 0000000000..5b74988a14 --- /dev/null +++ b/research/complex-t37-independent-seed39/vendor/pr890/NOTICE.md @@ -0,0 +1,28 @@ +# Attribution and source boundaries + +Prepared by Chafik Boukhalfa with OpenAI Codex assistance, Apache-2.0. + +- The new T5 owner witness, T16+T5 interleaving, nine-role trade, partial 8+8+5 + bank lift, independent lift audit and strict T21 composition are this package. +- Hao Yan (@FanPUYen), PR858, supplied the T16 duplication and eleven-role + correction, physical source-event windows, independent owner/chart audit, + fixed ancestral coverage and replication-parameterization approach. The + T16 constructors are vendored unchanged through PR870. The generalized + independent checker retains his copyright and license notices. +- PR869/PR870 supplies the unchanged U8 local word, builder, controls and + its T16 composition. The triangle-hybrid B construction is credited there + to NewBArch; its driver and composition to ColdWitness/icekylinx. Original + notices, source attribution and proof notes are retained under `vendor/pr870`. +- Jeremy Kothe's PR799 X4 word, Chafik Boukhalfa's PR741 frames/owners, the + earlier gauge44/PR645, PR635, PR514/PR484/PR507 controller lineage, and the + PR589 bit supplier remain dependencies. Their original notices and pinned + sources remain in the repository and are covered by the ancestral replay. + +`VENDOR-PINS.json` identifies every selected unmodified vendored file and its +source PR head. This is a selected subset, not a copy of PR870's whole package. +`data/ADAPTER-EDITS.json` gives every literal before/after source edit and its +required multiplicity. The generated runtime retains the upstream notices. +`DEPENDENCY-PINS.json` pins the existing replay drivers/manifests and direct +dependencies. Their full source and artifact checks run through the retained +ancestral verifiers. `MANIFEST.json` binds this package, including all data and +proof-relevant source bytes. diff --git a/research/complex-t37-independent-seed39/vendor/pr890/PROOF.md b/research/complex-t37-independent-seed39/vendor/pr890/PROOF.md new file mode 100644 index 0000000000..64e611cce1 --- /dev/null +++ b/research/complex-t37-independent-seed39/vendor/pr890/PROOF.md @@ -0,0 +1,123 @@ +# The T21 owner composition + +## Fixed suppliers and the new finite object + +The complex local supplier is the U8 word from PR869/PR870, pinned to PR870 +head `b734850dc348800942f0ffd1f0723fdec7539b2b`. Its paid profile is +`{1:2548,2:338,3:446,4:162,5:72,8:8}`; the 504 helper residual widths are +`{4:80,5:32,7:54,8:122,9:216}`, of total width 3778. Both exact scalar +orientations, all literal frames, normalized wrappers and all phase edges are +replayed before the controller uses them. The bit supplier is the unchanged, +blob-pinned PR589 word, with its original exceptional-residue surcharge. + +The new finite object is a literal owner for every one of `189*504 = 95256` +whole-helper roles. No helper is split. The owner includes invocation, physical +family, idle child, port, residual offset and full width. Each call uses 504 +distinct helper families, disjoint from its 224 active data families. + +`data/T5-OWNERS.json.gz` is an explicit 45-call, 22,680-role witness. Its +independent replay checks every role and obtains idle profile `{48:1498,6:1}`. +It was discovered using an integer aggregate packing followed by bipartite +matching decomposition. The solver and this discovery history are not premises: +the published literal map is checked directly, using integer and rational +arithmetic, without NumPy/SciPy or an optimizer in the owner construction. + +Hao Yan's unchanged PR858 constructor reproduces the T16 witness from PR799's +literal T8 map, including its eleven omitted-edit controls. T16 contributes +`{48:4793,44:1,2:1,1:2}`. Relabel T5's replicas by adding 16. The combined +pre-trade idle profile is `{48:6291,44:1,6:1,2:1,1:2}`. + +## Interleaving and the nine-role trade + +The initial order expands each original `(stage,r)` to available copies +`r,r+8,r+16`, omitting third-copy labels above 20. Preserve the T16 and T5 +subsequences separately. Place each T16 call at integer time `2*j`. If a T5 +call originally followed `j` T16 calls, give it sort key `2*(j+4)-1`. Stable +sorting gives the final 189-call order. This is a four-call placement delay, +not additional execution. Every replica still projects exactly to the original +30 source events, with both global tail events after all replica-local work. + +`data/EDITS.json` lists nine exact before/after locations. An early width-four +role leaves a cap-48 bin containing only that role and replaces a later +width-four role in a full cap-48 bin. The later role joins two cap-32 bins +previously filled to 26 and 30. They are repacked to 29 and 31; all offsets +remain contiguous prefixes. Thus + +``` +idle (44,6,2) -> (48,3,1) +``` + +and the two existing rank-one remainders remain. The resulting profile is +`{48:6292,3:1,1:3}`. Offset-only changes count among the nine recorded edits. +The rank mass is unchanged by this trade. Every omitted edit is rejected; +removing the placement delay is rejected after recomputing that alternative +schedule's actual windows. + +For each idle child, the independent audit locates the previous touch of its +physical pair, including bridges, and its idle event. A helper's entire call +must lie strictly between those events. The checker independently reconstructs +the orthogonal 73-axis port basis and the residual/spectator coordinate +permutation for every occupied chart. It checks full widths, no repeated family +within a call, no overlapping slices, and exact coverage of all invocation/helper +identities. These checks establish the same whole-call hosting interface as the +predecessor constructions; they do not establish its all-size realization. + +## The partial bank group + +An auxiliary dedicated-bank envelope uses groups of 8, 8 and 5 replicas. +Data stock is `896*21=18816`; three groups of nine 504-family banks add 13608 +families. The envelope therefore has live stock 32424 and physical stock 32938, +including the same 514 restored private families. It preserves the exact data +recipes, local programs and source helper routes. + +A width-w helper in local lane r occupies axes `wr,...,w(r+1)-1`. A group of +a active lanes consequently occupies the prefix `[0,aw)`. Its padding is +exactly `[aw,73)`, with literal standard orthogonal axes. `check_parent.py` +derives those occupied coordinates from the calls, checks disjointness and +the complement independently, and verifies all translated namespaces and +event multiplicities. Eight targeted mutations are rejected. + +The five-lane group's largest auxiliary padding rank is 53. These are **not +selected recursive children**: every bank and padding child is deleted by the +hosted controller. The dedicated-bank object is used only as the conservative +geometry/work envelope in the inherited invoice. Its number of padding children +is unchanged per bank. The emitted recursive profile has maximum rank 48 and +passes `73^2 > 2*48^2`. The independent final audit also requires empty bank +families and the hosted data-only namespace. No rank-53 halving claim is made. + +## Cost, prefix and exact price + +Multiply the unchanged local profile by 189 and add the idle profile. Its rank +mass is 1366848, giving deficit `73*18816-1366848=6720=21*320`. +Physical stock after hosting is `18816+504+8+2=19330`. The fresh invoice +recounts scalar primitives, Horner coefficient work, paid children, wrappers, +bridges, shifts, moves, private streams and final corrections. Only the +replication-dependent source constants change. The 144 elementary factors per +wrapper and scalar adapter multiplier 16 remain unchanged. + +The checked local prefix bound is 72. With 189 complete calls and 189 bridges, +the global prefix is `72+37+189+189+4=491<512`. The physical row coefficient is +16469, below the retained 20161. All logical/router/literal, mass, precision, +tape, row and halving inequalities are independently recounted and checked. + +Two unchanged rational moment engines certify the complex lower endpoint + +``` +b = 1664724476433282815289 / 10^24. +``` + +Both accept the lower endpoint and reject its successor at `b+10^-24`. +The bit lower endpoint remains `1733427039589844234749/10^24`. The retained +seven-step outer assembly satisfies all 47 strict inequalities and gives + +``` +kappa = 1661957774647029 / 10^18. +``` + +Conservative complex admission, its surcharge price and outer checks run +before selecting the inherited native-complex correction. Omitting the bit +surcharge or advancing the final kappa grid point is rejected. + +The result retains the predecessor all-size compiler, common-label/mutable- +source, whole-call hosting, precision/tape and analytic-transfer hypotheses, +and the bit H1–H5 interface. This finite composition does not discharge them. diff --git a/research/complex-t37-independent-seed39/vendor/pr890/VENDOR-PINS.json b/research/complex-t37-independent-seed39/vendor/pr890/VENDOR-PINS.json new file mode 100644 index 0000000000..d323e1afcf --- /dev/null +++ b/research/complex-t37-independent-seed39/vendor/pr890/VENDOR-PINS.json @@ -0,0 +1,49 @@ +{ + "pr870": { + "head": "b734850dc348800942f0ffd1f0723fdec7539b2b", + "path": "research/gauge44-barch-t16", + "files": { + "code/generated_identity.py": "c8af22719c0f3097a991a3f6ccac8f090afd2faba554745733d9ea88f2c25708", + "code/witness.py": "779c5172894b992131e85be1e592ed2a1aec8c287b872ff42007d36a7291e444", + "code/assemble.py": "15f6986a476bac76bcdc0bfcf51da115389b46f1950d2766b6822f757888b13a", + "code/prepare_global.py": "8c0dae301a8f34b77a5a462f840952d08ed120576212adf5051bc09bcad874dc", + "code/assembly_controls.py": "da7e981ae1b9f099d4e1524cb4f3ba1116011936ebe378692889b5dbfa99029d", + "code/restore_parent.py": "69b7b25ff85e9b8160e233c1d415cc6a0272019e5c486dcec14cb6c349e7024d", + "code/audit_allcold.py": "1467a2acb654e62552c69fb9a7c4c85f70a02120881d222313865058ab71a6cc", + "code/bind_providers_portable.py": "1d39bcc7b63ac158e021454beaae897d123e174360573762aecade3cd43193f6", + "code/invoice_allcold.py": "71eb57514e28ced97251e0507105f654f59885ec4d40486a780bf166098858a8", + "code/bit_supplier_controls.py": "e6d33fb61a570c3f50669412acc467a3fd06ef0b806da6a75bc296c6ba2142a5", + "code/emit_allcold.py": "354367e1fd6185a67b04f4268bcae4d502e47b18cb2131e247f5bcab5b3a769e", + "code/freeze_spec.py": "5971eecac6d6fbcb53244b80f1b9d7232012dc32876fab511214a5addebbe6c2", + "LICENSE": "c71d239df91726fc519c6eb72d318ec65820627232b2f796219e87dcf35d0ab4", + "NOTICE.md": "e67a7bf357e62c130ed0df184c27d3b439b55c30e1c4c003c97bb1c6d0ab58e1", + "UPSTREAM-NOTICE.md": "a75967ebc34e3bf2ff2c25c08e6c7f1a61b0c0d171cfd1b62196ae2caaf2c610", + "SOURCES.json": "a7c2f2d21d535439b729f4d1245fa6a9bb24a148d877c1298e9bbdbcf251067f", + "PROOF-NOTE-BARCH.md": "c24f211b09358b25d6cf47dd18e4bbd8bcf4ecf279e6f1c6c90613cfa230818d", + "PROOF-NOTE-T16.md": "b13621111876dee62367d7ee8e9b46c3707145d5f08914b0932d0960ee700d43", + "inputs/PR589-EXPECTED.json": "b9f0e5ca038abe837b0007c8fe006f366a6f02009244ac57705a8a200e2301f4", + "data/UPSTREAM-PINS.json": "ccc37ab7fbf78947fe02c7f57ea672d2e4eae8454cb1158ed964c75bf423869b", + "data/T8/PLAN.json": "673fd8e812fadcfb757264aba2d7e1abee9199457ed52e678ac65796cd4c1b70", + "construction/barch/build_tri.py": "0fba65b31c2fd71864c291358bb0ad8d5f7e1be07e21df23f0ae73d7b966002e", + "construction/barch/run_controls.py": "42639bf62bf57795e3ea615c1944c67efed00f28591333daeb3139bf63d04476", + "construction/barch/reproduce_barch.py": "19bc970aa6af25ab0e7fa96fb65c64dd0c5243976d8f2cb733cba839155482c1", + "construction/barch/RECIPE-U8.json": "292f0e9f82824c4111728cf4de929bf6e43320fbbdc77658aae9681906b0d652", + "construction/barch/LOCAL-PINS-barch-U8.json": "2d16f99e1f71fd66378f5f767cf4cfa2a58264919a95074c7b31029f39a3c9f5", + "construction/layers_p6n/layer_end_controls.py": "fc58c5699ba6191c1163a3041241f6f0b619626c4462cd99bcf88210bac9e81e", + "construction/layers_np/PIVOT-SWAP-NP.json": "d49b8d316da1cbdaf995dd0e8314d3c67cc9cd4d5902e9d85ccb907be645bef5", + "independent/audit_local.py": "03afcfc9da428b3f6edac81c1fee7f277ab81b64998efae78380b63498dec6cd", + "independent/price_profile_t16.py": "53f8e62dcf27bee032c1bee0245d126a9c8a12ebcf24f6aaff65ea3122fffe29", + "t16/build_owners.py": "faf14dd99b331a8bc5d35e3497bdb9c26fcea24ce2ee74f0dfeae87883af8db4", + "t16/build_parent.py": "82e274d0c7a94f9bf0468dd37f0505d0c42017559ebb4ba8c079a1f4e403d91e", + "t16/NOTICE.md": "902370e6bfcd39dbea2ece474f15fccbcce3b8e966b2b94066bd03e5174591b5" + } + }, + "pr858": { + "head": "ae2e25fee91540c83ceee5a60e3b07422ce21c7d", + "path": "research/complex-double-replica-owners", + "files": { + "baseline_coverage.py": "c0cf6bb2035817a09e1abb5dc492d57af79f584bbd0c1cf5fe73ba0f8f604741", + "independent_check.py": "dd552d627bbefc05ab3f6abbbd1640ba53b67e607002ebb7dd3d17bf03ae1e65" + } + } +} diff --git a/research/complex-t37-independent-seed39/vendor/pr890/build_owners.py b/research/complex-t37-independent-seed39/vendor/pr890/build_owners.py new file mode 100644 index 0000000000..8c49922bf5 --- /dev/null +++ b/research/complex-t37-independent-seed39/vendor/pr890/build_owners.py @@ -0,0 +1,93 @@ +# SPDX-License-Identifier: Apache-2.0 +"""Build T16 plus a literal T5 map, delay its calls, apply nine whole-role edits. + +Hao Yan's PR858 T16 constructor is reused unchanged through PR870's vendored +copy. T5 is a frozen finite assignment, not a solver dependency. All roles and +windows are independently checked by independent_check.py after construction. +""" +import argparse +import copy +from pathlib import Path +from common import HERE, ROOT, read, require, sha, identity, dump, write_gzip, load + + +def merged_order(source): + initial = [(s, r+8*g) for s, r in source['order'] for g in range(3) if r+8*g < 21] + decorated, count16 = [], 0 + for stage, replica in initial: + if replica < 16: + decorated.append((2*count16, 0, stage, replica)) + count16 += 1 + else: + decorated.append((2*(count16+4)-1, 1, stage, replica)) + return [[s, r] for _, _, s, r in sorted(decorated)] + + +def location(role): + return {k: role[k] for k in ('owner_replica', 'child', 'port', 'offset')} + + +def move(role, destination, plan): + role.update(destination) + r, child, port = (role[k] for k in ('owner_replica', 'child', 'port')) + role['copy'] = r*112+port + role['family'] = r*896+(2*plan['pairs'][str(child)]+plan['sides'][str(child)])*112+port + + +def construct(source_plan, source_owners): + builder = load(HERE/'vendor/pr870/t16/build_owners.py', 'unchanged_t16_owners') + require(sha(source_plan) == builder.SOURCE_PLAN_SHA256 and + sha(source_owners) == builder.SOURCE_OWNERS_SHA256, 'PR799 T8 source pins') + plan, source = read(source_plan), read(source_owners) + t16 = builder.construct(source, plan) + require(builder.audit(t16, plan) == {1: 2, 2: 1, 44: 1, 48: 4793}, 'Inherited T16 audit') + t16_controls = builder.controls(t16, plan) + require(len(t16_controls) == 11, 'Inherited T16 omitted-edit controls') + t5 = read(HERE/'data/T5-OWNERS.json.gz') + require(len(t5) == 45*504, 'T5 literal role inventory') + roles = copy.deepcopy(t16) + for old in t5: + role = dict(old) + for key in ('replica', 'owner_replica'): + role[key] += 16 + role['copy'] += 16*112 + role['family'] += 16*896 + roles.append(role) + order = merged_order(plan) + at = {tuple(key): time for time, key in enumerate(order)} + require(len(at) == 189, 'T21 complete invocation inventory') + for role in roles: + role['time'] = at[role['stage'], role['replica']] + roles.sort(key=lambda r: (r['time'], r['helper'])) + before = copy.deepcopy(roles) + bykey = {(r['time'], r['helper']): r for r in roles} + require(len(bykey) == 189*504, 'Joined role identities') + edits = read(HERE/'data/EDITS.json') + require(len(edits) == 9, 'Nine explicit edits') + for edit in edits: + role = bykey[tuple(edit['role'])] + require(location(role) == edit['before'], 'Frozen edit source location') + move(role, edit['after'], plan) + require(sum(a != b for a, b in zip(before, roles)) == 9, 'Exactly nine changed roles') + return roles, order, dict(t16_omitted_edit_controls=t16_controls, + t16_content_sha256=identity(t16), + t5_content_sha256=identity(t5), changed_roles=9) + + +def main(): + parser = argparse.ArgumentParser(description=__doc__) + parser.add_argument('--out', type=Path, required=True) + args = parser.parse_args() + require(not args.out.exists(), 'Owner output must be new') + source = ROOT/'research/gauge44-frames-x/data' + roles, order, details = construct(source/'PLAN.json', source/'OWNERS.json.gz') + args.out.mkdir(parents=True) + write_gzip(args.out/'OWNERS.json.gz', roles) + dump(args.out/'ORDER.json', order) + dump(args.out/'OWNER-CONSTRUCTION.json', dict( + status='PASS_LITERAL_T16_PLUS_T5_NINE_ROLE_CONSTRUCTION', roles=len(roles), + owners_sha256=sha(args.out/'OWNERS.json.gz'), owners_content_sha256=identity(roles), **details)) + + +if __name__ == '__main__': + main() diff --git a/research/complex-t37-independent-seed39/vendor/pr890/common.py b/research/complex-t37-independent-seed39/vendor/pr890/common.py new file mode 100644 index 0000000000..680cd4b1a9 --- /dev/null +++ b/research/complex-t37-independent-seed39/vendor/pr890/common.py @@ -0,0 +1,50 @@ +# SPDX-License-Identifier: Apache-2.0 +"""Portable JSON identities and explicit checks for the T21 witness.""" +import gzip +import hashlib +import importlib.util +import json +from pathlib import Path + +HERE = Path(__file__).resolve().parent +ROOT = HERE.parents[1] + + +def require(ok, message): + if not ok: + raise ValueError(message) + + +def read(path): + path = Path(path) + raw = path.read_bytes() + return json.loads(gzip.decompress(raw) if path.suffix == '.gz' else raw) + + +def canonical(value): + return json.dumps(value, sort_keys=True, separators=(',', ':'), allow_nan=False).encode() + + +def sha(path): + return hashlib.sha256(Path(path).read_bytes()).hexdigest() + + +def identity(value): + return hashlib.sha256(canonical(value)).hexdigest() + + +def dump(path, value): + Path(path).write_bytes((json.dumps(value, indent=2)+'\n').encode()) + + +def write_gzip(path, value): + raw = bytearray(gzip.compress(canonical(value), mtime=0)) + raw[9] = 255 + Path(path).write_bytes(raw) + + +def load(path, name): + spec = importlib.util.spec_from_file_location(name, path) + module = importlib.util.module_from_spec(spec) + spec.loader.exec_module(module) + return module diff --git a/research/complex-t37-independent-seed39/vendor/pr890/data/EDITS.json b/research/complex-t37-independent-seed39/vendor/pr890/data/EDITS.json new file mode 100644 index 0000000000..2c093bb179 --- /dev/null +++ b/research/complex-t37-independent-seed39/vendor/pr890/data/EDITS.json @@ -0,0 +1,164 @@ +[ + { + "role": [ + 3, + 5 + ], + "before": { + "owner_replica": 8, + "child": 8, + "port": 0, + "offset": 0 + }, + "after": { + "owner_replica": 20, + "child": 8, + "port": 38, + "offset": 0 + } + }, + { + "role": [ + 128, + 138 + ], + "before": { + "owner_replica": 20, + "child": 8, + "port": 38, + "offset": 0 + }, + "after": { + "owner_replica": 20, + "child": 14, + "port": 111, + "offset": 8 + } + }, + { + "role": [ + 141, + 266 + ], + "before": { + "owner_replica": 20, + "child": 14, + "port": 111, + "offset": 8 + }, + "after": { + "owner_replica": 20, + "child": 14, + "port": 111, + "offset": 12 + } + }, + { + "role": [ + 144, + 240 + ], + "before": { + "owner_replica": 20, + "child": 14, + "port": 111, + "offset": 17 + }, + "after": { + "owner_replica": 6, + "child": 15, + "port": 0, + "offset": 0 + } + }, + { + "role": [ + 145, + 360 + ], + "before": { + "owner_replica": 6, + "child": 15, + "port": 0, + "offset": 0 + }, + "after": { + "owner_replica": 6, + "child": 15, + "port": 0, + "offset": 9 + } + }, + { + "role": [ + 146, + 360 + ], + "before": { + "owner_replica": 6, + "child": 15, + "port": 0, + "offset": 9 + }, + "after": { + "owner_replica": 6, + "child": 15, + "port": 0, + "offset": 18 + } + }, + { + "role": [ + 151, + 193 + ], + "before": { + "owner_replica": 6, + "child": 15, + "port": 0, + "offset": 18 + }, + "after": { + "owner_replica": 20, + "child": 14, + "port": 111, + "offset": 21 + } + }, + { + "role": [ + 178, + 414 + ], + "before": { + "owner_replica": 6, + "child": 15, + "port": 0, + "offset": 22 + }, + "after": { + "owner_replica": 20, + "child": 14, + "port": 111, + "offset": 25 + } + }, + { + "role": [ + 181, + 414 + ], + "before": { + "owner_replica": 6, + "child": 15, + "port": 0, + "offset": 26 + }, + "after": { + "owner_replica": 6, + "child": 15, + "port": 0, + "offset": 27 + } + } +] diff --git a/research/complex-t37-independent-seed39/vendor/pr890/data/T5-OWNERS.json.gz b/research/complex-t37-independent-seed39/vendor/pr890/data/T5-OWNERS.json.gz new file mode 100644 index 0000000000..6ab157ac88 Binary files /dev/null and b/research/complex-t37-independent-seed39/vendor/pr890/data/T5-OWNERS.json.gz differ diff --git a/research/complex-t37-independent-seed39/vendor/pr890/vendor/pr870/LICENSE b/research/complex-t37-independent-seed39/vendor/pr890/vendor/pr870/LICENSE new file mode 100644 index 0000000000..261eeb9e9f --- /dev/null +++ b/research/complex-t37-independent-seed39/vendor/pr890/vendor/pr870/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/complex-t37-independent-seed39/vendor/pr890/vendor/pr870/NOTICE.md b/research/complex-t37-independent-seed39/vendor/pr890/vendor/pr870/NOTICE.md new file mode 100644 index 0000000000..d95b8b94ca --- /dev/null +++ b/research/complex-t37-independent-seed39/vendor/pr890/vendor/pr870/NOTICE.md @@ -0,0 +1,35 @@ +# Gauge44 attribution and scope + +New contributions by icekylinx, with OpenAI GPT-6 Astra assistance. +Local review and packaging used OpenAI Codex. Apache-2.0 applies; +the license is included. The full original PR635 notice is preserved as +UPSTREAM-NOTICE.md and construction/UPSTREAM-NOTICE.md. + +The new contribution is the changed source-branch gauge and retired-row +completion, source-carried coordinate totals, exact 44-cold-end realization, +and explicit all72 whole-family assignment using concave capacity matching +with integer majorization certificates. The center-carrier generalization +retains the exact ordered common frames and complete native local contract. +Independent local, price, interface and owner fixed-point checks are included. + +The construction retains the credited PR635 K-triangle and porting machinery, +earlier joint-prefix/HPE/frame ancestry and icekylinx's prior factory work. +#645 used the same cited PR543 bit supplier as PR635. This package (research/gauge44-barch) cites the merged PR589 bit supplier instead, with a derived rank-mass deficit (PROOF-NOTE-BIT.md); #645's retained PR543-based evidence is historical. It builds #645's word without K-triangles (PartialK) and stacks earlier community jp8 layers on it (G44Stack), adds the p6n ends (NoTriReopen), entrance promotions (BlockInvert) a read-set exchange (BRoute), chafreaky's #741 frames, JointXF's joint exchange and NewBArch's triangle-hybrid B rewrite; see README. All-size, realization, +hosting, precision/tape, analytic-transfer and bit H1-H5 assumptions remain +conditional. No upstream license, credit, source pin or AI disclosure is +replaced by this notice. + +PR641 and PR642 were checked as concurrent reported frontier comparisons. +Their endpoints and owner maps are not included here. See CONSTRUCTION.md, +hosting/PROOF.md, independent/ and README.md for the exact contribution scope. + +T16 (research/gauge44-barch-t16): the sixteen-replica two-bank controller, the +multiplicity-checked source adapters, the direct-sum parent lift, the actual +bridge-aware window reconstruction, the eleven whole-helper moves and the +independent T16 checker are Hao Yan's (@FanPUYen) PR #858 +(research/complex-double-replica-owners, Apache-2.0, prepared with OpenAI Codex +assistance), vendored unchanged in t16/ (build_owners.py, build_parent.py, +source_adapters.py, NOTICE.md) and credited there. Replica16 composed them with +the U8 word (glue t16/own16.py, t16/lift16.py, t16/indep16.py, verify_t16.py, +independent/price_profile_t16.py). No optimality claim is made for sixteen +replicas. diff --git a/research/complex-t37-independent-seed39/vendor/pr890/vendor/pr870/UPSTREAM-NOTICE.md b/research/complex-t37-independent-seed39/vendor/pr890/vendor/pr870/UPSTREAM-NOTICE.md new file mode 100644 index 0000000000..ebc24a0168 --- /dev/null +++ b/research/complex-t37-independent-seed39/vendor/pr890/vendor/pr870/UPSTREAM-NOTICE.md @@ -0,0 +1,34 @@ +# Attribution and scope + +Four verified provider types are offered to every call: PR571's prefix word with twelve multi-cut cold kernels (PR568's unchanged constructor), the same word with forty width-five entrance promotions (PR569's unchanged frame constructor) before those kernels, PR575's plain joint-prefix provider, and PR568's eight-cold provider. A window MILP with an exact per-pattern model chooses the dispatch and a literal owner map. PR583's six source-bound kernel frame coalescences (its unchanged constructor and negative controls) are applied to every PR571-prefix provider word (ck and atm3), followed by two further coalescences that each first move one addition past two commuting additions (package code/build_gate_moves.py, extending PR583's constructor); a final hyperplane_end step (package code/build_hpe.py) then runs 46 single-gate cleanups h -= p right after part B at the dim-8 join U of their registers, so 46 width-8 entering helpers per call end at U with width 7; each such gate commutes with every earlier cleanup gate on its registers (for 8 of them the partner's one earlier gate x -= p only reads p), and the reordered program is replayed exactly. A window MILP (exact windows, RINS around an LP vertex) gives the dispatch ck 45 / atm3 21 / jp8 6 and the literal owner map. + +Pinned external sources (unchanged; `verify.py` checks their manifests and every file it uses): +- PR568 (`research/complex-multicold`, commit `71c99ac935a33bb7b59a1b4a7af8725a939b0b90`). +- PR571 (`research/structural-gain`, commit `b7bdc5a8de18fcf418cfb9c7d83a2b1097a5e4a3`). +- PR569 (`research/larger-gain`, commit `897213a855b7fb8a1b8b0e552a2f5c42e6c1b326`). +- PR575 (`research/complex-joint-prefix`, commit `eac6f7e378ab622dac50a2fd4b7ef6eab014de44`). +- PR583 (`research/kernel-frame-coalescing`, commit `89be768f0157f5a3d8e4db69cf1748768605eac9`). + +Provider construction is described as typed steps in `data/SPEC.json` (`build`); `verify.py` runs only allowlisted step types with their paired omission audits and checks every input and output content hash. `code/` holds the spec-driven global admission scripts adapted from PR571's `frontier-composition/global-code/` (OpenAI Codex assisted, Apache-2.0): every expected value is read from `data/SPEC.json` and compared only after independent recomputation. `code/generated_identity.py` and `code/generated_identity_controls.py`, and the decompressed-content artifact identities in the bind, audit, invoice, assembly and phase-timing scripts, are taken unchanged from PR586 by chafreaky (`research/promoted-kernel-coalescing`, commit `4846fee5b06af770e9b3a10c36200f673d656725`, OpenAI Codex assisted, Apache-2.0), including its proof-content and reference/metadata mutation controls; the normalization of descriptive width metadata after frame changes follows the same PR. + +In PR601, the owner map was nominated by a HiGHS window MILP (adapted from PR569's `global/nominate_width7.py`) with lazy cross-time Hall cuts; this package's re-solved map is described below. Neither is an admission dependency. + +DreamingOfClouds with Claude Opus 5.5 (Anthropic), via Claude Code. (The PR601 package this one starts from states: "Prepared by Claude Code (Anthropic) research agents.") Apache-2.0 applies; LICENSE is included. All notices, licenses, source pins and AI disclosures of the pinned sources and their ancestry are retained in those packages and are not replaced by this notice. All inherited conditional assumptions remain conditional. + +**This package (complex-571-cold14, DreamingOfClouds).** It starts from PR601 (jeremykothe2, `research/complex-571-hpem46`, commit `529ab7dcb59d5ea7a5798e9e06cf5b3aee8a1550`). Everything above is kept unchanged except the following: +- every provider chain (ck, atm3, jp8) gains the typed step `cold_end` (`code/build_cold_end.py`, `code/cold_end_controls.py`; recipes `data/recipes/*-cold_end.json.gz`); +- the generalised native chain and the global admission scripts accept cold helpers that end below FULL (with `0:U` wrappers), a refactored exact cleanup, and check the wrapper order; +- `data/PLAN.json` / `data/OWNERS.json.gz` (dispatch and literal owner map) come from a relocate/swap/ejection-chain/provider-flip annealing search started from PR601's map, refined by an exact pattern-restricted owner model (CP-SAT) with a literal edge-colouring expansion (not an admission dependency); +- `data/SPEC.json` holds the expected values, recorded by a discovery run and then checked by a strict run. + +The cold-end construction (a row-plus-column cone condition for low-frame ends, a rank-0 dirt-spread premix and multi-gate lower-frame cleanup) builds on PR591 / PR592 / PR593 / PR601 (jeremykothe2) and our PR599 (Lean: multi-gate and cold hyperplane-end tails). DreamingOfClouds with Claude Opus 5.5 (Anthropic), via Claude Code. Build on this at your own risk. + +**This package (complex-571-cold14-b3, jeremykothe2).** It is PR604's `complex-571-cold14` (DreamingOfClouds) with ColdBeyond's second cold end per block (two new `cold_end` A-gate primitives, `PROOF-NOTE.md`), ColdSupply's E1 entering pair and reviewed controls, a free dispatch (jp8 ×60, atm3 ×12) and a literal owner map from an exact per-time-Hall window MIP. All other construction, code, controls and proofs are PR604's and earlier contributors', unchanged. + +**This package (complex-571-cold14-k492).** It is complex-571-cold14-b3 with these changes: +- **K-triangle base words.** The leaver-read K-triangle skeleton atom and its read schedule (`data/TRI-SCHEDULE.json`) are by AtomScout, a Claude Code research agent. `code/construct_k_triangle.py` is PR531's `code/construct_504.py` (icekylinx, OpenAI Codex / GPT assisted, Apache-2.0; pinned source `direct_delivery`) extended with that atom. +- **Ported chains.** The PR604/B3 chains are ported stage by stage onto the K-triangle words by `code/build_port_stage.py` (Port480, a Claude Code research agent). `code/build_frame_regroup.py` extends PR583's `build_frames.py` (chafreaky). +- **Helper count R.** The generalisation of the global scripts to the provider helper count R is by GlobalR (a Claude Code research agent), with AtomReviewer's fixes (PROOF-NOTE-R.md). +- **Owner map.** The owner map, the cold_end recipes on the K-triangle words and the package assembly are by Stack492, Port480 and ColdBeyond (Claude Code research agents). + +Build on this at your own risk. diff --git a/research/complex-t37-independent-seed39/vendor/pr890/vendor/pr870/t16/NOTICE.md b/research/complex-t37-independent-seed39/vendor/pr890/vendor/pr870/t16/NOTICE.md new file mode 100644 index 0000000000..403f4afffb --- /dev/null +++ b/research/complex-t37-independent-seed39/vendor/pr890/vendor/pr870/t16/NOTICE.md @@ -0,0 +1,39 @@ +# Attribution and license + +Apache-2.0. New construction and integration: Hao Yan (@FanPUYen), 2026. +Prepared with substantial OpenAI Codex assistance, including separately tasked +AI agents for owner construction, independent mathematical/code checking and +native verification. These are not claims of independent human peer review. + +The exact local supplier is Jeremy Kothe's accepted PR799 X4 word, layered on +Chafik Boukhalfa's PR741 frame changes and PR685 owner construction. Chafik's +PR795 fixed-inventory optimality result motivated changing the replica count. +The original owner bytes, scalar program, local frame and width inventory, +native phase and wrapper implementations retain their existing authorship. + +Credit icekylinx for the source gauge and supplier/admission pipeline; +DreamingOfClouds for the PR589 bit transport and inherited cold-end work; +eumemic for the PR555 bit supplier and earlier supplier work; Rohan Arun for +the native exact-complex recurrence correction; Jeremy Diviney, jaymosley07, +and the other retained owner/allocation contributors; and the complete +PR514/PR484/PR507/PR558 controller, physical hosting and verification lineage. +This list is cumulative credit, not approval of every claim in those PRs. + +All original notices and licenses remain in the referenced source packages: + +- `research/gauge44-frames-x/{NOTICE,UPSTREAM-NOTICE}.md` +- `research/complex-sw4-frame8/PROVENANCE.md` +- `research/e8-bit-p111-tuned/tune/README.md` +- the repository `CONTRIBUTORS.md` and source-package licenses. + +The verifier copies pinned global source files into an external replay +directory and applies an explicit checked edit list. Original attribution +comments are preserved in those generated derivatives. No original source +file or historical certificate is rewritten. + +The optional ancestry-reuse coverage guard addresses the omission issue +identified by Lucas (@ljste) in PR838 and the related PR847 integration by +Chinmay (@chinmayarvind23). Its fixed inventories were read from the accepted +PR741 source; no pending implementation is imported. Charles Bethin's +concurrent PR850 strengthens the fixed-inventory owner-profile theorem and +was checked for overlap before publication; that inventory is changed here. diff --git a/research/complex-t37-independent-seed39/vendor/pr890/vendor/pr870/t16/build_owners.py b/research/complex-t37-independent-seed39/vendor/pr890/vendor/pr870/t16/build_owners.py new file mode 100644 index 0000000000..235d2b5435 --- /dev/null +++ b/research/complex-t37-independent-seed39/vendor/pr890/vendor/pr870/t16/build_owners.py @@ -0,0 +1,198 @@ +#!/usr/bin/env python3 +# SPDX-License-Identifier: Apache-2.0 +# Copyright (c) 2026 Hao Yan (@FanPUYen) +"""Construct the T16 owner map by eleven frozen edits, without an optimizer. + +Authored with OpenAI Codex assistance. Precursor credit: Chafik Boukhalfa's +PR741 frames and owner map, Jeremy Kothe's PR799 paired-read-exchange provider, +and the PR514/PR484/PR507 whole-owner controller lineage. +The original map is duplicated into disjoint replica namespaces. One two-role +augmenting path and two tail-bin repartitions concentrate idle remainders. +Actual source-event windows are checked separately by build_parent.py and the +independent global geometry audit; the source-window screen here is not that +geometric proof. +""" +import argparse +import copy +import gzip +import hashlib +import json +from collections import Counter, defaultdict +from pathlib import Path + +SOURCE_PLAN_SHA256 = '5f40e7ccfca61f298539b4f41286d2a9d62caf947057f9cec82aa53f73f707fd' +SOURCE_OWNERS_SHA256 = '99d1c4caf85855c353d30f122d9efbd9e51562914facded13027f347b18a6082' +EXPECTED_IDLE = {1: 2, 2: 1, 44: 1, 48: 4793} +# (time, helper, width, old(replica,child,port,offset), new(...)). +# Helpers are zero-based, excluding the 224 local data wires. +EDITS = ( + (2, 5, 4, (0, 8, 0, 0), (7, 8, 78, 26)), + (107, 360, 9, (14, 15, 0, 0), (6, 15, 0, 9)), + (112, 193, 4, (6, 15, 0, 9), (6, 15, 0, 18)), + (113, 193, 4, (14, 15, 0, 9), (14, 15, 0, 0)), + (116, 181, 4, (7, 8, 78, 26), (14, 15, 0, 4)), + (134, 414, 4, (6, 15, 0, 13), (6, 15, 0, 22)), + (135, 414, 4, (14, 15, 0, 13), (14, 15, 0, 8)), + (136, 414, 4, (6, 15, 0, 17), (6, 15, 0, 26)), + (137, 414, 4, (14, 15, 0, 17), (14, 15, 0, 12)), + (140, 87, 8, (6, 15, 0, 21), (14, 15, 0, 16)), + (141, 87, 8, (14, 15, 0, 21), (14, 15, 0, 24)), +) + + +def require(condition, reason): + if not condition: + raise ValueError(reason) + + +def canonical(value): + return json.dumps(value, sort_keys=True, separators=(',', ':')).encode() + + +def portable_gzip(raw): + compressed = bytearray(gzip.compress(raw, mtime=0)) + compressed[9] = 255 + return bytes(compressed) + + +def read(path): + raw = Path(path).read_bytes() + return json.loads(gzip.decompress(raw) if str(path).endswith('.gz') else raw) + + +def sha(path): + return hashlib.sha256(Path(path).read_bytes()).hexdigest() + + +def location(role): + return tuple(role[key] for key in ('owner_replica', 'child', 'port', 'offset')) + + +def move(role, destination, plan): + replica, child, port, offset = destination + role.update(owner_replica=replica, child=child, port=port, offset=offset, + copy=replica*112+port, + family=replica*896+(2*plan['pairs'][str(child)]+plan['sides'][str(child)])*112+port) + + +def duplicate(source): + require(len(source) == 72*504, 'source role count') + result = [] + for role in source: + for group in range(2): + new = dict(role) + new['owner_replica'] += 8*group + new['replica'] += 8*group + new['copy'] = new['owner_replica']*112+new['port'] + new['family'] += 7168*group + new['time'] = 2*role['time']+group + result.append(new) + result.sort(key=lambda role: (role['time'], role['helper'])) + require(len({(r['time'], r['helper']) for r in result}) == len(result), 'duplicate role identity') + return result + + +def construct(source, plan): + roles = duplicate(source) + bykey = {(r['time'], r['helper']): r for r in roles} + for time, helper, width, old, new in EDITS: + role = bykey[time, helper] + require(location(role) == old and role['width'] == width, 'frozen edit source mismatch') + move(role, new, plan) + return roles + + +def audit(roles, plan): + require(len(roles) == 144*504, 'role count') + order = [(s, r+8*g) for s, r in plan['order'] for g in range(2)] + require(len(set(order)) == 144, 'call order coverage') + used, helpers, families = defaultdict(set), defaultdict(set), defaultdict(set) + capacities = {} + windows = {} + for key, (capacity, times) in plan['windows'].items(): + replica, child = map(int, key.split(',')) + for group in range(2): + capacities[replica+8*group, child] = capacity + windows[replica+8*group, child] = {2*time+g for time in times for g in range(2)} + widths = plan['provider_registry']['gauge44']['widths'] + for r in roles: + time, helper = r['time'], r['helper'] + owner, child, port, offset = location(r) + require(0 <= time < 144 and order[time] == (r['stage'], r['replica']), 'role invocation') + require(0 <= helper < 504 and r['width'] == widths[helper], 'helper width') + require(0 <= owner < 16 and 0 <= port < 112, 'owner range') + require((owner, child) in capacities, 'owner child') + require(time in windows[owner, child], 'cloned-window screen') + require(r['copy'] == owner*112+port, 'copy identity') + expected_family = owner*896+(2*plan['pairs'][str(child)]+plan['sides'][str(child)])*112+port + require(r['family'] == expected_family, 'family identity') + require(helper not in helpers[time], 'duplicate helper') + require(r['family'] not in families[time], 'two helpers in one family') + helpers[time].add(helper) + families[time].add(r['family']) + cells = set(range(offset, offset+r['width'])) + require(offset >= 0 and offset+r['width'] <= capacities[owner, child], 'capacity overflow') + key = owner, child, port + require(not cells & used[key], 'overlapping residual footprint') + used[key].update(cells) + require(set(helpers) == set(range(144)) and all(h == set(range(504)) for h in helpers.values()), 'complete helper inventory') + idle = Counter() + for (replica, child), capacity in capacities.items(): + for port in range(112): + cells = used[replica, child, port] + require(cells == set(range(len(cells))), 'non-prefix residual footprint') + if len(cells) < capacity: + idle[capacity-len(cells)] += 1 + require(dict(idle) == EXPECTED_IDLE, 'idle profile') + return dict(sorted(idle.items())) + + +def controls(roles, plan): + failures = [] + for time, helper, width, old, new in EDITS: + mutant = copy.deepcopy(roles) + role = next(r for r in mutant if (r['time'], r['helper']) == (time, helper)) + move(role, old, plan) + try: + audit(mutant, plan) + except ValueError as error: + failures.append(dict(time=time, helper=helper, reason=str(error))) + else: + raise ValueError('omitted-edit control accepted: %s' % ((time, helper),)) + return failures + + +def main(): + parser = argparse.ArgumentParser(description=__doc__) + parser.add_argument('--source-plan', type=Path, required=True) + parser.add_argument('--source-owners', type=Path, required=True) + parser.add_argument('--out', type=Path, required=True) + args = parser.parse_args() + require(not args.out.exists(), 'output directory already exists') + require(sha(args.source_plan) == SOURCE_PLAN_SHA256, 'source plan byte pin') + require(sha(args.source_owners) == SOURCE_OWNERS_SHA256, 'source owners byte pin') + plan, source = read(args.source_plan), read(args.source_owners) + roles = construct(source, plan) + idle = audit(roles, plan) + rejected = controls(roles, plan) + baseline = duplicate(source) + require(sum(a != b for a, b in zip(baseline, roles)) == 11, 'exact edit count') + raw = canonical(roles) + compressed = portable_gzip(raw) + require(gzip.decompress(compressed) == raw and compressed[4:8] == bytes(4) and compressed[9] == 255, 'portable gzip') + args.out.mkdir(parents=True) + (args.out/'OWNERS.json.gz').write_bytes(compressed) + receipt = dict(status='PASS_EXPLICIT_ELEVEN_EDIT_OWNER_CONSTRUCTION', + source_plan_sha256=sha(args.source_plan), source_owners_sha256=sha(args.source_owners), + owners_sha256=hashlib.sha256(compressed).hexdigest(), + owners_content_sha256=hashlib.sha256(raw).hexdigest(), + calls=144, helpers_per_call=504, roles=len(roles), changed_roles=11, + edits=EDITS, idle_profile=idle, omitted_edit_controls=rejected, + exact_idle_delta_from_doubled_source={48: 1, 44: -1, 3: -2, 2: 1}, + scope='Explicit owner constructor and structural checks. Actual source-event windows, full global geometry and finite invoice are separately required.') + (args.out/'OWNER-CONSTRUCTION.json').write_bytes((json.dumps(receipt, indent=2)+'\n').encode('utf-8')) + print(json.dumps({k: v for k, v in receipt.items() if k not in ('edits', 'omitted_edit_controls')}, indent=2)) + + +if __name__ == '__main__': + main() diff --git a/research/complex-t37-independent-seed39/verify.py b/research/complex-t37-independent-seed39/verify.py new file mode 100644 index 0000000000..c3acde88f3 --- /dev/null +++ b/research/complex-t37-independent-seed39/verify.py @@ -0,0 +1,286 @@ +# SPDX-License-Identifier: Apache-2.0 +"""Cold U8/T37/PR589 replay, with explicit hash-checked ancestry reuse. + +Default rebuilds PR799, PR741 and PR589 before rebuilding the U8 local word. +The only reuse option accepts a complete PR799 replay and its complete ancestry; +the unchanged upstream binding checker and fixed stage-coverage check rerun. +No discovery mode or optimizer is exposed. Outputs must be outside this checkout. +""" +import argparse +import copy +from fractions import Fraction +import os +from pathlib import Path +import shutil +import subprocess +import sys +import time +from common import HERE, ROOT, read, require, sha, identity, dump, load + +SOURCE = ROOT/'research/complex-k492-owner-repair/vendor/multicold' + + +def validate_pins(): + path = HERE/'MANIFEST.json' + manifest = read(path) + actual = {p.relative_to(HERE).as_posix(): sha(p) for p in HERE.rglob('*') + if p.is_file() and p != path and '__pycache__' not in p.parts} + require(actual == manifest, 'Package manifest mismatch') + for relative, expected in read(HERE/'DEPENDENCY-PINS.json').items(): + p = (ROOT/relative).resolve() + require(not Path(relative).is_absolute() and p.is_relative_to(ROOT), 'Dependency path') + require(sha(p) == expected, 'Repository dependency changed: '+relative) + for label, record in read(HERE/'VENDOR-PINS.json').items(): + for relative, expected in record['files'].items(): + require(sha(HERE/'vendor'/label/relative) == expected, 'Vendored source changed: '+relative) + return dict(manifest_sha256=sha(path), dependencies_sha256=sha(HERE/'DEPENDENCY-PINS.json')) + + +def semantic_identities(plan_path, owner_path): + plan, roles = read(plan_path), read(owner_path) + require(plan['assignment_sha256'] == plan['replica_lift']['owners_file_sha256'] == sha(owner_path), + 'Stale owner container reference') + content = identity(roles) + require(plan['assignment_content_sha256'] == content, 'Stale owner content reference') + value = copy.deepcopy(plan) + value['assignment_sha256'] = value['replica_lift']['owners_file_sha256'] = content + return dict(owners_content_sha256=content, plan_semantic_sha256=identity(value)) + + +def runtime_spec(plan_path, owner_path): + frozen = read(HERE/'data/SPEC.json') + ids = semantic_identities(plan_path, owner_path) + require(all(frozen['data'][key] == value for key, value in ids.items()), 'Frozen owner/plan semantic identity') + value = copy.deepcopy(frozen) + value['data']['owners_sha256'], value['data']['plan_sha256'] = sha(owner_path), sha(plan_path) + pivot = (HERE/frozen['pivot_swap']['recipe']).resolve() + require(pivot.is_relative_to(HERE) and sha(pivot) == frozen['pivot_swap']['sha256'], 'Immutable pivot recipe') + value['pivot_swap']['recipe'] = str(pivot) + return value, ids + + +def final_binding(work, stages, pins, reuse, baseline, ancestor): + claim = read(HERE/'data/CLAIM.json') + assembly = read(work/'ASSEMBLY.json') + independent = read(work/'INDEPENDENT-T37.json') + g = work/'global' + owners = read(g/'audit/OWNERS-AND-PROFILE.json') + controller = read(g/'audit/ASYNC-AUDIT.json') + invoice = read(g/'audit/PREFIX-AND-INVOICE.json') + price = read(work/'INDEPENDENT-PRICE.json') + spec, identities = runtime_spec(work/'lift/PLAN.json', work/'owners/OWNERS.json.gz') + require(spec == read(work/'runtime/data/SPEC.json'), 'Only authorized runtime SPEC fields may change') + adapters = load(HERE/'source_adapters.py', 'exact_t37_runtime_adapters') + require(adapters.check_runtime(work/'runtime') == read(work/'runtime/ADAPTERS.json'), + 'Exact materialized runtime source and input binding') + require(assembly['status'] == 'PASS_GAUGE44_NATIVE_EXACT_GLOBAL_ASSEMBLY', 'Assembly status') + require(assembly['kappa'] == str(Fraction(claim['kappa'])) == price['prices']['native']['outer']['kappa'], 'Two exact prices agree') + require(Fraction(assembly['complex_lower']) == Fraction(claim['complex_lower']) and + Fraction(assembly['bit_lower']) == Fraction(claim['bit_lower']), 'Both certified endpoints') + require(Fraction(assembly['kappa']) > Fraction(claim['baseline890_kappa']), 'Strict gain over PR890') + require(assembly['complex_profile'] == independent['profile'] == owners['paid_profile'] == + controller['complex_profile'] == read(work/'lift/PLAN.json')['profile'] == spec['expected']['global_profile'], + 'All independent profile recounts agree') + for key in ('roles', 'calls', 'live', 'physical', 'rank_mass', 'deficit', 'prefix_bits'): + require(independent[key] == claim[key], 'Independent T37 '+key) + for key in ('live', 'physical', 'rank_mass', 'deficit'): + require(owners[key] == independent[key], 'Owner/independent '+key) + require(independent['roles'] == owners['hosted_residuals'] == controller['complex_hosted_residuals'] == 167832, 'Whole-helper inventory') + require(independent['calls'] == controller['complete_invocations'] == invoice['complete_invocation_sweeps'] == 333, 'Complete invocation inventory') + require(independent['physical_row_coefficient'] == invoice['finite']['physical_row_coefficient'] == claim['row_coefficient'] < 20161, 'Physical row reserve') + require(independent['prefix_bits'] == invoice['global_prefix_bits'] == 779 < invoice['charged_prefix_bits'] == 1024, 'Prefix reserve') + require(independent['actual_73_axis_charts'] == owners['actual_73column_sigmas'] == controller['actual_orthogonal_73column_maps'], 'Independent chart recount') + require(independent['idle'] == claim['idle'] and len(independent['controls_rejected']) == 6 and len(independent['order_controls_rejected']) == 3, 'T37 independent controls') + require(all(independent[key] is True for key in + ('explicit_order_input', 'declared_order_bijection', + 'declared_order_role_times_bound', 'per_replica_stage_order')), + 'Explicit T37 order and role-time admission') + require(independent['charged_prefix_bits'] == claim['charged_complex_payload'] == + invoice['charged_prefix_bits'] == 1024, 'One charged complex payload') + five = read(work/'INDEPENDENT-T5.json') + require(len(five['controls_rejected']) == 6 and five['roles'] == 22680 and five['calls'] == 45 and + five['idle'] == {'48': 1498, '6': 1}, 'T5 independent witness and controls') + pc = read(work/'PARENT-CHECK.json') + require(pc['status'] == 'PASS_INDEPENDENT_T37_PARTIAL_BANK_ENVELOPE' and len(pc['controls_rejected']) == 8, 'Partial-bank audit and controls') + require(pc['parent_content_sha256'] == identity(read(work/'lift/GLOBAL-TEMPLATE.json.gz')) == + invoice['parent_template_sha256'], 'Exact checked partial-bank parent identity') + require(pc['source_content_sha256'] == identity(read(baseline/'global/global/base/split-centres/GLOBAL-TEMPLATE.json.gz')), 'Exact original parent identity') + oc = read(work/'OWNER-CONTROLS.json') + require(len(oc['omitted_edit_controls']) == 10 and oc['omitted_delay_rejection'], 'Ten edits and interleave control') + construction = read(work/'owners/OWNER-CONSTRUCTION.json') + require(construction['changed_roles'] == 10 and construction['relocated_roles'] == 6 and construction['both_source_suborders_preserved'], 'Owner construction coverage') + require(construction['owners_sha256'] == sha(work/'owners/OWNERS.json.gz') and + construction['owners_content_sha256'] == identities['owners_content_sha256'], 'Constructed owner binding') + require(oc['status'] == 'PASS_T37_T21_T16_OMITTED_EDITS_AND_DELAYS' and + oc['owners_sha256'] == construction['owners_sha256'] and + oc['owners_content_sha256'] == construction['owners_content_sha256'] and + oc['order_sha256'] == sha(work/'owners/ORDER.json') and + oc['order_content_sha256'] == construction['order_content_sha256'] == identity(read(work/'owners/ORDER.json')), + 'Owner control inputs and constructed source order') + require(oc['source_suborders_preserved'] is True and oc['source_suborders_checked_independently'] is True and + oc['underpaid_payload_rejection'] == 'prefix reserve' and + oc['t37_independent_acceptance'] == {k: v for k, v in independent.items() + if k not in ('controls_rejected', 'order_controls_rejected', 'input_sha256')}, + 'Independent control acceptance and underpaid-prefix rejection') + for label in ('t21', 't16'): + source = oc['inherited_'+label] + require(source['owners_content_sha256'] == construction[label+'_content_sha256'] and + source['order_content_sha256'] == construction[label+'_order_content_sha256'] and + source['independent_acceptance']['local_profile'] == claim['local_profile'], + 'Inherited owner source and fresh U8 interface: '+label) + require(len(oc['inherited_t21']['omitted_edit_controls']) == 9 and oc['inherited_t21']['omitted_delay_rejection'] and + len(oc['inherited_t16']['omitted_edit_controls']) == 11, 'Inherited T21 and T16 edit controls') + payload = read(work/'PAYLOAD-CONTROLS.json') + expected_payload_controls = ['old_complex_payload512', 'stale_row_prefix_extra1024', + 'stale_row16469', 'old_global_prefix491', 'bit_allowance1024'] + require(payload['status'] == 'PASS_T37_PAYLOAD_TARGETED_NEGATIVE_CONTROLS' and + payload['rejected_controls'] == expected_payload_controls and + [check['name'] for check in payload['targeted_failures']] == expected_payload_controls and + all(check['targeted_guard'] is True for check in payload['targeted_failures']) and + all(payload[key] is True for key in ('honest_assembly_passed', 'bit_loader_restored', + 'owner_hash_rebound_for_each_mutation', 'bit_injection_after_original_blob_pin')) and + payload['valid_receipt_kappa'] == assembly['kappa'] and + payload['input_sha256']['owner'] == sha(g/'audit/OWNERS-AND-PROFILE.json') and + payload['input_sha256']['invoice'] == sha(g/'audit/PREFIX-AND-INVOICE.json') and + payload['input_sha256']['runtime_spec'] == sha(work/'runtime/data/SPEC.json') and + payload['input_sha256']['bit_supplier'] == sha(work/'runtime/inputs/PR589-EXPECTED.json') == + assembly['input_sha256']['package:inputs/PR589-EXPECTED.json'] and + payload['assembler_sha256'] == sha(work/'runtime/code/assemble.py'), 'Targeted payload controls') + ac, bc = read(work/'ADMISSION-CONTROLS.json'), read(work/'BIT-CONTROLS.json') + require(len(ac['rejected_controls']) == 69 and not ac['discovery_accepted_controls'], 'Strict admission controls') + require(len(bc['rejected_controls']) == 12 and bc['derived_deficit'] == 10272, 'PR589 controls') + require(controller['mutation_controls_run'] and len(controller['mutations_rejected']) == 15, 'Controller mutation controls') + require(invoice['strict_checks'] and all(invoice['strict_checks'].values()), 'Complete finite invoice') + require(len(assembly['outer']) == 47 and all(Fraction(v) > 0 for v in assembly['outer'].values()), 'All 47 strict outer inequalities') + require(assembly['template_sha256'] == owners['template_sha256'] == invoice['template_sha256'] == controller['complex_template_sha256'], 'One emitted controller identity') + require(invoice['owner_audit_sha256'] == sha(g/'audit/OWNERS-AND-PROFILE.json') and invoice['controller_audit_sha256'] == sha(g/'audit/ASYNC-AUDIT.json'), 'Invoice receipt binding') + native_steps = read(work/'native/STEPS.json') + require([s['step'] for s in native_steps] == ['barch', 'barch-controls', 'layer-end-controls', 'native', 'ledgers', 'local-replay', 'wrappers', 'phases'] and + all(s['exit_code'] == 0 for s in native_steps), 'Complete fresh U8 local stages') + require(len(read(work/'native/barch-controls/controls.json')) == 38, 'U8 construction control inventory') + require(len(read(work/'native/controls/COLD-END-CONTROLS.json')['rejected']) == 95, 'Inherited end-control inventory') + native = work/'native/local' + for name in ('CANONICAL-WORD.json.gz', 'LOCAL-PROGRAMS.json.gz', 'LOCAL-CHECKS.json', + 'INDEPENDENT-LOCAL-REPLAY.json', 'CLIFFORD-RECIPES.json', 'CLIFFORD-REVIEW.json', 'RESIDUAL-ADAPTERS.json'): + require(read(g/'base/providers/gauge44'/name) == read(native/name), 'Fresh local-provider binding: '+name) + names = ['baseline741-coverage', 'baseline799-binding', 'native-u8', 'independent-local', 'build-owners', + 'build-parent', 'check-parent', 'independent-t5', 'independent-t37', 'owner-controls', 'source-adapters', + 'bind', 'emit', 'audit', 'invoice', 'assembly', 'admission-controls', 'bit-controls', 'payload-controls', 'independent-price'] + require([s['name'] for s in stages] == ([] if reuse else ['baseline799-cold'])+names and + all(s['exit_code'] == 0 for s in stages), 'Fixed complete stage sequence') + for stage in stages: + require(sha(work/stage['log']) == stage['log_sha256'], 'Stage log binding') + coverage = load(HERE/'vendor/pr858/baseline_coverage.py', 'fixed_ancestral_coverage') + require(read(work/'BASELINE741-COVERAGE.json') == coverage.check(ancestor), 'Complete fixed ancestral coverage binding') + sys.path.insert(0, str(ROOT/'scripts')) + try: + binding = load(ROOT/'scripts/verify_frontier799_bindings.py', 'unchanged_frontier799_binding') + expected = binding.check(ancestor, baseline/'native', baseline/'global', + baseline/'INDEPENDENT-LOCAL.json', baseline/'INDEPENDENT-PRICE.json') + finally: + sys.path.pop(0) + require(read(work/'BASELINE-BINDING.json') == expected, 'Complete fresh ancestral binding') + require(expected['kappa'] == str(Fraction('0.001661634653669567')), 'PR799 ancestor exponent') + artifacts = ['ASSEMBLY.json', 'INDEPENDENT-T5.json', 'INDEPENDENT-T37.json', 'INDEPENDENT-PRICE.json', + 'INDEPENDENT-LOCAL.json', 'PARENT-CHECK.json', 'OWNER-CONTROLS.json', 'ADMISSION-CONTROLS.json', + 'BIT-CONTROLS.json', 'PAYLOAD-CONTROLS.json', 'BASELINE-BINDING.json', 'BASELINE741-COVERAGE.json', 'RUNTIME-BINDING.json', + 'owners/OWNER-CONSTRUCTION.json', 'owners/OWNERS.json.gz', 'owners/ORDER.json', + 'lift/PLAN.json', 'lift/GLOBAL-TEMPLATE.json.gz', 'lift/PARENT-LIFT.json', 'runtime/ADAPTERS.json', + 'runtime/data/SPEC.json', 'global/PLAN.json', 'global/BINDING.json', 'global/hosted/GLOBAL-TEMPLATE.json.gz', + 'global/audit/ASYNC-AUDIT.json', 'global/audit/OWNERS-AND-PROFILE.json', 'global/audit/PREFIX-AND-INVOICE.json', + 'native/STEPS.json', 'native/barch-controls/controls.json', 'native/controls/COLD-END-CONTROLS.json'] + return dict(status='PASS_STRICT_U8_T37_PR589_COMPOSITION', kappa=assembly['kappa'], kappa_decimal=assembly['kappa_decimal'], + delta_over_pr890=str(Fraction(assembly['kappa'])-Fraction(claim['baseline890_kappa'])), + complex_lower=assembly['complex_lower'], bit_lower=assembly['bit_lower'], + profile=assembly['complex_profile'], roles=167832, calls=333, prefix_bits=779, row_coefficient=17495, + baseline_mode='explicit_checked_reuse' if reuse else 'cold_rebuilt', package_pins=pins, + semantic_identities=identities, stages=len(stages), artifact_sha256={p: sha(work/p) for p in artifacts}, scope=claim['scope']) + + +def main(): + require(not sys.flags.optimize, 'Assertions must remain enabled') + parser = argparse.ArgumentParser(description=__doc__) + parser.add_argument('--work', type=Path, required=True) + parser.add_argument('--baseline799', type=Path) + parser.add_argument('--ancestor741', type=Path) + args = parser.parse_args() + require((args.baseline799 is None) == (args.ancestor741 is None), 'Reuse requires both complete ancestry directories') + work = args.work.resolve() + require(not work.exists() and not work.is_relative_to(ROOT), 'New output directory outside the checkout required') + pins = validate_pins() + work.mkdir(parents=True) + env = dict(os.environ, PYTHONDONTWRITEBYTECODE='1', PYTHONUTF8='1', PYTHONINTMAXSTRDIGITS='0', + PYTHON=sys.executable, SW4_FRAME8_PYTHON=sys.executable, MULTICOLD_SOURCE=str(SOURCE), GAIN_PR564_SOURCE=str(SOURCE)) + for key in ('PYTHONOPTIMIZE', 'WITNESS_DISCOVER', 'WITNESS_RECORD', 'WITNESS_SPEC'): + env.pop(key, None) + stages = [] + + def run(name, script, *arguments): + log = work/(name+'.log') + start = time.monotonic() + with log.open('w', encoding='utf-8', newline='\n') as stream: + process = subprocess.run([sys.executable, '-B', str(SOURCE/'code/run_portable.py'), str(script), *map(str, arguments)], + cwd=ROOT, env=env, stdout=stream, stderr=subprocess.STDOUT) + stages.append(dict(name=name, exit_code=process.returncode, seconds=round(time.monotonic()-start, 3), + log=log.name, log_sha256=sha(log))) + dump(work/'STAGES.json', stages) + require(process.returncode == 0, name+' failed:\n'+log.read_text(errors='replace')[-5000:]) + print('PASS', name, stages[-1]['seconds'], flush=True) + + reuse = args.baseline799 is not None + baseline = args.baseline799.resolve() if reuse else work/'baseline799' + ancestor = args.ancestor741.resolve() if reuse else baseline/'ancestor' + if not reuse: + run('baseline799-cold', ROOT/'scripts/verify_frontier799.py', '--work', baseline) + run('baseline741-coverage', HERE/'vendor/pr858/baseline_coverage.py', '--ancestor', ancestor, '--out', work/'BASELINE741-COVERAGE.json') + run('baseline799-binding', ROOT/'scripts/verify_frontier799_bindings.py', '--ancestor', ancestor, + '--native', baseline/'native', '--global', baseline/'global', '--independent', baseline/'INDEPENDENT-LOCAL.json', + '--price', baseline/'INDEPENDENT-PRICE.json', '--out', work/'BASELINE-BINDING.json') + run('native-u8', HERE/'vendor/pr870/construction/barch/reproduce_barch.py', '--main', ROOT, + '--pr635', ROOT/'research/complex-sw4-frame8/vendor/pr635', '--jx-dir', baseline/'native', '--recipe', 'U8', '--out', work/'native') + local = work/'native/local' + run('independent-local', HERE/'vendor/pr870/independent/audit_local.py', '--word', work/'native/barch/FULL-WORD.json.gz', + '--main', ROOT, '--output', work/'INDEPENDENT-LOCAL.json') + run('build-owners', HERE/'build_owners.py', '--out', work/'owners') + base = baseline/'global/global/base' + run('build-parent', HERE/'build_parent.py', '--base', base, '--owners', work/'owners/OWNERS.json.gz', + '--order', work/'owners/ORDER.json', '--out', work/'lift') + run('check-parent', HERE/'check_parent.py', '--source', base/'split-centres/GLOBAL-TEMPLATE.json.gz', + '--parent', work/'lift/GLOBAL-TEMPLATE.json.gz', '--out', work/'PARENT-CHECK.json') + for label, replicas, owners, idle in [('t5', 5, HERE/'data/T5-OWNERS.json.gz', '{"48":1498,"6":1}'), + ('t37', 37, work/'owners/OWNERS.json.gz', '{"48":11086,"1":6}')]: + run('independent-'+label, HERE/'independent_check.py', '--baseline-parent', base/'split-centres/GLOBAL-TEMPLATE.json.gz', + '--owners', owners, '--word', local/'CANONICAL-WORD.json.gz', '--replicas', replicas, '--expected-idle', idle, + '--payload', 512 if replicas == 5 else 1024, + *([] if replicas == 5 else ['--order', work/'owners/ORDER.json']), + '--out', work/('INDEPENDENT-'+label.upper()+'.json')) + run('owner-controls', HERE/'owner_controls.py', '--base', base, '--local', local, '--owners', work/'owners/OWNERS.json.gz', '--out', work/'OWNER-CONTROLS.json') + run('source-adapters', HERE/'source_adapters.py', work/'runtime') + spec, identities = runtime_spec(work/'lift/PLAN.json', work/'owners/OWNERS.json.gz') + (work/'runtime/data').mkdir() + dump(work/'runtime/data/SPEC.json', spec) + dump(work/'RUNTIME-BINDING.json', identities) + env['WITNESS_SPEC'] = str(work/'runtime/data/SPEC.json') + shutil.copytree(baseline/'global/parent558', work/'parent') + shutil.copyfile(work/'lift/GLOBAL-TEMPLATE.json.gz', work/'parent/complex-global/base/split-centres/GLOBAL-TEMPLATE.json.gz') + code, g = work/'runtime/code', work/'global' + run('bind', code/'bind_providers_portable.py', '--baseline', work/'parent', '--provider', 'gauge44='+str(local), '--plan', work/'lift/PLAN.json', '--out', g) + run('emit', code/'emit_allcold.py', '--base', g/'base', '--owners', work/'owners/OWNERS.json.gz', '--plan', g/'PLAN.json', '--out', g/'hosted') + run('audit', code/'audit_allcold.py', g/'base', g/'hosted', g/'audit/ASYNC-AUDIT.json', '--mutation-controls') + run('invoice', code/'invoice_allcold.py', '--base', g/'base', '--hosted', g/'hosted', '--audit', g/'audit', '--out', g/'audit', + '--retained-invoice', SOURCE/'vendor/pr558/vendor/pr552/complex-global/vendor531/evidence/audit/PREFIX-AND-INVOICE.json') + run('assembly', code/'assemble.py', SOURCE, g, work/'ASSEMBLY.json') + for name, script, filename in [('admission-controls', 'assembly_controls.py', 'ADMISSION-CONTROLS.json'), + ('bit-controls', 'bit_supplier_controls.py', 'BIT-CONTROLS.json')]: + run(name, code/script, '--source-package', SOURCE, '--owner', g/'audit/OWNERS-AND-PROFILE.json', '--invoice', g/'audit/PREFIX-AND-INVOICE.json', '--out', work/filename) + run('payload-controls', HERE/'payload_controls.py', '--runtime', code, '--source-package', SOURCE, + '--owner', g/'audit/OWNERS-AND-PROFILE.json', '--invoice', g/'audit/PREFIX-AND-INVOICE.json', '--out', work/'PAYLOAD-CONTROLS.json') + run('independent-price', HERE/'price.py', '--profile', work/'INDEPENDENT-T37.json', '--out', work/'INDEPENDENT-PRICE.json') + require(validate_pins() == pins, 'Package changed during verification') + result = final_binding(work, stages, pins, reuse, baseline, ancestor) + dump(work/'RESULT.json', result) + print(result['status'], result['kappa_decimal'], flush=True) + + +if __name__ == '__main__': + main() diff --git a/research/complex-t37-validation/ADMISSION-CONTROLS.json b/research/complex-t37-validation/ADMISSION-CONTROLS.json new file mode 100644 index 0000000000..6da07241c7 --- /dev/null +++ b/research/complex-t37-validation/ADMISSION-CONTROLS.json @@ -0,0 +1,102 @@ +{ + "status": "PASS_EXACT_MIXED_048_ALLCOLD_NATIVE_ASSEMBLY_ADMISSION_NEGATIVE_CONTROLS", + "valid_receipt_kappa": "1661960547713947/1000000000000000000", + "input_sha256": { + "owner_audit": "9ec8ba5291fa6964134c30201be1b84c0759a8159a6ca16b0e41ee977c941e28", + "fresh_invoice": "bb9558d21b0ab0775c02e50ddd81dfb7289707778b8e6f255ed3868b5a2dae27", + "package:inputs/PR589-EXPECTED.json": "b9f0e5ca038abe837b0007c8fe006f366a6f02009244ac57705a8a200e2301f4", + "engines/moment.py": "81cbc864e106418fc7854322746f72180cb8110ff39f74450a3b8d55a82c1482", + "engines/base_two_moment.py": "aee70c242a2f1d225528fabe2002e1564d1dc884797c07d28a831c7878ee9098", + "engines/outer.py": "c1ebb52163a7219504c728a5c2b098bf1e50bf20148a2879c5a74c3cadc7c03c" + }, + "assembler_sha256": "b370017e0ca46cefd04ba2225ab8cfc66d2aa89fda102287fd6199cc277778e1", + "rejected_controls": [ + "empty_certification_maps", + "failed_invoice_status", + "nonboolean_precision_check", + "wrong_owner_role_count", + "understated_physical_stock", + "changed_profile_same_rank_mass", + "insufficient_finite_C0", + "missing_finite_check", + "wrong_reflected_orientation_selfconsistent_totals", + "missing_selected_call", + "wrong_selected_primitive_sum", + "wrong_selected_coefficient_work_sum", + "unpaid_wrapper_factors", + "wrong_global_compiler", + "wrong_global_adapter_maximum", + "understated_exact_prefix_and_global_sum", + "wrong_global_prefix_sum", + "wrong_row_prefix_reserve", + "wrong_parent_geometry_charge", + "wrong_rebased_geometry_charge", + "wrong_complete_pervertex_envelope", + "wrong_prior_added_complete_invoice", + "wrong_finite_router_bits", + "wrong_finite_literal_bits", + "wrong_finite_physical_stock_bits", + "wrong_finite_row_coefficient", + "reordered_complete_calls", + "understated_explicit_idle_remainders", + "understated_actual_chart_types", + "wrong_cross_replica_role_count", + "old_no_cold_wrapper_counts_selfconsistent", + "gauge44:missing_provider", + "gauge44:missing_backward_orientation", + "gauge44:unpaid_scalar_primitive", + "gauge44:wrong_local_artifact_binding", + "gauge44:false_dirty_restoration", + "gauge44:wrong_declared_provider_count", + "gauge44:wrong_local_compiler", + "gauge44:wrong_local_adapter_charge", + "gauge44:wrong_local_primitive_bound", + "gauge44:forged_provider_and_call_program_hash", + "gauge44:provider_at_wrong_call", + "gauge44:synchronized_forged_source_recipe_hash", + "gauge44:synchronized_forged_phase_review_semantics", + "gauge44:width_order_swap_4_5", + "gauge44:width_inventory_shift_4_5", + "gauge44:width_order_swap_4_7", + "gauge44:width_inventory_shift_4_7", + "gauge44:width_order_swap_4_8", + "gauge44:width_inventory_shift_4_8", + "gauge44:width_order_swap_4_9", + "gauge44:width_inventory_shift_4_9", + "gauge44:width_order_swap_5_7", + "gauge44:width_inventory_shift_5_7", + "gauge44:width_order_swap_5_8", + "gauge44:width_inventory_shift_5_8", + "gauge44:width_order_swap_5_9", + "gauge44:width_inventory_shift_5_9", + "gauge44:width_order_swap_7_8", + "gauge44:width_inventory_shift_7_8", + "gauge44:width_order_swap_7_9", + "gauge44:width_inventory_shift_7_9", + "gauge44:width_order_swap_8_9", + "gauge44:width_inventory_shift_8_9", + "gauge44:cold_helper_width_swap_270", + "gauge44:cold_helper_width_swap_282", + "gauge44:cold_helper_width_swap_294", + "gauge44:cold_helper_width_swap_306", + "wrong_owner_receipt_hash" + ], + "discovery_accepted_controls": [], + "exact_outer_controls": [ + "next_grid", + "zero_eta", + "zero_beta", + "unit_beta" + ], + "conservative_outer_controls": [ + "next_grid", + "zero_eta", + "zero_beta", + "unit_beta" + ], + "recurrence_model_controls": [ + "native_complex_endpoint_rejected_with_old_surcharge", + "omitting_bit_surcharge_would_fail_next_endpoint_rejection" + ], + "scope": "Complete receipt schema; ordered widths and both reflected providers; exact program, work and paid-profile binding; independently recounted compiler, conservative envelope and finite inequalities. Does not replace fresh physical replay." +} diff --git a/research/complex-t37-validation/ASSEMBLY.json b/research/complex-t37-validation/ASSEMBLY.json new file mode 100644 index 0000000000..880afd5315 --- /dev/null +++ b/research/complex-t37-validation/ASSEMBLY.json @@ -0,0 +1,344 @@ +{ + "status": "PASS_GAUGE44_NATIVE_EXACT_GLOBAL_ASSEMBLY", + "kappa": "1661960547713947/1000000000000000000", + "kappa_decimal": "0.001661960547713947", + "complex_lower": "416181814685169713943/250000000000000000000000", + "complex_decimal": "0.001664727258740678855772", + "bit_lower": "1733427039589844234749/1000000000000000000000000", + "bit_decimal": "0.001733427039589844234749", + "binding": "complex", + "gain_over_pr635_percent": "1.571836804822561536863214790742852178269807201688513073983668212992418", + "complex_profile": { + "1": 848490, + "2": 112554, + "3": 148518, + "4": 53946, + "5": 23976, + "8": 2664, + "48": 11086 + }, + "provider_counts": { + "gauge44": 333 + }, + "surcharge_model": { + "complex": false, + "bit": true + }, + "conservative_complex_lower": "1664727255848707292019/1000000000000000000000000", + "conservative_complex_decimal": "0.001664727255848707292019", + "conservative_kappa": "83098027241579/50000000000000000", + "conservative_kappa_decimal": "0.00166196054483158", + "conservative_moments": [ + { + "side": "conservative_complex", + "surcharge": true, + "endpoint": "1664727255848707292019/1000000000000000000000000", + "accept": true, + "mercator": [ + "-41343044200415700149548318862602185269107957/26959946667150639794667015087019630673637144422540572481103610249216", + "-41343044200415700149548318862602185269107955/26959946667150639794667015087019630673637144422540572481103610249216" + ], + "base_two": [ + "-7667494309095910091507/5000000000000000000000000000000000000000000000", + "-15334978618191820182871/10000000000000000000000000000000000000000000000" + ] + }, + { + "side": "conservative_complex", + "surcharge": true, + "endpoint": "83236362792435364601/50000000000000000000000", + "accept": false, + "mercator": [ + "38129598634153891544852221336567316219891643/26959946667150639794667015087019630673637144422540572481103610249216", + "38129598634153891544852221336567316219891645/26959946667150639794667015087019630673637144422540572481103610249216" + ], + "base_two": [ + "1767881422771742502099/1250000000000000000000000000000000000000000000", + "2828612276434788003387/2000000000000000000000000000000000000000000000" + ] + } + ], + "conservative_bootstrap": [ + { + "exponent": "1662019964256128940369774814957230967792945200063372607561100219210791159149376783775858903639/1000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "gap": "2707291592578351649222520315513183499762780936627392438899780789208840850623216224141096361/1000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "cutoff_log2": "4911706772101" + }, + { + "exponent": "1664722748946603596783167657372163024625293967683996252559923320049382618644682611343367046523758215855873507938770483768821115081714045242859/1000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "gap": "4506902103695235829677900581126667414013316003747440076679950617381355317388656632953476241784144126492061229516231178884918285954757141/1000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "cutoff_log2": "1772336785043253170" + }, + { + "exponent": "1664727248345944520555661356133499258098167572926352411818147395607572230481075560452217766203889592493641899709445980001159986971175712322395267351836289593549712041021041334970088912557679/1000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "gap": "7502762771463335979139244893194540408073647588181852604392427769518924439547782233796110407506358100290554019998840013028824287677604732648163710406450287958978958665029911087442321/1000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "cutoff_log2": "639528747412214812497000" + }, + { + "exponent": "1664727255836217238339175334160619343622904676442986454804869753238489892569154535754796924607918382011468862884164252213388679116092533394844684572262747503339430535870167242601506477134421487773488479458647893633312161818370772766136099/1000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "gap": "12490053679822001112124807669803304557013545195130246761510107430845464245203075392081617988531137115835747786611320883907466605155315427737252496660569464129832757398493522865578512226511520541352106366687838181629227233863901/1000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "cutoff_log2": "230767099243304960132402609525" + }, + { + "exponent": "1664727255848686499486209522144308383171075203814145413433673494481771734825256592454779501970847095633335673715999913117690167035888522949416434266774338046798098069911614270049133420867653852499841776689764623402949946626291337318576554015254667590438616781978210474477992431709506119/1000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "gap": "20792532787813128435768121632777185854586566326505518228265174743407545220498029152904366664326284000086882309832964111477050583565733225661953201901930088385729950866579132346147500158223310235376597050053373708662681423445984745332409561383218021789525522007568290493881/1000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "cutoff_log2": "83269836279688457467636113060444540" + }, + { + "exponent": "1664727255848707257405101285272323200892905485452147288058124290330932633600001356368852892191043860347834699391099718958162296081676931951313341806892524257335169671313317019672475628509336367604194959814255362888333665110657813412828993876170359736068971832298923508982484454793978688379323832125312936246375732783674929883599635739/1000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "gap": "34613896050000420950399802495547852711941875709669067366399998643631147107808956139652165300608900281041837703918323068048686658193107475742664830328686682980327524371490663632395805040185744637111666334889342186587171006123829640263931028167701076491017515545206021311620676167874687063753624267216325070116400364261/1000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "cutoff_log2": "30047028613621948543614761490104903216506" + }, + { + "exponent": "1664727255848707291961374639087194541792281500987012818292346289977683727055512112632834128685199981656125928024208545100115597511542031150126194315393458466264302645681384552659354245204406452797906880537303995192524428070582396509344194418613799540464079920945368042511438868729670666069765747891099651473134738632422922717032121748456565208306278006795603665525087826978498132959/1000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "gap": "57622696185549609500426480012987181707653710022316272944487887367165871314800018343874071975791454899884402488457968849873805684606541533735697354318615447340645754795593547202093119462696004807475571929417603490655805581386200459535920079054631957488561131270329333930234252108900348526865261367577077282967878251543434791693721993204396334474912173021501867041/1000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "cutoff_log2": "10842148475894588435156283354576751602571908835" + } + ], + "conservative_outer": { + "bit_positive": "1664727255848707291961374639087194541792281500987012818292346289977683727055512112632834128685199981656125928024208545100115597511542031150126194315393458466264302645681384552659354245204406452797906880537303995192524428070582396509344194418613799540464079920945368042511438868729670666069765747891099651473134738632422922717032121748456565208306278006795603665525087826978498132959/1000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "complex_above_bit": "57625360912805458207718499012987181707653710022316272944487887367165871314800018343874071975791454899884402488457968849873805684606541533735697354318615447340645754795593547202093119462696004807475571929417603490655805581386200459535920079054631957488561131270329333930234252108900348526865261367577077282967878251543434791693721993204396334474912173021501867041/1000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "complex_below_one_over32": "29585272744151292707981/1000000000000000000000000", + "beta_positive": "1/1000000000000000000000000", + "beta_below_one": "999999999999999999999999/1000000000000000000000000", + "leaf_saving_above_bit": "57623696185549609500426480012987181707653710022316272944487887367165871314800018343874071975791454899884402488457968849873805684606541533735697354318615447340645754795593547202093119462696004807475571929417603490655805581386200459535920079054631957488561131270329333930234252108900348526865261367577077282967878251543434791693721993204396334474912173021501867041/1000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "q_positive": "832363627924353645980685654816341422188848789118867321951631352707340876514937763970127086658872935315950331177975587350076142629842991366517997042099217691101001196646376882871210858299557545014400780914406793189809416128410660950676904684878829187835530616278265407456178970284914387666840362506681096065901299550463570258864587739489650181230421971276053376197335607211242270875834474912173021501867041/500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "q_below_internal": "1664727255848707291961374639087194541792281500987012818292346289977683727055512112632834128685199981656125928024208545100115597511542031150126194315393458466264302645681384552659354245204406452797906880537303995192524428070582396509344194418613799540464079920945368042511438868729670666069765747891099651473134738632422922717032121748456565208306278006795603665525087826978498132959/500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "q_below_leaf": "28813512820030653457505201381132678048368647292659123485062236029872913341127064684049668822024412649923857370157008633482002957900782308898998803353623117128789141700442454985599219085593206810190583871589339049323095315121170812164469383721734592543821029715085612333159637493318903934098700449536429741135412260510349818769578028723946623802664392788757729124165525087826978498132959/500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "c_positive": "832363627924353645980810654816341422188848789118867321951631352707340876514937763970127086658872935315950331177975587350076142629842991366517997042099217691101001196646376882871210858299557545014400780914406793189809416128410660950676904684878829187835530616278265407456178970284914387666840362506681096065901299550463570258864587739489650181230421971276053376197335607211242270875834474912173021501867041/500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "c_below_one": "499167636372075646354019189345183658577811151210881132678048368647292659123485062236029872913341127064684049668822024412649923857370157008633482002957900782308898998803353623117128789141700442454985599219085593206810190583871589339049323095315121170812164469383721734592543821029715085612333159637493318903934098700449536429741135412260510349818769578028723946623802664392788757729124165525087826978498132959/500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "q_below_reservations": "1/4000000000000000000000000", + "lambda_above_tau": "1664727255848707291961374639087194541792281500987012818292346289977683727055512112632834128685199981656125928024208545100115597511542031150126194315393458466264302645681384552659354245204406452797906880537303995192524428070582396509344194418613799540464079920945368042511438868729670666069765747891099651473134738632422922717032121748456565208306278006795603665525087826978498132959/1000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "lambda_above_sigma": "57627025640061306915010460387626268902195502303817259957306179713455848998527073855986704809920140099866058614385993058418905800204053075766847480512930840799112019098239228586645778816941209213928369836298140794650998105814271041932429423249050571288101595350250279298276763547769078197531331133324968382619351386282067214616439025326144791040120479299508662644665525087826978498132959/1000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "lambda_above_internal": "1664727255848707291961374639087194541792281500987012818292346289977683727055512112632834128685199981656125928024208545100115597511542031150126194315393458466264302645681384552659354245204406452797906880537303995192524428070582396509344194418613799540464079920945368042511438868729670666069765747891099651473134738632422922717032121748456565208306278006795603665525087826978498132959/1000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "lambda_prime_above_lambda": "1664727255848707291961374639087194541792281500987012818292346289977683727055512112632834128685199981656125928024208545100115597511542031150126194315393458466264302645681384552659354245204406452797906880537303995192524428070582396509344194418613799540464079920945368042511438868729670666069765747891099651473134738632422922717032121748456565208306278006795603665525087826978498132959/1000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "compact_leaf": "28813512820030653457505201381132678048368647292659123485062236029872913341127064684049668822024412649923857370157008633482002957900782308898998803353623117128789141700442454985599219085593206810190583871589339049323095315121170812164469383721734592543821029715085612333159637493318903934098700449536429741135412260510349818769578028723946623802664392788757729124165525087826978498132959/500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "compact_reservations": "1/4000000000000000000000000", + "lambda_prime_below_one": "832363627924353645980685654816341422188848789118867321951631352707340876514937763970127086658872935315950331177975587350076142629842991366517997042099217691101001196646376882871210858299557545014400780914406793189809416128410660950676904684878829187835530616278265407456178970284914387666840362506681096065901299550463570258864587739489650181230421971276053376197335607211242270875834474912173021501867041/500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "epsilon_positive": "499999999999999999999999500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000/500832363627924353645980685654816341422188848789118867321951631352707340876514937763970127086658872935315950331177975587350076142629842991366517997042099217691101001196646376882871210858299557545014400780914406793189809416128410660950676904684878829187835530616278265407456178970284914387666840362506681096065901299550463570258864587739489650181230421971276053376197335607211242270875834474912173021501867041", + "epsilon_below_one": "832363627924353645981185654816341422188848789118867321951631352707340876514937763970127086658872935315950331177975587350076142629842991366517997042099217691101001196646376882871210858299557545014400780914406793189809416128410660950676904684878829187835530616278265407456178970284914387666840362506681096065901299550463570258864587739489650181230421971276053376197335607211242270875834474912173021501867041/500832363627924353645980685654816341422188848789118867321951631352707340876514937763970127086658872935315950331177975587350076142629842991366517997042099217691101001196646376882871210858299557545014400780914406793189809416128410660950676904684878829187835530616278265407456178970284914387666840362506681096065901299550463570258864587739489650181230421971276053376197335607211242270875834474912173021501867041", + "guard_width": "832363627924353645981185654816341422188848789118867321951631352707340876514937763970127086658872935315950331177975587350076142629842991366517997042099217691101001196646376882871210858299557545014400780914406793189809416128410660950676904684878829187835530616278265407456178970284914387666840362506681096065901299550463570258864587739489650181230421971276053376197335607211242270875834474912173021501867041/500832363627924353645980685654816341422188848789118867321951631352707340876514937763970127086658872935315950331177975587350076142629842991366517997042099217691101001196646376882871210858299557545014400780914406793189809416128410660950676904684878829187835530616278265407456178970284914387666840362506681096065901299550463570258864587739489650181230421971276053376197335607211242270875834474912173021501867041", + "K_geometry": "375832363627924353645980810654816341422188848789118867321951631352707340876514937763970127086658872935315950331177975587350076142629842991366517997042099217691101001196646376882871210858299557545014400780914406793189809416128410660950676904684878829187835530616278265407456178970284914387666840362506681096065901299550463570258864587739489650181230421971276053376197335607211242270875834474912173021501867041/500832363627924353645980685654816341422188848789118867321951631352707340876514937763970127086658872935315950331177975587350076142629842991366517997042099217691101001196646376882871210858299557545014400780914406793189809416128410660950676904684878829187835530616278265407456178970284914387666840362506681096065901299550463570258864587739489650181230421971276053376197335607211242270875834474912173021501867041000000000000000000000000", + "K_dominates_log": "832363627924353645980809822452713497835202808308212505610209163858551757647615812338774379317996420378186361050888928477140826679511813390930646965956587848109634678649334783653519757298360898637517909703548493632264401727629746543883714875462700777174579939373580528626991134754298109401432906327710811151513632710101063577768521838190099717660163106688313886547154376789270994822458277576565810259596165165525087826978498132959/500832363627924353645980685654816341422188848789118867321951631352707340876514937763970127086658872935315950331177975587350076142629842991366517997042099217691101001196646376882871210858299557545014400780914406793189809416128410660950676904684878829187835530616278265407456178970284914387666840362506681096065901299550463570258864587739489650181230421971276053376197335607211242270875834474912173021501867041000000000000000000000000", + "record_suffix": "832363627924353645981185654816341422188848789118867321951631352707340876514937763970127086658872935315950331177975587350076142629842991366517997042099217691101001196646376882871210858299557545014400780914406793189809416128410660950676904684878829187835530616278265407456178970284914387666840362506681096065901299550463570258864587739489650181230421971276053376197335607211242270875834474912173021501867041/500832363627924353645980685654816341422188848789118867321951631352707340876514937763970127086658872935315950331177975587350076142629842991366517997042099217691101001196646376882871210858299557545014400780914406793189809416128410660950676904684878829187835530616278265407456178970284914387666840362506681096065901299550463570258864587739489650181230421971276053376197335607211242270875834474912173021501867041", + "phase_local": "6658909023394829167848984406167103453157144332265283759271628632809937893252180160129663985930106967589838679296718039927673825088412752956556626260651111685816643055173972963751995765395263713738323376104396045960930314626504373198622047669614505092023294253321438380820243926748698823069315443874478483612822729563346055389820636014617650986273116905620687519928503627267966890953299601961776960772665452165525087826978498132959/4006658909023394829167845485238530731377510790312950938575613050821658727012119502111761016693270983482527602649423804698800609141038743930932143976336793741528808009573171015062969686866396460360115206247315254345518475329027285287605415237479030633502684244930226123259649431762279315101334722900053448768527210396403708562070916701915917201449843375770208427009578684857689938167006675799297384172014936328000000000000000000000000", + "phase_boundary": "1331781804678965833569396215342518351148512081904532898781187975482956283556578470720850631313320181567756559757674280887186512257417608210841445191216118462770235396637160913376246272278095425646158378252192569546150051404676143114289857686389998289875898309140539773100698516925246742001537123831719468791054412440379205733087274481883889826398416289453945912265555741116016357347958962523869623160716389765525087826978498132959/801331781804678965833569097047706146275502158062590187715122610164331745402423900422352203338654196696505520529884760939760121828207748786186428795267358748305761601914634203012593937373279292072023041249463050869103695065805457057521083047495806126700536848986045224651929886352455863020266944580010689753705442079280741712414183340383183440289968675154041685401915736971537987633401335159859476834402987265600000000000000000000000", + "gamma_sublinear": "1/2000000000000000000000000", + "cell_above_band": "999999999999999999999998499167636372075646354019314345183658577811151210881132678048368647292659123485062236029872913341127064684049668822024412649923857370157008633482002957900782308898998803353623117128789141700442454985599219085593206810190583871589339049323095315121170812164469383721734592543821029715085612333159637493318903934098700449536429741135412260510349818769578028723946623802664392788757729124165525087826978498132959/2003329454511697414583922742619265365688755395156475469287806525410829363506059751055880508346635491741263801324711902349400304570519371965466071988168396870764404004786585507531484843433198230180057603123657627172759237664513642643802707618739515316751342122465113061629824715881139657550667361450026724384263605198201854281035458350957958600724921687885104213504789342428844969083503337899648692086007468164000000000000000000000000", + "prime_interval_packing": "832363627924353645981185654816341422188848789118867321951631352707340876514937763970127086658872935315950331177975587350076142629842991366517997042099217691101001196646376882871210858299557545014400780914406793189809416128410660950676904684878829187835530616278265407456178970284914387666840362506681096065901299550463570258864587739489650181230421971276053376197335607211242270875834474912173021501867041/500832363627924353645980685654816341422188848789118867321951631352707340876514937763970127086658872935315950331177975587350076142629842991366517997042099217691101001196646376882871210858299557545014400780914406793189809416128410660950676904684878829187835530616278265407456178970284914387666840362506681096065901299550463570258864587739489650181230421971276053376197335607211242270875834474912173021501867041", + "alpha_positive": "1664727255848707291961870477269054920024051597552079827561840516565892634162553576308901465976869355694136692228864515827216969309354804757448644008055805539210635875295711666524730615597918443651918690617955286822073817856040407494560619560341529965010110555651845936083170105039212497068273268834391907217414932260564633836633109577679749898890585077964367262744489984000513265698292752488738831761463206165525087826978498132959/1001664727255848707291961371309632682844377697578237734643903262705414681753029875527940254173317745870631900662355951174700152285259685982733035994084198435382202002393292753765742421716599115090028801561828813586379618832256821321901353809369757658375671061232556530814912357940569828775333680725013362192131802599100927140517729175478979300362460843942552106752394671214422484541751668949824346043003734082000000000000000000000000", + "alpha_below_one": "999999999999999999999999500832363627924353645980685654816341422188848789118867321951631352707340876514937763970127086658872935315950331177975587350076142629842991366517997042099217691101001196646376882871210858299557545014400780914406793189809416128410660950676904684878829187835530616278265407456178970284914387666840362506681096065901299550463570258864587739489650181230421971276053376197335607211242270875834474912173021501867041/1001664727255848707291961371309632682844377697578237734643903262705414681753029875527940254173317745870631900662355951174700152285259685982733035994084198435382202002393292753765742421716599115090028801561828813586379618832256821321901353809369757658375671061232556530814912357940569828775333680725013362192131802599100927140517729175478979300362460843942552106752394671214422484541751668949824346043003734082000000000000000000000000", + "alpha_below_one_fourth": "248751454558113469531028472350139115791070372797007353833413975159787777804094915305676162077352567111963838473360123277847821102005566690925810354512993803306339864723027476774910874813551860328855281699839248109772830890208164922980777832782097884628907654752487286767644919380103244696765146912418948640815535717514667151292799184292065075191724625907673659425354177819605107869739624484967347678989470314334474912173021501867041/1001664727255848707291961371309632682844377697578237734643903262705414681753029875527940254173317745870631900662355951174700152285259685982733035994084198435382202002393292753765742421716599115090028801561828813586379618832256821321901353809369757658375671061232556530814912357940569828775333680725013362192131802599100927140517729175478979300362460843942552106752394671214422484541751668949824346043003734082000000000000000000000000", + "delta_positive": "1/8000000000000000000000000", + "delta_below_one_eighth": "999999999999999999999999/8000000000000000000000000", + "short_record_fallback": "499166250713657463570345507188425051119387679832363463276252019159117609538049574283135929614389561395703469769156232721338820951947059492830162201801521910925712119640265103362812323079861312868198160225208577575644112615249101408750475304281558388740353880837514560924093563529464331388286406093858165595047735443567759554341316612313901960337656440798140853199351419141761516771460220403804298842796824461427292543559473974648866741144205489304422067292135854833307415661508063438128647418712687503966972032743176204375943696835899560530070376934943966583792526843926331930790798087028803089239347890505011694837187954852407172320190436670199992540985091682756090160583306971917102031016968671856232199040823683623262780532034804098233547418131401921249882683628740688459110472248842095681/500832363627924353645980685654816341422188848789118867321951631352707340876514937763970127086658872935315950331177975587350076142629842991366517997042099217691101001196646376882871210858299557545014400780914406793189809416128410660950676904684878829187835530616278265407456178970284914387666840362506681096065901299550463570258864587739489650181230421971276053376197335607211242270875834474912173021501867041000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "small_field_exposure": "1/1000000000000000000000000", + "artificial_boundary": "28053271272187158633342769384405336734793147260445664473053928673139816183453557982748982191668190497405034113105771697567023679076160944981383913860922777821759438176139359246801410568234175272820052298592154609662820437675420625044063701469260493453253456811472523040713683017604826369645474005568964501002960846171750756016610621813031236262989457782755430634545580022552785419164213534986385895009846303251503424736519064505601123/4006658909023394829167845485238530731377510790312950938575613050821658727012119502111761016693270983482527602649423804698800609141038743930932143976336793741528808009573171015062969686866396460360115206247315254345518475329027285287605415237479030633502684244930226123259649431762279315101334722900053448768527210396403708562070916701915917201449843375770208427009578684857689938167006675799297384172014936328000000000000000000000000", + "literal_scalar_guard": "1", + "row_product_gap": "23971789/25", + "balanced_prefix_above_kappa": "24832957693853352262030095295155735289253026066431755969539936359532685042935020897071361098599907201045285205481323394979963189332679438552419242784264554402439810900116565063195819229842072059272848479128742239174024192720088357395995329043142834332783717101873988295110400531225027617201959789605047294633275240421633596280903022487864480713992559195310377636200208457642208955282109110475715172355102261/25041618181396217682299034282740817071109442439455943366097581567635367043825746888198506354332943646765797516558898779367503807131492149568325899852104960884555050059832318844143560542914977877250720039045720339659490470806420533047533845234243941459391776530813913270372808948514245719383342018125334054803295064977523178512943229386974482509061521098563802668809866780360562113543791723745608651075093352050000000000000000", + "coordinate_movement_above_kappa": "2766711017127291961374639087194541792281500987012818292346289977683727055512112632834128685199981656125928024208545100115597511542031150126194315393458466264302645681384552659354245204406452797906880537303995192524428070582396509344194418613799540464079920945368042511438868729670666069765747891099651473134738632422922717032121748456565208306278006795603665525087826978498132959/1000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "compact_phase_layer_above_kappa": "496658653044703417316248259922429050968719099139786330271931405239022348151359541426489458001871057362032768793676136721623676436577446141205393489167294045949578526901330104617539501725630582885899424568174063869073690664592351019509245630185952001776845154201949149623942603168321582059124808125260583385984408742531372375154490190892701874790201002675785581447950792955508571894399911333679828534929023718132959/500832363627924353645980685654816341422188848789118867321951631352707340876514937763970127086658872935315950331177975587350076142629842991366517997042099217691101001196646376882871210858299557545014400780914406793189809416128410660950676904684878829187835530616278265407456178970284914387666840362506681096065901299550463570258864587739489650181230421971276053376197335607211242270875834474912173021501867041000000000000000000000000", + "bulk_exposure_above_kappa": "2766711017127291961374639087194541792281500987012818292346289977683727055512112632834128685199981656125928024208545100115597511542031150126194315393458466264302645681384552659354245204406452797906880537303995192524428070582396509344194418613799540464079920945368042511438868729670666069765747891099651473134738632422922717032121748456565208306278006795603665525087826978498132959/1000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "Gaussian_arithmetic_above_kappa": "794654145370943644460609403464297874439755411936967401906410641553414568666579792191345791185069943774576191259452017461383234708569599403834424402578468698778856257702728885375889332483735447597173606317718970739161980977233411308261189578703666013770249759424437009165267409543021913465548325600521150921583711627590975530525326460747075643358111713019510113082353294447215079357785220659388410603190250850132959/801331781804678965833569097047706146275502158062590187715122610164331745402423900422352203338654196696505520529884760939760121828207748786186428795267358748305761601914634203012593937373279292072023041249463050869103695065805457057521083047495806126700536848986045224651929886352455863020266944580010689753705442079280741712414183340383183440289968675154041685401915736971537987633401335159859476834402987265600000000000000000000000", + "scalar_work_above_kappa": "3973272730184172734000461601244231991464142748440232166007522495573598254162262467016480011805858065508372697561061412018818522943152567538544087478964331662291152052917649213464954193903520671184098211646197977353437077645404721054948591696225948808366565548464307510939398677539825448467399178669967204634642942401560075854480913339193729174749159290019238450515979977025417825633895186800279952664643340258132959/4006658909023394829167845485238530731377510790312950938575613050821658727012119502111761016693270983482527602649423804698800609141038743930932143976336793741528808009573171015062969686866396460360115206247315254345518475329027285287605415237479030633502684244930226123259649431762279315101334722900053448768527210396403708562070916701915917201449843375770208427009578684857689938167006675799297384172014936328000000000000000000000000", + "dimension_above_kappa": "24958381818603782342533873411112535190920652855699791923155444498796388925714189471334178688602077250305563582041008421677781398349831245411637289480574477667864192724432235558296250357201587185945099190796351719613358008322321706126490347485844415936603552512328921062410908153359742575727058513099693562398664724627524116120332011034659113771841501389300678045182692414949815522656416733896600304207015758425715172355102261/25041618181396217682299034282740817071109442439455943366097581567635367043825746888198506354332943646765797516558898779367503807131492149568325899852104960884555050059832318844143560542914977877250720039045720339659490470806420533047533845234243941459391776530813913270372808948514245719383342018125334054803295064977523178512943229386974482509061521098563802668809866780360562113543791723745608651075093352050000000000000000" + }, + "conservative_controls": [ + "next_grid", + "zero_eta", + "zero_beta", + "unit_beta" + ], + "model_controls": [ + "native_complex_endpoint_rejected_with_old_surcharge", + "omitting_bit_surcharge_would_fail_next_endpoint_rejection" + ], + "native_correction_gain": "2.882367E-12", + "template_sha256": "c22960f1cac456eef5a38d69938fffebcec8423b1c687077a487b442f55e6aaa", + "input_sha256": { + "owner_audit": "9ec8ba5291fa6964134c30201be1b84c0759a8159a6ca16b0e41ee977c941e28", + "fresh_invoice": "bb9558d21b0ab0775c02e50ddd81dfb7289707778b8e6f255ed3868b5a2dae27", + "package:inputs/PR589-EXPECTED.json": "b9f0e5ca038abe837b0007c8fe006f366a6f02009244ac57705a8a200e2301f4", + "engines/moment.py": "81cbc864e106418fc7854322746f72180cb8110ff39f74450a3b8d55a82c1482", + "engines/base_two_moment.py": "aee70c242a2f1d225528fabe2002e1564d1dc884797c07d28a831c7878ee9098", + "engines/outer.py": "c1ebb52163a7219504c728a5c2b098bf1e50bf20148a2879c5a74c3cadc7c03c" + }, + "bit_supplier": { + "pr": 589, + "repository": "CrocSwap/integer-mult-bounds", + "commit": "a5afc8c6169ea61ba7c51dfd3cade02cc7b13b46", + "merged_as": "b3eb785ac5b4b1ca2beea0f80db078a505626a90", + "path": "research/e8-bit-p111-tuned/tune/EXPECTED.json", + "git_blob_sha1": "e293ddc557742637f9f679f083a1a282d87b1b13", + "word": { + "v": 111, + "decoder_constant": 63, + "copy_ranks": [ + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7 + ] + }, + "derived_deficit": 10272, + "deficit_formula": "T(2Kv-L*cst), L=9 T=32 K=4 M=64", + "replay_scope": "Cited unchanged supplier; this assembly reprices its full profile and does not rebuild its bit circuit." + }, + "moments": [ + { + "side": "bit", + "surcharge": true, + "endpoint": "1733427039589844234749/1000000000000000000000000", + "accept": true, + "mercator": [ + "-43100600330766044577088869872467188970742291/26959946667150639794667015087019630673637144422540572481103610249216", + "-43100600330766044577088869872467188970742289/26959946667150639794667015087019630673637144422540572481103610249216" + ], + "base_two": [ + "-799345163337715793503/500000000000000000000000000000000000000000000", + "-3197378653350863173989/2000000000000000000000000000000000000000000000" + ] + }, + { + "side": "bit", + "surcharge": true, + "endpoint": "6933708158359376939/4000000000000000000000", + "accept": false, + "mercator": [ + "22502934905675809315035333485365686073718547/13479973333575319897333507543509815336818572211270286240551805124608", + "5625733726418952328758833371341421518429637/3369993333393829974333376885877453834204643052817571560137951281152" + ], + "base_two": [ + "8346798366759439729359/5000000000000000000000000000000000000000000000", + "16693606733518879458833/10000000000000000000000000000000000000000000000" + ] + }, + { + "side": "complex", + "surcharge": false, + "endpoint": "416181814685169713943/250000000000000000000000", + "accept": true, + "mercator": [ + "-9063808159184494128077302191980009913017957/26959946667150639794667015087019630673637144422540572481103610249216", + "-9063808159184494128077302191980009913017955/26959946667150639794667015087019630673637144422540572481103610249216" + ], + "base_two": [ + "-84049/250000000000000000000000000000", + "-67239/200000000000000000000000000000" + ] + }, + { + "side": "complex", + "surcharge": false, + "endpoint": "1664727258740678855773/1000000000000000000000000", + "accept": false, + "mercator": [ + "35204417337620213718016788425517747602870017/13479973333575319897333507543509815336818572211270286240551805124608", + "17602208668810106859008394212758873801435009/6739986666787659948666753771754907668409286105635143120275902562304" + ], + "base_two": [ + "326451/125000000000000000000000000000", + "2611609/1000000000000000000000000000000" + ] + } + ], + "bootstrap": [ + { + "exponent": "103876247946161440080057377896962787857178473276730863994254679988695665724797891267551392751/62500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "gap": "169205725130988405692455557583540850393040973269136005745320011304334275202108732448607249/62500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "cutoff_log2": "4911706737567" + }, + { + "exponent": "26011292997477366986656878792457101305020878010848664852222677613549771476476241004222271952643119865936154167491325917634564236746086172807/15625000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "gap": "70420345740134780579571179480871872000551651335147777322386450228523523758995777728047356880134063845832508674082365435763253913827193/15625000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "cutoff_log2": "1772336766424157901" + }, + { + "exponent": "6502840825148109499473010858275981414538244775392390493795702649060453144660444744286706848547783107151599400506699143998491130731245495164533318807457318600858499698341275955000144651999/3906250000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "gap": "29307667280886353732633164129684974865232609506204297350939546855339555255713293151452216892848400599493300856001508869268754504835466681192542681399141500301658724044999855348001/3906250000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "cutoff_log2": "639528738471729375193491" + }, + { + "exponent": "1625710213601746876936692691495811940717507284067446528893393574196212339042034342219960054881347748442872399951361831885815513596006811905189220116151342105287875470455579035667642186915398248506444536803899484791834202080223886877943/976562500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "gap": "12197318153148456231474445338297626088803471106606425803787660957965657780039945118652251557127600048638168114184486403993188094810779883848657894712124529544420964332357813084601751493555463196100515208165797919776113122057/976562500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "cutoff_log2": "230767095215447300436172576982" + }, + { + "exponent": "406427553403480972470457017244506017394700391129416213445423233213154021978055025830448021702842353532361095082481824004888530004356192072783163172241249877818031162106510680932346219156278026208999865073792311541074992963542368580413232444225691185874017620930479561842203333740751/244140625000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "gap": "5076302003269687315579119250836409646286554576766786845978021944974169551978297157646467638904917518175995111469995643807927216836827758750122181968837893489319067653780843721973791000134926207688458925007036457631419586767555774308814125982379069520438157796666259249/244140625000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "cutoff_log2": "83269834536965707586896522785415935" + }, + { + "exponent": "101606888350871510080450492122214609449413369591027364844514665453503726840271335469378032435904337180739310816325629889774994466744559587788721572892389831944588142322311042657474341021992812691943686727138963116500505097370720118433893800034094900168701553063549000947376245304622537456997967155749701687508656813694677208008807/61035156250000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "gap": "2112664579610740789679074437293738260155485334546496273159728664530621967564095662819260689183674370110225005533255440412211278427107610168055411857677688957342525658978007187308056313272861036883499494902629279881566106199965905099831298446936450999052623754695377462543002032844250298312491343186305322791991193/61035156250000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "cutoff_log2": "30047027880383448577363131591267949447298" + }, + { + "exponent": "25401722087717878047399515354675370480720123834301459117238230678240097544423754070673558407597137813240645080999367118185569781125616007693489164172440492770797245366869199496205505620356638937167352620756623487537852259814168118115963527897743737948573541399678233704713759901054310968219181698547664514178261166218891162436092280671878444412343826049897797210985799185303999/15258789062500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "gap": "879252578563479301401827886889947132761769321759902455576245929326441592402862186759354919000632881814430218874383992306510835827559507229202754633130800503794494379643361062832647379243376512462147740185831881884036472102256262051426458600321766295286240098945689031780818301452335485821738833781108837563907719328121555587656173950102202789014200814696001/15258789062500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "cutoff_log2": "10842148173643272889999539096203012516204841615" + } + ], + "outer": { + "bit_positive": "25401722087717878047399515354675370480720123834301459117238230678240097544423754070673558407597137813240645080999367118185569781125616007693489164172440492770797245366869199496205505620356638937167352620756623487537852259814168118115963527897743737948573541399678233704713759901054310968219181698547664514178261166218891162436092280671878444412343826049897797210985799185303999/15258789062500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "complex_above_bit": "879293239074629519279876165698540882761769321759902455576245929326441592402862186759354919000632881814430218874383992306510835827559507229202754633130800503794494379643361062832647379243376512462147740185831881884036472102256262051426458600321766295286240098945689031780818301452335485821738833781108837563907719328121555587656173950102202789014200814696001/15258789062500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "complex_below_one_over32": "7396318185314830286057/250000000000000000000000", + "beta_positive": "1/1000000000000000000000000", + "beta_below_one": "999999999999999999999999/1000000000000000000000000", + "leaf_saving_above_bit": "879267837352541801401827886889947132761769321759902455576245929326441592402862186759354919000632881814430218874383992306510835827559507229202754633130800503794494379643361062832647379243376512462147740185831881884036472102256262051426458600321766295286240098945689031780818301452335485821738833781108837563907719328121555587656173950102202789014200814696001/15258789062500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "q_positive": "12700861043858939023699732275615597522482014517635374883248634618996214470752759797106100963701024482866251866941275961954971649917727004479626396516439120769390929194270427307609982012932952599384180104872691387129988962554463302434494226096612054806168654736311219108618931376985755805875886135513931202778162363927747033553531962074773003315009476932668226727048487248825949602202789014200814696001/7629394531250000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "q_below_internal": "25401722087717878047399515354675370480720123834301459117238230678240097544423754070673558407597137813240645080999367118185569781125616007693489164172440492770797245366869199496205505620356638937167352620756623487537852259814168118115963527897743737948573541399678233704713759901054310968219181698547664514178261166218891162436092280671878444412343826049897797210985799185303999/7629394531250000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "q_below_leaf": "439659320398358618578961342960328241751365381003785529247240202893899036298975517133748133058724038045028350082272995520373603483560879230609070805729572692390017987067047400615819895127308612870011037445536697565505773903387945193831345263688780891381068623014244194124113864486068797221837636072252966446468037925226996684990523067331773272951512751174050397797210985799185303999/7629394531250000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "c_positive": "12700861043858939023701639624248410022482014517635374883248634618996214470752759797106100963701024482866251866941275961954971649917727004479626396516439120769390929194270427307609982012932952599384180104872691387129988962554463302434494226096612054806168654736311219108618931376985755805875886135513931202778162363927747033553531962074773003315009476932668226727048487248825949602202789014200814696001/7629394531250000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "c_below_one": "7616693670206141060976298360375751589977517985482364625116751365381003785529247240202893899036298975517133748133058724038045028350082272995520373603483560879230609070805729572692390017987067047400615819895127308612870011037445536697565505773903387945193831345263688780891381068623014244194124113864486068797221837636072252966446468037925226996684990523067331773272951512751174050397797210985799185303999/7629394531250000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "q_below_reservations": "1/4000000000000000000000000", + "lambda_above_tau": "25401722087717878047399515354675370480720123834301459117238230678240097544423754070673558407597137813240645080999367118185569781125616007693489164172440492770797245366869199496205505620356638937167352620756623487537852259814168118115963527897743737948573541399678233704713759901054310968219181698547664514178261166218891162436092280671878444412343826049897797210985799185303999/15258789062500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "lambda_above_sigma": "879318640796717237157923565213895558132250041883736757035363167557119832500406610513425592559040478952243459519464991673629021397340632845210448122294972944287265176888727932032143584748996869101084907538452638507524009954516076219544574563849664039024188672487088710014523015212236540132707052962807385228421897589287774478818610042382874667458613158522050897797210985799185303999/15258789062500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "lambda_above_internal": "25401722087717878047399515354675370480720123834301459117238230678240097544423754070673558407597137813240645080999367118185569781125616007693489164172440492770797245366869199496205505620356638937167352620756623487537852259814168118115963527897743737948573541399678233704713759901054310968219181698547664514178261166218891162436092280671878444412343826049897797210985799185303999/15258789062500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "lambda_prime_above_lambda": "25401722087717878047399515354675370480720123834301459117238230678240097544423754070673558407597137813240645080999367118185569781125616007693489164172440492770797245366869199496205505620356638937167352620756623487537852259814168118115963527897743737948573541399678233704713759901054310968219181698547664514178261166218891162436092280671878444412343826049897797210985799185303999/15258789062500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "compact_leaf": "439659320398358618578961342960328241751365381003785529247240202893899036298975517133748133058724038045028350082272995520373603483560879230609070805729572692390017987067047400615819895127308612870011037445536697565505773903387945193831345263688780891381068623014244194124113864486068797221837636072252966446468037925226996684990523067331773272951512751174050397797210985799185303999/7629394531250000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "compact_reservations": "1/4000000000000000000000000", + "lambda_prime_below_one": "12700861043858939023699732275615597522482014517635374883248634618996214470752759797106100963701024482866251866941275961954971649917727004479626396516439120769390929194270427307609982012932952599384180104872691387129988962554463302434494226096612054806168654736311219108618931376985755805875886135513931202778162363927747033553531962074773003315009476932668226727048487248825949602202789014200814696001/7629394531250000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "epsilon_positive": "7629394531249999999999992370605468750000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000/7642095392293858939023699732275615597522482014517635374883248634618996214470752759797106100963701024482866251866941275961954971649917727004479626396516439120769390929194270427307609982012932952599384180104872691387129988962554463302434494226096612054806168654736311219108618931376985755805875886135513931202778162363927747033553531962074773003315009476932668226727048487248825949602202789014200814696001", + "epsilon_below_one": "12700861043858939023707361670146847522482014517635374883248634618996214470752759797106100963701024482866251866941275961954971649917727004479626396516439120769390929194270427307609982012932952599384180104872691387129988962554463302434494226096612054806168654736311219108618931376985755805875886135513931202778162363927747033553531962074773003315009476932668226727048487248825949602202789014200814696001/7642095392293858939023699732275615597522482014517635374883248634618996214470752759797106100963701024482866251866941275961954971649917727004479626396516439120769390929194270427307609982012932952599384180104872691387129988962554463302434494226096612054806168654736311219108618931376985755805875886135513931202778162363927747033553531962074773003315009476932668226727048487248825949602202789014200814696001", + "guard_width": "12700861043858939023707361670146847522482014517635374883248634618996214470752759797106100963701024482866251866941275961954971649917727004479626396516439120769390929194270427307609982012932952599384180104872691387129988962554463302434494226096612054806168654736311219108618931376985755805875886135513931202778162363927747033553531962074773003315009476932668226727048487248825949602202789014200814696001/7642095392293858939023699732275615597522482014517635374883248634618996214470752759797106100963701024482866251866941275961954971649917727004479626396516439120769390929194270427307609982012932952599384180104872691387129988962554463302434494226096612054806168654736311219108618931376985755805875886135513931202778162363927747033553531962074773003315009476932668226727048487248825949602202789014200814696001", + "K_geometry": "5734746759481358939023701639624248410022482014517635374883248634618996214470752759797106100963701024482866251866941275961954971649917727004479626396516439120769390929194270427307609982012932952599384180104872691387129988962554463302434494226096612054806168654736311219108618931376985755805875886135513931202778162363927747033553531962074773003315009476932668226727048487248825949602202789014200814696001/7642095392293858939023699732275615597522482014517635374883248634618996214470752759797106100963701024482866251866941275961954971649917727004479626396516439120769390929194270427307609982012932952599384180104872691387129988962554463302434494226096612054806168654736311219108618931376985755805875886135513931202778162363927747033553531962074773003315009476932668226727048487248825949602202789014200814696001000000000000000000000000", + "K_dominates_log": "12700861043858939023701626923387366163542990815995750634838612136981696835377876548471481967486553730106454760840312260930488783665860063203664441544789203042386449567873910868489212622003758328956872494890678454177389578374358429743107096107649500342866220242085122496564125208331019494656777516582554217022356488041611519622329183912409075567975923400706151954045172239349016933976061965713565870051397797210985799185303999/7642095392293858939023699732275615597522482014517635374883248634618996214470752759797106100963701024482866251866941275961954971649917727004479626396516439120769390929194270427307609982012932952599384180104872691387129988962554463302434494226096612054806168654736311219108618931376985755805875886135513931202778162363927747033553531962074773003315009476932668226727048487248825949602202789014200814696001000000000000000000000000", + "record_suffix": "12700861043858939023707361670146847522482014517635374883248634618996214470752759797106100963701024482866251866941275961954971649917727004479626396516439120769390929194270427307609982012932952599384180104872691387129988962554463302434494226096612054806168654736311219108618931376985755805875886135513931202778162363927747033553531962074773003315009476932668226727048487248825949602202789014200814696001/7642095392293858939023699732275615597522482014517635374883248634618996214470752759797106100963701024482866251866941275961954971649917727004479626396516439120769390929194270427307609982012932952599384180104872691387129988962554463302434494226096612054806168654736311219108618931376985755805875886135513931202778162363927747033553531962074773003315009476932668226727048487248825949602202789014200814696001", + "phase_local": "101606888350871512189651251265782486320917092441350723450391554469955198130647195128214188713393725110170217829429243994615290333089949094561049217159863048428122953927766902021759086712534426524646133228999518164087312316255601546784566678783933883986046803396263656256896644847231310135787980465180072636469493035535840754497052918435820098773042261929383739043384582981130664149395585065119268742058397797210985799185303999/61136763138350871512189597858204924780179856116141082999065989076951969715766022078376848807709608195862930014935530207695639773199341816035837011172131512966155127433554163418460879856103463620795073440838981531097039911700435706419475953808772896438449349237890489752868951451015886046447007089084111449622225298911421976268428255696598184026520075815461345813816387897990607596817622312113606517568008000000000000000000000000", + "phase_boundary": "20321377670174302437924136576842662177032199528484324197600292908379425517829532426735142545707168419826205881005077838103471773616496265891440279454652675504021007084436167253055201829763529888587380557814293286455382955907036411203803631765616733226567413083871853961735484034522472978182309197890912938689253906398259739754448361157272877556981609560307087990274264588644586695297735374234054687651997797210985799185303999/12227352627670174302437919571640984956035971223228216599813197815390393943153204415675369761541921639172586002987106041539127954639868363207167402234426302593231025486710832683692175971220692724159014688167796306219407982340087141283895190761754579287689869847578097950573790290203177209289401417816822289924445059782284395253685651139319636805304015163092269162763277579598121519363524462422721303513601600000000000000000000000", + "gamma_sublinear": "1/2000000000000000000000000", + "cell_above_band": "15258789062499999999999977099115545206141060976300267724384402477517985482364625116751365381003785529247240202893899036298975517133748133058724038045028350082272995520373603483560879230609070805729572692390017987067047400615819895127308612870011037445536697565505773903387945193831345263688780891381068623014244194124113864486068797221837636072252966446468037925226996684990523067331773272951512751174050397797210985799185303999/30568381569175435756094798929102462390089928058070541499532994538475984857883011039188424403854804097931465007467765103847819886599670908017918505586065756483077563716777081709230439928051731810397536720419490765548519955850217853209737976904386448219224674618945244876434475725507943023223503544542055724811112649455710988134214127848299092013260037907730672906908193948995303798408811156056803258784004000000000000000000000000", + "prime_interval_packing": "12700861043858939023707361670146847522482014517635374883248634618996214470752759797106100963701024482866251866941275961954971649917727004479626396516439120769390929194270427307609982012932952599384180104872691387129988962554463302434494226096612054806168654736311219108618931376985755805875886135513931202778162363927747033553531962074773003315009476932668226727048487248825949602202789014200814696001/7642095392293858939023699732275615597522482014517635374883248634618996214470752759797106100963701024482866251866941275961954971649917727004479626396516439120769390929194270427307609982012932952599384180104872691387129988962554463302434494226096612054806168654736311219108618931376985755805875886135513931202778162363927747033553531962074773003315009476932668226727048487248825949602202789014200814696001", + "alpha_positive": "25401722087717878047407081244901401186025005335538474150899746755977911306130636345577582931187578212972706627781588222885460433583587067683290838061228323811777378762144338176099194634936710928341052599763369841307378540928821732177601322204261555149034874978396341605183056585316775300532663652096485419800518851969358553175861145987182078882985400333374378681093659488174966536178850979914380566052397797210985799185303999/15284190784587717878047399464551231195044964029035270749766497269237992428941505519594212201927402048965732503733882551923909943299835454008959252793032878241538781858388540854615219964025865905198768360209745382774259977925108926604868988452193224109612337309472622438217237862753971511611751772271027862405556324727855494067107063924149546006630018953865336453454096974497651899204405578028401629392002000000000000000000000000", + "alpha_below_one": "15258789062499999999999992383306329793858939023699732275615597522482014517635374883248634618996214470752759797106100963701024482866251866941275961954971649917727004479626396516439120769390929194270427307609982012932952599384180104872691387129988962554463302434494226096612054806168654736311219108618931376985755805875886135513931202778162363927747033553531962074773003315009476932668226727048487248825949602202789014200814696001/15284190784587717878047399464551231195044964029035270749766497269237992428941505519594212201927402048965732503733882551923909943299835454008959252793032878241538781858388540854615219964025865905198768360209745382774259977925108926604868988452193224109612337309472622438217237862753971511611751772271027862405556324727855494067107063924149546006630018953865336453454096974497651899204405578028401629392002000000000000000000000000", + "alpha_below_one_fourth": "3795645974059211591464442784892906397575216001923279213290724570553520195929245743552975467550662934028460419305689049758092025391375276434556522360196991236572918085834990875477705796371529765371351037452672975852257615940348409919039645790844044472254049452389759267949126409103176102602405279415660480181588562329994514963600904835050204422774519338132959734682430584136238008264922543527186026781948102202789014200814696001/15284190784587717878047399464551231195044964029035270749766497269237992428941505519594212201927402048965732503733882551923909943299835454008959252793032878241538781858388540854615219964025865905198768360209745382774259977925108926604868988452193224109612337309472622438217237862753971511611751772271027862405556324727855494067107063924149546006630018953865336453454096974497651899204405578028401629392002000000000000000000000000", + "delta_positive": "1/8000000000000000000000000", + "delta_below_one_eighth": "999999999999999999999999/8000000000000000000000000", + "short_record_fallback": "116221199443611936514400762136216016452475065234680268257724429966701490438380912790993929603207320119136371401245638362382439865885618303528951611503558950317979557279796533286053568278563221804976861303648546942855793298976597777090934508427388070399776995330348614835420684585287582301056677737261364114871722501743106746140374663849745219833761816925396930371059834420290092688931397583010673946574298392350775403282367624822846653179229790133573813159566163703837132231741922832928283504289996006504965352791802998320882285572054095196902705180292684712516803284610364793934810531138157719445430730532125510231345444109805056406844738094398372653057366943086555474735296200040175339916641148979201370623035157763575516133484241827973616371563054274788108141831608157974045392001/116609121586515181564692683903131341514930450660974660871631601480392398292095226437333772292536941901899204282637653746978072687529262191840814611763251329357443098895176245533868560516554763070669314271619761526292877028847571766699745090119882386090182016826420764451730635549575588314908994844597075366253328893492549850975853454011150711110153342848704043986923957630139556115756268142916882548461929321289062500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "small_field_exposure": "1/1000000000000000000000000", + "artificial_boundary": "428058948856806972097516866827081825123015666000227860819374705183061801279034301276760694318665508979161719510802544552668191634193490129110523975241967053482422032907312496897004401157000496549171869449541798287575177091756025965973881791860150059170984701206606596312787776026633052580509714038529685727935069808919034216689219653907272563995401707184286652734850113128953291572545658678054313887021912806608367042602444088003/61136763138350871512189597858204924780179856116141082999065989076951969715766022078376848807709608195862930014935530207695639773199341816035837011172131512966155127433554163418460879856103463620795073440838981531097039911700435706419475953808772896438449349237890489752868951451015886046447007089084111449622225298911421976268428255696598184026520075815461345813816387897990607596817622312113606517568008000000000000000000000000", + "literal_scalar_guard": "1", + "row_product_gap": "23971789/25", + "balanced_prefix_above_kappa": "6557624670309191158516502839534985600187642298434076053672619689734599192378527490191607515623534185555818715890895850380257720953738461804886831111023773935013250441001199092164579595058332978114353538673940385029857239896229556987911477202813218705481603909019430963935745739372577705082271481036645309001339930583529936786835791833007677284487760034042795272215568280094325204044632666910277687174053/7642095392293858939023699732275615597522482014517635374883248634618996214470752759797106100963701024482866251866941275961954971649917727004479626396516439120769390929194270427307609982012932952599384180104872691387129988962554463302434494226096612054806168654736311219108618931376985755805875886135513931202778162363927747033553531962074773003315009476932668226727048487248825949602202789014200814696001000000000000000000", + "coordinate_movement_above_kappa": "42216659953794185094827854675370480720123834301459117238230678240097544423754070673558407597137813240645080999367118185569781125616007693489164172440492770797245366869199496205505620356638937167352620756623487537852259814168118115963527897743737948573541399678233704713759901054310968219181698547664514178261166218891162436092280671878444412343826049897797210985799185303999/15258789062500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "compact_phase_layer_above_kappa": "6557617028213798864657563815835253324572044775952061536037244806485964573382313019438847718517433221854794233024643983438981758998766811887159826631397377418574129671610269897894152287448350965181400939289760280157165852766240594433448174768318992608869549102850776227624526630753646328096515675160759173487408727805367572859088758279475715209714756719033318339547341553045837955218683064707488672973238303999/7642095392293858939023699732275615597522482014517635374883248634618996214470752759797106100963701024482866251866941275961954971649917727004479626396516439120769390929194270427307609982012932952599384180104872691387129988962554463302434494226096612054806168654736311219108618931376985755805875886135513931202778162363927747033553531962074773003315009476932668226727048487248825949602202789014200814696001000000000000000000000000", + "bulk_exposure_above_kappa": "42216659953794185094827854675370480720123834301459117238230678240097544423754070673558407597137813240645080999367118185569781125616007693489164172440492770797245366869199496205505620356638937167352620756623487537852259814168118115963527897743737948573541399678233704713759901054310968219181698547664514178261166218891162436092280671878444412343826049897797210985799185303999/15258789062500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "Gaussian_arithmetic_above_kappa": "10492191830399313559767465519556244684684630155012507168240816620326724088809429513553812227891553733188285462559181493667136391571009888970091925298011641779582079936210989353192900044483350752050013062494124511175080196703978328626195061090006923832158511448262434805985974074377192951145878563782746358888212686155485534931190233379280321580407412739458995502876682521102433077645462664853655285277670103999/12227352627670174302437919571640984956035971223228216599813197815390393943153204415675369761541921639172586002987106041539127954639868363207167402234426302593231025486710832683692175971220692724159014688167796306219407982340087141283895190761754579287689869847578097950573790290203177209289401417816822289924445059782284395253685651139319636805304015163092269162763277579598121519363524462422721303513601600000000000000000000000", + "scalar_work_above_kappa": "52460989720378136974273083692580152525885540864990593911745582634628158920032005450780100327882172520745525244260914936100785805674936044521367644408563794963666882758618663543046209452856681811981875710007342975366166532039847493348828515188011523547240776465986792975174746806361690263672416042417276336496788241890077130366939301110529456201129076957332885245056319513706114383531111733079432483191609303999/61136763138350871512189597858204924780179856116141082999065989076951969715766022078376848807709608195862930014935530207695639773199341816035837011172131512966155127433554163418460879856103463620795073440838981531097039911700435706419475953808772896438449349237890489752868951451015886046447007089084111449622225298911421976268428255696598184026520075815461345813816387897990607596817622312113606517568008000000000000000000000000", + "dimension_above_kappa": "7616693670206141067533909679244513060994020825017350225304393663815079839201866929937493091414826465708741263756592909593863744240978123375778094557222022684117440181829503507705640458988266139565195414953460286727223549711385921727422745670132944933105308548076907486372984977642445208129869853237063773879493318672717561967786398621455163783520782356075009057760711546793969322613365491080124389348631666910277687174053/7642095392293858939023699732275615597522482014517635374883248634618996214470752759797106100963701024482866251866941275961954971649917727004479626396516439120769390929194270427307609982012932952599384180104872691387129988962554463302434494226096612054806168654736311219108618931376985755805875886135513931202778162363927747033553531962074773003315009476932668226727048487248825949602202789014200814696001000000000000000000" + }, + "controls": [ + "next_grid", + "zero_eta", + "zero_beta", + "unit_beta" + ], + "scope": "Conditional native exact-complex witness after complete conservative admission, moment and outer checks; PR559 exact-cover recurrence correction only, bit bad-residue surcharge and H1-H5 retained. The new source-branch gauge and retired-basis completion, the gauge44-barch U8 local word and all 72 cold helper ends, and explicit all333 whole-owner dispatch with a T21 plus T16 remainder trade are composed with the cited unchanged merged PR589 bit supplier (PR555 punctured R439 word; derived bit deficit T(2Kv-L*cst)), replacing the PR543 supplier of PR635; This is a new T37 composition of the PR890 T21 and PR870 T16 U8 owners with the unchanged PR589 bit supplier. All-size compiler, common-label/mutable-source realization, whole-call hosting, precision/tape and analytic transfer remain assumptions. No unconditional theorem or full Lean certification." +} diff --git a/research/complex-t37-validation/BASELINE-BINDING.json b/research/complex-t37-validation/BASELINE-BINDING.json new file mode 100644 index 0000000000..25df296bac --- /dev/null +++ b/research/complex-t37-validation/BASELINE-BINDING.json @@ -0,0 +1,20 @@ +{ + "status": "PASS_REBUILT_PR589_PR799_COMPOSITION", + "kappa": "1661634653669567/1000000000000000000", + "decimal": "0.001661634653669567", + "ancestry": { + "status": "PASS_REBUILT_PR589_PR741_COMPOSITION", + "kappa": "1661202643272239/1000000000000000000", + "decimal": "0.001661202643272239", + "bit_input_sha256": "b9f0e5ca038abe837b0007c8fe006f366a6f02009244ac57705a8a200e2301f4", + "bit_result_sha256": "28795393651ef4fbbc6232eb2b32f7b39b91fbd5ea6d2315583f350714698055", + "complex_receipt_sha256": "05654aa6d9c3071427f954647bf2da3c68949423ce3da63ccdf08466e25432a1", + "complex_assembly_sha256": "1601587041b6a5610e0fb4c2c8fe463657a19d8f3c0e5d8b5d13a17873d04dea", + "scope": "Rebuilt finite suppliers and exact composition. All-size/compiler, common-label/mutable-source, whole-call hosting, precision/tape and analytic transfer hypotheses remain conditional; not a full Lean theorem." + }, + "package_manifest_sha256": "e1b7998c8f7cb24f8674d250d0510f2b5b351b2ed0b35f17a17e6bacf3d9824b", + "assembly_sha256": "ab5ae30a54ce052c8263d63ebe5afc2d4b21d63a84337477edf561d3ba322b45", + "independent_sha256": "08af9b657149538c6b70e015cb139837ed48363b5c7205d8050948af21724ff1", + "price_sha256": "e8cecbb4f05ca1a115512b246530278ed86558d0fae1229d09d7d9188f5f330f", + "scope": "Exact finite X4 scalar/frame/phase/owner/invoice/assembly checks, bound to rebuilt PR589 and SW4 ancestry. Inherited all-size/compiler, common-label/mutable-source, whole-call hosting, precision/tape and analytic assumptions remain; not a full Lean theorem." +} diff --git a/research/complex-t37-validation/BASELINE-REPLAY-SHA256.json b/research/complex-t37-validation/BASELINE-REPLAY-SHA256.json new file mode 100644 index 0000000000..04efde23d8 --- /dev/null +++ b/research/complex-t37-validation/BASELINE-REPLAY-SHA256.json @@ -0,0 +1,486 @@ +{ + "ANCESTRY.json": "cfd17fa08fe9f61a77abfd5b87b6a29f553e65b5a821c068b9c0579166280532", + "INDEPENDENT-LOCAL.json": "08af9b657149538c6b70e015cb139837ed48363b5c7205d8050948af21724ff1", + "INDEPENDENT-PRICE.json": "e8cecbb4f05ca1a115512b246530278ed86558d0fae1229d09d7d9188f5f330f", + "RESULT.json": "8fa4f327d4ee33a9b37e9a482517c73e6bafce837478982c7fcb5a1f797d5940", + "STEPS.json": "3d0f8c5797692e6a15cc13e23ad53e14f1fe87eab4936c17b791494216f7b841", + "ancestor/RESULT.json": "555393c08ae0f09797aa03f56eb71a26fb315c1e279eef3453b77d9798ba08f6", + "ancestor/STEPS.json": "83022f0c74ae4e51975b27cdcb89787004186d8ba1e51754250bb96e987fddcd", + "ancestor/bindings.log": "3749764c11e425c10f2f68137b987a7ed5c6a7f29fa319e0d0623cb1bd752526", + "ancestor/bit/GEOMETRY9.json": "8744e0ce9df5fff33aa827d433c6027b01895a547b94d554336c67b64bd71064", + "ancestor/bit/RESULT11.json": "b12e15bb0e6b8279601f4cb4f15b2570c66c8807f6e11eb16498a1a3b4e5b93d", + "ancestor/bit/RESULT9.json": "28795393651ef4fbbc6232eb2b32f7b39b91fbd5ea6d2315583f350714698055", + "ancestor/bit/a9p/assemble9.py": "d9e4f54eb12814ac1b4bb3b6b8dd9786d2ab003e0151ac8f24b110205142a106", + "ancestor/bit/a9p/audit_hosted_k.py": "9170e70c3f377bacc30e52d1e964bce61cc146d6f5ade5df4e00886d7f9fb0d5", + "ancestor/bit/a9p/audit_parent_k.py": "3467c230948beaaaea1339f24a0ec976a0b7a3c60e719de433f70fe705cac6e5", + "ancestor/bit/a9p/emit_k.py": "1bc0f8b8316d62fb49a9da98f91b0070af68fccc46d9f071ad40f8d0bd3a2135", + "ancestor/bit/a9p/global_k.py": "d14cf0475b35d433eeaeb569e7c65f13e9e07a2679e28e41bbda59be427b5953", + "ancestor/bit/ad545/assemble.py": "1a819841be844eb4f1ddf953bc1dd3f9b6ee71f08ebe288b631a9558bcb9d115", + "ancestor/bit/ad545/audit.py": "6c1df54339d70e7f214574b92f98ee2f39bce56ffac374bbab5fd37f7c8a1511", + "ancestor/bit/ad545/chk/checkword.py": "c9e49a29a622e799684b1458a2307d6a358a515be32f398cdd2facb9d70abbdc", + "ancestor/bit/ad545/chk/relax.py": "d6e9f58de3fa41f538516b6227c249d61fb30f0f6843027cc8a07a1a372fa6b6", + "ancestor/bit/ad545/eleven_geometry.py": "949c76562865b571e71b2a2e561a1db1ec9d1ae4768d08fdf29f45145865f90b", + "ancestor/bit/ad545/emit.py": "f9c0759ed0f0eb4ce0d03fc3ce181f4ed4ff9fad70702b52342bd995078e36a5", + "ancestor/bit/ad545/host_select.py": "e156f85a93804e6cb3d6280b6155b65931eb7ac549ec6393dd70840214fcad4d", + "ancestor/bit/ad545/local_audit.py": "b99d7aba62b3661281a290aa580b5fa478510e5b3af866815df4f87905372ec7", + "ancestor/bit/ad545/mutate_records.py": "44b3bec044b5cc83f772293ce728055fd4471dce84e81f6d691ce7ff3dec7270", + "ancestor/bit/ad545/nine_geometry.py": "24ab23bfd20268b1af6acb61c26f314ecd1abec67e065e52fbcd2208a762ad61", + "ancestor/bit/adapted9/audit_parent_k.py": "37fbbc7ec8c2684f08af20143381909c979a6d8b3afb2e4eb20058491baa9ea0", + "ancestor/bit/base.json.gz": "1bc3c53d4baf4927c6a00c339ea3975516471a48074d4d97c6addaded2a4d858", + "ancestor/bit/bin/columns_h_111_439": "7e578a63905a62579d8b924e0f133210b8223dccd641b54f20e3c5b2222ad2f4", + "ancestor/bit/bin/columns_k2": "c39cb03be26598401addab4c289eab321db27e0255d4206ace29a0235f10b9e4", + "ancestor/bit/bin/columns_k4": "3348030bc3796c060a986396ad2bff53f81c513292064d77fca70fa13cc608c1", + "ancestor/bit/bin/columns_k5": "524a78690cade7bf5c4b2cdf8d6e0bc4cf633c06d1a5b4e4f416997141dc1d42", + "ancestor/bit/bin/legality": "8938567021124fccd0debe1779534ea469154a09434f888f1fa3114452fcc7af", + "ancestor/bit/bin/legality_ncopy_h": "df14cd1c745c7664ebec7f60c644c479abd7b3b4905fb3aacd9c26ae55547788", + "ancestor/bit/bit/AUDIT.json": "95c07426529c32d5a76cb282f38cb6c8bc56fcd968daebf55905c87dfef5123f", + "ancestor/bit/bit/GEOMETRY.json": "d71006e8f6508af61b41a6f5559ed3ab53b90604bcb0c317e32a3d6b0f4a7e2d", + "ancestor/bit/bit/GLOBAL-TEMPLATE.json.gz": "58f502c2228a6c471dceaf774eebd7cdb8c65f95dd3d9005a5a9e382f00097e8", + "ancestor/bit/bit/GLOBAL.json": "41b1cfb04c8f1d4ea1badff5260ad2b09921ba1c9feff27322ee5bb4d9907db8", + "ancestor/bit/bit/audit.log": "a91f9836713353e53696861b8cd445ac458d6b09e608c21e02c58510648def2a", + "ancestor/bit/bit/emit.log": "23ed7ea44c18b0e213564e0e87ecf1951dfbd7a010808a27dbe5714079cf00a0", + "ancestor/bit/checkword_mut.txt": "21a2339954074479ff56ff12c1c44e819b5c41b0baba7b26f264b976793d673f", + "ancestor/bit/cin/249-DONOR-OWNERSHIP.json": "2eec99c04095be0a27d6a5040a91b9f548f24650da5fb870cc625d911a62b64b", + "ancestor/bit/cin/249-states.json": "b609a1230ca3c657453e8d20c6cb9dbd4e9d0c0ca2585ff2bc830e83ec01d143", + "ancestor/bit/cin/frames.json": "bb08082dc564a4e1c66335c795b0f56be5800cd6fe0f7ddafb88af747732f8a7", + "ancestor/bit/cout/COHORT249-FRAMES.json": "44136fa355b3678a1146ad16f7e8649e94fb4fc21fe77e8310c060f61caaff8a", + "ancestor/bit/cout/COHORT249-INITIAL.json": "e9f441a677e3a7ab44c987118f9806bc9610ead06de6761ab347c97c76b7c7db", + "ancestor/bit/cout/COHORT249-RECORDS.bin": "ea44aa047a2a9cf034de8b56b2166c49cf2dbdf9cd9ed6a20299a4f2b05ef09a", + "ancestor/bit/cout/COHORT249-SELECTION.json": "4f53cda18c2baa0c0354bb5f9a3ecbe5ed12ab4d8e11ba873c2f11161202b945", + "ancestor/bit/cout/columns.json": "a2b198e0a4246e23388b998203a7649833cf436811f1eaa6d8ecad0ea2324043", + "ancestor/bit/cout/columns.log": "4935366824169ade7b77f5448e4d606a5f2b2abf39a63d9baeffea560e9e1370", + "ancestor/bit/cout/columns_k2.json": "f345da82d12b0c1b387b2f233a531144b6c273533b97812c98e170f74265319e", + "ancestor/bit/cout/columns_k2.log": "7bb047c02070dbc91e449d54053c2fcb2e8b895dc4c291aa039d00445c427490", + "ancestor/bit/cout/columns_k4.json": "7dcc823fed69bdc77d0c627c78c91f48a307ba0b27e6ceafdc506742bfddb16e", + "ancestor/bit/cout/columns_k4.log": "442bec39725f4926ed8f4e1e0e05d57ba14219b706d14763eff9311278eee2f6", + "ancestor/bit/cout/columns_k5.json": "b45d11b893d3155b04c71e8a32b03442878417e4eeca970ea80dce80d4b00900", + "ancestor/bit/cout/columns_k5.log": "5e8fbfd9718be7f94d564bd6f858a7a5382d0e60e6ca5f8390e8826724fef611", + "ancestor/bit/cout/legality.json": "c21eb2d564112feffee3b71bf0aa4a6deb6e9b6dd592d7d0b72220741b1bff0e", + "ancestor/bit/hosting11.json": "1f5a1142e0119483cabf9a4d99094d988014d1adaa29370e93f4b4a63d9bfd7f", + "ancestor/bit/iface493.err": "ad22c24502da97e8e4cfdd9981c41a6663ccc2b4110b02a21221b18eb40752cb", + "ancestor/bit/iface493.out": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", + "ancestor/bit/mutants.json": "98c5ab94690ca2824b7efad43398abbfa1cadfc08af42088b5e9cde55d715d4c", + "ancestor/bit/mutants_p.json": "07c65c50592befb37dd5edd1a8c5eb74d3518579e32c6155b67ca7436b7138f9", + "ancestor/bit/nine/GEOMETRY.json": "8744e0ce9df5fff33aa827d433c6027b01895a547b94d554336c67b64bd71064", + "ancestor/bit/rchk/checkword_mut.py": "3afea91a90f3883aced4b62a0dd7277f73003003d4dce629d1e9ff7fe9429774", + "ancestor/bit/records/249-records.bin": "ea44aa047a2a9cf034de8b56b2166c49cf2dbdf9cd9ed6a20299a4f2b05ef09a", + "ancestor/bit/records/249-states.json": "701ca802279b23ba23ffd502935ae9f34a33fc81fdfd266042f3208a2cb16265", + "ancestor/bit/records/frames.json": "d006b3bfe0c04afecfea7aecfa59dfe4298b99501c70da3938e40289bc2f5010", + "ancestor/bit/root/data/complex-b.json": "96943a080f371392381c70676638c7b3281ffc44f96b50d7ab064f59aa9897c0", + "ancestor/bit/selection9.json": "4ab1ed4529683cd184987f8bc3031fb7408b9cd22c25ab9cf541a8aaf896eaf1", + "ancestor/bit/stock.err": "c9a6155fab33c9bdc79a13f0188e8a8600cb5645fef2136e8ea78e06ea0d44da", + "ancestor/bit/stock.out": "f1764035ac956cb4a19367bfc46f401597a3eff950a5ffff85c9f0544bb5e08e", + "ancestor/bit/tuned.json.gz": "e3e301e62bc2b41dbf1ceac0acf3d35824ebeab1848c5a2142d4577b109da52f", + "ancestor/bit/v9/audit_hosted.log": "837123b35c8125b49e5e74e2225b6b25ecd684769af24bebd7fb302c594ad0ac", + "ancestor/bit/v9/audit_parent.log": "bff304562756105332783d2582e999a7a57c956d93fb3ac260220af065cfdc30", + "ancestor/bit/v9/emit.log": "21132106fe35447174d7940437c1c94e7d38d56076d09f6bc29f22cacf2246f5", + "ancestor/bit/v9/global.log": "962b9b9d49fd7200ad9052b09fbb1cb4dff79561047b2c874f9bbbfd95d37ecf", + "ancestor/bit/v9/hosted/AUDIT.json": "63266662d78323d81085fe0555fd48f2790a338b2a8a8c8e6f44a283050ff60d", + "ancestor/bit/v9/hosted/GLOBAL-TEMPLATE.json.gz": "13fc1e9240736e503396cb68417f0a27dc6b0498d70c605263cb24792bbe7eee", + "ancestor/bit/v9/hosted/GLOBAL.json": "70a09d703f67dd3fc6ca9e2f04bb2da5b5c1ecc494132e4a11ec0f1dfb69635f", + "ancestor/bit/v9/nine/AUDIT.json": "0faec4ed848a764cf13832dee10a6db54f6342b7371cb57baff5ea4c6b79d4f7", + "ancestor/bit/v9/nine/GEOMETRY.json": "8744e0ce9df5fff33aa827d433c6027b01895a547b94d554336c67b64bd71064", + "ancestor/bit/v9/nine/GLOBAL-TEMPLATE.json.gz": "d45a0ed1b4b51e5fe2a433252e20bd22b1b17f6cb078b1eda64c250250644f35", + "ancestor/bit/v9/nine/GLOBAL.json": "d574ec9fbe1bd1712c530cbc69a0164921cbc2f412afabf60d9908f355f90c12", + "ancestor/bit/xcheck.json": "86eab972e14f7660242b20daabe2db2ac6c0d7986fce824d2d4791c112cd78ba", + "ancestor/bit589.log": "22447f38f73326856446b377dc5101d58ff5fa189e3d7f0786486f4e1658f620", + "ancestor/complex/ANCESTRAL-LINK.json": "36da524f7b731d6b03cd3fec4ae8c4afc0d1ec171b8a2261f0049c285f9cd782", + "ancestor/complex/FRAME-CONTROLS.json": "627bdd95510e9718029d774f977d1fb89c09a3f2db920ccdeec2fa1afb888c1b", + "ancestor/complex/INDEPENDENT-LOCAL.json": "979ae3e33b6b17cefcc7277ae4c5bb01fe40c3cecd9811706ea3e30d5a69ace2", + "ancestor/complex/INDEPENDENT-MAP.json": "9c0b0334fbf9231a4bc4c6eb69fe160ab6f15a5ecf25cac93b07efc6acd64c0c", + "ancestor/complex/INDEPENDENT-PRICE.json": "0c1348bd47a99e0a1750b4a420239bc422e644ebf00000f52a18ed7be6dafcfc", + "ancestor/complex/OWNER-CONSTRUCTION-CONTROLS.json": "b3df2b24c8de2328e110e705cdb351ba9586c783c2caeb3e65fd897754db1067", + "ancestor/complex/PROMO-CONTROLS.json": "311aae67c396690102416e579fa4b89b2c9c2b8023b1fe36ef2a3c11db25faaf", + "ancestor/complex/RECEIPT.json": "05654aa6d9c3071427f954647bf2da3c68949423ce3da63ccdf08466e25432a1", + "ancestor/complex/RECONSTRUCTED-OWNERS.json.gz": "99d1c4caf85855c353d30f122d9efbd9e51562914facded13027f347b18a6082", + "ancestor/complex/RESULT.json": "5d7a524ec9537b6aca41cfbca7c3488019918add7f4c873fd5eafd49966ba664", + "ancestor/complex/STAGES.json": "39af0a192b1e2ff9bbbb41060ef81e73c92a3a5a18a4bde965130c9f9b1ba44a", + "ancestor/complex/all-native-phase-edges.log": "ec5056fea7d0b39d2d9120cefff1b8f348d5c8395706d9c3c4c75b34b2e4e826", + "ancestor/complex/all728-columns-native.log": "8bc27465212a69ba2a973e8d2cbb334785229ef212e532913740d78386e931a1", + "ancestor/complex/ancestral558/ASSEMBLY-CONTROLS.json": "7925df12969201deca5a21f97e844144c7dc83f26c7ac9b8638268a85e59a9de", + "ancestor/complex/ancestral558/ASSEMBLY.json": "d7bab7425f59374520f438bf16029017a33c10656688d456d8a2b65eeb8c8ed4", + "ancestor/complex/ancestral558/RECEIPT.json": "448a0efa77139e7b1ff413064bf665af77cc7c851e4893533f48700497ef53c5", + "ancestor/complex/ancestral558/RESULT.json": "77f4dcffc62b18091801d5e3a63383c347bba9f23b1a608ef6edd4377a7b04fe", + "ancestor/complex/ancestral558/STAGES.json": "59981c0480c882406594390cc085e6b080417c03d27f2ad5ba6ecc6accb3d094", + "ancestor/complex/ancestral558/all-columns-native-frames.log": "10aca51d22e7e864c5297437265c4bbb1334eb7d332f32304dac5e19f680014d", + "ancestor/complex/ancestral558/all-phase-recipes.log": "ac77bd119b027c01aba6a8a75aa6e28334569cf847b70f80e324a80c8f35a9d0", + "ancestor/complex/ancestral558/assembly-admission-controls.log": "9cc0577eb648247a02f4352eaf5187000a8378657f388e8ffa8cbeb55a43b9ec", + "ancestor/complex/ancestral558/complex-global/01-bind.log": "1ba8f0d5a08f617e637347d9c0c3761781b759af38df847306cca392913b01f4", + "ancestor/complex/ancestral558/complex-global/02-emit.log": "69b761b362452ba1f0f76e1e06454d0b4b28071fdbd68d2ba3482984aa577d5b", + "ancestor/complex/ancestral558/complex-global/03-physical.log": "177cfc604cd7085019b615945f33c04197eee181e8c30ec13831cf253c138e23", + "ancestor/complex/ancestral558/complex-global/04-invoice.log": "3c136b177a9a731705173b4e048fc8a693c3a9f2243537cd95f1f5ecfb67bc62", + "ancestor/complex/ancestral558/complex-global/05-moments.log": "0abfdd96bd6a797c6aa5f6cd358a7e1276820e94de037d0c0a6054883d485953", + "ancestor/complex/ancestral558/complex-global/PLAN.json": "8e64bb8a1a8f87998479316f4111801cb3eb1e64f898b7e577eebd72a460f844", + "ancestor/complex/ancestral558/complex-global/PR510-EXPECTED.json": "19b861f69f7602e47b390d472b487d044bff4230b250520807537c213ad0249f", + "ancestor/complex/ancestral558/complex-global/RESULT.json": "f3da5212848fbf109872ca6ceb58e2bba987b693be9a405a8c7eaf32c934efa7", + "ancestor/complex/ancestral558/complex-global/STAGES.json": "7f98a971774001aca9d7af0a0c14484bccf1f47a9b284e9fdc42ab0e05736ed4", + "ancestor/complex/ancestral558/complex-global/audit/ASYNC-AUDIT.json": "177cfc604cd7085019b615945f33c04197eee181e8c30ec13831cf253c138e23", + "ancestor/complex/ancestral558/complex-global/audit/EXACT-ASSEMBLY.json": "01f9db80b88cfef2f1551836dad9cd31f842a47b49533845aee37d8d6a474ae7", + "ancestor/complex/ancestral558/complex-global/audit/GLOBAL-PREFIX.json": "bff8fb45c83550daf817dce92815b22adb21384591699813353b8e2a4e1aa60e", + "ancestor/complex/ancestral558/complex-global/audit/IDLE-REMAINDER-FRAMES.json": "a142992c82237ef08852af7105f7d466bcccfa9e5da890e8d82559e433a4dda7", + "ancestor/complex/ancestral558/complex-global/audit/OWNERS-AND-PROFILE.json": "1dc1ff696f8a632846eed853ff56c3673e701f0122e5b9f46c3a8a33c3db966a", + "ancestor/complex/ancestral558/complex-global/audit/PREFIX-AND-INVOICE.json": "3c136b177a9a731705173b4e048fc8a693c3a9f2243537cd95f1f5ecfb67bc62", + "ancestor/complex/ancestral558/complex-global/base/split-centres/CANONICAL-WORD.json.gz": "66d3c3c70983224650643a0a05a21ac6c6959f84d0f4528650601016f5a76844", + "ancestor/complex/ancestral558/complex-global/base/split-centres/CLIFFORD-RECIPES.json": "534ace870cabe515987e00f50f71550030965006ea18978e0924590ac6944345", + "ancestor/complex/ancestral558/complex-global/base/split-centres/CLIFFORD-REVIEW.json": "2dfd39711cc70ee88f07611e6830056c0e3c8047669b2ad202afb01faf996f8c", + "ancestor/complex/ancestral558/complex-global/base/split-centres/FULL-WORD.json.gz": "375bd23001cd805707968005a9342827d5464e3f8e3a754197b31c46fc3f63c2", + "ancestor/complex/ancestral558/complex-global/base/split-centres/GLOBAL-TEMPLATE.json.gz": "ab8448de2036a23d9b55a196a8846512dc24fdf09855c1e0f0caa5b7a6965f7b", + "ancestor/complex/ancestral558/complex-global/base/split-centres/INDEPENDENT-LOCAL-REPLAY.json": "ad3f2b941127688f98ce6872d00f110644f1c2b156f8adad1b6700e838ed0e26", + "ancestor/complex/ancestral558/complex-global/base/split-centres/INDEPENDENT-REPLAY.json": "ad3f2b941127688f98ce6872d00f110644f1c2b156f8adad1b6700e838ed0e26", + "ancestor/complex/ancestral558/complex-global/base/split-centres/INTEGRATION.json": "2e7e0d0b21fed61cf2652efc42bd7e552d4c89a684f111d081124c15b6005a1d", + "ancestor/complex/ancestral558/complex-global/base/split-centres/LOCAL-CHECKS.json": "79177449e404403964ce1b2f4a9a8bd49e1916daba3123d7fd7f5cfd1f1ac0ea", + "ancestor/complex/ancestral558/complex-global/base/split-centres/LOCAL-PROGRAMS.json.gz": "99a18eede965accf65943e490b8d2b2ffb9f1c9bc6babdb825413a80cbea2cde", + "ancestor/complex/ancestral558/complex-global/base/split-centres/RESIDUAL-ADAPTERS.json": "baafef737acc16dafbe1150896feb16744f3d669fa123bb2bff19ecc4e71b275", + "ancestor/complex/ancestral558/complex-global/base/split-centres/SCALAR-FRAME-AUDIT.json": "dc9d8442288aea6f2873497ccf357f5d686cf2d6ce4a17e1cd06d4c4a948d2c4", + "ancestor/complex/ancestral558/complex-global/base/split-centres/WRAPPER-CHECKS.json": "9a09146e686c4f535b04fdef3753fe01dad8f5e8881a69408a91394acb5b48f5", + "ancestor/complex/ancestral558/complex-global/base/work/complex-nine-native/DATA-PHASES.json": "c5916ff312678f12aba403847643fbbc29f643acec60bdf836fa56cd3e8251fa", + "ancestor/complex/ancestral558/complex-global/base/work/pr361/code/engines/base_two_moment.py": "aee70c242a2f1d225528fabe2002e1564d1dc884797c07d28a831c7878ee9098", + "ancestor/complex/ancestral558/complex-global/base/work/pr361/code/engines/moment.py": "81cbc864e106418fc7854322746f72180cb8110ff39f74450a3b8d55a82c1482", + "ancestor/complex/ancestral558/complex-global/base/work/pr361/code/engines/outer.py": "c1ebb52163a7219504c728a5c2b098bf1e50bf20148a2879c5a74c3cadc7c03c", + "ancestor/complex/ancestral558/complex-global/controller-input/split-centres/CANONICAL-WORD.json.gz": "de2be0f4b6d24ace368fd5b834b7a00f9625d0a1824c4ff969f2db5f115db667", + "ancestor/complex/ancestral558/complex-global/controller-input/split-centres/GLOBAL-TEMPLATE.json.gz": "025448abdf2012d327e50a009084e1501690d05e650300d2982836aa0350ae00", + "ancestor/complex/ancestral558/complex-global/controller-input/work/complex-nine-native/DATA-PHASES.json": "c5916ff312678f12aba403847643fbbc29f643acec60bdf836fa56cd3e8251fa", + "ancestor/complex/ancestral558/complex-global/controller-input/work/pr361/code/engines/base_two_moment.py": "aee70c242a2f1d225528fabe2002e1564d1dc884797c07d28a831c7878ee9098", + "ancestor/complex/ancestral558/complex-global/controller-input/work/pr361/code/engines/moment.py": "81cbc864e106418fc7854322746f72180cb8110ff39f74450a3b8d55a82c1482", + "ancestor/complex/ancestral558/complex-global/controller-input/work/pr361/code/engines/outer.py": "c1ebb52163a7219504c728a5c2b098bf1e50bf20148a2879c5a74c3cadc7c03c", + "ancestor/complex/ancestral558/complex-global/hosted/ACTUAL-SIGMAS.json.gz": "301b83b35fac3253f272400f786b2a8624a8c13205b24055a54c7d15765d25ea", + "ancestor/complex/ancestral558/complex-global/hosted/GLOBAL-TEMPLATE.json.gz": "dbf84788513cac54e94684aa0cc84ad97651ce4fab62cec0ccf0b13e9c10024b", + "ancestor/complex/ancestral558/complex-global/hosted/HOSTED.json": "69b761b362452ba1f0f76e1e06454d0b4b28071fdbd68d2ba3482984aa577d5b", + "ancestor/complex/ancestral558/complex-global/hosted/IDLE-REMAINDER-FRAMES.json.gz": "e848a0e2651258aae80a168ea268ff53618dd1477a812980b2b0f25db8132e53", + "ancestor/complex/ancestral558/complex-local/CANONICAL-WORD.json.gz": "66d3c3c70983224650643a0a05a21ac6c6959f84d0f4528650601016f5a76844", + "ancestor/complex/ancestral558/complex-local/CLIFFORD-RECIPES.json": "534ace870cabe515987e00f50f71550030965006ea18978e0924590ac6944345", + "ancestor/complex/ancestral558/complex-local/CLIFFORD-REVIEW.json": "2dfd39711cc70ee88f07611e6830056c0e3c8047669b2ad202afb01faf996f8c", + "ancestor/complex/ancestral558/complex-local/FULL-WORD.json.gz": "375bd23001cd805707968005a9342827d5464e3f8e3a754197b31c46fc3f63c2", + "ancestor/complex/ancestral558/complex-local/INDEPENDENT-LOCAL-REPLAY.json": "ad3f2b941127688f98ce6872d00f110644f1c2b156f8adad1b6700e838ed0e26", + "ancestor/complex/ancestral558/complex-local/LOCAL-CHECKS.json": "79177449e404403964ce1b2f4a9a8bd49e1916daba3123d7fd7f5cfd1f1ac0ea", + "ancestor/complex/ancestral558/complex-local/LOCAL-PROGRAMS.json.gz": "99a18eede965accf65943e490b8d2b2ffb9f1c9bc6babdb825413a80cbea2cde", + "ancestor/complex/ancestral558/complex-local/RESIDUAL-ADAPTERS.json": "baafef737acc16dafbe1150896feb16744f3d669fa123bb2bff19ecc4e71b275", + "ancestor/complex/ancestral558/complex-local/SCALAR-FRAME-AUDIT.json": "dc9d8442288aea6f2873497ccf357f5d686cf2d6ce4a17e1cd06d4c4a948d2c4", + "ancestor/complex/ancestral558/complex-local/WRAPPER-CHECKS.json": "9a09146e686c4f535b04fdef3753fe01dad8f5e8881a69408a91394acb5b48f5", + "ancestor/complex/ancestral558/emit-both-reflected-ledgers.log": "f382385a67f705b446978a73fc6492ce127cb2ae76011e87e36fdbe9977f4347", + "ancestor/complex/ancestral558/independent-local-and-controls.log": "b694b4b22abb9d1de9a70bbbdf9e9b0e030ec00a7eddc264e4c18376dd859cee", + "ancestor/complex/ancestral558/literal-owners-full-invoice.log": "e720b155fe17bb2e8591a25836b31e91e68e1735f0fc1592c03fc33c47acfd85", + "ancestor/complex/ancestral558/normalized-wrappers.log": "284cce3149354d057b4e2f04163535c0d8b0a924898e5b771ba8af2740314154", + "ancestor/complex/ancestral558/reconstruct552-and-promote8.log": "b7b035547780f64e33ea2432fd2cc79ed5795bf88c9791cbb913d9ec2a7c6a2b", + "ancestor/complex/ancestral558/reconstruction/lifted/FULL-WORD.json.gz": "ae5ff7b017d84cafd48a97f0198e0e00fed17e924403e92164136d22a6338f71", + "ancestor/complex/ancestral558/reconstruction/lifted/PORT.json": "873fe7e8a338738b545f3f34388a4f29f1939b48275f406022212f9ef5ef2b86", + "ancestor/complex/ancestral558/reconstruction/promoted/CONSTRUCTION.json": "208ea9f6669778a2326357171ca8b2088cb3c1f165c408fd5ee374469f5ddca5", + "ancestor/complex/ancestral558/reconstruction/promoted/FULL-WORD.json.gz": "375bd23001cd805707968005a9342827d5464e3f8e3a754197b31c46fc3f63c2", + "ancestor/complex/ancestral558/reconstruction/promoted/PROMOTED8-SCALAR-AUDIT.json": "4275fc9a309f0ba27562858e434f3fc3bdf501a3625f8ff1a8d8ccf29d72d10f", + "ancestor/complex/ancestral558/reconstruction/promoted/PROMOTION.json": "9ad34faa8611a6ea7f161d2e1fe331ab1ba5ccec8fca3978e31c3e7bf789bc31", + "ancestor/complex/ancestral558/reconstruction/promoted/STATIC44-SCALAR-AUDIT.json": "05458940a7e12e90507403c5fb819dcf84ef328a524ecd6ceaf928e0ebd620b2", + "ancestor/complex/ancestral558/reconstruction/static44/FULL-WORD.json.gz": "3bfb5ec13b794f66bdf4eebd885657ec3ea074b51ff19dcd0f91daa61f886536", + "ancestor/complex/ancestral558/reconstruction/static44/REPLAY.json": "be018b79f66ef3814c2159ba174531ff4ea17762ab104715fe7177246d345322", + "ancestor/complex/ancestral558/reconstruction/static44/SCALAR-AUDIT.json": "9436f9b92196015e357e4974011cf1d0f960abb7f26b95eedac339a02c919624", + "ancestor/complex/ancestral558/reconstruction/static44/SELECTION.json": "16ecc4a5c08af6750ee8610b722f74eba82a9eeb9703f0f0e0ace08ce5c82ad3", + "ancestor/complex/ancestral558/reconstruction/syndrome/FULL-WORD.json.gz": "29b11448963546b959bda379d82711c25f768d5579dcd6bc004887de808e8ae6", + "ancestor/complex/ancestral558/reconstruction/syndrome/SYNDROME-CERTIFICATE.json": "56961ff2c99816751e051f8fe12ce01fc2be017a074917ed58b7004b13d08cf8", + "ancestor/complex/ancestral558/reconstruction/wave/FULL-WORD.json.gz": "681f98028e41225795336d824f344391c681ccc4cdfe94dafff7cfe7d035fc9e", + "ancestor/complex/ancestral558/reconstruction/wave/WAVE-REVIEW.json": "ef97172e5020ce4158f7c8144a0b0b3d16b94d7c0415e2d33a81f02353d3d506", + "ancestor/complex/ancestral558/reconstruction/weighted/FULL-WORD.json.gz": "a30810b755cf80e1128c0b932728bd51ca8e0bb31225fc415675afb42a766c8f", + "ancestor/complex/ancestral558/reconstruction/weighted/WEIGHTED-COSET-REPLAY.json": "1661a17a2a7f717fb27bb943f500756edaeff392787d20838264e4aa6d035454", + "ancestor/complex/ancestral558/two-engine-exact-assembly.log": "b50e71a1c084e221ca32b43001f5383c8cffb09d72e66b1436f22aa240795a9c", + "ancestor/complex/ancestral558-fresh.log": "ee9681c305833892d0d2596f410df29f5752cdce5ace3d1f31cd0b8e3e6a905f", + "ancestor/complex/both-native-ledgers.log": "8e6b0648dea3c06ea71049cdd94a917a576bb5ade2c8692905354aa570b60063", + "ancestor/complex/cold-controls/COLD-END-CONTROLS.json": "09c9a15ea9a7dfc3b916d96fc8731c4c9f682906d9d0544e38f5761f826eec92", + "ancestor/complex/eight-B-frame-construction.log": "4c0bfe01cef9b1ca019c4792fb9b4104f4f6d3435334df062f45404ac23eb327", + "ancestor/complex/eight-frame-controls.log": "2c2b7fbe3407424427159113dda5c0ef0214f971601dad07bd4a2a34d99619ce", + "ancestor/complex/four-promotions.log": "b4148693c197ce7f0e6e6189568836bb148ee0d0b4f1a6e0e765a7f66fdc6cea", + "ancestor/complex/frames/BUILD.json": "3c9ce4ebca0db57e0f869804306a1e565651f0340870237b5e280579fd97e081", + "ancestor/complex/frames/FULL-WORD.json.gz": "9c11e923ae0a7f2a5de5cb4199ed065544c73a028cf48d8d9fa0faba3f595b99", + "ancestor/complex/gauge44/STEPS.json": "7fd4b6cd0f9e44f7110ff1607f975d31e9b1983d69c7238c02edb23e963396be", + "ancestor/complex/gauge44/cold44/CONSTRUCTION.json": "77d49ad518ac18a461ac40bafd1a1073703f5bbf6cddf57308041a85c7b7b5e3", + "ancestor/complex/gauge44/cold44/FULL-WORD.json.gz": "0ad202612f010df4ab66432a628247b37ad8b497dd6b27595b1685cbd7eb119e", + "ancestor/complex/gauge44/cold44/RECIPE.json.gz": "1a5cf15448bcb8e35e62fed3aa915c59f804adfa928f0f2c1ca50efd4093e690", + "ancestor/complex/gauge44/cold44-exact.log": "e17d65e9a01e6b60d34270544dace7243ce96ae3b20893a6a834b147699c6374", + "ancestor/complex/gauge44/gauge-forward.log": "ba6767bc74e7e91330d27026fa81875d2b116f7a34b818a037d94f1bd519b778", + "ancestor/complex/gauge44/hamming/COMPLETION-PRIORITY.json": "0274ffca1725e7460aaf7b672bc1248aa6dfdec11e5f0fec91af18b829f8ba47", + "ancestor/complex/gauge44/hamming/PACKET-PROGRAMS.json.gz": "d833ae0390d165d7da0c639a3c7aeb77156c2ddb52447087cb49b9d03b19e9b9", + "ancestor/complex/gauge44/hamming/PROTOTYPE.json": "327d2a868043e846381aa58a33053c24425e8cad522ff401b10ec8af1d649a3f", + "ancestor/complex/gauge44/hpe/FULL-WORD.json.gz": "83715dea94a122f1e784572e49fde61f3755a4d6382aabea0efad058bbe8a099", + "ancestor/complex/gauge44/port0/FULL-WORD.json.gz": "765ab714819d664a3016b161480dd885f4751211df340fbcebb48a57b5714ea5", + "ancestor/complex/gauge44/port0/PORT-STAGE.json": "c1f6432d233f6e85352ff0697624f1e11f3bd06ab2197cc5f610122b28d96d76", + "ancestor/complex/gauge44/port0.log": "051c88c14bf62d53703b37f1853e443bcdd76223d0f3c3ddb0c0d784bac39071", + "ancestor/complex/gauge44/port1/FULL-WORD.json.gz": "8bb257ac7a2c76c42a6c82b9a695b2bfdce688ddb3220d6034e7cb4e86970bf1", + "ancestor/complex/gauge44/port1/PORT-STAGE.json": "a5ccfd939af8ed9c421c2c6662821368db06fd43de2a3378cec2816da60785fa", + "ancestor/complex/gauge44/port1.log": "fa2deab44218bd23044f6457f4dde17c5f1defd02237451cf6eb5857cf6c0719", + "ancestor/complex/gauge44/port2/FULL-WORD.json.gz": "c3ee58182abdd6f305a48ed973614417e244f2628c2bfa14deda3b557ecc35cc", + "ancestor/complex/gauge44/port2/PORT-STAGE.json": "cfba44c342591ea87784bb250bfa84f20ffae0840568e76d3888d9328be3097e", + "ancestor/complex/gauge44/port2.log": "5b51ddfbd53e625eacabaeebfeb969c5090b735803d40e7351adbe61b8e58757", + "ancestor/complex/gauge44/port3/FULL-WORD.json.gz": "b581671c1742bcd71df5ab189670b35702d7624a0540efe56cbe9609b55aa396", + "ancestor/complex/gauge44/port3/PORT-STAGE.json": "2a9972850f1e2ccf88141551826a0763bc571ce610c5efbbe576946d70b45781", + "ancestor/complex/gauge44/port3.log": "9ed3fb2baabff72a69fd679df55ad9671f03b83fe2047df99430607fffbecc2f", + "ancestor/complex/gauge44/raw/DISCOVERY.json": "ba6767bc74e7e91330d27026fa81875d2b116f7a34b818a037d94f1bd519b778", + "ancestor/complex/gauge44/raw/FULL-WORD.json.gz": "dedf5459489f1566d05f6eb79aac6e5eab5c82c3cc1ea27b88d8ab7388e2c515", + "ancestor/complex/gauge44/raw/HELPER-MAP.json": "688d5115b221be68c96970822cc04ff698e2a84432fa7db9cb59057f6fe55def", + "ancestor/complex/gauge44/regroup/FULL-WORD.json.gz": "1e85b456eca730d310f47ff4b076b4e651dbdcc97a66bdfcb8768af31ae11b87", + "ancestor/complex/gauge44/shadow-early/FULL-WORD.json.gz": "0495b94d1a7b0de6430825025bcf139a1d883c5f695a7d817d664672459f5fa0", + "ancestor/complex/gauge44/shadow-early/KERNEL-CONSTRUCTION.json": "7a13ad21a3e4e12710e37ab9d1c54a90b2b8741fc3f5f620c363844e9cd766fb", + "ancestor/complex/gauge44/shadow-early.log": "7a13ad21a3e4e12710e37ab9d1c54a90b2b8741fc3f5f620c363844e9cd766fb", + "ancestor/complex/gauge44/shadow-prefix/CONSTRUCTION.json": "78a1cbf92153d9caa9d58fa0cfdfd0a1938cbac6f544cc1e887fbb10ac2f315f", + "ancestor/complex/gauge44/shadow-prefix/FULL-WORD.json.gz": "7ca53badec6a2787f7413645c0cc25e32566826be3e1758bbffb15d650af2c68", + "ancestor/complex/gauge44/shadow-prefix.log": "9d4cf22962c6e9358f935ca7d6ea5bc0fb64b54112d6d8d3ce5ad63fb2fb037c", + "ancestor/complex/gauge44-exact-construction.log": "d54dde88b78cc878d7b4db78c624bbdbb072bbc86b3be551bc2665096cad30fd", + "ancestor/complex/global-replay/ADMISSION-CONTROLS.json": "c6471e91aa1a17a236d84ea1ef1709ab44c17a55dc8b7d36d7fba82fd4439e2c", + "ancestor/complex/global-replay/ASSEMBLY.json": "1601587041b6a5610e0fb4c2c8fe463657a19d8f3c0e5d8b5d13a17873d04dea", + "ancestor/complex/global-replay/BIT-SUPPLIER-CONTROLS.json": "12d6c69412a673d06528f750026e6cffef63922eafb02a5bdfc39c818ebc17df", + "ancestor/complex/global-replay/REPLAY.json": "597b73d7424836fa3ba2178f6207e790df2bfd7d2ef4317bafde5ff79be785a9", + "ancestor/complex/global-replay/STAGES.json": "72e529241cfc7e30ec4ae2e979c45ebde09259e857a63ffc7ee921f92996b420", + "ancestor/complex/global-replay/admission-controls.log": "051d242318154827c1672ffbb63ad2bdc8ecc4033be650b791dd69cd57d716b3", + "ancestor/complex/global-replay/assembly.log": "b5be16aa12f9216d0c9278c7745f88a9d6db5310d3272917c7eef79b00a9d479", + "ancestor/complex/global-replay/audit.log": "cfdaa83d3e646f404a521d3c3ca935d8a56209e01a0459016e4bd8c314778273", + "ancestor/complex/global-replay/bind.log": "71f679ce5a123fb58397fd6852ba64ce3832fd20e81a096bfda9a1cf3237237a", + "ancestor/complex/global-replay/bit-supplier-controls.log": "d54d260bf95bd8ae4ab8846314082b93b2e3d8f427eb35376691f2ce543a6b67", + "ancestor/complex/global-replay/emit.log": "b0718ce87b5798c4e10cbc95ca1e843f64b69cb85e1bbea0b854dd85d1fc9705", + "ancestor/complex/global-replay/global/BINDING.json": "18139733de4d248568cfaead80ec54f4d71a77ae92fa3285d4501e7d48669fdb", + "ancestor/complex/global-replay/global/PLAN.json": "29d82017544400e7a2e5b8953185ae3beef3580385a2d911f422079ffa84f811", + "ancestor/complex/global-replay/global/audit/ASYNC-AUDIT.json": "cfdaa83d3e646f404a521d3c3ca935d8a56209e01a0459016e4bd8c314778273", + "ancestor/complex/global-replay/global/audit/GLOBAL-PREFIX.json": "08ffe0b97a87daedcafd9ac3cd7d0c0ff6e435d878522ea23431c6196e81cd84", + "ancestor/complex/global-replay/global/audit/IDLE-REMAINDER-FRAMES.json": "d344c56fb8d671d11101c81beebb724acbdb0abfbe092651ca51fd0ab3560b99", + "ancestor/complex/global-replay/global/audit/OWNERS-AND-PROFILE.json": "6ed589e5946dbd5a4ff9a4ae076c721b0e961f5164a6e02a043551974f16d821", + "ancestor/complex/global-replay/global/audit/PREFIX-AND-INVOICE.json": "715e0dba73cbeca409d281e8df8eecfec2cb6d845bbed9a9436b574af3d09163", + "ancestor/complex/global-replay/global/base/providers/gauge44/CANONICAL-WORD.json.gz": "cc8ff381409472e96284d3c145ce0820ebf8ac2ad124a04b82961a817b4ec5b9", + "ancestor/complex/global-replay/global/base/providers/gauge44/CLIFFORD-RECIPES.json": "eb7569e004bd2a2937928db9db49dad949ec291f00c2d21df6af722df7cb6c9c", + "ancestor/complex/global-replay/global/base/providers/gauge44/CLIFFORD-REVIEW.json": "05c0311459c0c4a6c8ad6a19086c10bf6997f1e3bd28c56c4dbd08f56d820b9c", + "ancestor/complex/global-replay/global/base/providers/gauge44/FULL-WORD.json.gz": "9c11e923ae0a7f2a5de5cb4199ed065544c73a028cf48d8d9fa0faba3f595b99", + "ancestor/complex/global-replay/global/base/providers/gauge44/INDEPENDENT-LOCAL-REPLAY.json": "9c5c6e2cd367a91c7e311ab5b8feb2b5ef69b4e98c987d1a25808688e99be6cf", + "ancestor/complex/global-replay/global/base/providers/gauge44/LOCAL-CHECKS.json": "e01b9c16e363a37b069d12d8cb82959f5ce1c52830b05088a466b0080cd4023c", + "ancestor/complex/global-replay/global/base/providers/gauge44/LOCAL-PROGRAMS.json.gz": "140f504a14a393ef197df3bdc8924ec241a6395e9bad39f4ddf77d625d00206e", + "ancestor/complex/global-replay/global/base/providers/gauge44/RESIDUAL-ADAPTERS.json": "8b06181f69832da05e3bffab0737598013e20de6f1f48aad43617fbfe62df615", + "ancestor/complex/global-replay/global/base/providers/gauge44/SCALAR-FRAME-AUDIT.json": "9b11a73d8f246b5683b09b4dac3ccaed5a3e59d64e44206871c697390229b25b", + "ancestor/complex/global-replay/global/base/providers/gauge44/WRAPPER-CHECKS.json": "75510637de1a14c5d37e2fe95d4c11aabc5cf3d2f1508dfb04f9795972629865", + "ancestor/complex/global-replay/global/base/split-centres/CANONICAL-WORD.json.gz": "66d3c3c70983224650643a0a05a21ac6c6959f84d0f4528650601016f5a76844", + "ancestor/complex/global-replay/global/base/split-centres/CLIFFORD-RECIPES.json": "534ace870cabe515987e00f50f71550030965006ea18978e0924590ac6944345", + "ancestor/complex/global-replay/global/base/split-centres/CLIFFORD-REVIEW.json": "ee9b86428278392d2c933f76d60e51f5af90d4ab67e4d3937ed2fa416e7755ab", + "ancestor/complex/global-replay/global/base/split-centres/GLOBAL-TEMPLATE.json.gz": "ab8448de2036a23d9b55a196a8846512dc24fdf09855c1e0f0caa5b7a6965f7b", + "ancestor/complex/global-replay/global/base/split-centres/INDEPENDENT-LOCAL-REPLAY.json": "ad3f2b941127688f98ce6872d00f110644f1c2b156f8adad1b6700e838ed0e26", + "ancestor/complex/global-replay/global/base/split-centres/INDEPENDENT-REPLAY.json": "ad3f2b941127688f98ce6872d00f110644f1c2b156f8adad1b6700e838ed0e26", + "ancestor/complex/global-replay/global/base/split-centres/INTEGRATION.json": "5c14538134dfffbc58fa4b4d2f26b270ec5f56d17d4bf23752c82964f45171db", + "ancestor/complex/global-replay/global/base/split-centres/LOCAL-CHECKS.json": "79177449e404403964ce1b2f4a9a8bd49e1916daba3123d7fd7f5cfd1f1ac0ea", + "ancestor/complex/global-replay/global/base/split-centres/LOCAL-PROGRAMS.json.gz": "99a18eede965accf65943e490b8d2b2ffb9f1c9bc6babdb825413a80cbea2cde", + "ancestor/complex/global-replay/global/base/split-centres/RESIDUAL-ADAPTERS.json": "baafef737acc16dafbe1150896feb16744f3d669fa123bb2bff19ecc4e71b275", + "ancestor/complex/global-replay/global/base/split-centres/SCALAR-FRAME-AUDIT.json": "73b3601a6239502475a272ea0c46945fd42034486aaf43e66a212eb4f012ca44", + "ancestor/complex/global-replay/global/base/split-centres/WRAPPER-CHECKS.json": "9a09146e686c4f535b04fdef3753fe01dad8f5e8881a69408a91394acb5b48f5", + "ancestor/complex/global-replay/global/base/work/complex-nine-native/DATA-PHASES.json": "c5916ff312678f12aba403847643fbbc29f643acec60bdf836fa56cd3e8251fa", + "ancestor/complex/global-replay/global/hosted/ACTUAL-SIGMAS.json.gz": "47b9357e649a47fbecd68f349e46ad8ff23833ffd27b1f8ab335cd82317750ce", + "ancestor/complex/global-replay/global/hosted/GLOBAL-TEMPLATE.json.gz": "49841710b65c08bcdde1bb0d3421c9a277b7952cb1fbc1a2f4e4289595163a20", + "ancestor/complex/global-replay/global/hosted/HOSTED.json": "b0718ce87b5798c4e10cbc95ca1e843f64b69cb85e1bbea0b854dd85d1fc9705", + "ancestor/complex/global-replay/global/hosted/IDLE-REMAINDER-FRAMES.json.gz": "0720f297576a8ede435306bb5cd6218689ee284013f1ef206e57fd2b8d20fdab", + "ancestor/complex/global-replay/invoice.log": "2024e018960ca596081f71177af982173f59b082cc942d0d436fbd93d27bf437", + "ancestor/complex/global-replay/parent558/complex-global/base/split-centres/CANONICAL-WORD.json.gz": "66d3c3c70983224650643a0a05a21ac6c6959f84d0f4528650601016f5a76844", + "ancestor/complex/global-replay/parent558/complex-global/base/split-centres/CLIFFORD-RECIPES.json": "534ace870cabe515987e00f50f71550030965006ea18978e0924590ac6944345", + "ancestor/complex/global-replay/parent558/complex-global/base/split-centres/CLIFFORD-REVIEW.json": "ee9b86428278392d2c933f76d60e51f5af90d4ab67e4d3937ed2fa416e7755ab", + "ancestor/complex/global-replay/parent558/complex-global/base/split-centres/GLOBAL-TEMPLATE.json.gz": "ab8448de2036a23d9b55a196a8846512dc24fdf09855c1e0f0caa5b7a6965f7b", + "ancestor/complex/global-replay/parent558/complex-global/base/split-centres/INDEPENDENT-LOCAL-REPLAY.json": "ad3f2b941127688f98ce6872d00f110644f1c2b156f8adad1b6700e838ed0e26", + "ancestor/complex/global-replay/parent558/complex-global/base/split-centres/INDEPENDENT-REPLAY.json": "ad3f2b941127688f98ce6872d00f110644f1c2b156f8adad1b6700e838ed0e26", + "ancestor/complex/global-replay/parent558/complex-global/base/split-centres/INTEGRATION.json": "5c14538134dfffbc58fa4b4d2f26b270ec5f56d17d4bf23752c82964f45171db", + "ancestor/complex/global-replay/parent558/complex-global/base/split-centres/LOCAL-CHECKS.json": "79177449e404403964ce1b2f4a9a8bd49e1916daba3123d7fd7f5cfd1f1ac0ea", + "ancestor/complex/global-replay/parent558/complex-global/base/split-centres/LOCAL-PROGRAMS.json.gz": "99a18eede965accf65943e490b8d2b2ffb9f1c9bc6babdb825413a80cbea2cde", + "ancestor/complex/global-replay/parent558/complex-global/base/split-centres/RESIDUAL-ADAPTERS.json": "baafef737acc16dafbe1150896feb16744f3d669fa123bb2bff19ecc4e71b275", + "ancestor/complex/global-replay/parent558/complex-global/base/split-centres/SCALAR-FRAME-AUDIT.json": "73b3601a6239502475a272ea0c46945fd42034486aaf43e66a212eb4f012ca44", + "ancestor/complex/global-replay/parent558/complex-global/base/split-centres/WRAPPER-CHECKS.json": "9a09146e686c4f535b04fdef3753fe01dad8f5e8881a69408a91394acb5b48f5", + "ancestor/complex/global-replay/parent558/complex-global/base/work/complex-nine-native/DATA-PHASES.json": "c5916ff312678f12aba403847643fbbc29f643acec60bdf836fa56cd3e8251fa", + "ancestor/complex/global-replay/restore-parent.log": "fc3a01967636bd3173ee7e5049fae45b890e1fad4564b6acdd6aaca30a4e4ea5", + "ancestor/complex/independent-literal-map-moment.log": "93cea9365a36af1296bd28fb58b25590d162387e9dd074bc800728472a23c1e4", + "ancestor/complex/independent-native-controls.log": "dd643a58258431c3b07d3b06d9060c49677fa23b4fafc9f10988ed1f6867bd9a", + "ancestor/complex/independent-scalar-frames-cones.log": "da683a8325e3d80b2fff3c1b9ef8dd3c0deb0e728614696eb1dfc6fc5bd21823", + "ancestor/complex/independent-two-engine-outer47.log": "2f0fb3a010bd37c92b10cc2b54576abf6c9eeb6f2f47016f008d810dc960e61f", + "ancestor/complex/inherited-cold-controls.log": "98a7a85292cc3c3bb562fdf1f1dfcdcdef574455eca3dbc60b8e6f5c12af0a7b", + "ancestor/complex/layered66/STEPS.json": "95e6c9625c34b4fd4af3c9576350c293b4e1d01b30b73dd325f4594eaf1cd0d3", + "ancestor/complex/layered66/cold44/CONSTRUCTION.json": "4230724263c190e3fffb6b1568fc44fc255cf1e19f0a3ed482ba4d2dbfd256cf", + "ancestor/complex/layered66/cold44/FULL-WORD.json.gz": "9756febf5c82b7d53c7c21915ab4add2c2a7b92ab960be8480f4a26d56eb7f47", + "ancestor/complex/layered66/cold44/RECIPE.json.gz": "fb443f15295245994b74069d8080ca326d0be14f08804b2f33f96a36eb26159b", + "ancestor/complex/layered66/cold44-exact.log": "12f49fb51b6404ea6ce6eeb8684edc3c0abd0b0095efd94ada4a21a71319b649", + "ancestor/complex/layered66/controls/COLD-END-CONTROLS.json": "62e4b6833922fe1b7116fa1e4798707a645309247e303a7f75a5ed42d9c2958d", + "ancestor/complex/layered66/hpe/FULL-WORD.json.gz": "4a0789d3f05de65902546bf36698a1a6ca9c21eb01c23f148e7a88a3524ce94d", + "ancestor/complex/layered66/layer-end-controls.log": "9f1ce9d5ca26a7ca7983182404a95f6c1a59351a008e50c749cefeeccc284430", + "ancestor/complex/layered66/layers/FULL-WORD.json.gz": "99991f33e1dec5511a241283e879edd7e0ccfc680196eb3ea2f20ba9812b5e58", + "ancestor/complex/layered66/ledgers.log": "639cef16781e7f1d0dde2b59896a847887a1c56a5fecd403f3866552529cf821", + "ancestor/complex/layered66/local/CANONICAL-WORD.json.gz": "786d0e988fd50784b92249bf201b7056ae25a5a1bb4cbde037ed28f637becc12", + "ancestor/complex/layered66/local/FULL-WORD.json.gz": "99991f33e1dec5511a241283e879edd7e0ccfc680196eb3ea2f20ba9812b5e58", + "ancestor/complex/layered66/local/INDEPENDENT-LOCAL-REPLAY.json": "e90e9c16facb0b900d6fd22fa94defbc7892ff8b2bba6aa76351b7bd96ad85c5", + "ancestor/complex/layered66/local/LOCAL-CHECKS.json": "d1098b41e885ab9a9f07549b9d08783ff910365d450c412fb05ab701f6f4bf67", + "ancestor/complex/layered66/local/LOCAL-PROGRAMS.json.gz": "9afbe76eadf3dc356d0273df33d4ad5d3b72cae4f859691071f76970549e5b34", + "ancestor/complex/layered66/local/RESIDUAL-ADAPTERS.json": "e1a0abe17bbcf8cf8c786ecf8860685d84cfcf8b7fc86c54cab2bd3ca8918b0c", + "ancestor/complex/layered66/local/SCALAR-FRAME-AUDIT.json": "0d1eabd0c9788878d77156acbf4317fc8d76f2203575a24457f6c886e1a3a286", + "ancestor/complex/layered66/local/WRAPPER-CHECKS.json": "764748aa18db967d38fbc25a73bdde70580a8b6a6ff569b38e9c6c29731633c5", + "ancestor/complex/layered66/local-replay.log": "dd643a58258431c3b07d3b06d9060c49677fa23b4fafc9f10988ed1f6867bd9a", + "ancestor/complex/layered66/native.log": "52a37cf5dab993f355152ba5b5fa7c060324c691479a8a28eb15986959d03b48", + "ancestor/complex/layered66/pivot-swap.log": "bb0edbe880975eacbfb6727ed4e24bd2f7d7fb41f7159680d08c298cc1449314", + "ancestor/complex/layered66/swap/FULL-WORD.json.gz": "1778536dfc93b0f08255cde4e30d87467d5c806554e68cf8cb886522768dfc22", + "ancestor/complex/layered66/swap/PIVOT-SWAP.json": "c38f12f24a532a121f3c68b1933c0dba56c85f5735eb3c91ef32199a78122e4a", + "ancestor/complex/layered66/wrappers.log": "74b13cf8570ca2f32ce0018575b1b73e95af77a28e59d09556fec59260bdbba5", + "ancestor/complex/layered66-construction.log": "e3999e8f2f4f79ec2d1563947282bcf368718576e05e155c4514aa90f21d7a34", + "ancestor/complex/local/CANONICAL-WORD.json.gz": "cc8ff381409472e96284d3c145ce0820ebf8ac2ad124a04b82961a817b4ec5b9", + "ancestor/complex/local/CLIFFORD-RECIPES.json": "eb7569e004bd2a2937928db9db49dad949ec291f00c2d21df6af722df7cb6c9c", + "ancestor/complex/local/CLIFFORD-REVIEW.json": "05c0311459c0c4a6c8ad6a19086c10bf6997f1e3bd28c56c4dbd08f56d820b9c", + "ancestor/complex/local/FULL-WORD.json.gz": "9c11e923ae0a7f2a5de5cb4199ed065544c73a028cf48d8d9fa0faba3f595b99", + "ancestor/complex/local/INDEPENDENT-LOCAL-REPLAY.json": "9c5c6e2cd367a91c7e311ab5b8feb2b5ef69b4e98c987d1a25808688e99be6cf", + "ancestor/complex/local/LOCAL-CHECKS.json": "e01b9c16e363a37b069d12d8cb82959f5ce1c52830b05088a466b0080cd4023c", + "ancestor/complex/local/LOCAL-PROGRAMS.json.gz": "140f504a14a393ef197df3bdc8924ec241a6395e9bad39f4ddf77d625d00206e", + "ancestor/complex/local/RESIDUAL-ADAPTERS.json": "8b06181f69832da05e3bffab0737598013e20de6f1f48aad43617fbfe62df615", + "ancestor/complex/local/SCALAR-FRAME-AUDIT.json": "9b11a73d8f246b5683b09b4dac3ccaed5a3e59d64e44206871c697390229b25b", + "ancestor/complex/local/WRAPPER-CHECKS.json": "75510637de1a14c5d37e2fe95d4c11aabc5cf3d2f1508dfb04f9795972629865", + "ancestor/complex/notri-control/HPE-RECIPE.json": "a35a541a1dfb7135b9efd7ea4c9d4b3cc81d47231ead2614d15f13fe60bfdfa8", + "ancestor/complex/notri-control/STEPS.json": "a237229d54497aad761dadf700c70b345874bdcdfa648d3787803d9640609093", + "ancestor/complex/notri-control/TRI.json": "94da9d5575f5b237097a77ac7dd09aff594322dd9c35138bfd34ffc5e1a7a51e", + "ancestor/complex/notri-control/cold44/CONSTRUCTION.json": "fe8ae6ee12ab7234d253004482f85e3003e51cfd69d81d9a4f19a00af8830024", + "ancestor/complex/notri-control/cold44/FULL-WORD.json.gz": "0ad202612f010df4ab66432a628247b37ad8b497dd6b27595b1685cbd7eb119e", + "ancestor/complex/notri-control/cold44/RECIPE.json.gz": "1a5cf15448bcb8e35e62fed3aa915c59f804adfa928f0f2c1ca50efd4093e690", + "ancestor/complex/notri-control/cold44.log": "82d47c50dee3589e8435b5a3d9eba0219370511352e6266a47d2fafdddc40ec7", + "ancestor/complex/notri-control/gauge-forward.log": "ba6767bc74e7e91330d27026fa81875d2b116f7a34b818a037d94f1bd519b778", + "ancestor/complex/notri-control/hpe/FULL-WORD.json.gz": "83715dea94a122f1e784572e49fde61f3755a4d6382aabea0efad058bbe8a099", + "ancestor/complex/notri-control/port0/FULL-WORD.json.gz": "765ab714819d664a3016b161480dd885f4751211df340fbcebb48a57b5714ea5", + "ancestor/complex/notri-control/port0/PORT-STAGE.json": "c1f6432d233f6e85352ff0697624f1e11f3bd06ab2197cc5f610122b28d96d76", + "ancestor/complex/notri-control/port0.log": "051c88c14bf62d53703b37f1853e443bcdd76223d0f3c3ddb0c0d784bac39071", + "ancestor/complex/notri-control/port1/FULL-WORD.json.gz": "8bb257ac7a2c76c42a6c82b9a695b2bfdce688ddb3220d6034e7cb4e86970bf1", + "ancestor/complex/notri-control/port1/PORT-STAGE.json": "a5ccfd939af8ed9c421c2c6662821368db06fd43de2a3378cec2816da60785fa", + "ancestor/complex/notri-control/port1.log": "fa2deab44218bd23044f6457f4dde17c5f1defd02237451cf6eb5857cf6c0719", + "ancestor/complex/notri-control/port2/FULL-WORD.json.gz": "c3ee58182abdd6f305a48ed973614417e244f2628c2bfa14deda3b557ecc35cc", + "ancestor/complex/notri-control/port2/PORT-STAGE.json": "cfba44c342591ea87784bb250bfa84f20ffae0840568e76d3888d9328be3097e", + "ancestor/complex/notri-control/port2.log": "5b51ddfbd53e625eacabaeebfeb969c5090b735803d40e7351adbe61b8e58757", + "ancestor/complex/notri-control/port3/FULL-WORD.json.gz": "b581671c1742bcd71df5ab189670b35702d7624a0540efe56cbe9609b55aa396", + "ancestor/complex/notri-control/port3/PORT-STAGE.json": "2a9972850f1e2ccf88141551826a0763bc571ce610c5efbbe576946d70b45781", + "ancestor/complex/notri-control/port3.log": "9ed3fb2baabff72a69fd679df55ad9671f03b83fe2047df99430607fffbecc2f", + "ancestor/complex/notri-control/raw/DISCOVERY.json": "ba6767bc74e7e91330d27026fa81875d2b116f7a34b818a037d94f1bd519b778", + "ancestor/complex/notri-control/raw/FULL-WORD.json.gz": "dedf5459489f1566d05f6eb79aac6e5eab5c82c3cc1ea27b88d8ab7388e2c515", + "ancestor/complex/notri-control/raw/HELPER-MAP.json": "688d5115b221be68c96970822cc04ff698e2a84432fa7db9cb59057f6fe55def", + "ancestor/complex/notri-control/raw/TRILOG.json": "b8a79dadba0fe4a297d2ee4ad04f0caeabdd7ed299e8f2f24286fd2f66faabf6", + "ancestor/complex/notri-control/regroup/FULL-WORD.json.gz": "1e85b456eca730d310f47ff4b076b4e651dbdcc97a66bdfcb8768af31ae11b87", + "ancestor/complex/notri-control-g44.log": "100c47bf93c570d64b23efe3ea47d60e8146af9dd319bf5e05475a0794fa7562", + "ancestor/complex/notri56/HPE-RECIPE.json": "43900139f618bdc06b8319098fb8dccaf4fc315b43ef7c067ca2cd778cdba2c1", + "ancestor/complex/notri56/STEPS.json": "57f649e609d4a627f7bd55c5df22b8b00142d488195087d6d2864722cb7b7b23", + "ancestor/complex/notri56/TRI.json": "5bbb6d64d71d7da46a2e5639b88e824f543b4b02fe7a831a044ac5df4a24923b", + "ancestor/complex/notri56/cold44/CONSTRUCTION.json": "027d5a53c3f28cedde56b7ec996b6d04090396a9e79f43531dc174d83c1915d2", + "ancestor/complex/notri56/cold44/FULL-WORD.json.gz": "b08e1338b26adb33dda69f64f186576a7c47560cc2805571e1aef39bafc98adf", + "ancestor/complex/notri56/cold44/RECIPE.json.gz": "2faaf35c864c2d5e2ab75d496b9a3fba38b7cc2393061e762bc6751f45df16c6", + "ancestor/complex/notri56/cold44.log": "403f92de260e4dc763af51d9ea8758837b66788482a2e2bb0ffe687d23725b3a", + "ancestor/complex/notri56/gauge-forward.log": "559deb17ff2bef299fd0ca2cfe6723ff1f0d495ce48d27794d735e9a5efcdbc7", + "ancestor/complex/notri56/hpe/FULL-WORD.json.gz": "ae58505f34ed6e299820d5452a28260b8a8cff42ef74379cc4d9ebab365fa1b7", + "ancestor/complex/notri56/port0/FULL-WORD.json.gz": "c19851cdac6ab35b20023d1252734457d9f5f99c93b94e616378abf9071a9397", + "ancestor/complex/notri56/port0/PORT-STAGE.json": "3a720d9c15fe53f6f49ce18ef296e9a787e4d7672fad29f23013d7edcecdf2b1", + "ancestor/complex/notri56/port0.log": "5376d7271338fddb4ce4028d9bd51edbcdfe2e26a99cf380baa7ba94b181440b", + "ancestor/complex/notri56/port1/FULL-WORD.json.gz": "5a082d61de6de6eedbc97ce170af78de8dfce22e8392e9b1ee3a64d23938a455", + "ancestor/complex/notri56/port1/PORT-STAGE.json": "33f7932c7e7c09202bdb8f5bbb82e866a12aba3c2b4b2478031735d4f33f4080", + "ancestor/complex/notri56/port1.log": "bfcd50b0c0e8439fdb3b1c2449dea48914def25b73d0d25e00f61a90afe57ed5", + "ancestor/complex/notri56/port2/FULL-WORD.json.gz": "7ba25bf5b162be981fd63fcde74df90c8d0cab1bbffb56072fd5feda39104359", + "ancestor/complex/notri56/port2/PORT-STAGE.json": "be682b635b25dacd1c2e4d6a355ce1883d5c9c970fe52546549e8fa51f67157a", + "ancestor/complex/notri56/port2.log": "d36068cd2c4d5961ed7122ce21f055fcad48ce97d81b4c1009fc31849c641e69", + "ancestor/complex/notri56/port3/FULL-WORD.json.gz": "a27609df70cb8239218fcb266cb956c500deeeb78c74fc7860b23f7403900952", + "ancestor/complex/notri56/port3/PORT-STAGE.json": "69470b82468ff1baf51a46b9f59689fc6b9dfb0b04e555ebac5d8c5e97a0dbf5", + "ancestor/complex/notri56/port3.log": "c882e3c5dbf3c793901ae38e39da30c1de4b7d3835a313014d2882a7bb1dfbb0", + "ancestor/complex/notri56/raw/DISCOVERY.json": "559deb17ff2bef299fd0ca2cfe6723ff1f0d495ce48d27794d735e9a5efcdbc7", + "ancestor/complex/notri56/raw/FULL-WORD.json.gz": "471bd3dee413aa6d89fc9e739489cfbe0929bdcea997a454e98d6c6741c0ecd0", + "ancestor/complex/notri56/raw/HELPER-MAP.json": "22cdfc7235dd6e0c1494da4519c4ab5032985e3e337d768d57a16b3ef918adf6", + "ancestor/complex/notri56/raw/TRILOG.json": "c295d55b154cd06dd977e3499c1333e1b96bad95ec69877251bfbe2e6aac12b9", + "ancestor/complex/notri56/regroup/FULL-WORD.json.gz": "a27609df70cb8239218fcb266cb956c500deeeb78c74fc7860b23f7403900952", + "ancestor/complex/notri56-construction.log": "5c7292836c01cfb326822cc3cadc8249e69bfea80b0af3bfcdf502d9a2415849", + "ancestor/complex/owner-construction-controls.log": "1ec1e48e47e129e8390dde25aea50089c0a73dd495da9498ceb396b6c9382308", + "ancestor/complex/p6n/STEPS.json": "1b5199c2ccc7c2cfa72af0ac6e14822709d2e3f0b5d8050db20e14dc51b45a90", + "ancestor/complex/p6n/controls/COLD-END-CONTROLS.json": "ee3c3155d8c09176dcbe359dea3302fb2706b6e99b3316e85df27c98b7d8869b", + "ancestor/complex/p6n/layer-end-controls.log": "4e8f08cff8e2acaddcd9575f18ebf20b782d2c2ab6fcd9192565dae530fb0044", + "ancestor/complex/p6n/p6n/FULL-WORD.json.gz": "13c72a0e383999bea556e5eea5117ad76baf87688ba6f408f97161a05056db8e", + "ancestor/complex/p6n-cold72-construction.log": "881b217d85ce98138d994e1a860d9808ddda0f7046db4babde3bb8824a6f549a", + "ancestor/complex/promoted/FULL-WORD.json.gz": "7f4a030527c957c03d9464078d53ffcb381ca9d18bec08b64483d1176aa843b2", + "ancestor/complex/promotion-controls.log": "7e7ce66060d7187c5c268c3fedb7c22d14fb4b19cc00167df6280e44bdbb00ef", + "ancestor/complex/residual-wrappers.log": "74b13cf8570ca2f32ce0018575b1b73e95af77a28e59d09556fec59260bdbba5", + "ancestor/complex/strict-global-admission.log": "4aa4d4f044c78db5f592c45622f58e10f98ce9ca842d9cb1389913a008fdb283", + "ancestor/complex/sw4/BUILD.json": "f6c817f002445083df11fdc82f69ceb53521584faae1ee746dac10700487891a", + "ancestor/complex/sw4/FULL-WORD.json.gz": "86d3c70e2d6f9eeaf8f4343d4cf5bd731b9ed6d79e33354892ed747bade0fe57", + "ancestor/complex/sw4-read-exchanges.log": "f6c817f002445083df11fdc82f69ceb53521584faae1ee746dac10700487891a", + "ancestor/complex741.log": "a3051e115805e394538a7ecfed36cd08bf6895441b52c1ceb544d6efe4de2d50", + "ancestor.log": "bb105f7d51e30c98fa8fee25d747a466b8b0ffc87e294d1326c297a6e4f52999", + "global/ADMISSION-CONTROLS.json": "e46b8ed92087f59c26433e48b05835737b01d62f2ee8e9e2e61a0ee70be9c686", + "global/ASSEMBLY.json": "ab5ae30a54ce052c8263d63ebe5afc2d4b21d63a84337477edf561d3ba322b45", + "global/BIT-SUPPLIER-CONTROLS.json": "f8fa923504bbc7d617878dd09eda0b30657df3fcb63b973381c9e66c51d12ee1", + "global/REPLAY.json": "22a5fe42e8a841ed609c6e6755ec73e5ed8a1ec4cb6ceff9e7ed9d27c78980d0", + "global/STAGES.json": "a9e7e977915c0391254a4d769e197ca5baf834e22a35f2458e465652d8985825", + "global/admission-controls.log": "051d242318154827c1672ffbb63ad2bdc8ecc4033be650b791dd69cd57d716b3", + "global/assembly.log": "c5b317052cfa170795cacec14f31fa90f8a0b7379203ebe1facc077922803bca", + "global/audit.log": "6c4fb6c81e07bb6cf1de8c96cf14ed8a2e8725a133ab99685a45a4967e59626c", + "global/bind.log": "71f679ce5a123fb58397fd6852ba64ce3832fd20e81a096bfda9a1cf3237237a", + "global/bit-supplier-controls.log": "d54d260bf95bd8ae4ab8846314082b93b2e3d8f427eb35376691f2ce543a6b67", + "global/emit.log": "84015f5e6afe4b5f7ad12b57fbf6d992a85f1510ad198c563246628cd975bf5b", + "global/global/BINDING.json": "d3d9e7f8540b7788fa256d6af5752008df9fbed612b5d11390922ab1fc55c019", + "global/global/PLAN.json": "b4b224421cc880e736402bbf25ef6ada870faaabfaaf813acca63abf4678b63f", + "global/global/audit/ASYNC-AUDIT.json": "6c4fb6c81e07bb6cf1de8c96cf14ed8a2e8725a133ab99685a45a4967e59626c", + "global/global/audit/GLOBAL-PREFIX.json": "0c6724e304316a3ad59140a314667ba1a7298b3a446f23c48d0fa67b40995eb9", + "global/global/audit/IDLE-REMAINDER-FRAMES.json": "93e51fcadddd9b078f9b0b3051d3656594e11b6935ba171509680682d6c170bd", + "global/global/audit/OWNERS-AND-PROFILE.json": "c36d3caeb0f75fef346bb10f9245a1cdcaaafa3e11afa62f227f80755fb0dff6", + "global/global/audit/PREFIX-AND-INVOICE.json": "aaeb4d21fc04b0b3443cbefec2bf8524f2ff555a5db3910012073e6b53fe127e", + "global/global/base/providers/gauge44/CANONICAL-WORD.json.gz": "f1c2ede9276d4447c5857d0e9d32adb52f987b8adb643b45bde2c172d88c6ee9", + "global/global/base/providers/gauge44/CLIFFORD-RECIPES.json": "20dddfce0ded7e41dc507939df7297bd98aec1286e05d7dbf18000d57e69a0b7", + "global/global/base/providers/gauge44/CLIFFORD-REVIEW.json": "e065399967e74b8aebec391c3db561a9c30c1013f986f84e61119377ba523666", + "global/global/base/providers/gauge44/FULL-WORD.json.gz": "fc96c6dfb3e03efc144c2d0d1abd605a1b1bc081d39a5de27f21675864ecc766", + "global/global/base/providers/gauge44/INDEPENDENT-LOCAL-REPLAY.json": "355e2ae57b8eadc957bed567ba7c5caf33202ace690560c94b008f10cf906364", + "global/global/base/providers/gauge44/LOCAL-CHECKS.json": "bbde5cea7bfd5df3d3ee7dfada0ff9d165af43a4d1dec6a9597cbfd8f87cc3b2", + "global/global/base/providers/gauge44/LOCAL-PROGRAMS.json.gz": "ce194f8465079db575a9ce17ccee1396fa4de0210e2817da2525f95f4f93ebde", + "global/global/base/providers/gauge44/RESIDUAL-ADAPTERS.json": "8b06181f69832da05e3bffab0737598013e20de6f1f48aad43617fbfe62df615", + "global/global/base/providers/gauge44/SCALAR-FRAME-AUDIT.json": "9b58b76a0e3da5790dcae0ca63bfcf7d4f9b44d3e4e53598b94c01b0665fae4b", + "global/global/base/providers/gauge44/WRAPPER-CHECKS.json": "75510637de1a14c5d37e2fe95d4c11aabc5cf3d2f1508dfb04f9795972629865", + "global/global/base/split-centres/CANONICAL-WORD.json.gz": "66d3c3c70983224650643a0a05a21ac6c6959f84d0f4528650601016f5a76844", + "global/global/base/split-centres/CLIFFORD-RECIPES.json": "534ace870cabe515987e00f50f71550030965006ea18978e0924590ac6944345", + "global/global/base/split-centres/CLIFFORD-REVIEW.json": "ee9b86428278392d2c933f76d60e51f5af90d4ab67e4d3937ed2fa416e7755ab", + "global/global/base/split-centres/GLOBAL-TEMPLATE.json.gz": "ab8448de2036a23d9b55a196a8846512dc24fdf09855c1e0f0caa5b7a6965f7b", + "global/global/base/split-centres/INDEPENDENT-LOCAL-REPLAY.json": "ad3f2b941127688f98ce6872d00f110644f1c2b156f8adad1b6700e838ed0e26", + "global/global/base/split-centres/INDEPENDENT-REPLAY.json": "ad3f2b941127688f98ce6872d00f110644f1c2b156f8adad1b6700e838ed0e26", + "global/global/base/split-centres/INTEGRATION.json": "5c14538134dfffbc58fa4b4d2f26b270ec5f56d17d4bf23752c82964f45171db", + "global/global/base/split-centres/LOCAL-CHECKS.json": "79177449e404403964ce1b2f4a9a8bd49e1916daba3123d7fd7f5cfd1f1ac0ea", + "global/global/base/split-centres/LOCAL-PROGRAMS.json.gz": "99a18eede965accf65943e490b8d2b2ffb9f1c9bc6babdb825413a80cbea2cde", + "global/global/base/split-centres/RESIDUAL-ADAPTERS.json": "baafef737acc16dafbe1150896feb16744f3d669fa123bb2bff19ecc4e71b275", + "global/global/base/split-centres/SCALAR-FRAME-AUDIT.json": "73b3601a6239502475a272ea0c46945fd42034486aaf43e66a212eb4f012ca44", + "global/global/base/split-centres/WRAPPER-CHECKS.json": "9a09146e686c4f535b04fdef3753fe01dad8f5e8881a69408a91394acb5b48f5", + "global/global/base/work/complex-nine-native/DATA-PHASES.json": "c5916ff312678f12aba403847643fbbc29f643acec60bdf836fa56cd3e8251fa", + "global/global/hosted/ACTUAL-SIGMAS.json.gz": "47b9357e649a47fbecd68f349e46ad8ff23833ffd27b1f8ab335cd82317750ce", + "global/global/hosted/GLOBAL-TEMPLATE.json.gz": "cf890426878f244729b1a2b84be4c3384e9aceeafca664fa16d457812559f21f", + "global/global/hosted/HOSTED.json": "84015f5e6afe4b5f7ad12b57fbf6d992a85f1510ad198c563246628cd975bf5b", + "global/global/hosted/IDLE-REMAINDER-FRAMES.json.gz": "0720f297576a8ede435306bb5cd6218689ee284013f1ef206e57fd2b8d20fdab", + "global/invoice.log": "2024e018960ca596081f71177af982173f59b082cc942d0d436fbd93d27bf437", + "global/parent558/complex-global/base/split-centres/CANONICAL-WORD.json.gz": "66d3c3c70983224650643a0a05a21ac6c6959f84d0f4528650601016f5a76844", + "global/parent558/complex-global/base/split-centres/CLIFFORD-RECIPES.json": "534ace870cabe515987e00f50f71550030965006ea18978e0924590ac6944345", + "global/parent558/complex-global/base/split-centres/CLIFFORD-REVIEW.json": "ee9b86428278392d2c933f76d60e51f5af90d4ab67e4d3937ed2fa416e7755ab", + "global/parent558/complex-global/base/split-centres/GLOBAL-TEMPLATE.json.gz": "ab8448de2036a23d9b55a196a8846512dc24fdf09855c1e0f0caa5b7a6965f7b", + "global/parent558/complex-global/base/split-centres/INDEPENDENT-LOCAL-REPLAY.json": "ad3f2b941127688f98ce6872d00f110644f1c2b156f8adad1b6700e838ed0e26", + "global/parent558/complex-global/base/split-centres/INDEPENDENT-REPLAY.json": "ad3f2b941127688f98ce6872d00f110644f1c2b156f8adad1b6700e838ed0e26", + "global/parent558/complex-global/base/split-centres/INTEGRATION.json": "5c14538134dfffbc58fa4b4d2f26b270ec5f56d17d4bf23752c82964f45171db", + "global/parent558/complex-global/base/split-centres/LOCAL-CHECKS.json": "79177449e404403964ce1b2f4a9a8bd49e1916daba3123d7fd7f5cfd1f1ac0ea", + "global/parent558/complex-global/base/split-centres/LOCAL-PROGRAMS.json.gz": "99a18eede965accf65943e490b8d2b2ffb9f1c9bc6babdb825413a80cbea2cde", + "global/parent558/complex-global/base/split-centres/RESIDUAL-ADAPTERS.json": "baafef737acc16dafbe1150896feb16744f3d669fa123bb2bff19ecc4e71b275", + "global/parent558/complex-global/base/split-centres/SCALAR-FRAME-AUDIT.json": "73b3601a6239502475a272ea0c46945fd42034486aaf43e66a212eb4f012ca44", + "global/parent558/complex-global/base/split-centres/WRAPPER-CHECKS.json": "9a09146e686c4f535b04fdef3753fe01dad8f5e8881a69408a91394acb5b48f5", + "global/parent558/complex-global/base/work/complex-nine-native/DATA-PHASES.json": "c5916ff312678f12aba403847643fbbc29f643acec60bdf836fa56cd3e8251fa", + "global/restore-parent.log": "fc3a01967636bd3173ee7e5049fae45b890e1fad4564b6acdd6aaca30a4e4ea5", + "global.log": "8279e93ca7b2722246a631d0b16bf0b331b9d28f4a4b01063de39543a93fbfe7", + "independent-local.log": "7135402986289a762290b2de398e4e3b050059a96e6576ea46c4bfe578325604", + "independent-price.log": "5d15bc438a648a3f9707a25b6d5bdd682482c6abd8eaba0dfd73756a19a07e7c", + "manifest.log": "f48279f90e445d990b53e6d891f94cfe2b7ad02b76baff6274b063dd7ea7dfab", + "native/JX-CONTROLS.json": "274878b0c1a00af229d8f22508215fc3fa941f345c74871d20e99aaeb14272fd", + "native/STEPS.json": "d2be580f523b2c2ab9f1f06bacd04f4d15e868d6f03e1f139530d368605c05c5", + "native/controls/COLD-END-CONTROLS.json": "27fad00130732c0f8e1a00e8dd16cc9289b043d3550bdcc1e8da7acc4c8e19c2", + "native/jx/FULL-WORD.json.gz": "6c63772c9a6ff63ed03509beeabc5cb84068adff87d636851a77a04666862b77", + "native/jx-control-C0_identity.log": "4977d68b60315e5c473b216a7c350e43910ee47c287dc61449272bcd49104086", + "native/jx-control-C1_741_only.log": "98cc0e9133b6b7e81be4857e3db596d6e8a2182d5785cd921b307e1b18efddb1", + "native/jx-control-M1_one_pair_448.log": "bd60bc7600255d43997d9e1a228fe0fd9f62450a0059ece6dc384a81c9b0806d", + "native/jx-control-N1_drop_preread.log": "d4c56f002906c9896cf014d7698fb7a94b9d06e26eda7d95334f5a6c5b6380ab", + "native/jx-control-N2_wrong_sign_preread.log": "d4c56f002906c9896cf014d7698fb7a94b9d06e26eda7d95334f5a6c5b6380ab", + "native/jx-control-N3_plain_join_moved_reads.log": "0cc3aca1751382da876313938ef5325b9c0859bf84923a9e3d9fc2a983955afd", + "native/jx-control-N4_raise_dim7_at_855.log": "2fe1bdfc2f69ac8da02891aa63d8621c41821247525fad7ca7ac91e728fad2f8", + "native/jx.log": "09e3225aed1391fce9a1c659581531332364516c8e5d91552c969fae66fba8ea", + "native/layer-end-controls.log": "f58dc87c64ab6c9c90c709905e137d6c19f255cf99b2184cfe981bdca6d907ca", + "native/ledgers.log": "2604ba4c6adc11a933857a2e30c28badf14c413eff5261d02296d7d93ab563a1", + "native/local/CANONICAL-WORD.json.gz": "f1c2ede9276d4447c5857d0e9d32adb52f987b8adb643b45bde2c172d88c6ee9", + "native/local/CLIFFORD-RECIPES.json": "20dddfce0ded7e41dc507939df7297bd98aec1286e05d7dbf18000d57e69a0b7", + "native/local/CLIFFORD-REVIEW.json": "e065399967e74b8aebec391c3db561a9c30c1013f986f84e61119377ba523666", + "native/local/FULL-WORD.json.gz": "fc96c6dfb3e03efc144c2d0d1abd605a1b1bc081d39a5de27f21675864ecc766", + "native/local/INDEPENDENT-LOCAL-REPLAY.json": "355e2ae57b8eadc957bed567ba7c5caf33202ace690560c94b008f10cf906364", + "native/local/LOCAL-CHECKS.json": "bbde5cea7bfd5df3d3ee7dfada0ff9d165af43a4d1dec6a9597cbfd8f87cc3b2", + "native/local/LOCAL-PROGRAMS.json.gz": "ce194f8465079db575a9ce17ccee1396fa4de0210e2817da2525f95f4f93ebde", + "native/local/RESIDUAL-ADAPTERS.json": "8b06181f69832da05e3bffab0737598013e20de6f1f48aad43617fbfe62df615", + "native/local/SCALAR-FRAME-AUDIT.json": "9b58b76a0e3da5790dcae0ca63bfcf7d4f9b44d3e4e53598b94c01b0665fae4b", + "native/local/WRAPPER-CHECKS.json": "75510637de1a14c5d37e2fe95d4c11aabc5cf3d2f1508dfb04f9795972629865", + "native/local-replay.log": "dd643a58258431c3b07d3b06d9060c49677fa23b4fafc9f10988ed1f6867bd9a", + "native/native.log": "883e5633743108a6d6d7e69a7a833cc123c59fbebb7c6750449b9cbcfe65a97b", + "native/phases.log": "9e322c37d240adaaf5bb37bfd6ad902dd190306e3c48adb097680156f51e4cdd", + "native/wrappers.log": "74b13cf8570ca2f32ce0018575b1b73e95af77a28e59d09556fec59260bdbba5", + "native.log": "99aa8a55358644ee49420c93fd27db3cad3b2eacc4440ae669fe9de86072ca59" +} diff --git a/research/complex-t37-validation/BASELINE741-COVERAGE.json b/research/complex-t37-validation/BASELINE741-COVERAGE.json new file mode 100644 index 0000000000..47cf161d62 --- /dev/null +++ b/research/complex-t37-validation/BASELINE741-COVERAGE.json @@ -0,0 +1,10 @@ +{ + "status": "PASS_FIXED_PR741_STAGE_AND_ARTIFACT_COVERAGE", + "ordered_stage_count": 22, + "mandatory_artifact_count": 44, + "source_manifest_sha256": "b9b39c206fcd2613382b0dcbda23a371e8781d1bedaf8e2f8e7df1e79dc1fa89", + "source_spec_sha256": "7fc2bd2e3c0ac13729c1fa1f0f327a4eb7c72373ba58e5ed3954b30e23c803be", + "complex_receipt_sha256": "05654aa6d9c3071427f954647bf2da3c68949423ce3da63ccdf08466e25432a1", + "stages_sha256": "39af0a192b1e2ff9bbbb41060ef81e73c92a3a5a18a4bde965130c9f9b1ba44a", + "scope": "Fixed coverage and receipt/STAGES agreement only. The unchanged maintainer binding must also verify every artifact and log digest. This does not authenticate execution history or fabricated logs." +} diff --git a/research/complex-t37-validation/BIT-CONTROLS.json b/research/complex-t37-validation/BIT-CONTROLS.json new file mode 100644 index 0000000000..c55b017a02 --- /dev/null +++ b/research/complex-t37-validation/BIT-CONTROLS.json @@ -0,0 +1,49 @@ +{ + "status": "PASS_PR589_BIT_SUPPLIER_DERIVED_DEFICIT_NEGATIVE_CONTROLS", + "kappa": "0.001661960547713947", + "bit_lower": "1733427039589844234749/1000000000000000000000000", + "bit_decimal": "0.001733427039589844234749", + "binding": "complex", + "bit_supplier": { + "pr": 589, + "repository": "CrocSwap/integer-mult-bounds", + "commit": "a5afc8c6169ea61ba7c51dfd3cade02cc7b13b46", + "merged_as": "b3eb785ac5b4b1ca2beea0f80db078a505626a90", + "path": "research/e8-bit-p111-tuned/tune/EXPECTED.json", + "git_blob_sha1": "e293ddc557742637f9f679f083a1a282d87b1b13", + "word": { + "v": 111, + "decoder_constant": 63, + "copy_ranks": [ + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7 + ] + }, + "derived_deficit": 10272, + "deficit_formula": "T(2Kv-L*cst), L=9 T=32 K=4 M=64", + "replay_scope": "Cited unchanged supplier; this assembly reprices its full profile and does not rebuild its bit circuit." + }, + "derived_deficit": 10272, + "rejected_controls": [ + "revert_hardcoded_9984", + "ports_112", + "decoder_constant_64_copy_ranks_unchanged", + "decoder_constant_64_with_one_copy_rank_8", + "eight_retained_totals", + "live_minus_one", + "profile_rank_mass_plus_one", + "profile_rank_mass_receipt_mismatch", + "bit_lower_next_grid", + "not_nine_stage_record", + "tampered_bytes_next_grid", + "pr543_file_under_pr589_pin" + ], + "assembler_sha256": "b370017e0ca46cefd04ba2225ab8cfc66d2aa89fda102287fd6199cc277778e1" +} diff --git a/research/complex-t37-validation/BOOTSTRAP-RESERVE-CHECK.json b/research/complex-t37-validation/BOOTSTRAP-RESERVE-CHECK.json new file mode 100644 index 0000000000..779db47c25 --- /dev/null +++ b/research/complex-t37-validation/BOOTSTRAP-RESERVE-CHECK.json @@ -0,0 +1,110 @@ +{ + "status": "PASS_FOURTEEN_UNCHANGED_BOOTSTRAP_CUTOFFS_AT_PAYLOAD1024", + "assembly_sha256": "ccd14fa0cb2a3b14d92b0c0d29760fe0d550db836a13ae4ef32499d15ce32727", + "source_sha256": "841579628e161403f4762b90de3b529ea8d2d663ad289c8792881530300a72a7", + "checked": [ + { + "branch": "bootstrap", + "index": 0, + "gap": "169205725130988405692455557583540850393040973269136005745320011304334275202108732448607249/62500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "cutoff_log2": "4911706737567" + }, + { + "branch": "bootstrap", + "index": 1, + "gap": "70420345740134780579571179480871872000551651335147777322386450228523523758995777728047356880134063845832508674082365435763253913827193/15625000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "cutoff_log2": "1772336766424157901" + }, + { + "branch": "bootstrap", + "index": 2, + "gap": "29307667280886353732633164129684974865232609506204297350939546855339555255713293151452216892848400599493300856001508869268754504835466681192542681399141500301658724044999855348001/3906250000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "cutoff_log2": "639528738471729375193491" + }, + { + "branch": "bootstrap", + "index": 3, + "gap": "12197318153148456231474445338297626088803471106606425803787660957965657780039945118652251557127600048638168114184486403993188094810779883848657894712124529544420964332357813084601751493555463196100515208165797919776113122057/976562500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "cutoff_log2": "230767095215447300436172576982" + }, + { + "branch": "bootstrap", + "index": 4, + "gap": "5076302003269687315579119250836409646286554576766786845978021944974169551978297157646467638904917518175995111469995643807927216836827758750122181968837893489319067653780843721973791000134926207688458925007036457631419586767555774308814125982379069520438157796666259249/244140625000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "cutoff_log2": "83269834536965707586896522785415935" + }, + { + "branch": "bootstrap", + "index": 5, + "gap": "2112664579610740789679074437293738260155485334546496273159728664530621967564095662819260689183674370110225005533255440412211278427107610168055411857677688957342525658978007187308056313272861036883499494902629279881566106199965905099831298446936450999052623754695377462543002032844250298312491343186305322791991193/61035156250000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "cutoff_log2": "30047027880383448577363131591267949447298" + }, + { + "branch": "bootstrap", + "index": 6, + "gap": "879252578563479301401827886889947132761769321759902455576245929326441592402862186759354919000632881814430218874383992306510835827559507229202754633130800503794494379643361062832647379243376512462147740185831881884036472102256262051426458600321766295286240098945689031780818301452335485821738833781108837563907719328121555587656173950102202789014200814696001/15258789062500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "cutoff_log2": "10842148173643272889999539096203012516204841615" + }, + { + "branch": "conservative_bootstrap", + "index": 0, + "gap": "2707291592578351649222520315513183499762780936627392438899780789208840850623216224141096361/1000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "cutoff_log2": "4911706772101" + }, + { + "branch": "conservative_bootstrap", + "index": 1, + "gap": "4506902103695235829677900581126667414013316003747440076679950617381355317388656632953476241784144126492061229516231178884918285954757141/1000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "cutoff_log2": "1772336785043253170" + }, + { + "branch": "conservative_bootstrap", + "index": 2, + "gap": "7502762771463335979139244893194540408073647588181852604392427769518924439547782233796110407506358100290554019998840013028824287677604732648163710406450287958978958665029911087442321/1000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "cutoff_log2": "639528747412214812497000" + }, + { + "branch": "conservative_bootstrap", + "index": 3, + "gap": "12490053679822001112124807669803304557013545195130246761510107430845464245203075392081617988531137115835747786611320883907466605155315427737252496660569464129832757398493522865578512226511520541352106366687838181629227233863901/1000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "cutoff_log2": "230767099243304960132402609525" + }, + { + "branch": "conservative_bootstrap", + "index": 4, + "gap": "20792532787813128435768121632777185854586566326505518228265174743407545220498029152904366664326284000086882309832964111477050583565733225661953201901930088385729950866579132346147500158223310235376597050053373708662681423445984745332409561383218021789525522007568290493881/1000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "cutoff_log2": "83269836279688457467636113060444540" + }, + { + "branch": "conservative_bootstrap", + "index": 5, + "gap": "34613896050000420950399802495547852711941875709669067366399998643631147107808956139652165300608900281041837703918323068048686658193107475742664830328686682980327524371490663632395805040185744637111666334889342186587171006123829640263931028167701076491017515545206021311620676167874687063753624267216325070116400364261/1000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "cutoff_log2": "30047028613621948543614761490104903216506" + }, + { + "branch": "conservative_bootstrap", + "index": 6, + "gap": "57622696185549609500426480012987181707653710022316272944487887367165871314800018343874071975791454899884402488457968849873805684606541533735697354318615447340645754795593547202093119462696004807475571929417603490655805581386200459535920079054631957488561131270329333930234252108900348526865261367577077282967878251543434791693721993204396334474912173021501867041/1000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "cutoff_log2": "10842148475894588435156283354576751602571908835" + } + ], + "controls_rejected": [ + { + "name": "missing_native_cutoff", + "reason": "seven cutoffs per branch" + }, + { + "name": "one_below_quadratic_cutoff", + "reason": "unchanged exact cutoff" + }, + { + "name": "zero_gap", + "reason": "positive gap" + }, + { + "name": "outside_dominance_domain", + "reason": "quadratic dominance at payload1024" + } + ], + "scope": "Recorded exact cutoffs also satisfy the stronger 1024-bit linear reserve. No change to the supplier, endpoint, kappa or inherited theorem assumptions." +} diff --git a/research/complex-t37-validation/CONCURRENT-PR942.md b/research/complex-t37-validation/CONCURRENT-PR942.md new file mode 100644 index 0000000000..b01230822d --- /dev/null +++ b/research/complex-t37-validation/CONCURRENT-PR942.md @@ -0,0 +1,66 @@ +# Concurrent T37 construction: equal exponent, distinct owners + +Jonathan Capalbo (@jon314159) published [PR942](https://github.com/CrocSwap/integer-mult-bounds/pull/942) +at `1960cfa919a0945d0ca4cb14ea96237000037903` during this contribution's +verification. It reaches the same conditional κ = 0.001661960547713947 and +has since been selected on main. No unique record, priority, or gain over +PR942 is claimed here. Its code is not imported into this package. + +Both constructions combine the PR890 T21 and PR870 T16 owner sources, +preserve the U8 word and PR589 bit supplier, use 37 replicas, pay complex +payload1024 and obtain idle profile `{48:11086,1:6}`. Both certify the same +complex endpoint and κ. The finite row charge is 17495 in both. + +The actual physical witnesses differ: + +| Obligation | PR942 | This seed39 construction | +| --- | --- | --- | +| Merge keys, T21 / T16 | `144*i` / `189*j` | `16*i` / `21*j-528` | +| Ties | T21 first | T21 first | +| Changed owner records | 8 | 10, including 6 relocations | +| Additional mathematical claim | all-T upper bound for its unchanged U8 family | no all-T or optimality claim | + +This package reconstructs its alternative owners from the same pinned +predecessors and independently expands source events, whole-role windows and +73-axis charts. Its strict 20-stage replay rechecks all 333 invocations, +167832 helper roles, the emitted controller, the complete cost invoice and +all 47 outer inequalities. Much of that replay deliberately uses shared +inherited code, including the two exact moment engines. It is not an entirely +code-disjoint audit of PR942 and does not independently validate PR942's +all-T proof. + +The extra boundary evidence includes 47 package rejection controls, two +positive recompression controls, byte-for-byte reconstruction of runtime +source adapters, and five payload mutants required to reach their named +assertions. All 30 predecessor/current omitted owner edits and both omitted +interleaving delays are also checked. Exact receipts and source hashes are +retained beside this note; the default command rebuilds the full ancestry. + +The final overlap check also found Joel Pulikkan (@GamingPuzzled)'s +[PR962](https://github.com/CrocSwap/integer-mult-bounds/pull/962), head +`50c6ae8151493af21d284afe34fb35f68f6d4934`. Its PR description reports another +independent eight-edit construction, with merge keys `(i+1)/189` and +`(j+1)/144`, the same κ and a cold ancestry replay. We inspected that +description and changed-file inventory, but did not execute its package. +Its work is credited as additional concurrent corroboration. This submission +adds the shifted ten-edit witness and the specific runtime-byte, receipt +binding, recompression and assertion-targeted payload evidence above; it is +not offered as a new packing mechanism relative to these concurrent results. + +One explicit accounting difference is resolved by +`check_bootstrap_reserve.py`: our runtime retains the predecessor's literal +512 in the bootstrap linear cutoff term, whereas the concurrent packages +raise it to 1024. For every one of our fourteen recorded gaps, +`gap <= 9/514`, hence `36/gap^2 >= 2*(4+1024)/gap`. The quadratic term +therefore selects exactly the same integer cutoff under either allowance. +The source-bound standalone check verifies both reserves and this equality, +with four negative controls. No smaller cutoff is claimed or needed here. + +Source readings used for comparison: PR942's `PROOF.md`, `CLAIM.json`, +`evidence/README.md` and `ALL-T-PROOF.md` at the head above. Its reported +checks are credited as its evidence, not passed off as our execution. +The finite certificates retain the all-size/compiler, realization, hosting, +precision/tape, analytic-transfer and bit H1–H5 assumptions. They do not +constitute a formal proof of the full multiplication theorem. + +Prepared by Tekalign (@tekuuu) with substantial OpenAI Codex assistance. diff --git a/research/complex-t37-validation/CONTROLLER-AUDIT.json b/research/complex-t37-validation/CONTROLLER-AUDIT.json new file mode 100644 index 0000000000..70ccf7669b --- /dev/null +++ b/research/complex-t37-validation/CONTROLLER-AUDIT.json @@ -0,0 +1,74 @@ +{ + "status": "PASS_INDEPENDENT_ASYNC_WHOLE_OWNER_CONTROLLER_PHASES_AND_SPECTATORS", + "template_sha256": "c22960f1cac456eef5a38d69938fffebcec8423b1c687077a487b442f55e6aaa", + "complex_template_sha256": "c22960f1cac456eef5a38d69938fffebcec8423b1c687077a487b442f55e6aaa", + "complex_live": 33152, + "complex_profile": { + "1": 848490, + "2": 112554, + "3": 148518, + "4": 53946, + "5": 23976, + "8": 2664, + "48": 11086 + }, + "complex_hosted_residuals": 167832, + "physical": 33666, + "rank_mass": 2408256, + "deficit": 11840, + "entering_helper_roles": 95904, + "cross_replica_helper_roles": 128904, + "one_owner_per_complete_invocation": true, + "helper_busy_family_window_checks": 167832, + "complete_invocations": 333, + "actual_orthogonal_73column_maps": 9632, + "actual_sigma_stream_sha256": "911c3b7cab689b39e59882446bffa154b5037f01507ccf928370f9e014284102", + "all_actual_residual_and_spectator_charts": true, + "idle_remainders": 11092, + "mutations_rejected": [ + "alias two whole owners", + "helper on active data family", + "owner in private namespace", + "wrong residual width", + "wrong spectator coordinate", + "omit idle remainder", + "understate physical reserve", + "gauge44: wrong provider at its invocation", + "gauge44: stale per-call local program hash", + "gauge44: stale serialized provider program", + "gauge44: unbound residual adapter hash", + "gauge44: wrong provider width registry", + "gauge44: wrong per-call residual width", + "gauge44: wrong sweep provider", + "gauge44: entering helper width silently restored to nine" + ], + "mutation_controls_run": true, + "provider_phase_semantic_sha256": { + "gauge44": "65ff1fcadd3d01047ceca7eb2d93bbd08a32d452ccec827c206aa8ff28e2cd2d" + }, + "provider_artifact_semantic_sha256": { + "gauge44": { + "CANONICAL-WORD.json.gz": "24db880b7dab31e6af4eec8a1aba1bbbae29cd50d9a7b77cf0e9b571b3e5ae7c", + "LOCAL-PROGRAMS.json.gz": "a073d8d6a561cf5c8148d8b29ae2800bbe3978377c016b549edd7523eb3cf7e5", + "LOCAL-CHECKS.json": "7d703fa7fc26edab2d82d16632084d9c4c252789991568fe86a56307a9b11aaf", + "INDEPENDENT-LOCAL-REPLAY.json": "031db822c0db37326ce4f7d3c9d2fa90835b80c96ebb51a03468370052032c77", + "CLIFFORD-RECIPES.json": "4629507dcbdd516457c001ff8f9dbe750d1a0cbfa5cfa3c6be003d45804ba0c5", + "CLIFFORD-REVIEW.json": "65ff1fcadd3d01047ceca7eb2d93bbd08a32d452ccec827c206aa8ff28e2cd2d", + "RESIDUAL-ADAPTERS.json": "55281b345e902c04c38a6e82a44e2c84467cd1b93198c101d5cb00d8f7bf40fb" + } + }, + "widths_by_provider": { + "gauge44": { + "4": 80, + "5": 32, + "7": 54, + "8": 122, + "9": 216 + } + }, + "provider_counts": { + "gauge44": 333 + }, + "all_provider_program_phase_and_wrapper_bindings": true, + "scope": "Independent exact asynchronous chronology, per-replica phase projection, owner/chart/paid-profile audit. Uses per-invocation local providers bound by exact scalar, phase and residual-wrapper receipts; all-size compilation and complete coefficient invoice are separate inherited obligations." +} diff --git a/research/complex-t37-validation/ENVIRONMENT.json b/research/complex-t37-validation/ENVIRONMENT.json new file mode 100644 index 0000000000..edce66c79c --- /dev/null +++ b/research/complex-t37-validation/ENVIRONMENT.json @@ -0,0 +1,10 @@ +{ + "python": "3.12.14 (main, Sep 1 2026, 14:16:52) [Clang 22.1.3 ]", + "zlib": "1.3.2", + "numpy": "2.5.4", + "scipy": "1.18.1", + "sympy": "1.14.0", + "os": "Linux-7.2.8-200.fc44.x86_64-x86_64-with-glibc2.43", + "compiler": "c++ (GCC) 16.2.1 20260819 (Red Hat 16.2.1-2)", + "boost": "1.90.0-7.fc44.x86_64; headers extracted from Fedora boost-devel RPM" +} diff --git a/research/complex-t37-validation/FINAL-OVERLAP-REFRESH.json b/research/complex-t37-validation/FINAL-OVERLAP-REFRESH.json new file mode 100644 index 0000000000..157f21557a --- /dev/null +++ b/research/complex-t37-validation/FINAL-OVERLAP-REFRESH.json @@ -0,0 +1 @@ +[{"headRefOid":"51b8bce91ab21e1fffa42a907c5de3439551decb","number":984,"state":"OPEN","title":"Research note: scale deferral saves 66 beyond one JP8 fan-in block (no new kappa)","url":"https://github.com/CrocSwap/integer-mult-bounds/pull/984"},{"headRefOid":"4d0e891e72c90f886f9d014d45286b0443c7cdb7","number":983,"state":"OPEN","title":"Research consolidation: bind CITATION/CONTRIBUTING/CONTRIBUTORS to the selected record (no new kappa)","url":"https://github.com/CrocSwap/integer-mult-bounds/pull/983"},{"headRefOid":"5eca5b435d2ce172edf6ffb85694c7efa31bf114","number":982,"state":"OPEN","title":"Research: output-borrowed fanout with an exact scratch/work tradeoff (no new kappa)","url":"https://github.com/CrocSwap/integer-mult-bounds/pull/982"},{"headRefOid":"6c9dc6d180ac0fde42c1c2b0fe549d5a13851cf9","number":981,"state":"OPEN","title":"Finite complex construction: root traversal saves 10 more historical roles","url":"https://github.com/CrocSwap/integer-mult-bounds/pull/981"},{"headRefOid":"ba1cf68bef0c97dfb120add04304e2de0db6f29c","number":980,"state":"OPEN","title":"Finite bit construction: full-prefix admission saves 240 R439 ADDs (no new kappa)","url":"https://github.com/CrocSwap/integer-mult-bounds/pull/980"},{"headRefOid":"5d4ba228f8a1fe9159c25ec6aac0abc0ab42e81a","number":979,"state":"OPEN","title":"Independent verification: exhaustive p=6 prescribed-star triple budgets","url":"https://github.com/CrocSwap/integer-mult-bounds/pull/979"},{"headRefOid":"49868be647e52c11a4e305a10d4cedb915a7cf3d","number":978,"state":"OPEN","title":"Finite R420 construction: restored helper matching and shared target donors save 8,412 XORs (no new kappa)","url":"https://github.com/CrocSwap/integer-mult-bounds/pull/978"},{"headRefOid":"2846af720af190cb75b45ebddbb0357dec1121ec","number":977,"state":"OPEN","title":"Research: cubic arbitrary-stride inversion without a length admission (no new kappa)","url":"https://github.com/CrocSwap/integer-mult-bounds/pull/977"},{"headRefOid":"d5a694125b0bba7f4768df24a7e67f88f6631bd3","number":976,"state":"OPEN","title":"Tooling: exact modular rank fast path for historical joint-frame verification","url":"https://github.com/CrocSwap/integer-mult-bounds/pull/976"},{"headRefOid":"4b40489c3e0f5819d00251de179a9ea7b1acfba8","number":975,"state":"OPEN","title":"Finite construction: four-source Horner saves 8,976 beyond X4 pairs (no new kappa)","url":"https://github.com/CrocSwap/integer-mult-bounds/pull/975"},{"headRefOid":"f40cd20a8c257bcfee17508c7de68fee24df0568","number":974,"state":"OPEN","title":"Research: T21/T37 interface budget and bit-binding headroom (no new kappa)","url":"https://github.com/CrocSwap/integer-mult-bounds/pull/974"},{"headRefOid":"c05dc72734c25dd069077157224d4dd30c6e8c19","number":973,"state":"OPEN","title":"Finite bit construction: R439 frame 509 uses 21 ADDs (no new kappa)","url":"https://github.com/CrocSwap/integer-mult-bounds/pull/973"},{"headRefOid":"f39f92a085fc95fe4245b06d4a695739d79763bc","number":972,"state":"OPEN","title":"Research note: exact minimum frame completions for the h=10 parity DAG","url":"https://github.com/CrocSwap/integer-mult-bounds/pull/972"},{"headRefOid":"b4cb9709ac48e69002a25607e1ecc2ed8452d5b3","number":971,"state":"OPEN","title":"Independent verification: targetwise audit of PR966 decoder certificates","url":"https://github.com/CrocSwap/integer-mult-bounds/pull/971"},{"headRefOid":"dd5b27a8d0ad7261899d972d41b1c56f25c496a5","number":970,"state":"MERGED","title":"Research consolidation: bind and replay historical bit-compression evidence (no new kappa)","url":"https://github.com/CrocSwap/integer-mult-bounds/pull/970"},{"headRefOid":"d1ee3f46a6167ea54913e070af3161c71a99e1f2","number":969,"state":"OPEN","title":"Finite complex construction: defer historical swaps for 560 further primitives after clear elision (no new kappa)","url":"https://github.com/CrocSwap/integer-mult-bounds/pull/969"},{"headRefOid":"6a99e7240b961ac5e115ae6aa0301ec7c4a45d77","number":968,"state":"OPEN","title":"Research: frame-pair decoders and the exact 8-term complex copy-cost floor (no new kappa)","url":"https://github.com/CrocSwap/integer-mult-bounds/pull/968"},{"headRefOid":"c6caa79e6655d83780a3b70a1d658313126fb0b3","number":967,"state":"OPEN","title":"Finite bit construction: restored helper stars save 197 R439 ADDs (no new kappa)","url":"https://github.com/CrocSwap/integer-mult-bounds/pull/967"},{"headRefOid":"7eaf5665ac246310293fda06a3cf245fe72f6012","number":966,"state":"OPEN","title":"Research: exact prescribed three-target deletion thresholds (no new kappa)","url":"https://github.com/CrocSwap/integer-mult-bounds/pull/966"},{"headRefOid":"6292e3774abd82f2d5202190b498f35cc1628c39","number":965,"state":"OPEN","title":"Finite bit construction: coupled R439 helper triples save 140 further ADDs (no new kappa)","url":"https://github.com/CrocSwap/integer-mult-bounds/pull/965"},{"headRefOid":"7a3bf8460cf6ca16a2bf008ff51fdb06df1af938","number":964,"state":"OPEN","title":"Scoped negative result: power-of-two weights cannot improve CK target forests (no new kappa)","url":"https://github.com/CrocSwap/integer-mult-bounds/pull/964"},{"headRefOid":"04c37d1c9d71808f77a36b3734f6c07a7ee772c1","number":963,"state":"OPEN","title":"Scoped negative result: frozen P111 receivers cannot beat 439 helpers (no new kappa)","url":"https://github.com/CrocSwap/integer-mult-bounds/pull/963"},{"headRefOid":"50c6ae8151493af21d284afe34fb35f68f6d4934","number":962,"state":"OPEN","title":"Conditional κ = 0.001661960547713947: T37 owner map on PR890's U8 word (independent cross-check of #942)","url":"https://github.com/CrocSwap/integer-mult-bounds/pull/962"},{"headRefOid":"4257ddf4b755cd0ac3bd3b0f6281cc5b2b1f72ad","number":961,"state":"OPEN","title":"Scoped negative result: X4 target-forest floor holds for all dyadic parent coefficients (no new kappa)","url":"https://github.com/CrocSwap/integer-mult-bounds/pull/961"},{"headRefOid":"bf87e110106c997392645f76b429ab3cc4410419","number":960,"state":"MERGED","title":"Independent verification: PR890 T21 moment brackets via binomial enclosures","url":"https://github.com/CrocSwap/integer-mult-bounds/pull/960"},{"headRefOid":"0d05972943e2a9cb9f2424033c73333677ab026c","number":959,"state":"MERGED","title":"fix: close symlink gaps in selected source inventories","url":"https://github.com/CrocSwap/integer-mult-bounds/pull/959"},{"headRefOid":"28d68c88f0184835d8c8a7266ab8d0dad3f18a8a","number":958,"state":"OPEN","title":"Scoped negative result: five-port quadratic decoder cost ceiling (no new kappa)","url":"https://github.com/CrocSwap/integer-mult-bounds/pull/958"},{"headRefOid":"65c931415587c444a7a1f48939842c4cf0aa0411","number":957,"state":"MERGED","title":"Adversarial audit: frontier890 endpoint certification, reduction and surcharge stakes (no new kappa)","url":"https://github.com/CrocSwap/integer-mult-bounds/pull/957"},{"headRefOid":"25b32f59d18abbe676dba3e55359b0728f9e5a63","number":956,"state":"OPEN","title":"Research: close the PR390 heterogeneous physical provider in exact RAM","url":"https://github.com/CrocSwap/integer-mult-bounds/pull/956"},{"headRefOid":"df668be6f75e76e12d25da5e03eb22ff656aaf86","number":955,"state":"OPEN","title":"Research: close the eight register words left open by PR800 (no kappa)","url":"https://github.com/CrocSwap/integer-mult-bounds/pull/955"},{"headRefOid":"a98219aa708e1bd2ae4ca90e720e66569f7f0147","number":954,"state":"OPEN","title":"Scoped negative result: classify E8's first decoder rank drop (no new kappa)","url":"https://github.com/CrocSwap/integer-mult-bounds/pull/954"},{"headRefOid":"5f052969846b0882ac4e22d9e818dd8ac05ea56f","number":953,"state":"OPEN","title":"Research construction: optimal dyadic-run BIT query batches (no new kappa)","url":"https://github.com/CrocSwap/integer-mult-bounds/pull/953"},{"headRefOid":"11d24706f06e95271804c9438869546724c67aab","number":952,"state":"MERGED","title":"Finite bit construction: whole six-wire synthesis saves 38 further ADDs beyond PR936 (no new kappa)","url":"https://github.com/CrocSwap/integer-mult-bounds/pull/952"},{"headRefOid":"de0c8641dcf1a4cd0abde9b897fa946de2bede49","number":951,"state":"OPEN","title":"Research: two additive cyclic inverse calls with no dirty connector (no new kappa)","url":"https://github.com/CrocSwap/integer-mult-bounds/pull/951"},{"headRefOid":"5bafe2c91e045d10de207b9e5b21630dfebb9cd2","number":950,"state":"MERGED","title":"Tooling: 1.61x faster exact historical central-factor audit (no new kappa)","url":"https://github.com/CrocSwap/integer-mult-bounds/pull/950"}] diff --git a/research/complex-t37-validation/FINAL-PR-METADATA.json b/research/complex-t37-validation/FINAL-PR-METADATA.json new file mode 100644 index 0000000000..0ac4c7420d --- /dev/null +++ b/research/complex-t37-validation/FINAL-PR-METADATA.json @@ -0,0 +1 @@ +[{"author":{"id":"U_kgDOFDLgvw","is_bot":false,"login":"woklerx","name":""},"headRefOid":"4257ddf4b755cd0ac3bd3b0f6281cc5b2b1f72ad","number":961,"title":"Scoped negative result: X4 target-forest floor holds for all dyadic parent coefficients (no new kappa)","updatedAt":"2026-10-13T14:47:40Z","url":"https://github.com/CrocSwap/integer-mult-bounds/pull/961"},{"author":{"id":"U_kgDOC0YAlA","is_bot":false,"login":"davidNbreslauer","name":"David Breslauer"},"headRefOid":"bf87e110106c997392645f76b429ab3cc4410419","number":960,"title":"Independent verification: PR890 T21 moment brackets via binomial enclosures","updatedAt":"2026-10-13T14:42:48Z","url":"https://github.com/CrocSwap/integer-mult-bounds/pull/960"},{"author":{"id":"U_kgDOCnldfw","is_bot":false,"login":"yssite","name":"yssite"},"headRefOid":"0d05972943e2a9cb9f2424033c73333677ab026c","number":959,"title":"fix: close symlink gaps in selected source inventories","updatedAt":"2026-10-13T14:56:06Z","url":"https://github.com/CrocSwap/integer-mult-bounds/pull/959"},{"author":{"id":"MDQ6VXNlcjU2NTI3MTY=","is_bot":false,"login":"RossRichardson","name":"Ross Richardson"},"headRefOid":"28d68c88f0184835d8c8a7266ab8d0dad3f18a8a","number":958,"title":"Scoped negative result: five-port quadratic decoder cost ceiling (no new kappa)","updatedAt":"2026-10-13T14:38:52Z","url":"https://github.com/CrocSwap/integer-mult-bounds/pull/958"},{"author":{"id":"MDQ6VXNlcjUwMzY2Njc2","is_bot":false,"login":"navinor","name":"Aaron Wang"},"headRefOid":"65c931415587c444a7a1f48939842c4cf0aa0411","number":957,"title":"Adversarial audit: frontier890 endpoint certification, reduction and surcharge stakes (no new kappa)","updatedAt":"2026-10-13T14:38:32Z","url":"https://github.com/CrocSwap/integer-mult-bounds/pull/957"},{"author":{"id":"MDQ6VXNlcjExOTY2MTU3","is_bot":false,"login":"artuskg","name":"Artus Krohn-Grimberghe"},"headRefOid":"25b32f59d18abbe676dba3e55359b0728f9e5a63","number":956,"title":"Research: close the PR390 heterogeneous physical provider in exact RAM","updatedAt":"2026-10-13T14:37:52Z","url":"https://github.com/CrocSwap/integer-mult-bounds/pull/956"},{"author":{"id":"MDQ6VXNlcjM1ODU4NTA=","is_bot":false,"login":"littleBro","name":"Ivan"},"headRefOid":"df668be6f75e76e12d25da5e03eb22ff656aaf86","number":955,"title":"Research: close the eight register words left open by PR800 (no kappa)","updatedAt":"2026-10-13T14:31:28Z","url":"https://github.com/CrocSwap/integer-mult-bounds/pull/955"},{"author":{"id":"MDQ6VXNlcjU2NTI3MTY=","is_bot":false,"login":"RossRichardson","name":"Ross Richardson"},"headRefOid":"a98219aa708e1bd2ae4ca90e720e66569f7f0147","number":954,"title":"Scoped negative result: classify E8's first decoder rank drop (no new kappa)","updatedAt":"2026-10-13T14:29:38Z","url":"https://github.com/CrocSwap/integer-mult-bounds/pull/954"},{"author":{"id":"MDQ6VXNlcjU2NTI3MTY=","is_bot":false,"login":"RossRichardson","name":"Ross Richardson"},"headRefOid":"5f052969846b0882ac4e22d9e818dd8ac05ea56f","number":953,"title":"Research construction: optimal dyadic-run BIT query batches (no new kappa)","updatedAt":"2026-10-13T14:28:46Z","url":"https://github.com/CrocSwap/integer-mult-bounds/pull/953"},{"author":{"id":"MDQ6VXNlcjI3MzA1OQ==","is_bot":false,"login":"bitplane","name":"Gareth Davidson"},"headRefOid":"11d24706f06e95271804c9438869546724c67aab","number":952,"title":"Finite bit construction: whole six-wire synthesis saves 38 further ADDs beyond PR936 (no new kappa)","updatedAt":"2026-10-13T14:30:05Z","url":"https://github.com/CrocSwap/integer-mult-bounds/pull/952"},{"author":{"id":"MDQ6VXNlcjQ0MDA1Mjc=","is_bot":false,"login":"chafreaky","name":"chafreaky"},"headRefOid":"de0c8641dcf1a4cd0abde9b897fa946de2bede49","number":951,"title":"Research: two additive cyclic inverse calls with no dirty connector (no new kappa)","updatedAt":"2026-10-13T14:25:45Z","url":"https://github.com/CrocSwap/integer-mult-bounds/pull/951"},{"author":{"id":"MDQ6VXNlcjU2NTI3MTY=","is_bot":false,"login":"RossRichardson","name":"Ross Richardson"},"headRefOid":"5bafe2c91e045d10de207b9e5b21630dfebb9cd2","number":950,"title":"Tooling: 1.61x faster exact historical central-factor audit (no new kappa)","updatedAt":"2026-10-13T14:24:06Z","url":"https://github.com/CrocSwap/integer-mult-bounds/pull/950"},{"author":{"id":"MDQ6VXNlcjU2NTI3MTY=","is_bot":false,"login":"RossRichardson","name":"Ross Richardson"},"headRefOid":"102ddfb47d11c8ad66121350907d4a2cc04cea8c","number":949,"title":"Scoped negative result: exact 73-primitive factory scale optimum (no new kappa)","updatedAt":"2026-10-13T14:21:00Z","url":"https://github.com/CrocSwap/integer-mult-bounds/pull/949"},{"author":{"id":"MDQ6VXNlcjU2NTI3MTY=","is_bot":false,"login":"RossRichardson","name":"Ross Richardson"},"headRefOid":"eb11543094825c193c4bccece4857601fcd1620a","number":948,"title":"Independent verification: symbolic PR479 chirp state transitions (no new kappa)","updatedAt":"2026-10-13T14:15:54Z","url":"https://github.com/CrocSwap/integer-mult-bounds/pull/948"},{"author":{"id":"MDQ6VXNlcjU2NTI3MTY=","is_bot":false,"login":"RossRichardson","name":"Ross Richardson"},"headRefOid":"b6f6418bdcae748b267cea72a5949d551feb7bb2","number":947,"title":"Scoped negative result: exact constant-row center shear optimum (no new kappa)","updatedAt":"2026-10-13T14:16:22Z","url":"https://github.com/CrocSwap/integer-mult-bounds/pull/947"},{"author":{"id":"MDQ6VXNlcjUwMzY2Njc2","is_bot":false,"login":"navinor","name":"Aaron Wang"},"headRefOid":"b6e22dbf548d72f18b722ccb6c2ea8e3d9df6ac1","number":946,"title":"Tooling: cross-platform byte/codec reproducibility of the make verify surface (no new kappa)","updatedAt":"2026-10-13T13:59:08Z","url":"https://github.com/CrocSwap/integer-mult-bounds/pull/946"},{"author":{"id":"MDQ6VXNlcjU2NTI3MTY=","is_bot":false,"login":"RossRichardson","name":"Ross Richardson"},"headRefOid":"a3245bf22fa2a2eb778b11128cbc605b130d737f","number":945,"title":"Finite construction: joint Horner saves 13,072 PR799 backward primitives (no new kappa)","updatedAt":"2026-10-13T13:54:59Z","url":"https://github.com/CrocSwap/integer-mult-bounds/pull/945"},{"author":{"id":"MDQ6VXNlcjU2NTI3MTY=","is_bot":false,"login":"RossRichardson","name":"Ross Richardson"},"headRefOid":"5dbcfbc63f646de5a1354f6b9760ec03837233f0","number":944,"title":"Research: classify signed 3x3 connector obstructions and a 14-query repair (no new kappa)","updatedAt":"2026-10-13T13:55:19Z","url":"https://github.com/CrocSwap/integer-mult-bounds/pull/944"},{"author":{"id":"MDQ6VXNlcjU2NTI3MTY=","is_bot":false,"login":"RossRichardson","name":"Ross Richardson"},"headRefOid":"cf360b4b09b7d0419decdd6ac85421fefed55bdd","number":943,"title":"Research: sharp four/five-source dirty-connector boundary (no new kappa)","updatedAt":"2026-10-13T13:51:34Z","url":"https://github.com/CrocSwap/integer-mult-bounds/pull/943"},{"author":{"id":"MDQ6VXNlcjEyMTkwNTAw","is_bot":false,"login":"jon314159","name":"Jonathan Capalbo"},"headRefOid":"1960cfa919a0945d0ca4cb14ea96237000037903","number":942,"title":"Conditional κ = 0.001661960547713947: T37 whole-owner packing and all-T bound","updatedAt":"2026-10-13T13:52:33Z","url":"https://github.com/CrocSwap/integer-mult-bounds/pull/942"},{"author":{"id":"MDQ6VXNlcjI3MzA1OQ==","is_bot":false,"login":"bitplane","name":"Gareth Davidson"},"headRefOid":"8af78333709a2eafd84463a7dc91467be5618b49","number":941,"title":"Finite bit construction: certify R439 matching floor and save 31 further ADDs","updatedAt":"2026-10-13T13:54:16Z","url":"https://github.com/CrocSwap/integer-mult-bounds/pull/941"},{"author":{"id":"MDQ6VXNlcjU2NTI3MTY=","is_bot":false,"login":"RossRichardson","name":"Ross Richardson"},"headRefOid":"fccac36fa9bcc063c4fda733299a22349ce10e56","number":940,"title":"Research audit: exact scope of retained Fourier layout cancellation (no new kappa)","updatedAt":"2026-10-13T13:46:28Z","url":"https://github.com/CrocSwap/integer-mult-bounds/pull/940"},{"author":{"id":"MDQ6VXNlcjU2NTI3MTY=","is_bot":false,"login":"RossRichardson","name":"Ross Richardson"},"headRefOid":"3a8ec54d62fb8824c658dc7ed356f99423cac8cf","number":939,"title":"Scoped negative result: E8 star-copy ratio cannot improve through 55 punctures (no new kappa)","updatedAt":"2026-10-13T13:43:55Z","url":"https://github.com/CrocSwap/integer-mult-bounds/pull/939"},{"author":{"id":"MDQ6VXNlcjU2NTI3MTY=","is_bot":false,"login":"RossRichardson","name":"Ross Richardson"},"headRefOid":"df645942469e6a739ec94010a6068c398f4a6c86","number":938,"title":"Independent verification: complete minimum-word census for dirty fanout stars (no new kappa)","updatedAt":"2026-10-13T13:43:36Z","url":"https://github.com/CrocSwap/integer-mult-bounds/pull/938"},{"author":{"id":"MDQ6VXNlcjU2NTI3MTY=","is_bot":false,"login":"RossRichardson","name":"Ross Richardson"},"headRefOid":"b303fed6dfe2066dcd78c0d8ed74d2a3b153ba72","number":937,"title":"Finite complex construction: two center shears save 5,562 primitives per invocation (no new kappa)","updatedAt":"2026-10-13T13:41:13Z","url":"https://github.com/CrocSwap/integer-mult-bounds/pull/937"},{"author":{"id":"MDQ6VXNlcjU2NTI3MTY=","is_bot":false,"login":"RossRichardson","name":"Ross Richardson"},"headRefOid":"0679fb6e1e4c91f573ae07ab1d0ea273b13c74e3","number":936,"title":"Finite bit construction: five-wire prefixes save 340 further ADDs beyond PR904 (no new kappa)","updatedAt":"2026-10-13T13:40:34Z","url":"https://github.com/CrocSwap/integer-mult-bounds/pull/936"},{"author":{"id":"MDQ6VXNlcjU2NTI3MTY=","is_bot":false,"login":"RossRichardson","name":"Ross Richardson"},"headRefOid":"f3100aec6ce6a7b061987875d5e9a8b93801ac0b","number":934,"title":"Research: optimal 3x3 binary connector queries (no new kappa)","updatedAt":"2026-10-13T13:24:27Z","url":"https://github.com/CrocSwap/integer-mult-bounds/pull/934"},{"author":{"id":"MDQ6VXNlcjM4Mjk3MjY5","is_bot":false,"login":"ianlibanio","name":"Ian Libânio"},"headRefOid":"b9348c6907516e55dc07e135ad4d7a480d4f9840","number":933,"title":"Scoped negative result: no relocation or Steinberg rewrite with exact reframing raises PR589's bit c (no new kappa)","updatedAt":"2026-10-13T13:22:15Z","url":"https://github.com/CrocSwap/integer-mult-bounds/pull/933"},{"author":{"id":"MDQ6VXNlcjU2NTI3MTY=","is_bot":false,"login":"RossRichardson","name":"Ross Richardson"},"headRefOid":"4e2925b076050f8035b054f95416029a63af64fa","number":931,"title":"Scoped negative result: bounded butterfly search misses the PR681 factory cost","updatedAt":"2026-10-13T13:13:07Z","url":"https://github.com/CrocSwap/integer-mult-bounds/pull/931"},{"author":{"id":"MDQ6VXNlcjU2NTI3MTY=","is_bot":false,"login":"RossRichardson","name":"Ross Richardson"},"headRefOid":"222fb22c0ae2d13c25674cb8c18d168d8518cef5","number":930,"title":"Research consolidation: reconcile and replay PR210's parity/fusion update (no new kappa)","updatedAt":"2026-10-13T13:12:35Z","url":"https://github.com/CrocSwap/integer-mult-bounds/pull/930"},{"author":{"id":"MDQ6VXNlcjQ0MDA1Mjc=","is_bot":false,"login":"chafreaky","name":"chafreaky"},"headRefOid":"85a1d11adbbd7610d269cfeb3e477cf7d457f2eb","number":929,"title":"Research: four grouped cyclic inverse calls with one dirty connector (no new kappa)","updatedAt":"2026-10-13T13:10:41Z","url":"https://github.com/CrocSwap/integer-mult-bounds/pull/929"},{"author":{"id":"MDQ6VXNlcjExNjU5ODM5","is_bot":false,"login":"rohanarun","name":""},"headRefOid":"d2daf3e927a845419e6dcc525e6f47bc7ce6682e","number":928,"title":"Standardize agent research: auto-research.md, auto-research/ layout, and a mirror of research/","updatedAt":"2026-10-13T13:53:28Z","url":"https://github.com/CrocSwap/integer-mult-bounds/pull/928"},{"author":{"id":"MDQ6VXNlcjU2NTI3MTY=","is_bot":false,"login":"RossRichardson","name":"Ross Richardson"},"headRefOid":"419a92e2e3dd6b16e36694387c0e96ea900b5799","number":927,"title":"Research consolidation: exact historical J/kappa ranking census (no new kappa)","updatedAt":"2026-10-13T13:08:58Z","url":"https://github.com/CrocSwap/integer-mult-bounds/pull/927"},{"author":{"id":"MDQ6VXNlcjU2NTI3MTY=","is_bot":false,"login":"RossRichardson","name":"Ross Richardson"},"headRefOid":"eb85d40a1ba80c2f776481fbeed1bae8cf04cfde","number":925,"title":"Finite bit construction: R439 frame 267 reaches a 12-ADD positive-transfer minimum (no new kappa)","updatedAt":"2026-10-13T13:08:30Z","url":"https://github.com/CrocSwap/integer-mult-bounds/pull/925"},{"author":{"id":"MDQ6VXNlcjgwMjk5Njgz","is_bot":false,"login":"CubeJerry","name":""},"headRefOid":"d02d83332581f6a23616c1366c6b3901d42f4b06","number":924,"title":"Research: compose PR922 factory fusions with PR924 rescaling","updatedAt":"2026-10-13T13:29:56Z","url":"https://github.com/CrocSwap/integer-mult-bounds/pull/924"},{"author":{"id":"MDQ6VXNlcjU2NTI3MTY=","is_bot":false,"login":"RossRichardson","name":"Ross Richardson"},"headRefOid":"7287ea1524f37899d3d209dc4a9f8ba5c06766f5","number":923,"title":"Finite bit construction: R439 frame520 uses 29 ADDs, four fewer complete ADDs than PR844 (no new kappa)","updatedAt":"2026-10-13T13:00:37Z","url":"https://github.com/CrocSwap/integer-mult-bounds/pull/923"},{"author":{"id":"MDQ6VXNlcjgwMjk5Njgz","is_bot":false,"login":"CubeJerry","name":""},"headRefOid":"efd5643c0016b6c6dac26e9ed7dee8a75295ff2a","number":922,"title":"Research: fuse complex factory to 32 operations (no new kappa)","updatedAt":"2026-10-13T12:44:22Z","url":"https://github.com/CrocSwap/integer-mult-bounds/pull/922"},{"author":{"id":"U_kgDODHHRtQ","is_bot":false,"login":"ArnavSwiggy","name":""},"headRefOid":"913817423bbfaf241dec1d6b9edb1c7ded349508","number":920,"title":"Research note: certify shared parity decoder frame dimensions","updatedAt":"2026-10-13T12:36:21Z","url":"https://github.com/CrocSwap/integer-mult-bounds/pull/920"},{"author":{"id":"MDQ6VXNlcjU2NTI3MTY=","is_bot":false,"login":"RossRichardson","name":"Ross Richardson"},"headRefOid":"79ee104a90c3c7c244362cce74997fce37923ce9","number":919,"title":"Finite construction: CK helper-run sign normalization saves 224 primitives per orientation (no new kappa)","updatedAt":"2026-10-13T12:34:13Z","url":"https://github.com/CrocSwap/integer-mult-bounds/pull/919"},{"author":{"id":"MDQ6VXNlcjU2NTI3MTY=","is_bot":false,"login":"RossRichardson","name":"Ross Richardson"},"headRefOid":"df86cd10f78693061a0a545153d7d6f65dd62c4e","number":918,"title":"Research audit: exact carry-grade modulus admission for PR524 (no new kappa)","updatedAt":"2026-10-13T12:32:03Z","url":"https://github.com/CrocSwap/integer-mult-bounds/pull/918"},{"author":{"id":"MDQ6VXNlcjU2NTI3MTY=","is_bot":false,"login":"RossRichardson","name":"Ross Richardson"},"headRefOid":"085c32a25e2a09b029fa816195b97fa93d6f0788","number":917,"title":"Finite construction: two-sided CK compensation saves 8,798 beyond target forests (no new kappa)","updatedAt":"2026-10-13T12:23:50Z","url":"https://github.com/CrocSwap/integer-mult-bounds/pull/917"},{"author":{"id":"MDQ6VXNlcjU2NTI3MTY=","is_bot":false,"login":"RossRichardson","name":"Ross Richardson"},"headRefOid":"dba9199e8cbb0136bcba6b769c36753a61092190","number":914,"title":"Finite bit construction: R439 frame 524 saves 28 complete local ADDs (no new kappa)","updatedAt":"2026-10-13T12:19:57Z","url":"https://github.com/CrocSwap/integer-mult-bounds/pull/914"},{"author":{"id":"MDQ6VXNlcjgwMjk5Njgz","is_bot":false,"login":"CubeJerry","name":""},"headRefOid":"945b3da1f1dd87cebd456b3a0459601b15f7ea8b","number":912,"title":"Research/seed42 decoder","updatedAt":"2026-10-13T12:00:26Z","url":"https://github.com/CrocSwap/integer-mult-bounds/pull/912"},{"author":{"id":"MDQ6VXNlcjU2NTI3MTY=","is_bot":false,"login":"RossRichardson","name":"Ross Richardson"},"headRefOid":"7deb3ca8ee112249b5eec22acd24e214383078bd","number":908,"title":"Finite construction: R439 frame 519 saves 20 complete local ADDs (no new kappa)","updatedAt":"2026-10-13T11:52:48Z","url":"https://github.com/CrocSwap/integer-mult-bounds/pull/908"},{"author":{"id":"MDQ6VXNlcjgwMjk5Njgz","is_bot":false,"login":"CubeJerry","name":""},"headRefOid":"6ab467167d5ac5dc48e8aef938f87e7fed1121bd","number":907,"title":"Research/abelian metric scope seed99","updatedAt":"2026-10-13T11:51:08Z","url":"https://github.com/CrocSwap/integer-mult-bounds/pull/907"},{"author":{"id":"MDQ6VXNlcjgwMjk5Njgz","is_bot":false,"login":"CubeJerry","name":""},"headRefOid":"7b66a13f63b26e72a97ff11745adb8b45179f8c5","number":906,"title":"Research/r439 block522 seed17 112112","updatedAt":"2026-10-13T11:49:16Z","url":"https://github.com/CrocSwap/integer-mult-bounds/pull/906"},{"author":{"id":"MDQ6VXNlcjQ0MDA1Mjc=","is_bot":false,"login":"chafreaky","name":"chafreaky"},"headRefOid":"aab6c0b8f4574cb36285ab5dab3fcfad0cd2b69e","number":905,"title":"Research: cubic precision for cyclic inverses with arbitrary dirty arrays (no new kappa)","updatedAt":"2026-10-13T11:45:32Z","url":"https://github.com/CrocSwap/integer-mult-bounds/pull/905"},{"author":{"id":"MDQ6VXNlcjI3MzA1OQ==","is_bot":false,"login":"bitplane","name":"Gareth Davidson"},"headRefOid":"883a0bdf7792693e57c16be660824b57aacfbe05","number":904,"title":"Bit supplier: save 254 R439 ADDs with four-wire prefix resynthesis (no new kappa)","updatedAt":"2026-10-13T11:38:28Z","url":"https://github.com/CrocSwap/integer-mult-bounds/pull/904"},{"author":{"id":"U_kgDOEVgljA","is_bot":false,"login":"bg-grillo-alan","name":"Alan Grillo"},"headRefOid":"e17fd726b23ff009518c2fc7fa0c423e3c25a46d","number":902,"title":"Research audit: tighter Gaussian correction-power endpoint bound (no new kappa)","updatedAt":"2026-10-13T11:24:29Z","url":"https://github.com/CrocSwap/integer-mult-bounds/pull/902"},{"author":{"id":"MDQ6VXNlcjI3NTY4NjE3","is_bot":false,"login":"ToikY","name":""},"headRefOid":"6e004d863bffd2d91b4168b78deb4e7b6fa1fe5e","number":900,"title":"Tooling: exact spectator orbits accelerate historical sparse-fusion verification","updatedAt":"2026-10-13T11:12:12Z","url":"https://github.com/CrocSwap/integer-mult-bounds/pull/900"},{"author":{"id":"U_kgDOClpS9w","is_bot":false,"login":"DreamingOfClouds","name":""},"headRefOid":"75e7699a691f321861ab8fe303f8bd8e6a6fc393","number":899,"title":"Helper minimality (no κ claim): the shipped helper layers of #656 / #799 are minimal for their op multiset","updatedAt":"2026-10-13T11:38:59Z","url":"https://github.com/CrocSwap/integer-mult-bounds/pull/899"},{"author":{"id":"MDQ6VXNlcjgwMjk5Njgz","is_bot":false,"login":"CubeJerry","name":""},"headRefOid":"521c86e7fd4d0fbd1ed4e0524aa26a1e45861477","number":898,"title":"Tooling: accelerate historical Leech minors with exact byte lanes","updatedAt":"2026-10-13T11:03:21Z","url":"https://github.com/CrocSwap/integer-mult-bounds/pull/898"},{"author":{"id":"MDQ6VXNlcjg4MjYxNTE2","is_bot":false,"login":"DaysSky","name":""},"headRefOid":"12c4789c61ac843dcd00e2c71e5388d362298b1a","number":897,"title":"No new κ: covers of E7 by hyperplane flats are exactly the D4-frame triples; near-covers are the A3s (checked)","updatedAt":"2026-10-13T10:57:24Z","url":"https://github.com/CrocSwap/integer-mult-bounds/pull/897"},{"author":{"id":"MDQ6VXNlcjI3MzA1OQ==","is_bot":false,"login":"bitplane","name":"Gareth Davidson"},"headRefOid":"4e34d42b64ff05a4f293b9748d71642e14ef273d","number":896,"title":"[Lean] Prove nonlinear dirty-commutator restoration and ordered products (no new kappa)","updatedAt":"2026-10-13T10:57:09Z","url":"https://github.com/CrocSwap/integer-mult-bounds/pull/896"},{"author":{"id":"MDQ6VXNlcjg4MjYxNTE2","is_bot":false,"login":"DaysSky","name":""},"headRefOid":"3bf6fccaf17521ffdb9b3bec2740ba4886478556","number":895,"title":"No new κ: BW16 as a unit — window c ≥ 72 puts its ceiling at 0.649× E8's (checked)","updatedAt":"2026-10-13T10:52:37Z","url":"https://github.com/CrocSwap/integer-mult-bounds/pull/895"},{"author":{"id":"U_kgDOC9Kb_w","is_bot":false,"login":"WeberChen8128","name":"Weber_Chen"},"headRefOid":"5d8c2e96e0624efbadb182d9ee0a09ee65b70b48","number":893,"title":"Independently audit PR236 source commands and recorded axiom evidence","updatedAt":"2026-10-13T10:37:22Z","url":"https://github.com/CrocSwap/integer-mult-bounds/pull/893"},{"author":{"id":"U_kgDOETsF7g","is_bot":false,"login":"nightangelflowerwin-ops","name":"Stephen Shore"},"headRefOid":"9778ba2d891468996b81eb50c389bb4169df0025","number":892,"title":"Research: rank-eight coded-helper endpoint and complete mixed-cost obstruction (no new kappa)","updatedAt":"2026-10-13T10:35:52Z","url":"https://github.com/CrocSwap/integer-mult-bounds/pull/892"},{"author":{"id":"MDQ6VXNlcjgwMjk5Njgz","is_bot":false,"login":"CubeJerry","name":""},"headRefOid":"e2021d1c9e06948528cbc0a8fd7079b671da981d","number":889,"title":"Research: batch common-factor product shears with dirty restoration","updatedAt":"2026-10-13T10:25:49Z","url":"https://github.com/CrocSwap/integer-mult-bounds/pull/889"},{"author":{"id":"MDQ6VXNlcjI3NTY4NjE3","is_bot":false,"login":"ToikY","name":""},"headRefOid":"8c9964b7ab4419409d20762c8d78591701008d04","number":888,"title":"Research: Gaussian nonlinear message copy floor 40b under explicit width pricing","updatedAt":"2026-10-13T10:21:37Z","url":"https://github.com/CrocSwap/integer-mult-bounds/pull/888"},{"author":{"id":"MDQ6VXNlcjI3MzA1OQ==","is_bot":false,"login":"bitplane","name":"Gareth Davidson"},"headRefOid":"5b14b7a0a7443421cfc719ccec1ac909ddf34c3e","number":887,"title":"[Lean] Prove reserved-scratch echo bounds and equality family (no new kappa)","updatedAt":"2026-10-13T10:15:20Z","url":"https://github.com/CrocSwap/integer-mult-bounds/pull/887"},{"author":{"id":"MDQ6VXNlcjM3MjIyMDA=","is_bot":false,"login":"jamesyc","name":"James Chang"},"headRefOid":"0181d0f2e00278535f435968f000d7e2ec4b93aa","number":885,"title":"[Lean] Prove the selected PR799 native Real moment bound","updatedAt":"2026-10-13T10:01:44Z","url":"https://github.com/CrocSwap/integer-mult-bounds/pull/885"},{"author":{"id":"MDQ6VXNlcjY5MTA4NTc1","is_bot":false,"login":"Deftsalt-debug","name":"Deftsalt"},"headRefOid":"554532392ae15ef3c2e90050df3a90a4d0ac573e","number":880,"title":"Research/r439 block1 schedule seed8","updatedAt":"2026-10-13T09:31:31Z","url":"https://github.com/CrocSwap/integer-mult-bounds/pull/880"},{"author":{"id":"MDQ6VXNlcjM3MjIyMDA=","is_bot":false,"login":"jamesyc","name":"James Chang"},"headRefOid":"7b3241566ddfd50548e6b113ede9333826b86313","number":878,"title":"[Lean] Verify selected PR589 B boundaries and XOR interfaces","updatedAt":"2026-10-13T09:25:59Z","url":"https://github.com/CrocSwap/integer-mult-bounds/pull/878"},{"author":{"id":"MDQ6VXNlcjI3MzA1OQ==","is_bot":false,"login":"bitplane","name":"Gareth Davidson"},"headRefOid":"80a60c0da2b916798167deb0ce3a5ef22fda147a","number":877,"title":"Research audit: quartic precision for balanced dirty cyclic inverses (no new kappa)","updatedAt":"2026-10-13T09:20:29Z","url":"https://github.com/CrocSwap/integer-mult-bounds/pull/877"},{"author":{"id":"MDQ6VXNlcjUwMzY2Njc2","is_bot":false,"login":"navinor","name":"Aaron Wang"},"headRefOid":"0d8d4be2b8093e809c4c422849c486532f6ee1c1","number":876,"title":"Scoped negative result: simultaneous full pair/triple exchanges do not beat SW4 (seed 29)","updatedAt":"2026-10-13T09:11:25Z","url":"https://github.com/CrocSwap/integer-mult-bounds/pull/876"},{"author":{"id":"MDQ6VXNlcjgyODk5MzMx","is_bot":false,"login":"mightyOil","name":""},"headRefOid":"7f334e4c749fd83d03feb6c1de4e4cda9534c9dc","number":875,"title":"Scoped negative result: classify the E8 rank-five boundary at 36 punctures","updatedAt":"2026-10-13T09:00:22Z","url":"https://github.com/CrocSwap/integer-mult-bounds/pull/875"},{"author":{"id":"MDQ6VXNlcjUwMzY2Njc2","is_bot":false,"login":"navinor","name":"Aaron Wang"},"headRefOid":"117c48527dd4f066dad103121761154cf1bb39cd","number":873,"title":"Research construction: shorten R439 phase-B block 508 from 37 to 30 ADDs (no new kappa)","updatedAt":"2026-10-13T08:48:08Z","url":"https://github.com/CrocSwap/integer-mult-bounds/pull/873"},{"author":{"id":"MDQ6VXNlcjM3MjIyMDA=","is_bot":false,"login":"jamesyc","name":"James Chang"},"headRefOid":"5bbf44624fc3902dc7c53a2f06df90ee73928532","number":872,"title":"[Lean] Packed Clifford representation bridge and a source-bound CK child","updatedAt":"2026-10-13T08:47:25Z","url":"https://github.com/CrocSwap/integer-mult-bounds/pull/872"},{"author":{"id":"U_kgDOFF-BGQ","is_bot":false,"login":"martinxxx9","name":""},"headRefOid":"1c72f642db2882b6afe8a69ebfc1a215c93f287e","number":871,"title":"Tooling: exact modular rank fast path for historical joint-frame verification","updatedAt":"2026-10-13T08:46:05Z","url":"https://github.com/CrocSwap/integer-mult-bounds/pull/871"},{"author":{"id":"U_kgDOFF-7zg","is_bot":false,"login":"WilliamLawyer","name":"William Lawyer"},"headRefOid":"54cbbea75b587bdf43a1c123e52220f936641d6f","number":868,"title":"Research: Gaussian E8 all-clique certificate ceiling is 40 (no new kappa)","updatedAt":"2026-10-13T08:43:03Z","url":"https://github.com/CrocSwap/integer-mult-bounds/pull/868"},{"author":{"id":"MDQ6VXNlcjI1NzY3NzI2","is_bot":false,"login":"Curtis-D","name":"Curtis D"},"headRefOid":"6c0ed3975fda8f0190b34f1b1bbedb33a925d339","number":863,"title":"Research construction: a tied contraction saves 1,221 historical complex roles (no new kappa)","updatedAt":"2026-10-13T08:16:53Z","url":"https://github.com/CrocSwap/integer-mult-bounds/pull/863"},{"author":{"id":"MDQ6VXNlcjQ0MDA1Mjc=","is_bot":false,"login":"chafreaky","name":"chafreaky"},"headRefOid":"57e0659150d323b784580110b36aa64a2dca2a33","number":862,"title":"Research: cubic precision and exact coarse-grid recovery for cyclic inverses (no κ)","updatedAt":"2026-10-13T08:13:00Z","url":"https://github.com/CrocSwap/integer-mult-bounds/pull/862"},{"author":{"id":"MDQ6VXNlcjI4NDQ0Nzcx","is_bot":false,"login":"Kairos-Ess","name":"Kairos"},"headRefOid":"7113da8d458f5c73fe70b1bd5371ea1e44bc75d4","number":861,"title":"Research audit: sharp physical counter costs with direction reversals (no new kappa)","updatedAt":"2026-10-13T08:11:09Z","url":"https://github.com/CrocSwap/integer-mult-bounds/pull/861"},{"author":{"id":"U_kgDOBlXDXA","is_bot":false,"login":"amazedbot","name":"Amazed"},"headRefOid":"72899c888af7e171f8aba4d5c66f4b31a5719eba","number":860,"title":"Research construction: signed CK reuse saves 926 primitives","updatedAt":"2026-10-13T09:18:43Z","url":"https://github.com/CrocSwap/integer-mult-bounds/pull/860"},{"author":{"id":"U_kgDOColf5A","is_bot":false,"login":"zeusinsight","name":""},"headRefOid":"530c72042438f723782c834101427591f465dd0d","number":857,"title":"Research construction: R439 block 8 saves ten ADDs within the existing payload cap (no new kappa)","updatedAt":"2026-10-13T07:58:04Z","url":"https://github.com/CrocSwap/integer-mult-bounds/pull/857"},{"author":{"id":"U_kgDOCJf6TQ","is_bot":false,"login":"chinmayarvind23","name":"Chinmay Arvind"},"headRefOid":"4e31c0d816432435de2ca3965d33efb3ea6602a4","number":856,"title":"Lean: prove the R420 Fin661 COPY/scatter lifecycle","updatedAt":"2026-10-13T07:45:51Z","url":"https://github.com/CrocSwap/integer-mult-bounds/pull/856"},{"author":{"id":"MDQ6VXNlcjI4ODYzNTA=","is_bot":false,"login":"NeoKazuya","name":"Kazuya H"},"headRefOid":"4e0e0e0159b6c845e8b1110bec6c5b81150da79d","number":855,"title":"Negative result: exact packing obstruction for two coded-helper embeddings","updatedAt":"2026-10-13T07:45:42Z","url":"https://github.com/CrocSwap/integer-mult-bounds/pull/855"},{"author":{"id":"U_kgDOCJf6TQ","is_bot":false,"login":"chinmayarvind23","name":"Chinmay Arvind"},"headRefOid":"4e53da28f56c46ecf48614b54f165453f3b48a87","number":854,"title":"Research audit: kernel102 packing ceiling holds without fallback charges","updatedAt":"2026-10-13T07:40:52Z","url":"https://github.com/CrocSwap/integer-mult-bounds/pull/854"},{"author":{"id":"U_kgDOFF-7zg","is_bot":false,"login":"WilliamLawyer","name":"William Lawyer"},"headRefOid":"aa26b2ad761aa3bac76670e4749f53d2dafb3fea","number":852,"title":"Research audit: sharp linear inverse bounds for balanced weighted cycles (no new kappa)","updatedAt":"2026-10-13T07:38:58Z","url":"https://github.com/CrocSwap/integer-mult-bounds/pull/852"},{"author":{"id":"MDQ6VXNlcjI1MjkxMDAz","is_bot":false,"login":"cbethin","name":"Charles Bethin"},"headRefOid":"3f13663132838ba2e8e36876ba0f280c809c70e5","number":850,"title":"Research: uniform owner-profile optimum through saving exponent 1/3","updatedAt":"2026-10-13T07:32:48Z","url":"https://github.com/CrocSwap/integer-mult-bounds/pull/850"},{"author":{"id":"MDQ6VXNlcjUwMzY2Njc2","is_bot":false,"login":"navinor","name":"Aaron Wang"},"headRefOid":"510441077c17ad775003b22fca03a519f5330453","number":848,"title":"Scoped negative result: restored sharing cannot reach the selected R439 copy path (no new kappa)","updatedAt":"2026-10-13T07:30:52Z","url":"https://github.com/CrocSwap/integer-mult-bounds/pull/848"},{"author":{"id":"MDQ6VXNlcjk4Mzc5MDc=","is_bot":false,"login":"Rohansguliani","name":"Rohan Guliani"},"headRefOid":"4bdb3e755ea7118170a7a34764df955880dec282","number":846,"title":"Research: pay for preparation, execution, restoration and tape for #621's cyclic inverse at every stride (no κ claim)","updatedAt":"2026-10-13T07:23:23Z","url":"https://github.com/CrocSwap/integer-mult-bounds/pull/846"},{"author":{"id":"U_kgDOBmEn_g","is_bot":false,"login":"mihir-s-05","name":""},"headRefOid":"125ce25bdae421627b56077adc14940c2d0aa52f","number":845,"title":"Scoped negative result: one added P112 total cannot reduce fixed-reader copy cost","updatedAt":"2026-10-13T07:26:19Z","url":"https://github.com/CrocSwap/integer-mult-bounds/pull/845"},{"author":{"id":"MDQ6VXNlcjYzMDY5MzM4","is_bot":false,"login":"anudeepadi","name":"Anudeep Adiraju"},"headRefOid":"c99f4478156906c323b1a041f0443f76139d6b6c","number":843,"title":"Research construction: reuse R439 source sum for 2,880 fewer hosted instructions (no new kappa)","updatedAt":"2026-10-13T07:18:36Z","url":"https://github.com/CrocSwap/integer-mult-bounds/pull/843"},{"author":{"id":"MDQ6VXNlcjM3MjIyMDA=","is_bot":false,"login":"jamesyc","name":"James Chang"},"headRefOid":"deb26103657d3190e3a655c5f6a332982fdecfc3","number":842,"title":"[Lean] Verify pinned PR596 native moment, bootstrap and outer closure","updatedAt":"2026-10-13T07:11:47Z","url":"https://github.com/CrocSwap/integer-mult-bounds/pull/842"},{"author":{"id":"MDQ6VXNlcjU5MTcxNDAz","is_bot":false,"login":"VictorLiwentao","name":"Victor Li"},"headRefOid":"da2cd0dd2229e08b61b174a8835a2c2bb99d2230","number":840,"title":"Research: fuse native BIT dyadic shear pairs with three children (no new kappa)","updatedAt":"2026-10-13T07:09:16Z","url":"https://github.com/CrocSwap/integer-mult-bounds/pull/840"},{"author":{"id":"U_kgDOBhtdKA","is_bot":false,"login":"faw01","name":"faw"},"headRefOid":"6e9c76b2b9e31350a10ceb5b98e94df1438e3a1f","number":839,"title":"Research construction: remove known-zero JP8 clears (9,228 primitives per orientation; no new kappa)","updatedAt":"2026-10-13T06:56:21Z","url":"https://github.com/CrocSwap/integer-mult-bounds/pull/839"},{"author":{"id":"MDQ6VXNlcjUwMDk2NjQ=","is_bot":false,"login":"jeremydiviney","name":""},"headRefOid":"7ae9124f59694bb1e5acf2ae99c65e63c115b2f4","number":836,"title":"Research: signed rank transport excludes unitary register mixers (no new kappa)","updatedAt":"2026-10-13T06:52:56Z","url":"https://github.com/CrocSwap/integer-mult-bounds/pull/836"},{"author":{"id":"MDQ6VXNlcjE4NTU3NTI=","is_bot":false,"login":"Ryan-Haines","name":"Ryan Haines"},"headRefOid":"333fc042b87da01c8dbac46e9fbe549933242d5c","number":835,"title":"Independent verification: exact bounded modular replay of #741 backward endpoint","updatedAt":"2026-10-13T06:53:08Z","url":"https://github.com/CrocSwap/integer-mult-bounds/pull/835"},{"author":{"id":"U_kgDOCJf6TQ","is_bot":false,"login":"chinmayarvind23","name":"Chinmay Arvind"},"headRefOid":"8fdd194f0bfab7705c523a8de20af15778c456d2","number":834,"title":"Independent verification: check R420 Lean source expressions","updatedAt":"2026-10-13T06:50:40Z","url":"https://github.com/CrocSwap/integer-mult-bounds/pull/834"},{"author":{"id":"MDQ6VXNlcjYzMDY5MzM4","is_bot":false,"login":"anudeepadi","name":"Anudeep Adiraju"},"headRefOid":"fb82f10732f051541f9a9a734fd6e2b13fe49aa1","number":833,"title":"Tooling: prune signed-sparse coefficient enumeration with exact stream equivalence","updatedAt":"2026-10-13T06:40:54Z","url":"https://github.com/CrocSwap/integer-mult-bounds/pull/833"},{"author":{"id":"MDQ6VXNlcjcxNTM5NTE0","is_bot":false,"login":"ThiagoCAltoe","name":"Thiago Costa"},"headRefOid":"d42f42714018064078263aa77b4b4b4b2af874f8","number":832,"title":"Research audit: Sobolev refinement of PR621's cyclic inverse bound (no new kappa)","updatedAt":"2026-10-13T06:38:31Z","url":"https://github.com/CrocSwap/integer-mult-bounds/pull/832"},{"author":{"id":"MDQ6VXNlcjE3NjA0MDAy","is_bot":false,"login":"Maximooch","name":"Maximus"},"headRefOid":"66c3bc5c2eb5a2c066b1119310b29d26350e1dde","number":831,"title":"Research audit: F4 alternating trace is not by itself a phase-compilation obstruction (no new kappa)","updatedAt":"2026-10-13T06:36:17Z","url":"https://github.com/CrocSwap/integer-mult-bounds/pull/831"},{"author":{"id":"MDQ6VXNlcjE4NTU3NTI=","is_bot":false,"login":"Ryan-Haines","name":"Ryan Haines"},"headRefOid":"6a0b8d55bb8026f8b6d708ae07740453b41c872f","number":830,"title":"Research: transposed JP8 work saves 32,810 backward primitives (no new kappa)","updatedAt":"2026-10-13T06:36:07Z","url":"https://github.com/CrocSwap/integer-mult-bounds/pull/830"},{"author":{"id":"U_kgDOBmEn_g","is_bot":false,"login":"mihir-s-05","name":""},"headRefOid":"2e43537c0e8ed1c9f9ef21cab0ef9cddb5d79976","number":828,"title":"Research consolidation: reconcile PR279 target-prefix sources and replay","updatedAt":"2026-10-13T06:34:17Z","url":"https://github.com/CrocSwap/integer-mult-bounds/pull/828"},{"author":{"id":"MDQ6VXNlcjI1MjkxMDAz","is_bot":false,"login":"cbethin","name":"Charles Bethin"},"headRefOid":"67aaf484d017a2ef458ae33144b0ed0753d90d30","number":827,"title":"Research: full-frame cleanup bounds for R420 and R439","updatedAt":"2026-10-13T06:34:15Z","url":"https://github.com/CrocSwap/integer-mult-bounds/pull/827"},{"author":{"id":"MDQ6VXNlcjk4Mzc5MDc=","is_bot":false,"login":"Rohansguliani","name":"Rohan Guliani"},"headRefOid":"ea3ceae40d5fa19dc0361d3f15546df0182459c4","number":826,"title":"Independent audit: confirm κ of #699 (0.001660666354374641) and #685 (0.001660339298410333)","updatedAt":"2026-10-13T06:33:19Z","url":"https://github.com/CrocSwap/integer-mult-bounds/pull/826"},{"author":{"id":"MDQ6VXNlcjUwMzY2Njc2","is_bot":false,"login":"navinor","name":"Aaron Wang"},"headRefOid":"421db1ca2eb26056e82797f94b8c4eecd0120620","number":825,"title":"Research theorem: common-flag rational-frame obstruction (no new kappa)","updatedAt":"2026-10-13T06:33:06Z","url":"https://github.com/CrocSwap/integer-mult-bounds/pull/825"},{"author":{"id":"MDQ6VXNlcjUwMzY2Njc2","is_bot":false,"login":"navinor","name":"Aaron Wang"},"headRefOid":"2b342526350a3c36936feb7f3f50669fad2770b1","number":824,"title":"Tooling: 1.13x faster exact stage-pair audit with identical receipts","updatedAt":"2026-10-13T06:30:08Z","url":"https://github.com/CrocSwap/integer-mult-bounds/pull/824"},{"author":{"id":"U_kgDOCzwq_A","is_bot":false,"login":"FanPUYen","name":"Hao Yan"},"headRefOid":"83d547e30fed98682ffc6eacbeeaafa96cfb42fb","number":823,"title":"Research construction: shorten historical R480 quad 1 by 12 XORs (no new kappa)","updatedAt":"2026-10-13T06:27:43Z","url":"https://github.com/CrocSwap/integer-mult-bounds/pull/823"}] diff --git a/research/complex-t37-validation/INDEPENDENT-PRICE.json b/research/complex-t37-validation/INDEPENDENT-PRICE.json new file mode 100644 index 0000000000..6aedd44001 --- /dev/null +++ b/research/complex-t37-validation/INDEPENDENT-PRICE.json @@ -0,0 +1,214 @@ +{ + "status": "PASS_T37_TWO_EXACT_ENGINES_AND_OUTER47", + "prices": { + "native": { + "root": { + "lower": "0.001664727258740678855772", + "upper": "0.001664727258740678855773", + "lower_endpoint_residual_upper": "-3.361953297269796016929643042392649475381596968295346973144171030797088E-25", + "upper_endpoint_residual_lower": "2.611608826401355848745749017547802573568527869533356882224642057915356E-24", + "strict_rational_signs": true, + "moment_minus_one_at_current_k_required_rate": [ + "-0.002852717461692668764314354734852847116464281381966047341139124131519688", + "-0.002852717461692668764314354734852847116464281381966047341139124131445504" + ], + "nominal_k_ceiling_interval": [ + "0.001661960547713947858148929785852025411063941953872882525317549607429953", + "0.001661960547713947858149926464693042845325871210245357474035699849107630" + ] + }, + "moments": [ + { + "endpoint": "416181814685169713943/250000000000000000000000", + "accept": true, + "mercator_residual": [ + "-9063808159184494128077302191980009913017957/26959946667150639794667015087019630673637144422540572481103610249216", + "-9063808159184494128077302191980009913017955/26959946667150639794667015087019630673637144422540572481103610249216" + ], + "base_two_residual": [ + "-84049/250000000000000000000000000000", + "-67239/200000000000000000000000000000" + ] + }, + { + "endpoint": "1664727258740678855773/1000000000000000000000000", + "accept": false, + "mercator_residual": [ + "35204417337620213718016788425517747602870017/13479973333575319897333507543509815336818572211270286240551805124608", + "17602208668810106859008394212758873801435009/6739986666787659948666753771754907668409286105635143120275902562304" + ], + "base_two_residual": [ + "326451/125000000000000000000000000000", + "2611609/1000000000000000000000000000000" + ] + } + ], + "outer": { + "complex_b": "416181814685169713943/250000000000000000000000", + "bit_c": "1733427039589844234749/1000000000000000000000000", + "kappa": "1661960547713947/1000000000000000000", + "kappa_decimal": "0.001661960547713947", + "binding": "complex", + "strict_constraints_passed": 47, + "controls_rejected": [ + "next_grid", + "zero_eta", + "zero_beta", + "unit_beta" + ] + } + }, + "conservative": { + "root": { + "lower": "0.001664727255848707292019", + "upper": "0.00166472725584870729202", + "lower_endpoint_residual_upper": "-1.533498738363238402858786854810390463450431040588295110718395250358190E-24", + "upper_endpoint_residual_lower": "1.414305417770463160950838084809279290079732234157220150445706240851796E-24", + "strict_rational_signs": true, + "moment_minus_one_at_current_k_required_rate": [ + "-0.002852717453203088369042152533506282985681422695013101764079912082403282", + "-0.002852717453203088369042152533506282985681422695013101764079912082329098" + ], + "nominal_k_ceiling_interval": [ + "0.001661960544831580991723890876473372480673338156823671584443397159686570", + "0.001661960544831580991724887555314395670088240239509417541102031132063998" + ] + }, + "moments": [ + { + "endpoint": "1664727255848707292019/1000000000000000000000000", + "accept": true, + "mercator_residual": [ + "-41343044200415700149548318862602185269107957/26959946667150639794667015087019630673637144422540572481103610249216", + "-41343044200415700149548318862602185269107955/26959946667150639794667015087019630673637144422540572481103610249216" + ], + "base_two_residual": [ + "-7667494309095910091507/5000000000000000000000000000000000000000000000", + "-15334978618191820182871/10000000000000000000000000000000000000000000000" + ] + }, + { + "endpoint": "83236362792435364601/50000000000000000000000", + "accept": false, + "mercator_residual": [ + "38129598634153891544852221336567316219891643/26959946667150639794667015087019630673637144422540572481103610249216", + "38129598634153891544852221336567316219891645/26959946667150639794667015087019630673637144422540572481103610249216" + ], + "base_two_residual": [ + "1767881422771742502099/1250000000000000000000000000000000000000000000", + "2828612276434788003387/2000000000000000000000000000000000000000000000" + ] + } + ], + "outer": { + "complex_b": "1664727255848707292019/1000000000000000000000000", + "bit_c": "1733427039589844234749/1000000000000000000000000", + "kappa": "83098027241579/50000000000000000", + "kappa_decimal": "0.00166196054483158", + "binding": "complex", + "strict_constraints_passed": 47, + "controls_rejected": [ + "next_grid", + "zero_eta", + "zero_beta", + "unit_beta" + ] + } + } + }, + "bit_checks": [ + { + "endpoint": "1733427039589844234749/1000000000000000000000000", + "accept": true, + "mercator_residual": [ + "-43100600330766044577088869872467188970742291/26959946667150639794667015087019630673637144422540572481103610249216", + "-43100600330766044577088869872467188970742289/26959946667150639794667015087019630673637144422540572481103610249216" + ], + "base_two_residual": [ + "-799345163337715793503/500000000000000000000000000000000000000000000", + "-3197378653350863173989/2000000000000000000000000000000000000000000000" + ] + }, + { + "endpoint": "6933708158359376939/4000000000000000000000", + "accept": false, + "mercator_residual": [ + "22502934905675809315035333485365686073718547/13479973333575319897333507543509815336818572211270286240551805124608", + "5625733726418952328758833371341421518429637/3369993333393829974333376885877453834204643052817571560137951281152" + ], + "base_two_residual": [ + "8346798366759439729359/5000000000000000000000000000000000000000000000", + "16693606733518879458833/10000000000000000000000000000000000000000000000" + ] + } + ], + "profile_sha256": "8a5422d82ea7f3168bb8bbee28b55d734844f938bc38c6d600e87fe01c803a11", + "gain_over_pr890": "1386533459/500000000000000000", + "normalized_profile_comparison": { + "t37_multiplier": 21, + "t21_multiplier": 37, + "rank_count_difference": { + "1": 15, + "3": -37, + "48": 2 + }, + "zero_padded_majorization_gaps": [ + 45, + 90, + 88, + 86, + 84, + 82, + 80, + 78, + 76, + 74, + 72, + 70, + 68, + 66, + 64, + 62, + 60, + 57, + 54, + 51, + 48, + 45, + 42, + 39, + 36, + 33, + 30, + 27, + 24, + 21, + 18, + 15, + 12, + 9, + 6, + 3, + 0 + ], + "pr890_idle_profile": { + "48": 6292, + "1": 3, + "3": 1 + }, + "canceled_local_calls": 6993, + "fewer_children": 20, + "consequence": "For every 0 **Independent, concurrent; same κ as #942 (jon314159), posted 20 min earlier.** This construction was developed independently and reaches the identical κ, idle profile `{48:11086,1:6}` and 1024-bit charged-prefix premise; credit for first publication goes to jon314159 (#942). It is offered as an independent cross-check, not a new record.\n\nRaises the conditional exponent from PR890's **0.001661957774647029** to **0.001661960547713947** (+2.773066918e-9). The U8 local word, its widths, the PR589 bit supplier, both moment engines and the 47-inequality outer recipe are unchanged.\n\n**Idea.** κ depends only on the global paid rank profile, through the complex moment root b. Here the bit side does not bind, and finite invoice counts enter only as strict admission inequalities. PR890's fixed-family bound stops at T ≤ 22 only because of the *charged* 512-bit prefix (`113+18T < 512`). That payload is paid in three places and nowhere else: the prefix reserve, the row reserve (`2*payload`) and the bootstrap cutoffs (`2*(4+payload)`). Charging 1024 bits gives prefix 779 < 1024, row 17495 < 20161, and recomputed cutoffs. Without the T cap, PR890's own signed dual (PR795 prices) is tight at T37 with idle `{48:11086, 1:6}`: six rank-1 remainders give credit 5550 = 150·37 and mass ≡ 30·37 (mod 48). This is the best normalized profile at any replica count.\n\n**Construction.**\n- PR890's T21, plus PR858's T16 relabelled into replicas 21..36, both rebuilt by their unchanged constructors.\n- The two call sequences are merged proportionally: key (i+1)/189 against (j+1)/144.\n- Eight frozen whole-role edits give a credit-neutral `(44,3,2) → (48,1)` trade: a two-step width-4 chain, then bins (20,14,111) and (27,15,0) are repacked to {8,4×6}=32 and {9,9,9,4}=31. Every move is cross-component.\n\nAll 167,832 roles in 333 calls pass the independent window/family/chart/slice audit. All eight omitted edits are rejected, and so is the sequential (non-interleaved) schedule. The 8+8+8+8+5 bank envelope passes a literal audit with eight mutations. The full PR870 controller chain runs with explicit cardinality and payload edits.\n\n**Validation.**\n- Strict replay `PASS_STRICT_U8_T37_PR589_COMPOSITION 0.001661960547713947`. It reused a PR799 baseline that was cold-rebuilt in this session, with ancestry re-bound.\n- A fresh `git archive` cold replay of commit 50c6ae81 passed: `PASS_STRICT_U8_T37_PR589_COMPOSITION 0.001661960547713947` (cold PR589/PR741/PR799 rebuild plus all 19 stages, macOS, Python 3.11).\n- PR890's own cold replay also passed on the same machine (macOS, Python 3.11).\n\n```sh\npython -B research/complex-t37-owners/verify.py --work /tmp/t37-cold\n```\n\n**Credits.**\n- Chafik Boukhalfa (chafreaky), #890 (T21, T5, bank lift, owner bound and driver) and #795 (signed dual).\n- Hao Yan (@FanPUYen), #858 (T16 constructor, windows, independent checker).\n- #869/#870 U8 (NewBArch, ColdWitness/icekylinx).\n- Jeremy Kothe #799, Chafik Boukhalfa #741, and the PR589 bit supplier (DreamingOfClouds/eumemic lineage).\n- The PR514/484/507/635/645 controller lineage.\n- jon314159, #942: the same T37 construction and κ, published first (independent, concurrent work).\n\n**Scope.** This is a finite conditional composition. All-size compiler, realization, hosting, precision/tape, analytic transfer and bit H1–H5 remain inherited. The new explicit premise is the 1024-bit charged prefix.\n\nAI disclosure: prepared with Claude Opus 5.5 (Anthropic) via Claude Code, directed by Joel Pulikkan (GamingPuzzled). No independent human review is claimed.\n\n🤖 Generated with [Claude Code](https://claude.com/claude-code)\n","createdAt":"2026-10-13T14:59:06Z","files":[{"path":"research/complex-t37-owners/DEPENDENCY-PINS.json","additions":38,"deletions":0,"changeType":"ADDED"},{"path":"research/complex-t37-owners/MANIFEST.json","additions":20,"deletions":0,"changeType":"ADDED"},{"path":"research/complex-t37-owners/NOTICE.md","additions":30,"deletions":0,"changeType":"ADDED"},{"path":"research/complex-t37-owners/PROOF.md","additions":95,"deletions":0,"changeType":"ADDED"},{"path":"research/complex-t37-owners/README.md","additions":59,"deletions":0,"changeType":"ADDED"},{"path":"research/complex-t37-owners/build_owners.py","additions":112,"deletions":0,"changeType":"ADDED"},{"path":"research/complex-t37-owners/build_parent.py","additions":131,"deletions":0,"changeType":"ADDED"},{"path":"research/complex-t37-owners/check_parent.py","additions":128,"deletions":0,"changeType":"ADDED"},{"path":"research/complex-t37-owners/common.py","additions":50,"deletions":0,"changeType":"ADDED"},{"path":"research/complex-t37-owners/data/ADAPTER-EDITS.json","additions":219,"deletions":0,"changeType":"ADDED"},{"path":"research/complex-t37-owners/data/CLAIM.json","additions":30,"deletions":0,"changeType":"ADDED"},{"path":"research/complex-t37-owners/data/EDITS.json","additions":146,"deletions":0,"changeType":"ADDED"},{"path":"research/complex-t37-owners/data/SPEC.json","additions":3696,"deletions":0,"changeType":"ADDED"},{"path":"research/complex-t37-owners/freeze.py","additions":85,"deletions":0,"changeType":"ADDED"},{"path":"research/complex-t37-owners/independent_check.py","additions":314,"deletions":0,"changeType":"ADDED"},{"path":"research/complex-t37-owners/owner_controls.py","additions":63,"deletions":0,"changeType":"ADDED"},{"path":"research/complex-t37-owners/price.py","additions":66,"deletions":0,"changeType":"ADDED"},{"path":"research/complex-t37-owners/source_adapters.py","additions":48,"deletions":0,"changeType":"ADDED"},{"path":"research/complex-t37-owners/verify.py","additions":244,"deletions":0,"changeType":"ADDED"}],"headRefOid":"50c6ae8151493af21d284afe34fb35f68f6d4934","number":962,"state":"OPEN","title":"Conditional κ = 0.001661960547713947: T37 owner map on PR890's U8 word (independent cross-check of #942)","updatedAt":"2026-10-13T14:59:06Z","url":"https://github.com/CrocSwap/integer-mult-bounds/pull/962"} diff --git a/research/complex-t37-validation/README.md b/research/complex-t37-validation/README.md new file mode 100644 index 0000000000..63f23de3f0 --- /dev/null +++ b/research/complex-t37-validation/README.md @@ -0,0 +1,91 @@ +# Independent T37 construction and validation receipts + +This independently developed ten-edit owner schedule reaches the same +conditional κ = **0.001661960547713947** as Jonathan Capalbo's concurrent +[PR942](https://github.com/CrocSwap/integer-mult-bounds/pull/942), now selected +on main. It does not improve the current selected value. The distinct order, +independent reconstruction and additional controls are the contribution; +see [CONCURRENT-PR942.md](CONCURRENT-PR942.md). + +The strict U8/T37/PR589 replay passed under the final package name +`research/complex-t37-independent-seed39/` and manifest +`2bde79cc87f02fa6c4c11d38ae306015cd2d4f57710d15d7ee50233a51c3440f`. +A fresh complete PR589/PR741/PR799 replay took 1835.893 seconds; the T37 driver +then reused that checked ancestry explicitly and ran all 20 mandatory stages +in 613.152 seconds. The separate package audit rejected 47 mutations and +accepted two gzip recompressions. Timings describe this machine, not a +performance claim. See [ENVIRONMENT.json](ENVIRONMENT.json) and +`VALIDATION.json`. Independence refers to the owner schedule, its reconstruction +and new package/control checks; the replay also uses shared pinned inherited +verifiers and the two inherited exact moment engines. + +From the repository root, using Python 3.12.14 with zlib 1.3.2, NumPy, SciPy, +SymPy, a C++17 compiler and Boost headers: + +```sh +python3.12 -B research/complex-t37-independent-seed39/verify.py --work /tmp/t37-cold +``` + +Expected final line: +`PASS_STRICT_U8_T37_PR589_COMPOSITION 0.001661960547713947`. +The default rebuilds all ancestry. See the package README for explicit +source-bound reuse and package-control commands. Python/zlib versions matter +to an inherited bit-supplier compressed-byte comparison; the new package's +mathematical owner/plan identities accept equivalent gzip recompressions. + +The final emitted invoice has prefix779 < charged1024, row17495 < 20161, +router7991 < 30000, literal35287 < 100000 and required C0 exponent200012 < +210000. Both exact moment engines and all 47 outer inequalities passed. +The retained bit/bootstrap512 and local192 allowances are unchanged. + +The recorded bootstrap cutoffs also pay the stronger **1024-bit** linear +reserve used explicitly by the concurrent packages. In all fourteen native +and conservative cases, `gap <= 9/514`, so `36/gap^2 >= 2*(4+1024)/gap`. +Thus both the retained 512 formula and enlarged 1024 formula select the +same exact integer cutoff. The standalone rational checker imports no +inherited verification code and passes four negative controls: + +```sh +python3 -B research/complex-t37-validation/check_bootstrap_reserve.py +``` + +Expected JSON status: +`PASS_FOURTEEN_UNCHANGED_BOOTSTRAP_CUTOFFS_AT_PAYLOAD1024`. +Its output is byte-identical with `python3 -O`; the receipt binds the exact +assembly and checker bytes. This checks the recorded obligations, not the +general mathematical provenance of the bootstrap coefficient. + +All 18 targets in the base Makefile’s `verify` recipe completed. The prepared +environment run stopped at `verify-positive` because a historical compiler +command ignored BOOST_INCLUDE. After adding CPLUS_INCLUDE_PATH and moving +aside that failed generated directory, the final four targets passed, +including all 87 isolated test modules and patch-application checks. This +is staged complete coverage, not a claim that one uninterrupted `make verify` +command exited successfully. `VERIFY-TARGET-COVERAGE.json` and the compressed +logs preserve the exact commands, target inventory and failure distinction. +No source/checker was modified to fix these environment prerequisites. + +`T37-REPLAY-SHA256.json` and `BASELINE-REPLAY-SHA256.json` bind all 165 and 484 +output files respectively. Selected exact receipts are retained here; the +complete outputs are recreated by the package’s documented commands. +`VENDOR-GIT-CHECK.json` records all 47 byte-identical source files against +their pinned Git objects. Runtime adapters are reconstructed and compared +byte-for-byte with the exposed literal edits during final binding. + +The submission refresh read main at +`bbc600db2fc15007b7c914f4f2b2ed55fa909c87`, whose selected certificate points +to PR942 at `1960cfa919a0945d0ca4cb14ea96237000037903`. +`SELECTED-AT-SUBMISSION.json` preserves that certificate. The 100 most recent +open PRs were checked through #961; the final 35-PR refresh reached #984 and +also found Joel Pulikkan's concurrent PR962, explicitly credited in the +comparison note. An explicit PR942 refresh confirmed it merged. These are +timestamped observations, not permanent status. +PR890 advanced from pinned `61b71bcf` to `4b3bd8cb` only to extend its CI timeout; +`PR890-HEAD-DELTA.patch` preserves the exact diff. Its construction and κ are +unchanged, so the gain **over PR890** remains +`1386533459/500000000000000000`. The gain over selected PR942 is zero. + +These are finite conditional validation receipts, not an unconditional +multiplication theorem or authenticated execution history. No independent +human review or hosted CI is claimed. All inherited assumptions remain. +Prepared by Tekalign (@tekuuu) with substantial OpenAI Codex assistance. diff --git a/research/complex-t37-validation/RESULT.json b/research/complex-t37-validation/RESULT.json new file mode 100644 index 0000000000..1c424af614 --- /dev/null +++ b/research/complex-t37-validation/RESULT.json @@ -0,0 +1,64 @@ +{ + "status": "PASS_STRICT_U8_T37_PR589_COMPOSITION", + "kappa": "1661960547713947/1000000000000000000", + "kappa_decimal": "0.001661960547713947", + "delta_over_pr890": "1386533459/500000000000000000", + "complex_lower": "416181814685169713943/250000000000000000000000", + "bit_lower": "1733427039589844234749/1000000000000000000000000", + "profile": { + "1": 848490, + "2": 112554, + "3": 148518, + "4": 53946, + "5": 23976, + "8": 2664, + "48": 11086 + }, + "roles": 167832, + "calls": 333, + "prefix_bits": 779, + "row_coefficient": 17495, + "baseline_mode": "explicit_checked_reuse", + "package_pins": { + "manifest_sha256": "2bde79cc87f02fa6c4c11d38ae306015cd2d4f57710d15d7ee50233a51c3440f", + "dependencies_sha256": "7c47d44e8d5c24aa80afc70724e7c0381fec57ef80d085d2ee4611726a0f1254" + }, + "semantic_identities": { + "owners_content_sha256": "41234f89e8afb1a4cd9adc7d7a46e8d5118b5b4cbd77de711c8cb3b90463260c", + "plan_semantic_sha256": "d15915a9df225722ab066ce406167330dbc3d0c7ca59f38f6abdd662082c6e48" + }, + "stages": 20, + "artifact_sha256": { + "ASSEMBLY.json": "ccd14fa0cb2a3b14d92b0c0d29760fe0d550db836a13ae4ef32499d15ce32727", + "INDEPENDENT-T5.json": "4a2152cb5a3bf380b2614b6f391cfbba5f89b5b2830f48ad8249036183e1eaee", + "INDEPENDENT-T37.json": "8a5422d82ea7f3168bb8bbee28b55d734844f938bc38c6d600e87fe01c803a11", + "INDEPENDENT-PRICE.json": "955d50f3296e134f9c4a0d1b1db29eb28bea2532ed65d0f9a55d3b67fa3dd82a", + "INDEPENDENT-LOCAL.json": "44f579ff98aa5a6e6a28c3cad99eeca33c623c8b71361413ab4a8e8fb828c8ab", + "PARENT-CHECK.json": "51a09c849260e6729d6bfe2ba8a9e0a1e9ef40c2e519b573b3cd018d61a173d9", + "OWNER-CONTROLS.json": "d181ba40c361ecbfce5bc939205fec996e71decb65208d4b81237a09f2d733f4", + "ADMISSION-CONTROLS.json": "61ba6fd182262527658be4f2c3ddc6da53a9d1cc6e81f1a9f560f138dce56916", + "BIT-CONTROLS.json": "93395087e5a52774fd689b746303805dff228f92a0d8b51bfb87e23976708e19", + "PAYLOAD-CONTROLS.json": "0c624fe775e000a94ad87226b4af03eb3a87e3aeac63912f5e5e344a7ed15c95", + "BASELINE-BINDING.json": "3b6feb06f2237b2ed3921dd0bd12c8d4f662ff3900adea813c0a102cfcedafb0", + "BASELINE741-COVERAGE.json": "2f7ec0eae4aa32f5289acf592cf34a6b95d0b5e5b2ee5bb3d8ae66176cb113f8", + "RUNTIME-BINDING.json": "809a92752e529751e1c05c0362f83fbd267c625db21e94ed4cbcb2a20de28a04", + "owners/OWNER-CONSTRUCTION.json": "48d97e4853783c9e9d321ffa62ab1d3009ea83977d72911a4c5f113ea3fdc75d", + "owners/OWNERS.json.gz": "a65ecbd24d37390b4d07581ab288622851e7571722806c976639b9740c1e2e5b", + "owners/ORDER.json": "42ad19633ed9d67dc54e497bb961be668edbb3e3df3b723d67046e2ca4ef2a19", + "lift/PLAN.json": "e14bec84e1146b6b3090bb57291a18331d87a7636cabe378053c95d666ccca7c", + "lift/GLOBAL-TEMPLATE.json.gz": "9e3681df3b5e2b6987dae5d75a1f632b516c80a482febef1a0292e58bc20125b", + "lift/PARENT-LIFT.json": "b713e34ff857dac885853f80a484092323e6291e02c71e1374556b7e87f9f809", + "runtime/ADAPTERS.json": "48205edce5952999b5d1a3aca192888f5eda378282abb8a3f402d87fedfcd7cf", + "runtime/data/SPEC.json": "85ca40249646f423f5bf713325c8d9ff8516bd31a84b7e6a28496ba65cdbb6cf", + "global/PLAN.json": "714cc0371646ee0822e0764f5df01402b8a4fef058e67ad3b2a7fd3cb62cf5be", + "global/BINDING.json": "f96519f62639cadae3ed4893df9e90d42ffa71918cf86de9f861d41a6e29d724", + "global/hosted/GLOBAL-TEMPLATE.json.gz": "e6b2fea48399fd16e3db4cde8d18fc4305825dde6f313e4b203b0b95b2499494", + "global/audit/ASYNC-AUDIT.json": "3474f3daabf58a712fd9202ff91c23ddd0772bf5bdb46cd6b913d10dd21a8a8c", + "global/audit/OWNERS-AND-PROFILE.json": "9ec8ba5291fa6964134c30201be1b84c0759a8159a6ca16b0e41ee977c941e28", + "global/audit/PREFIX-AND-INVOICE.json": "bb9558d21b0ab0775c02e50ddd81dfb7289707778b8e6f255ed3868b5a2dae27", + "native/STEPS.json": "0e12763048870302560f6067e8e9abe9a5ccb8bc32091f10e062852d84221872", + "native/barch-controls/controls.json": "5cc0aeaa1287145c4b05fac74d60de4b5548d83ccd8fad7ee52557c430e78cbb", + "native/controls/COLD-END-CONTROLS.json": "719d393edf0f509ba35d987756327f52ab85179739c5998a1272167e7eceb749" + }, + "scope": "Conditional finite U8/T37/PR589 composition. All-size compiler, common-label/mutable-source realization, whole-call hosting, precision/tape, analytic transfer and bit H1-H5 remain inherited hypotheses." +} diff --git a/research/complex-t37-validation/SELECTED-AT-SUBMISSION.json b/research/complex-t37-validation/SELECTED-AT-SUBMISSION.json new file mode 100644 index 0000000000..3d7529d77a --- /dev/null +++ b/research/complex-t37-validation/SELECTED-AT-SUBMISSION.json @@ -0,0 +1,177 @@ +{ + "status": "Maintainer-reviewed conditional finite construction; see the integration receipt for publication and PR resolution status", + "kappa": "1661960547713947/1000000000000000000", + "decimal": "0.001661960547713947", + "source_prs": [ + 942, + 890, + 870, + 869, + 858, + 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-frontier942-audit/SELECTED-SOURCE.json", + "certificate": "research/community-frontier942-audit/ASSEMBLY.json", + "certificate_sha256": "4b2894956e594e408e111d806c842f2ed2c32aefcadff93fad69ff0b46f1991a", + "proof": "docs/research/community-batch952-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", + "docs/research/community-frontier890-review.md": "cd03b7c2c6c09db2cfa89ae40133ae44e1deb6e32ec5ddd23aacecc9c50f2fea", + "scripts/verify_frontier890.py": "88ea38dbef62dd7c0dd46e212618520cc89213edddb2032800e5509993958175", + "scripts/verify_replay_coverage.py": "babe5941d7e6dac4248613ef01f950ee7bb6199e7355021aea4cf854fd1b91c5", + "scripts/verify_frontier741_bridge_coverage.py": "9a14f26762b6126eb54ed43db90371773374fe98733ada80ee871a74afa3b836", + "certificates/replay-coverage/pr741-sw4-v1.json": "7acd5033bc78e3f473718269edaa267c2785d84fbe95ccf6815a33dcf58c2756", + "research/complex-t21-owners/PROOF.md": "78721b32fceb34b21b8e77c95381c38c60276e72e6d9c2e9c6262cb347457def", + "research/complex-t21-owner-bound/PROOF.md": "2aa0aa6ec1d87402138564c38749b5ca0f058c16817efdf58a2685d2d90cb417", + "research/gauge44-barch/PROOF-NOTE-BARCH.md": "c24f211b09358b25d6cf47dd18e4bbd8bcf4ecf279e6f1c6c90613cfa230818d", + "research/complex-double-replica-owners/PROOF.md": "db99599e3966bec253c577c23915e2a2899c4c4e8568044efc11c7918b137bbc", + "docs/research/community-batch952-review.md": "04db59dfc2c31453229b6061bbf59547e71ce3abdc0ce0f6779144bb0dde127b", + "scripts/verify_frontier942.py": "27c6713532d9f53f55dfff4884d55a2d9ae74b68156e37a44596c0418fbed5b7", + "research/complex-t37-owners/PROOF.md": "09b39ad0d5f1f59f54dcff15c16640f7a7acf27e6597660acaf957b95c7e8510", + "research/complex-t37-owners/ALL-T-PROOF.md": "4c0c71ccd0afb850538af1b467e5208b7eb3edd0260fded84e02a8c01dfc868b", + ".github/workflows/t37-owners.yml": "c13acc2902c007237103072b7ec10caf5ca21c1b319d27934f194af2f7d87026" + }, + "review": "docs/research/community-batch952-review.md", + "validation": "docs/research/community-batch952-integration.json", + "reproduce": "make frontier942-verify", + "scope": "U8/T37 finite composition with 1024-bit complex prefix allowance and complete source-bound baseline coverage; explicit reused ancestry recorded. Inherited all-size/compiler, common-label/mutable-source, whole-call hosting, precision/tape, analytic and bit H1-H5 obligations remain. Not a full Lean multiplication theorem; Linux integration CI tracked separately.", + "previous_kappa": "1661957774647029/1000000000000000000", + "previous_record": "certificates/checkpoints/frontier890.json", + "audited_source_head": "1960cfa919a0945d0ca4cb14ea96237000037903", + "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", + "858": "ae2e25fee91540c83ceee5a60e3b07422ce21c7d", + "869": "73e86f69bf9a391e3c334999f7bbe3825dc42759", + "870": "b734850dc348800942f0ffd1f0723fdec7539b2b", + "890": "4b3bd8cbe8e3e81c44161017c9b72c905a8040a8", + "942": "1960cfa919a0945d0ca4cb14ea96237000037903" + } +} diff --git a/research/complex-t37-validation/STAGES.json b/research/complex-t37-validation/STAGES.json new file mode 100644 index 0000000000..14f42d2c07 --- /dev/null +++ b/research/complex-t37-validation/STAGES.json @@ -0,0 +1,142 @@ +[ + { + "name": "baseline741-coverage", + "exit_code": 0, + "seconds": 0.063, + "log": "baseline741-coverage.log", + "log_sha256": "84e7b14bf5045963cf79594707227b0923a0448da6f89cfb55309b8a6d7b8fe2" + }, + { + "name": "baseline799-binding", + "exit_code": 0, + "seconds": 0.104, + "log": "baseline799-binding.log", + "log_sha256": "d634fcb721165a1da4804168fd6a221063b71d1621bb21457afd7e2a25f5476f" + }, + { + "name": "native-u8", + "exit_code": 0, + "seconds": 411.578, + "log": "native-u8.log", + "log_sha256": "65acafdad7e1810b46fb9d591915b0c6ab9ed3de2c1232716b23b515df5a0de4" + }, + { + "name": "independent-local", + "exit_code": 0, + "seconds": 1.487, + "log": "independent-local.log", + "log_sha256": "2732e6c7e238530ebd0a68e8c4470137dbe719f329cfe991eacd8a0ce5b1c490" + }, + { + "name": "build-owners", + "exit_code": 0, + "seconds": 19.102, + "log": "build-owners.log", + "log_sha256": "73e0b29327b18bc8c80bf840ea285d26abf47e2b70b6a9bdae2cdf4d8292a2e2" + }, + { + "name": "build-parent", + "exit_code": 0, + "seconds": 6.416, + "log": "build-parent.log", + "log_sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855" + }, + { + "name": "check-parent", + "exit_code": 0, + "seconds": 24.787, + "log": "check-parent.log", + "log_sha256": "efc9bef89fcac5c95165ca04c186c034a774fc6bd2e1db28f481ddb4e40bea96" + }, + { + "name": "independent-t5", + "exit_code": 0, + "seconds": 0.933, + "log": "independent-t5.log", + "log_sha256": "3e88cdd8791b2c794f8e4996a3c0d5a183fb5a0a85df151024c8c8317d00c93b" + }, + { + "name": "independent-t37", + "exit_code": 0, + "seconds": 2.61, + "log": "independent-t37.log", + "log_sha256": "ba65a386055ec2d6eb3630d086e297d6b70f3bb29238a65a4d11d53fcd0aaf59" + }, + { + "name": "owner-controls", + "exit_code": 0, + "seconds": 50.688, + "log": "owner-controls.log", + "log_sha256": "bb749d89b6a743ffd3414744759800df6926ae0e05fc7981a970bfb774f2582b" + }, + { + "name": "source-adapters", + "exit_code": 0, + "seconds": 0.061, + "log": "source-adapters.log", + "log_sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855" + }, + { + "name": "bind", + "exit_code": 0, + "seconds": 0.571, + "log": "bind.log", + "log_sha256": "71f679ce5a123fb58397fd6852ba64ce3832fd20e81a096bfda9a1cf3237237a" + }, + { + "name": "emit", + "exit_code": 0, + "seconds": 20.22, + "log": "emit.log", + "log_sha256": "89a257ab84f99755101e5fdbb0ccd279cbc0788d9c5b9f27b869058c5b8fe721" + }, + { + "name": "audit", + "exit_code": 0, + "seconds": 68.346, + "log": "audit.log", + "log_sha256": "3474f3daabf58a712fd9202ff91c23ddd0772bf5bdb46cd6b913d10dd21a8a8c" + }, + { + "name": "invoice", + "exit_code": 0, + "seconds": 2.284, + "log": "invoice.log", + "log_sha256": "0e1a4e5fb81387b39eee0f7366700660e672ec4cc051470ba1fd046c2de1b644" + }, + { + "name": "assembly", + "exit_code": 0, + "seconds": 0.511, + "log": "assembly.log", + "log_sha256": "88cc9dc2fdcb4d40ca27828e681333863c89ba15278efbc6e08a8c6cb32b11b0" + }, + { + "name": "admission-controls", + "exit_code": 0, + "seconds": 0.863, + "log": "admission-controls.log", + "log_sha256": "051d242318154827c1672ffbb63ad2bdc8ecc4033be650b791dd69cd57d716b3" + }, + { + "name": "bit-controls", + "exit_code": 0, + "seconds": 1.016, + "log": "bit-controls.log", + "log_sha256": "d54d260bf95bd8ae4ab8846314082b93b2e3d8f427eb35376691f2ce543a6b67" + }, + { + "name": "payload-controls", + "exit_code": 0, + "seconds": 0.836, + "log": "payload-controls.log", + "log_sha256": "83f712437c679e3fff978a6039f96020a6afd8ab9ca5b5e56508c9f305604fcc" + }, + { + "name": "independent-price", + "exit_code": 0, + "seconds": 0.676, + "log": "independent-price.log", + "log_sha256": "7ef988dcdb30daf7d1286dcdeb4c0e7c94fb11332779ea77820deee49128e73d" + } +] diff --git a/research/complex-t37-validation/T37-REPLAY-SHA256.json b/research/complex-t37-validation/T37-REPLAY-SHA256.json new file mode 100644 index 0000000000..0806e790cd --- /dev/null +++ b/research/complex-t37-validation/T37-REPLAY-SHA256.json @@ -0,0 +1,167 @@ +{ + "ADMISSION-CONTROLS.json": "61ba6fd182262527658be4f2c3ddc6da53a9d1cc6e81f1a9f560f138dce56916", + "ASSEMBLY.json": "ccd14fa0cb2a3b14d92b0c0d29760fe0d550db836a13ae4ef32499d15ce32727", + "BASELINE-BINDING.json": "3b6feb06f2237b2ed3921dd0bd12c8d4f662ff3900adea813c0a102cfcedafb0", + "BASELINE741-COVERAGE.json": "2f7ec0eae4aa32f5289acf592cf34a6b95d0b5e5b2ee5bb3d8ae66176cb113f8", + "BIT-CONTROLS.json": "93395087e5a52774fd689b746303805dff228f92a0d8b51bfb87e23976708e19", + "INDEPENDENT-LOCAL.json": "44f579ff98aa5a6e6a28c3cad99eeca33c623c8b71361413ab4a8e8fb828c8ab", + "INDEPENDENT-PRICE.json": "955d50f3296e134f9c4a0d1b1db29eb28bea2532ed65d0f9a55d3b67fa3dd82a", + "INDEPENDENT-T37.json": "8a5422d82ea7f3168bb8bbee28b55d734844f938bc38c6d600e87fe01c803a11", + "INDEPENDENT-T5.json": "4a2152cb5a3bf380b2614b6f391cfbba5f89b5b2830f48ad8249036183e1eaee", + "OWNER-CONTROLS.json": "d181ba40c361ecbfce5bc939205fec996e71decb65208d4b81237a09f2d733f4", + "PARENT-CHECK.json": "51a09c849260e6729d6bfe2ba8a9e0a1e9ef40c2e519b573b3cd018d61a173d9", + "PAYLOAD-CONTROLS.json": "0c624fe775e000a94ad87226b4af03eb3a87e3aeac63912f5e5e344a7ed15c95", + "RESULT.json": "db2b85731c32d0e009f6b5a41cf459f9eebdffe464d7f026b7c952de6bd94090", + "RUNTIME-BINDING.json": "809a92752e529751e1c05c0362f83fbd267c625db21e94ed4cbcb2a20de28a04", + "STAGES.json": "1c6b8f75937ff2f9cafbd627f7e253bcbdc3b3e006f5b575094bf4e8c09a95bb", + "admission-controls.log": "051d242318154827c1672ffbb63ad2bdc8ecc4033be650b791dd69cd57d716b3", + "assembly.log": "88cc9dc2fdcb4d40ca27828e681333863c89ba15278efbc6e08a8c6cb32b11b0", + "audit.log": "3474f3daabf58a712fd9202ff91c23ddd0772bf5bdb46cd6b913d10dd21a8a8c", + "baseline741-coverage.log": "84e7b14bf5045963cf79594707227b0923a0448da6f89cfb55309b8a6d7b8fe2", + "baseline799-binding.log": "d634fcb721165a1da4804168fd6a221063b71d1621bb21457afd7e2a25f5476f", + "bind.log": "71f679ce5a123fb58397fd6852ba64ce3832fd20e81a096bfda9a1cf3237237a", + "bit-controls.log": "d54d260bf95bd8ae4ab8846314082b93b2e3d8f427eb35376691f2ce543a6b67", + "build-owners.log": "73e0b29327b18bc8c80bf840ea285d26abf47e2b70b6a9bdae2cdf4d8292a2e2", + "build-parent.log": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", + "check-parent.log": "efc9bef89fcac5c95165ca04c186c034a774fc6bd2e1db28f481ddb4e40bea96", + "emit.log": "89a257ab84f99755101e5fdbb0ccd279cbc0788d9c5b9f27b869058c5b8fe721", + "global/BINDING.json": "f96519f62639cadae3ed4893df9e90d42ffa71918cf86de9f861d41a6e29d724", + "global/PLAN.json": "714cc0371646ee0822e0764f5df01402b8a4fef058e67ad3b2a7fd3cb62cf5be", + "global/audit/ASYNC-AUDIT.json": "3474f3daabf58a712fd9202ff91c23ddd0772bf5bdb46cd6b913d10dd21a8a8c", + "global/audit/GLOBAL-PREFIX.json": "b36cce844fedc297bab89d634d0ae2498bbd56ec87cb83962e4179fa81b1ae14", + "global/audit/IDLE-REMAINDER-FRAMES.json": "700b6559bf1464b48b1f56e8b2fad3ff183a4e05f6755879a37a8f521c02ac16", + "global/audit/OWNERS-AND-PROFILE.json": "9ec8ba5291fa6964134c30201be1b84c0759a8159a6ca16b0e41ee977c941e28", + "global/audit/PREFIX-AND-INVOICE.json": "bb9558d21b0ab0775c02e50ddd81dfb7289707778b8e6f255ed3868b5a2dae27", + "global/base/providers/gauge44/CANONICAL-WORD.json.gz": "387a2266ffe006d20042221d967f67a4b18d9bb8de1cd1e01d4031b539fa74a5", + "global/base/providers/gauge44/CLIFFORD-RECIPES.json": "4629507dcbdd516457c001ff8f9dbe750d1a0cbfa5cfa3c6be003d45804ba0c5", + "global/base/providers/gauge44/CLIFFORD-REVIEW.json": "de017f39c66827e32e6fb8f1608d319b76c76fa5821f665420fdc106adac0e43", + "global/base/providers/gauge44/FULL-WORD.json.gz": "5d063c4cffdf384982c0aaff50aaafc4635442a967d271f83cce47e9fe82fba2", + "global/base/providers/gauge44/INDEPENDENT-LOCAL-REPLAY.json": "53bdbb329c2dec59389ddc4aa804b3df8db826d8e23a5d274b1df9edc632cb38", + "global/base/providers/gauge44/LOCAL-CHECKS.json": "a99aef882cd6f7631127fd8a116ad4bbaed60e3822455d4f846ae0f45b5af575", + "global/base/providers/gauge44/LOCAL-PROGRAMS.json.gz": "8b6a9e3a2411a04e5ca79ba6cd1dd449b21c95f65ca127475167d9b97c80a1ce", + "global/base/providers/gauge44/RESIDUAL-ADAPTERS.json": "8b06181f69832da05e3bffab0737598013e20de6f1f48aad43617fbfe62df615", + "global/base/providers/gauge44/SCALAR-FRAME-AUDIT.json": "d55dad4ba57961ad5c1ae5f8ee486d159f87fd03d634e4e613832a0bebb2849d", + "global/base/providers/gauge44/WRAPPER-CHECKS.json": "75510637de1a14c5d37e2fe95d4c11aabc5cf3d2f1508dfb04f9795972629865", + "global/base/split-centres/CANONICAL-WORD.json.gz": "66d3c3c70983224650643a0a05a21ac6c6959f84d0f4528650601016f5a76844", + "global/base/split-centres/CLIFFORD-RECIPES.json": "534ace870cabe515987e00f50f71550030965006ea18978e0924590ac6944345", + "global/base/split-centres/CLIFFORD-REVIEW.json": "ee9b86428278392d2c933f76d60e51f5af90d4ab67e4d3937ed2fa416e7755ab", + "global/base/split-centres/GLOBAL-TEMPLATE.json.gz": "9e3681df3b5e2b6987dae5d75a1f632b516c80a482febef1a0292e58bc20125b", + "global/base/split-centres/INDEPENDENT-LOCAL-REPLAY.json": "ad3f2b941127688f98ce6872d00f110644f1c2b156f8adad1b6700e838ed0e26", + "global/base/split-centres/INDEPENDENT-REPLAY.json": "ad3f2b941127688f98ce6872d00f110644f1c2b156f8adad1b6700e838ed0e26", + "global/base/split-centres/INTEGRATION.json": "5c14538134dfffbc58fa4b4d2f26b270ec5f56d17d4bf23752c82964f45171db", + "global/base/split-centres/LOCAL-CHECKS.json": "79177449e404403964ce1b2f4a9a8bd49e1916daba3123d7fd7f5cfd1f1ac0ea", + "global/base/split-centres/LOCAL-PROGRAMS.json.gz": "99a18eede965accf65943e490b8d2b2ffb9f1c9bc6babdb825413a80cbea2cde", + "global/base/split-centres/RESIDUAL-ADAPTERS.json": "baafef737acc16dafbe1150896feb16744f3d669fa123bb2bff19ecc4e71b275", + "global/base/split-centres/SCALAR-FRAME-AUDIT.json": "73b3601a6239502475a272ea0c46945fd42034486aaf43e66a212eb4f012ca44", + "global/base/split-centres/WRAPPER-CHECKS.json": "9a09146e686c4f535b04fdef3753fe01dad8f5e8881a69408a91394acb5b48f5", + "global/base/work/complex-nine-native/DATA-PHASES.json": "c5916ff312678f12aba403847643fbbc29f643acec60bdf836fa56cd3e8251fa", + "global/hosted/ACTUAL-SIGMAS.json.gz": "af007f2f990c624893d94456d9978b10d3e7b50f8c47dc8e6530e514c57d2a10", + "global/hosted/GLOBAL-TEMPLATE.json.gz": "e6b2fea48399fd16e3db4cde8d18fc4305825dde6f313e4b203b0b95b2499494", + "global/hosted/HOSTED.json": "89a257ab84f99755101e5fdbb0ccd279cbc0788d9c5b9f27b869058c5b8fe721", + "global/hosted/IDLE-REMAINDER-FRAMES.json.gz": "69ebf869efc3559e70cc3f5499dd41f26d3be6a519f805bee78a38f895556ad2", + "independent-local.log": "2732e6c7e238530ebd0a68e8c4470137dbe719f329cfe991eacd8a0ce5b1c490", + "independent-price.log": "7ef988dcdb30daf7d1286dcdeb4c0e7c94fb11332779ea77820deee49128e73d", + "independent-t37.log": "ba65a386055ec2d6eb3630d086e297d6b70f3bb29238a65a4d11d53fcd0aaf59", + "independent-t5.log": "3e88cdd8791b2c794f8e4996a3c0d5a183fb5a0a85df151024c8c8317d00c93b", + "invoice.log": "0e1a4e5fb81387b39eee0f7366700660e672ec4cc051470ba1fd046c2de1b644", + "lift/GLOBAL-TEMPLATE.json.gz": "9e3681df3b5e2b6987dae5d75a1f632b516c80a482febef1a0292e58bc20125b", + "lift/PARENT-LIFT.json": "b713e34ff857dac885853f80a484092323e6291e02c71e1374556b7e87f9f809", + "lift/PLAN.json": "e14bec84e1146b6b3090bb57291a18331d87a7636cabe378053c95d666ccca7c", + "native/STEPS.json": "0e12763048870302560f6067e8e9abe9a5ccb8bc32091f10e062852d84221872", + "native/barch/FULL-WORD.json.gz": "c53fb910ecccce842c88139d59caed4b485e7f337adbc68439aadd0f5fe3722f", + "native/barch-controls/C0.json": "4db6bb67c242cd74b00ad401cb859a7a517f11d2bfb578587d249f788602502d", + "native/barch-controls/C0.json.gz": "6c63772c9a6ff63ed03509beeabc5cb84068adff87d636851a77a04666862b77", + "native/barch-controls/controls.json": "5cc0aeaa1287145c4b05fac74d60de4b5548d83ccd8fad7ee52557c430e78cbb", + "native/barch-controls/donation_after.json.gz": "88873877ea0ee04d87ce9149cf08aefc9844d1b0f9b10abf126e4c832f69ecdf", + "native/barch-controls/donation_after@226.json.gz": "da823f385acdde20e26ce1b93e4e9f06eb6bf23ed58b496398d49228836f3de5", + "native/barch-controls/donation_after@228.json.gz": "984f05426e4eda6fe4b2073b87eb26ad87f0751c87bedf94ba28103610cb700a", + "native/barch-controls/donation_after@230.json.gz": "b02fca8f90a1f6c8c7c048a27fb34be426d4054ba1dd689b7ebea54362a3b378", + "native/barch-controls/donation_after@231.json.gz": "2deee9bf28db48a80f24731e1f0cdad5d1fc39861eef174cef5c7a21a108afe4", + "native/barch-controls/donation_after@232.json.gz": "a1428af7f23c4c452708a4f62e13748b5d23be10c505af68320e19cf26dd2afb", + "native/barch-controls/donation_after@236.json.gz": "d53f2f4ef71fbdbd113d52121ed1adf329951d00048ceaa4cfe97fd5aeb29c95", + "native/barch-controls/donation_after@238.json.gz": "382f975a9b50cffdaeec49f709ff7702bc8209409c0c002db6b4555d539d6817", + "native/barch-controls/donation_after@62.json.gz": "f6dec8202546ff7f55decc64c5535db8e5c0e301d57983701b994533e7b3e2b3", + "native/barch-controls/drop_preread.json.gz": "b8855651ff9b081e4257d0430220f887a0dba80492056231ea467f64f0743901", + "native/barch-controls/drop_preread@226.json.gz": "1deb58770120b9e319920ac2b89a2f368364e228f8f37c2601d22fecb479c9c0", + "native/barch-controls/drop_preread@228.json.gz": "e919068fe9a565b37242fe9fafa3767457ae82106206ebb2c4b27a1dc2a79207", + "native/barch-controls/drop_preread@230.json.gz": "65dfb880991b50544df39b4fcac95ee296a575a96c2a15402a3b3b8901ce94b1", + "native/barch-controls/drop_preread@231.json.gz": "8c60ca452dbef430076c7aa9af7cca984c14e437d3ade1064dabddf74e3500a9", + "native/barch-controls/drop_preread@232.json.gz": "eb6dd65c0506a128fff390d3fb017d3ee6d91312ade3f6d0aec670317f9e8e6f", + "native/barch-controls/drop_preread@236.json.gz": "b3b913da874b86f794177378d2f4c346a6f96bed639146e17a90860a104f00ef", + "native/barch-controls/drop_preread@238.json.gz": "f5454873ca3866820f8be9e6adbf85c885b23ab1ed8e5b180f6824bb23b04b54", + "native/barch-controls/drop_preread@62.json.gz": "76631a2a0389e6927a5c27519f4ee8c9376b1aa207946aa3b3e06bd59d042ea4", + "native/barch-controls/drop_restore.json.gz": "3a7941568fbecff2d528220a6f1a155e1482690533ce83227ac1494d65f90f83", + "native/barch-controls/drop_restore@226.json.gz": "76831314877703ee8da573b9d96362f7d7c4bcbb9123c230bb1f25fc4e925036", + "native/barch-controls/drop_restore@228.json.gz": "82b958d3ad1de24db00c354fc6f470ff3e68150d2749bd8fe6f72138a018a8cf", + "native/barch-controls/drop_restore@230.json.gz": "090fe55a3a74fe21295560d02a282350e9db7999832d64259b47956c4c905a83", + "native/barch-controls/drop_restore@231.json.gz": "ba8f5f7ade4cb6cc855fe4846aa94edad19a56144208a6c622d80f03d3e2f040", + "native/barch-controls/drop_restore@232.json.gz": "e464c1ddc791a1e7c33178405a3dc38732376509b090e46debd533a238f2dc21", + "native/barch-controls/drop_restore@236.json.gz": "c3b7631efc33de516beb87ac47ef9dc7ff453a0a57da1fc97693acb19f9a6dcc", + "native/barch-controls/drop_restore@238.json.gz": "4a7d908693bdfb9dc86b03ad60de15028cba4e918311492f1496b37280b854fe", + "native/barch-controls/drop_restore@62.json.gz": "ec1aecafe12daeecf6b7249a3bd98b788414957b3fa7441410a542df81672987", + "native/barch-controls/recipe.audit.json": "aac1a914a353e935c9f7c2e7f109bf3b97d6d1bc1100a83325180141382e7e54", + "native/barch-controls/recipe.json.gz": "c53fb910ecccce842c88139d59caed4b485e7f337adbc68439aadd0f5fe3722f", + "native/barch-controls/restore_full.json.gz": "945d21f7aa510b52c6d4e6b0695be0f11896abd6a19f5aba0f564dea74ce7411", + "native/barch-controls/restore_full@226.json.gz": "f7037c5b529c36eb59b4c8eeeb2897405f68de85382981af089f90dd1bab45cf", + "native/barch-controls/restore_full@228.json.gz": "80cc9ff28c922718c21e4f23bee9a888433c12e0be370b88e8d0884108bc3931", + "native/barch-controls/restore_full@230.json.gz": "8c38a504d4c7791be48d13b84a98b5349ff69cf07eddd78052b1e4e96af4ccdb", + "native/barch-controls/restore_full@231.json.gz": "6cdd8ec8425913f2ce0027e67cfc131ddbd497b25f57e2c5822fce06f713ebe0", + "native/barch-controls/restore_full@232.json.gz": "975a8410c1a358171c83d718a66fd482d2f8acae0af52935620b38859f5e461d", + "native/barch-controls/restore_full@236.json.gz": "5c0c3ca1f081bf667dcafff877db04b81467f2af0402ec6cfa9c5a208510dbd5", + "native/barch-controls/restore_full@238.json.gz": "7a2fc6521ae01e4275c4b66e2bb54ef5702925574b08b9f61a15862bb124600f", + "native/barch-controls/restore_full@62.json.gz": "6bdee824f8f6a5e656344fa42d911cddd0bc7847b6c1b0f684d525fa0259502c", + "native/barch-controls.log": "f2ed06f3582e7841b36949f00dbbfe7b1670cbdd5251bf5af648afc500490586", + "native/barch.log": "621519e67a7c5c657aca5b407367827458775c144a823552f503f9197694099b", + "native/controls/COLD-END-CONTROLS.json": "719d393edf0f509ba35d987756327f52ab85179739c5998a1272167e7eceb749", + "native/layer-end-controls.log": "692bb839bced383869c115cf4bb99331ac102b2600a260f991a276106a9bce5f", + "native/ledgers.log": "58294fb6bd53be337304c9d13e447b22f4ae455fedc88be4379288dcff42ec0b", + "native/local/CANONICAL-WORD.json.gz": "387a2266ffe006d20042221d967f67a4b18d9bb8de1cd1e01d4031b539fa74a5", + "native/local/CLIFFORD-RECIPES.json": "4629507dcbdd516457c001ff8f9dbe750d1a0cbfa5cfa3c6be003d45804ba0c5", + "native/local/CLIFFORD-REVIEW.json": "de017f39c66827e32e6fb8f1608d319b76c76fa5821f665420fdc106adac0e43", + "native/local/FULL-WORD.json.gz": "5d063c4cffdf384982c0aaff50aaafc4635442a967d271f83cce47e9fe82fba2", + "native/local/INDEPENDENT-LOCAL-REPLAY.json": "53bdbb329c2dec59389ddc4aa804b3df8db826d8e23a5d274b1df9edc632cb38", + "native/local/LOCAL-CHECKS.json": "a99aef882cd6f7631127fd8a116ad4bbaed60e3822455d4f846ae0f45b5af575", + "native/local/LOCAL-PROGRAMS.json.gz": "8b6a9e3a2411a04e5ca79ba6cd1dd449b21c95f65ca127475167d9b97c80a1ce", + "native/local/RESIDUAL-ADAPTERS.json": "8b06181f69832da05e3bffab0737598013e20de6f1f48aad43617fbfe62df615", + "native/local/SCALAR-FRAME-AUDIT.json": "d55dad4ba57961ad5c1ae5f8ee486d159f87fd03d634e4e613832a0bebb2849d", + "native/local/WRAPPER-CHECKS.json": "75510637de1a14c5d37e2fe95d4c11aabc5cf3d2f1508dfb04f9795972629865", + "native/local-replay.log": "dd643a58258431c3b07d3b06d9060c49677fa23b4fafc9f10988ed1f6867bd9a", + "native/native.log": "e5360823899c7dc2507e5b80e1479a7e0e0229aaca14eee85cac8a5415d48fa3", + "native/phases.log": "2daefba22785be66258c6ec79642d16b8c91eede7eebcda89e7e108b6f9bbd07", + "native/wrappers.log": "74b13cf8570ca2f32ce0018575b1b73e95af77a28e59d09556fec59260bdbba5", + "native-u8.log": "65acafdad7e1810b46fb9d591915b0c6ab9ed3de2c1232716b23b515df5a0de4", + "owner-controls.log": "bb749d89b6a743ffd3414744759800df6926ae0e05fc7981a970bfb774f2582b", + "owners/ORDER.json": "42ad19633ed9d67dc54e497bb961be668edbb3e3df3b723d67046e2ca4ef2a19", + "owners/OWNER-CONSTRUCTION.json": "48d97e4853783c9e9d321ffa62ab1d3009ea83977d72911a4c5f113ea3fdc75d", + "owners/OWNERS.json.gz": "a65ecbd24d37390b4d07581ab288622851e7571722806c976639b9740c1e2e5b", + "parent/complex-global/base/split-centres/CANONICAL-WORD.json.gz": "66d3c3c70983224650643a0a05a21ac6c6959f84d0f4528650601016f5a76844", + "parent/complex-global/base/split-centres/CLIFFORD-RECIPES.json": "534ace870cabe515987e00f50f71550030965006ea18978e0924590ac6944345", + "parent/complex-global/base/split-centres/CLIFFORD-REVIEW.json": "ee9b86428278392d2c933f76d60e51f5af90d4ab67e4d3937ed2fa416e7755ab", + "parent/complex-global/base/split-centres/GLOBAL-TEMPLATE.json.gz": "9e3681df3b5e2b6987dae5d75a1f632b516c80a482febef1a0292e58bc20125b", + "parent/complex-global/base/split-centres/INDEPENDENT-LOCAL-REPLAY.json": "ad3f2b941127688f98ce6872d00f110644f1c2b156f8adad1b6700e838ed0e26", + "parent/complex-global/base/split-centres/INDEPENDENT-REPLAY.json": "ad3f2b941127688f98ce6872d00f110644f1c2b156f8adad1b6700e838ed0e26", + "parent/complex-global/base/split-centres/INTEGRATION.json": "5c14538134dfffbc58fa4b4d2f26b270ec5f56d17d4bf23752c82964f45171db", + "parent/complex-global/base/split-centres/LOCAL-CHECKS.json": "79177449e404403964ce1b2f4a9a8bd49e1916daba3123d7fd7f5cfd1f1ac0ea", + "parent/complex-global/base/split-centres/LOCAL-PROGRAMS.json.gz": "99a18eede965accf65943e490b8d2b2ffb9f1c9bc6babdb825413a80cbea2cde", + "parent/complex-global/base/split-centres/RESIDUAL-ADAPTERS.json": "baafef737acc16dafbe1150896feb16744f3d669fa123bb2bff19ecc4e71b275", + "parent/complex-global/base/split-centres/SCALAR-FRAME-AUDIT.json": "73b3601a6239502475a272ea0c46945fd42034486aaf43e66a212eb4f012ca44", + "parent/complex-global/base/split-centres/WRAPPER-CHECKS.json": "9a09146e686c4f535b04fdef3753fe01dad8f5e8881a69408a91394acb5b48f5", + "parent/complex-global/base/work/complex-nine-native/DATA-PHASES.json": "c5916ff312678f12aba403847643fbbc29f643acec60bdf836fa56cd3e8251fa", + "payload-controls.log": "83f712437c679e3fff978a6039f96020a6afd8ab9ca5b5e56508c9f305604fcc", + "runtime/ADAPTERS.json": "48205edce5952999b5d1a3aca192888f5eda378282abb8a3f402d87fedfcd7cf", + "runtime/code/assemble.py": "b370017e0ca46cefd04ba2225ab8cfc66d2aa89fda102287fd6199cc277778e1", + "runtime/code/assembly_controls.py": "29ba6742d899d2318a96745c8ec21de06ba3968d4641c3400a15bc714e0d7f9e", + "runtime/code/audit_allcold.py": "a8d3c48e26957c5174ea35043545d3863a4c19c82422074ac42132b446533b4a", + "runtime/code/bind_providers_portable.py": "1d39bcc7b63ac158e021454beaae897d123e174360573762aecade3cd43193f6", + "runtime/code/bit_supplier_controls.py": "e6d33fb61a570c3f50669412acc467a3fd06ef0b806da6a75bc296c6ba2142a5", + "runtime/code/emit_allcold.py": "3219e0706d497a2e6b595cec0a0d5bdbfbd1d991bf70136762eada44126a9ac1", + "runtime/code/freeze_spec.py": "e9132a9d195c66123f2747a17f7ef404b4d1e3ef6263ab4c28c983a052cf10bd", + "runtime/code/generated_identity.py": "c8af22719c0f3097a991a3f6ccac8f090afd2faba554745733d9ea88f2c25708", + "runtime/code/invoice_allcold.py": "e87cca29c14a1a4c2d268a127cffd701680a62f39de212f2c85fabea148bf9b8", + "runtime/code/prepare_global.py": "8c0dae301a8f34b77a5a462f840952d08ed120576212adf5051bc09bcad874dc", + "runtime/code/restore_parent.py": "69b7b25ff85e9b8160e233c1d415cc6a0272019e5c486dcec14cb6c349e7024d", + "runtime/code/witness.py": "779c5172894b992131e85be1e592ed2a1aec8c287b872ff42007d36a7291e444", + "runtime/data/SPEC.json": "85ca40249646f423f5bf713325c8d9ff8516bd31a84b7e6a28496ba65cdbb6cf", + "runtime/inputs/PR589-EXPECTED.json": "b9f0e5ca038abe837b0007c8fe006f366a6f02009244ac57705a8a200e2301f4", + "source-adapters.log": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855" +} diff --git a/research/complex-t37-validation/VALIDATION.json b/research/complex-t37-validation/VALIDATION.json new file mode 100644 index 0000000000..3ae6637a64 --- /dev/null +++ b/research/complex-t37-validation/VALIDATION.json @@ -0,0 +1,72 @@ +{ + "status": "PASS_T37_CONSTRUCTION_PACKAGE_CONTROLS_AND_ALL_REQUIRED_VERIFY_TARGETS", + "base": "f567884aeb8851b6e794af1184119a3bfbe1e631", + "refreshed_main": "bbc600db2fc15007b7c914f4f2b2ed55fa909c87", + "selected_kappa_on_refreshed_main": "0.001661960547713947", + "kappa": "1661960547713947/1000000000000000000", + "kappa_decimal": "0.001661960547713947", + "delta_over_pr890": "1386533459/500000000000000000", + "comparison_pr890_head": "61b71bcf5a34db70220da81fa978d5b0c7bbb008", + "latest_pr_metadata_checked": 984, + "baseline_mode": "Fresh full PR589/PR741/PR799 replay, followed by explicit source-bound ancestry reuse in T37 driver", + "t37_stages": 20, + "t37_stage_seconds": 613.152, + "baseline_steps": [ + { + "name": "ancestor", + "exit_code": 0, + "seconds": 1415.2785083240015, + "log_sha256": "bb105f7d51e30c98fa8fee25d747a466b8b0ffc87e294d1326c297a6e4f52999" + }, + { + "name": "manifest", + "exit_code": 0, + "seconds": 0.05747367699223105, + "log_sha256": "f48279f90e445d990b53e6d891f94cfe2b7ad02b76baff6274b063dd7ea7dfab" + }, + { + "name": "native", + "exit_code": 0, + "seconds": 384.8751494390017, + "log_sha256": "99aa8a55358644ee49420c93fd27db3cad3b2eacc4440ae669fe9de86072ca59" + }, + { + "name": "global", + "exit_code": 0, + "seconds": 33.53750476799905, + "log_sha256": "8279e93ca7b2722246a631d0b16bf0b331b9d28f4a4b01063de39543a93fbfe7" + }, + { + "name": "independent-local", + "exit_code": 0, + "seconds": 1.3640616019984009, + "log_sha256": "7135402986289a762290b2de398e4e3b050059a96e6576ea46c4bfe578325604" + }, + { + "name": "independent-price", + "exit_code": 0, + "seconds": 0.7803061589947902, + "log_sha256": "5d15bc438a648a3f9707a25b6d5bdd682482c6abd8eaba0dfd73756a19a07e7c" + } + ], + "package_rejections": 47, + "package_recompression_positives": 2, + "package_manifest_sha256": "2bde79cc87f02fa6c4c11d38ae306015cd2d4f57710d15d7ee50233a51c3440f", + "notes": "No remote CI or independent human review claimed. All-size/compiler, realization, whole-call hosting, precision/tape, analytic transfer and bit H1-H5 remain inherited. Finite certificates are not a formal multiplication theorem. Receipts do not authenticate execution history.", + "refreshed_pr890_head": "4b3bd8cbe8e3e81c44161017c9b72c905a8040a8", + "pr890_head_delta": "Only .github/workflows/complex-t21-owners.yml changes: CI timeout adjustment. Construction, proof, owner sources, profiles, endpoints and kappa byte-identical.", + "required_verification": "All18 Makefile verify recipe targets passed in documented stages; full make invocation stopped for environment setup and was resumed at the failed target.", + "last_four_target_exit_code": 0, + "make_target_coverage": "VERIFY-TARGET-COVERAGE.json", + "package_path": "research/complex-t37-independent-seed39", + "validation_output": "/tmp/mult-t37-independent-final", + "metadata_scope": "100 most recent open PRs through961; subsequent35 most recent PRs of all states through984; explicitPR942 andPR962 metadata; selected certificate at pinned main.", + "concurrent_pr942_head": "1960cfa919a0945d0ca4cb14ea96237000037903", + "record_claim": "Matches the selected PR942 kappa with a distinct ten-edit owner schedule. No improvement over the current selected value, no uniqueness or priority claim.", + "independence_scope": "Independently developed owner schedule and new package/control logic, with a fresh replay of shared pinned inherited verifiers and both inherited exact moment engines.", + "coordination": "Pinned issues API returned zero nodes; local sprint claim retained.", + "final_overlap_refresh": "FINAL-OVERLAP-REFRESH.json", + "concurrent_pr962_head": "50c6ae8151493af21d284afe34fb35f68f6d4934", + "bootstrap_reserve_audit": "BOOTSTRAP-RESERVE-CHECK.json", + "bootstrap_reserve_scope": "All14recordedcutoffs are identical under512and1024linear formulas;4negative controls;normaland-O outputs equal. Standalone checker imports no inherited verifier." +} diff --git a/research/complex-t37-validation/VENDOR-GIT-CHECK.json b/research/complex-t37-validation/VENDOR-GIT-CHECK.json new file mode 100644 index 0000000000..443bdfcf9f --- /dev/null +++ b/research/complex-t37-validation/VENDOR-GIT-CHECK.json @@ -0,0 +1,67 @@ +{ + "pr870": { + "head": "b734850dc348800942f0ffd1f0723fdec7539b2b", + "path": "research/gauge44-barch-t16", + "byte_identical_files": [ + "code/generated_identity.py", + "code/witness.py", + "code/assemble.py", + "code/prepare_global.py", + "code/assembly_controls.py", + "code/restore_parent.py", + "code/audit_allcold.py", + "code/bind_providers_portable.py", + "code/invoice_allcold.py", + "code/bit_supplier_controls.py", + "code/emit_allcold.py", + "code/freeze_spec.py", + "LICENSE", + "NOTICE.md", + "UPSTREAM-NOTICE.md", + "SOURCES.json", + "PROOF-NOTE-BARCH.md", + "PROOF-NOTE-T16.md", + "inputs/PR589-EXPECTED.json", + "data/UPSTREAM-PINS.json", + "data/T8/PLAN.json", + "construction/barch/build_tri.py", + "construction/barch/run_controls.py", + "construction/barch/reproduce_barch.py", + "construction/barch/RECIPE-U8.json", + "construction/barch/LOCAL-PINS-barch-U8.json", + "construction/layers_p6n/layer_end_controls.py", + "construction/layers_np/PIVOT-SWAP-NP.json", + "independent/audit_local.py", + "independent/price_profile_t16.py", + "t16/build_owners.py", + "t16/build_parent.py", + "t16/NOTICE.md" + ] + }, + "pr858": { + "head": "ae2e25fee91540c83ceee5a60e3b07422ce21c7d", + "path": "research/complex-double-replica-owners", + "byte_identical_files": [ + "baseline_coverage.py", + "independent_check.py" + ] + }, + "pr890": { + "head": "61b71bcf5a34db70220da81fa978d5b0c7bbb008", + "path": "research/complex-t21-owners", + "byte_identical_files": [ + "build_owners.py", + "common.py", + "data/EDITS.json", + "data/T5-OWNERS.json.gz", + "NOTICE.md", + "PROOF.md", + "VENDOR-PINS.json", + "vendor/pr870/t16/build_owners.py", + "vendor/pr870/t16/NOTICE.md", + "vendor/pr870/LICENSE", + "vendor/pr870/NOTICE.md", + "vendor/pr870/UPSTREAM-NOTICE.md" + ] + } +} diff --git a/research/complex-t37-validation/VERIFY-TARGET-COVERAGE.json b/research/complex-t37-validation/VERIFY-TARGET-COVERAGE.json new file mode 100644 index 0000000000..e025a5300d --- /dev/null +++ b/research/complex-t37-validation/VERIFY-TARGET-COVERAGE.json @@ -0,0 +1,63 @@ +{ + "status": "PASS_ALL_MAKE_VERIFY_RECIPE_TARGETS_IN_STAGES", + "makefile_sha256": "178ac065681bd39c1309ef25c54554598f3e26be1fa2061c7fed5d78750e0f51", + "required_targets": [ + "verify-community", + "verify-producers", + "verify-partial-gauge", + "verify-three-stage-cover", + "verify-paired-cube", + "verify-recycled-bit", + "verify-entrance-banks", + "gen4-bank-verify", + "frontier741-verify", + "verify-certificates", + "verify-ternary", + "verify-research", + "verify-strips", + "verify-clones", + "verify-positive", + "verify-joint", + "verify-pair", + "verify-tests" + ], + "first_pass_completed_targets": [ + "verify-community", + "verify-producers", + "verify-partial-gauge", + "verify-three-stage-cover", + "verify-paired-cube", + "verify-recycled-bit", + "verify-entrance-banks", + "gen4-bank-verify", + "frontier741-verify", + "verify-certificates", + "verify-ternary", + "verify-research", + "verify-strips", + "verify-clones" + ], + "first_pass_exit_code": 2, + "first_pass_failure": "verify-positive historical compiler did not honor BOOST_INCLUDE; boost/multiprecision/cpp_int.hpp missing from compiler search path", + "resumed_targets": [ + "verify-positive", + "verify-joint", + "verify-pair", + "verify-tests" + ], + "resumed_exit_code": 0, + "resumed_command": "CPLUS_INCLUDE_PATH=/tmp/mult-t37-boost/usr/include BOOST_INCLUDE=/tmp/mult-t37-boost/usr/include PATH=/tmp/mult-t37-env312/bin:$PATH make verify-positive verify-joint verify-pair verify-tests", + "isolated_test_modules": 87, + "patch_application_checks": "all passed", + "logs": { + "make-verify-prefix": { + "uncompressed_sha256": "8ec3da5249e55c83a54e75794fc77c3d5eb24d265128656070ec2f1e3b6d2ae8", + "compressed_file": "make-verify-prefix.log.gz" + }, + "make-verify-tail": { + "uncompressed_sha256": "a1df4b538a68584dcc5cc0ae12b2a14122dc2b51167c8f6d61bc55b2fc8a3ab1", + "compressed_file": "make-verify-tail.log.gz" + } + }, + "environment_fixes": "First system-Python attempt lacked SymPy; complete prepared-environment attempt passed every target before verify-positive. The failed positive-skip output directory was moved aside before resuming; CPLUS_INCLUDE_PATH supplies the existing Boost headers to legacy commands. No checker or source edits were made to obtain this coverage." +} diff --git a/research/complex-t37-validation/check_bootstrap_reserve.py b/research/complex-t37-validation/check_bootstrap_reserve.py new file mode 100644 index 0000000000..8a7e519d1d --- /dev/null +++ b/research/complex-t37-validation/check_bootstrap_reserve.py @@ -0,0 +1,87 @@ +# SPDX-License-Identifier: Apache-2.0 +"""Independently check the recorded cutoffs also pay a 1024-bit allowance. + +This does not import either inherited moment engine. It checks fourteen +source-pinned rational cutoff obligations, not the multiplication theorem. +Prepared by Tekalign with substantial OpenAI Codex assistance. +""" +import copy +from fractions import Fraction as Q +import hashlib +import json +from pathlib import Path + +HERE = Path(__file__).resolve().parent +ASSEMBLY_SHA256 = 'ccd14fa0cb2a3b14d92b0c0d29760fe0d550db836a13ae4ef32499d15ce32727' + + +def require(condition, message): + if not condition: + raise ValueError(message) + + +def ceil(value): + return -(-value.numerator // value.denominator) + + +def check(record): + checked = [] + for name in ('bootstrap', 'conservative_bootstrap'): + cuts = record[name] + require(len(cuts) == 7, 'seven cutoffs per branch') + for index, item in enumerate(cuts): + gap, cutoff = Q(item['gap']), int(item['cutoff_log2']) + require(gap > 0, 'positive gap') + # 36/gap^2 >= 2*(4+1024)/gap iff gap <= 9/514. + require(gap <= Q(9, 514), 'quadratic dominance at payload1024') + quadratic = ceil(36 / gap**2) + old = max(quadratic, ceil(2 * (4 + 512) / gap)) + enlarged = max(quadratic, ceil(2 * (4 + 1024) / gap)) + require(cutoff == quadratic == old == enlarged, 'unchanged exact cutoff') + require(cutoff * gap >= 2 * (4 + 1024), 'paid payload1024 reserve') + require(cutoff * gap**2 >= 36, 'paid quadratic reserve') + checked.append({'branch': name, 'index': index, + 'gap': str(gap), 'cutoff_log2': str(cutoff)}) + return checked + + +def main(): + data = (HERE / 'ASSEMBLY.json').read_bytes() + require(hashlib.sha256(data).hexdigest() == ASSEMBLY_SHA256, 'pinned assembly') + record = json.loads(data) + checked = check(record) + rejected = [] + for name, expected, mutate in ( + ('missing_native_cutoff', 'seven cutoffs per branch', + lambda x: x['bootstrap'].pop()), + ('one_below_quadratic_cutoff', 'unchanged exact cutoff', + lambda x: x['conservative_bootstrap'][3].__setitem__( + 'cutoff_log2', str(int(x['conservative_bootstrap'][3]['cutoff_log2']) - 1))), + ('zero_gap', 'positive gap', + lambda x: x['bootstrap'][0].__setitem__('gap', '0')), + # A synthetic gap where dominance is false prevents extending the + # recorded-small-gap argument to an unrestricted cutoff theorem. + ('outside_dominance_domain', 'quadratic dominance at payload1024', + lambda x: x['bootstrap'][0].__setitem__('gap', '1/2')), + ): + changed = copy.deepcopy(record) + mutate(changed) + try: + check(changed) + except ValueError as error: + require(str(error) == expected, 'wrong negative-control failure') + rejected.append({'name': name, 'reason': str(error)}) + else: + raise ValueError('accepted negative control: ' + name) + print(json.dumps({ + 'status': 'PASS_FOURTEEN_UNCHANGED_BOOTSTRAP_CUTOFFS_AT_PAYLOAD1024', + 'assembly_sha256': ASSEMBLY_SHA256, + 'source_sha256': hashlib.sha256(Path(__file__).read_bytes()).hexdigest(), + 'checked': checked, 'controls_rejected': rejected, + 'scope': 'Recorded exact cutoffs also satisfy the stronger 1024-bit linear reserve. ' + 'No change to the supplier, endpoint, kappa or inherited theorem assumptions.' + }, indent=2)) + + +if __name__ == '__main__': + main() diff --git a/research/complex-t37-validation/make-verify-prefix.log.gz b/research/complex-t37-validation/make-verify-prefix.log.gz new file mode 100644 index 0000000000..1111945c76 Binary files /dev/null and b/research/complex-t37-validation/make-verify-prefix.log.gz differ diff --git a/research/complex-t37-validation/make-verify-tail.log.gz b/research/complex-t37-validation/make-verify-tail.log.gz new file mode 100644 index 0000000000..28bb4bb9e9 Binary files /dev/null and b/research/complex-t37-validation/make-verify-tail.log.gz differ