From 9892e3e9f883fc39966e6d16bcd4e349597afeb4 Mon Sep 17 00:00:00 2001 From: ToikY <27568617+ToikY@users.noreply.github.com> Date: Tue, 13 Oct 2026 08:49:28 -0700 Subject: [PATCH] Independently certify complete U8 terminal-cone census Exact all504 fixed-prefix/end-B endpoint closure; scoped negative, no new kappa. Public audit receipts redact local metadata; full originals remain private. --- .../CERTIFICATE.json.gz | Bin 0 -> 22051 bytes research/u8-terminal-cone-census/COST.md | 85 +++++ .../u8-terminal-cone-census/MANIFEST.json | 25 ++ research/u8-terminal-cone-census/PROOF.md | 76 ++++ research/u8-terminal-cone-census/README.md | 108 ++++++ research/u8-terminal-cone-census/SOURCES.json | 70 ++++ .../audit/COMMAND-1.json | 33 ++ .../audit/COMMAND-2.json | 35 ++ .../audit/INDEPENDENT-AUDIT.json | 126 ++++++ .../audit/INDEPENDENT-PROFILE-CHECK.json | 36 ++ .../audit/LATEST-MAIN-DEPENDENCY-CHECK.json | 30 ++ .../audit/NORMAL-PACKAGE-COMMAND.json | 24 ++ .../audit/NORMAL-PACKAGE-OUTPUT.txt | 17 + .../audit/PACKAGE-INDEPENDENT-REVIEW.json | 102 +++++ .../audit/PACKAGE-NEGATIVE-CONTROLS.json | 37 ++ .../audit/RELOCATED-OPTIMIZED-COMMAND.json | 26 ++ .../audit/RELOCATED-OPTIMIZED-OUTPUT.txt | 17 + .../audit/REPORT-FINAL-OVERLAP.md | 99 +++++ .../audit/SEMANTIC-MUTATION-CONTROLS.json | 41 ++ .../audit/SOURCE-PIN-CONTROL.json | 12 + research/u8-terminal-cone-census/census.py | 218 +++++++++++ .../u8-terminal-cone-census/independent.py | 359 ++++++++++++++++++ .../inputs/U8-WORD.json.gz | Bin 0 -> 59101 bytes research/u8-terminal-cone-census/verify.py | 153 ++++++++ 24 files changed, 1729 insertions(+) create mode 100644 research/u8-terminal-cone-census/CERTIFICATE.json.gz create mode 100644 research/u8-terminal-cone-census/COST.md create mode 100644 research/u8-terminal-cone-census/MANIFEST.json create mode 100644 research/u8-terminal-cone-census/PROOF.md create mode 100644 research/u8-terminal-cone-census/README.md create mode 100644 research/u8-terminal-cone-census/SOURCES.json create mode 100644 research/u8-terminal-cone-census/audit/COMMAND-1.json create mode 100644 research/u8-terminal-cone-census/audit/COMMAND-2.json create mode 100644 research/u8-terminal-cone-census/audit/INDEPENDENT-AUDIT.json create mode 100644 research/u8-terminal-cone-census/audit/INDEPENDENT-PROFILE-CHECK.json create mode 100644 research/u8-terminal-cone-census/audit/LATEST-MAIN-DEPENDENCY-CHECK.json create mode 100644 research/u8-terminal-cone-census/audit/NORMAL-PACKAGE-COMMAND.json create mode 100644 research/u8-terminal-cone-census/audit/NORMAL-PACKAGE-OUTPUT.txt create mode 100644 research/u8-terminal-cone-census/audit/PACKAGE-INDEPENDENT-REVIEW.json create mode 100644 research/u8-terminal-cone-census/audit/PACKAGE-NEGATIVE-CONTROLS.json create mode 100644 research/u8-terminal-cone-census/audit/RELOCATED-OPTIMIZED-COMMAND.json create mode 100644 research/u8-terminal-cone-census/audit/RELOCATED-OPTIMIZED-OUTPUT.txt create mode 100644 research/u8-terminal-cone-census/audit/REPORT-FINAL-OVERLAP.md create mode 100644 research/u8-terminal-cone-census/audit/SEMANTIC-MUTATION-CONTROLS.json create mode 100644 research/u8-terminal-cone-census/audit/SOURCE-PIN-CONTROL.json create mode 100644 research/u8-terminal-cone-census/census.py create mode 100644 research/u8-terminal-cone-census/independent.py create mode 100644 research/u8-terminal-cone-census/inputs/U8-WORD.json.gz create mode 100644 research/u8-terminal-cone-census/verify.py diff --git a/research/u8-terminal-cone-census/CERTIFICATE.json.gz b/research/u8-terminal-cone-census/CERTIFICATE.json.gz new file mode 100644 index 0000000000000000000000000000000000000000..608ae8b1fd81f36e5b7229cda06230d16312df08 GIT binary patch literal 22051 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 S`Q3l~?*9YVWZYoWvj_m;rcng| literal 0 HcmV?d00001 diff --git a/research/u8-terminal-cone-census/COST.md b/research/u8-terminal-cone-census/COST.md new file mode 100644 index 0000000000..0608e72319 --- /dev/null +++ b/research/u8-terminal-cone-census/COST.md @@ -0,0 +1,85 @@ +# Complete optimistic recurrence and its limits + +Let `d_k` be the literal end-B dimension, `u0_k` the actual old terminal +dimension and `s_k` the entrance dimension. A proposed helper endpoint has +dimension `u_k`, contains its necessary cone, and has width `u_k-s_k`. +Retain all source/target endpoints, the eight ordered centers, A/B frame +assignments, nine calls and 896 live families per replica in ambient rank73. + +The exact old local histogram is +`{1:2548,2:338,3:446,4:162,5:72,8:8}`. Its decomposition is: + +| Bill | Rank histogram | Rank mass | +| --- | --- | ---: | +| Fixed prefix climbs and center descents | `{1:2048,2:288,3:368,4:160,5:16,8:8}` | 4512 | +| Actual old post-B suffix, all728 registers | `{1:500,2:50,3:78,4:2,5:56}` | 1122 | +| Favorable single jump to each old endpoint | `{1:328,2:80,3:86,4:10,6:56}` | 1122 | + +The first two sum to the full old profile of mass5634. The favorable +single-jump relaxation preserves mass, but can reduce its moment. It need +not admit any common-frame cleanup word. This note makes no numerical +exclusion from that relaxation. + +In particular, removing an assumed `H(9-d_k)` and adding `H(u_k-d_k)` is +unsafe as a general rejection test. Old endpoints need not be FULL, and +post-B climbs may be split across early cleanup. If other registers' suffix +climbs may change, retaining their entire old bills is also unsafe. Use the +actual old suffix or replace **all** 728 suffix bills by favorable one-jump +costs, including sources and targets. + +The fixed source/target/center mass is1856. The old helper widths are +`{4:80,5:32,7:54,8:122,9:216}`, of total3778. The capacity mass for idle +stock per replica is48384. For proposed widths set + +``` +D(u) = 48384 - 9 * sum_helpers(u_k-s_k) + = 14382 + 9 * sum_helpers(u0_k-u_k). +``` + +Require `D(u)>=0` for feasible whole-helper placement. Every idle child has +rank at most48. For `0=phi_z(a+b)`. With P_pre the fixed prefix +histogram, a complete **optimistic moment lower bound** is + +``` +L_z(u) = [9 * (sum_r P_pre(r)*phi_z(r) + + sum_all728 phi_z(u_k-d_k)) + + D(u)*phi_z(48)/48] / (73*896). +``` + +It includes every required suffix dimension and charges returned helper +mass as idle work. Ignoring bin integrality, shared-gate compatibility, +chronology and new finite scalar work enlarges the candidate class. A +certified minimum `L_z>=1` would exclude an improved complex endpoint beyond +z for this precise family; `L_z<1` is inconclusive. No such outward-rounded +numerical exclusion is asserted here. The endpoint census alone forces +every reductions-only helper proposal back to its old endpoint. + +For an actual program and T replicas, the exact recurrence must instead use +the freshly recounted local paid histogram L_new and **literal** idle +histogram I from a valid whole-helper owner map: + +``` +H(r) = 9*T*L_new(r) + I(r) +M = 896*T, W = 73 +sum_r r*I(r) = T*D(u) +M*W - sum_r r*H(r) = 320*T +``` + +The last identity follows from local mass `1856+sum_helpers(u_k-s_k)`; +width reduction does not erase the inherited rank deficit. The associated +weighted recurrence uses these children plus a separately charged finite +term. That term must recount compensation, scalar/Horner coefficient +access, frames, copies, wrappers, source restoration, routing, bridges, +shifts, moves, private stock, correction streams, precision, tape and rows. +Keep the bit supplier and its surcharge, analytic guards and seven-step +outer recipe. Zero extra finite work is allowed only in the relaxation, +never in a constructed invoice. + +A positive nomination therefore still needs a literal cleanup, both exact +arbitrary-dirt orientations, native phases and wrappers, changed residual +adapters, complete whole-helper hosting, the full invoice and rational +moment/outer certificates. This contribution changes none of those inputs +and claims no larger kappa. + +Prepared for ToikY with substantial OpenAI Codex assistance. Apache-2.0. diff --git a/research/u8-terminal-cone-census/MANIFEST.json b/research/u8-terminal-cone-census/MANIFEST.json new file mode 100644 index 0000000000..12f78f6812 --- /dev/null +++ b/research/u8-terminal-cone-census/MANIFEST.json @@ -0,0 +1,25 @@ +{ + "CERTIFICATE.json.gz": "980ce3d07d20a6f1bb1c9d097f91aa38b08d19681160f025653e2019f634a95d", + "COST.md": "4583754502b150ee5593b1fc9295c7c5785e26a179bd5f61013a018487b3dd7c", + "PROOF.md": "a4419c30370ab74cb7c20125a7d166710e368f47a46e4c4fbc710df85bd6e879", + "README.md": "461f01830ade53f779fb4a5fbc871fa90efabda378964bfe2d827bebf78c91c3", + "SOURCES.json": "df52be5641c2310b9bff76c742f8fb420605ab389658227c29e44a16676dfe95", + "audit/COMMAND-1.json": "be259843550ef3110093af0e938bc9dbd790bf17684448cde4f452afbb0d37e2", + "audit/COMMAND-2.json": "c21df59dcdfe4dd380cb065a650fc353749627dd369514c9094929b15e1022db", + "audit/INDEPENDENT-AUDIT.json": "18431a3ca2f0c909f08a851770ce0612d33d9ef625df42ef6ab23fe159ab1acf", + "audit/INDEPENDENT-PROFILE-CHECK.json": "e7698c26e6e7c4a75f228110d42cfed5e4a673ef43c9a8a883e004a94aacdee8", + "audit/LATEST-MAIN-DEPENDENCY-CHECK.json": "9edf16266319115d76165540072342ee8895b3f11294802892637dd7ea0cfb1e", + "audit/NORMAL-PACKAGE-COMMAND.json": "6a0b6faee1128b9d18d754b6623b3de2a1b307e7d4ec4eba86c3875f52c9f853", + "audit/NORMAL-PACKAGE-OUTPUT.txt": "96253cd2a8d6d422269de6dc700861230a2c28dc630385c55fa385fdd4f5a83f", + "audit/PACKAGE-INDEPENDENT-REVIEW.json": "72410a6c7aa154c7debd186b71b201afcda6ed6cb2759b68ed3417677960ebdc", + "audit/PACKAGE-NEGATIVE-CONTROLS.json": "8b22a06da96e0b6ad91316387fb1d3f644c4e41f5e7a8557b95ed67964a9cc4c", + "audit/RELOCATED-OPTIMIZED-COMMAND.json": "bff7f4907ea6f49d31f745a115959558bb0433eb806d7e5d6ea129c111ca8111", + "audit/RELOCATED-OPTIMIZED-OUTPUT.txt": "092cebe53ac9ab45aa5595a87f5a6003a07a162f48b8846ccfa98af38a40b4e7", + "audit/REPORT-FINAL-OVERLAP.md": "e8432806389e1bda8cda13132b6ebe2d35de30cc1e91ad9fa63d451bea028eff", + "audit/SEMANTIC-MUTATION-CONTROLS.json": "0f9bda4894c26975a39c4a64df150d076e86a074da80ede528dc72989253dd41", + "audit/SOURCE-PIN-CONTROL.json": "5a32f2277bc878f56818f289b81b52c083e3dee95e706b7be99b805242412a68", + "census.py": "ccb6d6c4331b5b3a0e3cd0274bb9d0472f6f13c7b6d911a3410ffa6eaa1cc27c", + "independent.py": "12db3de009c6a5fca813ead6f06612abb0fb9172fc244b980c289e1756fdeba0", + "inputs/U8-WORD.json.gz": "5320f56557816b33e9e708f2134156c72bf8c096de7edaef0169f984e5942686", + "verify.py": "d21ce2fe0eff2c748e00765de35cf733d529ce689e255c1dfeb6014a54b57514" +} diff --git a/research/u8-terminal-cone-census/PROOF.md b/research/u8-terminal-cone-census/PROOF.md new file mode 100644 index 0000000000..68e35d99c7 --- /dev/null +++ b/research/u8-terminal-cone-census/PROOF.md @@ -0,0 +1,76 @@ +# Necessary terminal cones under monotone common-frame restoration + +Let `P` be the exact compensated U8 scalar prefix and `B_k` its end-of-B +binary frame on register k. There are 728 independent arbitrary scalar +inputs, including 504 arbitrary helper contents. Fix the prefix, its frame +assignments, entrance frames and end-B frames. The suffix may change its +scalar word and helper endpoints, subject to these restrictions: + +- Only invertible linear ADD and nonzero SCALE primitives on the same registers. +- Each ADD acts on two registers at the same current frame. +- After end B, frames only grow by subspace inclusion. +- No new COPY, ERASE, clean ancilla, frame reset or descent. +- The prescribed final data shear is independent of incoming helper dirt; + each helper is restored identically, without residual scalar helper mixing. + +These are the scalar/common-frame hypotheses of this note. Native lowering, +phases and physical hosting are additional obligations for a construction. + +For helper q, every possible terminal frame `U_q` contains + +``` +C_q = span(B_q, + {B_k : (P^-1)[q,k] != 0}, + {B_k : k != q and P[k,q] != 0}). +``` + +All supports refer to exact rational nonzeros. This joins full subspaces, +not the count of distinct generators. The criterion follows the cold-ended +helper lineage in PR591/604/635; this note applies it to all 504 U8 helpers. + +The first term follows directly from monotonicity. For the inverse-row term, +the suffix scalar map is `C = J P^-1`, where J is the prescribed final shear. +The helper row of J is the q-th identity row, so `C[q,k]=(P^-1)[q,k]`. +Track formal dependencies on end-B coordinates during the suffix. A nonzero +dependency originating at register k can reach q only along ADD edges whose +common frames contain `B_k`; frame growth never removes that subspace. +Thus every nonzero entry of the final row requires `B_k` contained in `U_q`. +Cancellation can remove a dependency, but cannot create an entry without +such a path. + +For the dirty-column term fix a proposed `U_q`. At suffix time t let `H(t)` +be the registers whose current frame is **not** contained in `U_q`. The set +only grows. Equal-common-frame gates never cross from H to its complement: +the two incident frames either both lie in `U_q` or both do not. Scalar +gates within H are invertible on its entire vector of coefficients of the +independent incoming dirt variable q. Promotions append coordinates to that +vector, preserving a preexisting nonzero vector. Hence a nonzero q-column +coefficient in any register initially in H cannot disappear from the entire +H vector. The final q frame is `U_q`, so q is outside H; every other final +register has zero q-column coefficient by the prescribed endpoint. The final +H vector is therefore zero. It follows that initially `P[k,q]=0` for every +k in H, proving the dirty-column clause. + +This promotion argument uses arbitrary independent helper contents and +invertibility. A cleanup with erasure, extra clean storage, a reset, unequal +frame ADD or a nonidentity helper endpoint is outside the statement. + +The exact finite census finds `C_q = U0_q` for **every** current helper +endpoint U0. Therefore any terminal frame strictly contained in U0 is +excluded under these hypotheses. For a dimension-preserving different +orientation, containing C also forces equality to U0. Larger endpoints +remain possible. This does not prove that the present tail has minimum +paid cost: one can seek cheaper climbs or scalar words at the same endpoints. +Changed prefix dirt responses or end-B frames also escape the result. + +The row plus own-monotonicity clause alone closes 496 helpers. Helpers +347, 349, 359, 361, 370, 371, 372 and 373 have a rank-eight row-only minimum +and a rank-nine joined minimum. Their independent dirt columns supply the +missing dimension. All begin in rank one; their residual widths remain +eight. These eight indices are not identified with U8's eight added holders. + +The structural argument above is a written lemma; the programs independently +certify its finite premises and joins. Neither is a formal verification of +the all-size integer-multiplication theorem. + +Prepared for ToikY with substantial OpenAI Codex assistance. Apache-2.0. diff --git a/research/u8-terminal-cone-census/README.md b/research/u8-terminal-cone-census/README.md new file mode 100644 index 0000000000..bf0d626fd1 --- /dev/null +++ b/research/u8-terminal-cone-census/README.md @@ -0,0 +1,108 @@ +# Complete U8 terminal-cone census + +**Independent verification / scoped negative result; no new kappa.** For +the pinned compensated U8 prefix and literal end-B frames, the necessary +inverse-row, dirty-column and own-monotonicity cone equals the present +terminal frame for every one of the 504 helpers. No smaller endpoint is +available under the monotone, equal-common-frame invertible scalar cleanup +contract in [PROOF.md](PROOF.md). + +The criterion is inherited. PR864 already reported this test for all378 +FULL-ending helpers of the immediate X4 ancestor, without packaging it. +This contribution extends the concrete coverage to the changed U8 prefix, +all504 helpers including its126 low endpoints, and independently reconstructs +every support and frame with two different exact implementations. It also +records the eight false admissions from omitting the dirty-column clause. +No new cone method or first X4 endpoint obstruction is claimed. +Adjacent PR974 (`f40cd20a8c257bcfee17508c7de68fee24df0568`) prices favorable +U8 role/phase deletion budgets at fixed idle hosting; it does not recheck +cones or construct a changed restoration interface. Its budget screen is +separate from this complete endpoint census and whole-suffix accounting. + +Run from the repository root with Python3.10 or later: + +```sh +python3 -I -B research/u8-terminal-cone-census/verify.py +``` + +Expected status is `PASS_EXACT_INDEPENDENT_U8_TERMINAL_CONE_CENSUS`, with +504helpers,728arbitrary input columns and no smaller-endpoint candidates. +The package is self-contained: copying this directory to another location +needs only the Python standard library. `--optimized` also checks the child +interpreters with optimization; rejection gates do not rely on assertions. +No optimizer, floating tolerance or supplier auditor is imported. + +`CERTIFICATE.json.gz` contains every helper support and canonical frame; +verification compares its decompressed proof-relevant payload. Container +hashes bind committed inputs, not regenerated compression streams. + +The primary uses chronological sparse `Fraction` rows. The independent +implementation right-composes integer/dyadic columns in the opposite order +and enumerates all512 GF(2)^9 vectors to build subspaces. Each independently +rederives6320 compensation gates, the12913-gate prefix, the exact complete +arbitrary-dirt endpoint and prefix inverse. All504 records are compared, +including their exact supports and canonical subspace bases. The independent +CLI was adapted only to accept additional explanatory primary record fields; +its mathematical algorithm is unchanged from the separately executed audit. + +| Result | Exact census | +| --- | --- | +| Current and necessary helper widths | `{4:80,5:32,7:54,8:122,9:216}` | +| Joined cone strictly below current endpoint | 0of504 | +| Closed by inverse row plus own monotonicity | 496of504 | +| Dirty-column clause closes the remaining dimension | helpers347,349,359,361,370,371,372,373 | +| Complete helper width / idle mass per replica | 3778 /14382 | + +The eight exceptional helpers have entrance rank1 and current terminal rank9, +so their width is8. Their row-only minimum has rank8. They are potential +targets only for a mechanism that escapes the column invariant, not valid +rank-seven residual constructions. + +The reproducible verifier compares the complete committed certificate, +tests every proper one-generator endpoint deletion, checks the eight real +row-only failures, exact width/idle/deficit accounting and four independent +semantic controls (zero cancellation, inverse-row orientation, dirt columns +and GF2 joins). It also executes corrupted-input and existing-output CLI +controls. The separately executed audit in `audit/` preserves six actual +semantic mutation rejections and a failed Python3.9 attempt; public historical +receipts replace local paths with portable markers and retain the hashes of +the complete private originals. They are labeled derivatives, not byte-exact +original receipts; the originals are not runtime dependencies. + +[COST.md](COST.md) gives the complete favorable moment relaxation and exact +recurrence accounting. It corrects the provisional single-final-climb cost +screen: old endpoints are not uniformly FULL, and actual suffix climbs may +be split. This result excludes narrower endpoints. It does not exclude +cheaper tails at unchanged endpoints, changed prefixes/end-B frames, added +storage or a different cleanup/compiler interface. There is no numerical +global optimality, runtime improvement or larger-kappa claim. Native phases, +wrappers, hosting, all-size/compiler realization, precision, tape and +analytic transfer remain separate construction obligations. + +Source base: `007664306fff84fbb1c9a1b4053b69f439764034`. The byte-pinned U8 +input is the PR869/870 RECIPE-U8 payload +`090fd574747fbf9628e70cb9beb792732914cfa52e1df147579fe4dbccc68c5a`. +It is included directly and completely checked as a finite scalar/frame +word; this command does not regenerate its supplier ancestry or recertify +the selected construction. [SOURCES.json](SOURCES.json) records context Git +blobs, recipe, inherited criterion, predecessor and AI attribution. + +The sprint's orientation selected PR890; by15:19UTC main +`bbc600db2fc15007b7c914f4f2b2ed55fa909c87` selected merged PR942 at +`1661960547713947/10^18`, matching the independently preserved T37 tie. +This note leaves the selected result and upstream files untouched. Bounded +overlap inspection through PR971 found no complete U8 census in the inspected +new bodies; that is not a comprehensive priority claim. + +Sprint seed51, recursive-interface track, began2026-10-13T14:49:33.985287Z. +Its domain was exactly all504 helpers of this fixed word; the stopping rule +was completion of every exact cone and independent record comparison, +rather than elapsed-time or solver exhaustion. No seed reroll occurred. + +Credits: icekylinx's arbitrary-dirt audit; Jeremy Kothe's PR869/870 U8; +PR591/604/635 cold-ended helper work; @navinor's PR864 X4 frame audit; +Chafik Boukhalfa's PR890 composition; Jonathan Capalbo's PR942 fixed-inventory +bound; and contributors retained by these sources. Prepared for ToikY with +substantial OpenAI Codex assistance, including an independent agent +implementation and review. No independent human review is claimed. +New material is Apache-2.0; the included U8 word retains repository attribution. diff --git a/research/u8-terminal-cone-census/SOURCES.json b/research/u8-terminal-cone-census/SOURCES.json new file mode 100644 index 0000000000..2f23c2f738 --- /dev/null +++ b/research/u8-terminal-cone-census/SOURCES.json @@ -0,0 +1,70 @@ +{ + "base_commit": "007664306fff84fbb1c9a1b4053b69f439764034", + "word_raw_sha256": "090fd574747fbf9628e70cb9beb792732914cfa52e1df147579fe4dbccc68c5a", + "word_gzip_sha256": "5320f56557816b33e9e708f2134156c72bf8c096de7edaef0169f984e5942686", + "word_origin": "Exact PR869/870 RECIPE-U8 output; same payload as fresh independently replayed T37 U8. Historical report scope is retained and is superseded by executed native/endpoint certification, not changed.", + "context_and_criterion_pins": { + "CONTRIBUTING.md": { + "sha256": "1cae543effcabab91dab7f78423ee9283e60fb504f10848483d153331cd72bc4", + "git_blob": "acda5f534dd9e54eb80479cd15ccc12fafe39792" + }, + "certificates/selected-result.json": { + "sha256": "41fb066ff0f43ce472323195e9088d6d888715c13c54eae7b42e357ed5bfc726", + "git_blob": "5dbfac5424703adbb97f38edbdcaea4627215132" + }, + "docs/research/current-status.md": { + "sha256": "e99d003504e7a26c2b81ddb5c88b621880257096bd1109bc57906fb3f1737fe2", + "git_blob": "a679c83b0a1840037fb152456b528c767af007c3" + }, + "docs/research/pr-ledger.md": { + "sha256": "750591e529c45db5dd09bf727bfaebaab856c4b08a1e48794f51517f75f62d7d", + "git_blob": "65d49139fcacf89972e255e882064912ebfcc7bc" + }, + "docs/research/community-frontier890-review.md": { + "sha256": "cd03b7c2c6c09db2cfa89ae40133ae44e1deb6e32ec5ddd23aacecc9c50f2fea", + "git_blob": "6b65461724ba99a36333cb3a8f443cf5f648ca67" + }, + "research/complex-t21-owners/PROOF.md": { + "sha256": "78721b32fceb34b21b8e77c95381c38c60276e72e6d9c2e9c6262cb347457def", + "git_blob": "64e611cce120e0c3a66af303d9c4a43d7b0cb4d9" + }, + "research/complex-t21-owners/vendor/pr870/construction/barch/RECIPE-U8.json": { + "sha256": "292f0e9f82824c4111728cf4de929bf6e43320fbbdc77658aae9681906b0d652", + "git_blob": "ee215a805a7487c300fe1e2b117bd4b5720d4d24" + }, + "research/complex-t21-owners/vendor/pr870/independent/audit_local.py": { + "sha256": "03afcfc9da428b3f6edac81c1fee7f277ab81b64998efae78380b63498dec6cd", + "git_blob": "4744d8783c25bf7bf5076886169077ca3808309a" + }, + "research/complex-sw4-frame8/vendor/pr635/research/complex-571-cold14-st2/code/hpe_audit_and_transport.py": { + "sha256": "c9a05ff291016b870b4fc925b317abd9c3a604c73ffc8920dfdbbeb475e20aa3", + "git_blob": "d5d3509d90c01fd91dd00b78743287614b532e48" + }, + "research/complex-sw4-frame8/vendor/pr635/research/complex-571-cold14-st2/README.md": { + "sha256": "d74a9499a23a729d3470bde7b06b85c4cf8602d06d10af9bf9991aea2da8ed7e", + "git_blob": "6ee54bcf64a3c5ff39bacc6d6a7ed6ffe23d25cb" + } + }, + "attribution": [ + "icekylinx arbitrary-dirt audit", + "Jeremy Kothe PR869/870 U8", + "PR591/604/635 cold-ended helper and cone criterion lineage", + "PR864 X4 FULL-ending endpoint census, @navinor", + "Chafik Boukhalfa PR890; jon314159 PR942 fixed-owner-family bound" + ], + "substantial_AI_assistance": "OpenAI Codex; independent agent implementation and review; no independent human peer review claimed", + "predecessor_PR864": { + "head": "9b1a55f6d281ae5bd7d691977d38861fcd9bd015", + "path": "research/complex-x4-frame-bound/CLAIM.md", + "git_blob": "70779030fc6522a1d73340b09283f4cd394026d3", + "sha256": "40931140e343a6ce9e63a5d6d4c39da8a1dac9751cbe82b36e0e8585b72dcb84", + "scope": "X4 FULL-ending cone census, 216fresh+162entering, not packaged; inherited criterion, not new method", + "contributor_login": "navinor" + }, + "certificate_raw_sha256": "0dc8e482fd4218a8d2021f77cdb98062e4ef0479a83f7f92fa8303908cdfb7b2", + "certificate_gzip_sha256": "980ce3d07d20a6f1bb1c9d097f91aa38b08d19681160f025653e2019f634a95d", + "adjacent_PR974": { + "head": "f40cd20a8c257bcfee17508c7de68fee24df0568", + "scope": "optimistic role/phase deletion budget at fixed U8 inventory/idle hosting; no cone, compensation, owner or hosting recertification; separate from complete endpoint census" + } +} diff --git a/research/u8-terminal-cone-census/audit/COMMAND-1.json b/research/u8-terminal-cone-census/audit/COMMAND-1.json new file mode 100644 index 0000000000..362f9c422a --- /dev/null +++ b/research/u8-terminal-cone-census/audit/COMMAND-1.json @@ -0,0 +1,33 @@ +{ + "state": "FINISHED", + "logger_pid": 68296, + "child_pid": 68297, + "argv": [ + "/Library/Developer/CommandLineTools/usr/bin/python3", + "-B", + "/kappa-run-20261013/sprints/sprint-20261013T144933Z-seed51/independent-cones/independent_cones.py", + "--word", + "/kappa-run-20261013/experiments/u8-frames/BASELINE-WORD.json.gz", + "--primary", + "/kappa-run-20261013/sprints/sprint-20261013T144933Z-seed51/TERMINAL-CONES-1.json", + "--out", + "/kappa-run-20261013/sprints/sprint-20261013T144933Z-seed51/independent-cones/INDEPENDENT-CONES-1.json" + ], + "cwd": "", + "started_utc": "2026-10-13T15:11:58.732478+00:00", + "timeout_seconds": 30, + "threads": 1, + "log": "/kappa-run-20261013/sprints/sprint-20261013T144933Z-seed51/independent-cones/independent-run-1.log", + "exit_code": 1, + "seconds": 0.2877435, + "finished_utc": "2026-10-13T15:11:59.020224+00:00", + "log_sha256": "27dc9208b61588427b0edae5155bff065daf1ce74901370b679d185c4b450f76", + "public_metadata_redaction": { + "status": "SANITIZED_DERIVATIVE", + "original_receipt_sha256": "fe6ca2c7c51218edb2d064a4b082ab06ec5452fb52228be4bda4804d0a224588", + "absolute_local_paths_replaced_by_portable_markers": true, + "complete_original_preserved_privately": true, + "mathematical_values_and_artifact_hashes_unchanged": true, + "not_byte_identical_to_original": true + } +} diff --git a/research/u8-terminal-cone-census/audit/COMMAND-2.json b/research/u8-terminal-cone-census/audit/COMMAND-2.json new file mode 100644 index 0000000000..e8b0d3877a --- /dev/null +++ b/research/u8-terminal-cone-census/audit/COMMAND-2.json @@ -0,0 +1,35 @@ +{ + "state": "FINISHED", + "logger_pid": 69417, + "child_pid": 69457, + "argv": [ + "/kappa-run-20261013/venv/bin/python", + "-B", + "/kappa-run-20261013/sprints/sprint-20261013T144933Z-seed51/independent-cones/independent_cones.py", + "--word", + "/kappa-run-20261013/experiments/u8-frames/BASELINE-WORD.json.gz", + "--primary", + "/kappa-run-20261013/sprints/sprint-20261013T144933Z-seed51/TERMINAL-CONES-1.json", + "--out", + "/kappa-run-20261013/sprints/sprint-20261013T144933Z-seed51/independent-cones/INDEPENDENT-CONES-2.json" + ], + "cwd": "", + "started_utc": "2026-10-13T15:13:01.242742+00:00", + "timeout_seconds": 30, + "threads": 1, + "python_version": "3.12.14 (main, Aug 25 2026, 13:50:33) [Clang 22.1.3 ]", + "independent_script_sha256": "4e86d2b14ea4321e542f099264b070fc4f7a1056911fa449b807961d970f5340", + "log": "/kappa-run-20261013/sprints/sprint-20261013T144933Z-seed51/independent-cones/independent-run-2.log", + "exit_code": 0, + "seconds": 4.500112832989544, + "finished_utc": "2026-10-13T15:13:05.743033+00:00", + "log_sha256": "a3f13e6574ee1608f4515f79d5f6eed43914616976d9206e3868b10cc5250aa9", + "public_metadata_redaction": { + "status": "SANITIZED_DERIVATIVE", + "original_receipt_sha256": "5b5d8284526c8c85aa281a85ca1b8c1d5752ac8495dc6037e281bf72d8751477", + "absolute_local_paths_replaced_by_portable_markers": true, + "complete_original_preserved_privately": true, + "mathematical_values_and_artifact_hashes_unchanged": true, + "not_byte_identical_to_original": true + } +} diff --git a/research/u8-terminal-cone-census/audit/INDEPENDENT-AUDIT.json b/research/u8-terminal-cone-census/audit/INDEPENDENT-AUDIT.json new file mode 100644 index 0000000000..a3e61225d8 --- /dev/null +++ b/research/u8-terminal-cone-census/audit/INDEPENDENT-AUDIT.json @@ -0,0 +1,126 @@ +{ + "status": "PASS_INDEPENDENT_EXACT_U8_TERMINAL_CONE_CERTIFICATION", + "recorded_utc": "2026-10-13T15:22:26.029805+00:00", + "main_source_commit": "007664306fff84fbb1c9a1b4053b69f439764034", + "word_content_sha256": "090fd574747fbf9628e70cb9beb792732914cfa52e1df147579fe4dbccc68c5a", + "primary_first_sha256": "9bc72425478f32bc12d21494ce0831432d7045a16a448b15d2b1039d0914c7ef", + "primary_final_sha256": "a66ee2bbb8ec9147065e9ad839b5374d92ce1769b175f1ee04b212fd71d187d8", + "independent_result_sha256": "64f99ff9ccd2fe906dbe44272653f319cbacfb8382d6484dffbd78e56ecb1e99", + "independent_script_sha256": "4e86d2b14ea4321e542f099264b070fc4f7a1056911fa449b807961d970f5340", + "exact_504_common_records_match_final_primary": true, + "exact_support_not_probabilistic": true, + "arbitrary_input_columns": 728, + "full_endpoint_and_inverse_composition_exact": true, + "width_inventory": { + "4": 80, + "5": 32, + "7": 54, + "8": 122, + "9": 216 + }, + "row_only_closed_count": 496, + "row_only_gap_helpers": [ + 347, + 349, + 359, + 361, + 370, + 371, + 372, + 373 + ], + "joined_cone_closed_count": 504, + "helper_width_sum": 3778, + "idle_mass_per_9_call_replica": 14382, + "profile_receipt_sha256": "e7698c26e6e7c4a75f228110d42cfed5e4a673ef43c9a8a883e004a94aacdee8", + "semantic_mutations_rejected": 6, + "semantic_controls_sha256": "0f9bda4894c26975a39c4a64df150d076e86a074da80ede528dc72989253dd41", + "source_pin_actual_cli_exit": 1, + "source_pin_no_output_created": true, + "source_pin_control_sha256": "5a32f2277bc878f56818f289b81b52c083e3dee95e706b7be99b805242412a68", + "source_and_scope_pins": [ + { + "path": "/kappa-interface-20261013/research/complex-t21-owners/vendor/pr870/construction/barch/RECIPE-U8.json", + "sha256": "292f0e9f82824c4111728cf4de929bf6e43320fbbdc77658aae9681906b0d652", + "bytes": 12031 + }, + { + "path": "/kappa-interface-20261013/research/complex-t21-owners/vendor/pr870/independent/audit_local.py", + "sha256": "03afcfc9da428b3f6edac81c1fee7f277ab81b64998efae78380b63498dec6cd", + "bytes": 9209 + }, + { + "path": "/kappa-interface-20261013/research/complex-sw4-frame8/vendor/pr635/research/complex-571-cold14-st2/code/hpe_audit_and_transport.py", + "sha256": "c9a05ff291016b870b4fc925b317abd9c3a604c73ffc8920dfdbbeb475e20aa3", + "bytes": 16394 + }, + { + "path": "/kappa-run-20261013/sprints/sprint-20261013T144933Z-seed51/frontier-interface-audit/source/pr899-README.md", + "sha256": "cbcf1bc5d35c247a42439669e449a592fb52e5094869a232213bf588d7ff00b4", + "bytes": 23964 + }, + { + "path": "/kappa-run-20261013/sprints/sprint-20261013T144933Z-seed51/frontier-interface-audit/source/pr892-PROOF.md", + "sha256": "099c41c4f8895fa1d3a2de62b9ed7edc3b53d2142c022d03fd43496d59c75828", + "bytes": 8313 + }, + { + "path": "/kappa-run-20261013/sprints/sprint-20261013T144933Z-seed51/frontier-interface-audit/SOURCE-RECEIPTS.json", + "sha256": "3d107eaa3983b22da75e22ddcf54501c740e88a9b38ed34e7a1de1c86953c2a3", + "bytes": 1443 + }, + { + "path": "/kappa-run-20261013/sprints/sprint-20261013T144933Z-seed51/frontier-interface-audit/OVERLAP-RECORDS.json", + "sha256": "413602de6c5c31ec86d13175a6abe5e384cdd5a96fdabf373e5ce4ad8f1cfab5", + "bytes": 77818 + }, + { + "path": "/kappa-run-20261013/evidence/frontier-publication-1308/open-page-3.json", + "sha256": "538861eb90f3afbdf4f650d4395aeff86fee0c27795bcbd7965ede0115f8afed", + "bytes": 2108904 + } + ], + "pr698_scope_evidence": { + "pr": 698, + "head": "ab78f797cffcbeddbb17a7eb069741085ffe3351", + "source_snapshot_path": "/kappa-run-20261013/evidence/frontier-publication-1308/open-page-3.json", + "source_snapshot_sha256": "538861eb90f3afbdf4f650d4395aeff86fee0c27795bcbd7965ede0115f8afed", + "full_package_replayed": false + }, + "execution": { + "first_system_python_attempt_exit": 1, + "successful_census_exit": 0, + "successful_census_elapsed_seconds": 4.500112832989544, + "profile_only_elapsed_seconds": 0.4682181659154594, + "all_commands_finished": true, + "live_jobs_owned": [], + "threads": 1, + "hard_timeout_seconds_each": 30, + "substantial_job_launched": false, + "paid_compute": false, + "failed_receipts_preserved": true, + "census_cpu_seconds": null, + "census_max_rss_bytes": null, + "unrecorded_resource_note": "Census wall time recorded; CPU/RSS were not independently sampled. Tiny controls and frame-only command record child CPU/RSS." + }, + "mathematical_status": { + "finite_census": "EXACT_EXECUTED", + "retained_cone_admission": "ALL504_SATURATED", + "row_monotone_information_flow": "WRITTEN_ARGUMENT", + "column_growing_partition_invariant": "WRITTEN_ARGUMENT_WITH_EXPLICIT_GATE_ENDPOINT_HYPOTHESES", + "formal_proof": false, + "unrestricted_interface_optimality": false, + "new_kappa": null, + "cleanup_gate_count_or_tail_profile_optimality": false + }, + "blockers": [], + "next_experiment_boundary": "Any endpoint-width experiment must change the fixed prefix/end-B frames or restoration/primitive interface and prove why the cone invariant no longer applies. Eight row-only gaps are not constructions.", + "public_metadata_redaction": { + "status": "SANITIZED_DERIVATIVE", + "original_receipt_sha256": "4586ca7dae1259ed2d9716c05a7fbd334401353adf375ea95255d50823b68289", + "absolute_local_paths_replaced_by_portable_markers": true, + "complete_original_preserved_privately": true, + "mathematical_values_and_artifact_hashes_unchanged": true, + "not_byte_identical_to_original": true + } +} diff --git a/research/u8-terminal-cone-census/audit/INDEPENDENT-PROFILE-CHECK.json b/research/u8-terminal-cone-census/audit/INDEPENDENT-PROFILE-CHECK.json new file mode 100644 index 0000000000..235b01624d --- /dev/null +++ b/research/u8-terminal-cone-census/audit/INDEPENDENT-PROFILE-CHECK.json @@ -0,0 +1,36 @@ +{ + "fixed_prefix_paid_profile": { + "1": 2048, + "2": 288, + "3": 368, + "4": 160, + "5": 16, + "8": 8 + }, + "actual_old_suffix_paid_profile": { + "1": 500, + "2": 50, + "3": 78, + "4": 2, + "5": 56 + }, + "all_register_minimal_one_jump_suffix_profile": { + "1": 328, + "2": 80, + "3": 86, + "4": 10, + "6": 56 + }, + "status": "PASS_INDEPENDENT_FRAME_ONLY_PROFILE_AND_FINAL_PRIMARY_BINDINGS", + "helper_width_sum": 3778, + "idle_mass_per_9_call_replica": 14382, + "all_registers": 728, + "exact_common_record_fields_match_504": true, + "exact_row_only_split_matches": true, + "primary_final_sha256": "a66ee2bbb8ec9147065e9ad839b5374d92ce1769b175f1ee04b212fd71d187d8", + "word_content_sha256": "090fd574747fbf9628e70cb9beb792732914cfa52e1df147579fe4dbccc68c5a", + "independent_script_sha256": "4e86d2b14ea4321e542f099264b070fc4f7a1056911fa449b807961d970f5340", + "profile_script_sha256": "57f5bbbf37b90800611bac9e3b354e03515f2d8f1ae7999987fc1c013794fe56", + "seconds": 0.17910441709682345, + "scope": "Frame-only reconstruction. The one-jump histogram grants scalar cleanup for free and is not a legal cleanup construction." +} diff --git a/research/u8-terminal-cone-census/audit/LATEST-MAIN-DEPENDENCY-CHECK.json b/research/u8-terminal-cone-census/audit/LATEST-MAIN-DEPENDENCY-CHECK.json new file mode 100644 index 0000000000..9ebf4a6b84 --- /dev/null +++ b/research/u8-terminal-cone-census/audit/LATEST-MAIN-DEPENDENCY-CHECK.json @@ -0,0 +1,30 @@ +{ + "status": "PASS_RETAINED_U8_INPUT_DEPENDENCIES_MATCH_LATEST_MAIN", + "observed_utc": "2026-10-13T15:30:52.358448+00:00", + "base_commit": "007664306fff84fbb1c9a1b4053b69f439764034", + "latest_main": "bbc600db2fc15007b7c914f4f2b2ed55fa909c87", + "matching_paths": { + "research/complex-t21-owners/vendor/pr870/construction/barch/RECIPE-U8.json": "292f0e9f82824c4111728cf4de929bf6e43320fbbdc77658aae9681906b0d652", + "research/complex-t21-owners/vendor/pr870/independent/audit_local.py": "03afcfc9da428b3f6edac81c1fee7f277ab81b64998efae78380b63498dec6cd", + "research/complex-t21-owners/PROOF.md": "78721b32fceb34b21b8e77c95381c38c60276e72e6d9c2e9c6262cb347457def" + }, + "selected_pr_at_latest_main": 942, + "selected_kappa": "1661960547713947/1000000000000000000", + "old_base_selected_record_check": { + "actual_command": "make selected-record-check PYTHON=/kappa-run-20261013/venv/bin/python", + "emitted_recipe": "python3 -B scripts/verify_selected_result.py", + "exit_code": 0, + "stdout": "PASS selected record, exact kappa, original source inventory and proof supplement: 1661957774647029/1000000000000000000", + "full_make_verify_rerun": false, + "cold_selected_replay_rerun": false, + "scope": "new isolated research-only directory; no selected construction/source edits" + }, + "public_metadata_redaction": { + "status": "SANITIZED_DERIVATIVE", + "original_receipt_sha256": "8e55bb38cece9c7a73c794ee63b20b4b95ac133ee5efc451cb71c5e11bc747f9", + "absolute_local_paths_replaced_by_portable_markers": true, + "complete_original_preserved_privately": true, + "mathematical_values_and_artifact_hashes_unchanged": true, + "not_byte_identical_to_original": true + } +} diff --git a/research/u8-terminal-cone-census/audit/NORMAL-PACKAGE-COMMAND.json b/research/u8-terminal-cone-census/audit/NORMAL-PACKAGE-COMMAND.json new file mode 100644 index 0000000000..fd154bef3e --- /dev/null +++ b/research/u8-terminal-cone-census/audit/NORMAL-PACKAGE-COMMAND.json @@ -0,0 +1,24 @@ +{ + "command": [ + "kappa-run-20261013/venv/bin/python", + "-I", + "-B", + "kappa-interface-20261013/research/u8-terminal-cone-census/verify.py" + ], + "cwd": "", + "started_utc": "2026-10-13T15:27:24.852327+00:00", + "status": "FINISHED", + "python": "3.12.14 (main, Aug 25 2026, 13:50:33) [Clang 22.1.3 ]", + "thread_limit": 1, + "exit_code": 0, + "seconds": 1.4063814589753747, + "log_sha256": "96253cd2a8d6d422269de6dc700861230a2c28dc630385c55fa385fdd4f5a83f", + "public_metadata_redaction": { + "status": "SANITIZED_DERIVATIVE", + "original_receipt_sha256": "513716ae78710313e4dc58c046e29aadc313ca42aecd9cdccf4c6324f8062d92", + "absolute_local_paths_replaced_by_portable_markers": true, + "complete_original_preserved_privately": true, + "mathematical_values_and_artifact_hashes_unchanged": true, + "not_byte_identical_to_original": true + } +} diff --git a/research/u8-terminal-cone-census/audit/NORMAL-PACKAGE-OUTPUT.txt b/research/u8-terminal-cone-census/audit/NORMAL-PACKAGE-OUTPUT.txt new file mode 100644 index 0000000000..18086bc55e --- /dev/null +++ b/research/u8-terminal-cone-census/audit/NORMAL-PACKAGE-OUTPUT.txt @@ -0,0 +1,17 @@ +{ + "status": "PASS_EXACT_INDEPENDENT_U8_TERMINAL_CONE_CENSUS", + "source_files_checked": 15, + "helpers": 504, + "arbitrary_columns": 728, + "independent_semantic_mutations_rejected": 4, + "corrupted_input_cli_rejected": true, + "existing_output_preserved": true, + "controls": { + "old_endpoints_accepted": 504, + "proper_basis_deletions_rejected": 4186, + "row_only_false_admissions_rejected": 8, + "complete_cost_mass_checks": "PASS" + }, + "optimized_children": false, + "scope": "fixed-prefix/end-B monotone common-frame endpoints; no kappa or tail-optimality claim" +} diff --git a/research/u8-terminal-cone-census/audit/PACKAGE-INDEPENDENT-REVIEW.json b/research/u8-terminal-cone-census/audit/PACKAGE-INDEPENDENT-REVIEW.json new file mode 100644 index 0000000000..56cc40dff7 --- /dev/null +++ b/research/u8-terminal-cone-census/audit/PACKAGE-INDEPENDENT-REVIEW.json @@ -0,0 +1,102 @@ +{ + "status": "PASS_BOUNDED_INDEPENDENT_STATIC_PACKAGE_REVIEW", + "recorded_utc": "2026-10-13T15:32:41.549688+00:00", + "scope": "Read-only source/docs/pin review; no matrix replay, heavy job or package edit. The original independent audit remains unchanged.", + "package_path": "/kappa-interface-20261013/research/u8-terminal-cone-census", + "reviewed_file_sha256": { + "census.py": "ccb6d6c4331b5b3a0e3cd0274bb9d0472f6f13c7b6d911a3410ffa6eaa1cc27c", + "independent.py": "12db3de009c6a5fca813ead6f06612abb0fb9172fc244b980c289e1756fdeba0", + "verify.py": "dcd3c12caa5cc7a5ad455144a9697cdbc3630c0635c239a91c398dc7e9d24ab4", + "PROOF.md": "a4419c30370ab74cb7c20125a7d166710e368f47a46e4c4fbc710df85bd6e879", + "COST.md": "4583754502b150ee5593b1fc9295c7c5785e26a179bd5f61013a018487b3dd7c", + "README.md": "ccf875170a7f5af2053848f4b766339f953eacfb50edd648f173098f06ca4dc0", + "SOURCES.json": "be7efdb52020b8319de643ab58a055add17d434a407b97f66ee9edb15b835204", + "CERTIFICATE.json": "0dc8e482fd4218a8d2021f77cdb98062e4ef0479a83f7f92fa8303908cdfb7b2", + "MANIFEST.json": "28175d04f5dc0d0ab33dedcc2732ce2505f27a5f9985d39d99424a72a407b413" + }, + "package_manifest_entries": 17, + "manifest_source_closure_and_hashes_match": true, + "certificate_matches_executed_primary_final_exactly_except_removed_seconds": true, + "independent_algorithm_review": { + "frozen_script_sha256": "4e86d2b14ea4321e542f099264b070fc4f7a1056911fa449b807961d970f5340", + "unchanged_function_names": [ + "need", + "dyadic", + "fraction_pair", + "plus", + "scalar", + "columns", + "canon_columns", + "matrix_sha", + "space", + "basis", + "dimension", + "join", + "touched", + "frames", + "reconstruct", + "controls" + ], + "changed_function_names": [ + "main" + ], + "only_change": "main compares each record after projecting primary extra explanatory fields to every independently derived key; exact record count is also checked. Matrix, compensation, subspace, endpoint and inverse algorithms are unchanged." + }, + "lemma_review": { + "row_information_flow": "VALID_WITH_STATED_FIXED_PREFIX_AND_MONOTONE_COMMON_FRAME_HYPOTHESES", + "column_promotion_invariant": "VALID_WITH_STATED_ARBITRARY_DIRT_IDENTITY_ENDPOINT_AND_INVERTIBLE_SCALAR_HYPOTHESES", + "promotion_case_explicit": true, + "no_claim_of_tail_gatecount_or_global_optimality": true, + "eight_gap_helpers_start_rank1_end_rank9_width8_confirmed": true + }, + "cost_arithmetic": { + "prefix_rank_mass": 4512, + "old_suffix_rank_mass": 1122, + "local_rank_mass": 5634, + "helper_width_sum": 3778, + "idle_mass": 14382, + "rank_deficit_per_replica": 320, + "all_728_register_suffix_relaxation_included": true, + "lower_bound_direction_correct": true, + "outward_rounded_numerical_exclusion_claimed": false + }, + "verification_gates_review": [ + "exact package closure and each SHA", + "gzip and raw word pins", + "full primary recomputation equals committed certificate excluding time", + "independent common-field record and row-only frame comparison", + "proper basis-deletion rejection for all helpers", + "eight row-only dirty-column false-admission checks", + "exact prefix/suffix/idle/deficit arithmetic", + "four independent semantic fixtures", + "real corrupt-word CLI exit and no output", + "existing output preservation", + "need-based rejection remains active under optimized Python" + ], + "verification_execution_scope": "Static gate review only. Coordinator owns normal/relocated/optimized executions; no duplicate execution was launched.", + "predecessor_credit": { + "pr864_login": "navinor", + "head": "9b1a55f6d281ae5bd7d691977d38861fcd9bd015", + "claim_sha256": "40931140e343a6ce9e63a5d6d4c39da8a1dac9751cbe82b36e0e8585b72dcb84", + "same_X4_FULL_cone_method_acknowledged": true, + "no_new_cone_method_claim": true + }, + "new_main_confirmation": { + "commit": "bbc600db2fc15007b7c914f4f2b2ed55fa909c87", + "selected_pr": 942, + "kappa": "1661960547713947/1000000000000000000", + "selected_source_head": "1960cfa919a0945d0ca4cb14ea96237000037903", + "selected_result_git_bytes_sha256": "1d35283cb0ce3f8db1f285683933517f9e87475d295e2b6316399ad9928c81c3" + }, + "correctness_defects": [], + "blockers": [], + "next_step": "Coordinator can finish planned relocation/optimized/source-negative receipts and focused PR packaging. This review does not authenticate past execution or certify the full multiplication theorem.", + "public_metadata_redaction": { + "status": "SANITIZED_DERIVATIVE", + "original_receipt_sha256": "1eeffcce0640353cbd5cc23013f5ce79dd43e2db46ba2db052f8cc172b106eb7", + "absolute_local_paths_replaced_by_portable_markers": true, + "complete_original_preserved_privately": true, + "mathematical_values_and_artifact_hashes_unchanged": true, + "not_byte_identical_to_original": true + } +} diff --git a/research/u8-terminal-cone-census/audit/PACKAGE-NEGATIVE-CONTROLS.json b/research/u8-terminal-cone-census/audit/PACKAGE-NEGATIVE-CONTROLS.json new file mode 100644 index 0000000000..69580a98fd --- /dev/null +++ b/research/u8-terminal-cone-census/audit/PACKAGE-NEGATIVE-CONTROLS.json @@ -0,0 +1,37 @@ +{ + "status": "PASS_ACTUAL_PACKAGE_NEGATIVE_CONTROLS", + "recorded_utc": "2026-10-13T15:32:17.139402+00:00", + "optimized": true, + "source_root": "/kappa-interface-20261013/research/u8-terminal-cone-census", + "source_manifest_sha256": "28175d04f5dc0d0ab33dedcc2732ce2505f27a5f9985d39d99424a72a407b413", + "cases": [ + { + "mutation": "changed_source", + "exit_code": 1, + "required_rejection": "source hash mismatch: census.py", + "stderr_sha256": "da56a8a0a303160cf29aba0eb138e9853804a3b63decf57255be36c0fa802cbb" + }, + { + "mutation": "missing_manifest_entry", + "exit_code": 1, + "required_rejection": "source closure differs from manifest", + "stderr_sha256": "04c6c82bd94cfdc1c575182d215798ea7bee04cfba3367ba1ee55ea51694a120" + }, + { + "mutation": "rehashed_wrong_certificate", + "exit_code": 1, + "required_rejection": "recomputed exact certificate mismatch", + "stderr_sha256": "0b704ad9ab5c195d493f68f7060398c8d761a46d5cda4af2a049f7e27cec8e1c" + } + ], + "source_changed": false, + "all_children_finished": true, + "public_metadata_redaction": { + "status": "SANITIZED_DERIVATIVE", + "original_receipt_sha256": "0d9b2cd31b8301f9e3fbac0ff7d30149c34fc4492805913d1e6eca44c4b4313e", + "absolute_local_paths_replaced_by_portable_markers": true, + "complete_original_preserved_privately": true, + "mathematical_values_and_artifact_hashes_unchanged": true, + "not_byte_identical_to_original": true + } +} diff --git a/research/u8-terminal-cone-census/audit/RELOCATED-OPTIMIZED-COMMAND.json b/research/u8-terminal-cone-census/audit/RELOCATED-OPTIMIZED-COMMAND.json new file mode 100644 index 0000000000..d5a8a5b28e --- /dev/null +++ b/research/u8-terminal-cone-census/audit/RELOCATED-OPTIMIZED-COMMAND.json @@ -0,0 +1,26 @@ +{ + "command": [ + "kappa-run-20261013/venv/bin/python", + "-O", + "-I", + "-B", + "/verify.py", + "--optimized" + ], + "cwd": "", + "started_utc": "2026-10-13T15:30:52.446007+00:00", + "status": "FINISHED", + "python": "3.12.14 (main, Aug 25 2026, 13:50:33) [Clang 22.1.3 ]", + "thread_limit": 1, + "exit_code": 0, + "seconds": 1.6688253749161959, + "log_sha256": "092cebe53ac9ab45aa5595a87f5a6003a07a162f48b8846ccfa98af38a40b4e7", + "public_metadata_redaction": { + "status": "SANITIZED_DERIVATIVE", + "original_receipt_sha256": "bcb72e54ef2cef263e98a66591317e609678d6abef0c753ba5b677073b2f6226", + "absolute_local_paths_replaced_by_portable_markers": true, + "complete_original_preserved_privately": true, + "mathematical_values_and_artifact_hashes_unchanged": true, + "not_byte_identical_to_original": true + } +} diff --git a/research/u8-terminal-cone-census/audit/RELOCATED-OPTIMIZED-OUTPUT.txt b/research/u8-terminal-cone-census/audit/RELOCATED-OPTIMIZED-OUTPUT.txt new file mode 100644 index 0000000000..51cb864e43 --- /dev/null +++ b/research/u8-terminal-cone-census/audit/RELOCATED-OPTIMIZED-OUTPUT.txt @@ -0,0 +1,17 @@ +{ + "status": "PASS_EXACT_INDEPENDENT_U8_TERMINAL_CONE_CENSUS", + "source_files_checked": 17, + "helpers": 504, + "arbitrary_columns": 728, + "independent_semantic_mutations_rejected": 4, + "corrupted_input_cli_rejected": true, + "existing_output_preserved": true, + "controls": { + "old_endpoints_accepted": 504, + "proper_basis_deletions_rejected": 4186, + "row_only_false_admissions_rejected": 8, + "complete_cost_mass_checks": "PASS" + }, + "optimized_children": true, + "scope": "fixed-prefix/end-B monotone common-frame endpoints; no kappa or tail-optimality claim" +} diff --git a/research/u8-terminal-cone-census/audit/REPORT-FINAL-OVERLAP.md b/research/u8-terminal-cone-census/audit/REPORT-FINAL-OVERLAP.md new file mode 100644 index 0000000000..472f50f514 --- /dev/null +++ b/research/u8-terminal-cone-census/audit/REPORT-FINAL-OVERLAP.md @@ -0,0 +1,99 @@ +# Final bounded overlap refresh for U8 terminal-cone census + +Recommended publication label: +**Independent finite verification / scoped negative result: complete U8 +terminal-cone census (no new kappa).** + +This supplements the earlier orientation REPORT.md; it does not overwrite its +source pins. In particular, the newly inspected PR864 claim requires explicit +credit for the necessary-cone method and the earlier X4 FULL-end closure. + +## Current observed pins and material upstream change + +- Main at both reads: bbc600db2fc15007b7c914f4f2b2ed55fa909c87. +- PR942 head unchanged:1960cfa919a0945d0ca4cb14ea96237000037903. + It merged 2026-10-13T15:06:48Z, merge commit + 3c84be1db6d225d02b239fefc18e8db6e005c9f9. +- Immutable-main current-status.md now selects PR942 at + 1661960547713947/10^18 and names make frontier942-verify. + This is the already known T37 tie, not a stronger value. +- PR962, head50c6ae8151493af21d284afe34fb35f68f6d4934, + independently ties PR942 with the U8 word, widths and bit supplier unchanged. +- Relevant exact predecessor PR864 remains + 9b1a55f6d281ae5bd7d691977d38861fcd9bd015. + Its CLAIM.md exact blob70779030fc6522a1d73340b09283f4cd394026d3 + is retained and independently hashed here. +- Earlier inspected scope pins retained: PR899 + 75e7699a691f321861ab8fe303f8bd8e6a6fc393, PR892 + 9778ba2d891468996b81eb50c389bb4169df0025, PR698 + ab78f797cffcbeddbb17a7eb069741085ffe3351. No repeated source fetch + was performed for those earlier reads. + +## Factual overlap and the defensible contribution + +PR864's local claim already checks every FULL-ending helper of the immediate +X4 ancestor by joining end-B inverse-row and dirt-column supports. It reports +all216 fresh plus162 entering FULL-ending helpers have rank-nine joins and +labels this check “Not packaged.” Thus the elementary join method, and the +earlier X4 no-new-low-end conclusion, are predecessor work. + +The proposed research/u8-terminal-cone-census can still add useful, distinct +evidence if it binds the actual changed U8 compensated prefix/end-B boundary, +covers all504 helpers including126 existing low ends, records exact subspaces +and row/column witnesses, and checks them with separate Fraction-row and +dyadic-column implementations. This provides a durable independently checked +extension to U8 and a stronger complete coverage receipt than the unbundled +FULL-only X4 claim. It should not claim discovery of the cone criterion, first +X4 endpoint closure, broader circuit optimality or a new multiplication result. + +PR899 concerns fixed-op-multiset helper/holder merging under its specified +shipped-frame bounds. PR698 optimizes CK B frames while fixing exact end-B +frames. PR892 applies early rank-eight restoration to one new coded helper in +four PR626 embeddings, then closes those fixed-geometry mixtures. Their +specified programs/domains differ from the actual all504 U8 census. PR864 is +the closest method/result predecessor and should be cited prominently, +alongside the existing auditor's cone predicates. + +The negative claim must remain exactly scoped: fixed compensated scalar +prefix, fixed end-B frames, arbitrary independent dirty inputs and retained +monotone common-frame/native wrapper interface. It does not exclude changed +scalar programs, frames, compensation, noncoordinate primitives, cross-call +restoration contracts or different paid helper inventories. This overlap audit +has not run or certified either implementation or the candidate's result. + +## Changes since orientation and coverage boundaries + +Conservative cutoff14:49:00Z predates the saved orientation requests at +14:51:07–10UTC. Initial and confirming updated-open/closed pages each contain100 +entries and cross that cutoff; no second page is required for this bounded +interval under the API's updated-descending order. The created-descending +first page confirms new arrivals through969 at its read. A later open +confirmation adds970/971 and changes969's head from52275a6 to d1ee3f4. +The closed confirmation captures871's subsequent closure. These serial changes +are preserved rather than treated as an atomic snapshot. + +The union contains31 updated PRs, including ten new numbers962–971. +Their bodies concern the T37 tie, P111 receiver minimality, CK weighted forests, +R439 helper triples/stars, prescribed-target decoder thresholds, complex +frame-pair decoder copy costs, historical scalar swap runs, bit-compression +provenance and a targetwise audit of PR966. None inspected describes this +complete fixed-U8 helper terminal-cone census. The changed older items are +metadata/status, finite circuit or verifier updates in their earlier scopes. + +Four all-state GitHub title/body queries return: +- U8 + terminal:0. +- dirt-column:28. +- cold-ended + cone:1. +- 504 + census:5. + +Each response has incomplete_results=false and is shorter than100. Relevant +hits include864,604,617 and717. Search result count is not proof of priority: +indexing, synonyms, comments and source-only claims can escape those queries. +New-arrival exclusions are body/scope review, not whole-source absence checks. +This is a bounded overlap refresh, not a comprehensive frontier or literature +novelty assertion; events after each response remain outside that response. + +COMPACT-COVERAGE.json records exact heads, source files, boundaries and drift. +Raw serial responses and immutable-main status are retained. FETCH-RECEIPTS-FINAL +and the local manifest bind the evidence. No publication, claim, source edit, +compute job or native/search verifier was performed. diff --git a/research/u8-terminal-cone-census/audit/SEMANTIC-MUTATION-CONTROLS.json b/research/u8-terminal-cone-census/audit/SEMANTIC-MUTATION-CONTROLS.json new file mode 100644 index 0000000000..6ba2c34b86 --- /dev/null +++ b/research/u8-terminal-cone-census/audit/SEMANTIC-MUTATION-CONTROLS.json @@ -0,0 +1,41 @@ +{ + "status": "PASS_SEMANTIC_MUTATION_CONTROLS", + "positive_cases": 6, + "negative_cases": 6, + "negative_controls": [ + { + "name": "retain_exactly_cancelled_zero_in_support", + "status": "REJECTED", + "reason": "cancelled zero must be absent from exact column support" + }, + { + "name": "substitute_forward_for_inverse_row", + "status": "REJECTED", + "reason": "noncommuting example requires the inverse-row support" + }, + { + "name": "omit_dirty_column_constraint", + "status": "REJECTED", + "reason": "omission loses a genuinely independent frame direction" + }, + { + "name": "use_deduplicated_generator_count_as_GF2_rank", + "status": "REJECTED", + "reason": "three different generators span only two GF2 dimensions" + }, + { + "name": "use_intersection_as_GF2_join", + "status": "REJECTED", + "reason": "frame join must include both one-dimensional subspaces" + }, + { + "name": "omit_dirty_column_on_actual_gap_helper347", + "status": "REJECTED", + "reason": "actual helper347 row-only mutant differs from certified joined cone" + } + ], + "actual_result_sha256": "64f99ff9ccd2fe906dbe44272653f319cbacfb8382d6484dffbd78e56ecb1e99", + "control_script_sha256": "8aa369b49bf4e31008d1733afaed4e7bec975ee2b59e8a9695609d4a4baedb0d", + "independent_script_sha256": "4e86d2b14ea4321e542f099264b070fc4f7a1056911fa449b807961d970f5340", + "seconds": 0.010039166081696749 +} diff --git a/research/u8-terminal-cone-census/audit/SOURCE-PIN-CONTROL.json b/research/u8-terminal-cone-census/audit/SOURCE-PIN-CONTROL.json new file mode 100644 index 0000000000..9324edbccf --- /dev/null +++ b/research/u8-terminal-cone-census/audit/SOURCE-PIN-CONTROL.json @@ -0,0 +1,12 @@ +{ + "status": "PASS_ACTUAL_PUBLIC_CLI_SOURCE_PIN_CONTROL", + "expected_exit_code": 1, + "actual_exit_code": 1, + "no_result_created": true, + "changed_bytes": 1, + "original_content_sha256": "090fd574747fbf9628e70cb9beb792732914cfa52e1df147579fe4dbccc68c5a", + "mutated_content_sha256": "e4b32bc9166e29dacb11a71167d6d7fbff9f6c3f197fe697d45d10f59f7b3cae", + "mutated_gzip_sha256": "ec7d57751f2102ed087025619eea0a026399db2b11fee5ca9bc04b42279a2a63", + "log_sha256": "85cccb121156512a4da5c9a83e24e8515d2ba91688dbb3cc81b82c96cbb8713c", + "script_sha256": "4e86d2b14ea4321e542f099264b070fc4f7a1056911fa449b807961d970f5340" +} diff --git a/research/u8-terminal-cone-census/census.py b/research/u8-terminal-cone-census/census.py new file mode 100644 index 0000000000..57a5360954 --- /dev/null +++ b/research/u8-terminal-cone-census/census.py @@ -0,0 +1,218 @@ +"""Exact necessary terminal cones for the frozen U8 scalar prefix. + +Standalone diagnostic; no supplier construction or exponent certificate. +Credits icekylinx's arbitrary-dirt auditor and the PR591/604/635 cold-end +criterion retained by Jeremy Kothe's PR869/870 U8. Apache-2.0. +Prepared for ToikY with substantial OpenAI Codex assistance. +""" +import argparse +from collections import Counter +from fractions import Fraction +import gzip +import hashlib +import json +from pathlib import Path +import time + +WORD_SHA = "090fd574747fbf9628e70cb9beb792732914cfa52e1df147579fe4dbccc68c5a" +FULL = (256, 128, 64, 32, 16, 8, 4, 2, 1) + + +def require(condition, message): + if not condition: + raise ValueError(message) + + +def span(vectors): + pivots = {} + for vector in vectors: + while vector: + bit = vector.bit_length() - 1 + if bit in pivots: + vector ^= pivots[bit] + else: + pivots[bit] = vector + break + for bit in sorted(pivots): + for high in pivots: + if high > bit and (pivots[high] >> bit) & 1: + pivots[high] ^= pivots[bit] + return tuple(pivots[bit] for bit in sorted(pivots, reverse=True)) + + +def included(small, large): + return span(small + large) == large + + +def touched(gate): + return gate[1:3] if gate[0] == "add" else gate[1:2] + + +def execute(gates, rows, inverse=False): + sequence = reversed(gates) if inverse else gates + for gate in sequence: + kind = gate[0] + if kind == "add": + target, source = gate[1:3] + require(target != source, "self addition") + coefficient = Fraction(gate[3], gate[4]) * (-1 if inverse else 1) + for column, value in list(rows[source].items()): + total = rows[target].get(column, 0) + coefficient * value + if total: + rows[target][column] = total + else: + rows[target].pop(column, None) + elif kind == "scale": + coefficient = Fraction(gate[2], gate[3]) + require(coefficient != 0, "zero scale") + if inverse: + coefficient = 1 / coefficient + rows[gate[1]] = {k: coefficient * v for k, v in rows[gate[1]].items()} + else: + raise ValueError("unknown primitive") + return rows + + +def identity(size): + return [{i: Fraction(1)} for i in range(size)] + + +def compute(word): + v, h, helpers = (word["report"][k] for k in ("v", "h", "R")) + require((v, h, helpers) == (112, 9, 504), "wrong U8 geometry") + size = 2 * v + helpers + core = word["A"] + word["cut"] + word["B"] + raw = execute(core, identity(size)) + response = [{} for _ in range(size)] + for target in range(v, 2 * v): + response[target] = {k: a for k, a in raw[target].items() if k >= 2 * v} + execute(word["precondition"], response) + compensation = [ + ["add", target, helper, -value.numerator, value.denominator, []] + for target in range(v, 2 * v) + for helper, value in sorted(response[target].items()) + ] + prefix = word["precondition"] + compensation + core + forward = execute(prefix, identity(size)) + inverse = execute(prefix, identity(size), inverse=True) + # Replaying the inverse on the actual forward state checks all columns. + require(execute(prefix, [dict(row) for row in forward], inverse=True) == identity(size), + "prefix inverse does not restore every arbitrary input") + start = [(port,) for port in word["ports"]] + [()] * (v + helpers) + for q, frame in word.get("start_extra", {}).items(): + start[int(q)] = span(frame) + end = [FULL] * v + [ + span(x for x in range(1, 512) if (x & port).bit_count() % 2 == 0) + for port in word["ports"] + ] + [FULL] * helpers + for q, frame in word.get("helper_final", {}).items(): + end[int(q)] = span(frame) + current = list(start) + paid = Counter() + + def climb(q, frame): + frame = span(frame) + require(included(current[q], frame), "nonmonotone frame") + delta = len(frame) - len(current[q]) + if delta: + paid[delta] += 1 + current[q] = frame + + for section in ("A", "B"): + if section == "B": + levels = {int(q): span(frame) for q, frame in word.get("target_levels", {}).items()} + require(all(current[v + q] == levels.get(q, ()) for q in range(v)), "target boundary") + for carrier, frame in zip(word["centers"], word["center_frames"]): + frame = span(frame) + require(current[carrier] == frame, "center boundary") + served = {levels.get(g[1] - v, ()) for g in word["cut"] if g[2] == carrier} + for target_frame in sorted(served, key=lambda f: -len(f)): + require(included(target_frame, frame), "center nesting") + if frame != target_frame: + paid[len(frame) - len(target_frame)] += 1 + frame = target_frame + for gate in word[section]: + for q in touched(gate): + climb(q, gate[-1]) + end_b = list(current) + prefix_paid = paid.copy() + early = word.get("early_cleanup", []) + early_indices = {i for i, _ in early} + require(len(early_indices) == len(early), "duplicate early cleanup") + tail = [word["cleanup"][i][:-1] + [frame] for i, frame in early] + cleanup = [g for i, g in enumerate(word["cleanup"]) if i not in early_indices] + for gate in tail: + for q in touched(gate): + climb(q, gate[-1]) + for q, frame in enumerate(end): + climb(q, frame) + require(dict(paid) == {int(k): n for k, n in word["report"]["local_profile"].items()}, "paid profile") + require(all(end[q] == FULL for g in cleanup for q in touched(g)), "FULL cleanup access") + complete = execute(tail + cleanup, [dict(row) for row in forward]) + expected = identity(size) + for q in range(v): + expected[v + q][q] = Fraction(1) + require(complete == expected, "complete arbitrary-dirt endpoint") + records = [] + dirt_rows = {q: [] for q in range(2 * v, size)} + for row, coefficients in enumerate(forward): + for q in coefficients: + if q >= 2 * v and row != q: + dirt_rows[q].append(row) + for q in range(2 * v, size): + required = sorted(set(inverse[q]) | set(dirt_rows[q]) | {q}) + row_frame = span(vector for k in set(inverse[q]) | {q} for vector in end_b[k]) + minimal = span(vector for k in required for vector in end_b[k]) + require(included(minimal, end[q]), "current endpoint violates necessary cones") + records.append({ + "helper": q - 2 * v, "register": q, + "start_frame": list(start[q]), "end_b_frame": list(end_b[q]), + "current_terminal_frame": list(end[q]), "minimal_necessary_terminal_frame": list(minimal), + "row_and_monotonicity_minimum": list(row_frame), + "row_only_dimension_slack": len(end[q]) - len(row_frame), + "inverse_row_support": sorted(inverse[q]), "dirt_column_support": dirt_rows[q], + "current_width": len(end[q]) - len(start[q]), + "minimal_necessary_width": len(minimal) - len(start[q]), + "terminal_dimension_slack": len(end[q]) - len(minimal), + "full_cleanup_incidence": sum(q in touched(g) for g in cleanup), + "column_blockers_for_row_minimum": [k for k in dirt_rows[q] if not included(end_b[k], row_frame)], + }) + return { + "status": "PASS_EXACT_NECESSARY_U8_TERMINAL_CONE_CENSUS", + "helper_count": helpers, "arbitrary_input_columns": size, + "compensation_gates": len(compensation), "prefix_gates": len(prefix), + "local_profile": dict(sorted(paid.items())), + "fixed_prefix_paid_profile": dict(sorted(prefix_paid.items())), + "actual_old_suffix_paid_profile": dict(sorted((paid - prefix_paid).items())), + "all_register_minimal_one_jump_suffix_profile": dict(sorted(Counter( + len(end[q]) - len(end_b[q]) for q in range(size) if end[q] != end_b[q] + ).items())), + "current_width_inventory": dict(sorted(Counter(r["current_width"] for r in records).items())), + "necessary_width_inventory": dict(sorted(Counter(r["minimal_necessary_width"] for r in records).items())), + "dimension_slack_histogram": dict(sorted(Counter(r["terminal_dimension_slack"] for r in records).items())), + "row_only_dimension_slack_histogram": dict(sorted(Counter(r["row_only_dimension_slack"] for r in records).items())), + "row_only_candidates": [r["helper"] for r in records if r["row_only_dimension_slack"]], + "candidates": [r["helper"] for r in records if r["terminal_dimension_slack"]], + "records": records, + "scope": "Necessary cones for the fixed compensated scalar prefix and end-B frames under monotone equal-common-frame invertible ADD/nonzero SCALE cleanup on the same arbitrary dirty registers. No added COPY/ERASE/clean scratch or frame reset. This excludes smaller helper endpoints; it does not exclude cheaper tails at unchanged endpoints, changed prefix/end-B or other interfaces. No new exponent or full theorem claim.", + } + + +def main(): + parser = argparse.ArgumentParser(description=__doc__) + parser.add_argument("--word", type=Path, required=True) + parser.add_argument("--out", type=Path, required=True) + args = parser.parse_args() + require(not args.out.exists(), "refusing to overwrite output") + start = time.monotonic() + raw = gzip.decompress(args.word.read_bytes()) + require(hashlib.sha256(raw).hexdigest() == WORD_SHA, "frozen word pin") + result = compute(json.loads(raw)) + result["word_content_sha256"] = WORD_SHA + result["seconds"] = time.monotonic() - start + args.out.write_text(json.dumps(result, indent=2) + "\n") + print(json.dumps({k: v for k, v in result.items() if k != "records"}, indent=2)) + + +if __name__ == "__main__": + main() diff --git a/research/u8-terminal-cone-census/independent.py b/research/u8-terminal-cone-census/independent.py new file mode 100644 index 0000000000..d72cbce1ad --- /dev/null +++ b/research/u8-terminal-cone-census/independent.py @@ -0,0 +1,359 @@ +"""Independent exact terminal-cone census, using dyadic matrix columns. + +No imports from the primary census or supplier verifiers. GF(2) spaces are +enumerated as sets of all their vectors, rather than Gaussian rank tests. +Prepared with OpenAI Codex assistance for ToikY. Apache-2.0. +""" +import argparse +from collections import Counter +from datetime import datetime, timezone +from functools import lru_cache +import gzip +import hashlib +import json +from pathlib import Path +import time + +WORD_SHA = "090fd574747fbf9628e70cb9beb792732914cfa52e1df147579fe4dbccc68c5a" + + +def need(ok, message): + if not ok: + raise ValueError(message) + + +def dyadic(num, den): + need(den != 0, "zero denominator") + if den < 0: + num, den = -num, -den + need(den & (den - 1) == 0, "non-dyadic coefficient") + exponent = den.bit_length() - 1 + if num: + factor = (abs(num) & -abs(num)).bit_length() - 1 + num >>= factor + exponent -= factor + return num, exponent + + +def fraction_pair(num, exponent): + if not num: + return 0, 1 + factor = (abs(num) & -abs(num)).bit_length() - 1 + num >>= factor + exponent -= factor + return (num << -exponent, 1) if exponent < 0 else (num, 1 << exponent) + + +def plus(left, right, num=1, exponent=0): + """Column vectors are (integer dictionary, shared denominator exponent).""" + ld, le = left + rd, re = right + re += exponent + e = max(le, re) + out = {k: a << (e - le) for k, a in ld.items()} + for k, b in rd.items(): + a = out.get(k, 0) + num * (b << (e - re)) + if a: + out[k] = a + else: + out.pop(k, None) + return out, e + + +def scalar(g, inverse=False): + n, d = g[3:5] if g[0] == "add" else g[2:4] + if inverse: + if g[0] == "add": + n = -n + else: + n, d = d, n + n, e = dyadic(n, d) + need(n != 0, "zero scalar primitive") + return n, e + + +def columns(gates, size, inverse=False): + """Right-multiply elementary matrices: chronological gates go in reverse. + + For a shear t += c*s, M*G changes column s, by c times column t. + Inverse factors are right-multiplied in original chronological order. + """ + result = [({q: 1}, 0) for q in range(size)] + seq = gates if inverse else reversed(gates) + for g in seq: + n, e = scalar(g, inverse) + if g[0] == "add": + t, s = g[1:3] + need(t != s and 0 <= t < size and 0 <= s < size, "invalid shear") + result[s] = plus(result[s], result[t], n, e) + elif g[0] == "scale": + q = g[1] + vals, old_e = result[q] + result[q] = ({k: n * a for k, a in vals.items()}, old_e + e) + else: + raise ValueError("unknown primitive") + return result + + +def canon_columns(matrix): + return [{q: fraction_pair(n, e) for q, n in col.items()} for col, e in matrix] + + +def matrix_sha(matrix): + return hashlib.sha256(json.dumps(canon_columns(matrix), sort_keys=True, + separators=(",", ":")).encode()).hexdigest() + + +@lru_cache(maxsize=None) +def space(generators): + members = {0} + for g in generators: + need(isinstance(g, int) and 0 <= g < 512, "GF2 vector out of range") + members |= {x ^ g for x in members} + return frozenset(members) + + +@lru_cache(maxsize=None) +def basis(members): + # The smallest vector of each leading-bit class is its reduced pivot. + return tuple(min(x for x in members if x.bit_length() == b) + for b in range(9, 0, -1) + if any(x.bit_length() == b for x in members)) + + +def dimension(members): + need(len(members) & (len(members) - 1) == 0, "not a subspace cardinality") + return len(members).bit_length() - 1 + + +def join(spaces): + out = space(()) + for s in spaces: + if not s <= out: + out = space(tuple(basis(out)) + tuple(basis(s))) + return out + + +def touched(g): + return g[1:3] if g[0] == "add" else g[1:2] + + +def frames(word, v, helpers): + full = space(tuple(1 << b for b in range(9))) + start = [space((q,)) for q in word["ports"]] + [space(())] * (v + helpers) + for q, f in word.get("start_extra", {}).items(): + start[int(q)] = space(tuple(f)) + end = [full] * v + [frozenset(x for x in range(512) + if (x & port).bit_count() % 2 == 0) + for port in word["ports"]] + [full] * helpers + for q, f in word.get("helper_final", {}).items(): + end[int(q)] = space(tuple(f)) + cur, paid = list(start), Counter() + + def ascend(q, f): + need(cur[q] <= f, "nonmonotone frame") + d = dimension(f) - dimension(cur[q]) + if d: + paid[d] += 1 + cur[q] = f + + for section in ("A", "B"): + if section == "B": + levels = {int(q): space(tuple(f)) for q, f in word.get("target_levels", {}).items()} + need(all(cur[v + q] == levels.get(q, space(())) for q in range(v)), "target boundary") + for q, raw in zip(word["centers"], word["center_frames"]): + f = space(tuple(raw)) + need(cur[q] == f, "center boundary") + children = {levels.get(g[1] - v, space(())) for g in word["cut"] if g[2] == q} + for child in sorted(children, key=lambda x: -dimension(x)): + need(child <= f, "non-nested center child") + if child != f: + paid[dimension(f) - dimension(child)] += 1 + f = child + for g in word[section]: + for q in touched(g): + ascend(q, space(tuple(g[-1]))) + end_b = list(cur) + early = word.get("early_cleanup", []) + early_ids = {i for i, _ in early} + need(len(early_ids) == len(early), "repeated early cleanup index") + tail = [word["cleanup"][i][:-1] + [f] for i, f in early] + cleanup = [g for i, g in enumerate(word["cleanup"]) if i not in early_ids] + for g in tail: + for q in touched(g): + ascend(q, space(tuple(g[-1]))) + for q, f in enumerate(end): + ascend(q, f) + need(dict(paid) == {int(k): n for k, n in word["report"]["local_profile"].items()}, "profile mismatch") + need(all(end[q] == full for g in cleanup for q in touched(g)), "cleanup beyond endpoint") + return start, end_b, end, tail, cleanup, paid + + +def reconstruct(word): + v, h, helpers = [word["report"][k] for k in ("v", "h", "R")] + need((v, h, helpers) == (112, 9, 504), "wrong pinned geometry") + size = 2 * v + helpers + core = word["A"] + word["cut"] + word["B"] + core_m = columns(core, size) + pre_m = columns(word["precondition"], size) + compensation = [] + # Compose the target-only response with the precondition as matrix columns. + for helper in range(2 * v, size): + response = ({}, 0) + vals, exponent = core_m[helper] + for q, n in vals.items(): + if v <= q < 2 * v: + response = plus(response, pre_m[q], n, exponent) + vals, exponent = response + need(all(v <= q < 2 * v for q in vals), "compensation left target chart") + for q, n in vals.items(): + a, b = fraction_pair(-n, exponent) + compensation.append(["add", q, helper, a, b, []]) + compensation.sort(key=lambda g: (g[1], g[2])) + prefix = word["precondition"] + compensation + core + p, inv = columns(prefix, size), columns(prefix, size, True) + start, end_b, end, tail, cleanup, paid = frames(word, v, helpers) + complete = canon_columns(columns(prefix + tail + cleanup, size)) + expected = [{q: (1, 1), **({v + q: (1, 1)} if q < v else {})} for q in range(size)] + need(complete == expected, "complete endpoint not exact on arbitrary columns") + undo = [] + for g in reversed(prefix): + n, e = scalar(g, True) + a, b = fraction_pair(n, e) + undo.append(["add", g[1], g[2], a, b, []] if g[0] == "add" + else ["scale", g[1], a, b, []]) + need(canon_columns(columns(prefix + undo, size)) == [{q: (1, 1)} for q in range(size)], + "exact inverse composition failed") + inv_rows = [[] for _ in range(size)] + p_rows = [[] for _ in range(size)] + for k, (col, _) in enumerate(inv): + for q in col: + inv_rows[q].append(k) + for k, (col, _) in enumerate(p): + for q in col: + p_rows[q].append(k) + records, row_records = [], [] + for q in range(2 * v, size): + inverse_support = inv_rows[q] + dirty_support = sorted(k for k in p[q][0] if k != q) + row_cone = join(end_b[k] for k in [q] + inverse_support) + both_cone = join([row_cone] + [end_b[k] for k in dirty_support]) + need(both_cone <= end[q], "existing endpoint fails joined admission cone") + records.append({ + "helper": q - 2 * v, "register": q, + "start_frame": list(basis(start[q])), "end_b_frame": list(basis(end_b[q])), + "current_terminal_frame": list(basis(end[q])), + "minimal_necessary_terminal_frame": list(basis(both_cone)), + "inverse_row_support": inverse_support, "dirt_column_support": dirty_support, + "current_width": dimension(end[q]) - dimension(start[q]), + "minimal_necessary_width": dimension(both_cone) - dimension(start[q]), + "terminal_dimension_slack": dimension(end[q]) - dimension(both_cone), + "full_cleanup_incidence": sum(q in touched(g) for g in cleanup), + }) + row_records.append({"helper": q - 2 * v, "register": q, + "row_only_frame": list(basis(row_cone)), + "row_only_dimension": dimension(row_cone), + "row_only_terminal_gap": dimension(end[q]) - dimension(row_cone)}) + return { + "status": "PASS_INDEPENDENT_EXACT_COLUMN_CONE_CENSUS", + "algorithm": "Right-composed sparse integer dyadic columns; all-vector GF2 subspaces; no primary or supplier code imports", + "helper_count": helpers, "arbitrary_input_columns": size, + "compensation_gates": len(compensation), "prefix_gates": len(prefix), + "compensation_sha256": hashlib.sha256(json.dumps(compensation, separators=(",", ":")).encode()).hexdigest(), + "forward_matrix_sha256": matrix_sha(p), "inverse_matrix_sha256": matrix_sha(inv), + "exact_full_endpoint_identity": True, "exact_prefix_inverse_identity": True, + "local_profile": dict(sorted(paid.items())), + "current_width_inventory": dict(sorted(Counter(r["current_width"] for r in records).items())), + "necessary_width_inventory": dict(sorted(Counter(r["minimal_necessary_width"] for r in records).items())), + "dimension_slack_histogram": dict(sorted(Counter(r["terminal_dimension_slack"] for r in records).items())), + "candidates": [r["helper"] for r in records if r["terminal_dimension_slack"]], + "row_only_gap_histogram": dict(sorted(Counter(r["row_only_terminal_gap"] for r in row_records).items())), + "row_only_gap_helpers": [r["helper"] for r in row_records if r["row_only_terminal_gap"]], + "records": records, "row_only_records": row_records, + "scope": "Exact finite census. Joined cone excludes smaller endpoints under retained row/column admission contract. Row-only information-flow claim and separately argued column invariant are documented in AUDIT.md; no sufficient cleanup or exponent claim.", + } + + +def controls(): + out = [] + gates = [["add", 0, 1, 1, 2, []], ["add", 0, 1, -1, 2, []]] + exact = canon_columns(columns(gates, 2)) + need(exact == [{0: (1, 1)}, {1: (1, 1)}], "cancellation positive control") + # A support-only union mutant retains the cancelled (row0,column1) term. + support_mutant = [{0}, {0, 1}] + need(support_mutant != [set(c) for c in exact], "zero-union mutant escaped") + out.append({"name": "exact_zero_cancellation", "positive": True, "negative_rejected": True, + "cancelled_entry": [0, 1]}) + noncommuting = [["add", 0, 1, 1, 1, []], ["add", 1, 2, 1, 1, []]] + forward, inverse = columns(noncommuting, 3), columns(noncommuting, 3, True) + frow = [k for k, (col, _) in enumerate(forward) if 0 in col] + irow = [k for k, (col, _) in enumerate(inverse) if 0 in col] + need(frow == [0, 1] and irow == [0, 1, 2], "inverse-row orientation positive control") + need(frow != irow, "forward-row substitution escaped") + out.append({"name": "inverse_not_forward_row", "positive": True, "negative_rejected": True, + "forward_support": frow, "inverse_support": irow}) + f = [space((1,)), space((2,))] + shear = columns([["add", 1, 0, 1, 1, []]], 2) + dirty = sorted(k for k in shear[0][0] if k != 0) + row_only = f[0] + joined = join([row_only] + [f[k] for k in dirty]) + need(dirty == [1] and dimension(row_only) == 1 and dimension(joined) == 2, + "dirty-column positive control") + need(row_only != joined, "omitted dirty-column mutant escaped") + out.append({"name": "dirty_column_not_optional_in_contract", "positive": True, + "negative_rejected": True, "row_only_dimension": 1, "joined_dimension": 2}) + correct = join([space((1,)), space((2,)), space((3,))]) + need(correct == frozenset({0, 1, 2, 3}) and basis(correct) == (2, 1), "GF2 join positive control") + wrong = (3, 2, 1) + need(wrong != basis(correct), "deduplicated-generator-rank mutant escaped") + out.append({"name": "GF2_join_is_span_not_generator_count", "positive": True, + "negative_rejected": True, "rank": 2, "dependent_generator_count": 3}) + return out + + +def main(): + parser = argparse.ArgumentParser(description=__doc__) + parser.add_argument("--word", type=Path, required=True) + parser.add_argument("--primary", type=Path, required=True) + parser.add_argument("--out", type=Path, required=True) + args = parser.parse_args() + need(not args.out.exists(), "refusing overwrite of a receipt") + started = time.monotonic() + compressed = args.word.read_bytes() + raw = gzip.decompress(compressed) + need(hashlib.sha256(raw).hexdigest() == WORD_SHA, "raw word content pin mismatch") + result = reconstruct(json.loads(raw)) + primary_raw = args.primary.read_bytes() + primary = json.loads(primary_raw) + fields = ["helper_count", "arbitrary_input_columns", "compensation_gates", "prefix_gates", + "local_profile", "current_width_inventory", "necessary_width_inventory", + "dimension_slack_histogram", "candidates", "records"] + # JSON roundtrip normalizes integer dictionary keys for the independent result. + normalized = json.loads(json.dumps(result)) + # Primary adds explanatory fields; compare every independently derived field. + primary_common = dict(primary) + primary_common["records"] = [{k: row[k] for k in expected} + for row, expected in zip(primary["records"], normalized["records"])] + need(len(primary["records"]) == len(normalized["records"]), "record count mismatch") + mismatches = [k for k in fields if normalized[k] != primary_common[k]] + need(not mismatches, "primary comparison mismatch: " + repr(mismatches)) + result["compared_primary_fields"] = fields + result["all_504_records_match_primary"] = True + result["semantic_controls"] = controls() + changed = bytearray(raw) + changed[-2] ^= 1 + need(hashlib.sha256(changed).hexdigest() != WORD_SHA, "source corruption control escaped") + result["source_pin_control"] = {"one_byte_content_change_rejected_before_parse": True} + result["pins"] = {"word_path": str(args.word.resolve()), "word_content_sha256": WORD_SHA, + "word_gzip_sha256": hashlib.sha256(compressed).hexdigest(), + "primary_path": str(args.primary.resolve()), + "primary_result_sha256": hashlib.sha256(primary_raw).hexdigest(), + "independent_script_sha256": hashlib.sha256(Path(__file__).read_bytes()).hexdigest()} + result["recorded_utc"] = datetime.now(timezone.utc).isoformat() + result["seconds"] = time.monotonic() - started + args.out.write_text(json.dumps(result, indent=2) + "\n") + print(json.dumps({k: v for k, v in result.items() if k not in ("records", "row_only_records")}, indent=2)) + + +if __name__ == "__main__": + main() diff --git a/research/u8-terminal-cone-census/inputs/U8-WORD.json.gz b/research/u8-terminal-cone-census/inputs/U8-WORD.json.gz new file mode 100644 index 0000000000000000000000000000000000000000..2671d8c3dc87736f7338dd7298046c4ad623637c GIT binary patch literal 59101 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.10. Apache-2.0. +Prepared with substantial OpenAI Codex assistance for ToikY. +""" +import argparse +from collections import Counter +import gzip +import hashlib +import importlib.util +import json +import os +from pathlib import Path +import subprocess +import sys +import tempfile + + +def need(condition, message): + if not condition: + raise ValueError(message) + + +def digest(path): + return hashlib.sha256(path.read_bytes()).hexdigest() + + +def check_sources(root): + manifest = json.loads((root / "MANIFEST.json").read_text()) + actual = {p.relative_to(root).as_posix() for p in root.rglob("*") + if p.is_file() and p.name != "MANIFEST.json" and "__pycache__" not in p.parts} + need(actual == set(manifest), "source closure differs from manifest") + for name, expected in manifest.items(): + path = root / name + need(path.resolve().is_relative_to(root.resolve()), "manifest path escapes package") + need(digest(path) == expected, "source hash mismatch: " + name) + sources = json.loads((root / "SOURCES.json").read_text()) + word = root / "inputs/U8-WORD.json.gz" + need(digest(word) == sources["word_gzip_sha256"], "immutable input container mismatch") + need(hashlib.sha256(gzip.decompress(word.read_bytes())).hexdigest() + == sources["word_raw_sha256"], "word content mismatch") + return len(manifest) + + +def load_census(root): + spec = importlib.util.spec_from_file_location("u8_cone_primary", root / "census.py") + module = importlib.util.module_from_spec(spec) + spec.loader.exec_module(module) + return module + + +def run(script, arguments, optimized=False): + flags = ["-I", "-B"] + (["-O"] if optimized else []) + env = dict(os.environ, OPENBLAS_NUM_THREADS="1", OMP_NUM_THREADS="1", MKL_NUM_THREADS="1") + return subprocess.run([sys.executable, *flags, str(script), *map(str, arguments)], + env=env, capture_output=True, text=True, timeout=30) + + +def record_controls(module, certificate): + records = certificate["records"] + need(len(records) == 504 and [r["helper"] for r in records] == list(range(504)), + "not a complete unique helper census") + current_ok, smaller_rejected = 0, 0 + for row in records: + cone = tuple(row["minimal_necessary_terminal_frame"]) + old = tuple(row["current_terminal_frame"]) + need(module.included(cone, old), "old endpoint control rejected") + current_ok += 1 + # Every deletion from the literal independent basis is a proper subspace. + for index in range(len(old)): + proposed = module.span(old[:index] + old[index + 1:]) + need(not module.included(cone, proposed), "proper endpoint deletion escaped") + smaller_rejected += 1 + exceptions = [r for r in records if r["row_only_dimension_slack"]] + need([r["helper"] for r in exceptions] == [347, 349, 359, 361, 370, 371, 372, 373], + "row-only exception control") + need(all(len(r["row_and_monotonicity_minimum"]) == 8 + and len(r["minimal_necessary_terminal_frame"]) == 9 + and r["column_blockers_for_row_minimum"] for r in exceptions), + "omitted dirty-column control escaped") + for row in exceptions: + need(not module.included(tuple(row["minimal_necessary_terminal_frame"]), + tuple(row["row_and_monotonicity_minimum"])), + "row-only endpoint accepted") + prefix = Counter({int(k): n for k, n in certificate["fixed_prefix_paid_profile"].items()}) + suffix = Counter({int(k): n for k, n in certificate["actual_old_suffix_paid_profile"].items()}) + local = Counter({int(k): n for k, n in certificate["local_profile"].items()}) + jump = Counter({int(k): n for k, n in certificate["all_register_minimal_one_jump_suffix_profile"].items()}) + mass = lambda counts: sum(r * n for r, n in counts.items()) + need(prefix + suffix == local and (mass(prefix), mass(suffix), mass(local)) == (4512, 1122, 5634), + "prefix/suffix reconstruction or mass") + need(mass(jump) == mass(suffix), "one-jump mass mismatch") + width = sum(r["current_width"] for r in records) + need(width == 3778 and 48384 - 9 * width == 14382, "complete width/idle bill") + need(73 * 896 - (9 * mass(local) + 14382) == 320, "rank deficit") + return {"old_endpoints_accepted": current_ok, + "proper_basis_deletions_rejected": smaller_rejected, + "row_only_false_admissions_rejected": len(exceptions), + "complete_cost_mass_checks": "PASS"} + + +def main(): + parser = argparse.ArgumentParser(description=__doc__) + parser.add_argument("--optimized", action="store_true", help="also optimize child interpreters") + args = parser.parse_args() + root = Path(__file__).resolve().parent + source_count = check_sources(root) + expected = json.loads(gzip.decompress((root / "CERTIFICATE.json.gz").read_bytes())) + module = load_census(root) + controls = record_controls(module, expected) + with tempfile.TemporaryDirectory(prefix="u8-terminal-cones-") as directory: + tmp = Path(directory) + primary = tmp / "primary.json" + result = run(root / "census.py", ["--word", root / "inputs/U8-WORD.json.gz", "--out", primary], + args.optimized) + need(result.returncode == 0, "primary failed: " + result.stderr) + observed = json.loads(primary.read_text()) + observed.pop("seconds") + need(observed == expected, "recomputed exact certificate mismatch") + independent = tmp / "independent.json" + result = run(root / "independent.py", ["--word", root / "inputs/U8-WORD.json.gz", + "--primary", primary, "--out", independent], args.optimized) + need(result.returncode == 0, "independent failed: " + result.stderr) + audit = json.loads(independent.read_text()) + need(audit["all_504_records_match_primary"] and all( + r["positive"] and r["negative_rejected"] for r in audit["semantic_controls"]), + "independent controls incomplete") + row_frames = {r["helper"]: r["row_only_frame"] for r in audit["row_only_records"]} + need(all(r["row_and_monotonicity_minimum"] == row_frames[r["helper"]] + for r in expected["records"]), "independent row-only frame mismatch") + corrupt = tmp / "corrupt.json.gz" + raw = bytearray(gzip.decompress((root / "inputs/U8-WORD.json.gz").read_bytes())) + raw[-2] ^= 1 + corrupt.write_bytes(gzip.compress(raw, mtime=0)) + absent = tmp / "must-not-exist.json" + result = run(root / "census.py", ["--word", corrupt, "--out", absent], args.optimized) + need(result.returncode != 0 and "frozen word pin" in result.stderr and not absent.exists(), + "corrupted input CLI control escaped") + before = primary.read_bytes() + result = run(root / "census.py", ["--word", root / "inputs/U8-WORD.json.gz", "--out", primary], + args.optimized) + need(result.returncode != 0 and "refusing to overwrite" in result.stderr + and primary.read_bytes() == before, "output-preservation control escaped") + print(json.dumps({"status": "PASS_EXACT_INDEPENDENT_U8_TERMINAL_CONE_CENSUS", + "source_files_checked": source_count, "helpers": 504, "arbitrary_columns": 728, + "independent_semantic_mutations_rejected": len(audit["semantic_controls"]), + "corrupted_input_cli_rejected": True, "existing_output_preserved": True, + "controls": controls, "optimized_children": args.optimized, + "scope": "fixed-prefix/end-B monotone common-frame endpoints; no kappa or tail-optimality claim"}, indent=2)) + + +if __name__ == "__main__": + main()