From 6df6ed294614423836cbde182fb4368c9c346fe7 Mon Sep 17 00:00:00 2001 From: d3lerium Date: Fri, 23 Oct 2026 12:01:29 +1100 Subject: [PATCH] Bound two FULL controllers with retained productive helpers --- .../HANDOFF.md | 22 + .../two-full-retained-helper-ceiling/LICENSE | 201 ++ .../README.md | 132 + .../SOURCES.json | 80 + .../TASK.json | 66 + .../VERIFY.json | 34 + .../independent/INPUTS.json | 10 + .../independent/REVIEW.json | 170 ++ .../independent/REVIEW.md | 47 + .../science/FILES.json | 65 + .../science/HANDOFF.md | 66 + .../science/PROOF.md | 236 ++ .../science/RESULT.json | 2115 +++++++++++++++++ .../science/RUNS.json | 34 + .../science/SOURCE-CHECK.json | 37 + .../science/SOURCES.json | 63 + .../science/check.py | 193 ++ .../science/source/4712-README.md | 226 ++ .../science/source/ACTUAL-WORD.json.gz | Bin 0 -> 207673 bytes .../science/source/DATA-PHASES.json | 1 + .../science/source/clifford_exact.py | 149 ++ .../source/complex_controller_factor.py | 270 +++ .../science/source/native_inventory.py | 270 +++ .../science/source/phase_check.py | 42 + .../science/source/prune_native.py | 253 ++ .../verify.py | 49 + 26 files changed, 4831 insertions(+) create mode 100644 research/two-full-retained-helper-ceiling/HANDOFF.md create mode 100644 research/two-full-retained-helper-ceiling/LICENSE create mode 100644 research/two-full-retained-helper-ceiling/README.md create mode 100644 research/two-full-retained-helper-ceiling/SOURCES.json create mode 100644 research/two-full-retained-helper-ceiling/TASK.json create mode 100644 research/two-full-retained-helper-ceiling/VERIFY.json create mode 100644 research/two-full-retained-helper-ceiling/independent/INPUTS.json create mode 100644 research/two-full-retained-helper-ceiling/independent/REVIEW.json create mode 100644 research/two-full-retained-helper-ceiling/independent/REVIEW.md create mode 100644 research/two-full-retained-helper-ceiling/science/FILES.json create mode 100644 research/two-full-retained-helper-ceiling/science/HANDOFF.md create mode 100644 research/two-full-retained-helper-ceiling/science/PROOF.md create mode 100644 research/two-full-retained-helper-ceiling/science/RESULT.json create mode 100644 research/two-full-retained-helper-ceiling/science/RUNS.json create mode 100644 research/two-full-retained-helper-ceiling/science/SOURCE-CHECK.json create mode 100644 research/two-full-retained-helper-ceiling/science/SOURCES.json create mode 100644 research/two-full-retained-helper-ceiling/science/check.py create mode 100644 research/two-full-retained-helper-ceiling/science/source/4712-README.md create mode 100644 research/two-full-retained-helper-ceiling/science/source/ACTUAL-WORD.json.gz create mode 100644 research/two-full-retained-helper-ceiling/science/source/DATA-PHASES.json create mode 100644 research/two-full-retained-helper-ceiling/science/source/clifford_exact.py create mode 100644 research/two-full-retained-helper-ceiling/science/source/complex_controller_factor.py create mode 100644 research/two-full-retained-helper-ceiling/science/source/native_inventory.py create mode 100644 research/two-full-retained-helper-ceiling/science/source/phase_check.py create mode 100644 research/two-full-retained-helper-ceiling/science/source/prune_native.py create mode 100644 research/two-full-retained-helper-ceiling/verify.py diff --git a/research/two-full-retained-helper-ceiling/HANDOFF.md b/research/two-full-retained-helper-ceiling/HANDOFF.md new file mode 100644 index 0000000000..d251353c45 --- /dev/null +++ b/research/two-full-retained-helper-ceiling/HANDOFF.md @@ -0,0 +1,22 @@ +HANDOFF + +Research discussion / PR / artifact: +LOCAL-ONLY package for the Discussion4902 retained-helper question; no new public PR or artifact yet. Package: `research/two-full-retained-helper-ceiling` on branch `research/two-full-retained-helper-ceiling-20261023`. The frozen `science/HANDOFF.md` is an archived producer record; this operational handoff describes the packaged result. No kappa gain or new selected result is claimed. + +Exact commit: +Current canonical base `624de9dc66858af0945e5f8a0942488d62280d43`; the final publication commit and public artifact remain pending. Native source is `20bb93cd990d2ff683e4d0fc56b87a42cd5d3296`. Method predecessor #4920 at `7eb4ef5251f7ba96c7e5d78c42fc98e66b7be4ba` is citation-only. All copied source pins, including #4712 at `b75a27bf07f1584b20babfddf887493981cd5949`, are ancestors of the canonical base. + +What is established: +For TWO main owners, arbitrary distinct simultaneous pure helper jobs and restored B-valued spectators, two FULL invocations cannot complete two independent non-B main jobs while retaining every original helper job under invertible separated-B pre/inter/post controls. For `n=2+m1+m2+s`, the self-contained compression proof gives projected rank at least `(s+1)dim(B)`, versus the target's `s dim(B)`, without commutation or a domain assumption. The all-width phase quotient/tensor separation proof is included. Both normal and optimized portable checks pass:112 actual native normalizers,114688 absolute-phase equalities and four noncommutative compression fixtures. Eight private-copy semantic mutation runs reject corrupted helper endpoints, source orthogonality, backward translation and queried-row selection. The parent independently checked the rank argument; the source/accounting agent's final independent review passed, including exact source matches and independent normal/optimized corroboration; its frozen report and receipt are retained under `independent/`. + +What remains uncertain: +This does not cover arbitrary joint224-main-owner control: the motivating `224H17+2H-2P` invoice and supplied positive margin39.063938114801903 at C=.0030217758 concern112 independent replications. Full central/fresh mixing, prefix taps, extra interleaved nonmonomial operations, changed helper ownership/census, width-specific grammar beyond a fixed finite columnwise group and discarded main-dependent garbage remain excluded. Clean work requires a reversible global B extension and cleanup on every required original input. No native632-field replay, compiler/precision/reserve transfer, outer recursion, general routing search or complete multiplication proof was run. The general backward helper is entrywise conjugate in unchanged primitive order, not an adjoint with reversed charts; the fullF9 exception is explicitly derived. + +Smallest useful next task: +Bind one literal central/fresh monomial route under the corrected native forward/backward ABI, preserve both distinct helper jobs, and price all entrance conversions and cleanup before search. X enters a rank1 chart while Y/helper enter empty; full exit charts do not make those entrance swaps free. Stop if that complete optimistic invoice cannot improve. No such changed-routing construction is supplied here. + +Reproduction command and expected runtime: +From repository root with Python3.12 standard library, run `python3 -I -W error -B research/two-full-retained-helper-ceiling/verify.py` and the same command with `-O`; each is below one second on the development machine. The registered command is `python3 scripts/research_package.py --package research/two-full-retained-helper-ceiling`. The direct launcher is read-only and Git-free after export, authenticating the unchanged frozen science before and after replay. + +Predecessor credit: +Credit Cinna Davis /1337isnot1337 and retained upstream contributors for the native interfaces; #4920 for the projection method; #4712 for the three-call dirty-helper word, whose paid-minus-helper bill `2*r^t` supplies no new saving against one replaced `r^t`; the source/accounting and shared-producer agents for source normalizers and backward-ABI correction; and the parent for an independent rank derivation. Prepared for Chris R / Clear1nsight with substantial OpenAI Codex gpt-6.1-sol/high assistance. Apache-2.0. Separate agent checks do not imply independent human or proof-kernel acceptance. diff --git a/research/two-full-retained-helper-ceiling/LICENSE b/research/two-full-retained-helper-ceiling/LICENSE new file mode 100644 index 0000000000..261eeb9e9f --- /dev/null +++ b/research/two-full-retained-helper-ceiling/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/two-full-retained-helper-ceiling/README.md b/research/two-full-retained-helper-ceiling/README.md new file mode 100644 index 0000000000..dc4353d52e --- /dev/null +++ b/research/two-full-retained-helper-ceiling/README.md @@ -0,0 +1,132 @@ +# Retaining productive helpers does not complete two FULLs under separated controls + +**Scoped written ceiling with exact native normalization checks; no new kappa.** +Two FULL main-owner calls cannot complete two independent nonmonomial main +jobs while retaining all their distinct simultaneous productive helper jobs, +when pre/inter/post owner controls are invertible over the stated separated +central-monomial/transverse-Clifford algebra. Arbitrary helper counts, +noncommuting query/helper words, restored B-valued spectators and width-dependent +scalar coefficients are included. Full central/fresh address mixing remains +outside this theorem. + +This extends a premise explicitly excluded by the main-only theorem in +[PR4920](https://github.com/CrocSwap/integer-mult-bounds/pull/4920), exact head +`7eb4ef5251f7ba96c7e5d78c42fc98e66b7be4ba`: the helpers here are productive +operations emitted at the same time as the two paid FULLs and must be retained +as their original distinct jobs. The proof is self-contained; no4920 proof +files or fork-only history are imported. The separate4920 theorem with full +monomial routing has exactly two owners and does not combine with this result. + +## Exact contract and ceiling + +For two main owners, m1 non-B helper jobs in the first invocation, m2 distinct +non-B helper jobs in the second, and s B-valued jobs/spectators, write +`n=2+m1+m2+s`. The literal factors have their raw transverse and translation +terms in order; no d/Q commutation is assumed. For `M=T2 W T1`, select untouched +second-call rows U and columns C excluding first-call non-B helper inputs. +Their subgroup projection is an invertible B diagonal times `W[U,C]` times +another invertible B diagonal. As a finite vector-space map, its rank is at +least `(s+1)dim(B)`. The required target projects to rank `s dim(B)`. +Invertible external B controls preserve projected rank, giving a contradiction. +The argument tolerates zero divisors and arbitrary pure helper words outside B. + +[The complete proof](science/PROOF.md) includes the literal four-owner case, +arbitrary m1/m2/s, the all-width central-character quotient/tensor separation, +and the reversible clean-work qualification. The frozen folder's original +name referred to an initial three-owner question; its corrected source contract +uses **four distinct owners** when m1=m2=1,s=0. + +This is a theorem for **two main owners**, with additional helper/spectator +owners. The hypothetical `224H17+2H-2P` invoice is motivation for112 independent +replications of that controller. The result does not claim an arbitrary joint +224-main-owner controller ceiling. Its supplied optimistic margin +39.063938114801903 at C=.0030217758 remains a budget calculation, not an +endpoint certificate or a new selected bound. + +## Source binding and finite corroboration + +Canonical base: `624de9dc66858af0945e5f8a0942488d62280d43`. +Native source: merged #4610 at `20bb93cd990d2ff683e4d0fc56b87a42cd5d3296`. +The eight exact source copies have Git blob and SHA256 pins in +`science/SOURCES.json`; package `SOURCES.json` declares their historical +provenance. The #4712 README copy at +`b75a27bf07f1584b20babfddf887493981cd5949` is also ancestral to the canonical +base. No4920 source file is required to replay this package. + +The unchanged science checker authenticates actual helper224's empty-to-full +frame contract. At all112 actual source ports it derives translation t and +checks, for all512 Fourier characters, the absolute-phase pure-word identities + +```text +F9 = X_t D_A Q, +bar(F9) = X_(t xor u) D_A Q^-1. +``` + +These are114688 exact modulo-four equalities. The source backward helper ABI +is primitive-wise complex conjugation in unchanged circuit order. It is +generally **not adjoint**, and does not reverse entry/output charts; the fullF9 +case is a special exception because its elementary factors commute. Port0's +rawD0/S noncommutation is retained as an actual control. Four exact symbolic +fixtures corroborate the projected compression without discarding opaque +products of two non-B words. Wrong-row and false-commutation controls exercise +those failure modes. No candidate or routing enumeration is performed. + +The written proof supplies the universal quantifiers. These finite checks +authenticate the relevant source premises and identities; they do not replay +the entire632-field native operator, prove a complete multiplication theorem, +or extend the compiler/outer construction. + +## Reproduce + +From the repository root, Python3.12 with its standard library: + +```sh +python3 -I -W error -B research/two-full-retained-helper-ceiling/verify.py +python3 -I -O -W error -B research/two-full-retained-helper-ceiling/verify.py +python3 scripts/research_package.py --package research/two-full-retained-helper-ceiling +``` + +The read-only launcher authenticates the exact frozen science tree and runs its +unchanged HERE-relative checker. It accepts no generation arguments and compares +the committed scientific receipt. Direct commands also run from a standalone +export without Git. `VERIFY.json` registers both isolated variants. + +The original author handoff and timings under `science/` are preserved +byte-for-byte as **local archive records**. Their old `outputs/` command paths +and publication status describe that archived run. Use the commands above and +the package [HANDOFF.md](HANDOFF.md) for the present packaged result. + +## Scope limits + +The free grammar preserves central/transverse separation. Arbitrary full +central/fresh address routing, interleaved extra nonmonomial operations, +prefix taps, changed helper jobs/census/input ownership, and width-specific +address grammar outside the fixed finite columnwise Clifford alphabet are +excluded. Arbitrary rectangular COPY/DROP or discarded main-dependent garbage +is excluded. The clean-zero corollary requires a reversible global B extension +and complete cleanup on every required original input. Restored dirty B-valued +scratch is included. + +## Open next questions + +The next useful gate is one literal central/fresh monomial route preserving +both distinct helper jobs. Bind its real forward/backward role boundaries and +price every conversion and cleanup before search: X's rank1 entrance differs +from the empty Y/helper entrance, even when exits are all full. The structured +question and blocker are retained in TASK.json. No changed-routing construction +is supplied by this package. + +## Credit and review status + +Credit Cinna Davis /1337isnot1337 and the retained upstream contributors for +the native interfaces; the4920 agents for the projection method; and #4712 for +the dirty-helper substitution predecessor. That three-call substitution has +paid-minus-helper bill `2*r^t` against one replaced `r^t` and supplies no new +saving. Exact historical source pins and boundaries are retained in the proof. +The source/accounting agent supplied the normalizer observations, backward-ABI +correction and [final independent review](independent/REVIEW.md); the parent +independently derived the rank argument. The report, receipt and input bindings +under `independent/` are frozen review records. Their separate local review +runner is not registered or advertised as a portable replay here. Prepared for Chris R / Clear1nsight with substantial OpenAI Codex +gpt-6.1-sol/high assistance. Separate agent checks do not imply independent human +or proof-kernel acceptance. Apache-2.0. diff --git a/research/two-full-retained-helper-ceiling/SOURCES.json b/research/two-full-retained-helper-ceiling/SOURCES.json new file mode 100644 index 0000000000..cf471c637b --- /dev/null +++ b/research/two-full-retained-helper-ceiling/SOURCES.json @@ -0,0 +1,80 @@ +{ + "schema_version": 1, + "base_commit": "624de9dc66858af0945e5f8a0942488d62280d43", + "files": [ + { + "path": "certificates/selected-result.json", + "usage": "provenance", + "git_blob": "c35482cd9035843b15a634cc8276a7e1e40e8395", + "sha256": "6fe0a099b89aa2aed796a13c3a21dafc63f3388ebf397464e44e0451893b9375" + }, + { + "path": "docs/research/agent-task-catalog.json", + "usage": "provenance", + "git_blob": "f126dd2e2dad2b669e75d1d0d0bd05c600725602", + "sha256": "f7a48bfa2659b88378282a8eee7d9fe52cdf505594124c4d1686b58510fffd72" + }, + { + "path": "research/kappa-rebuild/bit/complex_controller_factor.py", + "usage": "provenance", + "pin": "head:20bb93cd990d2ff683e4d0fc56b87a42cd5d3296:research/kappa-rebuild/bit/complex_controller_factor.py", + "git_blob": "cb0cff7c8be5f38f2ee52201d9d0907f9dfd7947", + "sha256": "1de9aaf918e6a4f2f5448754c1f3c3da3b85e6257849ebd097af09859c4e5497" + }, + { + "path": "research/pr4359-p7-padding/native_inventory.py", + "usage": "provenance", + "pin": "head:20bb93cd990d2ff683e4d0fc56b87a42cd5d3296:research/pr4359-p7-padding/native_inventory.py", + "git_blob": "8d2d96e3998254c2333c43fe47cdfd074cbd811e", + "sha256": "65539acaf45bdfe8c5aee6830f9c9b3d1107c442a60842ef803fdd7688de8f32" + }, + { + "path": "research/kappa-round3-warp-20261022/phase_check.py", + "usage": "provenance", + "pin": "head:20bb93cd990d2ff683e4d0fc56b87a42cd5d3296:research/kappa-round3-warp-20261022/phase_check.py", + "git_blob": "9fdbffc14edf8aabace5366c3941e78381f61862", + "sha256": "0aec13f218fd131b63430064c7cd212b4320a87564e75c34a359e08f1e249009" + }, + { + "path": "research/kappa-function-composition/complex/prune_native.py", + "usage": "provenance", + "pin": "head:20bb93cd990d2ff683e4d0fc56b87a42cd5d3296:research/kappa-function-composition/complex/prune_native.py", + "git_blob": "8c3e11b2408fa96eefa3ebe7952d1b11b90b772b", + "sha256": "f2b37c183a10922eabc8e0436b426a08866430e96bd0adc7e178951c7fbb5257" + }, + { + "path": "research/kappa-round8-owner-protocol-20261023/README.md", + "usage": "provenance", + "pin": "head:b75a27bf07f1584b20babfddf887493981cd5949:research/kappa-round8-owner-protocol-20261023/README.md", + "git_blob": "b6ac1cb8df3e3469229897af2cd793e0f7bae0d9", + "sha256": "d099a1ca2a866701f9a2219a25f4e67db0043ed101606393d985a2055ab61873" + }, + { + "path": "research/kappa-0023-productive-jobs/dependencies/kappa-next-regime/direct-decoder/sources/DATA-PHASES.json", + "usage": "provenance", + "pin": "head:20bb93cd990d2ff683e4d0fc56b87a42cd5d3296:research/kappa-0023-productive-jobs/dependencies/kappa-next-regime/direct-decoder/sources/DATA-PHASES.json", + "git_blob": "d9a4f84211182ca200c081ea061d724c8a2cfb70", + "sha256": "c5916ff312678f12aba403847643fbbc29f643acec60bdf836fa56cd3e8251fa" + }, + { + "path": "research/t74-native-fast/vendor/native/new/code/borrow/vendor/clifford/clifford_exact.py", + "usage": "provenance", + "pin": "head:20bb93cd990d2ff683e4d0fc56b87a42cd5d3296:research/t74-native-fast/vendor/native/new/code/borrow/vendor/clifford/clifford_exact.py", + "git_blob": "166841a037f069249f6f7f6dedb89248812f59e2", + "sha256": "2982ead07721e83358dc67c6f49c2b4c16a236a6bebdfd72f58221be1f5d0962" + }, + { + "path": "research/kappa-round3-warp-20261022/ACTUAL-WORD.json.gz", + "usage": "provenance", + "pin": "head:20bb93cd990d2ff683e4d0fc56b87a42cd5d3296:research/kappa-round3-warp-20261022/ACTUAL-WORD.json.gz", + "git_blob": "46d929df83817b85a5387bcdb9745e0627d6366e", + "sha256": "7679daa4ec6a40f56fc7f0202379a6f454310e94945aba4f48beaaaafb838d05" + }, + { + "path": "LICENSE", + "usage": "provenance", + "git_blob": "261eeb9e9f8b2b4b0d119366dda99c6fd7d35c64", + "sha256": "c71d239df91726fc519c6eb72d318ec65820627232b2f796219e87dcf35d0ab4" + } + ] +} diff --git a/research/two-full-retained-helper-ceiling/TASK.json b/research/two-full-retained-helper-ceiling/TASK.json new file mode 100644 index 0000000000..7b62f5388f --- /dev/null +++ b/research/two-full-retained-helper-ceiling/TASK.json @@ -0,0 +1,66 @@ +{ + "schema_version": 1, + "task_id": "complex-new-helper-inventory", + "priority_revision": 7, + "base_commit": "624de9dc66858af0945e5f8a0942488d62280d43", + "original_card": { + "id": "complex-new-helper-inventory", + "question": "Can a new local cost interface change the deficit-to-recursive-cost ratio beyond current packing?", + "starting_points": [ + "docs/research/research-family-status.md", + "research/complex-local-word-ceiling/README.md", + "research/heterogeneous-owner-assembly/README.md", + "certificates/selected-result.json", + "research/selected-k8-unrestricted-ends/README.md" + ], + "methods": [ + "Propose a changed helper inventory and derive an optimistic exact moment.", + "Design a small completed instance and independently verify its endpoint and rank bill." + ], + "acceptance_gate": "A new physically realizable contract outside the frozen catalogue whose per-call profile, screened with ceiling.ceiling(), beats the selected word's packing ceiling; a lower cap does not establish identical circuitry or order attainable optima, and is insufficient to pass the stronger-budget target under this model. A scoped local result may be retained without a complete supplier. Expanding it into further construction rounds requires the family-level budget and obligation gate in research-family-status.md; an optimistic passing relaxation alone is not acceptance.", + "first_step": { + "command": [ + "python3", + "-B", + "research/complex-local-word-ceiling/verify.py" + ], + "expected": "PASS_COMPLEX_LOCAL_WORD_CEILING", + "inspect": "Read the selected word's per-call local profile, its packing ceiling and the lever table; run levers.py for the ideal budget of the lever you target.", + "scope": "Positive control and planning budget only; this is not a new construction or full cold replay." + }, + "first_experiment": "Before any synthesis, write the candidate per-call local profile (and centre charge / unpaid coordinates if changed) and screen it with ceiling.ceiling(); reject it if even the ideal ceiling does not beat the selected word's by your stated margin.", + "bottleneck_link": "Packing of the selected word is capped at +0.87% (ceiling model); only a lower local excess spend or a changed coverage law raises the cap.", + "allowed_variations": [ + "Narrow to one changed boundary or helper type with explicit counts.", + "If the coverage law, template or guard changes, derive an applicable fully charged replacement bound instead of applying the incumbent ceiling outside its scope." + ], + "scope_change_triggers": [ + "Mixing only providers already inside the pinned catalogue.", + "Only changing helper terminal subspaces and monotone frames within the fixed scalar word, entrances and cleanup contract already covered by #1995/#2013.", + "Continuing a partial cost improvement while leaving the same unpriced consumer, restoration or central-readout obligation unresolved; refresh the family expansion decision first. Local product-retiming evidence has a narrow scope and is not a ban on changed graphs or contracts." + ], + "overlap_terms": [ + "helper inventory", + "heterogeneous-owner", + "mutable leaver" + ] + }, + "scope_status": "changed", + "actual_scope": "Two main-owner FULL invocations with disjoint simultaneous productive helper jobs retained exactly once; arbitrary invertible owner controls over the separated central-monomial/transverse-Clifford algebra and restored B-valued spectators. Self-contained all-width compression/rank ceiling with source-bound normalizers.", + "scope_change_reason": "Explicit source-bound retained-helper feasibility assignment changes the inventory card to an obstruction for a productive-helper premise excluded by PR4920. It does not extend the exactly-two-owner full-routing theorem or cover a joint224-owner controller.", + "bottleneck_link": "The optimistic independent112-fold invoice224H17+2H-2P has positive supplied margin but needs a complete endpoint preserving all original helper jobs. This result rejects its independently replicated separated-control realization.", + "budget_minutes": 60, + "stop_rule": "Stop after source normalization, written compression theorem, four exact symbolic controls and independent review; no routing-family search, native all632 replay or compiler extension.", + "outcome": "negative-result", + "evidence": "Self-contained allm1/m2/s rank proof and all-width tensor separation;112 native phase normalizers,114688 exact modulo-four phase equalities and four noncommutative compression fixtures. Independent source/algebra agent review is separate from formal proof.", + "author": "Prepared for Chris R / Clear1nsight with OpenAI Codex assistance", + "ai_assistance": "Substantial OpenAI Codex assistance. User-authorized gpt-6.1-sol/high agents separately derived proof, source/accounting review and packaging. No independent human or proof-kernel acceptance.", + "open_questions": [ + { + "question": "Can one literal central/fresh monomial route preserve both distinct helper jobs while changing the complete paid invoice?", + "why_it_matters": "That address mixing lies outside the separated subgroup and can change the projection rank premise.", + "first_step": "Bind the actual forward/backward source roles, including the rank1 X entrance versus empty Y/helper entrance; price all conversion and cleanup before search.", + "blocked_by": "No complete actual changed-routing word or improved paid inventory is supplied." + } + ] +} diff --git a/research/two-full-retained-helper-ceiling/VERIFY.json b/research/two-full-retained-helper-ceiling/VERIFY.json new file mode 100644 index 0000000000..4246601992 --- /dev/null +++ b/research/two-full-retained-helper-ceiling/VERIFY.json @@ -0,0 +1,34 @@ +{ + "schema_version": 1, + "status": "ready", + "python": "3.12", + "requirements": [], + "inputs": [], + "commands": [ + { + "argv": [ + "{python}", + "-I", + "-W", + "error", + "-B", + "{package}/verify.py" + ], + "timeout_seconds": 60, + "checks": "Authenticates exact frozen science tree and eight source Git/SHA pins; unchanged checker verifies112 native fullH9 normalizers,114688 absolute phase equalities, helper224 empty/full frames and four symbolic noncommutative compression fixtures with wrong-row/no-commutation controls. Written proof supplies allm1/m2/s and all-width quantifiers. No native632, compiler or outer replay." + }, + { + "argv": [ + "{python}", + "-I", + "-O", + "-W", + "error", + "-B", + "{package}/verify.py" + ], + "timeout_seconds": 60, + "checks": "Authenticates exact frozen science tree and eight source Git/SHA pins; unchanged checker verifies112 native fullH9 normalizers,114688 absolute phase equalities, helper224 empty/full frames and four symbolic noncommutative compression fixtures with wrong-row/no-commutation controls. Written proof supplies allm1/m2/s and all-width quantifiers. No native632, compiler or outer replay." + } + ] +} diff --git a/research/two-full-retained-helper-ceiling/independent/INPUTS.json b/research/two-full-retained-helper-ceiling/independent/INPUTS.json new file mode 100644 index 0000000000..f2f0c2970e --- /dev/null +++ b/research/two-full-retained-helper-ceiling/independent/INPUTS.json @@ -0,0 +1,10 @@ +{ + "upstream_path": "../sol1337-global-centre-cut/outputs/retained-helper-three-owner-algebra", + "frozen_sha256": { + "PROOF.md": "63ec5034fb526dc9243de487f97477e51221773f4b7cae21b38df719ba1362c7", + "check.py": "c1f876e17b485b393c910129502c6840c5aa7767863f7cc8c453275afc468218", + "RESULT.json": "ca750d835436d6b5455830e109569cc5c8b1b28b2c200ff84885aaac97869a7a", + "SOURCES.json": "95e03830d931e2ac6843457a832a6f75c6227f85cae85d95095c65df7049c490", + "FILES.json": "49e5479fc694533b4b73bb94effb5c9284e5decc4dc95dbabb6cf89df31c0fc1" + } +} diff --git a/research/two-full-retained-helper-ceiling/independent/REVIEW.json b/research/two-full-retained-helper-ceiling/independent/REVIEW.json new file mode 100644 index 0000000000..0a23ed1f4c --- /dev/null +++ b/research/two-full-retained-helper-ceiling/independent/REVIEW.json @@ -0,0 +1,170 @@ +{ + "all112_normalizers_agree": true, + "constructive_consumer_claim": false, + "exclusions": [ + "full central/fresh routing outside separated subgroup", + "noncolumnwise width-specific address grammar", + "extra nonB operations or prefix taps", + "changed helper jobs or independent input ownership", + "discarded dirty or main-dependent garbage", + "unproved physical native boundary conversion" + ], + "frozen_sha256": { + "FILES.json": "49e5479fc694533b4b73bb94effb5c9284e5decc4dc95dbabb6cf89df31c0fc1", + "PROOF.md": "63ec5034fb526dc9243de487f97477e51221773f4b7cae21b38df719ba1362c7", + "RESULT.json": "ca750d835436d6b5455830e109569cc5c8b1b28b2c200ff84885aaac97869a7a", + "SOURCES.json": "95e03830d931e2ac6843457a832a6f75c6227f85cae85d95095c65df7049c490", + "check.py": "c1f876e17b485b393c910129502c6840c5aa7767863f7cc8c453275afc468218" + }, + "full_native_632_replay_performed": false, + "independent_prior_normalizer_receipt_sha256": "bd3d02645c2bfc1fdb6c44a2484abf7269c26d5514c248168a0fa792c99d30ca", + "independent_symbolic_and_noncommutative_fixtures": [ + { + "C": [ + 0, + 1, + 3 + ], + "U": [ + 1, + 2 + ], + "clean_kernel_max": 3, + "m1": 1, + "m2": 1, + "observed_regular_rank": 6, + "ordinary_s": 0, + "owners": 4, + "regular_B_dimension": 4, + "regular_rank_lower_bound": 4, + "required_nonB_original_columns": 4, + "target_regular_rank": 0 + }, + { + "C": [ + 0, + 1, + 2, + 3, + 4, + 5, + 6 + ], + "U": [ + 1, + 5, + 6 + ], + "clean_kernel_max": 4, + "m1": 0, + "m2": 3, + "observed_regular_rank": 12, + "ordinary_s": 2, + "owners": 7, + "regular_B_dimension": 4, + "regular_rank_lower_bound": 12, + "required_nonB_original_columns": 5, + "target_regular_rank": 8 + }, + { + "C": [ + 0, + 1, + 4 + ], + "U": [ + 1, + 2, + 3 + ], + "clean_kernel_max": 4, + "m1": 2, + "m2": 1, + "observed_regular_rank": 8, + "ordinary_s": 0, + "owners": 5, + "regular_B_dimension": 4, + "regular_rank_lower_bound": 4, + "required_nonB_original_columns": 5, + "target_regular_rank": 0 + }, + { + "C": [ + 0, + 1, + 5, + 6, + 7 + ], + "U": [ + 1, + 2, + 3, + 4, + 7 + ], + "clean_kernel_max": 6, + "m1": 3, + "m2": 2, + "observed_regular_rank": 12, + "ordinary_s": 1, + "owners": 8, + "regular_B_dimension": 4, + "regular_rank_lower_bound": 8, + "required_nonB_original_columns": 7, + "target_regular_rank": 4 + } + ], + "new_kappa": null, + "scope": "Exactly two main owners per controller/port, arbitrary m1/m2 retained nonH helper owners and s B-valued ordinary/restored scratch. Independent112-port replication only; arbitrary joint224-main-owner controls are not asserted by this written theorem.", + "source_checks": [ + { + "commit": "20bb93cd990d2ff683e4d0fc56b87a42cd5d3296", + "path": "source/complex_controller_factor.py", + "sha256": "1de9aaf918e6a4f2f5448754c1f3c3da3b85e6257849ebd097af09859c4e5497" + }, + { + "commit": "20bb93cd990d2ff683e4d0fc56b87a42cd5d3296", + "path": "source/native_inventory.py", + "sha256": "65539acaf45bdfe8c5aee6830f9c9b3d1107c442a60842ef803fdd7688de8f32" + }, + { + "commit": "20bb93cd990d2ff683e4d0fc56b87a42cd5d3296", + "path": "source/phase_check.py", + "sha256": "0aec13f218fd131b63430064c7cd212b4320a87564e75c34a359e08f1e249009" + }, + { + "commit": "20bb93cd990d2ff683e4d0fc56b87a42cd5d3296", + "path": "source/prune_native.py", + "sha256": "f2b37c183a10922eabc8e0436b426a08866430e96bd0adc7e178951c7fbb5257" + }, + { + "commit": "b75a27bf07f1584b20babfddf887493981cd5949", + "path": "source/4712-README.md", + "sha256": "d099a1ca2a866701f9a2219a25f4e67db0043ed101606393d985a2055ab61873" + }, + { + "commit": "20bb93cd990d2ff683e4d0fc56b87a42cd5d3296", + "path": "source/DATA-PHASES.json", + "sha256": "c5916ff312678f12aba403847643fbbc29f643acec60bdf836fa56cd3e8251fa" + }, + { + "commit": "20bb93cd990d2ff683e4d0fc56b87a42cd5d3296", + "path": "source/clifford_exact.py", + "sha256": "2982ead07721e83358dc67c6f49c2b4c16a236a6bebdfd72f58221be1f5d0962" + }, + { + "commit": "20bb93cd990d2ff683e4d0fc56b87a42cd5d3296", + "path": "source/ACTUAL-WORD.json.gz", + "sha256": "7679daa4ec6a40f56fc7f0202379a6f454310e94945aba4f48beaaaafb838d05" + } + ], + "status": "PASS_SCOPED_SEPARATED_HELPER_COMPRESSION_REVIEW", + "written_proof_review": { + "allwidth": "PASS for fixed finite columnwise Clifford grammar via projective homogeneous separators at sufficiently large f; width-dependent coefficients over B are allowed", + "backward": "entrywise complex conjugate, not adjoint in general; fullF9 is symmetric special case", + "clean_work": "PASS only with reversible global B extension and zero response on every required nonB original input in ALL cleared outputs; no discarded main-dependent garbage", + "pure_helper_partition": "PASS: every actual helper is one Clifford group unit; insideH is a B unit, outsideH projects0, independent of Fourier grade or a transverse factor", + "submatrix_rank": "PASS: invertible regular-module W implies rank compression >=(|U|+|C|-n)d=(s+1)d" + } +} diff --git a/research/two-full-retained-helper-ceiling/independent/REVIEW.md b/research/two-full-retained-helper-ceiling/independent/REVIEW.md new file mode 100644 index 0000000000..52c0b0a827 --- /dev/null +++ b/research/two-full-retained-helper-ceiling/independent/REVIEW.md @@ -0,0 +1,47 @@ +# Independent review of the separated retained-helper compression gate + +**PASS within the stated separated, two-main-owner controller model.** No mathematical or source-binding blocker was found in the frozen proof `63ec5034fb526dc9243de487f97477e51221773f4b7cae21b38df719ba1362c7`, checker `c1f876e17b485b393c910129502c6840c5aa7767863f7cc8c453275afc468218`, RESULT `ca750d835436d6b5455830e109569cc5c8b1b28b2c200ff84885aaac97869a7a`, and SOURCES `95e03830d931e2ac6843457a832a6f75c6227f85cae85d95095c65df7049c490`. + +G confirmed that the written theorem has exactly two main owners per controller/root port, with arbitrary numbers of distinct first-call and second-call helper owners and B-valued spectators. The quoted224-main invoice comes from112 independent replicated controllers. Arbitrary joint224-main-owner mixing is not silently included. A k-shear block extension would require its own stated source/common-subgroup premises and argument. + +## Submatrix rank proof + +Let n=2+m1+m2+s and d=dim(B). The proof chooses U by excluding the second shear's destination row and its m2 non-B helper rows, and C by excluding the first call's m1 non-B helper columns. For these rows and columns, every remaining unwanted term has exactly one pure group word outside H, multiplied on either side by B coefficients. Subgroup support cannot move that word into H. Thus the projected compression is exactly + +`pi(M)[U,C] = D2[U] W[U,C] D1[C]`. + +This step does not use an outside-times-outside cancellation rule, query commutation, helper commutation or normalization of B by a query. The omitted destination row can contain two outside factors; the checker correctly leaves such projections opaque. + +Since W is invertible on the regular K-vector-space module B^n, restriction to C is injective and projection onto U destroys at most (n−|U|)d dimensions. Consequently the compression rank is at least (|U|+|C|−n)d=(s+1)d. Its B-unit diagonal factors preserve rank. The target projection has rank sd, and invertible B-valued outer controls preserve the projected rank by the bimodule property. The contradiction is valid over arbitrary noncommutative B with zero divisors. No division by a general B element or field-rank theorem is smuggled in. + +My independent corroboration uses sparse chronological path expansion, without importing G's matrix engine. Four fixtures include arbitrary ordinary B-unit diagonal factors, noncommuting symbols, and exact coefficients over M2(Q). Elementary block shears with noncommuting and nonunit coefficients produce invertible controls. Their exact rational compression ranks satisfy the bound. M2(Q) has zero divisors; these are corroborating fixtures, while the universal conclusion comes from the written dimension argument. + +## Reversible clean work and forbidden garbage + +Put k=2+m1+m2. The lower bound gives nullity at most (k−1)d, independently of how many B-valued clean spectators are included in s. If all k required original non-B input columns are realized, their pure non-H target outputs have zero projection. Every cleared clean output must also have zero response to those original inputs. Hence these columns span kd dimensions in the projected kernel, a contradiction. + +This is sound only with a reversible global B-valued extension and full required cleanup. The clean initial value0 alone does not grant permission to discard or reset main-dependent garbage. A row that retains such garbage invalidates the zero-column premise. Extra non-B operations on otherwise uncredited clean fields are not B-valued spectators and are outside this extension. Arbitrary rectangular control or unrestricted dirty erasure is not proved. + +## Source helpers and backward orientation + +All eight vendored sources match their exact pinned Git objects, SHA256 values and Git-blob hashes. Actual helper224 starts in empty frame0 and ends in full frame1. The canonical-frame engine therefore supplies the pure Clifford unit F9, a product of the nine actual C_ej words. + +All112 new normalizer records agree with the earlier independent Clifford/absolute-phase receipt `WRAPPERS.json`, SHA256 `bd3d02645c2bfc1fdb6c44a2484abf7269c26d5514c248168a0fa792c99d30ca`. The source identities are literal words: + +`H9 = X_t D_A Q`, and `bar(H9) = X_(t xor u) D_A Q^-1`, where u is the XOR of the eight transverse basis directions. + +At port0, q=11, t=15 and u=500, giving backward translation507. No scalar phase is discarded. The independent prior receipt and G's114688 character-phase equalities agree. Raw D0 belongs to the separated subgroup but need not commute with the central phase S; the proof correctly uses membership instead of that false commutation. + +The retained backward source is entrywise complex conjugation, as explicitly selected by `phase_check.py` and implemented by the pinned `prune_native.conjugate`. It is H^(-T), not H.adjoint() in general. FullF9 is symmetric and is a legitimate special case where conjugation equals adjoint. The proof does not reuse the erroneous low-rank adjoint receipt. + +Every actual helper operator is one fixed Clifford word and therefore a pure group unit. It can be classified directly as inside H, giving an invertible B-valued diagonal, or outside H, giving zero projection. No low-rank homogeneous transverse/central factor is needed for this partition. A helper may mix those coordinates internally and still be an admissible outside-H unit. Source helper owner sets must remain distinct, and every original job must retain its target. + +The actual full632-input native endpoint and main normalizer contract remain inherited frozen source premises. This review authenticates their source files and helper word binding; it does not rerun the full632-input program or outer compiler. + +## Width and scope + +The all-width argument is valid for the fixed finite columnwise Clifford grammar. Distinct projective matrix representatives can be separated by homogeneous products of linear functionals of degree |G/Z|−1, then padded to every larger degree. Their tensor powers are therefore independent for all sufficiently large f in the appropriate finite scalar-character quotient. Width-dependent coefficients and free B-valued choices do not defeat the per-width rank argument. No width-one independence of arbitrary Clifford matrices is assumed. + +Central/fresh address mixing outside the separated subgroup, noncolumnwise width-specific routes, source-prefix taps, extra nonmonomial operations, changed helper ownership/targets and arbitrary discarded garbage remain excluded. The theorem does not decide G's separate full-routing construction or A's literal controlled-phase route. It proves no native endpoint, complete paid improvement or higher κ. + +The frozen upstream checker passes read-only in normal and optimized modes with identical output. The independent source/normalizer/compression corroboration also passes in both modes with identical output. `REVIEW.json`, `INPUTS.json` and `MANIFEST.json` bind the bytes, fixtures and scope. Only this review output directory was written. diff --git a/research/two-full-retained-helper-ceiling/science/FILES.json b/research/two-full-retained-helper-ceiling/science/FILES.json new file mode 100644 index 0000000000..2ef3e47fd3 --- /dev/null +++ b/research/two-full-retained-helper-ceiling/science/FILES.json @@ -0,0 +1,65 @@ +{ + "status": "LOCAL_OUTPUTS_ONLY_REVIEW_CANDIDATE", + "files": [ + { + "path": "HANDOFF.md", + "sha256": "12c4154c0f4b51e31f903ba600738bd0f1ef765e5e80edb5fa86588d835a72b3" + }, + { + "path": "PROOF.md", + "sha256": "63ec5034fb526dc9243de487f97477e51221773f4b7cae21b38df719ba1362c7" + }, + { + "path": "RESULT.json", + "sha256": "ca750d835436d6b5455830e109569cc5c8b1b28b2c200ff84885aaac97869a7a" + }, + { + "path": "RUNS.json", + "sha256": "014acb84040bd92937a865afc0f7c89715a1a7b8787bb1389a7c0df1224f1abc" + }, + { + "path": "SOURCE-CHECK.json", + "sha256": "0cd686cd0748bce91c9d79db0ff546ada94cb5db8e22a87291e8412572f493a8" + }, + { + "path": "SOURCES.json", + "sha256": "95e03830d931e2ac6843457a832a6f75c6227f85cae85d95095c65df7049c490" + }, + { + "path": "check.py", + "sha256": "c1f876e17b485b393c910129502c6840c5aa7767863f7cc8c453275afc468218" + }, + { + "path": "source/4712-README.md", + "sha256": "d099a1ca2a866701f9a2219a25f4e67db0043ed101606393d985a2055ab61873" + }, + { + "path": "source/ACTUAL-WORD.json.gz", + "sha256": "7679daa4ec6a40f56fc7f0202379a6f454310e94945aba4f48beaaaafb838d05" + }, + { + "path": "source/DATA-PHASES.json", + "sha256": "c5916ff312678f12aba403847643fbbc29f643acec60bdf836fa56cd3e8251fa" + }, + { + "path": "source/clifford_exact.py", + "sha256": "2982ead07721e83358dc67c6f49c2b4c16a236a6bebdfd72f58221be1f5d0962" + }, + { + "path": "source/complex_controller_factor.py", + "sha256": "1de9aaf918e6a4f2f5448754c1f3c3da3b85e6257849ebd097af09859c4e5497" + }, + { + "path": "source/native_inventory.py", + "sha256": "65539acaf45bdfe8c5aee6830f9c9b3d1107c442a60842ef803fdd7688de8f32" + }, + { + "path": "source/phase_check.py", + "sha256": "0aec13f218fd131b63430064c7cd212b4320a87564e75c34a359e08f1e249009" + }, + { + "path": "source/prune_native.py", + "sha256": "f2b37c183a10922eabc8e0436b426a08866430e96bd0adc7e178951c7fbb5257" + } + ] +} diff --git a/research/two-full-retained-helper-ceiling/science/HANDOFF.md b/research/two-full-retained-helper-ceiling/science/HANDOFF.md new file mode 100644 index 0000000000..fa9e492c10 --- /dev/null +++ b/research/two-full-retained-helper-ceiling/science/HANDOFF.md @@ -0,0 +1,66 @@ +# DONE / scoped FINDING: simultaneous retained helpers in separated controls + +Local outputs-only status. No positive consumer, native word, new kappa, +public post, commit or push. The folder name retains the initial three-owner +assignment; the actual source contract and theorem use FOUR distinct owners. + +Source:20bb93cd990d2ff683e4d0fc56b87a42cd5d3296. +Method predecessor:4920,7eb4ef5251f7ba96c7e5d78c42fc98e66b7be4ba. +Dirty-helper cost predecessor:4712,b75a27bf07f1584b20babfddf887493981cd5949. + +Question: can two FULL main shears, each simultaneous with its own independent +helper job, retain both helper rewards while producing two independent +nonmonomial high-rank main jobs? + +Result: impossible under invertible pre/inter/post owner matrices over the +separated central-monomial/transverse-Clifford algebra. This includes +noncommuting central functions and arbitrary retained pure helper operations +outside that subgroup. For m1 first-call non-B helpers,m2 second-call non-B +helpers,s B-valued jobs/identity spectators and n=2+m1+m2+s, an untouched-row / +ordinary-column compression of pi_B(T2 W T1) has rank at least(s+1)dim(B). +The required diagonal endpoint has rank only s*dim(B). No commutation or +domain assumption is used. The four-owner case has m1=m2=1,s=0. + +Scope exclusions: full central/fresh address mixing; arbitrary rectangular +copy/drop or erasure of main-dependent garbage; prefix taps/extra nonmonomial +operations; changed helper jobs, census or ownership; width-specific address +grammar outside a fixed finite columnwise Clifford alphabet. Restored dirty +B scratch is granted. Clean zeros must be cleared through a reversible global +extension to use the stated cleanup corollary. This does not prove native +impossibility under all legal free operations. + +Source binding: helper224 is literally empty-to-full F9. All112 q/orthogonal8 +recipes satisfy phase-exact H9=X_t D_A Q and actual backward +bar(H9)=X_(t xor u)D_A Q^-1. The source backward ABI is primitive-wise complex +conjugation in unchanged circuit order, generally NOT adjoint/reversed charts. +The low-rank adjoint matching withdrawn by the source agent is not used. +Port0 uses q11,t15,u500,backward translation507 and a rawD0 translation that +does not commute with the central S wrapper. All source files have full Git +blob and SHA256 pins in SOURCES.json. + +Bounded checks: + + python3 -I -W error -B outputs/retained-helper-three-owner-algebra/check.py + python3 -I -O -W error -B outputs/retained-helper-three-owner-algebra/check.py + +The verifier checks actual native helper224 frames,112 source normalizers, +114688 absolute phase equalities and four fixed symbolic noncommutative +compression fixtures. Wrongly including a queried row exposes an opaque +double-nonB term, and commuting raw D through Q changes the symbolic word. +These are corroboration and source-binding checks; the all-width statement +uses the self-contained projective-tensor separation proof in PROOF.md. +No632-field replay, compiler transfer, norm optimization or family search ran. + +Complete optimistic invoice remains224H17+2H-2P with all816 helper rewards +retained once, supplied margin39.063938114801903 at C=.0030217758. The budget +is positive before endpoint/finite/compiler obligations. This theorem closes +only its separated-control realization. PR4712's dirty-helper substitution +costs three oracle calls minus one helper reward, namely2*r^t against one +replaced centre's r^t, and cannot fund the proposed saving. + +Next actual gate: a literal central/fresh monomial route with corrected +native F/B boundaries that preserves every original helper job. X's rank1 +entry chart differs from empty Y/helper entry charts; charge conversion. +The source agent owns the literal Y/helper swap invoice. Full exit charts +alone do not make entrance swaps free. Parent owns any public checkpoint or +integration decision; no standalone PR is requested by this handoff. diff --git a/research/two-full-retained-helper-ceiling/science/PROOF.md b/research/two-full-retained-helper-ceiling/science/PROOF.md new file mode 100644 index 0000000000..85eb3ade56 --- /dev/null +++ b/research/two-full-retained-helper-ceiling/science/PROOF.md @@ -0,0 +1,236 @@ +# Retaining simultaneous helper jobs does not rescue two FULLs in the separated algebra + +This outputs-only gate answers the four-owner correction to the original +three-owner question. It proves a scoped obstruction, not a new construction +or kappa. It keeps every original helper job distinct and counts its transform +once in its own paid invocation. Full central/fresh address mixing remains +outside the theorem and is the next constructive question. + +## Literal simultaneous source contract + +Freeze the native source at `20bb93cd990d2ff683e4d0fc56b87a42cd5d3296`. +Its authenticated main interface has form + + F_s = diag(d_sx,d_sy) [[1,0],[Q_s^-1,1]], + B_s = diag(d_sx,d_sy) [[1,-Q_s],[0,1]]. + +The d factors include the real transverse operations and their raw phase +translations. They are not silently set to identity or commuted through +central wrappers. Two source invocations also act on two DISTINCT original +helper inputs. For a forward first call and backward second call, write + + T1=diag(d_1x,d_1y,H1,I) E21(Q1^-1), + T2=diag(d_2x,d_2y,I,bar(H2)) E12(-Q2). + +Here H1 is the first call's helper job and bar(H2) is the second call's raw +dual job. The helper on which the other invocation has already acted is an +identity spectator at that invocation. Eij(a)=I+e_i a e_j^T. Products act +on column vectors from right to left. No H1/H2 equality is assumed. + +For arbitrary interstage W let D1,D2 be these four-owner diagonal factors, +and N=W D1. The exact noncommutative expansion is + + Mij = (D2)ii [ Nij + delta(j,1) Ni2 Q1^-1 + -delta(i,1) Q2 N2j + -delta(i,1)delta(j,1) Q2 N22 Q1^-1 ]. + +This is a source contract, not an emitted consumer. It preserves the order +of every raw d, Q and H factor. A candidate would need legal pre/post +boundaries L,R producing the two desired main jobs and BOTH original +helper jobs; replacing the helpers by one twice-transformed owner changes +the inventory and the question. + +The frozen `phase_check.py` explicitly uses +`P.conjugate(ce,op)` for backward helpers. `prune_native.conjugate` negates +the primitive C signs, diagonal phases and global phase while retaining +circuit order. Thus bar(H) is entrywise complex conjugation, equivalently +H^(-T) for these unitary operators, and is generally NOT H.adjoint(). +It does not reverse the entry/output charts. The earlier low-rank adjoint +matching is not used here. Full H9 is a special case: its C_ej factors +commute, so bar(F9)=F9.adjoint. + +## Exact fullH9 source normalizers, with absolute phase + +Actual helper224 has empty entry frame0 and full exit frame1. The frozen +canonical-frame engine therefore gives the literal native job + + H9=F9=product(j=0,...,8) C_ej, + C_v=((1+i)I+(1-i)X_v)/2. + +For each of the112 actual ports, let q and a_1,...,a_8 be its source +`DATA-PHASES.json` directions. They form an orthonormal nine-dimensional +binary basis. Put Q=C_q, D_A=product C_ai, and u=xor_i a_i. The portable +checker derives and verifies the literal identities + + F9 Q^-1 = X_t D_A, + H9 = X_t D_A Q, + bar(H9) = X_(t xor u) D_A Q^-1. (1) + +In a Fourier character k, C_v has exact eigenvalue i^parity(v.k). +The checker derives t from the nine single-bit characters and verifies +both identities for ALL512 characters at each of112 ports:114688 exact +modulo-four phase equalities, including k=0. This proves absolute phase, +not just a binary symplectic action. No numerical matrix tolerance, zero +phase omission or tensor power of a sum is used. Pure word identities +lift columnwise to every positive width. + +For example port0 has q=11, +`a=[13,14,7,16,32,64,128,256]`, t=15 and u=500. Thus + + H9 = X15 D_A Q11, + bar(H9) = X507 D_A Q11^-1. + +There is no additional global phase. In these coordinates X_t is a product +of a central Pauli translation and transverse Pauli translations. Hence +`rawD0=X_t D_A` lies in the separated free subgroup below. It need not +commute with the central phase wrapper `S|x>=i^parity(q.x)|x>`; port0 is +an actual noncommuting control because parity(q.t)=1. Conjugating the +literal words by an admitted central monomial keeps rawD0 in that subgroup +and H9 outside it, even when the resulting central queries do not commute. +This uses subgroup membership, not a false commutation identity. + +These calculations reuse the actual recipe and normalizer observation of +the independent source/accounting agent, with exact source bytes retained. +They do not rerun the whole native632-field execution or the outer compiler. + +## Algebraic statement, including all retained pure helper jobs + +Let G be a fixed finite-phase Clifford group for one column, and H a +subgroup. At width f work in a finite-dimensional central-character twisted +group algebra A_f with subgroup algebra B_f on H/Z, over a characteristic- +zero splitting field K. Write d=dim_K B_f. Let pi:A_f->B_f retain only +subgroup basis classes. It is a B_f-bimodule map. Membership and this +projection are unchanged by scalar phases. No domain assumption is made. + +For the source application, H grants all transverse Clifford operations +and central monomial operations, retaining their tensor-factor separation. +It includes the raw d_s, their translations and admitted central monomial +wrappers. A full rank17 main target is outside H. Equation(1) shows the +literal fullH9 helpers are outside H: their central factor is Q or Q^-1, +which is not monomial, while D_A is purely transverse. This is an exact +factor statement; it does not homogenize a rank4 helper to rank9. + +Consider two main owners, m1 non-H helper jobs emitted in the first call, +m2 other non-H helper jobs emitted in the second call, and s further owners +whose desired maps lie in H (including restored identity scratch). Thus + + n=2+m1+m2+s. + +Each call has ONE elementary main shear with a pure query outside H. +Its diagonal factors on the main owners are units in B_f. On its own +helper owners it performs the specified pure group jobs; other helpers are +identity spectators. Any H-valued helper factors are units in B_f and +included among the s ordinary owners. Helper owner sets are disjoint. +Allow arbitrary L,W,R in GL_n(B_f), and arbitrary noncommuting queries and +helper group words outside H. Suppose the endpoint is the two independent +non-H main jobs together with every original helper job and its required +H-valued spectators. Then no such endpoint exists. + +### Compression proof + +Write M=T2 W T1, with diagonal factors before the source shears as above. +Let U contain all output rows except the second shear's destination main +row and the m2 non-H helpers transformed in the second call. Let C contain +all input columns except the m1 non-H first-call helper owners. Thus + + |U|=n-m2-1, |C|=n-m1. + +For rows in U the second shear contributes no non-H term and its diagonal +factor is a unit in B_f. For columns in C, T1's diagonal is a unit in B_f; +its only other possible term contains the SINGLE first query outside H. +Multiplication by B_f on either side keeps that term outside H. Therefore + + (pi(M))_(U,C) = (D2)_U W_(U,C) (D1)_C. (2) + +No product of two non-H words is evaluated or assumed to lie in H. In +particular Q2, Q1 and the helpers need not commute or normalize B_f. + +View W as an invertible K-linear map on the regular right module B_f^n. +Restricting its input to C gives an injective map on a |C|d-dimensional +space. Projecting its output to U can destroy at most (n-|U|)d dimensions. +Consequently + + rank_K W_(U,C) >= (|U|+|C|-n)d = (s+1)d. + +The B_f-unit diagonal factors in(2) preserve this rank. A compression +cannot have greater rank than the whole matrix, so + + rank_K pi(M) >= (s+1)d. (3) + +The desired diagonal endpoint instead projects to zero on its two main +jobs and all m1+m2 non-H helper jobs. Its s H-valued target words are group +units, so its projected rank is exactly s*d. Because pi is a bimodule map, +invertible outer L,R preserve projected rank. This contradicts(3). +Zero divisors in B_f do not affect this finite vector-space argument. + +For the natural four-owner case, m1=m2=1,s=0. The two U rows are the source +main row of the second shear and the FIRST helper row. If pi(M)=0, both +rows of W must be supported on the first helper's single column. They +cannot jointly surject onto two independent B_f output modules. This is +the shortest form of the obstruction. It does not depend on a common Q, +the first shear orientation, or the quadratic double-query product. + +## All-width faithfulness and exact free-control boundary + +Let Z be the scalar subgroup of the chosen finite-phase group G; H contains +Z. At width f specialize every scalar z=ζI as ζ^f. The quotient A_f has +one basis class per projective group element G/Z. The proof of injective +tensor evaluation is short. Choose representatives v_t. For each t and +each other u choose a linear functional vanishing on v_u and nonzero at +v_t. Their product isolates v_t in degree |G/Z|-1. Multiplying by a power +of a functional nonzero at v_t extends this to every larger degree f. +Applying it to the tensor vectors proves independence for every +f>=|G/Z|-1. Thus the operator endpoint would give a forbidden A_f identity +at all sufficiently large widths. Width-dependent scalar coefficients and +free choices within this same finite alphabet are allowed. Accidental +small-width linear relations between Clifford matrices are not used. + +The theorem grants a large but SPECIFIC free grammar: central monomials +and transverse Cliffords, with their separation preserved. Arbitrary +central/fresh address mixing is outside B_f. The theorem also retains +invertible global owner controls and restored spectator contracts. It +does not inherit the separate4856 maximal-grade proof's arbitrary +rectangular COPY/DROP conclusion. Discarding or erasing main-dependent +garbage can lower projected rank and is a different endpoint. Zero clean +work fields cleared at exit can be included by the equivalent kernel +form: (3) gives nullity at most (m1+m2+1)d, while the 2+m1+m2 required +non-H original input columns would all have zero projected output. +This requires a reversible global B_f extension and full cleanup, not an +unproved permission to erase arbitrary dirty state. + +## Invoice, nearest predecessor and next actual lever + +Retaining all816 autonomous helper rewards leaves the hypothetical invoice +`224H17+2H-2P`, with supplied optimistic margin39.063938114801903 at +C=.0030217758. That positive budget motivates testing a changed resource; +it is not an endpoint certificate. This gate closes the separated-resource +realization even with retained transformed helper operations. No kappa gain +or complete native obstruction is claimed. + +PR4712, head b75a27bf07f1584b20babfddf887493981cd5949, already gives the +dirty-helper word `h+=x; h=Fh; y+=h; h=F^-1h; h-=x; h=Fh; y-=h`. +It returns `(x,y+Fx,Fh)`, with three F/F^-1 calls and four scalar ADDs. +Its paid-minus-helper bill is2*r^t against one replaced owned centre's +r^t. It is not a new saving and is credited here rather than rediscovered. + +The nearest method is PR4920 at7eb4ef5251f7ba96c7e5d78c42fc98e66b7be4ba: +its separated theorem allowed identity scratch, while its full-monomial +grade theorem allowed exactly two owners. The present compression argument +adds simultaneously transformed productive helper operations to the first +scope; it does not combine the two old scopes into a universal result. +The parent independently checked the rank argument and supplied the +commuting-Q row-kill precursor. Native operators and source interfaces are +credited to Cinna Davis/1337isnot1337 and the upstream contributors. Source +normalizer reuse and backward-ABI correction are credited to the independent +accounting/source agent and shared-producer agent. New derivation and +portable corroboration: OpenAI Codex gpt-6.1-sol/high. Apache-2.0. + +The smallest constructive change is a literal central/fresh monomial route +on the actual native role boundaries. It must preserve both distinct helper +jobs and pay for any entrance-chart conversion. X begins in a rank1 chart; +Y and the full helper begin empty. Common full exit charts do not make +swapping X and helper inputs free. An already transformed arbitrary value +Hh, supplied before all controls and returned unchanged, is just an arbitrary +dirty coordinate after renaming w=Hh; useful resource access must involve +the producer H itself or a correlated saved original input. No routing +family search or native word was emitted for this gate. diff --git a/research/two-full-retained-helper-ceiling/science/RESULT.json b/research/two-full-retained-helper-ceiling/science/RESULT.json new file mode 100644 index 0000000000..da89fac6d0 --- /dev/null +++ b/research/two-full-retained-helper-ceiling/science/RESULT.json @@ -0,0 +1,2115 @@ +{ + "corrected_backward_helper": "entrywise conjugate(H), NOT adjoint(H) in general", + "exclusions": [ + "central/fresh address mixing outside separated subgroup", + "prefix taps or extra nonmonomial operations", + "changed helper jobs, census or input ownership", + "non-columnwise width-specific address grammar" + ], + "fullH9_exception": "barF9=F9.adjoint because literal C_ej factors commute", + "native_source": "20bb93cd990d2ff683e4d0fc56b87a42cd5d3296", + "native_word_emitted": false, + "new_kappa": false, + "normalizer_phase_equalities": 114688, + "normalizers": [ + { + "backward_translation": 507, + "port": 0, + "q": 11, + "rawD0_commutes_with_S": false, + "translation": 15, + "transverse_axes": [ + 13, + 14, + 7, + 16, + 32, + 64, + 128, + 256 + ], + "transverse_square_translation": 500 + }, + { + "backward_translation": 507, + "port": 1, + "q": 19, + "rawD0_commutes_with_S": false, + "translation": 23, + "transverse_axes": [ + 21, + 22, + 8, + 7, + 32, + 64, + 128, + 256 + ], + "transverse_square_translation": 492 + }, + { + "backward_translation": 507, + "port": 2, + "q": 35, + "rawD0_commutes_with_S": false, + "translation": 39, + "transverse_axes": [ + 37, + 38, + 8, + 16, + 7, + 64, + 128, + 256 + ], + "transverse_square_translation": 476 + }, + { + "backward_translation": 507, + "port": 3, + "q": 67, + "rawD0_commutes_with_S": false, + "translation": 71, + "transverse_axes": [ + 69, + 70, + 8, + 16, + 32, + 7, + 128, + 256 + ], + "transverse_square_translation": 444 + }, + { + "backward_translation": 507, + "port": 4, + "q": 131, + "rawD0_commutes_with_S": false, + "translation": 135, + "transverse_axes": [ + 133, + 134, + 8, + 16, + 32, + 64, + 7, + 256 + ], + "transverse_square_translation": 380 + }, + { + "backward_translation": 507, + "port": 5, + "q": 259, + "rawD0_commutes_with_S": false, + "translation": 263, + "transverse_axes": [ + 261, + 262, + 8, + 16, + 32, + 64, + 128, + 7 + ], + "transverse_square_translation": 252 + }, + { + "backward_translation": 509, + "port": 6, + "q": 13, + "rawD0_commutes_with_S": false, + "translation": 15, + "transverse_axes": [ + 14, + 11, + 7, + 16, + 32, + 64, + 128, + 256 + ], + "transverse_square_translation": 498 + }, + { + "backward_translation": 509, + "port": 7, + "q": 21, + "rawD0_commutes_with_S": false, + "translation": 23, + "transverse_axes": [ + 22, + 19, + 8, + 7, + 32, + 64, + 128, + 256 + ], + "transverse_square_translation": 490 + }, + { + "backward_translation": 509, + "port": 8, + "q": 37, + "rawD0_commutes_with_S": false, + "translation": 39, + "transverse_axes": [ + 38, + 35, + 8, + 16, + 7, + 64, + 128, + 256 + ], + "transverse_square_translation": 474 + }, + { + "backward_translation": 509, + "port": 9, + "q": 69, + "rawD0_commutes_with_S": false, + "translation": 71, + "transverse_axes": [ + 70, + 67, + 8, + 16, + 32, + 7, + 128, + 256 + ], + "transverse_square_translation": 442 + }, + { + "backward_translation": 509, + "port": 10, + "q": 133, + "rawD0_commutes_with_S": false, + "translation": 135, + "transverse_axes": [ + 134, + 131, + 8, + 16, + 32, + 64, + 7, + 256 + ], + "transverse_square_translation": 378 + }, + { + "backward_translation": 509, + "port": 11, + "q": 261, + "rawD0_commutes_with_S": false, + "translation": 263, + "transverse_axes": [ + 262, + 259, + 8, + 16, + 32, + 64, + 128, + 7 + ], + "transverse_square_translation": 250 + }, + { + "backward_translation": 509, + "port": 12, + "q": 41, + "rawD0_commutes_with_S": false, + "translation": 43, + "transverse_axes": [ + 42, + 4, + 35, + 16, + 11, + 64, + 128, + 256 + ], + "transverse_square_translation": 470 + }, + { + "backward_translation": 509, + "port": 13, + "q": 73, + "rawD0_commutes_with_S": false, + "translation": 75, + "transverse_axes": [ + 74, + 4, + 67, + 16, + 32, + 11, + 128, + 256 + ], + "transverse_square_translation": 438 + }, + { + "backward_translation": 509, + "port": 14, + "q": 137, + "rawD0_commutes_with_S": false, + "translation": 139, + "transverse_axes": [ + 138, + 4, + 131, + 16, + 32, + 64, + 11, + 256 + ], + "transverse_square_translation": 374 + }, + { + "backward_translation": 509, + "port": 15, + "q": 265, + "rawD0_commutes_with_S": false, + "translation": 267, + "transverse_axes": [ + 266, + 4, + 259, + 16, + 32, + 64, + 128, + 11 + ], + "transverse_square_translation": 246 + }, + { + "backward_translation": 509, + "port": 16, + "q": 49, + "rawD0_commutes_with_S": false, + "translation": 51, + "transverse_axes": [ + 50, + 4, + 8, + 35, + 19, + 64, + 128, + 256 + ], + "transverse_square_translation": 462 + }, + { + "backward_translation": 509, + "port": 17, + "q": 81, + "rawD0_commutes_with_S": false, + "translation": 83, + "transverse_axes": [ + 82, + 4, + 8, + 67, + 32, + 19, + 128, + 256 + ], + "transverse_square_translation": 430 + }, + { + "backward_translation": 509, + "port": 18, + "q": 145, + "rawD0_commutes_with_S": false, + "translation": 147, + "transverse_axes": [ + 146, + 4, + 8, + 131, + 32, + 64, + 19, + 256 + ], + "transverse_square_translation": 366 + }, + { + "backward_translation": 509, + "port": 19, + "q": 273, + "rawD0_commutes_with_S": false, + "translation": 275, + "transverse_axes": [ + 274, + 4, + 8, + 259, + 32, + 64, + 128, + 19 + ], + "transverse_square_translation": 238 + }, + { + "backward_translation": 509, + "port": 20, + "q": 161, + "rawD0_commutes_with_S": false, + "translation": 163, + "transverse_axes": [ + 162, + 4, + 8, + 16, + 131, + 64, + 35, + 256 + ], + "transverse_square_translation": 350 + }, + { + "backward_translation": 509, + "port": 21, + "q": 289, + "rawD0_commutes_with_S": false, + "translation": 291, + "transverse_axes": [ + 290, + 4, + 8, + 16, + 259, + 64, + 128, + 35 + ], + "transverse_square_translation": 222 + }, + { + "backward_translation": 509, + "port": 22, + "q": 193, + "rawD0_commutes_with_S": false, + "translation": 195, + "transverse_axes": [ + 194, + 4, + 8, + 16, + 32, + 131, + 67, + 256 + ], + "transverse_square_translation": 318 + }, + { + "backward_translation": 509, + "port": 23, + "q": 321, + "rawD0_commutes_with_S": false, + "translation": 323, + "transverse_axes": [ + 322, + 4, + 8, + 16, + 32, + 259, + 128, + 67 + ], + "transverse_square_translation": 190 + }, + { + "backward_translation": 509, + "port": 24, + "q": 385, + "rawD0_commutes_with_S": false, + "translation": 387, + "transverse_axes": [ + 386, + 4, + 8, + 16, + 32, + 64, + 259, + 131 + ], + "transverse_square_translation": 126 + }, + { + "backward_translation": 510, + "port": 25, + "q": 14, + "rawD0_commutes_with_S": false, + "translation": 15, + "transverse_axes": [ + 13, + 11, + 7, + 16, + 32, + 64, + 128, + 256 + ], + "transverse_square_translation": 497 + }, + { + "backward_translation": 510, + "port": 26, + "q": 22, + "rawD0_commutes_with_S": false, + "translation": 23, + "transverse_axes": [ + 21, + 19, + 8, + 7, + 32, + 64, + 128, + 256 + ], + "transverse_square_translation": 489 + }, + { + "backward_translation": 510, + "port": 27, + "q": 38, + "rawD0_commutes_with_S": false, + "translation": 39, + "transverse_axes": [ + 37, + 35, + 8, + 16, + 7, + 64, + 128, + 256 + ], + "transverse_square_translation": 473 + }, + { + "backward_translation": 510, + "port": 28, + "q": 70, + "rawD0_commutes_with_S": false, + "translation": 71, + "transverse_axes": [ + 69, + 67, + 8, + 16, + 32, + 7, + 128, + 256 + ], + "transverse_square_translation": 441 + }, + { + "backward_translation": 510, + "port": 29, + "q": 134, + "rawD0_commutes_with_S": false, + "translation": 135, + "transverse_axes": [ + 133, + 131, + 8, + 16, + 32, + 64, + 7, + 256 + ], + "transverse_square_translation": 377 + }, + { + "backward_translation": 510, + "port": 30, + "q": 262, + "rawD0_commutes_with_S": false, + "translation": 263, + "transverse_axes": [ + 261, + 259, + 8, + 16, + 32, + 64, + 128, + 7 + ], + "transverse_square_translation": 249 + }, + { + "backward_translation": 510, + "port": 31, + "q": 26, + "rawD0_commutes_with_S": false, + "translation": 27, + "transverse_axes": [ + 25, + 4, + 19, + 11, + 32, + 64, + 128, + 256 + ], + "transverse_square_translation": 485 + }, + { + "backward_translation": 510, + "port": 32, + "q": 74, + "rawD0_commutes_with_S": false, + "translation": 75, + "transverse_axes": [ + 73, + 4, + 67, + 16, + 32, + 11, + 128, + 256 + ], + "transverse_square_translation": 437 + }, + { + "backward_translation": 510, + "port": 33, + "q": 138, + "rawD0_commutes_with_S": false, + "translation": 139, + "transverse_axes": [ + 137, + 4, + 131, + 16, + 32, + 64, + 11, + 256 + ], + "transverse_square_translation": 373 + }, + { + "backward_translation": 510, + "port": 34, + "q": 266, + "rawD0_commutes_with_S": false, + "translation": 267, + "transverse_axes": [ + 265, + 4, + 259, + 16, + 32, + 64, + 128, + 11 + ], + "transverse_square_translation": 245 + }, + { + "backward_translation": 510, + "port": 35, + "q": 50, + "rawD0_commutes_with_S": false, + "translation": 51, + "transverse_axes": [ + 49, + 4, + 8, + 35, + 19, + 64, + 128, + 256 + ], + "transverse_square_translation": 461 + }, + { + "backward_translation": 510, + "port": 36, + "q": 146, + "rawD0_commutes_with_S": false, + "translation": 147, + "transverse_axes": [ + 145, + 4, + 8, + 131, + 32, + 64, + 19, + 256 + ], + "transverse_square_translation": 365 + }, + { + "backward_translation": 510, + "port": 37, + "q": 274, + "rawD0_commutes_with_S": false, + "translation": 275, + "transverse_axes": [ + 273, + 4, + 8, + 259, + 32, + 64, + 128, + 19 + ], + "transverse_square_translation": 237 + }, + { + "backward_translation": 510, + "port": 38, + "q": 98, + "rawD0_commutes_with_S": false, + "translation": 99, + "transverse_axes": [ + 97, + 4, + 8, + 16, + 67, + 35, + 128, + 256 + ], + "transverse_square_translation": 413 + }, + { + "backward_translation": 510, + "port": 39, + "q": 162, + "rawD0_commutes_with_S": false, + "translation": 163, + "transverse_axes": [ + 161, + 4, + 8, + 16, + 131, + 64, + 35, + 256 + ], + "transverse_square_translation": 349 + }, + { + "backward_translation": 510, + "port": 40, + "q": 290, + "rawD0_commutes_with_S": false, + "translation": 291, + "transverse_axes": [ + 289, + 4, + 8, + 16, + 259, + 64, + 128, + 35 + ], + "transverse_square_translation": 221 + }, + { + "backward_translation": 510, + "port": 41, + "q": 194, + "rawD0_commutes_with_S": false, + "translation": 195, + "transverse_axes": [ + 193, + 4, + 8, + 16, + 32, + 131, + 67, + 256 + ], + "transverse_square_translation": 317 + }, + { + "backward_translation": 510, + "port": 42, + "q": 322, + "rawD0_commutes_with_S": false, + "translation": 323, + "transverse_axes": [ + 321, + 4, + 8, + 16, + 32, + 259, + 128, + 67 + ], + "transverse_square_translation": 189 + }, + { + "backward_translation": 510, + "port": 43, + "q": 386, + "rawD0_commutes_with_S": false, + "translation": 387, + "transverse_axes": [ + 385, + 4, + 8, + 16, + 32, + 64, + 259, + 131 + ], + "transverse_square_translation": 125 + }, + { + "backward_translation": 510, + "port": 44, + "q": 28, + "rawD0_commutes_with_S": false, + "translation": 29, + "transverse_axes": [ + 2, + 25, + 21, + 13, + 32, + 64, + 128, + 256 + ], + "transverse_square_translation": 483 + }, + { + "backward_translation": 510, + "port": 45, + "q": 44, + "rawD0_commutes_with_S": false, + "translation": 45, + "transverse_axes": [ + 2, + 41, + 37, + 16, + 13, + 64, + 128, + 256 + ], + "transverse_square_translation": 467 + }, + { + "backward_translation": 510, + "port": 46, + "q": 140, + "rawD0_commutes_with_S": false, + "translation": 141, + "transverse_axes": [ + 2, + 137, + 133, + 16, + 32, + 64, + 13, + 256 + ], + "transverse_square_translation": 371 + }, + { + "backward_translation": 510, + "port": 47, + "q": 268, + "rawD0_commutes_with_S": false, + "translation": 269, + "transverse_axes": [ + 2, + 265, + 261, + 16, + 32, + 64, + 128, + 13 + ], + "transverse_square_translation": 243 + }, + { + "backward_translation": 510, + "port": 48, + "q": 84, + "rawD0_commutes_with_S": false, + "translation": 85, + "transverse_axes": [ + 2, + 81, + 8, + 69, + 32, + 21, + 128, + 256 + ], + "transverse_square_translation": 427 + }, + { + "backward_translation": 510, + "port": 49, + "q": 148, + "rawD0_commutes_with_S": false, + "translation": 149, + "transverse_axes": [ + 2, + 145, + 8, + 133, + 32, + 64, + 21, + 256 + ], + "transverse_square_translation": 363 + }, + { + "backward_translation": 510, + "port": 50, + "q": 276, + "rawD0_commutes_with_S": false, + "translation": 277, + "transverse_axes": [ + 2, + 273, + 8, + 261, + 32, + 64, + 128, + 21 + ], + "transverse_square_translation": 235 + }, + { + "backward_translation": 510, + "port": 51, + "q": 100, + "rawD0_commutes_with_S": false, + "translation": 101, + "transverse_axes": [ + 2, + 97, + 8, + 16, + 69, + 37, + 128, + 256 + ], + "transverse_square_translation": 411 + }, + { + "backward_translation": 510, + "port": 52, + "q": 164, + "rawD0_commutes_with_S": false, + "translation": 165, + "transverse_axes": [ + 2, + 161, + 8, + 16, + 133, + 64, + 37, + 256 + ], + "transverse_square_translation": 347 + }, + { + "backward_translation": 510, + "port": 53, + "q": 292, + "rawD0_commutes_with_S": false, + "translation": 293, + "transverse_axes": [ + 2, + 289, + 8, + 16, + 261, + 64, + 128, + 37 + ], + "transverse_square_translation": 219 + }, + { + "backward_translation": 510, + "port": 54, + "q": 196, + "rawD0_commutes_with_S": false, + "translation": 197, + "transverse_axes": [ + 2, + 193, + 8, + 16, + 32, + 133, + 69, + 256 + ], + "transverse_square_translation": 315 + }, + { + "backward_translation": 510, + "port": 55, + "q": 324, + "rawD0_commutes_with_S": false, + "translation": 325, + "transverse_axes": [ + 2, + 321, + 8, + 16, + 32, + 261, + 128, + 69 + ], + "transverse_square_translation": 187 + }, + { + "backward_translation": 510, + "port": 56, + "q": 388, + "rawD0_commutes_with_S": false, + "translation": 389, + "transverse_axes": [ + 2, + 385, + 8, + 16, + 32, + 64, + 261, + 133 + ], + "transverse_square_translation": 123 + }, + { + "backward_translation": 510, + "port": 57, + "q": 56, + "rawD0_commutes_with_S": false, + "translation": 57, + "transverse_axes": [ + 2, + 4, + 49, + 41, + 25, + 64, + 128, + 256 + ], + "transverse_square_translation": 455 + }, + { + "backward_translation": 510, + "port": 58, + "q": 88, + "rawD0_commutes_with_S": false, + "translation": 89, + "transverse_axes": [ + 2, + 4, + 81, + 73, + 32, + 25, + 128, + 256 + ], + "transverse_square_translation": 423 + }, + { + "backward_translation": 510, + "port": 59, + "q": 152, + "rawD0_commutes_with_S": false, + "translation": 153, + "transverse_axes": [ + 2, + 4, + 145, + 137, + 32, + 64, + 25, + 256 + ], + "transverse_square_translation": 359 + }, + { + "backward_translation": 510, + "port": 60, + "q": 280, + "rawD0_commutes_with_S": false, + "translation": 281, + "transverse_axes": [ + 2, + 4, + 273, + 265, + 32, + 64, + 128, + 25 + ], + "transverse_square_translation": 231 + }, + { + "backward_translation": 510, + "port": 61, + "q": 104, + "rawD0_commutes_with_S": false, + "translation": 105, + "transverse_axes": [ + 2, + 4, + 97, + 16, + 73, + 41, + 128, + 256 + ], + "transverse_square_translation": 407 + }, + { + "backward_translation": 510, + "port": 62, + "q": 168, + "rawD0_commutes_with_S": false, + "translation": 169, + "transverse_axes": [ + 2, + 4, + 161, + 16, + 137, + 64, + 41, + 256 + ], + "transverse_square_translation": 343 + }, + { + "backward_translation": 510, + "port": 63, + "q": 296, + "rawD0_commutes_with_S": false, + "translation": 297, + "transverse_axes": [ + 2, + 4, + 289, + 16, + 265, + 64, + 128, + 41 + ], + "transverse_square_translation": 215 + }, + { + "backward_translation": 510, + "port": 64, + "q": 200, + "rawD0_commutes_with_S": false, + "translation": 201, + "transverse_axes": [ + 2, + 4, + 193, + 16, + 32, + 137, + 73, + 256 + ], + "transverse_square_translation": 311 + }, + { + "backward_translation": 510, + "port": 65, + "q": 328, + "rawD0_commutes_with_S": false, + "translation": 329, + "transverse_axes": [ + 2, + 4, + 321, + 16, + 32, + 265, + 128, + 73 + ], + "transverse_square_translation": 183 + }, + { + "backward_translation": 510, + "port": 66, + "q": 392, + "rawD0_commutes_with_S": false, + "translation": 393, + "transverse_axes": [ + 2, + 4, + 385, + 16, + 32, + 64, + 265, + 137 + ], + "transverse_square_translation": 119 + }, + { + "backward_translation": 510, + "port": 67, + "q": 112, + "rawD0_commutes_with_S": false, + "translation": 113, + "transverse_axes": [ + 2, + 4, + 8, + 97, + 81, + 49, + 128, + 256 + ], + "transverse_square_translation": 399 + }, + { + "backward_translation": 510, + "port": 68, + "q": 176, + "rawD0_commutes_with_S": false, + "translation": 177, + "transverse_axes": [ + 2, + 4, + 8, + 161, + 145, + 64, + 49, + 256 + ], + "transverse_square_translation": 335 + }, + { + "backward_translation": 510, + "port": 69, + "q": 304, + "rawD0_commutes_with_S": false, + "translation": 305, + "transverse_axes": [ + 2, + 4, + 8, + 289, + 273, + 64, + 128, + 49 + ], + "transverse_square_translation": 207 + }, + { + "backward_translation": 510, + "port": 70, + "q": 208, + "rawD0_commutes_with_S": false, + "translation": 209, + "transverse_axes": [ + 2, + 4, + 8, + 193, + 32, + 145, + 81, + 256 + ], + "transverse_square_translation": 303 + }, + { + "backward_translation": 510, + "port": 71, + "q": 336, + "rawD0_commutes_with_S": false, + "translation": 337, + "transverse_axes": [ + 2, + 4, + 8, + 321, + 32, + 273, + 128, + 81 + ], + "transverse_square_translation": 175 + }, + { + "backward_translation": 510, + "port": 72, + "q": 400, + "rawD0_commutes_with_S": false, + "translation": 401, + "transverse_axes": [ + 2, + 4, + 8, + 385, + 32, + 64, + 273, + 145 + ], + "transverse_square_translation": 111 + }, + { + "backward_translation": 510, + "port": 73, + "q": 224, + "rawD0_commutes_with_S": false, + "translation": 225, + "transverse_axes": [ + 2, + 4, + 8, + 16, + 193, + 161, + 97, + 256 + ], + "transverse_square_translation": 287 + }, + { + "backward_translation": 510, + "port": 74, + "q": 352, + "rawD0_commutes_with_S": false, + "translation": 353, + "transverse_axes": [ + 2, + 4, + 8, + 16, + 321, + 289, + 128, + 97 + ], + "transverse_square_translation": 159 + }, + { + "backward_translation": 510, + "port": 75, + "q": 416, + "rawD0_commutes_with_S": false, + "translation": 417, + "transverse_axes": [ + 2, + 4, + 8, + 16, + 385, + 64, + 289, + 161 + ], + "transverse_square_translation": 95 + }, + { + "backward_translation": 510, + "port": 76, + "q": 448, + "rawD0_commutes_with_S": false, + "translation": 449, + "transverse_axes": [ + 2, + 4, + 8, + 16, + 32, + 385, + 321, + 193 + ], + "transverse_square_translation": 63 + }, + { + "backward_translation": 510, + "port": 77, + "q": 508, + "rawD0_commutes_with_S": false, + "translation": 509, + "transverse_axes": [ + 2, + 505, + 501, + 493, + 477, + 445, + 381, + 253 + ], + "transverse_square_translation": 3 + }, + { + "backward_translation": 510, + "port": 78, + "q": 506, + "rawD0_commutes_with_S": false, + "translation": 507, + "transverse_axes": [ + 505, + 4, + 499, + 491, + 475, + 443, + 379, + 251 + ], + "transverse_square_translation": 5 + }, + { + "backward_translation": 510, + "port": 79, + "q": 502, + "rawD0_commutes_with_S": false, + "translation": 503, + "transverse_axes": [ + 501, + 499, + 8, + 487, + 471, + 439, + 375, + 247 + ], + "transverse_square_translation": 9 + }, + { + "backward_translation": 510, + "port": 80, + "q": 494, + "rawD0_commutes_with_S": false, + "translation": 495, + "transverse_axes": [ + 493, + 491, + 487, + 16, + 463, + 431, + 367, + 239 + ], + "transverse_square_translation": 17 + }, + { + "backward_translation": 510, + "port": 81, + "q": 478, + "rawD0_commutes_with_S": false, + "translation": 479, + "transverse_axes": [ + 477, + 475, + 471, + 463, + 32, + 415, + 351, + 223 + ], + "transverse_square_translation": 33 + }, + { + "backward_translation": 510, + "port": 82, + "q": 446, + "rawD0_commutes_with_S": false, + "translation": 447, + "transverse_axes": [ + 445, + 443, + 439, + 431, + 415, + 64, + 319, + 191 + ], + "transverse_square_translation": 65 + }, + { + "backward_translation": 510, + "port": 83, + "q": 382, + "rawD0_commutes_with_S": false, + "translation": 383, + "transverse_axes": [ + 381, + 379, + 375, + 367, + 351, + 319, + 128, + 127 + ], + "transverse_square_translation": 129 + }, + { + "backward_translation": 510, + "port": 84, + "q": 254, + "rawD0_commutes_with_S": false, + "translation": 255, + "transverse_axes": [ + 253, + 251, + 247, + 239, + 223, + 191, + 127, + 256 + ], + "transverse_square_translation": 257 + }, + { + "backward_translation": 509, + "port": 85, + "q": 505, + "rawD0_commutes_with_S": false, + "translation": 507, + "transverse_axes": [ + 506, + 4, + 499, + 491, + 475, + 443, + 379, + 251 + ], + "transverse_square_translation": 6 + }, + { + "backward_translation": 509, + "port": 86, + "q": 501, + "rawD0_commutes_with_S": false, + "translation": 503, + "transverse_axes": [ + 502, + 499, + 8, + 487, + 471, + 439, + 375, + 247 + ], + "transverse_square_translation": 10 + }, + { + "backward_translation": 509, + "port": 87, + "q": 493, + "rawD0_commutes_with_S": false, + "translation": 495, + "transverse_axes": [ + 494, + 491, + 487, + 16, + 463, + 431, + 367, + 239 + ], + "transverse_square_translation": 18 + }, + { + "backward_translation": 509, + "port": 88, + "q": 477, + "rawD0_commutes_with_S": false, + "translation": 479, + "transverse_axes": [ + 478, + 475, + 471, + 463, + 32, + 415, + 351, + 223 + ], + "transverse_square_translation": 34 + }, + { + "backward_translation": 509, + "port": 89, + "q": 445, + "rawD0_commutes_with_S": false, + "translation": 447, + "transverse_axes": [ + 446, + 443, + 439, + 431, + 415, + 64, + 319, + 191 + ], + "transverse_square_translation": 66 + }, + { + "backward_translation": 509, + "port": 90, + "q": 381, + "rawD0_commutes_with_S": false, + "translation": 383, + "transverse_axes": [ + 382, + 379, + 375, + 367, + 351, + 319, + 128, + 127 + ], + "transverse_square_translation": 130 + }, + { + "backward_translation": 509, + "port": 91, + "q": 253, + "rawD0_commutes_with_S": false, + "translation": 255, + "transverse_axes": [ + 254, + 251, + 247, + 239, + 223, + 191, + 127, + 256 + ], + "transverse_square_translation": 258 + }, + { + "backward_translation": 507, + "port": 92, + "q": 499, + "rawD0_commutes_with_S": false, + "translation": 503, + "transverse_axes": [ + 501, + 502, + 8, + 487, + 471, + 439, + 375, + 247 + ], + "transverse_square_translation": 12 + }, + { + "backward_translation": 507, + "port": 93, + "q": 491, + "rawD0_commutes_with_S": false, + "translation": 495, + "transverse_axes": [ + 493, + 494, + 487, + 16, + 463, + 431, + 367, + 239 + ], + "transverse_square_translation": 20 + }, + { + "backward_translation": 507, + "port": 94, + "q": 475, + "rawD0_commutes_with_S": false, + "translation": 479, + "transverse_axes": [ + 477, + 478, + 471, + 463, + 32, + 415, + 351, + 223 + ], + "transverse_square_translation": 36 + }, + { + "backward_translation": 507, + "port": 95, + "q": 443, + "rawD0_commutes_with_S": false, + "translation": 447, + "transverse_axes": [ + 445, + 446, + 439, + 431, + 415, + 64, + 319, + 191 + ], + "transverse_square_translation": 68 + }, + { + "backward_translation": 507, + "port": 96, + "q": 379, + "rawD0_commutes_with_S": false, + "translation": 383, + "transverse_axes": [ + 381, + 382, + 375, + 367, + 351, + 319, + 128, + 127 + ], + "transverse_square_translation": 132 + }, + { + "backward_translation": 507, + "port": 97, + "q": 251, + "rawD0_commutes_with_S": false, + "translation": 255, + "transverse_axes": [ + 253, + 254, + 247, + 239, + 223, + 191, + 127, + 256 + ], + "transverse_square_translation": 260 + }, + { + "backward_translation": 503, + "port": 98, + "q": 487, + "rawD0_commutes_with_S": false, + "translation": 495, + "transverse_axes": [ + 493, + 491, + 494, + 16, + 463, + 431, + 367, + 239 + ], + "transverse_square_translation": 24 + }, + { + "backward_translation": 503, + "port": 99, + "q": 471, + "rawD0_commutes_with_S": false, + "translation": 479, + "transverse_axes": [ + 477, + 475, + 478, + 463, + 32, + 415, + 351, + 223 + ], + "transverse_square_translation": 40 + }, + { + "backward_translation": 503, + "port": 100, + "q": 439, + "rawD0_commutes_with_S": false, + "translation": 447, + "transverse_axes": [ + 445, + 443, + 446, + 431, + 415, + 64, + 319, + 191 + ], + "transverse_square_translation": 72 + }, + { + "backward_translation": 503, + "port": 101, + "q": 375, + "rawD0_commutes_with_S": false, + "translation": 383, + "transverse_axes": [ + 381, + 379, + 382, + 367, + 351, + 319, + 128, + 127 + ], + "transverse_square_translation": 136 + }, + { + "backward_translation": 503, + "port": 102, + "q": 247, + "rawD0_commutes_with_S": false, + "translation": 255, + "transverse_axes": [ + 253, + 251, + 254, + 239, + 223, + 191, + 127, + 256 + ], + "transverse_square_translation": 264 + }, + { + "backward_translation": 495, + "port": 103, + "q": 463, + "rawD0_commutes_with_S": false, + "translation": 479, + "transverse_axes": [ + 477, + 475, + 471, + 478, + 32, + 415, + 351, + 223 + ], + "transverse_square_translation": 48 + }, + { + "backward_translation": 495, + "port": 104, + "q": 431, + "rawD0_commutes_with_S": false, + "translation": 447, + "transverse_axes": [ + 445, + 443, + 439, + 446, + 415, + 64, + 319, + 191 + ], + "transverse_square_translation": 80 + }, + { + "backward_translation": 495, + "port": 105, + "q": 367, + "rawD0_commutes_with_S": false, + "translation": 383, + "transverse_axes": [ + 381, + 379, + 375, + 382, + 351, + 319, + 128, + 127 + ], + "transverse_square_translation": 144 + }, + { + "backward_translation": 495, + "port": 106, + "q": 239, + "rawD0_commutes_with_S": false, + "translation": 255, + "transverse_axes": [ + 253, + 251, + 247, + 254, + 223, + 191, + 127, + 256 + ], + "transverse_square_translation": 272 + }, + { + "backward_translation": 479, + "port": 107, + "q": 415, + "rawD0_commutes_with_S": false, + "translation": 447, + "transverse_axes": [ + 445, + 443, + 439, + 431, + 446, + 64, + 319, + 191 + ], + "transverse_square_translation": 96 + }, + { + "backward_translation": 479, + "port": 108, + "q": 351, + "rawD0_commutes_with_S": false, + "translation": 383, + "transverse_axes": [ + 381, + 379, + 375, + 367, + 382, + 319, + 128, + 127 + ], + "transverse_square_translation": 160 + }, + { + "backward_translation": 479, + "port": 109, + "q": 223, + "rawD0_commutes_with_S": false, + "translation": 255, + "transverse_axes": [ + 253, + 251, + 247, + 239, + 254, + 191, + 127, + 256 + ], + "transverse_square_translation": 288 + }, + { + "backward_translation": 447, + "port": 110, + "q": 319, + "rawD0_commutes_with_S": false, + "translation": 383, + "transverse_axes": [ + 381, + 379, + 375, + 367, + 351, + 382, + 128, + 127 + ], + "transverse_square_translation": 192 + }, + { + "backward_translation": 447, + "port": 111, + "q": 191, + "rawD0_commutes_with_S": false, + "translation": 255, + "transverse_axes": [ + 253, + 251, + 247, + 239, + 223, + 254, + 127, + 256 + ], + "transverse_square_translation": 320 + } + ], + "positive_consumer_constructed": false, + "scope": "Two simultaneous FULLs, distinct original helper jobs per invocation, arbitrary invertible pre/inter/post over separated central-monomial/transverse-Clifford algebra, restored B-valued scratch; arbitrary noncommuting query/helper words outsideB.", + "search_performed": false, + "status": "PASS_SEPARATED_HELPER_PROJECTION_GATE", + "symbolic_noncommutative_compressions": [ + { + "m1": 1, + "m2": 1, + "ordinary_input_columns": [ + 0, + 1, + 3 + ], + "owners": 4, + "projected_rank_lower_bound": "1*dim(B_f)", + "scratch": 0, + "target_projected_rank": "0*dim(B_f)", + "untouched_rows": [ + 1, + 2 + ] + }, + { + "m1": 1, + "m2": 1, + "ordinary_input_columns": [ + 0, + 1, + 3, + 4, + 5 + ], + "owners": 6, + "projected_rank_lower_bound": "3*dim(B_f)", + "scratch": 2, + "target_projected_rank": "2*dim(B_f)", + "untouched_rows": [ + 1, + 2, + 4, + 5 + ] + }, + { + "m1": 2, + "m2": 1, + "ordinary_input_columns": [ + 0, + 1, + 4, + 5 + ], + "owners": 6, + "projected_rank_lower_bound": "2*dim(B_f)", + "scratch": 1, + "target_projected_rank": "1*dim(B_f)", + "untouched_rows": [ + 1, + 2, + 3, + 5 + ] + }, + { + "m1": 0, + "m2": 0, + "ordinary_input_columns": [ + 0, + 1, + 2, + 3 + ], + "owners": 4, + "projected_rank_lower_bound": "3*dim(B_f)", + "scratch": 2, + "target_projected_rank": "2*dim(B_f)", + "untouched_rows": [ + 1, + 2, + 3 + ] + } + ] +} diff --git a/research/two-full-retained-helper-ceiling/science/RUNS.json b/research/two-full-retained-helper-ceiling/science/RUNS.json new file mode 100644 index 0000000000..f9f38bf3ed --- /dev/null +++ b/research/two-full-retained-helper-ceiling/science/RUNS.json @@ -0,0 +1,34 @@ +{ + "python": "3.12.3", + "runs": [ + { + "command": [ + "/usr/bin/python3", + "-I", + "-W", + "error", + "-B", + "outputs/retained-helper-three-owner-algebra/check.py" + ], + "seconds": 0.2597582279704511, + "returncode": 0, + "stdout": "PASS_SEPARATED_HELPER_PROJECTION_GATE 112actual_normalizers 114688absolute_phase_equalities 4symbolic_compressions backward_conjugation_corrected no_new_kappa\n", + "stderr": "" + }, + { + "command": [ + "/usr/bin/python3", + "-I", + "-O", + "-W", + "error", + "-B", + "outputs/retained-helper-three-owner-algebra/check.py" + ], + "seconds": 0.3958917550044134, + "returncode": 0, + "stdout": "PASS_SEPARATED_HELPER_PROJECTION_GATE 112actual_normalizers 114688absolute_phase_equalities 4symbolic_compressions backward_conjugation_corrected no_new_kappa\n", + "stderr": "" + } + ] +} diff --git a/research/two-full-retained-helper-ceiling/science/SOURCE-CHECK.json b/research/two-full-retained-helper-ceiling/science/SOURCE-CHECK.json new file mode 100644 index 0000000000..7ec092ba39 --- /dev/null +++ b/research/two-full-retained-helper-ceiling/science/SOURCE-CHECK.json @@ -0,0 +1,37 @@ +{ + "status": "PASS", + "files": [ + { + "path": "source/complex_controller_factor.py", + "status": "PASS_EXACT_GIT_COMMIT_PATH_BYTES" + }, + { + "path": "source/native_inventory.py", + "status": "PASS_EXACT_GIT_COMMIT_PATH_BYTES" + }, + { + "path": "source/phase_check.py", + "status": "PASS_EXACT_GIT_COMMIT_PATH_BYTES" + }, + { + "path": "source/prune_native.py", + "status": "PASS_EXACT_GIT_COMMIT_PATH_BYTES" + }, + { + "path": "source/4712-README.md", + "status": "PASS_EXACT_GIT_COMMIT_PATH_BYTES" + }, + { + "path": "source/DATA-PHASES.json", + "status": "PASS_EXACT_GIT_COMMIT_PATH_BYTES" + }, + { + "path": "source/clifford_exact.py", + "status": "PASS_EXACT_GIT_COMMIT_PATH_BYTES" + }, + { + "path": "source/ACTUAL-WORD.json.gz", + "status": "PASS_EXACT_GIT_COMMIT_PATH_BYTES" + } + ] +} diff --git a/research/two-full-retained-helper-ceiling/science/SOURCES.json b/research/two-full-retained-helper-ceiling/science/SOURCES.json new file mode 100644 index 0000000000..86b25a71fd --- /dev/null +++ b/research/two-full-retained-helper-ceiling/science/SOURCES.json @@ -0,0 +1,63 @@ +{ + "source_4610": "20bb93cd990d2ff683e4d0fc56b87a42cd5d3296", + "source_4712": "b75a27bf07f1584b20babfddf887493981cd5949", + "source_4920_citation_only": "7eb4ef5251f7ba96c7e5d78c42fc98e66b7be4ba", + "files": [ + { + "path": "source/complex_controller_factor.py", + "source_commit": "20bb93cd990d2ff683e4d0fc56b87a42cd5d3296", + "source_path": "research/kappa-rebuild/bit/complex_controller_factor.py", + "sha256": "1de9aaf918e6a4f2f5448754c1f3c3da3b85e6257849ebd097af09859c4e5497", + "git_blob": "cb0cff7c8be5f38f2ee52201d9d0907f9dfd7947" + }, + { + "path": "source/native_inventory.py", + "source_commit": "20bb93cd990d2ff683e4d0fc56b87a42cd5d3296", + "source_path": "research/pr4359-p7-padding/native_inventory.py", + "sha256": "65539acaf45bdfe8c5aee6830f9c9b3d1107c442a60842ef803fdd7688de8f32", + "git_blob": "8d2d96e3998254c2333c43fe47cdfd074cbd811e" + }, + { + "path": "source/phase_check.py", + "source_commit": "20bb93cd990d2ff683e4d0fc56b87a42cd5d3296", + "source_path": "research/kappa-round3-warp-20261022/phase_check.py", + "sha256": "0aec13f218fd131b63430064c7cd212b4320a87564e75c34a359e08f1e249009", + "git_blob": "9fdbffc14edf8aabace5366c3941e78381f61862" + }, + { + "path": "source/prune_native.py", + "source_commit": "20bb93cd990d2ff683e4d0fc56b87a42cd5d3296", + "source_path": "research/kappa-function-composition/complex/prune_native.py", + "sha256": "f2b37c183a10922eabc8e0436b426a08866430e96bd0adc7e178951c7fbb5257", + "git_blob": "8c3e11b2408fa96eefa3ebe7952d1b11b90b772b" + }, + { + "path": "source/4712-README.md", + "source_commit": "b75a27bf07f1584b20babfddf887493981cd5949", + "source_path": "research/kappa-round8-owner-protocol-20261023/README.md", + "sha256": "d099a1ca2a866701f9a2219a25f4e67db0043ed101606393d985a2055ab61873", + "git_blob": "b6ac1cb8df3e3469229897af2cd793e0f7bae0d9" + }, + { + "path": "source/DATA-PHASES.json", + "source_commit": "20bb93cd990d2ff683e4d0fc56b87a42cd5d3296", + "source_path": "research/kappa-0023-productive-jobs/dependencies/kappa-next-regime/direct-decoder/sources/DATA-PHASES.json", + "sha256": "c5916ff312678f12aba403847643fbbc29f643acec60bdf836fa56cd3e8251fa", + "git_blob": "d9a4f84211182ca200c081ea061d724c8a2cfb70" + }, + { + "path": "source/clifford_exact.py", + "source_commit": "20bb93cd990d2ff683e4d0fc56b87a42cd5d3296", + "source_path": "research/t74-native-fast/vendor/native/new/code/borrow/vendor/clifford/clifford_exact.py", + "sha256": "2982ead07721e83358dc67c6f49c2b4c16a236a6bebdfd72f58221be1f5d0962", + "git_blob": "166841a037f069249f6f7f6dedb89248812f59e2" + }, + { + "path": "source/ACTUAL-WORD.json.gz", + "source_commit": "20bb93cd990d2ff683e4d0fc56b87a42cd5d3296", + "source_path": "research/kappa-round3-warp-20261022/ACTUAL-WORD.json.gz", + "sha256": "7679daa4ec6a40f56fc7f0202379a6f454310e94945aba4f48beaaaafb838d05", + "git_blob": "46d929df83817b85a5387bcdb9745e0627d6366e" + } + ] +} diff --git a/research/two-full-retained-helper-ceiling/science/check.py b/research/two-full-retained-helper-ceiling/science/check.py new file mode 100644 index 0000000000..ea4eb376cc --- /dev/null +++ b/research/two-full-retained-helper-ceiling/science/check.py @@ -0,0 +1,193 @@ +#!/usr/bin/env python3 +"""Exact source normalizers and symbolic separated-helper compression, no search. +Apache-2.0; substantial OpenAI Codex assistance; predecessor credit in PROOF.md. +""" +from pathlib import Path +from collections import defaultdict +import hashlib +import gzip +import json +import sys + +HERE = Path(__file__).resolve().parent + + +def need(test, why): + if not test: + raise ValueError(why) + + +def sym(name): + return {(name,): 1} + + +ONE = {(): 1} +ZERO = {} + + +def plus(*polynomials): + result = defaultdict(int) + for polynomial in polynomials: + for word, coefficient in polynomial.items(): + result[word] += coefficient + return {word: c for word, c in result.items() if c} + + +def mul(*polynomials): + result = ONE + for polynomial in polynomials: + new = defaultdict(int) + for word, coefficient in result.items(): + for second, c in polynomial.items(): + new[word + second] += coefficient * c + result = {word: c for word, c in new.items() if c} + return result + + +def mm(left, right): + return [[plus(*(mul(left[i][k], right[k][j]) for k in range(len(right)))) + for j in range(len(right[0]))] for i in range(len(left))] + + +def eye(n): + return [[ONE if i == j else ZERO for j in range(n)] for i in range(n)] + + +def diag(entries): + n = len(entries) + return [[entries[i] if i == j else ZERO for j in range(n)] for i in range(n)] + + +def compress_fixture(m1, m2, scratch): + n = 2 + m1 + m2 + scratch + first_helpers = set(range(2, 2+m1)) + second_helpers = set(range(2+m1, 2+m1+m2)) + d1 = [sym('D1x'), sym('D1y')] + [ONE for _ in range(n-2)] + d2 = [sym('D2x'), sym('D2y')] + [ONE for _ in range(n-2)] + for j in first_helpers: + d1[j] = sym('H1_' + str(j)) + for j in second_helpers: + d2[j] = sym('barH2_' + str(j)) + E1, E2 = eye(n), eye(n) + E1[1][0] = sym('Q1inv') + E2[0][1] = {('Q2',): -1} + W = [[sym('W%d_%d' % (i, j)) for j in range(n)] for i in range(n)] + T1, T2 = mm(diag(d1), E1), mm(diag(d2), E2) + M = mm(mm(T2, W), T1) + + # Only a SINGLE outside-subgroup letter may be discarded without knowing + # products of outside letters. Keep all double-letter terms as opaque pi. + outside = {'Q1inv', 'Q2'} | {'H1_' + str(j) for j in first_helpers} + outside |= {'barH2_' + str(j) for j in second_helpers} + + def pi(polynomial): + result = {} + for word, c in polynomial.items(): + count = sum(token in outside for token in word) + if count == 0: + result[word] = c + elif count >= 2: + result[('OPAQUE_PI',) + word] = c + return result + + # Row0 is the second shear destination. Its source row1 stays in U. + U = [i for i in range(n) if i not in second_helpers and i != 0] + C = [j for j in range(n) if j not in first_helpers] + for i in U: + for j in C: + need(pi(M[i][j]) == mul(d2[i], W[i][j], d1[j]), + 'exact noncommutative projected compression') + need(len(U)+len(C)-n == scratch+1, 'Sylvester lower bound') + # An excluded destination row has actual double-nonB terms. Treating it as + # an untouched row would require an unjustified outside*outside rule. + need(any('OPAQUE_PI' in word for word in pi(M[0][0])), 'wrong-row control') + need(mul(sym('D1y'), sym('Q1inv')) != mul(sym('Q1inv'), sym('D1y')), + 'raw transverse/query order is never silently commuted') + return dict(m1=m1, m2=m2, scratch=scratch, owners=n, + untouched_rows=U, ordinary_input_columns=C, + projected_rank_lower_bound=str(scratch+1)+'*dim(B_f)', + target_projected_rank=str(scratch)+'*dim(B_f)') + + +def main(): + sources = json.loads((HERE/'SOURCES.json').read_text()) + for row in sources['files']: + raw = (HERE/row['path']).read_bytes() + need(hashlib.sha256(raw).hexdigest() == row['sha256'], 'source SHA256') + need(hashlib.sha1(b'blob '+str(len(raw)).encode()+b'\0'+raw).hexdigest() + == row['git_blob'], 'source Git blob') + phase_check = (HERE/'source/phase_check.py').read_text() + need("actual=P.conjugate(ce,op) if d=='backward' else op" in phase_check, + 'actual retained backward helper ABI') + data = json.loads((HERE/'source/DATA-PHASES.json').read_text()) + actual = json.loads(gzip.decompress((HERE/'source/ACTUAL-WORD.json.gz').read_bytes())) + canonical = actual['canonical'] + need(canonical['start'][224] == 0 and canonical['final'][224] == 1, + 'actual independent helper224 empty-to-full native job') + need(canonical['frames'][0] == [] and sorted(canonical['frames'][1]) == [1 << j for j in range(9)], + 'literal fullH9 frame is native productC_ej') + normalizers = [] + phase_equalities = 0 + for port, recipe in enumerate(data['recipes']): + q = recipe['q'] + axes = recipe['idle_children'][0]['orthogonal_axes'][:8] + basis = [q] + axes + need(len(basis) == 9 and all((a & b).bit_count() % 2 == int(i == j) + for i, a in enumerate(basis) for j, b in enumerate(basis)), + 'literal q plus transverse8 source orthonormal basis') + # In the Fourier character indexed by k, C_v has eigenvalue + # i^parity(v.k). Derive the translation from the nine basis characters, + # then check ALL512 characters, retaining its absolute phase. + def difference(k): + return (k.bit_count() - (q & k).bit_count()%2 + - sum((a & k).bit_count()%2 for a in axes)) % 4 + singles = [difference(1 << j) for j in range(9)] + need(all(v in (0, 2) for v in singles), 'even linear translation') + t = sum((v//2) << j for j, v in enumerate(singles)) + u = 0 + for a in axes: + u ^= a + for k in range(512): + pA = sum((a & k).bit_count()%2 for a in axes) + pQ = (q & k).bit_count()%2 + need(difference(k) == 2*((t & k).bit_count()%2) % 4, + 'absolute F9 Q^-1 = X_t D_A') + need((-k.bit_count() - (2*(((t ^ u) & k).bit_count()%2) + + pA - pQ)) % 4 == 0, + 'actual conjugate F9bar = X_(t xor u) D_A Q^-1') + phase_equalities += 2 + normalizers.append(dict(port=port, q=q, transverse_axes=axes, + translation=t, transverse_square_translation=u, + backward_translation=t ^ u, + rawD0_commutes_with_S=((q & t).bit_count()%2 == 0))) + need(len(normalizers) == 112, 'all112 actual ports') + need(normalizers[0]['q'] == 11 and normalizers[0]['translation'] == 15 + and normalizers[0]['backward_translation'] == 507, + 'independent predecessor literal port0 control') + need(not normalizers[0]['rawD0_commutes_with_S'], 'real rawD0/S noncommutation control') + fixtures = [compress_fixture(1, 1, 0), compress_fixture(1, 1, 2), + compress_fixture(2, 1, 1), compress_fixture(0, 0, 2)] + result = dict(status='PASS_SEPARATED_HELPER_PROJECTION_GATE', new_kappa=False, + native_source=sources['source_4610'], + corrected_backward_helper='entrywise conjugate(H), NOT adjoint(H) in general', + fullH9_exception='barF9=F9.adjoint because literal C_ej factors commute', + normalizer_phase_equalities=phase_equalities, normalizers=normalizers, + symbolic_noncommutative_compressions=fixtures, + search_performed=False, native_word_emitted=False, + positive_consumer_constructed=False, + scope='Two simultaneous FULLs, distinct original helper jobs per invocation, arbitrary invertible pre/inter/post over separated central-monomial/transverse-Clifford algebra, restored B-valued scratch; arbitrary noncommuting query/helper words outsideB.', + exclusions=['central/fresh address mixing outside separated subgroup', + 'prefix taps or extra nonmonomial operations', + 'changed helper jobs, census or input ownership', + 'non-columnwise width-specific address grammar']) + if '--write' in sys.argv: + (HERE/'RESULT.json').write_text(json.dumps(result, indent=2, sort_keys=True)+'\n') + else: + need(json.loads((HERE/'RESULT.json').read_text()) == result, 'fixed receipt') + print('PASS_SEPARATED_HELPER_PROJECTION_GATE 112actual_normalizers ' + + str(phase_equalities)+'absolute_phase_equalities 4symbolic_compressions ' + 'backward_conjugation_corrected no_new_kappa') + + +if __name__ == '__main__': + main() diff --git a/research/two-full-retained-helper-ceiling/science/source/4712-README.md b/research/two-full-retained-helper-ceiling/science/source/4712-README.md new file mode 100644 index 0000000000..b6ac1cb8df --- /dev/null +++ b/research/two-full-retained-helper-ceiling/science/source/4712-README.md @@ -0,0 +1,226 @@ +# Two changed owner protocols, with explicit negative admission gates + +intqwq; substantial OpenAI Codex assistance. Apache-2.0. + +**TL;DR:** A new 128-owner dyadic order-three completion and a restored dirty +helper protocol pass exact arbitrary-input algebra and three scoped Lean +checks. Neither improves kappa. The standalone order-three adapter is cheap +owner mixing, not a Gaussian resource; its naive shared-owner split fails. +The dirty protocol has a strictly worse complete paid/helper invoice. + +These change the operation being computed, rather than retiming the old +center charts. PR4700's retained monotone center protocol and PR4696's +fixed-subspace phase grammar do not give their costs or their correctness. +Those predecessors are not asserted to exclude all changed protocols. + +## The new order-three completion + +For the authenticated 8-by-112 matrix R, put `B=R^t/2`, `C=R/2` and +`J=I-BC`, so `CB=14I`. On three owner groups of sizes 112,8,8, define + +```text +A = [[J, -B, 26B], + [-16C, -15I, 449I], + [-C, -I, 28I]]. +``` + +The exact 128-by-128 calculation gives `A^3=I`. The generic Lean proof +requires only additive homomorphisms B,C satisfying CB=14I, and holds on +arbitrary inputs. It does not assume zero auxiliaries. This order-three +identity is new to this package; the underlying finite-order conjugation +method and dyadic elimination are not claimed as new mathematics. + +There is an actual in-place scalar adapter. Using the eight authenticated +selected ports, D is the orthogonal 8-by-8 dyadic submatrix of C. Transform +each auxiliary bank by D^t and extract `u=D^t C X` into the selected main +coordinates. In these coordinates each query direction uses + +```text +[[-13, -14, 364], + [-16, -15, 449], + [ -1, -1, 28]]. +``` + +The matrix has dyadic-unit pivots and is emitted using reversible ADDs, +negations and swaps. Updating the ordinary coordinates and reconstructing +the selected ones uses B,D,C only. There is no odd division, cleared field +or hidden owner. All 128 output rows match A. Repeating the complete emitted +adapter three times restores every arbitrary owner. + +The emitted word has **2,356 scalar operations**, inherited scalar tariff +**26,632**, maximum prefix row-l1 norm **4,032**, and maximum coefficient +denominator **32**. Those bounds also hold during all three consecutive +adapters. Thus its exact scalar prefix bound fits twelve magnitude bits +and five fractional bits; this is not a full rounded execution theorem. +All scalar operations act on a fixed number of owners at one common frame. +They use charged whole-field scalar primitives, with inherited strided +movement overhead, and **zero Gaussian oracle calls**. + +That last fact is an admission gate: **A itself earns no productive Gaussian +credit**. A relevant expensive main operator would have to include its +actual endpoint frames, `diag(F_final) A diag(F_start)^-1`, or the negative +bank's `Q^-1 M Q`. This package does not remove those frame conjugations or +relabel the cheap owner matrix as a recursive supplier. + +The owner-sharing tensor split also fails. A operates once on the owner +factor of `owners tensor digits1 tensor digits2`. Applying A separately on +both digit factors while retaining one owner bank applies **A twice**. +The verifier exhibits `A^2-A != 0`, with coefficient difference 3 at owner +0,input owner 0. Ordinary tensoring instead produces two owner factors and +has the wrong type. This rejects this specific proposed split; it does not +exclude a different typed split/merge or cross-stage relation. + +For comparison with the retained clean-J caller, reclassifying 32 cold +helpers would give: + +| Quantity | Rank mass | +|---|---:| +| Unchanged inherited paid mass | 5093 | +| Remaining independent helpers | 3013 | +| Unconverted coupled main | 2080 | +| Unconverted deficit | 0 | +| Ordinary converted main | 2048 | +| New paid rank-one conversion calls | 32 | +| Target rank lost in that conversion | 32 | +| Converted deficit | **64** | + +The retained p1/p2 controller's conditional surpluses before direct heads +are 64/192. The 256/512 rank-one heads leave **-192/-320**. These are only +conditional comparison ledgers; no new native caller or independent +Gaussian-job admission is claimed. Full native expansion was deliberately +withheld after these gates. Finite order alone supplies no recursive saving. + +## Restored dirty helper instead of an owned center + +Let F be the actual center Gaussian operator, and let x,y,h all be arbitrary. +The new mixed-reference scalar/oracle word is + +```text +h += x +h = F h +y += h +h = F^-1 h +h -= x +h = F h +y -= h +``` + +Its exact result is `(x, y+F x, F h)`. The helper is independent of x,y and +its reserved output is returned as the specified ordinary F job. No owned +zero input or erase is used. Lean proves both the desired main response and +the uncontaminated helper return for every additive equivalence F. + +The actual first center of the selected word has rank eight. The verifier +uses its literal canonical Clifford circuit and its true adjoint, checks +all Pauli generators and the exact zero-state phase of their round trip, +and rejects replacing the adjoint by the same circuit. Its square is a +nontrivial Pauli. Omitting the helper decontamination also fails. + +There are **three paid F/F^-1 calls and four charged scalar ADDs**. The +maximum prefix sum of operator l2 norms is three. For every f, use +`F=C_r tensor f`: the paid child widths are `r*f,r*f,r*f`, and the one +independent helper width is `r*f`. At moment exponent t the net bill is + +```text +3*r^t - r^t = 2*r^t, +``` + +whereas the replaced owned center costs `r^t`. The difference is positive +for every r>0. Scalar movement, guard and restoration costs cannot reverse +that already-negative oracle comparison. No componentwise precision or +physical tape theorem is inferred from the l2 prefix bound. + +There is a restricted minimum-call gate. Allow constant invertible mixing +of the three owners and single-owner calls of F or F^-1, with desired +helper output Fh. On a spectral value z, the target owner matrix is +`[[1,0,0],[z,1,0],[0,0,z]]`. Its determinant is z. At z=1, the constant +mixing determinant must therefore be one. With zero or two oracle calls, +the determinant at z=i is real, hence cannot equal i. With one call, the +difference between its z=i and z=1 owner matrices has rank at most one. +The target difference has a 2-by-2 minor **-2i**, so has rank two. Three +calls are attained by the word above. + +The determinant/minor argument is stated mathematically and its exact +Gaussian-integer witnesses are checked in Python; it is not one of the +Lean theorems. It does not cover different oracle operators, different +helper targets, arbitrary address-dependent routing, shared multi-owner +paid calls or a different scalar computation. It is not a universal +lower bound for multiplication suppliers. + +## Reproduce and dependencies + +From the repository root, using global Python 3.14: + +```powershell +py -3.14 -S research/kappa-round8-owner-protocol-20261023/verify_lean.py --receipt-only +py -3.14 -S research/kappa-round8-owner-protocol-20261023/verify.py +``` + +Expected markers are `PASS_LEAN_SOURCE_LOG_RECEIPT_ONLY` with three reports +and `PASS_TWO_CHANGED_OWNER_GATES_NO_KAPPA`. Receipt-only replay checks the +actual source, log, named axiom reports and pinned runtime metadata; it does +not perform a fresh compilation. These commands require neither a Lean +runtime nor an olean. The Python replay needs only the standard library. +Where that launcher is unavailable, use `python3.14` or the installed global +Python 3.14 executable. Actual interpreter provenance is recorded in the +receipts. Replay runs no optimizer, installs no package and modifies no frozen +round-seven file. SOURCES.json retains sixteen exact +commit/path/blob/SHA-256 inputs, including the actual R packet, first-center +native word, exact Clifford compiler, round-five construction sources, and +PR4700 scope/proof/receipt, and the portable Lean auditor and three Lake +setup files. Copies live below sources/. Ordinary replay checks each retained +copy's SHA-256 and self-computed Git blob ID, requiring no absent origin +commit objects or sibling packages. SOURCES.json records origin commit/path +labels from collection; ordinary replay does not establish Git ancestry or +the origin commit/path association. Optional `verify.py --git-provenance` +checks those associations when the recorded origin objects are available. + +Fresh Lean replay accepts `--runtime PATH --lake PATH`. The default is the +existing ignored runtime at `research/kappa-lean-verification-20261022`; +it is not required to be a sibling in a publication checkout. An external +runtime must use the exact copied `lean-toolchain`, `lakefile.toml` and +`lake-manifest.json`, with their dependencies installed. The pinned setup is +Lean 4.21.0 commit 6741444a63ee, +executable SHA-256 fb7a62288f197279fb84e55bb1972348fd2cce1d550845793975f1cebb0c24ab, +mathlib 308445d7985027f538e281e18df29ca16ede2ba3 and its exact manifest +dependencies. LEAN.json records runtime revisions, source/log/object hashes, +auditor hash and the three standard-only axiom reports. For example, on this +machine a fresh compile from an isolated checkout can be requested with: + +```powershell +py -3.14 research/kappa-round8-owner-protocol-20261023/verify_lean.py --runtime C:/path/to/pinned-lean-runtime --lake C:/path/to/lean-4.21.0/bin/lake.exe +``` + +This produces `PASS_LEAN_SCOPED_OWNER_IDENTITIES` and an ignored local object. +The checker authenticates the copied auditor before loading it. When an +object is present its hash is checked; its absence is permitted for +source/log receipt replay. +No compiler executable, olean, virtual environment or solver package belongs +in this research submission. + +RESULT.json.gz records the actual emitted scalar adapter, exact all-owner +checks, split and return controls, scalar bounds and both negative invoices. +It is not a certificate of a new recursive supplier or a kappa increase. + +## Open next questions + +1. Can a genuinely shared paid operation on several owners be lowered to + ordinary Gaussian children with a better complete moment, including all + independent helper outputs and owner returns? A fixed scalar matrix alone + supplies no such resource. +2. Can a changed native producer supply a useful cross-stage relation for + the actual phase-conjugated endpoint operators, together with a typed + owner-sharing split/merge? Finite order and the failed repeated-owner split + are not that relation. +3. Can a different dirty-helper target or unequal-rank oracle factorization + beat the owned-center moment while preserving exact phases and arbitrary + inputs? The three-call minimum here covers only the stated same-F, + single-owner model. A concrete operator and complete invoice should + precede any larger search. + +Credit the retained intqwq/PR4610 clean-J and S/T construction sources, +their Gaussian/native/compiler contributors and retained attribution; +Cinna Davis/PR4700 for the center-protocol scope and floor; Cinna Davis/PR4696 +and Dugongue/PR4654 for the related phase grammar. The dirty-helper +compute/uncompute pattern, determinant argument, matrix ranks and +finite-order conjugations are classical methods, not claimed as new work. diff --git a/research/two-full-retained-helper-ceiling/science/source/ACTUAL-WORD.json.gz b/research/two-full-retained-helper-ceiling/science/source/ACTUAL-WORD.json.gz new file mode 100644 index 0000000000000000000000000000000000000000..46d929df83817b85a5387bcdb9745e0627d6366e GIT binary patch literal 207673 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%0An&u`Csb3RV8)-*z=ghBCmu|` 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%0A}m#BC$*!P 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

2VZSP}KItK@?5y|8|LhfHIf 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

$ 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[j],a[k]=a[k],a[j] + for i in range(n): + if i!=j and a[i]>>j&1:a[i]^=a[j] + assert [r&((1<>n for r in a) +def basis_extend(cols,n): + out=[] + for x in list(cols)+[1<len(out):out.append(x) + assert len(out)==n + return tuple(out) +def nullspace(rows,n): + a=list(rows);p=[];k=0 + for j in range(n): + t=next((i for i in range(k,len(a)) if a[i]>>j&1),None) + if t is None:continue + a[t],a[k]=a[k],a[t] + for i in range(len(a)): + if i!=k and a[i]>>j&1:a[i]^=a[k] + p.append(j);k+=1 + return tuple((1<>j)&1)<>i&1:out=pmul(out,T[i]) + for i in range(n): + if z>>i&1:out=pmul(out,T[n+i]) + return out +def compose(A,B):return tuple(apply(A,p) for p in B) +def inverse(T): + n=len(T)//2;cols=[x|(z<>n;u,v,p=apply(T,(x,z,0));assert (u,v)==identity(n)[j][:2];out.append((x,z,(-p)%4)) + return tuple(out) +def qvalue(Q,alpha,x,n): + return (sum(alpha[i] for i in range(n) if x>>i&1)+2*sum(parity((Q[i]>>(i+1))&(x>>(i+1))) for i in range(n) if x>>i&1))%4 +def mul_i(a,p): + x,y=a;p%=4 + return [(x,y),(-y,x),(-x,-y),(y,-x)][p] +@dataclass +class Op: + n:int + tab:tuple + circuit:list + def then(self,b): + assert self.n==b.n + return Op(self.n,compose(b.tab,self.tab),self.circuit+b.circuit) + def adjoint(self): + circ=[] + for e in reversed(self.circuit): + if e[0]=='P':circ.append(('P',inv(e[1],self.n))) + elif e[0]=='D':circ.append(('D',e[1],tuple((-x)%4 for x in e[2]))) + elif e[0]=='C':circ.append(('C',e[1],-e[2])) + elif e[0]=='phase':circ.append(('phase',(-e[1])%4)) + else:circ.append(e) + return Op(self.n,inverse(self.tab),circ) + def zero_state(self,basis=0): + N=1<>i)&1 for i in range(n)) + assert all(alpha[i]%2==(Q[i]>>i)&1 for i in range(n)) + return Op(n,tuple([(1<>i&1 else 0,1<>i&1 else 0) for i in range(n)]),[('C',q,sgn)]) +def xgate(n,b):return Op(n,tuple([(1<>i)&1)) for i in range(n)]),[('X',b)]) +def fourier(n,axes=None): + out=ident(n) + for i in range(n) if axes is None else axes:out=out.then(cgate(n,1<len(selected):picks.append(j);selected.append(x) + assert len(picks)==r and all(x>>r==0 for x in Bcols) + Br=transpose(selected,r);Bi=inv(Br,r);Dr=transpose([Dcols[j]&((1<> index & 1) + idle.append(dict(index=index, kind=kind, pair=pair, stages=list(selected), + rank=8*len(selected), retained=retained)) + if retained: + for role in (2*pair, 2*pair+1): + matrix[role] = [monomial_times(x, term(0, selected)) for x in matrix[role]] + events.append(["IDLE", pair, list(selected)]) + def local(stage, pair, reverse): + x, y = 2*pair, 2*pair+1 + if reverse: + x, y = y, x + sign = -1 if reverse and not wrong_reverse_sign else 1 + exponent = 1 if reverse else -1 + matrix[y] = [plus(a, monomial_times(b, term(exponent, []), sign)) + for a, b in zip(matrix[y], matrix[x])] + for role in (x, y): + matrix[role] = [monomial_times(x, term(0, [stage])) for x in matrix[role]] + events.append(["LOCAL", stage, pair, reverse]) + if stage % 2 and stage <= 2*p-3: + idle_call((stage+1)//2, list(range(stage+1)), "initial") + elif stage % 2 == 0 and 2 <= stage <= 2*p-2: + idle_call(stage//2, [stage], "middle") + elif stage == 2*p: + for j in range(p-1): + idle_call(j, list(range(2*j+3, 2*p+1)), "terminal") + def bridge(dst, src, coefficient): + for d, s, c in ((2*dst, 2*src, coefficient), (2*src+1, 2*dst+1, -coefficient)): + matrix[d] = [plus(a, b, c) for a, b in zip(matrix[d], matrix[s])] + events.append(["ADD", d, s, c]) + local(0, 0, False) + for j in range(p): + local(2*j+1, j, True) + if j < p-1: + bridge(j, j+1, 1) + local(2*j+2, j, False) + if j < p-1: + bridge(j, j+1, -1) + for j in reversed(range(p-1)): + bridge(j+1, j, 1) + for j in range(p): + matrix[2*j], matrix[2*j+1] = matrix[2*j+1], [monomial_times(x, zero, -1) for x in matrix[2*j]] + events.append(["SIGNED_SWAP", 2*j, 2*j+1]) + coefficients = {} + for i, row in enumerate(matrix): + for j, polynomial in enumerate(row): + for key, value in polynomial.items(): + coefficients.setdefault(key, [[Q(0)]*n for _ in range(n)])[i][j] += value + coefficients = {key:matrix for key, matrix in coefficients.items() if any(any(row) for row in matrix)} + return coefficients, events, idle + + +def matrix_rank(rows): + basis = {} + for row in rows: + row = list(map(Q, row)) + for j in sorted(basis): + if row[j]: + scale = row[j] + row = [a-scale*b for a, b in zip(row, basis[j])] + pivot = next((j for j, x in enumerate(row) if x), None) + if pivot is not None: + scale = row[pivot] + basis[pivot] = [x/scale for x in row] + return len(basis) + + +def scalar_program(matrix): + n = len(matrix) + work = [row[:] for row in matrix] + elimination = [] + for j in range(n): + pivot = next(i for i in range(j, n) if work[i][j]) + if pivot != j: + work[j], work[pivot] = work[pivot], work[j] + elimination.append(["SWAP", j, pivot]) + if work[j][j] != 1: + scale = 1/work[j][j] + work[j] = [scale*x for x in work[j]] + elimination.append(["SCALE", j, str(scale)]) + for i in range(n): + if i != j and work[i][j]: + scale = -work[i][j] + work[i] = [a+scale*b for a, b in zip(work[i], work[j])] + elimination.append(["ADD", i, j, str(scale)]) + program = [] + for op in reversed(elimination): + if op[0] == "SWAP": + program.append(op) + elif op[0] == "SCALE": + program.append(["SCALE", op[1], str(1/Q(op[2]))]) + else: + program.append(["ADD", op[1], op[2], str(-Q(op[3]))]) + replay = [[Q(i == j) for j in range(n)] for i in range(n)] + for op in program: + if op[0] == "SWAP": + replay[op[1]], replay[op[2]] = replay[op[2]], replay[op[1]] + elif op[0] == "SCALE": + replay[op[1]] = [Q(op[2])*x for x in replay[op[1]]] + else: + replay[op[1]] = [a+Q(op[3])*b for a, b in zip(replay[op[1]], replay[op[2]])] + B.need(replay == matrix, "Exact signed scalar boundary program") + coefficients = [Q(x) for row in matrix for x in row] + B.need(all(q.denominator & (q.denominator-1) == 0 for q in coefficients), "Dyadic boundary coefficients") + return program + + +def factor(coefficients): + n = len(next(iter(coefficients.values()))) + total = [[sum(matrix[i][j] for matrix in coefficients.values()) for j in range(n)] for i in range(n)] + inverse = B.rational_inverse(total) + projectors = {key:B.matrix_multiply(inverse, matrix) for key, matrix in coefficients.items()} + for key, matrix in projectors.items(): + if B.matrix_multiply(matrix, matrix) != matrix: + return None + for other, second in projectors.items(): + if key != other and any(any(row) for row in B.matrix_multiply(matrix, second)): + return None + columns, diagonal = [], [] + for key, matrix in sorted(projectors.items()): + for column in zip(*matrix): + if matrix_rank(columns+[column]) > len(columns): + columns.append(list(column)) + diagonal.append(key) + B.need(len(columns) == n, "All rational projector images") + right = [list(row) for row in zip(*columns)] + left = B.matrix_multiply(B.rational_inverse(right), inverse) + transformed = {key:B.matrix_multiply(B.matrix_multiply(left, matrix), right) + for key, matrix in coefficients.items()} + expected = {key:[[Q(i == j and diagonal[i] == key) for j in range(n)] for i in range(n)] + for key in set(diagonal)} + B.need(transformed == expected, "Every Laurent coefficient equals the advertised diagonal") + return dict(left=left, right=right, diagonal=diagonal, + left_program=scalar_program(left), right_program=scalar_program(right)) + + +def serialize_matrix(matrix): + return [[str(x) for x in row] for row in matrix] + + +def serialize_case(p, keep, coefficients, events, idle, result): + # Rank normalization is an input contract of the complex native source: + # D0=F9 Q^-1; Ds for s>0 transform fresh eight-axis blocks; Q^2 and + # Ds^2 are explicitly free Pauli/translation operators. The EXACT + # Laurent monomials remain in this receipt for a separate phase audit. + jobs = Counter() + for term in result["diagonal"]: + B.need(term[0] in (-1, 1), "Only stated central-Q endpoint normalization") + B.need(all(x in (0, 1) for x in term[1:]), "No hidden squared stage transforms") + jobs[1+8*sum(term[1:])] += 112 + scalar_coefficients = [x for matrix in (result["left"], result["right"]) for row in matrix for x in row] + return dict(pairs=p, stages=2*p+1, keep_idle_mask=keep, + coefficient_variables=["Q"]+[f"D{s}" for s in range(2*p+1)], + coefficient_matrices=[dict(exponents=list(key), matrix=serialize_matrix(matrix)) + for key, matrix in sorted(coefficients.items())], + left=serialize_matrix(result["left"]), right=serialize_matrix(result["right"]), + left_program=result["left_program"], right_program=result["right_program"], + exact_diagonal_monomials=[list(term) for term in result["diagonal"]], + all_boundary_entries_integral=all(x.denominator == 1 for x in scalar_coefficients), + maximum_boundary_absolute_coefficient=str(max(map(abs, scalar_coefficients))), + endpoint_after_stated_free_Pauli_normalization=dict(sorted(jobs.items())), + retained_idle_windows=[row for row in idle if row["retained"]], + omitted_idle_windows=[row for row in idle if not row["retained"]], + physical_events=events, + full_Laurent_identity=True, native_operator_contract_independently_replayed=False) + + +def run(max_p): + start = time.monotonic() + cases, census = [], {} + for p in range(1, max_p+1): + binary_candidates = [] + for keep in range(1 << (3*(p-1))): + binary_coefficients, _, _ = B.physical_controller(p, keep) + if B.simultaneous_monomial_factor(binary_coefficients) is not None: + binary_candidates.append(keep) + passed = 0 + for keep in binary_candidates: + coefficients, events, idle = controller(p, keep) + result = factor(coefficients) + if result is not None: + cases.append(serialize_case(p, keep, coefficients, events, idle, result)) + passed += 1 + census[p] = dict(binary_discovery_trials=1 << (3*(p-1)), + binary_candidates=len(binary_candidates), exact_Laurent_factorizations=passed) + print(json.dumps(dict(pairs=p, **census[p])), flush=True) + chosen = next(row for row in cases if row["pairs"] == 3 and row["keep_idle_mask"] == 43) + left = [[Q(x) for x in row] for row in chosen["left"]] + right = [[Q(x) for x in row] for row in chosen["right"]] + wrong, _, _ = controller(3, 43, True) + transformed = {key:B.matrix_multiply(B.matrix_multiply(left, matrix), right) + for key, matrix in wrong.items()} + expected = {tuple(key):[[Q(i == j and tuple(chosen["exact_diagonal_monomials"][i]) == tuple(key)) + for j in range(6)] for i in range(6)] + for key in chosen["exact_diagonal_monomials"]} + B.need(transformed != expected, "Incorrect backward sign rejected over Q") + return dict(schema="complex-controller-integral-Laurent-factorization/1", + status="PASS_EXACT_LAURENT_IDENTITIES_CONDITIONAL_ON_NATIVE_LOCAL_CONTRACT", + local_contract=dict(forward="D_s * [[1,0],[Q^-1,1]]", + backward="D_s * [[1,-Q],[0,1]]", + commutation="Q,D0,...,D(2p) commute; no finite-order relation used"), + census=census, cases=cases, + selected_p3_keep43=chosen, + controls=dict(wrong_backward_sign_rejected=True), + source_sha256={Path(__file__).name:sha256(Path(__file__).read_bytes()).hexdigest(), + "mixed_productive_bit.py":sha256((HERE/"mixed_productive_bit.py").read_bytes()).hexdigest()}, + runtime_seconds=time.monotonic()-start, + scope="Exact formal operator identity and emitted constant dyadic adapters. Native source binding, free-phase normalization, helper ownership, complete tariffs and all-size transfer belong to separate certificates.", + new_kappa=False) + + +def main(): + parser = argparse.ArgumentParser(description=__doc__) + parser.add_argument("--max-p", type=int, default=5) + parser.add_argument("--output", type=Path, default=HERE/"COMPLEX-CONTROLLER-FACTOR.json") + args = parser.parse_args() + B.need(3 <= args.max_p <= 6, "Bounded candidate menu") + data = run(args.max_p) + args.output.write_text(json.dumps(data, indent=2, sort_keys=True)+"\n") + print(json.dumps(dict(status=data["status"], seconds=data["runtime_seconds"], cases=len(data["cases"])))) + + +if __name__ == "__main__": + main() diff --git a/research/two-full-retained-helper-ceiling/science/source/native_inventory.py b/research/two-full-retained-helper-ceiling/science/source/native_inventory.py new file mode 100644 index 0000000000..8d2d96e399 --- /dev/null +++ b/research/two-full-retained-helper-ceiling/science/source/native_inventory.py @@ -0,0 +1,270 @@ +#!/usr/bin/env python3 +"""Dimension-independent exact native phase audit for an all-fresh controller. + +Uses the original nine-axis native supplier, with fresh eight-axis blocks. +No helper is hosted in a main idle field. Source all-column semantics remain +a written premise; this checks each finite raw contact and endpoint phase. +""" +from collections import Counter +from fractions import Fraction as Q +from functools import lru_cache +from hashlib import sha256 +from pathlib import Path +import gzip +import importlib.util +import json +import sys + +sys.dont_write_bytecode = True +HERE = Path(__file__).resolve().parent +NATIVE = HERE/'dependencies/tensor-strictification/native_inventory.py' + + +def need(test, why): + if not test: + raise AssertionError(why) + + +def load(path, name): + spec = importlib.util.spec_from_file_location(name, path) + module = importlib.util.module_from_spec(spec) + sys.modules[name] = module + spec.loader.exec_module(module) + return module + + +def read(path): + data = path.read_bytes() + return json.loads(gzip.decompress(data) if path.suffix == '.gz' else data) + + +def norm(terms): + out = Counter() + for axis, value in terms: + out[axis] += value + return tuple(sorted((axis, value % 4) for axis, value in out.items() if axis and value % 4)) + + +def act(columns, value): + result = 0 + while value: + low = value & -value + result ^= columns[low.bit_length()-1] + value ^= low + return result + + +@lru_cache(None) +def polynomial(terms, dimension): + linear = [0]*dimension + quadratic = [0]*dimension + for axis, value in terms: + support = [i for i in range(dimension) if axis >> i & 1] + for i in support: + linear[i] = (linear[i]+value) % 4 + if value % 2: + for j in support: + if i < j: + quadratic[i] ^= 1 << j + return tuple(linear), tuple(quadratic) + + +def contact(old, new, route, dimension): + moved = norm((act(route, axis), value) for axis, value in old) + left, right = polynomial(moved, dimension), polynomial(new, dimension) + need(left[1] == right[1], 'Actual native contact has identical quadratic part') + delta = tuple((a-b) % 4 for a, b in zip(right[0], left[0])) + need(all(value in (0, 2) for value in delta), 'Even linear phase is a physical translation') + shift = sum((value//2) << i for i, value in enumerate(delta)) + need(polynomial(norm(list(moved)+[(shift, 2)]), dimension) == right, 'Full native forward phase') + inverse_shift = act(route, shift) + inverse = norm([(act(route, axis), value) for axis, value in new]+[(inverse_shift, 2)]) + need(polynomial(inverse, dimension) == polynomial(old, dimension), 'Full inverse contact phase') + return {'translation': shift, 'inverse_translation': inverse_shift} + + +def scalar_invoice(case, native_scalar): + word = case['right_program']+case['left_program'] + counts = Counter(row[0] for row in word) + need(all(Q(row[-1]) in (1, -1) for row in word if row[0] in ('ADD', 'SCALE')), + 'Literal boundary word has only unit coefficients') + adds = counts['ADD']+3*counts['SWAP'] + negs = counts['SCALE']+counts['SWAP'] + bridges = sum(row[0] == 'ADD' for row in case['physical_events']) + swaps = sum(row[0] == 'SIGNED_SWAP' for row in case['physical_events']) + return native_scalar+112*(8*(adds+bridges+3*swaps)+2*negs) + + +def run(source_root, p=7, keep=232127, output_dir=None): + root = Path(source_root).resolve() + base = root/'research/kappa-rebuild' + need((p, keep) == (7, 232127), 'This source-bound native admission is p7 keep232127') + inventory = load(NATIVE, 'checked_native_inventory') + native_gate = inventory.run(root) + factor = load(HERE/'factor_receipt.py', 'fixed_p7_factor') + case, factor_pins = factor.run(root) + replay_path = base/'transfer-audit/p3_native_audit.py' + need(sha256(replay_path.read_bytes()).hexdigest() == '5504a55a50546418d10c522984438cdeedb44993f7c1dab7bd4aa1ae0515d902', + 'Exact independent Laurent replay source') + audit = load(replay_path, 'independent_laurent_replay') + audit.replay(case) + corrupted = json.loads(json.dumps(case)) + next(row for row in corrupted['physical_events'] if row[0] == 'LOCAL' and row[3])[3] = False + wrong_orientation_rejected = False + try: + audit.replay(corrupted) + except AssertionError: + wrong_orientation_rejected = True + need(wrong_orientation_rejected, 'A wrong native reverse orientation fails the exact whole Laurent word') + phase_path = root/'research/kappa-next-regime/direct-decoder/sources/DATA-PHASES.json' + if not phase_path.exists(): + phase_path = root/'research/kappa-0023-productive-jobs/dependencies/kappa-next-regime/direct-decoder/sources/DATA-PHASES.json' + need(sha256(phase_path.read_bytes()).hexdigest() == 'c5916ff312678f12aba403847643fbbc29f643acec60bdf836fa56cd3e8251fa', + 'Exact original native port phase source') + phases = read(phase_path) + dimension = 9+16*p + axes = tuple(1 << i for i in range(dimension)) + def completed(stage): + return norm((axis, 1) for axis in axes[:9+8*stage]) + def stage_frame(stage, q): + return norm([(axis, 1) for axis in axes[:9]]+[(q, -1)] if stage == 0 + else [(axis, 1) for axis in axes[9+8*(stage-1):9+8*stage]]) + contacts = [] + stages = [row for row in case['physical_events'] if row[0] == 'LOCAL'] + need([row[1] for row in stages] == list(range(2*p+1)), 'Exact chronological stage sequence') + for _, stage, pair, backward in stages: + sign = -1 if backward else 1 + spectator = norm((axis, 1) for axis in axes[9:9+8*stage]) + for port, recipe in enumerate(phases['recipes']): + q = recipe['q'] + basis = recipe['idle_children'][0]['orthogonal_axes'][:8] + need(all((b & q).bit_count() % 2 == 0 for b in basis), 'Actual owner basis is orthogonal to q') + need(all((a & b).bit_count() % 2 == int(i == j) for i, a in enumerate(basis) + for j, b in enumerate(basis)), 'Actual eight-vector basis is orthonormal') + swaps = [] if stage == 0 else [b ^ axes[9+8*(stage-1)+i] for i, b in enumerate(basis)] + route = tuple(e ^ act(swaps, sum(((e & v).bit_count() % 2) << i for i, v in enumerate(swaps))) + for e in axes) + need(all(act(route, route[i]) == axes[i] for i in range(dimension)), 'Full dimension route is an involution') + need(all((a & b).bit_count() % 2 == int(i == j) for i, a in enumerate(route) + for j, b in enumerate(route)), 'Full dimension route is orthogonal') + need(act(route, q) == q, 'Actual q is fixed') + raw_x = norm([(q, 1)]) if stage == 0 else completed(stage-1) + raw_y = () if stage == 0 else norm(list(raw_x)+[(q, -1)]) + local_x0 = norm(list(spectator)+[(q, sign)]) + local_y0 = spectator + local_x1 = norm(list(spectator)+[(axis, sign) for axis in axes[:9]]) + local_y1 = norm(list(local_x1)+[(q, -sign)]) + out_x = completed(stage) + out_y = norm(list(out_x)+[(q, -1)]) + maps = {name: contact(old, new, route, dimension) for name, old, new in ( + ('entry_X', raw_x, local_x0), ('entry_Y', raw_y, local_y0), + ('exit_X', local_x1, out_x), ('exit_Y', local_y1, out_y))} + delta = stage_frame(stage, q) + for incoming, outgoing in ((raw_x, out_x), (raw_y, out_y)): + need(polynomial(norm(list(outgoing)+[(a, -c) for a, c in incoming]), dimension) + == polynomial(delta, dimension), 'Raw diagonal operator is exactly D_s') + cross = norm(list(out_y if sign == 1 else out_x)+ + [(a, -c) for a, c in (raw_x if sign == 1 else raw_y)]) + need(polynomial(cross, dimension) == polynomial(norm(list(delta)+[(q, -sign)]), dimension), + 'Raw cross operator is exactly D_s Q^(-sign)') + contacts.append({'stage': stage, 'pair': pair, 'port': port, 'backward': backward, + 'route': route, 'maps': maps}) + endpoints = [] + target_main = Counter() + omitted_endpoint_phase_rejected = 0 + for role, term in enumerate(case['exact_diagonal_monomials']): + qp, selected = term[0], term[1:] + need(qp in (-1, 1) and set(selected) <= {0, 1}, 'Actual endpoint exponent alphabet') + for port, recipe in enumerate(phases['recipes']): + q = recipe['q'] + physical = norm([(q, qp)]+[entry for stage, yes in enumerate(selected) if yes for entry in stage_frame(stage, q)]) + positive = list(axes[:9]) if selected[0] else [q] + positive += [axis for stage in range(1, len(selected)) if selected[stage] + for axis in axes[9+8*(stage-1):9+8*stage]] + shift = q if qp == -1 else 0 + need(inventory.independent_axes(positive), 'Actual endpoint target axes independent') + need(len(positive) == 1+8*sum(selected), 'Exact productive endpoint rank') + need(polynomial(norm(list(physical)+[(shift, 2)]), dimension) + == polynomial(norm((axis, 1) for axis in positive), dimension), 'Complete endpoint phase normalization') + if shift: + need(polynomial(physical, dimension) != polynomial(norm((axis, 1) for axis in positive), dimension), + 'Omitting the endpoint translation fails') + omitted_endpoint_phase_rejected += 1 + endpoints.append({'role': role, 'port': port, 'rank': len(positive), 'axes': positive, 'translation': shift}) + target_main[len(positive)] += 1 + recorded = Counter((row['pair'], tuple(row['stages'])) for row in case['retained_idle_windows']) + literal = Counter((row[1], tuple(row[2])) for row in case['physical_events'] if row[0] == 'IDLE') + need(recorded == literal, 'Bijection of every paid whole idle and every literal controller IDLE') + need(all(row['rank'] == 8*len(row['stages']) for row in case['retained_idle_windows']), + 'Every paid window rank matches the literal stage count') + idle = Counter() + idle_records = [] + for window in case['retained_idle_windows']: + selected = window['stages'] + need(case['physical_events'].count(['IDLE', window['pair'], selected]) == 1, + 'Each full idle is attached to its original literal pair and event') + for port, recipe in enumerate(phases['recipes']): + q = recipe['q'] + if 0 in selected: + need(selected == list(range(len(selected))) and len(selected) >= 2, 'Initial window contiguous from stage0') + positive = recipe['idle_children'][0]['orthogonal_axes'][:] + positive += [axis for stage in selected[2:] for axis in axes[9+8*(stage-1):9+8*stage]] + shift = recipe['idle_children'][0]['translation_after'] + else: + positive = [axis for stage in selected for axis in axes[9+8*(stage-1):9+8*stage]] + shift = 0 + desired = norm(entry for stage in selected for entry in stage_frame(stage, q)) + actual = norm([(axis, 1) for axis in positive]+[(shift, 2)]) + need(inventory.independent_axes(positive) and len(positive) == window['rank'], 'Exact whole idle rank') + need(polynomial(actual, dimension) == polynomial(desired, dimension), 'Exact complete whole idle phase') + idle[len(positive)] += 2 + idle_records.append({'window': window['index'], 'pair': window['pair'], 'stages': selected, + 'port': port, 'owners': [f'X{window["pair"]}:{port}', f'Y{window["pair"]}:{port}'], + 'axes': positive, 'translation': shift}) + receipt = read(base/'complex/full-identity-certificates/RESULT.json')['providers']['THREE-base'] + target_helpers = Counter({int(k): v*(2*p+1) for k, v in receipt['helper_boundary']['widths'].items()}) + targets = target_main+target_helpers + paid = Counter({int(k): v*(2*p+1) for k, v in receipt['unsplit_replays']['forward']['paid_profile'].items()}) + paid.update(idle) + scalar = scalar_invoice(case, sum(receipt['split_replays']['backward' if row[3] else 'forward'] + ['independent_native_replay']['conservative_real_scalar_primitive_allowance'] for row in stages)) + artifact = {'contacts': contacts, 'endpoints': endpoints, 'whole_idles': idle_records, 'formal': case} + artifact_json = json.dumps(artifact, sort_keys=True, separators=(',', ':')).encode() + artifact_bytes = gzip.compress(artifact_json, compresslevel=9, mtime=0) + if output_dir is not None: + output = Path(output_dir) + output.mkdir(parents=True, exist_ok=True) + (output/'NATIVE-GEOMETRY.json.gz').write_bytes(artifact_bytes) + result = {'status': 'PASS_EXACT_LAURENT_ALL_MAIN_CONTACTS_ENDPOINTS_AND_FULL_IDLE_PHASES', + 'p': p, 'keep': keep, 'dimension': dimension, 'contacts': 4*len(contacts), + 'main_fields': 224*p, 'fresh_helper_fields': 408*(2*p+1), + 'targets': dict(sorted(targets.items())), 'paid': dict(sorted(paid.items())), + 'native_scalar_allowance': scalar, 'scalar_allowance': scalar, + 'productive_fields': sum(targets.values()), 'paid_calls': sum(paid.values()), 'whole_idle_profile': dict(sorted(idle.items())), + 'rank_margin': sum(k*v for k, v in targets.items())-sum(k*v for k, v in paid.items()), + 'artifact_sha256': sha256(artifact_json).hexdigest(), + 'artifact_hash_encoding': 'Uncompressed UTF-8 JSON, sort_keys=True, separators=(comma,colon)', + 'native_source_gate': native_gate['status'], + 'negative_controls': {'wrong_native_orientation_rejected': wrong_orientation_rejected, + 'omitted_endpoint_translation_rejected': omitted_endpoint_phase_rejected}, + 'source_sha256': {str(path.relative_to(root)): sha256(path.read_bytes()).hexdigest() + for path in (phase_path, base/'transfer-audit/p3_native_audit.py', + base/'complex/full-identity-certificates/RESULT.json')}, + 'limits': 'Finite exact physical controller admission; inherited all-column local word, tensor strictification, new full-word precision/stock and outer transfer remain written proof obligations.'} + result['source_sha256'].update(native_gate['source_sha256']) + result['source_sha256'].update(factor_pins) + result['factor_receipt_sha256'] = factor.RECEIPT_SHA256 + result['schema'] = 'source-bound-p7-all-fresh-complete-native-controller/1' + return result + + +if __name__ == '__main__': + import argparse + parser = argparse.ArgumentParser(description=__doc__) + parser.add_argument('--source-root', type=Path, default=HERE/'source') + parser.add_argument('--output-dir', type=Path) + args = parser.parse_args() + result = run(args.source_root, output_dir=args.output_dir) + if args.output_dir: + (args.output_dir/'NATIVE.json').write_text(json.dumps(result, indent=2, sort_keys=True)+'\n') + print(json.dumps({k:result[k] for k in ('status','contacts','dimension','productive_fields','paid_calls','targets','paid','native_scalar_allowance')}, sort_keys=True)) diff --git a/research/two-full-retained-helper-ceiling/science/source/phase_check.py b/research/two-full-retained-helper-ceiling/science/source/phase_check.py new file mode 100644 index 0000000000..9fdbffc14e --- /dev/null +++ b/research/two-full-retained-helper-ceiling/science/source/phase_check.py @@ -0,0 +1,42 @@ +"""Exact absolute phase admission of all changed maps, transports and helpers.""" +from pathlib import Path +import gzip,json,sys,time +sys.dont_write_bytecode=True +HERE=Path(__file__).resolve().parent;ROOT=HERE.parents[1] +sys.path.insert(0,str(ROOT/'research/warp-interface-20261022')) +from warp_merge import F + + +def main(): + started=time.monotonic() + read=lambda p:json.loads(gzip.decompress(p.read_bytes())) + new=read(HERE/'ACTUAL-WORD.json.gz');old=read(ROOT/'research/warp-interface-20261022/ACTUAL-WORD.json.gz');c=new['canonical'];base=old['canonical'] + oldverify=F.load(ROOT/'research/warp-interface-20261022/verify_candidate.py','round3_phase_predecessor') + result=oldverify.phases(c,new['programs'],base,old['programs']) + result.pop('helpers_unchanged_phase_reused',None) + ce=F.load(ROOT/'research/t74-native-fast/vendor/native/new/code/borrow/vendor/clifford/clifford_exact.py','round3_helper_clifford') + P=F.load(ROOT/'research/kappa-function-composition/complex/prune_native.py','round3_helper_decode') + X=F.load(ROOT/'research/kappa-rebuild/complex/native_extensions.py','round3_helper_lower') + pairs={} + for r in range(224,632): + a,b=c['start'][r],c['final'][r] + if (a,b)!=(base['start'][r],base['final'][r]):pairs.setdefault((a,b),[]).append(r) + helpers=[] + for (a,b),rs in sorted(pairs.items()): + op=ce.canonical_frame(9,c['frames'][a]).adjoint().then(ce.canonical_frame(9,c['frames'][b]));rank=len(c['frames'][b])-len(c['frames'][a]);directions={} + for d in ('forward','backward'): + actual=P.conjugate(ce,op) if d=='backward' else op + rec=X.N.lower_exact(P,ce,actual);F.need(rec['rank']==rank,'Each changed arbitrary helper Fourier rank and absolute phase');directions[d]=rec + helpers.append({'input':a,'output':b,'rank':rank,'helpers':rs,'recipes':directions}) + result['changed_helper_boundaries']=helpers + result['status']='PASS_JOINT_HELPER_MAPS_ALL_ACTUAL_ABSOLUTE_PHASES' + result['seconds']=time.monotonic()-started + from hashlib import sha256 + result['actual_word_canonical_sha256']=sha256(gzip.decompress((HERE/'ACTUAL-WORD.json.gz').read_bytes())).hexdigest() + result['source_manifest_sha256']=sha256((HERE/'SOURCES.json').read_bytes()).hexdigest() + result['verifier_sha256']=sha256(Path(__file__).read_bytes()).hexdigest() + (HERE/'PHASE-VALIDATION.json.gz').write_bytes(gzip.compress((json.dumps(result,indent=2,sort_keys=True)+'\n').encode(),mtime=0)) + print(result['status'],'changed_helpers',sum(len(h['helpers']) for h in helpers),'seconds',result['seconds'],flush=True) + + +if __name__=='__main__':main() diff --git a/research/two-full-retained-helper-ceiling/science/source/prune_native.py b/research/two-full-retained-helper-ceiling/science/source/prune_native.py new file mode 100644 index 0000000000..8c3e11b240 --- /dev/null +++ b/research/two-full-retained-helper-ceiling/science/source/prune_native.py @@ -0,0 +1,253 @@ +#!/usr/bin/env python3 +"""Delete exact unconsumed centre-assembly/inverse pairs, including dirty state. + +Apache-2.0; substantial OpenAI assistance. The native writer and final verifier +are reused with attribution from the frozen causal-continuation package. The +new search checks literal rational perturbations, never numerical similarity. +""" +from collections import Counter +from copy import deepcopy +from fractions import Fraction as Q +from hashlib import sha256 +from pathlib import Path +import argparse +import gzip +import importlib.util +import json +import sys +sys.dont_write_bytecode = True +HERE = Path(__file__).resolve().parent +RESEARCH = HERE.parents[1] +BASE = RESEARCH / 'kappa-global-routing/integrated-complex' +CHECKER = RESEARCH / 'kappa-causal-continuation/buffer-borrowing/verify_buffers.py' +CHECKER_SHA = '106b4d5e052427230df452f0c901d5390a0583782960b80a8af94d9a984022c7' +CLIFFORD = RESEARCH / 't74-native-fast/vendor/native/new/code/borrow/vendor/clifford/clifford_exact.py' +TAGS = ('THREE-base', 'THREE-extra', 'FOUR-base', 'FOUR-extra') + + +def need(ok, why): + if not ok: raise ValueError(why) + + +def digest(path): return sha256(path.read_bytes()).hexdigest() + + +def read(path): + data = path.read_bytes() + return json.loads(gzip.decompress(data) if path.suffix == '.gz' else data) + + +def save(path, value): + data = json.dumps(value, sort_keys=True, separators=(',', ':')).encode() + path.write_bytes(gzip.compress(data, mtime=0)) + + +def load(path, name): + spec = importlib.util.spec_from_file_location(name, path) + obj = importlib.util.module_from_spec(spec) + sys.modules[name] = obj + spec.loader.exec_module(obj) + return obj + + +def apply(v, rows, event, backward=False): + if event[0] == 'warp': + r = tuple(event[1]); rows[r] = v.warp(rows[r], event[2], backward) + elif event[0] == 'scalar': + g = event[1]; r = tuple(g[1]) + if g[0] == 'add': v.add(rows[r], rows[tuple(g[2])], Q(g[3], g[4])) + else: + need(g[0] == 'scale', 'No owned field in the clean-J baseline') + rows[r] = {k: Q(g[2], g[3])*x for k, x in rows[r].items()} + + +def index_sections(program): + phase = None; result = {'A': [], 'full_frame_cleanup': []} + for i, e in enumerate(program): + if e[0] == 'phase': phase = e[1] + if phase in result and e[0] in ('scalar', 'warp'): result[phase].append(i) + return result + + +def exact_candidate_screen(v, canonical, program, R): + """Test the final 48 assembly gates, with their actual scheduled inverses.""" + indices = index_sections(program) + need(len(indices['A']) == len(canonical['A']), 'Native A gate correspondence') + need(len(indices['full_frame_cleanup']) == len(canonical['cleanup']), 'Cleanup gate correspondence') + options = []; unmatched = [] + for j in range(len(canonical['A']) - 48, len(canonical['A'])): + g = canonical['A'][j] + need(g[0] == 'add' and len(canonical['frames'][g[-1]]) in (7, 8), 'Final centre-assembly grammar') + inverse = g[:]; inverse[3] *= -1; inverse[-1] = 1 + hits = [i for i, h in enumerate(canonical['cleanup']) if h == inverse] + if len(hits) == 1: + cj = hits[0] + options.append((j, cj, indices['A'][j], indices['full_frame_cleanup'][cj])) + else: unmatched.append({'A_index': j, 'gate': g, 'matching_inverse_occurrences': hits}) + sites = {k for option in options for k in option[2:]} + effects = {}; rows = {('L', i): v.identity(('L', i)) for i in range(632)} + for i, e in enumerate(program): + if i in sites: + g = e[1] + effects[i] = (tuple(g[1]), {k: -Q(g[3], g[4])*x for k, x in rows[tuple(g[2])].items()}) + apply(v, rows, e) + need(all(row == v.expected(r, R, False, True) for r, row in rows.items()), 'Pinned baseline endpoint') + accepted = []; rejected = [] + for aj, cj, ai, ci in options: + delta = {('L', i): {} for i in range(632)} + live_data_effect = False + for i in range(ai, len(program)): + if i in (ai, ci): + target, effect = effects[i]; v.add(delta[target], effect, Q(1)) + else: apply(v, delta, program[i]) + if i < indices['full_frame_cleanup'][0]: + e = program[i] + if e[0] == 'scalar' and e[1][0] in ('add', 'scale'): + r = tuple(e[1][1]) + if r[0] == 'L' and 112 <= r[1] < 224 and delta[r]: live_data_effect = True + bad = [(r, row) for r, row in delta.items() if row] + item = {'A_index': aj, 'cleanup_index': cj, 'A_gate': canonical['A'][aj], + 'cleanup_gate': canonical['cleanup'][cj], + 'native_scalar_sites': [ai, ci], 'Y_difference_before_cleanup': live_data_effect} + if not bad: + item['all_632_arbitrary_input_columns_exactly_preserved'] = True + accepted.append(item) + else: + r, row = bad[0]; key, value = next(iter(sorted(row.items()))) + item['first_exact_nonzero_residual'] = {'output': list(r), 'input': list(key[0]), + 'operator_word': list(key[1]), 'coefficient': str(value)} + item['changed_output_fields'] = len(bad) + rejected.append(item) + need(all(not a['Y_difference_before_cleanup'] for a in accepted), 'No changed data consumer before cleanup') + return accepted, rejected, unmatched + + +def prefix_growth(v, program, backward): + rows = {('L', i): v.identity(('L', i)) for i in range(632)} + maximum_l1 = Q(1); max_coefficient = Q(1); max_numerator = 1; max_denominator = 1 + witness = {'event': -1, 'register': ['L', 0]} + for i, event in enumerate(program): + apply(v, rows, event, backward) + if event[0] not in ('scalar', 'warp'): continue + role = tuple(event[1] if event[0] == 'warp' else event[1][1]) + values = [abs(x) for x in rows[role].values()] + norm = sum(values, Q(0)) + if norm > maximum_l1: + maximum_l1 = norm; witness = {'event': i, 'register': list(role)} + if values: + max_coefficient = max(max_coefficient, max(values)) + max_numerator = max(max_numerator, max(x.numerator for x in values)) + max_denominator = max(max_denominator, max(x.denominator for x in values)) + return {'max_formal_row_l1': str(maximum_l1), 'max_abs_coefficient': str(max_coefficient), + 'max_abs_numerator': max_numerator, 'max_denominator': max_denominator, + 'l1_witness': witness, 'independent_input_columns': 632, + 'scope': 'Exact logical scalar/monomial prefixes over arbitrary inputs; no rounded child error bound.'} + + +def monomial(ce, recipe, n): + result = ce.diag(n, tuple(recipe['quadratic_rows']), tuple(recipe['linear_Z4'])) + result = result.then(ce.perm(n, tuple(recipe['matrix_rows']))).then(ce.xgate(n, recipe['offset'])) + return result.then(ce.Op(n, ce.identity(n), [('phase', recipe['phase'])])) + + +def conjugate(ce, op): + n = op.n; result = ce.ident(n) + for g in op.circuit: + if g[0] == 'P': part = ce.perm(n, g[1]) + elif g[0] == 'X': part = ce.xgate(n, g[1]) + elif g[0] == 'C': part = ce.cgate(n, g[1], -g[2]) + elif g[0] == 'D': part = ce.diag(n, g[1], tuple(-x % 4 for x in g[2])) + else: + need(g[0] == 'phase', 'Known Clifford primitive') + part = ce.Op(n, ce.identity(n), [('phase', -g[1] % 4)]) + result = result.then(part) + return result + + +def check_new_edges(canonical, old_program, new_program, cache): + ce = load(CLIFFORD, 'function_composition_clifford') + old = {(e[3], e[4]) for e in old_program if e[0] == 'climb'} + new = {(e[3], e[4]) for e in new_program if e[0] == 'climb'} + reports = [] + for a, b in sorted(new - old): + A, B = canonical['frames'][a], canonical['frames'][b] + key = tuple(A), tuple(B) + if key not in cache: + source = ce.canonical_frame(9, A).adjoint().then(ce.canonical_frame(9, B)) + records = {} + for name, op in (('forward', source), ('inverse_transpose', conjugate(ce, source))): + recipe, _ = ce.lower_child(op) + need(recipe['rank'] == len(B)-len(A), 'Exact new physical child rank') + decoded = monomial(ce, recipe['right'], 9).then(ce.fourier(9, range(recipe['rank']))).then(monomial(ce, recipe['left'], 9)) + need(decoded.tab == op.tab and decoded.zero_state() == op.zero_state(), 'Decoded Clifford equality including global phase') + records[name] = recipe + cache[key] = records + reports.append({'old_frame': a, 'new_frame': b, 'old_basis': A, 'new_basis': B, + 'rank': len(B)-len(A), 'exact_physical_recipes': cache[key]}) + return reports + + +def main(): + parser = argparse.ArgumentParser(description=__doc__) + parser.add_argument('--out', type=Path, default=HERE/'pruned-native') + args = parser.parse_args(); args.out.mkdir(parents=True, exist_ok=True) + need(digest(CHECKER) == CHECKER_SHA, 'Frozen independent checker') + v = load(CHECKER, 'function_composition_independent'); v.authenticate() + base_receipt = read(BASE/'RESULT.json') + R = [{int(k): Q(x) for k, x in row.items()} for row in v.read(v.PACKET)['R_rows']] + providers = {}; phase_cache = {} + for tag in TAGS: + path = BASE/(tag+'-CANONICAL.json.gz') + need(digest(path) == base_receipt['providers'][tag]['artifacts'][path.name], 'Pinned baseline canonical') + old = read(path); old_native = v.emit_original(old) + yes, no, unmatched = exact_candidate_screen(v, old, old_native['forward'], R) + candidate = deepcopy(old) + a_drop = {r['A_index'] for r in yes}; c_drop = {r['cleanup_index'] for r in yes} + candidate['A'] = [g for i, g in enumerate(old['A']) if i not in a_drop] + candidate['cleanup'] = [g for i, g in enumerate(old['cleanup']) if i not in c_drop] + native = v.emit_original(candidate) + histogram = Counter(e[5] for e in native['forward'] if e[0] == 'climb') + candidate['local_profile'] = {str(r): n for r, n in sorted(histogram.items())} + candidate['edges'] = [list(e) for e in sorted({(e[3], e[4]) for e in native['forward'] if e[0] == 'climb'})] + checks = {} + for name in ('forward', 'backward'): + checks[name] = {'independent_literal_replay': v.replay(native[name], candidate, R, name == 'backward', True), + 'baseline_prefix_growth': prefix_growth(v, old_native[name], name == 'backward'), + 'new_prefix_growth': prefix_growth(v, native[name], name == 'backward')} + phases = check_new_edges(candidate, old_native['forward'], native['forward'], phase_cache) + # Removing the computation while retaining its inverse must be rejected. + negative = deepcopy(candidate) + first = yes[0] + negative['cleanup'].insert(0, first['cleanup_gate']) + bad_program = v.emit_original(negative) + rejected_control = False + try: v.replay(bad_program['forward'], negative, R, False, True) + except ValueError as error: + rejected_control = 'operator mismatch' in str(error) + need(rejected_control, 'Unpaired deletion negative control') + cp = args.out/(tag+'-CANONICAL.json.gz'); np = args.out/(tag+'-NATIVE-WORD.json.gz') + save(cp, candidate); save(np, native) + providers[tag] = {'baseline_canonical_sha256': digest(path), 'candidate_pairs_tested': len(yes)+len(no), + 'accepted_pairs': yes, 'rejected_pairs': no, 'unmatched_pairs': unmatched, + 'old_paid_profile': old['local_profile'], 'new_paid_profile': candidate['local_profile'], + 'old_paid_rank_mass': sum(int(r)*n for r, n in old['local_profile'].items()), + 'new_paid_rank_mass': sum(int(r)*n for r, n in candidate['local_profile'].items()), + 'recursive_calls_removed': sum(old['local_profile'].values())-sum(histogram.values()), + 'scalar_ADDs_removed': 2*len(yes), 'checks': checks, + 'new_physical_edges': phases, 'unpaired_deletion_negative_control_rejected': True, + 'artifacts': {cp.name: digest(cp), np.name: digest(np)}} + print('PASS pruned native', tag, len(yes), 'pairs;', dict(sorted(histogram.items())), flush=True) + result = {'schema': 'consumer-driven-clean-J-native-pruning/1', + 'status': 'PASS_ALL_FOUR_BOTH_DIRECTIONS_632_ARBITRARY_FIELDS', + 'generator_sha256': digest(Path(__file__)), 'baseline_receipt_sha256': digest(BASE/'RESULT.json'), + 'independent_interpreter_sha256': CHECKER_SHA, 'phase_compiler_path': str(CLIFFORD.relative_to(RESEARCH.parent)), + 'phase_compiler_sha256': digest(CLIFFORD), 'providers': providers, + 'native_word_new_children_phase_lowered': True, 'local_data_and_helper_endpoints_unchanged': True, + 'same_632_field_inventory': True, 'zero_owned_fields': True, 'zero_external_cleanup_fields': True, + 'no_new_kappa_claimed': True, 'query_producer_contract_preserved': False, + 'scope': 'Exact ideal clean-J local endpoints only. Final historical query assemblies are partially removed because this local word has no centre consumers. A caller that reads those historical queries cannot substitute this word without reconstructing and pricing its producer interface. The full caller and rounded induction remain open.'} + (args.out/'RESULT.json').write_text(json.dumps(result, indent=2, sort_keys=True)+'\n') + print(result['status'], flush=True) + + +if __name__ == '__main__': main() diff --git a/research/two-full-retained-helper-ceiling/verify.py b/research/two-full-retained-helper-ceiling/verify.py new file mode 100644 index 0000000000..e9e6e2a225 --- /dev/null +++ b/research/two-full-retained-helper-ceiling/verify.py @@ -0,0 +1,49 @@ +#!/usr/bin/env python3 +"""Read-only launcher for the unchanged retained-helper science checker. + +Apache-2.0; substantial OpenAI Codex assistance. All mathematical and source +checks are in science/check.py; this launcher authenticates its frozen tree. +""" +from hashlib import sha256 +from pathlib import Path +import json +import runpy +import sys + +HERE = Path(__file__).resolve().parent +SCIENCE = HERE / 'science' +MANIFEST_SHA256 = '49e5479fc694533b4b73bb94effb5c9284e5decc4dc95dbabb6cf89df31c0fc1' +REVIEW_SHA256 = { + 'REVIEW.md': '010c22b8d745e54783ce4d5f220bf16dbd906e5dbc1db62a3cad81101fd168a7', + 'REVIEW.json': '7db590df8aa4a02db8d35e58bf17095791c5432d7af8b0a1e287a8f920d06420', + 'INPUTS.json': 'fe2b94468e3a016eecdc12f4e0911a8022ee7776ab9f791aaad0e2324d580117', +} + + +def need(test, why): + if not test: + raise ValueError(why) + + +def authenticate(): + for name, digest in REVIEW_SHA256.items(): + need(sha256((HERE / 'independent' / name).read_bytes()).hexdigest() == digest, + 'Frozen independent review record: ' + name) + raw = (SCIENCE / 'FILES.json').read_bytes() + need(sha256(raw).hexdigest() == MANIFEST_SHA256, 'Frozen science manifest') + rows = json.loads(raw)['files'] + expected = {row['path'] for row in rows} | {'FILES.json'} + actual = {p.relative_to(SCIENCE).as_posix() for p in SCIENCE.rglob('*') + if p.is_file() and '__pycache__' not in p.parts} + need(expected == actual, 'Exact frozen science inventory') + for row in rows: + need(sha256((SCIENCE / row['path']).read_bytes()).hexdigest() == row['sha256'], + 'Frozen science file: ' + row['path']) + return {row['path']: row['sha256'] for row in rows} + + +if __name__ == '__main__': + need(len(sys.argv) == 1, 'Read-only launcher accepts no generation arguments') + before = authenticate() + runpy.run_path(str(SCIENCE / 'check.py'), run_name='__main__') + need(authenticate() == before, 'Read-only science replay')