diff --git a/docs/research/pr-intake-decisions.json b/docs/research/pr-intake-decisions.json index ba8c9f6ae1..1cdf17c35e 100644 --- a/docs/research/pr-intake-decisions.json +++ b/docs/research/pr-intake-decisions.json @@ -57514,6 +57514,48 @@ "url": "https://github.com/CrocSwap/integer-mult-bounds/pull/4507", "merge_commit": "b1857553b7ea74493b01080c67842e2b4a0dfea0" } + }, + { + "number": 4633, + "metadata": { + "author": { + "id": "MDQ6VXNlcjg4MjYxNTE2", + "is_bot": false, + "login": "DaysSky", + "name": "" + }, + "headRefOid": "b390d64abfcdba1a3816b86fc763cbc95d43c12c", + "isDraft": false, + "number": 4633, + "title": "Conditional \u03ba = 0.012401086416 (BIT-limited, +310.6%): BIT supplier to 0.012401086416 via the ambient quotient (kernel 150)" + }, + "reviewed_head": "b390d64abfcdba1a3816b86fc763cbc95d43c12c", + "current_head": "b390d64abfcdba1a3816b86fc763cbc95d43c12c", + "disposition": "partially_reviewed", + "github_state": "CLOSED", + "integration_location": [], + "unresolved_question": "Revision required: rational-kernel realization and physical main-port controller fail; the verifier accepts zero MOVE charges and empty frame bases. Raw numerical crossings also lack ordinary BIT/outer admission. See the exact-head audit, including full submitted scans.", + "closure": { + "kind": "closed_unmerged_observed", + "url": "https://github.com/CrocSwap/integer-mult-bounds/pull/4633", + "closed_at": "2026-10-22T13:41:17Z", + "merged": false, + "scope": "Observed during audit; this agent did not close the PR and does not infer the reason." + }, + "scope": "User-assigned full audited replay of both submitted packages and the nine-file update. Passing executions are preserved; scoped negative findings are not supplier or theorem acceptance. Proposed ledger entry only; the reviewed PR closed unmerged before audit publication.", + "review_completion": { + "changed_file_coverage": true, + "scoped_mechanism_review": true, + "required_execution_complete": true, + "published": true + }, + "verification_evidence": [ + "research/pr4633-quotient-contract-audit/README.md", + "research/pr4633-quotient-contract-audit/REPLAY.json", + "research/pr4633-quotient-contract-audit/EXPECTED.json", + "research/pr4633-quotient-contract-audit/EXPECTED-LATEST.json", + "https://github.com/CrocSwap/integer-mult-bounds/pull/4636" + ] } ] } diff --git a/docs/research/pr-ledger.json b/docs/research/pr-ledger.json index f20c75765c..c9336c1d88 100644 --- a/docs/research/pr-ledger.json +++ b/docs/research/pr-ledger.json @@ -3,7 +3,7 @@ "snapshot": "research/pr-reconciliation-20261012/starting-snapshot.json", "starting_main": "f19cb621be2caf3a7291a37c343c1c55afe935e0", "starting_open_count": 446, - "inventory_count": 3926, + "inventory_count": 3927, "family_round": "docs/research/pr-intake-decisions.json", "family_rounds": [ "research/community-family533-audit/DISPOSITIONS.json", @@ -56,7 +56,7 @@ ], "counts": { "incorporated": 2089, - "partially_reviewed": 1775, + "partially_reviewed": 1776, "superseded": 2, "unreviewed": 60 }, @@ -123,7 +123,7 @@ "research/community-efficient2400-audit/DISPOSITIONS.json": "2602f88f4a333ade0b654645a3126fcde85f16c41f25f36a397f8c760f8acf4c", "research/community-efficient2500-audit/DISPOSITIONS.json": "23d12152b20bd788c5fb1e1935543185dc3772634cf26efbfad88f6d78ed6e15", "research/community-efficient2600-audit/DISPOSITIONS.json": "d7816f0e79c421d750d691cb1edfc4646accae0a47dc817fb32409745795765c", - "docs/research/pr-intake-decisions.json": "d357fca16133cad4e3e5ab629556d804f648fe0cfed143b6a8dade6275fdf7eb", + "docs/research/pr-intake-decisions.json": "76e5b7738292ee011ab88bf274e09380ea95d29d8e177280a91f98ad12a39417", "research/community-batch970-audit/COMPANION-REVIEWS.json": "6510eb71b37cd3c0842999011ff84408c58493b7c8451a24082f526c6c18e7ec", "research/community-efficient300-audit/PARENT-EVIDENCE.json": "8d9e28ec3ece26b91ef5a297092697c341652853164477a4961c992151cec353", "research/pr116-evidence-reconciliation/PARENT-EVIDENCE.json": "62a666dac3e67ba8d388820c92e0cd4495657a20b6eae280a5367af8e89d769c", @@ -218813,6 +218813,63 @@ "reconciliation_evidence": [ "docs/research/pr-intake-decisions.json" ] + }, + { + "number": 4633, + "url": "https://github.com/CrocSwap/integer-mult-bounds/pull/4633", + "title": "Conditional κ = 0.012401086416 (BIT-limited, +310.6%): BIT supplier to 0.012401086416 via the ambient quotient (kernel 150)", + "contributor": { + "id": "MDQ6VXNlcjg4MjYxNTE2", + "is_bot": false, + "login": "DaysSky", + "name": "" + }, + "draft": false, + "starting_head": "b390d64abfcdba1a3816b86fc763cbc95d43c12c", + "previously_reviewed_heads": [ + "b2998bacd50d57c301fe67c5392054440c42398c" + ], + "historical_assessment_heads": [], + "historical_mentions": [], + "evidence": [ + { + "head": "b390d64abfcdba1a3816b86fc763cbc95d43c12c", + "evidence": "docs/research/pr-intake-decisions.json", + "scope": "User-assigned full audited replay of both submitted packages and the nine-file update. Passing executions are preserved; scoped negative findings are not supplier or theorem acceptance. Proposed ledger entry only; the reviewed PR closed unmerged before audit publication.", + "kind": "integration_or_partial_review" + } + ], + "reviewed_head": "b390d64abfcdba1a3816b86fc763cbc95d43c12c", + "current_head": "b390d64abfcdba1a3816b86fc763cbc95d43c12c", + "disposition": "partially_reviewed", + "github_state": "CLOSED", + "integration_location": [], + "unresolved_question": "Revision required: rational-kernel realization and physical main-port controller fail; the verifier accepts zero MOVE charges and empty frame bases. Raw numerical crossings also lack ordinary BIT/outer admission. See the exact-head audit, including full submitted scans.", + "closure": { + "kind": "closed_unmerged_observed", + "url": "https://github.com/CrocSwap/integer-mult-bounds/pull/4633", + "closed_at": "2026-10-22T13:41:17Z", + "merged": false, + "scope": "Observed during audit; this agent did not close the PR and does not infer the reason." + }, + "review_completion": { + "changed_file_coverage": true, + "scoped_mechanism_review": true, + "required_execution_complete": true, + "published": true + }, + "verification_evidence": [ + "research/pr4633-quotient-contract-audit/README.md", + "research/pr4633-quotient-contract-audit/REPLAY.json", + "research/pr4633-quotient-contract-audit/EXPECTED.json", + "research/pr4633-quotient-contract-audit/EXPECTED-LATEST.json", + "https://github.com/CrocSwap/integer-mult-bounds/pull/4636" + ], + "current_head_observed_in": "docs/research/pr-intake-decisions.json", + "reconciliation_evidence": [ + "research/pr4633-quotient-contract-audit/README.md", + "research/pr4633-quotient-contract-audit/REPLAY.json" + ] } ], "ending_snapshot": "research/pr-reconciliation-20261012/ending-snapshot.json", diff --git a/docs/research/pr-ledger.md b/docs/research/pr-ledger.md index f42b51bc65..27bb78a5c5 100644 --- a/docs/research/pr-ledger.md +++ b/docs/research/pr-ledger.md @@ -1,6 +1,6 @@ # PR review and integration ledger -The immutable starting snapshot contains **446 PRs**. Explicit later family rounds extend the current inventory to **3926**; unrelated arrivals remain outside the round. +The immutable starting snapshot contains **446 PRs**. Explicit later family rounds extend the current inventory to **3927**; unrelated arrivals remain outside the round. [Machine-readable ledger](pr-ledger.json) · [Starting snapshot](../../research/pr-reconciliation-20261012/starting-snapshot.json) @@ -9,7 +9,7 @@ The ledger separates historical review from integration. A prior snapshot or a m | Disposition | Count | |---|---:| | incorporated | 2089 | -| partially reviewed | 1775 | +| partially reviewed | 1776 | | superseded | 2 | | unreviewed | 60 | @@ -3969,3 +3969,4 @@ Each evidence link leads to the original scoped assessment. The JSON records exa | [#4505](https://github.com/CrocSwap/integer-mult-bounds/pull/4505) | Dugongue | partially reviewed | [record 1](../../docs/research/pr-intake-decisions.json) | | [#4506](https://github.com/CrocSwap/integer-mult-bounds/pull/4506) | jwr404 | partially reviewed | [record 1](../../docs/research/pr-intake-decisions.json) | | [#4507](https://github.com/CrocSwap/integer-mult-bounds/pull/4507) | mihir-s-05 | partially reviewed | [record 1](../../docs/research/pr-intake-decisions.json) | +| [#4633](https://github.com/CrocSwap/integer-mult-bounds/pull/4633) | DaysSky | partially reviewed | [record 1](../../docs/research/pr-intake-decisions.json) · [record 2](../../research/pr4633-quotient-contract-audit/README.md) · [record 3](../../research/pr4633-quotient-contract-audit/REPLAY.json) | diff --git a/research/pr4633-quotient-contract-audit/CLOSURE-OBSERVATION.json b/research/pr4633-quotient-contract-audit/CLOSURE-OBSERVATION.json new file mode 100644 index 0000000000..0f323c1219 --- /dev/null +++ b/research/pr4633-quotient-contract-audit/CLOSURE-OBSERVATION.json @@ -0,0 +1,8 @@ +{ + "head": "b390d64abfcdba1a3816b86fc763cbc95d43c12c", + "state": "closed", + "merged": false, + "closed_at": "2026-10-22T13:41:17Z", + "url": "https://github.com/CrocSwap/integer-mult-bounds/pull/4633", + "scope": "Observed GitHub state; this audit did not close the PR; closure reason not inferred." +} diff --git a/research/pr4633-quotient-contract-audit/EXPECTED-LATEST.json b/research/pr4633-quotient-contract-audit/EXPECTED-LATEST.json new file mode 100644 index 0000000000..41b225b0dc --- /dev/null +++ b/research/pr4633-quotient-contract-audit/EXPECTED-LATEST.json @@ -0,0 +1,116 @@ +{ + "all_empty_frame_bases_accepted": true, + "erased_rational_ports": [ + 8, + 9, + 10, + 11, + 12, + 13, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110 + ], + "erased_rational_span_rank": 8, + "free_move_mutation": { + "author_accepts": true, + "changed_records": 2184, + "reported_kappa": 0.25 + }, + "port_transport_width_pairs": { + "(7, 4)": 62, + "(7, 8)": 8, + "(8, 4)": 41 + }, + "positive_control": { + "ambient_dim": 8, + "directions_agree": true, + "emitted_kappa": 0.003464248972023964, + "emitted_paid": { + "1": 1323, + "2": 1342, + "3": 79, + "4": 44, + "5": 102, + "6": 11, + "7": 19 + }, + "emitted_paid_mass": 5129, + "emitted_surplus": 753, + "endpoint_failures": 0, + "frames": 65, + "gain_absolute": 0.02878517442286887, + "gain_relative": 8.309210641419726, + "helper_widths": { + "8": 439 + }, + "kernel_basis": [ + 150, + 102, + 255 + ], + "kernel_dimension": 3, + "local_checks": { + "adds": 24305, + "copies": 9 + }, + "main_rank_mass": 1294, + "main_widths": { + "4": 103, + "7": 70, + "8": 49 + }, + "package": "bit-ambient-quotient", + "quotient_kappa": 0.03224942339489283, + "quotient_paid": { + "1": 1020, + "2": 495, + "3": 75, + "4": 442, + "5": 143, + "6": 4, + "7": 12, + "8": 2 + }, + "quotient_paid_mass": 4842, + "quotient_surplus": 5919, + "roles": 661, + "status": "PASS_BIT_AMBIENT_QUOTIENT" + }, + "quotient_reconstructed_by_cosets": true, + "reviewed_head": "b390d64abfcdba1a3816b86fc763cbc95d43c12c", + "scope": "Counterexamples survive the three-dimensional update; no supplier or kappa claim.", + "status": "PASS_PR4633_LATEST_AUDIT_COUNTEREXAMPLES" +} diff --git a/research/pr4633-quotient-contract-audit/EXPECTED.json b/research/pr4633-quotient-contract-audit/EXPECTED.json new file mode 100644 index 0000000000..3346adb8ec --- /dev/null +++ b/research/pr4633-quotient-contract-audit/EXPECTED.json @@ -0,0 +1,104 @@ +{ + "all_source_dimensions_preserved_mod2": true, + "binary_reductions_distinct": 157, + "broken_frame_entrance_rejected": true, + "erased_rational_ports": [ + 8, + 9, + 10, + 11, + 12, + 13 + ], + "erased_rational_span_rank": 4, + "free_move_mutation": { + "author_accepts": true, + "changed_records": 2802, + "independent_rank_mismatches": 2802, + "paid_profile": { + "6": 9 + }, + "reported_kappa": 0.25 + }, + "independent_erased_vectors": [ + [ + 0, + 1, + 1, + 0, + 1, + 0, + 0, + 1 + ], + [ + 0, + 1, + 1, + 0, + 1, + 0, + 0, + -1 + ] + ], + "port_transport_width_pairs": { + "(7, 6)": 101, + "(7, 8)": 4, + "(8, 6)": 6 + }, + "positive_control": { + "ambient_dim": 8, + "directions_agree": true, + "emitted_kappa": 0.003464248972023964, + "emitted_paid": { + "1": 1323, + "2": 1342, + "3": 79, + "4": 44, + "5": 102, + "6": 11, + "7": 19 + }, + "emitted_paid_mass": 5129, + "emitted_surplus": 753, + "endpoint_failures": 0, + "frames": 117, + "gain_absolute": 0.008936837444043276, + "gain_relative": 2.5797330146343347, + "helper_widths": { + "8": 439 + }, + "kernel_vector": 150, + "local_checks": { + "adds": 24305, + "copies": 9 + }, + "main_rank_mass": 1457, + "main_widths": { + "6": 107, + "7": 105, + "8": 10 + }, + "package": "bit-ambient-quotient", + "quotient_kappa": 0.01240108641606724, + "quotient_paid": { + "1": 1198, + "2": 1255, + "3": 207, + "4": 86, + "5": 41, + "6": 23, + "7": 1 + }, + "quotient_paid_mass": 5023, + "quotient_surplus": 2661, + "roles": 661, + "status": "PASS_BIT_AMBIENT_QUOTIENT" + }, + "quotient_reconstructed_exactly": true, + "rational_source_frames": 636, + "reviewed_head": "b2998bacd50d57c301fe67c5392054440c42398c", + "scope": "Exact source and verifier counterexamples; no new supplier or kappa.", + "status": "PASS_PR4633_AUDIT_COUNTEREXAMPLES" +} diff --git a/research/pr4633-quotient-contract-audit/LATEST-SOURCE-INVENTORY.json b/research/pr4633-quotient-contract-audit/LATEST-SOURCE-INVENTORY.json new file mode 100644 index 0000000000..137d1fa2a1 --- /dev/null +++ b/research/pr4633-quotient-contract-audit/LATEST-SOURCE-INVENTORY.json @@ -0,0 +1,99 @@ +{ + "head": "b390d64abfcdba1a3816b86fc763cbc95d43c12c", + "previous_head": "b2998bacd50d57c301fe67c5392054440c42398c", + "changed_paths": [ + "research/bit-ambient-quotient/PROOF.md", + "research/bit-ambient-quotient/QUOTIENT-BIT-WORD.json.gz", + "research/bit-ambient-quotient/README.md", + "research/bit-ambient-quotient/RESULT.json", + "research/bit-ambient-quotient/TASK.json", + "research/bit-ambient-quotient/VERIFY.json", + "research/bit-ambient-quotient/build.py", + "research/bit-ambient-quotient/scan_kernels.py", + "research/bit-ambient-quotient/verify.py" + ], + "bit_sources": [ + { + "original_path": "research/bit-ambient-quotient/PROOF.md", + "path": "research/pr4633-quotient-contract-audit/sources-current/research/bit-ambient-quotient/PROOF.md", + "usage": "input", + "git_blob": "2943fa186661ce660f2a9892203c6ae0ba7520dd", + "sha256": "17d2a42dbbe8e97d015a71d8261a5816a8bd4f53fb91797f3bf09ca3f1f63fa9", + "pin": "head:b390d64abfcdba1a3816b86fc763cbc95d43c12c:research/bit-ambient-quotient/PROOF.md" + }, + { + "original_path": "research/bit-ambient-quotient/QUOTIENT-BIT-WORD.json.gz", + "path": "research/pr4633-quotient-contract-audit/sources-current/research/bit-ambient-quotient/QUOTIENT-BIT-WORD.json.gz", + "usage": "input", + "git_blob": "fa2fa7618a66b98a4e78711f307bc893c86b1405", + "sha256": "a1b9555b38d234e3921cdabd280e6a754619e26dd620a069a2a85a93efa31b2c", + "pin": "head:b390d64abfcdba1a3816b86fc763cbc95d43c12c:research/bit-ambient-quotient/QUOTIENT-BIT-WORD.json.gz" + }, + { + "original_path": "research/bit-ambient-quotient/README.md", + "path": "research/pr4633-quotient-contract-audit/sources-current/research/bit-ambient-quotient/README.md", + "usage": "input", + "git_blob": "fb0e8be3721d20c477c2f8a0607465beabae0a06", + "sha256": "30a9ddae0a0520cfd5a902a990edf862f4f50f20b01dd38e9947d61872b382ee", + "pin": "head:b390d64abfcdba1a3816b86fc763cbc95d43c12c:research/bit-ambient-quotient/README.md" + }, + { + "original_path": "research/bit-ambient-quotient/RESULT.json", + "path": "research/pr4633-quotient-contract-audit/sources-current/research/bit-ambient-quotient/RESULT.json", + "usage": "input", + "git_blob": "ba73ce57db43d7a1535751c50bcb25b01b2dc677", + "sha256": "fdb1059a80c345004259eea514585a7ac2f199b1825af46477b9dc0bff8aaf90", + "pin": "head:b390d64abfcdba1a3816b86fc763cbc95d43c12c:research/bit-ambient-quotient/RESULT.json" + }, + { + "original_path": "research/bit-ambient-quotient/SOURCES.json", + "path": "research/pr4633-quotient-contract-audit/sources-current/research/bit-ambient-quotient/SOURCES.source.json", + "usage": "input", + "git_blob": "43d45a579be63ca9a8d97e444ccd31af2b42878f", + "sha256": "f1124d8b073467afa4c8327d83773f1e440ca641357c2b0eaa5ce7cf4c9ceaf5", + "pin": "head:b390d64abfcdba1a3816b86fc763cbc95d43c12c:research/bit-ambient-quotient/SOURCES.json" + }, + { + "original_path": "research/bit-ambient-quotient/TASK.json", + "path": "research/pr4633-quotient-contract-audit/sources-current/research/bit-ambient-quotient/TASK.source.json", + "usage": "input", + "git_blob": "807800b2cd156f8e0cc01bfb85caa0c2bae5aec7", + "sha256": "67c996f8dd505a679bf3b5bacb9434ca00ba693ab9d5119ec1c87055029997cf", + "pin": "head:b390d64abfcdba1a3816b86fc763cbc95d43c12c:research/bit-ambient-quotient/TASK.json" + }, + { + "original_path": "research/bit-ambient-quotient/VERIFY.json", + "path": "research/pr4633-quotient-contract-audit/sources-current/research/bit-ambient-quotient/VERIFY.source.json", + "usage": "input", + "git_blob": "1304952875c51504c4936996c7a6055d2cfd8317", + "sha256": "cbd5c4b83eaba98a6491c8beab455f864899796b2a3a71413b8f8636001b1fc8", + "pin": "head:b390d64abfcdba1a3816b86fc763cbc95d43c12c:research/bit-ambient-quotient/VERIFY.json" + }, + { + "original_path": "research/bit-ambient-quotient/build.py", + "path": "research/pr4633-quotient-contract-audit/sources-current/research/bit-ambient-quotient/build.py", + "usage": "input", + "git_blob": "ae55584ddb9555f62975a07ae28efaf71b30c291", + "sha256": "1d6601e57f4d8809065ed6821b1bda35621fb6a08a8fd48cc3fdf95ed59e19c7", + "pin": "head:b390d64abfcdba1a3816b86fc763cbc95d43c12c:research/bit-ambient-quotient/build.py" + }, + { + "original_path": "research/bit-ambient-quotient/scan_kernels.py", + "path": "research/pr4633-quotient-contract-audit/sources-current/research/bit-ambient-quotient/scan_kernels.py", + "usage": "input", + "git_blob": "ad0526f1ec634888c4403b14d74192c2455e4a6a", + "sha256": "1bb06168a007722d842f082a68453346940a4c0359b889e955cc1af4bde3d8df", + "pin": "head:b390d64abfcdba1a3816b86fc763cbc95d43c12c:research/bit-ambient-quotient/scan_kernels.py" + }, + { + "original_path": "research/bit-ambient-quotient/verify.py", + "path": "research/pr4633-quotient-contract-audit/sources-current/research/bit-ambient-quotient/verify.py", + "usage": "input", + "git_blob": "f0acb7c51ebb095853e55dd6f997db8a898dab38", + "sha256": "d60e8db9aea2dbee786432143aac8c18996bf491b513b57d1729a4bbb3f7464e", + "pin": "head:b390d64abfcdba1a3816b86fc763cbc95d43c12c:research/bit-ambient-quotient/verify.py" + } + ], + "complex_sources_unchanged": true, + "retained_snapshot_commit": "a4c5789d214e638f5070e694b9d35422df17e571" +} diff --git a/research/pr4633-quotient-contract-audit/PR-OBSERVATIONS.json b/research/pr4633-quotient-contract-audit/PR-OBSERVATIONS.json new file mode 100644 index 0000000000..cba1dd227e --- /dev/null +++ b/research/pr4633-quotient-contract-audit/PR-OBSERVATIONS.json @@ -0,0 +1,17 @@ +{ + "initial": { + "head": "b2998bacd50d57c301fe67c5392054440c42398c", + "base": "fbc9ea0249746acca4f504d4fda2b84e0e36cf0d", + "title": "Conditional κ = 0.012401086416 (BIT-limited, +310.6%): BIT supplier to 0.012401086416 via the ambient quotient (kernel 150)", + "state": "open", + "updated_at": "2026-10-22T13:13:04Z" + }, + "latest": { + "head": "b390d64abfcdba1a3816b86fc763cbc95d43c12c", + "base": "fbc9ea0249746acca4f504d4fda2b84e0e36cf0d", + "title": "Conditional κ = 0.012401086416 (BIT-limited, +310.6%): BIT supplier to 0.012401086416 via the ambient quotient (kernel 150)", + "state": "open", + "updated_at": "2026-10-22T13:23:35Z", + "body": "The BIT supplier was the binding side; it is now above the complex one.\r\n\r\n**BIT supplier κ: 0.003464248972 → 0.012401086416 (+258.0%)**\r\n**Outer κ: 0..003464248972 → 0.012401086416 (+310.6%, now BIT-limited)**\r\n\r\nThe outer value is `min(complex, BIT)`. The complex supplier is at 0.015637149091\r\n(`research/complex-ambient-quotient`, #4596's successor), so raising the BIT to\r\n0.012401086416 moves the outer minimum to the BIT and lifts the theorem's value\r\nby 4.11x.\r\n\r\nStacked on `research/complex-ambient-quotient`, so the diff is one package.\r\n\r\n### Construction\r\n\r\nThe BIT local word is PR589's E8 word: `h = 8`, `V = 111`, `R = 439`, 661 roles,\r\n636 frames, 249 records. Frames are stored by annihilator rows, so each frame is\r\nthe GF(2) nullspace of its rows.\r\n\r\nFor a nonzero kernel `v` with lowest set bit `j`,\r\n\r\n phi(x) = drop_j( x xor v when bit_j(x) is set else x )\r\n\r\nis linear and surjective onto F2^7 with kernel `span{v}`. It shrinks exactly the\r\nframes containing `v`, so a MOVE whose destination contains `v` and whose source\r\ndoes not loses one rank. Frames with equal image are identified, the full-ambient\r\nimage is re-padded to the whole of F2^8 so every helper stays physically `D_I8`\r\nand the block stays 7, and every MOVE rank is recomputed.\r\n\r\nThe kernel is chosen by replay, not arithmetic: `scan_kernels.py` builds, replays\r\nand prices all 255 directions. **All 255 replay, and 150 is the best** (next: 102\r\nat 0.012370756966, 153 at 0.012297488831).\r\n\r\n| quantity | emitted | quotient |\r\n|---|---:|---:|\r\n| frames | 636 | 117 |\r\n| frame dimensions | — | {0:1, 1:16, 2:19, 3:11, 4:7, 5:41, 6:20, 7:1, 8:1} |\r\n| main widths | {7:222} | {6:107, 7:105, 8:10} |\r\n| helper widths | {8:439} | {8:439} (start dim 0, final dim 8) |\r\n| paid profile | {1:1323,2:1342,3:79,4:44,5:102,6:11,7:19} | {1:1198,2:1255,3:207,4:86,5:41,6:23,7:1} |\r\n| paid rank mass | 5,129 | 5,023 |\r\n| rank surplus | 753 | 2,661 |\r\n| BIT κ | 0.003464248972 | **0.012401086416** |\r\n\r\n### Evidence\r\n\r\n`verify.py` loads only the artifact and the pinned source word, and replays both\r\nwith the shipped local record interpreter:\r\n\r\n- 661 roles; ambient dim 8; every helper start at ground; every helper final at dim 8\r\n- both directions: 24,305 ADDs, 9 COPY episodes\r\n- all arbitrary input columns exact; all 661 endpoints exact; owned COPY cleanup exact\r\n- forward and backward paid profiles identical\r\n- **the pinned source word reproduces the declared local bill** {1:1323, 2:1342, 3:79, 4:44, 5:102, 6:11, 7:19}\r\n- **the emitted invoice reproduces the frontier BIT κ 0.003464248972** to twelve digits\r\n- the quotient prices at 0.012401086416 and both screen constraints hold\r\n\r\nThe last two rows are the calibration: the same interpreter on the same records,\r\nfirst on the source word (recovering the declared bill and the declared κ), then\r\non the quotiented word with recomputed ranks.\r\n\r\nReproduce: `build.py`, then `verify.py`, then `scan_kernels.py`.\r\n`PASS_PACKAGE_METADATA_AND_PINS`.\r\n\r\n### Two disclosures\r\n\r\n**The frame charts collapse** from 636 to 117. The interpreter validates the\r\nword's own frame record, and `inventories` reads only the paid and helper\r\nprofiles, so no consumer in this tree reads the BIT's charts — but a contract that\r\nrequires particular frame charts would reject the word. That is the #4604\r\nquestion, and it is not settled here.\r\n\r\n**The admission parameters are declared constants.** `atom 0.004`,\r\n`ordinary 0.0034364` and `admitted 0.0034` are literals in\r\n`research/query-thinned-controllers/verify.py`, not functions of the supplier\r\nword. The 0.012401 outer value requires them raised to match a 0.0124 supplier,\r\nand the complex side throttled to the BIT's value since the chain requires\r\n`admitted > TESTED`. That is a contract change of the same kind as\r\n`controller.py:152` for mixed main widths.\r\n\r\n### Scope\r\n\r\nConditional finite construction with exact local replay evidence; not a\r\nmultiplication theorem and not a Lean verification. Only PR589's E8 word is\r\nexercised; 292 other `h = 8` words are untested. One-dimensional kernels only.\r\n" + } +} diff --git a/research/pr4633-quotient-contract-audit/README.md b/research/pr4633-quotient-contract-audit/README.md new file mode 100644 index 0000000000..dfef926345 --- /dev/null +++ b/research/pr4633-quotient-contract-audit/README.md @@ -0,0 +1,258 @@ +# PR4633 audited replay: numerical replay passes; supplier contract fails + +**Do not admit the claimed supplier at `b390d64abfcdba1a3816b86fc763cbc95d43c12c`.** +The submitted checks reproduce the reported BIT and complex numerical screens. +They do not establish the claimed BIT supplier or outer saving. This audit +supplies exact counterexamples to the rational quotient interpretation and the +retained main-port contract, and a false-positive mutation of the BIT verifier. +No selected result, theorem, supplier or new kappa is certified here. +Before publication, GitHub reported PR4633 **closed without merge** at +`2026-10-22T13:41:17Z`, with the same head. This audit did not close it and does +not infer a reason for closure. No open-queue scheduling entry is created for a +closed submission; the central ledger records the negative review and closure +observation separately from mathematical acceptance. + +## Current-head delta: three-dimensional kernel + +The PR advanced from `b2998bacd50d57c301fe67c5392054440c42398c` to +`b390d64abfcdba1a3816b86fc763cbc95d43c12c` during review. Nine BIT files changed; +the complex package is byte-identical. The current BIT uses kernel basis +`[150,102,255]` and its registered replay reproduces **0.032249423394893**. +The PR title/body still describe the older one-dimensional result. + +All three principal objections survive, with stronger concrete witnesses: + +* The three-dimensional binary kernel erases **41 rational entrance lines + spanning all eight rational dimensions**. A rational linear map with kernel + dimension three cannot have that action. `verify_latest.py` reconstructs + the quotient using canonical cosets, independently of the author's + annihilator algorithm, and checks every rewritten record. +* All 111 ports still fail the inherited `(7,7)` transport requirement: + **8 have `(7,8)`, 41 have `(8,4)`, and 62 have `(7,4)`**. Main rank mass is + now **1294**; the invoice still books the unchanged rank-seven ladders. +* Zeroing all **2,184** positive MOVE charges still produces a full author + `PASS` with **kappa 0.25**. This version adds `frame_bases`, but the verifier + never reads them: replacing **every basis with the empty list** produces + exactly the same successful result as the original artifact. + +The complete new scan's candidate domain is all **1,940 combinations of one +through four elements of the submitted 15-element list**. Its nominal random +augmentation is never entered because 1940 is already greater than 600. This +is the full submitted finite domain, not an exhaustive enumeration of all +subspaces of dimensions two through four. The serial delta replay and results +are included with the first-head evidence in `REPLAY.json` and `evidence/`. + +The complete updated scan also **refutes the plateau/optimal-dimension claim**: + +| Listed kernel size | Candidates | Accepted | Distinct accepted screen values | Best numerical screen | +|---|---:|---:|---:|---:| +| 1 | 15 | 15 | 15 | 0.012401086416 | +| 2 | 105 | 105 | 71 | 0.021804306829 | +| 3 | 455 | 438 | 145 | 0.032249423395 | +| 4 | 1365 | 1122 | 128 | 0.042304306669 | + +The README/PROOF claim 445 accepted triples, all at the same value; the exact +submitted code instead returns 438 and 145 distinct values. Triple `[240,7,9]` +prices at `0.001073869184`. Four-dimensional basis `[150,102,255,165]` prices +at `0.042304306669`, contradicting the assertion that dimension four falls +back to `0.017525188018`. These are discrepancies in the numerical experiment, +not newly established suppliers or improved bounds. + +`LATEST-SOURCE-INVENTORY.json` and `sources-current/` freeze the revised BIT; +`EXPECTED-LATEST.json` records its independent counterexamples. The short +registered audit runs both historical and current checks. The detailed +one-dimensional findings below remain evidence about the first reviewed head, +and are not silently attributed to the replacement artifact. + +The user assigned a full audit of [PR4633](https://github.com/CrocSwap/integer-mult-bounds/pull/4633). +The observed base was `fbc9ea0249746acca4f504d4fda2b84e0e36cf0d`. +The actual diff contains **21 added files in two packages**, including the +complex predecessor; the PR body's statement that it is one package is stale. +[SOURCE-INVENTORY.json](SOURCE-INVENTORY.json) binds every changed file, mode, +blob and SHA256. Exact submitted bytes are retained under `sources/` so that +subsequent author edits cannot change this audit. The three registration files +in each snapshot have `.source.json` names to avoid registering duplicate jobs. + +## Findings + +### P1: the BIT builder substitutes binary geometry for rational projectors + +`research/bit-ambient-quotient/build.py:44-51` reduces the source annihilator +rows modulo two, then takes a binary nullspace. The inherited native source +instead constructs **rational orthogonal projectors** from `frames.json`'s +`B` rows: `mixed_productive_bit.py:263-276`. In particular, +`bit_native_binding.py:75-99` binds the actual data ports to +`P_q = q q^T / 4` and `I-P_q`. + +The following zero-based source ports give a short exact counterexample: + +``` +port 8: q = (0,1,1,0,1,0,0, 1) +port 9: r = (0,1,1,0,1,0,0,-1) +``` + +They are linearly independent over the rationals. Their projector entry `(1,7)` +is respectively `1/4` and `-1/4`. Both become binary mask 150 and are sent to +zero by the proposed kernel. No rational linear map with a one-dimensional +kernel can annihilate both. In fact, ports **8 through 13** all disappear and +their rational span has **rank four**. This also persists over odd +characteristic for the two-vector witness; coefficient-stream XOR does not +justify reducing the native rational coordinate geometry modulo two. + +Reduction already identifies the 636 source frames into **157 distinct binary +subspaces before quotienting**. All 636 individual dimensions happen to be +preserved, and the binary MOVE/COPY containments pass. Those positive controls +are explicitly checked: the objection is not a failed binary rank calculation. +It is the missing native interpretation. A new binary abstraction could be +studied separately, but requires a realization and interface proof; it is not +the claimed one-dimensional quotient of the retained rational supplier. + +### P1: the invoice retains main output credit from an unproved controller + +The inherited BIT controller explicitly requires a local invocation +`D_Bs S(D_P)` with **rank-seven `B_s`** on both data fields +(`mixed_productive_bit.py:131-160`). The native binding checks actual entrances +`(P_q, 0)` and exits `(I, I-P_q)`, deriving `D_I D_P = D_(I-P_q)`. +There is therefore an existing endpoint contract in the tree; it is not a +future maintainer choice inferred only from `inventories()`'s text reads. + +For the submitted artifact the two main transport widths at each port are: + +| Width pair | Ports | +|---|---:| +| `(7,6)` | 101 | +| `(7,8)` | 4 | +| `(8,6)` | 6 | + +**None of the 111 ports has the retained `(7,7)` pair.** The new local main +rank mass is 1457 instead of 1554. Yet `bit-ambient-quotient/verify.py:72-82` +still assigns every main ladder the old `1 + 7 * stages` output credit and +prices the old rank-seven idles. Padding helpers to rank eight establishes +their boundary dimension; it does not prove the missing rank-seven main map. +Replacing only `controller.py:152`'s surplus assertion cannot repair this. +Derive the new physical controller, boundary routes, diagonal outputs and paid +invoice before making a supplier claim. + +The included complex package has the analogous width mismatch: 168 of 224 +mains have width seven, but its invoice still uses uniform block-eight ladder +credit (`complex-ambient-quotient/verify.py:104-115`). Logical endpoint replay +against the submitted word's own final frames does not supply that bridge. +The earlier [PR4604](https://github.com/CrocSwap/integer-mult-bounds/pull/4604) +identified the endpoint question for kernel 511. This audit treats the actual +kernel-153 complex dependency and kernel-150 BIT submission. + +### P1: the independent BIT verifier accepts unpaid positive-rank MOVEs + +`bit-ambient-quotient/verify.py:92-99` trusts the record's `f` tariff without +checking it against the source and destination dimensions or native projectors. +Its artifact stores only frame IDs and dimensions, not bases/projectors. +The inherited `audit_local` additionally checks exact projector nesting and +`dimensions[new]-dimensions[old] == rank >= 0` before symbolic replay; those +checks were omitted from the new verifier. + +The audit changes all **2,802 positive MOVE tariffs to zero**, preserving +records, frame IDs, dimensions and boundaries. The complete submitted +`main()` still produces `PASS_BIT_AMBIENT_QUOTIENT`, now with paid profile +`{6:9}` and **kappa 0.25**, the search ceiling. This is a false acceptance, +not an improved construction. The audit's independent dimension check rejects +all 2,802 altered charges. As a separate negative control, the author replay +does reject a deliberately broken MOVE entrance, demonstrating that the test +really executes it. Store/authenticate the geometry and recompute each tariff. + +### The outer claim remains unproved even after these repairs + +The README explicitly acknowledges that ordinary BIT admission has not been +raised. `query-thinned-controllers/verify.py:164-190` performs strictification, +cover loss, the atom/ordinary/admitted conversion, and the complete outer ledger. +Taking the minimum of two floating-point screen crossings is not that chain. +The new package supplies none of the replacement parameters or strict rational +margin checks. The disclosed gap must also constrain its headline and TASK +claim. The selected record at the audit base remains the conditional `0.0023`. + +## Replay and evidence + +`REPLAY.json` records the environment, commands, sampled resource limits, +coverage and results. Logs and complete per-kernel results are in `evidence/`. +The two registered Python 3.12 replays pass; rebuilding all three compressed +word/program artifacts reproduces the committed bytes (and decompressed JSON). +The BIT scan is run over every kernel 1..255, and the complex scan over every +kernel 1..511, using each submitted `price()` unchanged **serially**, in place +of its eight-process driver. A sampled 1 GiB process-group RSS watchdog and +explicit timeouts apply. Author PASS status is recorded as executable evidence, +not as independent acceptance of its mathematical interpretation. + +Additional native controls pass: the original BIT `audit_local` validates its +rational projectors and nested transports, and all **2,101 distinct complex +climb/helper-boundary edges** lower with their stated Fourier rank in both +orientations, with exact absolute-phase recipe decoding. These controls support +the scoped local evidence; they do not supply the missing main-port controller +contract. The BIT control uses the retained `joint_pair_dag` dependency under +`kappa-0023-productive-jobs/dependencies/`; the first direct import failed at its +obsolete historical path, and the explicit path correction and retry are logged. + +| Submitted scan | Replayed candidates | Accepted | Best kernel | Best numerical screen | +|---|---:|---:|---:|---:| +| BIT | 255 | 255 | 150 | 0.012401086416 | +| Complex | 511 | 32 | 153 | 0.015637149091 | + +Two secondary summary claims do not reproduce. BIT kernel 111 yields +`0.001862148210`, contradicting the claim that all 255 land between 0.0122 and +0.0124. The accepted complex kernels have varying main masses/surpluses: +kernel 511 has main mass 1680 and surplus 2768, whereas kernel 153 has 1624 +and 3776. Thus the complex README's statement that all 32 have 1624/3776 is +also false. Neither correction changes which kernel wins the submitted screen. +The complex `VERIFY.json` prose also retains older kernel results; executable +checks and the captured logs are used for the actual replay assessment. + +The scoped audit can be replayed without network access: + +```sh +python3.12 -B scripts/research_package.py --package research/pr4633-quotient-contract-audit +``` + +`verify.py` authenticates the input bytes, reconstructs the entire BIT quotient +and all rewritten records independently, checks rational ranks/annihilators, +proves the erased-line and port-width witnesses, and executes the submitted +positive and mutation controls. `EXPECTED.json` pins that receipt. Direct +execution also works in a source export, with all declared inputs present. +The frozen author code writes only into temporary directories during this +scoped replay; it does not modify the vendored artifacts. + +For the full author replay, fetch the reviewed SHA into a detached worktree, +run each package's `scripts/research_package.py --package ...` command and the +BIT `build.py`, then use the retained `evidence/scan_serial.py` and +`evidence/run_bounded.py` from that worktree. The scripts save logs beside +themselves. The command arrays in the receipts identify precisely what ran. +This full replay is separate from the short registered counterexample test. + +This review covers all changed files and the relevant supplier interfaces. +It is not a cold replay of the unchanged selected multiplication construction, +a Lean verification, or a proof that no different quotient-based construction +could work. No unrelated historical suite, Docker build or hosted workflow was +manually dispatched. + +## Open next questions + +1. Supply native rational projectors and a proved controller interface for a + repaired BIT construction. Begin with the two explicit erased lines and + one of the `(7,6)` ports. Author revision is required. +2. Make free-MOVE mutation fail in the author verifier, using geometry-derived + ranks and an independent required endpoint. A replay of scalar values alone + cannot settle the physical interface. +3. After valid suppliers exist, derive strict rational supplier margins, + ordinary BIT admission and all outer-ledger parameters. No corrected kappa + follows from this audit alone. + +## Attribution + +DaysSky authored PR4633 and the included complex quotient work (PR4629 and +PR4596). PR589's retained E8 word credits DreamingOfClouds, eumemic and its +cited lineage. The complex input retains PR4470 and predecessor attribution. +Ryanson Jonathan's PR4604 is the earlier endpoint-frame audit. This independent +audit also overlaps [Rohan Arun's concurrent per-port-contract comment](https://github.com/CrocSwap/integer-mult-bounds/pull/4633#issuecomment-6341849407), +discovered during the final live refresh. The rational-field counterexamples, +verifier mutations, both-head full scans and native edge replay here provide +additional reproducible evidence. This audit was prepared for Cinna Davis with +substantial OpenAI Codex assistance. +All source notices are preserved; Apache-2.0. No independent human or formal +kernel verification of the multiplication theorem is claimed. diff --git a/research/pr4633-quotient-contract-audit/REPLAY.json b/research/pr4633-quotient-contract-audit/REPLAY.json new file mode 100644 index 0000000000..5582f3c80f --- /dev/null +++ b/research/pr4633-quotient-contract-audit/REPLAY.json @@ -0,0 +1,376 @@ +{ + "schema_version": 1, + "reviewed_heads": [ + "b2998bacd50d57c301fe67c5392054440c42398c", + "b390d64abfcdba1a3816b86fc763cbc95d43c12c" + ], + "audit_base": "fbc9ea0249746acca4f504d4fda2b84e0e36cf0d", + "python": "3.12.15", + "platform": "Linux-7.2.10-arch1-1-x86_64-with-glibc2.44", + "scope": "Full submitted registered replays, artifact rebuilds and complete submitted kernel candidate domains for both heads; exact rational source control, independent counterexamples and complete complex climb/helper native edge lowering. This is a negative supplier-contract audit, not a multiplication-theorem replay.", + "commands": { + "bit-registered": { + "command": [ + "python3.12", + "-B", + "scripts/research_package.py", + "--package", + "research/bit-ambient-quotient" + ], + "cwd": "/home/cinna/int-bounds/audit-pr4633-20261022", + "exit_code": 0, + "elapsed_seconds": 0.55, + "peak_sampled_group_rss_bytes": 69005312, + "stop_reason": null, + "memory_limit_bytes": 1073741824, + "timeout_seconds": 1200 + }, + "bit-build": { + "command": [ + "python3.12", + "-B", + "research/bit-ambient-quotient/build.py" + ], + "cwd": "/home/cinna/int-bounds/audit-pr4633-20261022", + "exit_code": 0, + "elapsed_seconds": 0.338, + "peak_sampled_group_rss_bytes": 31289344, + "stop_reason": null, + "memory_limit_bytes": 1073741824, + "timeout_seconds": 1200 + }, + "complex-registered": { + "command": [ + "python3.12", + "-B", + "scripts/research_package.py", + "--package", + "research/complex-ambient-quotient" + ], + "cwd": "/home/cinna/int-bounds/audit-pr4633-20261022", + "exit_code": 0, + "elapsed_seconds": 3.918, + "peak_sampled_group_rss_bytes": 37085184, + "stop_reason": null, + "memory_limit_bytes": 1073741824, + "timeout_seconds": 1200 + }, + "bit-scan": { + "command": [ + "python3.12", + "-B", + "/home/cinna/int-bounds/pr4633-audit-evidence-20261022/scan_serial.py", + "bit" + ], + "cwd": "/home/cinna/int-bounds/audit-pr4633-20261022", + "exit_code": 0, + "elapsed_seconds": 41.33, + "peak_sampled_group_rss_bytes": 31424512, + "stop_reason": null, + "memory_limit_bytes": 1073741824, + "timeout_seconds": 600 + }, + "complex-scan": { + "command": [ + "python3.12", + "-B", + "/home/cinna/int-bounds/pr4633-audit-evidence-20261022/scan_serial.py", + "complex" + ], + "cwd": "/home/cinna/int-bounds/audit-pr4633-20261022", + "exit_code": 0, + "elapsed_seconds": 477.991, + "peak_sampled_group_rss_bytes": 130457600, + "stop_reason": null, + "memory_limit_bytes": 1073741824, + "timeout_seconds": 2400 + }, + "complex-native": { + "command": [ + "python3.12", + "-B", + "/home/cinna/int-bounds/pr4633-audit-evidence-20261022/complex_native.py" + ], + "cwd": "/home/cinna/int-bounds/audit-pr4633-20261022", + "exit_code": 0, + "elapsed_seconds": 220.582, + "peak_sampled_group_rss_bytes": 49012736, + "stop_reason": null, + "memory_limit_bytes": 1073741824, + "timeout_seconds": 1200 + }, + "source-control": { + "command": [ + "python3.12", + "-B", + "/home/cinna/int-bounds/pr4633-audit-evidence-20261022/source_control.py" + ], + "cwd": "/home/cinna/int-bounds/audit-pr4633-20261022", + "exit_code": 1, + "elapsed_seconds": 0.117, + "peak_sampled_group_rss_bytes": 14725120, + "stop_reason": null, + "memory_limit_bytes": 1073741824, + "timeout_seconds": 600 + }, + "source-control-retry": { + "command": [ + "python3.12", + "-B", + "/home/cinna/int-bounds/pr4633-audit-evidence-20261022/source_control.py" + ], + "cwd": "/home/cinna/int-bounds/audit-pr4633-20261022", + "exit_code": 0, + "elapsed_seconds": 2.448, + "peak_sampled_group_rss_bytes": 36380672, + "stop_reason": null, + "memory_limit_bytes": 1073741824, + "timeout_seconds": 600 + }, + "latest-bit-registered": { + "command": [ + "python3.12", + "-B", + "scripts/research_package.py", + "--package", + "research/bit-ambient-quotient" + ], + "cwd": "/home/cinna/int-bounds/audit-pr4633-delta-20261022", + "exit_code": 0, + "elapsed_seconds": 0.327, + "peak_sampled_group_rss_bytes": 34156544, + "stop_reason": null, + "memory_limit_bytes": 1073741824, + "timeout_seconds": 1200 + }, + "latest-bit-build": { + "command": [ + "python3.12", + "-B", + "research/bit-ambient-quotient/build.py" + ], + "cwd": "/home/cinna/int-bounds/audit-pr4633-delta-20261022", + "exit_code": 0, + "elapsed_seconds": 0.332, + "peak_sampled_group_rss_bytes": 28176384, + "stop_reason": null, + "memory_limit_bytes": 1073741824, + "timeout_seconds": 1200 + }, + "latest-bit-scan": { + "command": [ + "python3.12", + "-B", + "/home/cinna/int-bounds/pr4633-audit-evidence-20261022/scan_latest_serial.py" + ], + "cwd": "/home/cinna/int-bounds/audit-pr4633-delta-20261022", + "exit_code": 0, + "elapsed_seconds": 253.665, + "peak_sampled_group_rss_bytes": 32079872, + "stop_reason": null, + "memory_limit_bytes": 1073741824, + "timeout_seconds": 1200 + } + }, + "scan_summary": { + "bit-original": { + "candidates": 255, + "accepted": 255, + "statuses": { + "ok": 255 + }, + "minimum": [ + 111, + "ok", + 393, + 0.0018621482097712083 + ], + "maximum": [ + 150, + "ok", + 2661, + 0.01240108641606724 + ] + }, + "complex": { + "candidates": 511, + "accepted": 32, + "statuses": { + "ValueError": 479, + "ok": 32 + }, + "minimum": [ + 511, + "ok", + 1680, + 2768, + 0.01141774940734147 + ], + "maximum": [ + 153, + "ok", + 1624, + 3776, + 0.015637149090881482 + ] + }, + "bit-latest": { + "candidates": 1940, + "accepted": 1680, + "statuses": { + "ok": 1680, + "ValueError": 260 + }, + "minimum": [ + [ + 7, + 9 + ], + "ok", + 105, + 0.0005472641743378692, + 89 + ], + "maximum": [ + [ + 150, + 102, + 255, + 165 + ], + "ok", + 6819, + 0.042304306668647644, + 47 + ], + "by_dimension": { + "1": { + "candidates": 15, + "accepted": 15, + "distinct_screen_values": 15, + "best": [ + [ + 150 + ], + "ok", + 2661, + 0.01240108641606724, + 117 + ] + }, + "2": { + "candidates": 105, + "accepted": 105, + "distinct_screen_values": 71, + "best": [ + [ + 102, + 255 + ], + "ok", + 4407, + 0.021804306828575978, + 88 + ] + }, + "3": { + "candidates": 455, + "accepted": 438, + "distinct_screen_values": 145, + "best": [ + [ + 150, + 102, + 255 + ], + "ok", + 5919, + 0.03224942339489283, + 65 + ] + }, + "4": { + "candidates": 1365, + "accepted": 1122, + "distinct_screen_values": 128, + "best": [ + [ + 150, + 102, + 255, + 165 + ], + "ok", + 6819, + 0.042304306668647644, + 47 + ] + } + } + } + }, + "native_complex": { + "distinct_edges": 2101, + "orientations": 2, + "failures": [], + "scope": "All distinct synthesized climb and helper-boundary transports; exact rank and absolute-phase recipe decoding. Does not check the outer main-port contract." + }, + "dependency_sha256": { + "research/fresh-helper-boundary/native.py": "9b55a2d3c3972148fae9d112e745d9244968166bd89bd900c938f429fc76ab29", + "research/kappa-rebuild/complex/native_extensions.py": "50ad007d9c386393657e86c99a96ae0a63a8fbc52872579b185002cc626e88e3", + "research/kappa-rebuild/complex/rebuild_native.py": "f94c527cc02215de49350d477618188c4c0da48bc8fb05b4e37b24c482cad7d5", + "research/kappa-rebuild/complex/power_two_balance.py": "76929bb3887911ccf100c4593574b8a1c82ee64e96f939a8aca196869438b424", + "research/kappa-causal-continuation/buffer-borrowing/verify_buffers.py": "106b4d5e052427230df452f0c901d5390a0583782960b80a8af94d9a984022c7", + "research/t74-native-fast/vendor/native/new/code/borrow/vendor/clifford/clifford_exact.py": "2982ead07721e83358dc67c6f49c2b4c16a236a6bebdfd72f58221be1f5d0962", + "research/kappa-function-composition/complex/prune_native.py": "f2b37c183a10922eabc8e0436b426a08866430e96bd0adc7e178951c7fbb5257", + "research/kappa-0023-productive-jobs/dependencies/kappa-next-regime/bit-compression/carrier-reuse/reference/joint_pair_dag.py": "8a0de761642d21919e969475c3f13e5d01a4bae7343c1e1f37c586d94b676a85", + "scripts/research_package.py": "3ff38a291677f9ebbbe54379d629208b17b7f526f73aee46d5f850ead768504e" + }, + "source_control_import_note": "First attempt failed at an obsolete joint_pair_dag import path. Retry prepended the retained dependency path explicitly; no scientific source was modified.", + "publication_state": "Audit published at https://github.com/CrocSwap/integer-mult-bounds/pull/4636; reviewed source PR closed unmerged. This is publication of negative audit evidence, not acceptance of the source supplier.", + "checks_not_run": [ + "Unchanged selected-frontier cold multiplication replay", + "Lean/formal proof", + "All-history reconciliation suites", + "Manually dispatched hosted workflows" + ], + "evidence_sha256": { + "evidence/INTAKE.json": "dce8d5c2ac198466c08d5007463d38a43c16e3270fc492c2375b3c7cfc666d35", + "evidence/audit-registered.log": "5820fe6cbdebe62ca30091a975de90b82f343676d625cbb7589a7944c42b9581", + "evidence/bit-build.log": "f6d03dd091420629aa1de54e480307ad5db749def4789e930b000f50b58c2747", + "evidence/bit-build.receipt.json": "f1318a692824d26b763f44a9b1e593f9eefd49dd46d8ca111830bd9835d7dc95", + "evidence/bit-registered.log": "d8fd5a7634f2de58f74ac770888e4c781d2873d91dc354628592a531baa09c1e", + "evidence/bit-registered.receipt.json": "1ce2bf508aa1e040ef5c0e5308c372919e8248678a161f1feb163774d990fa65", + "evidence/bit-scan-results.json": "eecaecc8f9d069ea65f9dc0f549f3024572384fe05832f8efa9751a28c38d121", + "evidence/bit-scan.log": "3d30b053c61fc7dec4f0e9053ba27894a295db10498501744b9c74a502f905ee", + "evidence/bit-scan.receipt.json": "f639f6f070bdba1aa9b87daef5815900256f2ba0c13fd14c0899f297d13cca0a", + "evidence/complex-native-result.json": "814ec421b760e2dd26314f1ca0306dbeadcb43e1566b8c8fbe84fd81fb46079d", + "evidence/complex-native.log": "ceb40bdc1ae948fc80ab9b63a4218e10b7132971c2bfaabe0ad0b39f43a7d21c", + "evidence/complex-native.receipt.json": "ee8bc091551b93f31c2413a23681a951a94d40aa8ccc8c2d15940ef132e44e47", + "evidence/complex-registered.log": "6aa0ae5063c4ae40d9cdb0e6e1ff5abf53daa337a0e131be2e1245eec893053d", + "evidence/complex-registered.receipt.json": "204121fad06391920d4de8b7f4f73d6f851ccc40133ee337a1d27003414a4ce1", + "evidence/complex-scan-results.json": "2db94ea931d2c9feec49db57cd026000fb478811122a50c7c09d695db6a502e1", + "evidence/complex-scan.log": "40e4eb6bc721763fa932b3303c51be4e355dc31fee650b2b46183e11afe6e5b5", + "evidence/complex-scan.receipt.json": "801b932db29c363b4dc8803ecda460a5f3b8b5124dc30f5bf6c71a781f8f9c55", + "evidence/complex_native.py": "4f042428628cc06a851833c4e986b5c9d4a0d298c05f6a968cdf06bafc9fbeb8", + "evidence/latest-bit-build.log": "652c1c00930d2df47d0c654df8462501ce94a72af3615dd73452033c4ea35b66", + "evidence/latest-bit-build.receipt.json": "bbc63efe22434b47e0724a850c7c5c5ac4a7de5fce5346b698d6b41a2d1198e0", + "evidence/latest-bit-registered.log": "40f5769d6e0d623f99eb155c2f35f880826910dc0d50028076c5539dcdf20eb3", + "evidence/latest-bit-registered.receipt.json": "432aef4bbf4a763fffc1160cd74cadc4adf20e0bfd33abb0f64d1c02a2934cb6", + "evidence/latest-bit-scan-results.json": "6d3f9a16b2216d136cd2c023d62596182891df01301a525f7afabeb8abc5155d", + "evidence/latest-bit-scan.log": "34cdf19ffbc19da74969929514d7b2ee7ca6b6fd6cfb86c35a728f75e0f213ca", + "evidence/latest-bit-scan.receipt.json": "3326560cf4442c4824088978cc3e357943976866361ab0edb9fc4e3bdc617b54", + "evidence/latest-rebuild-comparison.json": "9ecbf3e81d10c6c3dc1dcf9a0671aebd5f644df83398cb742eb82ea20c5b9a7e", + "evidence/rebuild-comparison.json": "fd5998e2260d3cb48992cb9c9480cd050022e5558351c0bd3ec7ebf085a7ab3b", + "evidence/run_bounded.py": "3b58df3ee909a4eba4208bf9c136676352fbecd0869b3a3456a0c0e3eae75b6f", + "evidence/scan_latest_serial.py": "79409a1d979f713d4d0e19410a94326fffe2cd5a97b9396ee569938b92ade773", + "evidence/scan_serial.py": "036fbca73049c57024a77201d0ed6a591ceda3ae2cb1ee8c88838d9259d95518", + "evidence/source-control-result.json": "5805f7427421cae3a03b8240b7feefe86cb5d057e9af757f50620e9b03c2c233", + "evidence/source-control-retry.log": "949652b63002f2ccada971dca53a0a57a23de00b387f4a934a8826a95c58e09a", + "evidence/source-control-retry.receipt.json": "b4b078b7f406b0ea397a6fa1e6c565ac7e1af4a1f22154d78d5b629576d64f3c", + "evidence/source-control.log": "76c3ce7083d7ac72b354ff800f2a839407c3e37376dee4ffe4d2c8d93c310469", + "evidence/source-control.receipt.json": "c29701afae63c91659d88a65ddf580f3dff20a7df29cb92b703150e5b3a69192", + "evidence/source_control.py": "44cd7e6f1f8945f744eb980297f4f2930937b5915d8888a6e1d365b948471b0b" + }, + "audit_pr": "https://github.com/CrocSwap/integer-mult-bounds/pull/4636" +} diff --git a/research/pr4633-quotient-contract-audit/SOURCE-INVENTORY.json b/research/pr4633-quotient-contract-audit/SOURCE-INVENTORY.json new file mode 100644 index 0000000000..d937520d76 --- /dev/null +++ b/research/pr4633-quotient-contract-audit/SOURCE-INVENTORY.json @@ -0,0 +1,177 @@ +{ + "reviewed_head": "b2998bacd50d57c301fe67c5392054440c42398c", + "observed_base": "fbc9ea0249746acca4f504d4fda2b84e0e36cf0d", + "merge_base": "b9a13c1673e0e9697de410de16e8bbf3207a7363", + "changed_files": [ + { + "path": "research/bit-ambient-quotient/PROOF.md", + "mode": "100644", + "git_blob": "87a285535fc881a2e886d00efa9474a842ca3e60", + "sha256": "09ffd242aa039c9ea1c46d88816a4738af1ce8f878107c0547937b27c2823df4", + "bytes": 7078, + "vendored_path": "research/pr4633-quotient-contract-audit/sources/research/bit-ambient-quotient/PROOF.md" + }, + { + "path": "research/bit-ambient-quotient/QUOTIENT-BIT-WORD.json.gz", + "mode": "100644", + "git_blob": "500a8e28e45a24fa163bb6f9a765a02afb40ed71", + "sha256": "559c01f57aabe204c4db922485d56242dfaa94a0bc85e64bbccb34d6b686d208", + "bytes": 84641, + "vendored_path": "research/pr4633-quotient-contract-audit/sources/research/bit-ambient-quotient/QUOTIENT-BIT-WORD.json.gz" + }, + { + "path": "research/bit-ambient-quotient/README.md", + "mode": "100644", + "git_blob": "dc2697748de2932d967a3295c89dc98828ad057f", + "sha256": "b35d299ada28f029ae7eab65535f3873d3ff6c103ce052d0c127f0ea61756418", + "bytes": 6246, + "vendored_path": "research/pr4633-quotient-contract-audit/sources/research/bit-ambient-quotient/README.md" + }, + { + "path": "research/bit-ambient-quotient/RESULT.json", + "mode": "100644", + "git_blob": "ba1db70137b9646967c7bc3ae8f8035fe12fe44a", + "sha256": "384d5842eeed7f9a5d1655720aa8b7644365a06c0edd0b436b224d8e952a4e1a", + "bytes": 916, + "vendored_path": "research/pr4633-quotient-contract-audit/sources/research/bit-ambient-quotient/RESULT.json" + }, + { + "path": "research/bit-ambient-quotient/SOURCES.json", + "mode": "100644", + "git_blob": "43d45a579be63ca9a8d97e444ccd31af2b42878f", + "sha256": "f1124d8b073467afa4c8327d83773f1e440ca641357c2b0eaa5ce7cf4c9ceaf5", + "bytes": 1647, + "vendored_path": "research/pr4633-quotient-contract-audit/sources/research/bit-ambient-quotient/SOURCES.source.json" + }, + { + "path": "research/bit-ambient-quotient/TASK.json", + "mode": "100644", + "git_blob": "886e69e9b01f2bca3a295b7210b21e62dab4ce18", + "sha256": "86990811e3ffc282e694ebed1359eda457ca5290b4104305d56300e0e9d10a72", + "bytes": 5897, + "vendored_path": "research/pr4633-quotient-contract-audit/sources/research/bit-ambient-quotient/TASK.source.json" + }, + { + "path": "research/bit-ambient-quotient/VERIFY.json", + "mode": "100644", + "git_blob": "741fc424a98c4988059fbaf63f61ba965f800f6b", + "sha256": "62a7e407ff54ea515abc896f2c44821b9756948381513fd6709c519cb37eb48c", + "bytes": 1185, + "vendored_path": "research/pr4633-quotient-contract-audit/sources/research/bit-ambient-quotient/VERIFY.source.json" + }, + { + "path": "research/bit-ambient-quotient/build.py", + "mode": "100644", + "git_blob": "1563fa84880a9d45ff41b220f28e44a5a7bff5b0", + "sha256": "797e59d645ab97e24fbeef3895eb0062ecd4fc600a2dceed18c7d30c057f031c", + "bytes": 5945, + "vendored_path": "research/pr4633-quotient-contract-audit/sources/research/bit-ambient-quotient/build.py" + }, + { + "path": "research/bit-ambient-quotient/scan_kernels.py", + "mode": "100644", + "git_blob": "a84445dcc4088a53bbd1fea35f7fc3f154894210", + "sha256": "e318b4b3f207c7994e1d08d5b50eef860820afe6e29fc9bf812f942d04d33629", + "bytes": 2631, + "vendored_path": "research/pr4633-quotient-contract-audit/sources/research/bit-ambient-quotient/scan_kernels.py" + }, + { + "path": "research/bit-ambient-quotient/verify.py", + "mode": "100644", + "git_blob": "8bc5c07e225dbc3268f1427b2b69f48a51396f99", + "sha256": "0790fc267535cfb4f9c6c4c5ed600302ccc7838c0542f32a7f50f2cf8d8be431", + "bytes": 8518, + "vendored_path": "research/pr4633-quotient-contract-audit/sources/research/bit-ambient-quotient/verify.py" + }, + { + "path": "research/complex-ambient-quotient/PROOF.md", + "mode": "100644", + "git_blob": "836900ce7c2f12c94ec3219ea6b0bf32136436e0", + "sha256": "add509beee194aea7e1168eda1120f03cef742d5f7b1efb0c02f8a71cf40e311", + "bytes": 8620, + "vendored_path": "research/pr4633-quotient-contract-audit/sources/research/complex-ambient-quotient/PROOF.md" + }, + { + "path": "research/complex-ambient-quotient/QUOTIENT-PROGRAMS.json.gz", + "mode": "100644", + "git_blob": "7fe7923f34d0233d60a51cfd369002765491e870", + "sha256": "52d70e135c0ea30439932c19c815c4cd5d6e784372dfc8069ce6786d1c0d955c", + "bytes": 197338, + "vendored_path": "research/pr4633-quotient-contract-audit/sources/research/complex-ambient-quotient/QUOTIENT-PROGRAMS.json.gz" + }, + { + "path": "research/complex-ambient-quotient/QUOTIENT-WORD.json.gz", + "mode": "100644", + "git_blob": "31444b48850cbe220d4ddbf88496722682581fb8", + "sha256": "10155f81100e9cd6283f1d9dfd071bc0c3e0e89dc3794a66e4129a1f34d99dc4", + "bytes": 3979, + "vendored_path": "research/pr4633-quotient-contract-audit/sources/research/complex-ambient-quotient/QUOTIENT-WORD.json.gz" + }, + { + "path": "research/complex-ambient-quotient/README.md", + "mode": "100644", + "git_blob": "7c8b2ebbce3a06f47a5108a99629e3eaf982131a", + "sha256": "d1b249618cbc4c8ec682ae54ee01e88db50a6d404481d5615a85a133a7e95750", + "bytes": 8198, + "vendored_path": "research/pr4633-quotient-contract-audit/sources/research/complex-ambient-quotient/README.md" + }, + { + "path": "research/complex-ambient-quotient/RESULT.json", + "mode": "100644", + "git_blob": "dc50c5a29a471de8183d9d371954b31947f34a6a", + "sha256": "1cfcda8517c945e3a3a61c86b2d3e724bdcfc86b453668131ecbf741f8a1b90f", + "bytes": 1036, + "vendored_path": "research/pr4633-quotient-contract-audit/sources/research/complex-ambient-quotient/RESULT.json" + }, + { + "path": "research/complex-ambient-quotient/SOURCES.json", + "mode": "100644", + "git_blob": "06997183d272302789e6e69219b988ff9f441efb", + "sha256": "36498e7f2f83821a7040217e049e09e9defd1a06cb2e389c347c128ec4df17e7", + "bytes": 1124, + "vendored_path": "research/pr4633-quotient-contract-audit/sources/research/complex-ambient-quotient/SOURCES.source.json" + }, + { + "path": "research/complex-ambient-quotient/TASK.json", + "mode": "100644", + "git_blob": "e5c2b9e0043f815d7abb019f150e5c9476e77d4b", + "sha256": "65cb3df2afbd78d0811f64f215bb2ed4ee5726a0f0fb3f0189131fbc8b6cda9d", + "bytes": 7751, + "vendored_path": "research/pr4633-quotient-contract-audit/sources/research/complex-ambient-quotient/TASK.source.json" + }, + { + "path": "research/complex-ambient-quotient/VERIFY.json", + "mode": "100644", + "git_blob": "99bc26d04c1176aff076e6117f63cc9914a86e5a", + "sha256": "9c3a6ca52f6ff85146ea902cbe2964282f45281e25b92c2e4ec27f75fcdba871", + "bytes": 1537, + "vendored_path": "research/pr4633-quotient-contract-audit/sources/research/complex-ambient-quotient/VERIFY.source.json" + }, + { + "path": "research/complex-ambient-quotient/build.py", + "mode": "100644", + "git_blob": "3c317eb2e004a2646eec45843b68e6a2287dc763", + "sha256": "ac9b12cd84055a83c9c1fae5c7aea8a18212ade5a71726095218da242a677015", + "bytes": 12338, + "vendored_path": "research/pr4633-quotient-contract-audit/sources/research/complex-ambient-quotient/build.py" + }, + { + "path": "research/complex-ambient-quotient/scan_kernels.py", + "mode": "100644", + "git_blob": "b3c718ababcba126978ceb18f68873ebb3331e4a", + "sha256": "f8fd58d33f12c6a06bbd804f5a84d48e720af8551700bb84701c544d1ca39e9f", + "bytes": 5934, + "vendored_path": "research/pr4633-quotient-contract-audit/sources/research/complex-ambient-quotient/scan_kernels.py" + }, + { + "path": "research/complex-ambient-quotient/verify.py", + "mode": "100644", + "git_blob": "119405057cc7e8ce0d7c31d2437ed3cf91ebeefe", + "sha256": "66ae6bd7567996f02363d9e40622d11182fc7c1fbf40692f2a4ecf49adc44d9a", + "bytes": 9928, + "vendored_path": "research/pr4633-quotient-contract-audit/sources/research/complex-ambient-quotient/verify.py" + } + ], + "retained_snapshot_commit": "2336c0da1c567b5086e948e30590b85982933fff", + "source_history_note": "Original reviewed-head blobs were compared byte-for-byte and vendored. Live package pins reference this retained snapshot ancestor, avoiding a dependency on an unmerged PR commit; the reviewed PR is not merged by ancestry." +} diff --git a/research/pr4633-quotient-contract-audit/SOURCES.json b/research/pr4633-quotient-contract-audit/SOURCES.json new file mode 100644 index 0000000000..e027690242 --- /dev/null +++ b/research/pr4633-quotient-contract-audit/SOURCES.json @@ -0,0 +1,277 @@ +{ + "schema_version": 1, + "base_commit": "fbc9ea0249746acca4f504d4fda2b84e0e36cf0d", + "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/bit_native_binding.py", + "usage": "input", + "git_blob": "f4c4082d89969ea311219d9af8013082d599f6f1", + "sha256": "bf6374225f388e7531fa6475cc255bd430100ff62c38d582c41601f0739de7b7" + }, + { + "path": "research/kappa-rebuild/bit/mixed_productive_bit.py", + "usage": "input", + "git_blob": "9c7a8bd5d3ae4c19952648c815031858d6627b96", + "sha256": "b32291b0db7fc0d332ec444c70746ab0fb03351d2e50546f8bcb64060e3ff95e" + }, + { + "path": "research/kappa-rebuild/bit/sources/pr589-regenerated/WORD.json.gz", + "usage": "input", + "git_blob": "85a4499bf9e4911a705d50567a2c2ef6cf23739a", + "sha256": "e3e301e62bc2b41dbf1ceac0acf3d35824ebeab1848c5a2142d4577b109da52f" + }, + { + "path": "research/kappa-rebuild/bit/sources/pr589-regenerated/records/249-records.bin", + "usage": "input", + "git_blob": "bdf9ab4ca0fd74cde6837f95f5f4e88133704e0e", + "sha256": "ea44aa047a2a9cf034de8b56b2166c49cf2dbdf9cd9ed6a20299a4f2b05ef09a" + }, + { + "path": "research/kappa-rebuild/bit/sources/pr589-regenerated/records/frames.json", + "usage": "input", + "git_blob": "a9a932b9268da28af9ba4bccdab205c5bcd50ad3", + "sha256": "d006b3bfe0c04afecfea7aecfa59dfe4298b99501c70da3938e40289bc2f5010" + }, + { + "path": "research/query-thinned-controllers/controller.py", + "usage": "input", + "git_blob": "d4557e08cfb9fe57cc1ae4024705a72dc95f3583", + "sha256": "8b462d660487b1be4940357c4c7522967b1bfaede3c02b1c66109b85acae0fd2" + }, + { + "path": "research/query-thinned-controllers/verify.py", + "usage": "input", + "git_blob": "f1114036fff66f57014e5c1256141fb78ff4c4a9", + "sha256": "07dea601d6bbaa4d90e576f20c8607c37fb01e8778c798d919fa9df435049950" + }, + { + "path": "research/pr4633-quotient-contract-audit/sources/research/bit-ambient-quotient/PROOF.md", + "usage": "input", + "git_blob": "87a285535fc881a2e886d00efa9474a842ca3e60", + "sha256": "09ffd242aa039c9ea1c46d88816a4738af1ce8f878107c0547937b27c2823df4", + "pin": "head:2336c0da1c567b5086e948e30590b85982933fff:research/pr4633-quotient-contract-audit/sources/research/bit-ambient-quotient/PROOF.md" + }, + { + "path": "research/pr4633-quotient-contract-audit/sources/research/bit-ambient-quotient/QUOTIENT-BIT-WORD.json.gz", + "usage": "input", + "git_blob": "500a8e28e45a24fa163bb6f9a765a02afb40ed71", + "sha256": "559c01f57aabe204c4db922485d56242dfaa94a0bc85e64bbccb34d6b686d208", + "pin": "head:2336c0da1c567b5086e948e30590b85982933fff:research/pr4633-quotient-contract-audit/sources/research/bit-ambient-quotient/QUOTIENT-BIT-WORD.json.gz" + }, + { + "path": "research/pr4633-quotient-contract-audit/sources/research/bit-ambient-quotient/README.md", + "usage": "input", + "git_blob": "dc2697748de2932d967a3295c89dc98828ad057f", + "sha256": "b35d299ada28f029ae7eab65535f3873d3ff6c103ce052d0c127f0ea61756418", + "pin": "head:2336c0da1c567b5086e948e30590b85982933fff:research/pr4633-quotient-contract-audit/sources/research/bit-ambient-quotient/README.md" + }, + { + "path": "research/pr4633-quotient-contract-audit/sources/research/bit-ambient-quotient/RESULT.json", + "usage": "input", + "git_blob": "ba1db70137b9646967c7bc3ae8f8035fe12fe44a", + "sha256": "384d5842eeed7f9a5d1655720aa8b7644365a06c0edd0b436b224d8e952a4e1a", + "pin": "head:2336c0da1c567b5086e948e30590b85982933fff:research/pr4633-quotient-contract-audit/sources/research/bit-ambient-quotient/RESULT.json" + }, + { + "path": "research/pr4633-quotient-contract-audit/sources/research/bit-ambient-quotient/SOURCES.source.json", + "usage": "input", + "git_blob": "43d45a579be63ca9a8d97e444ccd31af2b42878f", + "sha256": "f1124d8b073467afa4c8327d83773f1e440ca641357c2b0eaa5ce7cf4c9ceaf5", + "pin": "head:2336c0da1c567b5086e948e30590b85982933fff:research/pr4633-quotient-contract-audit/sources/research/bit-ambient-quotient/SOURCES.source.json" + }, + { + "path": "research/pr4633-quotient-contract-audit/sources/research/bit-ambient-quotient/TASK.source.json", + "usage": "input", + "git_blob": "886e69e9b01f2bca3a295b7210b21e62dab4ce18", + "sha256": "86990811e3ffc282e694ebed1359eda457ca5290b4104305d56300e0e9d10a72", + "pin": "head:2336c0da1c567b5086e948e30590b85982933fff:research/pr4633-quotient-contract-audit/sources/research/bit-ambient-quotient/TASK.source.json" + }, + { + "path": "research/pr4633-quotient-contract-audit/sources/research/bit-ambient-quotient/VERIFY.source.json", + "usage": "input", + "git_blob": "741fc424a98c4988059fbaf63f61ba965f800f6b", + "sha256": "62a7e407ff54ea515abc896f2c44821b9756948381513fd6709c519cb37eb48c", + "pin": "head:2336c0da1c567b5086e948e30590b85982933fff:research/pr4633-quotient-contract-audit/sources/research/bit-ambient-quotient/VERIFY.source.json" + }, + { + "path": "research/pr4633-quotient-contract-audit/sources/research/bit-ambient-quotient/build.py", + "usage": "input", + "git_blob": "1563fa84880a9d45ff41b220f28e44a5a7bff5b0", + "sha256": "797e59d645ab97e24fbeef3895eb0062ecd4fc600a2dceed18c7d30c057f031c", + "pin": "head:2336c0da1c567b5086e948e30590b85982933fff:research/pr4633-quotient-contract-audit/sources/research/bit-ambient-quotient/build.py" + }, + { + "path": "research/pr4633-quotient-contract-audit/sources/research/bit-ambient-quotient/scan_kernels.py", + "usage": "input", + "git_blob": "a84445dcc4088a53bbd1fea35f7fc3f154894210", + "sha256": "e318b4b3f207c7994e1d08d5b50eef860820afe6e29fc9bf812f942d04d33629", + "pin": "head:2336c0da1c567b5086e948e30590b85982933fff:research/pr4633-quotient-contract-audit/sources/research/bit-ambient-quotient/scan_kernels.py" + }, + { + "path": "research/pr4633-quotient-contract-audit/sources/research/bit-ambient-quotient/verify.py", + "usage": "input", + "git_blob": "8bc5c07e225dbc3268f1427b2b69f48a51396f99", + "sha256": "0790fc267535cfb4f9c6c4c5ed600302ccc7838c0542f32a7f50f2cf8d8be431", + "pin": "head:2336c0da1c567b5086e948e30590b85982933fff:research/pr4633-quotient-contract-audit/sources/research/bit-ambient-quotient/verify.py" + }, + { + "path": "research/pr4633-quotient-contract-audit/sources/research/complex-ambient-quotient/PROOF.md", + "usage": "input", + "git_blob": "836900ce7c2f12c94ec3219ea6b0bf32136436e0", + "sha256": "add509beee194aea7e1168eda1120f03cef742d5f7b1efb0c02f8a71cf40e311", + "pin": "head:2336c0da1c567b5086e948e30590b85982933fff:research/pr4633-quotient-contract-audit/sources/research/complex-ambient-quotient/PROOF.md" + }, + { + "path": "research/pr4633-quotient-contract-audit/sources/research/complex-ambient-quotient/QUOTIENT-PROGRAMS.json.gz", + "usage": "input", + "git_blob": "7fe7923f34d0233d60a51cfd369002765491e870", + "sha256": "52d70e135c0ea30439932c19c815c4cd5d6e784372dfc8069ce6786d1c0d955c", + "pin": "head:2336c0da1c567b5086e948e30590b85982933fff:research/pr4633-quotient-contract-audit/sources/research/complex-ambient-quotient/QUOTIENT-PROGRAMS.json.gz" + }, + { + "path": "research/pr4633-quotient-contract-audit/sources/research/complex-ambient-quotient/QUOTIENT-WORD.json.gz", + "usage": "input", + "git_blob": "31444b48850cbe220d4ddbf88496722682581fb8", + "sha256": "10155f81100e9cd6283f1d9dfd071bc0c3e0e89dc3794a66e4129a1f34d99dc4", + "pin": "head:2336c0da1c567b5086e948e30590b85982933fff:research/pr4633-quotient-contract-audit/sources/research/complex-ambient-quotient/QUOTIENT-WORD.json.gz" + }, + { + "path": "research/pr4633-quotient-contract-audit/sources/research/complex-ambient-quotient/README.md", + "usage": "input", + "git_blob": "7c8b2ebbce3a06f47a5108a99629e3eaf982131a", + "sha256": "d1b249618cbc4c8ec682ae54ee01e88db50a6d404481d5615a85a133a7e95750", + "pin": "head:2336c0da1c567b5086e948e30590b85982933fff:research/pr4633-quotient-contract-audit/sources/research/complex-ambient-quotient/README.md" + }, + { + "path": "research/pr4633-quotient-contract-audit/sources/research/complex-ambient-quotient/RESULT.json", + "usage": "input", + "git_blob": "dc50c5a29a471de8183d9d371954b31947f34a6a", + "sha256": "1cfcda8517c945e3a3a61c86b2d3e724bdcfc86b453668131ecbf741f8a1b90f", + "pin": "head:2336c0da1c567b5086e948e30590b85982933fff:research/pr4633-quotient-contract-audit/sources/research/complex-ambient-quotient/RESULT.json" + }, + { + "path": "research/pr4633-quotient-contract-audit/sources/research/complex-ambient-quotient/SOURCES.source.json", + "usage": "input", + "git_blob": "06997183d272302789e6e69219b988ff9f441efb", + "sha256": "36498e7f2f83821a7040217e049e09e9defd1a06cb2e389c347c128ec4df17e7", + "pin": "head:2336c0da1c567b5086e948e30590b85982933fff:research/pr4633-quotient-contract-audit/sources/research/complex-ambient-quotient/SOURCES.source.json" + }, + { + "path": "research/pr4633-quotient-contract-audit/sources/research/complex-ambient-quotient/TASK.source.json", + "usage": "input", + "git_blob": "e5c2b9e0043f815d7abb019f150e5c9476e77d4b", + "sha256": "65cb3df2afbd78d0811f64f215bb2ed4ee5726a0f0fb3f0189131fbc8b6cda9d", + "pin": "head:2336c0da1c567b5086e948e30590b85982933fff:research/pr4633-quotient-contract-audit/sources/research/complex-ambient-quotient/TASK.source.json" + }, + { + "path": "research/pr4633-quotient-contract-audit/sources/research/complex-ambient-quotient/VERIFY.source.json", + "usage": "input", + "git_blob": "99bc26d04c1176aff076e6117f63cc9914a86e5a", + "sha256": "9c3a6ca52f6ff85146ea902cbe2964282f45281e25b92c2e4ec27f75fcdba871", + "pin": "head:2336c0da1c567b5086e948e30590b85982933fff:research/pr4633-quotient-contract-audit/sources/research/complex-ambient-quotient/VERIFY.source.json" + }, + { + "path": "research/pr4633-quotient-contract-audit/sources/research/complex-ambient-quotient/build.py", + "usage": "input", + "git_blob": "3c317eb2e004a2646eec45843b68e6a2287dc763", + "sha256": "ac9b12cd84055a83c9c1fae5c7aea8a18212ade5a71726095218da242a677015", + "pin": "head:2336c0da1c567b5086e948e30590b85982933fff:research/pr4633-quotient-contract-audit/sources/research/complex-ambient-quotient/build.py" + }, + { + "path": "research/pr4633-quotient-contract-audit/sources/research/complex-ambient-quotient/scan_kernels.py", + "usage": "input", + "git_blob": "b3c718ababcba126978ceb18f68873ebb3331e4a", + "sha256": "f8fd58d33f12c6a06bbd804f5a84d48e720af8551700bb84701c544d1ca39e9f", + "pin": "head:2336c0da1c567b5086e948e30590b85982933fff:research/pr4633-quotient-contract-audit/sources/research/complex-ambient-quotient/scan_kernels.py" + }, + { + "path": "research/pr4633-quotient-contract-audit/sources/research/complex-ambient-quotient/verify.py", + "usage": "input", + "git_blob": "119405057cc7e8ce0d7c31d2437ed3cf91ebeefe", + "sha256": "66ae6bd7567996f02363d9e40622d11182fc7c1fbf40692f2a4ecf49adc44d9a", + "pin": "head:2336c0da1c567b5086e948e30590b85982933fff:research/pr4633-quotient-contract-audit/sources/research/complex-ambient-quotient/verify.py" + }, + { + "path": "research/pr4633-quotient-contract-audit/sources-current/research/bit-ambient-quotient/PROOF.md", + "usage": "input", + "git_blob": "2943fa186661ce660f2a9892203c6ae0ba7520dd", + "sha256": "17d2a42dbbe8e97d015a71d8261a5816a8bd4f53fb91797f3bf09ca3f1f63fa9", + "pin": "head:a4c5789d214e638f5070e694b9d35422df17e571:research/pr4633-quotient-contract-audit/sources-current/research/bit-ambient-quotient/PROOF.md" + }, + { + "path": "research/pr4633-quotient-contract-audit/sources-current/research/bit-ambient-quotient/QUOTIENT-BIT-WORD.json.gz", + "usage": "input", + "git_blob": "fa2fa7618a66b98a4e78711f307bc893c86b1405", + "sha256": "a1b9555b38d234e3921cdabd280e6a754619e26dd620a069a2a85a93efa31b2c", + "pin": "head:a4c5789d214e638f5070e694b9d35422df17e571:research/pr4633-quotient-contract-audit/sources-current/research/bit-ambient-quotient/QUOTIENT-BIT-WORD.json.gz" + }, + { + "path": "research/pr4633-quotient-contract-audit/sources-current/research/bit-ambient-quotient/README.md", + "usage": "input", + "git_blob": "fb0e8be3721d20c477c2f8a0607465beabae0a06", + "sha256": "30a9ddae0a0520cfd5a902a990edf862f4f50f20b01dd38e9947d61872b382ee", + "pin": "head:a4c5789d214e638f5070e694b9d35422df17e571:research/pr4633-quotient-contract-audit/sources-current/research/bit-ambient-quotient/README.md" + }, + { + "path": "research/pr4633-quotient-contract-audit/sources-current/research/bit-ambient-quotient/RESULT.json", + "usage": "input", + "git_blob": "ba73ce57db43d7a1535751c50bcb25b01b2dc677", + "sha256": "fdb1059a80c345004259eea514585a7ac2f199b1825af46477b9dc0bff8aaf90", + "pin": "head:a4c5789d214e638f5070e694b9d35422df17e571:research/pr4633-quotient-contract-audit/sources-current/research/bit-ambient-quotient/RESULT.json" + }, + { + "path": "research/pr4633-quotient-contract-audit/sources-current/research/bit-ambient-quotient/SOURCES.source.json", + "usage": "input", + "git_blob": "43d45a579be63ca9a8d97e444ccd31af2b42878f", + "sha256": "f1124d8b073467afa4c8327d83773f1e440ca641357c2b0eaa5ce7cf4c9ceaf5", + "pin": "head:a4c5789d214e638f5070e694b9d35422df17e571:research/pr4633-quotient-contract-audit/sources-current/research/bit-ambient-quotient/SOURCES.source.json" + }, + { + "path": "research/pr4633-quotient-contract-audit/sources-current/research/bit-ambient-quotient/TASK.source.json", + "usage": "input", + "git_blob": "807800b2cd156f8e0cc01bfb85caa0c2bae5aec7", + "sha256": "67c996f8dd505a679bf3b5bacb9434ca00ba693ab9d5119ec1c87055029997cf", + "pin": "head:a4c5789d214e638f5070e694b9d35422df17e571:research/pr4633-quotient-contract-audit/sources-current/research/bit-ambient-quotient/TASK.source.json" + }, + { + "path": "research/pr4633-quotient-contract-audit/sources-current/research/bit-ambient-quotient/VERIFY.source.json", + "usage": "input", + "git_blob": "1304952875c51504c4936996c7a6055d2cfd8317", + "sha256": "cbd5c4b83eaba98a6491c8beab455f864899796b2a3a71413b8f8636001b1fc8", + "pin": "head:a4c5789d214e638f5070e694b9d35422df17e571:research/pr4633-quotient-contract-audit/sources-current/research/bit-ambient-quotient/VERIFY.source.json" + }, + { + "path": "research/pr4633-quotient-contract-audit/sources-current/research/bit-ambient-quotient/build.py", + "usage": "input", + "git_blob": "ae55584ddb9555f62975a07ae28efaf71b30c291", + "sha256": "1d6601e57f4d8809065ed6821b1bda35621fb6a08a8fd48cc3fdf95ed59e19c7", + "pin": "head:a4c5789d214e638f5070e694b9d35422df17e571:research/pr4633-quotient-contract-audit/sources-current/research/bit-ambient-quotient/build.py" + }, + { + "path": "research/pr4633-quotient-contract-audit/sources-current/research/bit-ambient-quotient/scan_kernels.py", + "usage": "input", + "git_blob": "ad0526f1ec634888c4403b14d74192c2455e4a6a", + "sha256": "1bb06168a007722d842f082a68453346940a4c0359b889e955cc1af4bde3d8df", + "pin": "head:a4c5789d214e638f5070e694b9d35422df17e571:research/pr4633-quotient-contract-audit/sources-current/research/bit-ambient-quotient/scan_kernels.py" + }, + { + "path": "research/pr4633-quotient-contract-audit/sources-current/research/bit-ambient-quotient/verify.py", + "usage": "input", + "git_blob": "f0acb7c51ebb095853e55dd6f997db8a898dab38", + "sha256": "d60e8db9aea2dbee786432143aac8c18996bf491b513b57d1729a4bbb3f7464e", + "pin": "head:a4c5789d214e638f5070e694b9d35422df17e571:research/pr4633-quotient-contract-audit/sources-current/research/bit-ambient-quotient/verify.py" + } + ] +} diff --git a/research/pr4633-quotient-contract-audit/TASK.json b/research/pr4633-quotient-contract-audit/TASK.json new file mode 100644 index 0000000000..11674e5d6c --- /dev/null +++ b/research/pr4633-quotient-contract-audit/TASK.json @@ -0,0 +1,73 @@ +{ + "schema_version": 1, + "task_id": "bit-helper-contract", + "priority_revision": 7, + "base_commit": "fbc9ea0249746acca4f504d4fda2b84e0e36cf0d", + "original_card": { + "id": "bit-helper-contract", + "question": "Can one precisely specified helper-mixing word satisfy a replacement for the inherited H2/K interface?", + "starting_points": [ + "docs/research/research-family-status.md", + "research/r439-bsection-stars-seed01/README.md", + "research/r439-copy-path-sharing-barrier/README.md" + ], + "methods": [ + "Derive a replacement interface lemma and price its implementation.", + "Seek an exact dirty-input or chronological-cut counterexample to the proposed replacement." + ], + "acceptance_gate": "A full boundary contract and paid profile; unchanged scalar counts alone are insufficient. 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/r439-bsection-stars-seed01/verify.py" + ], + "expected": "PASS_R439_BSECTION_STARS", + "inspect": "Compare the two false H2/K flags with the unchanged paid profile in its README.", + "scope": "Positive control / source-bound orientation only; this is not a new construction or full cold replay." + }, + "first_experiment": "Write one replacement H2/K implication for a single helper-star operation, then try to falsify it on dirty inputs.", + "bottleneck_link": "A legitimate replacement could admit a cheaper bit circuit; scalar savings alone do not alter the selected moment.", + "allowed_variations": [ + "Choose one helper-star or quartet instance; narrow to one boundary implication." + ], + "scope_change_triggers": [ + "Changing only source count or scalar addition count without an interface argument." + ], + "overlap_terms": [ + "H2_D_frame0_targets_from_helpers", + "K_equals_D", + "helper-star" + ] + }, + "scope_status": "changed", + "actual_scope": "User-assigned full audited replay of PR4633 at b2998bacd50d57c301fe67c5392054440c42398c, and its nine-file b390d64abfcdba1a3816b86fc763cbc95d43c12c update, including both changed packages, all stated one-dimensional kernel scans, rational frame/source checks, controller boundary review and adversarial verifier controls.", + "scope_change_reason": "Explicit audit assignment of the ambient-quotient replacement for the BIT supplier; this does not propose a helper-mixing construction.", + "bottleneck_link": "A lower numeric invoice can improve kappa only after its word satisfies the native supplier and outer admission contracts. This audit tests that implication.", + "budget_minutes": 60, + "stop_rule": "Finish submitted replays and finite scans, source-bound counterexamples, exact-head review evidence and an audit PR; do not promote the selected result.", + "outcome": "completed", + "evidence": "Both registered replays and regenerated artifacts pass; independent rational-kernel and controller-boundary obstructions plus a free-MOVE false-positive control are reproducible in verify.py. Detailed coverage is in README.md and REPLAY.json. Current-head counterexamples are in verify_latest.py and EXPECTED-LATEST.json.", + "author": "Cinna Davis, with substantial OpenAI Codex assistance", + "ai_assistance": "Substantial OpenAI Codex assistance for source review, exact arithmetic, replay, counterexamples and audit writing; no independent human or formal-kernel theorem review claimed.", + "open_questions": [ + { + "question": "Can the BIT replacement be realized with native rational projectors and the required per-port operator?", + "why_it_matters": "The mod-two image erases rationally independent entrance lines and fails every retained rank-seven data pair.", + "first_step": "Supply exact native projectors and prove each local entrance, exit and physical controller identity before repricing.", + "blocked_by": "Author revision." + }, + { + "question": "Can the verifier independently authenticate geometry and MOVE costs?", + "why_it_matters": "Its PASS status accepts all 2802 positive MOVE charges erased.", + "first_step": "Store frame bases/projectors, check nesting and recompute each cost; retain the free-MOVE mutation as a rejection test.", + "blocked_by": "Author verifier repair." + }, + { + "question": "What outer saving follows after valid suppliers are available?", + "why_it_matters": "Raw floating-point supplier crossings are not ordinary BIT admission or the full outer ledger.", + "first_step": "Re-run exact strictification, cover loss, atom/ordinary/admitted conversion and all outer predicates with strict rational margins.", + "blocked_by": "Native supplier contract repair." + } + ] +} diff --git a/research/pr4633-quotient-contract-audit/VERIFY.json b/research/pr4633-quotient-contract-audit/VERIFY.json new file mode 100644 index 0000000000..ba49a65d6a --- /dev/null +++ b/research/pr4633-quotient-contract-audit/VERIFY.json @@ -0,0 +1,66 @@ +{ + "schema_version": 1, + "status": "ready", + "python": "3.12", + "requirements": [], + "inputs": [ + "research/kappa-rebuild/bit/bit_native_binding.py", + "research/kappa-rebuild/bit/mixed_productive_bit.py", + "research/kappa-rebuild/bit/sources/pr589-regenerated/WORD.json.gz", + "research/kappa-rebuild/bit/sources/pr589-regenerated/records/249-records.bin", + "research/kappa-rebuild/bit/sources/pr589-regenerated/records/frames.json", + "research/query-thinned-controllers/controller.py", + "research/query-thinned-controllers/verify.py", + "research/pr4633-quotient-contract-audit/sources/research/bit-ambient-quotient/PROOF.md", + "research/pr4633-quotient-contract-audit/sources/research/bit-ambient-quotient/QUOTIENT-BIT-WORD.json.gz", + "research/pr4633-quotient-contract-audit/sources/research/bit-ambient-quotient/README.md", + "research/pr4633-quotient-contract-audit/sources/research/bit-ambient-quotient/RESULT.json", + "research/pr4633-quotient-contract-audit/sources/research/bit-ambient-quotient/SOURCES.source.json", + "research/pr4633-quotient-contract-audit/sources/research/bit-ambient-quotient/TASK.source.json", + "research/pr4633-quotient-contract-audit/sources/research/bit-ambient-quotient/VERIFY.source.json", + "research/pr4633-quotient-contract-audit/sources/research/bit-ambient-quotient/build.py", + "research/pr4633-quotient-contract-audit/sources/research/bit-ambient-quotient/scan_kernels.py", + "research/pr4633-quotient-contract-audit/sources/research/bit-ambient-quotient/verify.py", + "research/pr4633-quotient-contract-audit/sources/research/complex-ambient-quotient/PROOF.md", + "research/pr4633-quotient-contract-audit/sources/research/complex-ambient-quotient/QUOTIENT-PROGRAMS.json.gz", + "research/pr4633-quotient-contract-audit/sources/research/complex-ambient-quotient/QUOTIENT-WORD.json.gz", + "research/pr4633-quotient-contract-audit/sources/research/complex-ambient-quotient/README.md", + "research/pr4633-quotient-contract-audit/sources/research/complex-ambient-quotient/RESULT.json", + "research/pr4633-quotient-contract-audit/sources/research/complex-ambient-quotient/SOURCES.source.json", + "research/pr4633-quotient-contract-audit/sources/research/complex-ambient-quotient/TASK.source.json", + "research/pr4633-quotient-contract-audit/sources/research/complex-ambient-quotient/VERIFY.source.json", + "research/pr4633-quotient-contract-audit/sources/research/complex-ambient-quotient/build.py", + "research/pr4633-quotient-contract-audit/sources/research/complex-ambient-quotient/scan_kernels.py", + "research/pr4633-quotient-contract-audit/sources/research/complex-ambient-quotient/verify.py", + "research/pr4633-quotient-contract-audit/sources-current/research/bit-ambient-quotient/PROOF.md", + "research/pr4633-quotient-contract-audit/sources-current/research/bit-ambient-quotient/QUOTIENT-BIT-WORD.json.gz", + "research/pr4633-quotient-contract-audit/sources-current/research/bit-ambient-quotient/README.md", + "research/pr4633-quotient-contract-audit/sources-current/research/bit-ambient-quotient/RESULT.json", + "research/pr4633-quotient-contract-audit/sources-current/research/bit-ambient-quotient/SOURCES.source.json", + "research/pr4633-quotient-contract-audit/sources-current/research/bit-ambient-quotient/TASK.source.json", + "research/pr4633-quotient-contract-audit/sources-current/research/bit-ambient-quotient/VERIFY.source.json", + "research/pr4633-quotient-contract-audit/sources-current/research/bit-ambient-quotient/build.py", + "research/pr4633-quotient-contract-audit/sources-current/research/bit-ambient-quotient/scan_kernels.py", + "research/pr4633-quotient-contract-audit/sources-current/research/bit-ambient-quotient/verify.py" + ], + "commands": [ + { + "argv": [ + "{python}", + "-B", + "{package}/verify.py" + ], + "timeout_seconds": 600, + "checks": "Authenticates sources; independently reconstructs the BIT artifact; checks rational frame dimensions and the rank-four erased span; proves all 111 port-width failures; reproduces the positive replay and demonstrates free-MOVE false acceptance, with an independently rejecting rank check and broken-frame negative control." + }, + { + "argv": [ + "{python}", + "-B", + "{package}/verify_latest.py" + ], + "timeout_seconds": 600, + "checks": "Authenticates the b390d64 delta and reconstructs every rewritten record by independent cosets; proves 41 erased rational lines span rank eight, all 111 retained port contracts fail, and the author accepts free MOVEs and entirely empty frame bases." + } + ] +} diff --git a/research/pr4633-quotient-contract-audit/evidence/INTAKE.json b/research/pr4633-quotient-contract-audit/evidence/INTAKE.json new file mode 100644 index 0000000000..cacc838948 --- /dev/null +++ b/research/pr4633-quotient-contract-audit/evidence/INTAKE.json @@ -0,0 +1,23 @@ +{ + "schema_version": 1, + "counts": { + "draft": 173, + "reactivated": 6, + "waiting_revision": 108, + "deferred_replay": 7, + "new": 114 + }, + "open_count": 408, + "actionable_count": 120, + "target": [ + { + "number": 4633, + "head": "b2998bacd50d57c301fe67c5392054440c42398c", + "title": "Conditional \u03ba = 0.012401086416 (BIT-limited, +310.6%): BIT supplier to 0.012401086416 via the ambient quotient (kernel 150)", + "lane": "new", + "changes": [], + "reason": "No cached intake decision.", + "evidence": [] + } + ] +} diff --git a/research/pr4633-quotient-contract-audit/evidence/audit-registered.log b/research/pr4633-quotient-contract-audit/evidence/audit-registered.log new file mode 100644 index 0000000000..34c8ea73a2 --- /dev/null +++ b/research/pr4633-quotient-contract-audit/evidence/audit-registered.log @@ -0,0 +1,223 @@ +CHECK Authenticates sources; independently reconstructs the BIT artifact; checks rational frame dimensions and the rank-four erased span; proves all 111 port-width failures; reproduces the positive replay and demonstrates free-MOVE false acceptance, with an independently rejecting rank check and broken-frame negative control. +{ + "all_source_dimensions_preserved_mod2": true, + "binary_reductions_distinct": 157, + "broken_frame_entrance_rejected": true, + "erased_rational_ports": [ + 8, + 9, + 10, + 11, + 12, + 13 + ], + "erased_rational_span_rank": 4, + "free_move_mutation": { + "author_accepts": true, + "changed_records": 2802, + "independent_rank_mismatches": 2802, + "paid_profile": { + "6": 9 + }, + "reported_kappa": 0.25 + }, + "independent_erased_vectors": [ + [ + 0, + 1, + 1, + 0, + 1, + 0, + 0, + 1 + ], + [ + 0, + 1, + 1, + 0, + 1, + 0, + 0, + -1 + ] + ], + "port_transport_width_pairs": { + "(7, 6)": 101, + "(7, 8)": 4, + "(8, 6)": 6 + }, + "positive_control": { + "ambient_dim": 8, + "directions_agree": true, + "emitted_kappa": 0.003464248972023964, + "emitted_paid": { + "1": 1323, + "2": 1342, + "3": 79, + "4": 44, + "5": 102, + "6": 11, + "7": 19 + }, + "emitted_paid_mass": 5129, + "emitted_surplus": 753, + "endpoint_failures": 0, + "frames": 117, + "gain_absolute": 0.008936837444043276, + "gain_relative": 2.5797330146343347, + "helper_widths": { + "8": 439 + }, + "kernel_vector": 150, + "local_checks": { + "adds": 24305, + "copies": 9 + }, + "main_rank_mass": 1457, + "main_widths": { + "6": 107, + "7": 105, + "8": 10 + }, + "package": "bit-ambient-quotient", + "quotient_kappa": 0.01240108641606724, + "quotient_paid": { + "1": 1198, + "2": 1255, + "3": 207, + "4": 86, + "5": 41, + "6": 23, + "7": 1 + }, + "quotient_paid_mass": 5023, + "quotient_surplus": 2661, + "roles": 661, + "status": "PASS_BIT_AMBIENT_QUOTIENT" + }, + "quotient_reconstructed_exactly": true, + "rational_source_frames": 636, + "reviewed_head": "b2998bacd50d57c301fe67c5392054440c42398c", + "scope": "Exact source and verifier counterexamples; no new supplier or kappa.", + "status": "PASS_PR4633_AUDIT_COUNTEREXAMPLES" +} +CHECK Authenticates the b390d64 delta and reconstructs every rewritten record by independent cosets; proves 41 erased rational lines span rank eight, all 111 retained port contracts fail, and the author accepts free MOVEs and entirely empty frame bases. +{ + "all_empty_frame_bases_accepted": true, + "erased_rational_ports": [ + 8, + 9, + 10, + 11, + 12, + 13, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110 + ], + "erased_rational_span_rank": 8, + "free_move_mutation": { + "author_accepts": true, + "changed_records": 2184, + "reported_kappa": 0.25 + }, + "port_transport_width_pairs": { + "(7, 4)": 62, + "(7, 8)": 8, + "(8, 4)": 41 + }, + "positive_control": { + "ambient_dim": 8, + "directions_agree": true, + "emitted_kappa": 0.003464248972023964, + "emitted_paid": { + "1": 1323, + "2": 1342, + "3": 79, + "4": 44, + "5": 102, + "6": 11, + "7": 19 + }, + "emitted_paid_mass": 5129, + "emitted_surplus": 753, + "endpoint_failures": 0, + "frames": 65, + "gain_absolute": 0.02878517442286887, + "gain_relative": 8.309210641419726, + "helper_widths": { + "8": 439 + }, + "kernel_basis": [ + 150, + 102, + 255 + ], + "kernel_dimension": 3, + "local_checks": { + "adds": 24305, + "copies": 9 + }, + "main_rank_mass": 1294, + "main_widths": { + "4": 103, + "7": 70, + "8": 49 + }, + "package": "bit-ambient-quotient", + "quotient_kappa": 0.03224942339489283, + "quotient_paid": { + "1": 1020, + "2": 495, + "3": 75, + "4": 442, + "5": 143, + "6": 4, + "7": 12, + "8": 2 + }, + "quotient_paid_mass": 4842, + "quotient_surplus": 5919, + "roles": 661, + "status": "PASS_BIT_AMBIENT_QUOTIENT" + }, + "quotient_reconstructed_by_cosets": true, + "reviewed_head": "b390d64abfcdba1a3816b86fc763cbc95d43c12c", + "scope": "Counterexamples survive the three-dimensional update; no supplier or kappa claim.", + "status": "PASS_PR4633_LATEST_AUDIT_COUNTEREXAMPLES" +} +PASS_REGISTERED_RESEARCH_PACKAGE research/pr4633-quotient-contract-audit outcome=completed diff --git a/research/pr4633-quotient-contract-audit/evidence/bit-build.log b/research/pr4633-quotient-contract-audit/evidence/bit-build.log new file mode 100644 index 0000000000..1490c2d8bd --- /dev/null +++ b/research/pr4633-quotient-contract-audit/evidence/bit-build.log @@ -0,0 +1,5 @@ +kernel 150 frames 636 -> 117 roles 661 +frame dims {0: 1, 1: 16, 2: 19, 3: 11, 4: 7, 5: 41, 6: 20, 7: 1, 8: 1} +main widths {'6': 107, '7': 105, '8': 10} +helper dims: start 0, final 8 +wrote QUOTIENT-BIT-WORD.json.gz diff --git a/research/pr4633-quotient-contract-audit/evidence/bit-build.receipt.json b/research/pr4633-quotient-contract-audit/evidence/bit-build.receipt.json new file mode 100644 index 0000000000..6a562c50f2 --- /dev/null +++ b/research/pr4633-quotient-contract-audit/evidence/bit-build.receipt.json @@ -0,0 +1,14 @@ +{ + "command": [ + "python3.12", + "-B", + "research/bit-ambient-quotient/build.py" + ], + "cwd": "/home/cinna/int-bounds/audit-pr4633-20261022", + "exit_code": 0, + "elapsed_seconds": 0.338, + "peak_sampled_group_rss_bytes": 31289344, + "stop_reason": null, + "memory_limit_bytes": 1073741824, + "timeout_seconds": 1200 +} diff --git a/research/pr4633-quotient-contract-audit/evidence/bit-registered.log b/research/pr4633-quotient-contract-audit/evidence/bit-registered.log new file mode 100644 index 0000000000..cd9c62784e --- /dev/null +++ b/research/pr4633-quotient-contract-audit/evidence/bit-registered.log @@ -0,0 +1,12 @@ +CHECK Replays the pinned PR589 source word and the quotiented word with the shipped local record interpreter: 661 roles, ambient dim 8, every helper start at ground, every helper final at dim 8, both directions 24305 ADDs and 9 COPY episodes, all arbitrary input columns exact, all 661 endpoints exact, owned COPY cleanup exact, forward and backward paid profiles identical, the source word reproduces the declared local bill {1:1323,2:1342,3:79,4:44,5:102,6:11,7:19}, the emitted invoice reproduces the frontier BIT kappa 0.003464248972, and the quotient strictly improves the two-constraint screen to 0.012401086416. +artifact: kernel 150, 117 frames, 661 roles, ambient 8 +main widths {6: 107, 7: 105, 8: 10} ; helper widths {8: 439} +forward adds 24305 copies 9 paid {1: 1198, 2: 1255, 3: 207, 4: 86, 5: 41, 6: 23, 7: 1} (mass 5023) +reverse adds 24305 copies 9 paid {1: 1198, 2: 1255, 3: 207, 4: 86, 5: 41, 6: 23, 7: 1} (mass 5023) +source paid {1: 1323, 2: 1342, 3: 79, 4: 44, 5: 102, 6: 11, 7: 19} (mass 5129) matches the declared local bill + +emitted surplus 753 (thin 1665) BIT kappa 0.003464248972 +quotient surplus 2661 (thin 1665) BIT kappa 0.012401086416 +gain +0.008937 +258.0% +wrote RESULT.json +PASS_REGISTERED_RESEARCH_PACKAGE research/bit-ambient-quotient outcome=completed diff --git a/research/pr4633-quotient-contract-audit/evidence/bit-registered.receipt.json b/research/pr4633-quotient-contract-audit/evidence/bit-registered.receipt.json new file mode 100644 index 0000000000..91955eacf7 --- /dev/null +++ b/research/pr4633-quotient-contract-audit/evidence/bit-registered.receipt.json @@ -0,0 +1,16 @@ +{ + "command": [ + "python3.12", + "-B", + "scripts/research_package.py", + "--package", + "research/bit-ambient-quotient" + ], + "cwd": "/home/cinna/int-bounds/audit-pr4633-20261022", + "exit_code": 0, + "elapsed_seconds": 0.55, + "peak_sampled_group_rss_bytes": 69005312, + "stop_reason": null, + "memory_limit_bytes": 1073741824, + "timeout_seconds": 1200 +} diff --git a/research/pr4633-quotient-contract-audit/evidence/bit-scan-results.json b/research/pr4633-quotient-contract-audit/evidence/bit-scan-results.json new file mode 100644 index 0000000000..e4d9b160d8 --- /dev/null +++ b/research/pr4633-quotient-contract-audit/evidence/bit-scan-results.json @@ -0,0 +1,257 @@ +[ +[1,"ok",843,0.00401240060882363], +[2,"ok",843,0.004012797439516046], +[3,"ok",537,0.00256511125960196], +[4,"ok",843,0.004014964982197944], +[5,"ok",537,0.0025664740370176515], +[6,"ok",537,0.002538616003046667], +[7,"ok",789,0.003764752352612366], +[8,"ok",843,0.004014366457907148], +[9,"ok",537,0.002540207668319472], +[10,"ok",537,0.0025668146473884486], +[11,"ok",789,0.0037666877616009953], +[12,"ok",537,0.002565642110112731], +[13,"ok",789,0.003764929271871831], +[14,"ok",789,0.0037621755288573255], +[15,"ok",2643,0.012297302161748569], +[16,"ok",843,0.0040121388855386955], +[17,"ok",537,0.002564946348940389], +[18,"ok",537,0.002543690418425448], +[19,"ok",789,0.0037634474912373035], +[20,"ok",537,0.00254435419723259], +[21,"ok",789,0.0037653359059120484], +[22,"ok",789,0.0037587432568299546], +[23,"ok",465,0.002222804930992528], +[24,"ok",537,0.0025664587654696254], +[25,"ok",789,0.003765936636069555], +[26,"ok",789,0.0037648501693844923], +[27,"ok",465,0.002208614343553516], +[28,"ok",789,0.0037641484027038374], +[29,"ok",465,0.0022080861442894113], +[30,"ok",465,0.0022222495876910715], +[31,"ok",717,0.0034247749561186476], +[32,"ok",843,0.00401294147599468], +[33,"ok",537,0.0025447095418257844], +[34,"ok",537,0.0025650275781010086], +[35,"ok",789,0.003763169134903321], +[36,"ok",537,0.002566199552991588], +[37,"ok",789,0.003765074580196759], +[38,"ok",789,0.0037650075535587413], +[39,"ok",465,0.0022081767898051714], +[40,"ok",537,0.0025455212287596725], +[41,"ok",789,0.0037598745800380695], +[42,"ok",789,0.0037650143695979184], +[43,"ok",465,0.0022230052226737684], +[44,"ok",789,0.0037633882311172706], +[45,"ok",465,0.0022221548893689986], +[46,"ok",465,0.002207139998583629], +[47,"ok",717,0.003424961061616993], +[48,"ok",537,0.0025651367955167865], +[49,"ok",789,0.003764045672522809], +[50,"ok",789,0.0037627245327444543], +[51,"ok",2625,0.012211198514487098], +[52,"ok",789,0.0037660037158452893], +[53,"ok",465,0.0022069951994238553], +[54,"ok",465,0.0022231353415873008], +[55,"ok",717,0.0034262358361058505], +[56,"ok",789,0.003766022735854968], +[57,"ok",465,0.0022232652017493693], +[58,"ok",465,0.002206486698968224], +[59,"ok",717,0.003426742623916234], +[60,"ok",2625,0.0122110508680911], +[61,"ok",717,0.0034246810009977424], +[62,"ok",717,0.0034245804662761943], +[63,"ok",393,0.0018787900453017259], +[64,"ok",843,0.004013776922093536], +[65,"ok",537,0.0025453528124730895], +[66,"ok",537,0.0025661182495779196], +[67,"ok",789,0.003764676057776472], +[68,"ok",537,0.0025651368758729527], +[69,"ok",789,0.0037630502113479847], +[70,"ok",789,0.0037633723194097635], +[71,"ok",465,0.00220694255996029], +[72,"ok",537,0.0025442334063920376], +[73,"ok",789,0.003757965341443625], +[74,"ok",789,0.003763269293742433], +[75,"ok",465,0.0022219193832100914], +[76,"ok",789,0.0037651748404306518], +[77,"ok",465,0.0022229347525682397], +[78,"ok",465,0.002207814008599096], +[79,"ok",717,0.003425576197186697], +[80,"ok",537,0.002566418277624771], +[81,"ok",789,0.0037656842428492317], +[82,"ok",789,0.0037650694614743126], +[83,"ok",465,0.002206289376820158], +[84,"ok",789,0.0037629773263949113], +[85,"ok",2625,0.012214004058983374], +[86,"ok",465,0.0022220493747422965], +[87,"ok",717,0.0034242724018211375], +[88,"ok",789,0.003764145877916236], +[89,"ok",465,0.0022220140040282717], +[90,"ok",2625,0.012214931693431184], +[91,"ok",717,0.003423576988105858], +[92,"ok",465,0.002206632805814068], +[93,"ok",717,0.003426718100240811], +[94,"ok",717,0.0034263272215892533], +[95,"ok",393,0.0018795892303809514], +[96,"ok",537,0.002541611158854484], +[97,"ok",789,0.003760732389340215], +[98,"ok",789,0.0037665874207004064], +[99,"ok",465,0.002223348941628955], +[100,"ok",789,0.0037648290246684035], +[101,"ok",465,0.0022223331934660413], +[102,"ok",2661,0.012370756965670525], +[103,"ok",717,0.003424323075168101], +[104,"ok",789,0.003757325818553647], +[105,"ok",2625,0.01227922679418486], +[106,"ok",465,0.0022221326919952817], +[107,"ok",717,0.003415443695539866], +[108,"ok",465,0.0022233135293269752], +[109,"ok",717,0.003417289026557635], +[110,"ok",717,0.003426413457340904], +[111,"ok",393,0.0018621482097712083], +[112,"ok",789,0.003765836335153316], +[113,"ok",465,0.002223040625107864], +[114,"ok",465,0.002208555747381935], +[115,"ok",717,0.0034261428912812364], +[116,"ok",465,0.002208027576101556], +[117,"ok",717,0.003425503043955891], +[118,"ok",717,0.003424683653265037], +[119,"ok",393,0.001878739900652959], +[120,"ok",465,0.002221989788944667], +[121,"ok",717,0.003414882386711004], +[122,"ok",717,0.003424452149450363], +[123,"ok",393,0.0018631848983943766], +[124,"ok",717,0.0034261720794029338], +[125,"ok",393,0.001864211226460244], +[126,"ok",393,0.0018794290181581297], +[127,"ok",645,0.0030753684661911085], +[128,"ok",843,0.004014283166690224], +[129,"ok",537,0.002565927576647142], +[130,"ok",537,0.0025443731504484757], +[131,"ok",789,0.003765056370325037], +[132,"ok",537,0.0025440063045494843], +[133,"ok",789,0.0037634474912373035], +[134,"ok",789,0.003757232028281099], +[135,"ok",465,0.0022217896802039783], +[136,"ok",537,0.0025652865536443525], +[137,"ok",789,0.0037644195954408817], +[138,"ok",789,0.003763869043717338], +[139,"ok",465,0.002208249179342425], +[140,"ok",789,0.0037648501693844923], +[141,"ok",465,0.002208940593761144], +[142,"ok",465,0.002223099993621857], +[143,"ok",717,0.0034269207104207777], +[144,"ok",537,0.002539463245946172], +[145,"ok",789,0.003764752352612366], +[146,"ok",789,0.003760218087354439], +[147,"ok",465,0.002223113182097724], +[148,"ok",789,0.0037584656633262155], +[149,"ok",465,0.002222097649463184], +[150,"ok",2661,0.01240108641606724], +[151,"ok",717,0.0034120312945113414], +[152,"ok",789,0.0037621755288573255], +[153,"ok",2643,0.012297488830784907], +[154,"ok",465,0.002222392524199368], +[155,"ok",717,0.0034261576663773825], +[156,"ok",465,0.0022235736381372435], +[157,"ok",717,0.003428014650053657], +[158,"ok",717,0.0034148854040230714], +[159,"ok",393,0.0018624870441704133], +[160,"ok",537,0.0025663088703984926], +[161,"ok",789,0.0037661929803365912], +[162,"ok",789,0.0037657240811109216], +[163,"ok",465,0.0022071580734572267], +[164,"ok",789,0.0037627245327444543], +[165,"ok",2625,0.012216943466083985], +[166,"ok",465,0.0022219546934954537], +[167,"ok",717,0.0034248896747203768], +[168,"ok",789,0.003764374765562073], +[169,"ok",465,0.0022220844157606057], +[170,"ok",2643,0.012285267340406414], +[171,"ok",717,0.0034244265674417407], +[172,"ok",465,0.002206812320585782], +[173,"ok",717,0.003426742623916234], +[174,"ok",717,0.0034266904665959936], +[175,"ok",393,0.0018796488531645505], +[176,"ok",789,0.0037650075535587413], +[177,"ok",465,0.0022085029104078058], +[178,"ok",465,0.0022228753928767437], +[179,"ok",717,0.003425981171529646], +[180,"ok",465,0.002222025158880869], +[181,"ok",717,0.0034243453258860357], +[182,"ok",717,0.0034138464507806328], +[183,"ok",393,0.0018633223669452523], +[184,"ok",465,0.002207465812631148], +[185,"ok",717,0.003424961061616993], +[186,"ok",717,0.0034242905907879147], +[187,"ok",393,0.001878710023079766], +[188,"ok",717,0.0034261810401122195], +[189,"ok",393,0.0018795687576826368], +[190,"ok",393,0.0018638364626519242], +[191,"ok",645,0.0030759693042770597], +[192,"ok",537,0.0025650555594373676], +[193,"ok",789,0.0037640365689141637], +[194,"ok",789,0.0037626981414738414], +[195,"ok",2625,0.012216034889394432], +[196,"ok",789,0.0037650694614743126], +[197,"ok",465,0.0022066149402082957], +[198,"ok",465,0.0022230648632224903], +[199,"ok",717,0.0034263820222984465], +[200,"ok",789,0.0037662933001110788], +[201,"ok",465,0.0022230294600094624], +[202,"ok",465,0.002206795626315705], +[203,"ok",717,0.00342646336349689], +[204,"ok",2643,0.012282260788645749], +[205,"ok",717,0.003423576988105858], +[206,"ok",717,0.0034249809883731275], +[207,"ok",393,0.0018785908621887224], +[208,"ok",789,0.0037633723194097635], +[209,"ok",465,0.002207268315726762], +[210,"ok",465,0.0022219547508964266], +[211,"ok",717,0.003423982578229123], +[212,"ok",465,0.002222970152749359], +[213,"ok",717,0.0034258726874870082], +[214,"ok",717,0.0034143836793527056], +[215,"ok",393,0.0018637531695990248], +[216,"ok",465,0.002208140021954741], +[217,"ok",717,0.003425576197186697], +[218,"ok",717,0.0034260725434350214], +[219,"ok",393,0.0018793694093197086], +[220,"ok",717,0.0034244366105987134], +[221,"ok",393,0.0018786504598460874], +[222,"ok",393,0.0018629335054505813], +[223,"ok",645,0.003074406505621907], +[224,"ok",789,0.00376431937526972], +[225,"ok",465,0.002222025158880869], +[226,"ok",465,0.002208190602508597], +[227,"ok",717,0.003425248487957499], +[228,"ok",465,0.0022088819802827393], +[229,"ok",717,0.0034261428912812364], +[230,"ok",717,0.0034268292931812216], +[231,"ok",393,0.0018794589187027253], +[232,"ok",465,0.002222839995730308], +[233,"ok",717,0.0034167083985268687], +[234,"ok",717,0.0034259174238635], +[235,"ok",393,0.0018642653255360184], +[236,"ok",717,0.003424452149450363], +[237,"ok",393,0.0018633762748511693], +[238,"ok",393,0.0018785704113281618], +[239,"ok",645,0.003074131239828415], +[240,"ok",2643,0.012294201481886813], +[241,"ok",717,0.003424323075168101], +[242,"ok",717,0.00342606628989589], +[243,"ok",393,0.0018788607640279342], +[244,"ok",717,0.0034279231744737677], +[245,"ok",393,0.001879859419482044], +[246,"ok",393,0.001862897546139053], +[247,"ok",645,0.0030766715739654615], +[248,"ok",717,0.003426413457340904], +[249,"ok",393,0.0018625057993549299], +[250,"ok",393,0.0018796897278155478], +[251,"ok",645,0.003076575911208079], +[252,"ok",393,0.0018788308825950506], +[253,"ok",645,0.0030751416932617848], +[254,"ok",645,0.0030738833182074043], +[255,"ok",2625,0.012285066548162136] +] diff --git a/research/pr4633-quotient-contract-audit/evidence/bit-scan.log b/research/pr4633-quotient-contract-audit/evidence/bit-scan.log new file mode 100644 index 0000000000..6bec6fc3c9 --- /dev/null +++ b/research/pr4633-quotient-contract-audit/evidence/bit-scan.log @@ -0,0 +1,16 @@ +16 / 255 valid 16 best (15, 'ok', 2643, 0.012297302161748569) seconds 2.5 +32 / 255 valid 32 best (15, 'ok', 2643, 0.012297302161748569) seconds 4.8 +48 / 255 valid 48 best (15, 'ok', 2643, 0.012297302161748569) seconds 6.9 +64 / 255 valid 64 best (15, 'ok', 2643, 0.012297302161748569) seconds 8.9 +80 / 255 valid 80 best (15, 'ok', 2643, 0.012297302161748569) seconds 11.5 +96 / 255 valid 96 best (15, 'ok', 2643, 0.012297302161748569) seconds 13.7 +112 / 255 valid 112 best (102, 'ok', 2661, 0.012370756965670525) seconds 16.0 +128 / 255 valid 128 best (102, 'ok', 2661, 0.012370756965670525) seconds 18.4 +144 / 255 valid 144 best (102, 'ok', 2661, 0.012370756965670525) seconds 22.4 +160 / 255 valid 160 best (150, 'ok', 2661, 0.01240108641606724) seconds 25.5 +176 / 255 valid 176 best (150, 'ok', 2661, 0.01240108641606724) seconds 27.9 +192 / 255 valid 192 best (150, 'ok', 2661, 0.01240108641606724) seconds 30.6 +208 / 255 valid 208 best (150, 'ok', 2661, 0.01240108641606724) seconds 32.9 +224 / 255 valid 224 best (150, 'ok', 2661, 0.01240108641606724) seconds 35.0 +240 / 255 valid 240 best (150, 'ok', 2661, 0.01240108641606724) seconds 38.8 +255 / 255 valid 255 best (150, 'ok', 2661, 0.01240108641606724) seconds 41.1 diff --git a/research/pr4633-quotient-contract-audit/evidence/bit-scan.receipt.json b/research/pr4633-quotient-contract-audit/evidence/bit-scan.receipt.json new file mode 100644 index 0000000000..8a4fad794a --- /dev/null +++ b/research/pr4633-quotient-contract-audit/evidence/bit-scan.receipt.json @@ -0,0 +1,15 @@ +{ + "command": [ + "python3.12", + "-B", + "/home/cinna/int-bounds/pr4633-audit-evidence-20261022/scan_serial.py", + "bit" + ], + "cwd": "/home/cinna/int-bounds/audit-pr4633-20261022", + "exit_code": 0, + "elapsed_seconds": 41.33, + "peak_sampled_group_rss_bytes": 31424512, + "stop_reason": null, + "memory_limit_bytes": 1073741824, + "timeout_seconds": 600 +} diff --git a/research/pr4633-quotient-contract-audit/evidence/complex-native-result.json b/research/pr4633-quotient-contract-audit/evidence/complex-native-result.json new file mode 100644 index 0000000000..09c80371b9 --- /dev/null +++ b/research/pr4633-quotient-contract-audit/evidence/complex-native-result.json @@ -0,0 +1,6 @@ +{ + "distinct_edges": 2101, + "orientations": 2, + "failures": [], + "scope": "All distinct synthesized climb and helper-boundary transports; exact rank and absolute-phase recipe decoding. Does not check the outer main-port contract." +} diff --git a/research/pr4633-quotient-contract-audit/evidence/complex-native.log b/research/pr4633-quotient-contract-audit/evidence/complex-native.log new file mode 100644 index 0000000000..c11933aa5f --- /dev/null +++ b/research/pr4633-quotient-contract-audit/evidence/complex-native.log @@ -0,0 +1,22 @@ +edges 100 / 2101 rank failures 0 +edges 200 / 2101 rank failures 0 +edges 300 / 2101 rank failures 0 +edges 400 / 2101 rank failures 0 +edges 500 / 2101 rank failures 0 +edges 600 / 2101 rank failures 0 +edges 700 / 2101 rank failures 0 +edges 800 / 2101 rank failures 0 +edges 900 / 2101 rank failures 0 +edges 1000 / 2101 rank failures 0 +edges 1100 / 2101 rank failures 0 +edges 1200 / 2101 rank failures 0 +edges 1300 / 2101 rank failures 0 +edges 1400 / 2101 rank failures 0 +edges 1500 / 2101 rank failures 0 +edges 1600 / 2101 rank failures 0 +edges 1700 / 2101 rank failures 0 +edges 1800 / 2101 rank failures 0 +edges 1900 / 2101 rank failures 0 +edges 2000 / 2101 rank failures 0 +edges 2100 / 2101 rank failures 0 +{"distinct_edges": 2101, "orientations": 2, "failures": [], "scope": "All distinct synthesized climb and helper-boundary transports; exact rank and absolute-phase recipe decoding. Does not check the outer main-port contract."} diff --git a/research/pr4633-quotient-contract-audit/evidence/complex-native.receipt.json b/research/pr4633-quotient-contract-audit/evidence/complex-native.receipt.json new file mode 100644 index 0000000000..34ec1d60f2 --- /dev/null +++ b/research/pr4633-quotient-contract-audit/evidence/complex-native.receipt.json @@ -0,0 +1,14 @@ +{ + "command": [ + "python3.12", + "-B", + "/home/cinna/int-bounds/pr4633-audit-evidence-20261022/complex_native.py" + ], + "cwd": "/home/cinna/int-bounds/audit-pr4633-20261022", + "exit_code": 0, + "elapsed_seconds": 220.582, + "peak_sampled_group_rss_bytes": 49012736, + "stop_reason": null, + "memory_limit_bytes": 1073741824, + "timeout_seconds": 1200 +} diff --git a/research/pr4633-quotient-contract-audit/evidence/complex-registered.log b/research/pr4633-quotient-contract-audit/evidence/complex-registered.log new file mode 100644 index 0000000000..c058e6b1f0 --- /dev/null +++ b/research/pr4633-quotient-contract-audit/evidence/complex-registered.log @@ -0,0 +1,24 @@ +CHECK quotients the frontier word by phi, asserts 700 frames, peak vector 255, max frame dim 8, main widths {7:112,8:112}, main rank mass 1680; writes QUOTIENT-WORD.json.gz and QUOTIENT-PROGRAMS.json.gz +repadded 213 helpers ; full-ended 213 ; ambient dim 9 +frames 1224 -> 811 ; max vector 256 ; max frame dim 9 +main widths {7: 168, 8: 56} (was {8: 224}) +main rank mass 1624 (was 1792) +helper rank mass 3406 (was 3471) +wrote QUOTIENT-WORD.json.gz and QUOTIENT-PROGRAMS.json.gz +CHECK loads only the artifacts; asserts every frame independent with vectors <512, synthesize accepts both directions, 632/632 literal-replay endpoints exact both directions, owned C cleared, forward and backward paid profiles identical, deficit 1744, emitted kappa reproduces 0.00302015 within 2e-7, quotient kappa strictly larger (0.012094865531), both screen constraints hold +artifact: 811 frames, 632 roles, peak vector 256, ambient dim 9 +frame 1 is the full ambient; cold full-ended helpers 213 (contract 213) +embedded_cache_roles: accepted, embedded caches [224, 225, 226] +main widths {7: 168, 8: 56} ; main rank mass 1624 +helper widths {3: 2, 6: 7, 7: 47, 8: 139, 9: 213} ; helper rank mass 3406 +forward: 632/632 endpoints exact, C cleared, paid {1: 2177, 2: 424, 3: 389, 4: 147, 5: 50, 8: 8} (mass 5094) +backward: 632/632 endpoints exact, C cleared, paid {1: 2177, 2: 424, 3: 389, 4: 147, 5: 50, 8: 8} (mass 5094) +distinct main output charts: 57 (PR4470 has 113; see README limitation) + +emitted : surplus 752 (thin 1680) kappa 0.003020165977 +quotient: surplus 3776 (thin 1680) kappa 0.015637149091 +quotient constraints: alpha slack 1.110e-16 ; gamma slack 0.0142 + +gain +0.012616983 +417.8% +wrote RESULT.json +PASS_REGISTERED_RESEARCH_PACKAGE research/complex-ambient-quotient outcome=completed diff --git a/research/pr4633-quotient-contract-audit/evidence/complex-registered.receipt.json b/research/pr4633-quotient-contract-audit/evidence/complex-registered.receipt.json new file mode 100644 index 0000000000..2f415d8899 --- /dev/null +++ b/research/pr4633-quotient-contract-audit/evidence/complex-registered.receipt.json @@ -0,0 +1,16 @@ +{ + "command": [ + "python3.12", + "-B", + "scripts/research_package.py", + "--package", + "research/complex-ambient-quotient" + ], + "cwd": "/home/cinna/int-bounds/audit-pr4633-20261022", + "exit_code": 0, + "elapsed_seconds": 3.918, + "peak_sampled_group_rss_bytes": 37085184, + "stop_reason": null, + "memory_limit_bytes": 1073741824, + "timeout_seconds": 1200 +} diff --git a/research/pr4633-quotient-contract-audit/evidence/complex-scan-results.json b/research/pr4633-quotient-contract-audit/evidence/complex-scan-results.json new file mode 100644 index 0000000000..ab386f57c6 --- /dev/null +++ b/research/pr4633-quotient-contract-audit/evidence/complex-scan-results.json @@ -0,0 +1,513 @@ +[ +[1,"ValueError",0,0,0.0], +[2,"ValueError",0,0,0.0], +[3,"ValueError",0,0,0.0], +[4,"ValueError",0,0,0.0], +[5,"ValueError",0,0,0.0], +[6,"ValueError",0,0,0.0], +[7,"ok",1624,3542,0.014382294211680746], +[8,"ValueError",0,0,0.0], +[9,"ValueError",0,0,0.0], +[10,"ValueError",0,0,0.0], +[11,"ValueError",0,0,0.0], +[12,"ValueError",0,0,0.0], +[13,"ValueError",0,0,0.0], +[14,"ValueError",0,0,0.0], +[15,"ValueError",0,0,0.0], +[16,"ValueError",0,0,0.0], +[17,"ValueError",0,0,0.0], +[18,"ValueError",0,0,0.0], +[19,"ValueError",0,0,0.0], +[20,"ValueError",0,0,0.0], +[21,"ValueError",0,0,0.0], +[22,"ValueError",0,0,0.0], +[23,"ValueError",0,0,0.0], +[24,"ValueError",0,0,0.0], +[25,"ok",1624,3632,0.014744324537245224], +[26,"ValueError",0,0,0.0], +[27,"ValueError",0,0,0.0], +[28,"ValueError",0,0,0.0], +[29,"ValueError",0,0,0.0], +[30,"ValueError",0,0,0.0], +[31,"ValueError",0,0,0.0], +[32,"ValueError",0,0,0.0], +[33,"ValueError",0,0,0.0], +[34,"ValueError",0,0,0.0], +[35,"ValueError",0,0,0.0], +[36,"ValueError",0,0,0.0], +[37,"ValueError",0,0,0.0], +[38,"ValueError",0,0,0.0], +[39,"ValueError",0,0,0.0], +[40,"ValueError",0,0,0.0], +[41,"ValueError",0,0,0.0], +[42,"ok",1624,3524,0.014299697716384894], +[43,"ValueError",0,0,0.0], +[44,"ValueError",0,0,0.0], +[45,"ValueError",0,0,0.0], +[46,"ValueError",0,0,0.0], +[47,"ValueError",0,0,0.0], +[48,"ValueError",0,0,0.0], +[49,"ValueError",0,0,0.0], +[50,"ValueError",0,0,0.0], +[51,"ValueError",0,0,0.0], +[52,"ok",1624,3704,0.015046090949901336], +[53,"ValueError",0,0,0.0], +[54,"ValueError",0,0,0.0], +[55,"ValueError",0,0,0.0], +[56,"ValueError",0,0,0.0], +[57,"ValueError",0,0,0.0], +[58,"ValueError",0,0,0.0], +[59,"ValueError",0,0,0.0], +[60,"ValueError",0,0,0.0], +[61,"ValueError",0,0,0.0], +[62,"ValueError",0,0,0.0], +[63,"ValueError",0,0,0.0], +[64,"ValueError",0,0,0.0], +[65,"ValueError",0,0,0.0], +[66,"ValueError",0,0,0.0], +[67,"ValueError",0,0,0.0], +[68,"ValueError",0,0,0.0], +[69,"ValueError",0,0,0.0], +[70,"ValueError",0,0,0.0], +[71,"ValueError",0,0,0.0], +[72,"ValueError",0,0,0.0], +[73,"ValueError",0,0,0.0], +[74,"ValueError",0,0,0.0], +[75,"ValueError",0,0,0.0], +[76,"ok",1624,3524,0.014321081837182892], +[77,"ValueError",0,0,0.0], +[78,"ValueError",0,0,0.0], +[79,"ValueError",0,0,0.0], +[80,"ValueError",0,0,0.0], +[81,"ValueError",0,0,0.0], +[82,"ok",1624,3470,0.01408024494460719], +[83,"ValueError",0,0,0.0], +[84,"ValueError",0,0,0.0], +[85,"ValueError",0,0,0.0], +[86,"ValueError",0,0,0.0], +[87,"ValueError",0,0,0.0], +[88,"ValueError",0,0,0.0], +[89,"ValueError",0,0,0.0], +[90,"ValueError",0,0,0.0], +[91,"ValueError",0,0,0.0], +[92,"ValueError",0,0,0.0], +[93,"ValueError",0,0,0.0], +[94,"ValueError",0,0,0.0], +[95,"ValueError",0,0,0.0], +[96,"ValueError",0,0,0.0], +[97,"ok",1624,3578,0.014542419139612683], +[98,"ValueError",0,0,0.0], +[99,"ValueError",0,0,0.0], +[100,"ValueError",0,0,0.0], +[101,"ValueError",0,0,0.0], +[102,"ValueError",0,0,0.0], +[103,"ValueError",0,0,0.0], +[104,"ValueError",0,0,0.0], +[105,"ValueError",0,0,0.0], +[106,"ValueError",0,0,0.0], +[107,"ValueError",0,0,0.0], +[108,"ValueError",0,0,0.0], +[109,"ValueError",0,0,0.0], +[110,"ValueError",0,0,0.0], +[111,"ValueError",0,0,0.0], +[112,"ValueError",0,0,0.0], +[113,"ValueError",0,0,0.0], +[114,"ValueError",0,0,0.0], +[115,"ValueError",0,0,0.0], +[116,"ValueError",0,0,0.0], +[117,"ValueError",0,0,0.0], +[118,"ValueError",0,0,0.0], +[119,"ValueError",0,0,0.0], +[120,"ValueError",0,0,0.0], +[121,"ValueError",0,0,0.0], +[122,"ValueError",0,0,0.0], +[123,"ValueError",0,0,0.0], +[124,"ValueError",0,0,0.0], +[125,"ValueError",0,0,0.0], +[126,"ValueError",0,0,0.0], +[127,"ok",1624,3614,0.014678468211445417], +[128,"ValueError",0,0,0.0], +[129,"ValueError",0,0,0.0], +[130,"ValueError",0,0,0.0], +[131,"ValueError",0,0,0.0], +[132,"ValueError",0,0,0.0], +[133,"ValueError",0,0,0.0], +[134,"ValueError",0,0,0.0], +[135,"ok",1624,3776,0.015591168238669406], +[136,"ValueError",0,0,0.0], +[137,"ValueError",0,0,0.0], +[138,"ValueError",0,0,0.0], +[139,"ValueError",0,0,0.0], +[140,"ValueError",0,0,0.0], +[141,"ValueError",0,0,0.0], +[142,"ValueError",0,0,0.0], +[143,"ValueError",0,0,0.0], +[144,"ValueError",0,0,0.0], +[145,"ValueError",0,0,0.0], +[146,"ValueError",0,0,0.0], +[147,"ValueError",0,0,0.0], +[148,"ValueError",0,0,0.0], +[149,"ValueError",0,0,0.0], +[150,"ValueError",0,0,0.0], +[151,"ValueError",0,0,0.0], +[152,"ValueError",0,0,0.0], +[153,"ok",1624,3776,0.015637149090881482], +[154,"ValueError",0,0,0.0], +[155,"ValueError",0,0,0.0], +[156,"ValueError",0,0,0.0], +[157,"ValueError",0,0,0.0], +[158,"ValueError",0,0,0.0], +[159,"ValueError",0,0,0.0], +[160,"ValueError",0,0,0.0], +[161,"ValueError",0,0,0.0], +[162,"ValueError",0,0,0.0], +[163,"ValueError",0,0,0.0], +[164,"ValueError",0,0,0.0], +[165,"ValueError",0,0,0.0], +[166,"ValueError",0,0,0.0], +[167,"ValueError",0,0,0.0], +[168,"ValueError",0,0,0.0], +[169,"ValueError",0,0,0.0], +[170,"ok",1624,3776,0.015589945362123603], +[171,"ValueError",0,0,0.0], +[172,"ValueError",0,0,0.0], +[173,"ValueError",0,0,0.0], +[174,"ValueError",0,0,0.0], +[175,"ValueError",0,0,0.0], +[176,"ValueError",0,0,0.0], +[177,"ValueError",0,0,0.0], +[178,"ValueError",0,0,0.0], +[179,"ValueError",0,0,0.0], +[180,"ok",1624,3776,0.015624056800135509], +[181,"ValueError",0,0,0.0], +[182,"ValueError",0,0,0.0], +[183,"ValueError",0,0,0.0], +[184,"ValueError",0,0,0.0], +[185,"ValueError",0,0,0.0], +[186,"ValueError",0,0,0.0], +[187,"ValueError",0,0,0.0], +[188,"ValueError",0,0,0.0], +[189,"ValueError",0,0,0.0], +[190,"ValueError",0,0,0.0], +[191,"ValueError",0,0,0.0], +[192,"ValueError",0,0,0.0], +[193,"ValueError",0,0,0.0], +[194,"ValueError",0,0,0.0], +[195,"ValueError",0,0,0.0], +[196,"ValueError",0,0,0.0], +[197,"ValueError",0,0,0.0], +[198,"ValueError",0,0,0.0], +[199,"ValueError",0,0,0.0], +[200,"ValueError",0,0,0.0], +[201,"ValueError",0,0,0.0], +[202,"ValueError",0,0,0.0], +[203,"ValueError",0,0,0.0], +[204,"ok",1624,3776,0.015611747874687052], +[205,"ValueError",0,0,0.0], +[206,"ValueError",0,0,0.0], +[207,"ValueError",0,0,0.0], +[208,"ValueError",0,0,0.0], +[209,"ValueError",0,0,0.0], +[210,"ok",1624,3776,0.015612178964904353], +[211,"ValueError",0,0,0.0], +[212,"ValueError",0,0,0.0], +[213,"ValueError",0,0,0.0], +[214,"ValueError",0,0,0.0], +[215,"ValueError",0,0,0.0], +[216,"ValueError",0,0,0.0], +[217,"ValueError",0,0,0.0], +[218,"ValueError",0,0,0.0], +[219,"ValueError",0,0,0.0], +[220,"ValueError",0,0,0.0], +[221,"ValueError",0,0,0.0], +[222,"ValueError",0,0,0.0], +[223,"ValueError",0,0,0.0], +[224,"ValueError",0,0,0.0], +[225,"ok",1624,3776,0.015610521716064085], +[226,"ValueError",0,0,0.0], +[227,"ValueError",0,0,0.0], +[228,"ValueError",0,0,0.0], +[229,"ValueError",0,0,0.0], +[230,"ValueError",0,0,0.0], +[231,"ValueError",0,0,0.0], +[232,"ValueError",0,0,0.0], +[233,"ValueError",0,0,0.0], +[234,"ValueError",0,0,0.0], +[235,"ValueError",0,0,0.0], +[236,"ValueError",0,0,0.0], +[237,"ValueError",0,0,0.0], +[238,"ValueError",0,0,0.0], +[239,"ValueError",0,0,0.0], +[240,"ValueError",0,0,0.0], +[241,"ValueError",0,0,0.0], +[242,"ValueError",0,0,0.0], +[243,"ValueError",0,0,0.0], +[244,"ValueError",0,0,0.0], +[245,"ValueError",0,0,0.0], +[246,"ValueError",0,0,0.0], +[247,"ValueError",0,0,0.0], +[248,"ValueError",0,0,0.0], +[249,"ValueError",0,0,0.0], +[250,"ValueError",0,0,0.0], +[251,"ValueError",0,0,0.0], +[252,"ValueError",0,0,0.0], +[253,"ValueError",0,0,0.0], +[254,"ValueError",0,0,0.0], +[255,"ok",1624,3776,0.015610952735385208], +[256,"ValueError",0,0,0.0], +[257,"ValueError",0,0,0.0], +[258,"ValueError",0,0,0.0], +[259,"ValueError",0,0,0.0], +[260,"ValueError",0,0,0.0], +[261,"ValueError",0,0,0.0], +[262,"ValueError",0,0,0.0], +[263,"ok",1624,3776,0.015596230212408134], +[264,"ValueError",0,0,0.0], +[265,"ValueError",0,0,0.0], +[266,"ValueError",0,0,0.0], +[267,"ValueError",0,0,0.0], +[268,"ValueError",0,0,0.0], +[269,"ValueError",0,0,0.0], +[270,"ValueError",0,0,0.0], +[271,"ValueError",0,0,0.0], +[272,"ValueError",0,0,0.0], +[273,"ValueError",0,0,0.0], +[274,"ValueError",0,0,0.0], +[275,"ValueError",0,0,0.0], +[276,"ValueError",0,0,0.0], +[277,"ValueError",0,0,0.0], +[278,"ValueError",0,0,0.0], +[279,"ValueError",0,0,0.0], +[280,"ValueError",0,0,0.0], +[281,"ok",1624,3776,0.01561473398635965], +[282,"ValueError",0,0,0.0], +[283,"ValueError",0,0,0.0], +[284,"ValueError",0,0,0.0], +[285,"ValueError",0,0,0.0], +[286,"ValueError",0,0,0.0], +[287,"ValueError",0,0,0.0], +[288,"ValueError",0,0,0.0], +[289,"ValueError",0,0,0.0], +[290,"ValueError",0,0,0.0], +[291,"ValueError",0,0,0.0], +[292,"ValueError",0,0,0.0], +[293,"ValueError",0,0,0.0], +[294,"ValueError",0,0,0.0], +[295,"ValueError",0,0,0.0], +[296,"ValueError",0,0,0.0], +[297,"ValueError",0,0,0.0], +[298,"ok",1624,3776,0.015596230212408134], +[299,"ValueError",0,0,0.0], +[300,"ValueError",0,0,0.0], +[301,"ValueError",0,0,0.0], +[302,"ValueError",0,0,0.0], +[303,"ValueError",0,0,0.0], +[304,"ValueError",0,0,0.0], +[305,"ValueError",0,0,0.0], +[306,"ValueError",0,0,0.0], +[307,"ValueError",0,0,0.0], +[308,"ok",1624,3776,0.01561473398635965], +[309,"ValueError",0,0,0.0], +[310,"ValueError",0,0,0.0], +[311,"ValueError",0,0,0.0], +[312,"ValueError",0,0,0.0], +[313,"ValueError",0,0,0.0], +[314,"ValueError",0,0,0.0], +[315,"ValueError",0,0,0.0], +[316,"ValueError",0,0,0.0], +[317,"ValueError",0,0,0.0], +[318,"ValueError",0,0,0.0], +[319,"ValueError",0,0,0.0], +[320,"ValueError",0,0,0.0], +[321,"ValueError",0,0,0.0], +[322,"ValueError",0,0,0.0], +[323,"ValueError",0,0,0.0], +[324,"ValueError",0,0,0.0], +[325,"ValueError",0,0,0.0], +[326,"ValueError",0,0,0.0], +[327,"ValueError",0,0,0.0], +[328,"ValueError",0,0,0.0], +[329,"ValueError",0,0,0.0], +[330,"ValueError",0,0,0.0], +[331,"ValueError",0,0,0.0], +[332,"ok",1624,3776,0.015600763239571545], +[333,"ValueError",0,0,0.0], +[334,"ValueError",0,0,0.0], +[335,"ValueError",0,0,0.0], +[336,"ValueError",0,0,0.0], +[337,"ValueError",0,0,0.0], +[338,"ok",1624,3776,0.015626863550408043], +[339,"ValueError",0,0,0.0], +[340,"ValueError",0,0,0.0], +[341,"ValueError",0,0,0.0], +[342,"ValueError",0,0,0.0], +[343,"ValueError",0,0,0.0], +[344,"ValueError",0,0,0.0], +[345,"ValueError",0,0,0.0], +[346,"ValueError",0,0,0.0], +[347,"ValueError",0,0,0.0], +[348,"ValueError",0,0,0.0], +[349,"ValueError",0,0,0.0], +[350,"ValueError",0,0,0.0], +[351,"ValueError",0,0,0.0], +[352,"ValueError",0,0,0.0], +[353,"ok",1624,3776,0.015607385878138313], +[354,"ValueError",0,0,0.0], +[355,"ValueError",0,0,0.0], +[356,"ValueError",0,0,0.0], +[357,"ValueError",0,0,0.0], +[358,"ValueError",0,0,0.0], +[359,"ValueError",0,0,0.0], +[360,"ValueError",0,0,0.0], +[361,"ValueError",0,0,0.0], +[362,"ValueError",0,0,0.0], +[363,"ValueError",0,0,0.0], +[364,"ValueError",0,0,0.0], +[365,"ValueError",0,0,0.0], +[366,"ValueError",0,0,0.0], +[367,"ValueError",0,0,0.0], +[368,"ValueError",0,0,0.0], +[369,"ValueError",0,0,0.0], +[370,"ValueError",0,0,0.0], +[371,"ValueError",0,0,0.0], +[372,"ValueError",0,0,0.0], +[373,"ValueError",0,0,0.0], +[374,"ValueError",0,0,0.0], +[375,"ValueError",0,0,0.0], +[376,"ValueError",0,0,0.0], +[377,"ValueError",0,0,0.0], +[378,"ValueError",0,0,0.0], +[379,"ValueError",0,0,0.0], +[380,"ValueError",0,0,0.0], +[381,"ValueError",0,0,0.0], +[382,"ValueError",0,0,0.0], +[383,"ok",1624,3776,0.01562165042577329], +[384,"ValueError",0,0,0.0], +[385,"ValueError",0,0,0.0], +[386,"ValueError",0,0,0.0], +[387,"ValueError",0,0,0.0], +[388,"ValueError",0,0,0.0], +[389,"ValueError",0,0,0.0], +[390,"ValueError",0,0,0.0], +[391,"ok",1616,3740,0.015172361885637585], +[392,"ValueError",0,0,0.0], +[393,"ValueError",0,0,0.0], +[394,"ValueError",0,0,0.0], +[395,"ValueError",0,0,0.0], +[396,"ValueError",0,0,0.0], +[397,"ValueError",0,0,0.0], +[398,"ValueError",0,0,0.0], +[399,"ValueError",0,0,0.0], +[400,"ValueError",0,0,0.0], +[401,"ValueError",0,0,0.0], +[402,"ValueError",0,0,0.0], +[403,"ValueError",0,0,0.0], +[404,"ValueError",0,0,0.0], +[405,"ValueError",0,0,0.0], +[406,"ValueError",0,0,0.0], +[407,"ValueError",0,0,0.0], +[408,"ValueError",0,0,0.0], +[409,"ok",1616,3704,0.01502372317946793], +[410,"ValueError",0,0,0.0], +[411,"ValueError",0,0,0.0], +[412,"ValueError",0,0,0.0], +[413,"ValueError",0,0,0.0], +[414,"ValueError",0,0,0.0], +[415,"ValueError",0,0,0.0], +[416,"ValueError",0,0,0.0], +[417,"ValueError",0,0,0.0], +[418,"ValueError",0,0,0.0], +[419,"ValueError",0,0,0.0], +[420,"ValueError",0,0,0.0], +[421,"ValueError",0,0,0.0], +[422,"ValueError",0,0,0.0], +[423,"ValueError",0,0,0.0], +[424,"ValueError",0,0,0.0], +[425,"ValueError",0,0,0.0], +[426,"ok",1616,3722,0.01510193522505737], +[427,"ValueError",0,0,0.0], +[428,"ValueError",0,0,0.0], +[429,"ValueError",0,0,0.0], +[430,"ValueError",0,0,0.0], +[431,"ValueError",0,0,0.0], +[432,"ValueError",0,0,0.0], +[433,"ValueError",0,0,0.0], +[434,"ValueError",0,0,0.0], +[435,"ValueError",0,0,0.0], +[436,"ok",1616,3632,0.014725025280717452], +[437,"ValueError",0,0,0.0], +[438,"ValueError",0,0,0.0], +[439,"ValueError",0,0,0.0], +[440,"ValueError",0,0,0.0], +[441,"ValueError",0,0,0.0], +[442,"ValueError",0,0,0.0], +[443,"ValueError",0,0,0.0], +[444,"ValueError",0,0,0.0], +[445,"ValueError",0,0,0.0], +[446,"ValueError",0,0,0.0], +[447,"ValueError",0,0,0.0], +[448,"ValueError",0,0,0.0], +[449,"ValueError",0,0,0.0], +[450,"ValueError",0,0,0.0], +[451,"ValueError",0,0,0.0], +[452,"ValueError",0,0,0.0], +[453,"ValueError",0,0,0.0], +[454,"ValueError",0,0,0.0], +[455,"ValueError",0,0,0.0], +[456,"ValueError",0,0,0.0], +[457,"ValueError",0,0,0.0], +[458,"ValueError",0,0,0.0], +[459,"ValueError",0,0,0.0], +[460,"ok",1616,3704,0.015013775675508155], +[461,"ValueError",0,0,0.0], +[462,"ValueError",0,0,0.0], +[463,"ValueError",0,0,0.0], +[464,"ValueError",0,0,0.0], +[465,"ValueError",0,0,0.0], +[466,"ok",1616,3632,0.014659483498134451], +[467,"ValueError",0,0,0.0], +[468,"ValueError",0,0,0.0], +[469,"ValueError",0,0,0.0], +[470,"ValueError",0,0,0.0], +[471,"ValueError",0,0,0.0], +[472,"ValueError",0,0,0.0], +[473,"ValueError",0,0,0.0], +[474,"ValueError",0,0,0.0], +[475,"ValueError",0,0,0.0], +[476,"ValueError",0,0,0.0], +[477,"ValueError",0,0,0.0], +[478,"ValueError",0,0,0.0], +[479,"ValueError",0,0,0.0], +[480,"ValueError",0,0,0.0], +[481,"ok",1616,3758,0.015241586790498307], +[482,"ValueError",0,0,0.0], +[483,"ValueError",0,0,0.0], +[484,"ValueError",0,0,0.0], +[485,"ValueError",0,0,0.0], +[486,"ValueError",0,0,0.0], +[487,"ValueError",0,0,0.0], +[488,"ValueError",0,0,0.0], +[489,"ValueError",0,0,0.0], +[490,"ValueError",0,0,0.0], +[491,"ValueError",0,0,0.0], +[492,"ValueError",0,0,0.0], +[493,"ValueError",0,0,0.0], +[494,"ValueError",0,0,0.0], +[495,"ValueError",0,0,0.0], +[496,"ValueError",0,0,0.0], +[497,"ValueError",0,0,0.0], +[498,"ValueError",0,0,0.0], +[499,"ValueError",0,0,0.0], +[500,"ValueError",0,0,0.0], +[501,"ValueError",0,0,0.0], +[502,"ValueError",0,0,0.0], +[503,"ValueError",0,0,0.0], +[504,"ValueError",0,0,0.0], +[505,"ValueError",0,0,0.0], +[506,"ValueError",0,0,0.0], +[507,"ValueError",0,0,0.0], +[508,"ValueError",0,0,0.0], +[509,"ValueError",0,0,0.0], +[510,"ValueError",0,0,0.0], +[511,"ok",1680,2768,0.01141774940734147] +] diff --git a/research/pr4633-quotient-contract-audit/evidence/complex-scan.log b/research/pr4633-quotient-contract-audit/evidence/complex-scan.log new file mode 100644 index 0000000000..d6e25077ec --- /dev/null +++ b/research/pr4633-quotient-contract-audit/evidence/complex-scan.log @@ -0,0 +1,32 @@ +16 / 511 valid 1 best (7, 'ok', 1624, 3542, 0.014382294211680746) seconds 16.3 +32 / 511 valid 2 best (25, 'ok', 1624, 3632, 0.014744324537245224) seconds 31.7 +48 / 511 valid 3 best (25, 'ok', 1624, 3632, 0.014744324537245224) seconds 47.7 +64 / 511 valid 4 best (52, 'ok', 1624, 3704, 0.015046090949901336) seconds 62.7 +80 / 511 valid 5 best (52, 'ok', 1624, 3704, 0.015046090949901336) seconds 77.7 +96 / 511 valid 6 best (52, 'ok', 1624, 3704, 0.015046090949901336) seconds 93.0 +112 / 511 valid 7 best (52, 'ok', 1624, 3704, 0.015046090949901336) seconds 106.8 +128 / 511 valid 8 best (52, 'ok', 1624, 3704, 0.015046090949901336) seconds 120.8 +144 / 511 valid 9 best (135, 'ok', 1624, 3776, 0.015591168238669406) seconds 134.8 +160 / 511 valid 10 best (153, 'ok', 1624, 3776, 0.015637149090881482) seconds 150.1 +176 / 511 valid 11 best (153, 'ok', 1624, 3776, 0.015637149090881482) seconds 166.4 +192 / 511 valid 12 best (153, 'ok', 1624, 3776, 0.015637149090881482) seconds 181.7 +208 / 511 valid 13 best (153, 'ok', 1624, 3776, 0.015637149090881482) seconds 195.6 +224 / 511 valid 14 best (153, 'ok', 1624, 3776, 0.015637149090881482) seconds 209.5 +240 / 511 valid 15 best (153, 'ok', 1624, 3776, 0.015637149090881482) seconds 225.1 +256 / 511 valid 16 best (153, 'ok', 1624, 3776, 0.015637149090881482) seconds 238.7 +272 / 511 valid 17 best (153, 'ok', 1624, 3776, 0.015637149090881482) seconds 253.3 +288 / 511 valid 18 best (153, 'ok', 1624, 3776, 0.015637149090881482) seconds 267.9 +304 / 511 valid 19 best (153, 'ok', 1624, 3776, 0.015637149090881482) seconds 282.6 +320 / 511 valid 20 best (153, 'ok', 1624, 3776, 0.015637149090881482) seconds 298.1 +336 / 511 valid 21 best (153, 'ok', 1624, 3776, 0.015637149090881482) seconds 311.7 +352 / 511 valid 22 best (153, 'ok', 1624, 3776, 0.015637149090881482) seconds 326.5 +368 / 511 valid 23 best (153, 'ok', 1624, 3776, 0.015637149090881482) seconds 345.1 +384 / 511 valid 24 best (153, 'ok', 1624, 3776, 0.015637149090881482) seconds 359.4 +400 / 511 valid 25 best (153, 'ok', 1624, 3776, 0.015637149090881482) seconds 375.4 +416 / 511 valid 26 best (153, 'ok', 1624, 3776, 0.015637149090881482) seconds 390.1 +432 / 511 valid 27 best (153, 'ok', 1624, 3776, 0.015637149090881482) seconds 403.8 +448 / 511 valid 28 best (153, 'ok', 1624, 3776, 0.015637149090881482) seconds 418.0 +464 / 511 valid 29 best (153, 'ok', 1624, 3776, 0.015637149090881482) seconds 432.7 +480 / 511 valid 30 best (153, 'ok', 1624, 3776, 0.015637149090881482) seconds 448.3 +496 / 511 valid 31 best (153, 'ok', 1624, 3776, 0.015637149090881482) seconds 463.6 +511 / 511 valid 32 best (153, 'ok', 1624, 3776, 0.015637149090881482) seconds 476.9 diff --git a/research/pr4633-quotient-contract-audit/evidence/complex-scan.receipt.json b/research/pr4633-quotient-contract-audit/evidence/complex-scan.receipt.json new file mode 100644 index 0000000000..b7970452e3 --- /dev/null +++ b/research/pr4633-quotient-contract-audit/evidence/complex-scan.receipt.json @@ -0,0 +1,15 @@ +{ + "command": [ + "python3.12", + "-B", + "/home/cinna/int-bounds/pr4633-audit-evidence-20261022/scan_serial.py", + "complex" + ], + "cwd": "/home/cinna/int-bounds/audit-pr4633-20261022", + "exit_code": 0, + "elapsed_seconds": 477.991, + "peak_sampled_group_rss_bytes": 130457600, + "stop_reason": null, + "memory_limit_bytes": 1073741824, + "timeout_seconds": 2400 +} diff --git a/research/pr4633-quotient-contract-audit/evidence/complex_native.py b/research/pr4633-quotient-contract-audit/evidence/complex_native.py new file mode 100644 index 0000000000..b3d1c09061 --- /dev/null +++ b/research/pr4633-quotient-contract-audit/evidence/complex_native.py @@ -0,0 +1,51 @@ +#!/usr/bin/env python3 +"""Audit every distinct quotient climb/helper edge with native Clifford lowering.""" +import gzip +import importlib.util +import json +from pathlib import Path +import sys + +root = Path.cwd() +sys.path.insert(0, str(root/'research/kappa-rebuild/complex')) + + +def load(path, name): + spec = importlib.util.spec_from_file_location(name, root/path) + module = importlib.util.module_from_spec(spec) + sys.modules[name] = module + spec.loader.exec_module(module) + return module + + +v = load('research/complex-ambient-quotient/verify.py', 'quotient_verify') +ce = load('research/t74-native-fast/vendor/native/new/code/borrow/vendor/clifford/clifford_exact.py', 'audit_ce') +p = load('research/kappa-function-composition/complex/prune_native.py', 'audit_lower') +n = load('research/kappa-rebuild/complex/rebuild_native.py', 'audit_native') +word = json.load(gzip.open('research/complex-ambient-quotient/QUOTIENT-WORD.json.gz')) +programs = json.load(gzip.open('research/complex-ambient-quotient/QUOTIENT-PROGRAMS.json.gz')) +blank = dict(word, precondition=[], A=[], B=[], cut=[], compensation=[], cleanup=[], tail=[]) +edges = set() +for direction in ('forward', 'backward'): + for event in v.F.synthesize(blank, programs[direction]): + if event[0] == 'climb': + edges.add((event[3], event[4], event[5])) +for role in range(224, 632): + a, b = word['start'][role], word['final'][role] + edges.add((a, b, len(word['frames'][b])-len(word['frames'][a]))) +frames = {i: ce.canonical_frame(9, basis) for i, basis in enumerate(word['frames'])} +failures = [] +for index, (a, b, expected) in enumerate(sorted(edges), 1): + op = frames[a].adjoint().then(frames[b]) + for direction in ('forward', 'backward'): + actual = p.conjugate(ce, op) if direction == 'backward' else op + receipt = n.lower_exact(p, ce, actual) + if receipt['rank'] != expected: + failures.append([a, b, direction, expected, receipt['rank']]) + if index % 100 == 0: + print('edges', index, '/', len(edges), 'rank failures', len(failures), flush=True) +result = dict(distinct_edges=len(edges), orientations=2, failures=failures, + scope='All distinct synthesized climb and helper-boundary transports; exact rank and absolute-phase recipe decoding. Does not check the outer main-port contract.') +Path(__file__).with_name('complex-native-result.json').write_text(json.dumps(result, indent=2)+'\n') +print(json.dumps(result), flush=True) +raise SystemExit(bool(failures)) diff --git a/research/pr4633-quotient-contract-audit/evidence/latest-bit-build.log b/research/pr4633-quotient-contract-audit/evidence/latest-bit-build.log new file mode 100644 index 0000000000..622332c2cc --- /dev/null +++ b/research/pr4633-quotient-contract-audit/evidence/latest-bit-build.log @@ -0,0 +1,5 @@ +kernel [150, 102, 255] frames 636 -> 65 roles 661 +frame dims {0: 1, 1: 13, 2: 8, 3: 25, 4: 16, 5: 1, 8: 1} +main widths {'4': 103, '7': 70, '8': 49} (mass 1294) +helper rank mass 3512 +wrote QUOTIENT-BIT-WORD.json.gz diff --git a/research/pr4633-quotient-contract-audit/evidence/latest-bit-build.receipt.json b/research/pr4633-quotient-contract-audit/evidence/latest-bit-build.receipt.json new file mode 100644 index 0000000000..6418bee54e --- /dev/null +++ b/research/pr4633-quotient-contract-audit/evidence/latest-bit-build.receipt.json @@ -0,0 +1,14 @@ +{ + "command": [ + "python3.12", + "-B", + "research/bit-ambient-quotient/build.py" + ], + "cwd": "/home/cinna/int-bounds/audit-pr4633-delta-20261022", + "exit_code": 0, + "elapsed_seconds": 0.332, + "peak_sampled_group_rss_bytes": 28176384, + "stop_reason": null, + "memory_limit_bytes": 1073741824, + "timeout_seconds": 1200 +} diff --git a/research/pr4633-quotient-contract-audit/evidence/latest-bit-registered.log b/research/pr4633-quotient-contract-audit/evidence/latest-bit-registered.log new file mode 100644 index 0000000000..4f9c8e4e52 --- /dev/null +++ b/research/pr4633-quotient-contract-audit/evidence/latest-bit-registered.log @@ -0,0 +1,12 @@ +CHECK Replays the pinned PR589 source word and the quotiented word with the shipped local record interpreter: 661 roles, ambient dim 8, independent kernel basis with matching quotient width, every helper start at ground and every helper final at dim 8, both directions 24305 ADDs and 9 COPY episodes, all arbitrary input columns exact, all 661 endpoints exact, owned COPY cleanup exact, forward and backward paid profiles identical, the source word reproduces the declared local bill {1:1323,2:1342,3:79,4:44,5:102,6:11,7:19}, the emitted invoice reproduces the frontier BIT kappa 0.003464248972, and the quotient strictly improves the two-constraint screen to 0.032249423395. +artifact: kernel [150, 102, 255] (dim 3), 65 frames, 661 roles, ambient 8 +main widths {4: 103, 7: 70, 8: 49} ; helper widths {8: 439} +forward adds 24305 copies 9 paid {1: 1020, 2: 495, 3: 75, 4: 442, 5: 143, 6: 4, 7: 12, 8: 2} (mass 4842) +reverse adds 24305 copies 9 paid {1: 1020, 2: 495, 3: 75, 4: 442, 5: 143, 6: 4, 7: 12, 8: 2} (mass 4842) +source paid {1: 1323, 2: 1342, 3: 79, 4: 44, 5: 102, 6: 11, 7: 19} (mass 5129) matches the declared local bill + +emitted surplus 753 (thin 1665) BIT kappa 0.003464248972024 +quotient surplus 5919 (thin 1665) BIT kappa 0.032249423394893 +gain +0.028785174422869 +830.92% +wrote RESULT.json +PASS_REGISTERED_RESEARCH_PACKAGE research/bit-ambient-quotient outcome=completed diff --git a/research/pr4633-quotient-contract-audit/evidence/latest-bit-registered.receipt.json b/research/pr4633-quotient-contract-audit/evidence/latest-bit-registered.receipt.json new file mode 100644 index 0000000000..aaa27572b4 --- /dev/null +++ b/research/pr4633-quotient-contract-audit/evidence/latest-bit-registered.receipt.json @@ -0,0 +1,16 @@ +{ + "command": [ + "python3.12", + "-B", + "scripts/research_package.py", + "--package", + "research/bit-ambient-quotient" + ], + "cwd": "/home/cinna/int-bounds/audit-pr4633-delta-20261022", + "exit_code": 0, + "elapsed_seconds": 0.327, + "peak_sampled_group_rss_bytes": 34156544, + "stop_reason": null, + "memory_limit_bytes": 1073741824, + "timeout_seconds": 1200 +} diff --git a/research/pr4633-quotient-contract-audit/evidence/latest-bit-scan-results.json b/research/pr4633-quotient-contract-audit/evidence/latest-bit-scan-results.json new file mode 100644 index 0000000000..967258d2c6 --- /dev/null +++ b/research/pr4633-quotient-contract-audit/evidence/latest-bit-scan-results.json @@ -0,0 +1,1942 @@ +[ +[[150],"ok",2661,0.01240108641606724,117], +[[102],"ok",2661,0.012370756965670525,118], +[[255],"ok",2625,0.012285066548162136,119], +[[153],"ok",2643,0.012297488830784907,118], +[[15],"ok",2643,0.012297302161748569,118], +[[240],"ok",2643,0.012294201481886813,118], +[[105],"ok",2625,0.01227922679418486,117], +[[1],"ok",843,0.00401240060882363,125], +[[7],"ok",789,0.003764752352612366,114], +[[9],"ok",537,0.002540207668319472,121], +[[165],"ok",2625,0.012216943466083985,115], +[[170],"ok",2643,0.012285267340406414,117], +[[204],"ok",2643,0.012282260788645749,115], +[[90],"ok",2625,0.012214931693431184,115], +[[60],"ok",2625,0.0122110508680911,117], +[[150,102],"ok",4407,0.02178583124967542,86], +[[150,255],"ok",4389,0.021686475857924326,92], +[[150,153],"ok",4389,0.021717556715541042,86], +[[150,15],"ok",4389,0.021717556715541042,86], +[[150,240],"ok",4407,0.02178583124967542,86], +[[150,105],"ok",4389,0.021686475857924326,92], +[[150,1],"ok",1653,0.008201097612898054,78], +[[150,7],"ok",1671,0.008306525730994828,74], +[[150,9],"ok",1185,0.00581785652119765,80], +[[150,165],"ok",4353,0.021460933981429176,84], +[[150,170],"ok",4371,0.021454290852834623,87], +[[150,204],"ok",4371,0.02152656318327356,84], +[[150,90],"ok",4371,0.02152656318327356,84], +[[150,60],"ok",4371,0.021454290852834623,87], +[[102,255],"ok",4407,0.021804306828575978,88], +[[102,153],"ok",4407,0.021804306828575978,88], +[[102,15],"ok",4371,0.021546711035258678,88], +[[102,240],"ok",4407,0.02178583124967542,86], +[[102,105],"ok",4371,0.021546711035258678,88], +[[102,1],"ok",1653,0.008180398680963485,83], +[[102,7],"ok",1671,0.008284266966820107,77], +[[102,9],"ok",1185,0.005854825853816636,78], +[[102,165],"ok",4353,0.021386742828057914,87], +[[102,170],"ok",4389,0.021542571992525572,87], +[[102,204],"ok",4389,0.021542571992525572,87], +[[102,90],"ok",4353,0.021386126880481523,87], +[[102,60],"ok",4353,0.021386126880481523,87], +[[255,153],"ok",4407,0.021804306828575978,88], +[[255,15],"ok",4389,0.02172523820225319,88], +[[255,240],"ok",4389,0.02172523820225319,88], +[[255,105],"ok",4389,0.021686475857924326,92], +[[255,1],"ok",1599,0.007956898880374373,77], +[[255,7],"ok",1617,0.008073870032963948,74], +[[255,9],"ok",1185,0.005831042617611081,78], +[[255,165],"ok",4353,0.0216724287291295,84], +[[255,170],"ok",4371,0.021586974995501607,87], +[[255,204],"ok",4371,0.021726369640713224,84], +[[255,90],"ok",4353,0.0216724287291295,84], +[[255,60],"ok",4353,0.02151820777538843,87], +[[153,15],"ok",4389,0.021717556715541042,86], +[[153,240],"ok",4353,0.021464969192737826,88], +[[153,105],"ok",4353,0.021464969192737826,88], +[[153,1],"ok",1689,0.008380106303359445,79], +[[153,7],"ok",1599,0.007953198941428928,79], +[[153,9],"ok",1275,0.006309982617126174,72], +[[153,165],"ok",4335,0.021302590981830013,87], +[[153,170],"ok",4353,0.02139023125674416,87], +[[153,204],"ok",4353,0.021386872424423883,87], +[[153,90],"ok",4335,0.021318990274223293,87], +[[153,60],"ok",4335,0.021302590981830013,87], +[[15,240],"ok",4389,0.02172523820225319,88], +[[15,105],"ok",4371,0.021546711035258678,88], +[[15,1],"ok",1689,0.008376892613200015,79], +[[15,7],"ok",1689,0.008385544155871838,79], +[[15,9],"ok",1275,0.006308696567612293,72], +[[15,165],"ok",4353,0.021391082179964046,87], +[[15,170],"ok",4353,0.021391082179964046,87], +[[15,204],"ok",4353,0.021388707898376824,87], +[[15,90],"ok",4335,0.021318674735888277,87], +[[15,60],"ok",4335,0.021303255785911353,87], +[[240,105],"ok",4353,0.021464969192737826,88], +[[240,1],"ok",1635,0.008098456065251667,83], +[[240,7],"ok",1545,0.0076797255348839966,77], +[[240,9],"ok",1167,0.00576943974999905,78], +[[240,165],"ok",4335,0.021300118547240062,87], +[[240,170],"ok",4353,0.021388298649782585,87], +[[240,204],"ok",4353,0.02136948902504382,87], +[[240,90],"ok",4353,0.021388298649782585,87], +[[240,60],"ok",4353,0.02136948902504382,87], +[[105,1],"ok",1671,0.008272443067802782,78], +[[105,7],"ok",1581,0.007852777720995852,71], +[[105,9],"ok",1257,0.006194067066154384,79], +[[105,165],"ok",4335,0.021392854023187413,84], +[[105,170],"ok",4335,0.02146536955289885,85], +[[105,204],"ok",4335,0.021392854023187413,84], +[[105,90],"ok",4317,0.021318572714726643,84], +[[105,60],"ok",4317,0.021385230353603676,85], +[[1,7],"ok",141,0.0007296168888256127,93], +[[1,9],"ok",177,0.0009133072509469042,95], +[[1,165],"ok",1671,0.008276885422319025,78], +[[1,170],"ok",1635,0.008088973560215594,82], +[[1,204],"ok",1635,0.008088688912765317,81], +[[1,90],"ok",1617,0.008011211316368005,81], +[[1,60],"ok",1617,0.008005382699941941,82], +[[7,9],"ok",105,0.0005472641743378692,89], +[[7,165],"ok",1635,0.008111956506159423,77], +[[7,170],"ok",1599,0.007929344196896558,77], +[[7,204],"ok",1599,0.0079281186753693,76], +[[7,90],"ok",1581,0.007847898606605007,76], +[[7,60],"ok",1581,0.007845113027776516,77], +[[9,165],"ok",1203,0.005924693753421695,76], +[[9,170],"ok",1221,0.006002283156045506,78], +[[9,204],"ok",1221,0.006003171529859241,76], +[[9,90],"ok",1203,0.005921836788686241,76], +[[9,60],"ok",1203,0.005918923197655579,78], +[[165,170],"ok",4353,0.021391082179964046,87], +[[165,204],"ok",4335,0.021392854023187413,84], +[[165,90],"ok",4353,0.0216724287291295,84], +[[165,60],"ok",4335,0.021302590981830013,87], +[[170,204],"ok",4389,0.021542571992525572,87], +[[170,90],"ok",4353,0.021388298649782585,87], +[[170,60],"ok",4371,0.021454290852834623,87], +[[204,90],"ok",4371,0.02152656318327356,84], +[[204,60],"ok",4353,0.02136948902504382,87], +[[90,60],"ok",4353,0.021386126880481523,87], +[[150,102,255],"ok",5919,0.03224942339489283,65], +[[150,102,153],"ok",5919,0.03224942339489283,65], +[[150,102,15],"ok",5919,0.03224942339489283,65], +[[150,102,240],"ValueError",0,0.0,0], +[[150,102,105],"ok",5919,0.03224942339489283,65], +[[150,102,1],"ok",2337,0.012598287768163128,51], +[[150,102,7],"ok",2355,0.012716513904942937,48], +[[150,102,9],"ok",1707,0.0091808044622404,52], +[[150,102,165],"ok",5811,0.03127647633031355,64], +[[150,102,170],"ok",5847,0.03143645739913198,64], +[[150,102,204],"ok",5847,0.03143645739913198,64], +[[150,102,90],"ok",5847,0.03143645739913198,64], +[[150,102,60],"ok",5847,0.03143645739913198,64], +[[150,255,153],"ok",5919,0.03224942339489283,65], +[[150,255,15],"ok",5919,0.03224942339489283,65], +[[150,255,240],"ok",5919,0.03224942339489283,65], +[[150,255,105],"ValueError",0,0.0,0], +[[150,255,1],"ok",2355,0.012660641543214057,50], +[[150,255,7],"ok",2373,0.012793932501523329,48], +[[150,255,9],"ok",1797,0.009556445518526578,56], +[[150,255,165],"ok",5847,0.03193874839224924,63], +[[150,255,170],"ok",5847,0.031816797405993906,64], +[[150,255,204],"ok",5847,0.03193874839224924,63], +[[150,255,90],"ok",5847,0.03193874839224924,63], +[[150,255,60],"ok",5847,0.031816797405993906,64], +[[150,153,15],"ValueError",0,0.0,0], +[[150,153,240],"ok",5919,0.03224942339489283,65], +[[150,153,105],"ok",5919,0.03224942339489283,65], +[[150,153,1],"ok",2391,0.01292240099630676,49], +[[150,153,7],"ok",2391,0.012951814795569894,49], +[[150,153,9],"ok",1833,0.009885153768948218,45], +[[150,153,165],"ok",5811,0.03125882729045209,64], +[[150,153,170],"ok",5811,0.03125882729045209,64], +[[150,153,204],"ok",5811,0.031265932003991796,64], +[[150,153,90],"ok",5811,0.031265932003991796,64], +[[150,153,60],"ok",5811,0.03125882729045209,64], +[[150,15,240],"ok",5919,0.03224942339489283,65], +[[150,15,105],"ok",5919,0.03224942339489283,65], +[[150,15,1],"ok",2391,0.01292240099630676,49], +[[150,15,7],"ok",2391,0.012951814795569894,49], +[[150,15,9],"ok",1833,0.009885153768948218,45], +[[150,15,165],"ok",5811,0.03125882729045209,64], +[[150,15,170],"ok",5811,0.03125882729045209,64], +[[150,15,204],"ok",5811,0.031265932003991796,64], +[[150,15,90],"ok",5811,0.031265932003991796,64], +[[150,15,60],"ok",5811,0.03125882729045209,64], +[[150,240,105],"ok",5919,0.03224942339489283,65], +[[150,240,1],"ok",2337,0.012598287768163128,51], +[[150,240,7],"ok",2355,0.012716513904942937,48], +[[150,240,9],"ok",1707,0.0091808044622404,52], +[[150,240,165],"ok",5811,0.03127647633031355,64], +[[150,240,170],"ok",5847,0.03143645739913198,64], +[[150,240,204],"ok",5847,0.03143645739913198,64], +[[150,240,90],"ok",5847,0.03143645739913198,64], +[[150,240,60],"ok",5847,0.03143645739913198,64], +[[150,105,1],"ok",2355,0.012660641543214057,50], +[[150,105,7],"ok",2373,0.012793932501523329,48], +[[150,105,9],"ok",1797,0.009556445518526578,56], +[[150,105,165],"ok",5847,0.03193874839224924,63], +[[150,105,170],"ok",5847,0.031816797405993906,64], +[[150,105,204],"ok",5847,0.03193874839224924,63], +[[150,105,90],"ok",5847,0.03193874839224924,63], +[[150,105,60],"ok",5847,0.031816797405993906,64], +[[150,1,7],"ok",411,0.0022729519848498354,48], +[[150,1,9],"ok",321,0.001774648032224879,51], +[[150,1,165],"ok",2355,0.012650388627549468,48], +[[150,1,170],"ok",2301,0.012313634150449781,51], +[[150,1,204],"ok",2301,0.012358066634710006,50], +[[150,1,90],"ok",2301,0.012358066634710006,50], +[[150,1,60],"ok",2301,0.012313634150449781,51], +[[150,7,9],"ok",357,0.00198784185196027,52], +[[150,7,165],"ok",2373,0.012762947640208853,47], +[[150,7,170],"ok",2319,0.012439104393269507,48], +[[150,7,204],"ok",2319,0.012458459592278592,47], +[[150,7,90],"ok",2319,0.012458459592278592,47], +[[150,7,60],"ok",2319,0.012439104393269507,48], +[[150,9,165],"ok",1725,0.009206924652303494,50], +[[150,9,170],"ok",1743,0.009254798254240968,51], +[[150,9,204],"ok",1743,0.009292456098193234,50], +[[150,9,90],"ok",1743,0.009292456098193234,50], +[[150,9,60],"ok",1743,0.009254798254240968,51], +[[150,165,170],"ok",5811,0.03125882729045209,64], +[[150,165,204],"ok",5847,0.03193874839224924,63], +[[150,165,90],"ok",5847,0.03193874839224924,63], +[[150,165,60],"ok",5811,0.03125882729045209,64], +[[150,170,204],"ok",5847,0.03143645739913198,64], +[[150,170,90],"ok",5847,0.03143645739913198,64], +[[150,170,60],"ValueError",0,0.0,0], +[[150,204,90],"ValueError",0,0.0,0], +[[150,204,60],"ok",5847,0.03143645739913198,64], +[[150,90,60],"ok",5847,0.03143645739913198,64], +[[102,255,153],"ValueError",0,0.0,0], +[[102,255,15],"ok",5919,0.03224942339489283,65], +[[102,255,240],"ok",5919,0.03224942339489283,65], +[[102,255,105],"ok",5919,0.03224942339489283,65], +[[102,255,1],"ok",2373,0.012797125721523195,50], +[[102,255,7],"ok",2391,0.012904065009553487,50], +[[102,255,9],"ok",1815,0.009776358343007774,47], +[[102,255,165],"ok",5847,0.031604046252165896,66], +[[102,255,170],"ok",5883,0.031765013966960354,66], +[[102,255,204],"ok",5883,0.031765013966960354,66], +[[102,255,90],"ok",5847,0.031604046252165896,66], +[[102,255,60],"ok",5847,0.031604046252165896,66], +[[102,153,15],"ok",5919,0.03224942339489283,65], +[[102,153,240],"ok",5919,0.03224942339489283,65], +[[102,153,105],"ok",5919,0.03224942339489283,65], +[[102,153,1],"ok",2373,0.012797125721523195,50], +[[102,153,7],"ok",2391,0.012904065009553487,50], +[[102,153,9],"ok",1815,0.009776358343007774,47], +[[102,153,165],"ok",5847,0.031604046252165896,66], +[[102,153,170],"ok",5883,0.031765013966960354,66], +[[102,153,204],"ok",5883,0.031765013966960354,66], +[[102,153,90],"ok",5847,0.031604046252165896,66], +[[102,153,60],"ok",5847,0.031604046252165896,66], +[[102,15,240],"ok",5919,0.03224942339489283,65], +[[102,15,105],"ValueError",0,0.0,0], +[[102,15,1],"ok",2373,0.012736985849561233,48], +[[102,15,7],"ok",2373,0.012752619979635225,48], +[[102,15,9],"ok",1815,0.00974637396913064,48], +[[102,15,165],"ok",5811,0.03131856332634647,64], +[[102,15,170],"ok",5811,0.03131856332634647,64], +[[102,15,204],"ok",5811,0.03131856332634647,64], +[[102,15,90],"ok",5775,0.031136894396574466,64], +[[102,15,60],"ok",5775,0.031136894396574466,64], +[[102,240,105],"ok",5919,0.03224942339489283,65], +[[102,240,1],"ok",2337,0.012598287768163128,51], +[[102,240,7],"ok",2355,0.012716513904942937,48], +[[102,240,9],"ok",1707,0.0091808044622404,52], +[[102,240,165],"ok",5811,0.03127647633031355,64], +[[102,240,170],"ok",5847,0.03143645739913198,64], +[[102,240,204],"ok",5847,0.03143645739913198,64], +[[102,240,90],"ok",5847,0.03143645739913198,64], +[[102,240,60],"ok",5847,0.03143645739913198,64], +[[102,105,1],"ok",2373,0.012736985849561233,48], +[[102,105,7],"ok",2373,0.012752619979635225,48], +[[102,105,9],"ok",1815,0.00974637396913064,48], +[[102,105,165],"ok",5811,0.03131856332634647,64], +[[102,105,170],"ok",5811,0.03131856332634647,64], +[[102,105,204],"ok",5811,0.03131856332634647,64], +[[102,105,90],"ok",5775,0.031136894396574466,64], +[[102,105,60],"ok",5775,0.031136894396574466,64], +[[102,1,7],"ok",411,0.002260718540510187,48], +[[102,1,9],"ok",321,0.001762711374778736,56], +[[102,1,165],"ok",2355,0.012607981164638293,49], +[[102,1,170],"ok",2319,0.01240259325246956,55], +[[102,1,204],"ok",2319,0.01240259325246956,55], +[[102,1,90],"ok",2283,0.012223660412619073,55], +[[102,1,60],"ok",2283,0.012223660412619073,55], +[[102,7,9],"ok",357,0.001963023578495149,52], +[[102,7,165],"ok",2373,0.012707190214167607,47], +[[102,7,170],"ok",2337,0.012516398073441792,51], +[[102,7,204],"ok",2337,0.012516398073441792,51], +[[102,7,90],"ok",2301,0.012328937192753906,51], +[[102,7,60],"ok",2301,0.012328937192753906,51], +[[102,9,165],"ok",1725,0.009233891044253595,49], +[[102,9,170],"ok",1761,0.00941138791054269,49], +[[102,9,204],"ok",1761,0.00941138791054269,49], +[[102,9,90],"ok",1725,0.009229517740839186,49], +[[102,9,60],"ok",1725,0.009229517740839186,49], +[[102,165,170],"ok",5811,0.03131856332634647,64], +[[102,165,204],"ok",5811,0.03131856332634647,64], +[[102,165,90],"ok",5847,0.031604046252165896,66], +[[102,165,60],"ok",5847,0.031604046252165896,66], +[[102,170,204],"ValueError",0,0.0,0], +[[102,170,90],"ok",5847,0.03143645739913198,64], +[[102,170,60],"ok",5847,0.03143645739913198,64], +[[102,204,90],"ok",5847,0.03143645739913198,64], +[[102,204,60],"ok",5847,0.03143645739913198,64], +[[102,90,60],"ValueError",0,0.0,0], +[[255,153,15],"ok",5919,0.03224942339489283,65], +[[255,153,240],"ok",5919,0.03224942339489283,65], +[[255,153,105],"ok",5919,0.03224942339489283,65], +[[255,153,1],"ok",2373,0.012797125721523195,50], +[[255,153,7],"ok",2391,0.012904065009553487,50], +[[255,153,9],"ok",1815,0.009776358343007774,47], +[[255,153,165],"ok",5847,0.031604046252165896,66], +[[255,153,170],"ok",5883,0.031765013966960354,66], +[[255,153,204],"ok",5883,0.031765013966960354,66], +[[255,153,90],"ok",5847,0.031604046252165896,66], +[[255,153,60],"ok",5847,0.031604046252165896,66], +[[255,15,240],"ValueError",0,0.0,0], +[[255,15,105],"ok",5919,0.03224942339489283,65], +[[255,15,1],"ok",2355,0.012704272727818877,50], +[[255,15,7],"ok",2355,0.01271740058574927,50], +[[255,15,9],"ok",1797,0.009683966787177145,47], +[[255,15,165],"ok",5847,0.031591840398465465,66], +[[255,15,170],"ok",5847,0.031591840398465465,66], +[[255,15,204],"ok",5847,0.03156959500094142,66], +[[255,15,90],"ok",5847,0.031591840398465465,66], +[[255,15,60],"ok",5847,0.03156959500094142,66], +[[255,240,105],"ok",5919,0.03224942339489283,65], +[[255,240,1],"ok",2355,0.012704272727818877,50], +[[255,240,7],"ok",2355,0.01271740058574927,50], +[[255,240,9],"ok",1797,0.009683966787177145,47], +[[255,240,165],"ok",5847,0.031591840398465465,66], +[[255,240,170],"ok",5847,0.031591840398465465,66], +[[255,240,204],"ok",5847,0.03156959500094142,66], +[[255,240,90],"ok",5847,0.031591840398465465,66], +[[255,240,60],"ok",5847,0.03156959500094142,66], +[[255,105,1],"ok",2355,0.012660641543214057,50], +[[255,105,7],"ok",2373,0.012793932501523329,48], +[[255,105,9],"ok",1797,0.009556445518526578,56], +[[255,105,165],"ok",5847,0.03193874839224924,63], +[[255,105,170],"ok",5847,0.031816797405993906,64], +[[255,105,204],"ok",5847,0.03193874839224924,63], +[[255,105,90],"ok",5847,0.03193874839224924,63], +[[255,105,60],"ok",5847,0.031816797405993906,64], +[[255,1,7],"ok",303,0.0016772685337888558,49], +[[255,1,9],"ok",285,0.0015727260130509735,51], +[[255,1,165],"ok",2319,0.012567722130818304,49], +[[255,1,170],"ok",2337,0.01255748623943137,50], +[[255,1,204],"ok",2337,0.012641714345778488,49], +[[255,1,90],"ok",2319,0.012567722130818304,49], +[[255,1,60],"ok",2319,0.012474270654618647,50], +[[255,7,9],"ok",321,0.0017913574533778285,52], +[[255,7,165],"ok",2337,0.012669335581682649,50], +[[255,7,170],"ok",2355,0.012684720129242433,50], +[[255,7,204],"ok",2355,0.012745326892308282,50], +[[255,7,90],"ok",2337,0.012669335581682649,50], +[[255,7,60],"ok",2337,0.012599851426120688,50], +[[255,9,165],"ok",1761,0.009465798064028195,48], +[[255,9,170],"ok",1779,0.009477590038377282,49], +[[255,9,204],"ok",1779,0.009544479763182455,48], +[[255,9,90],"ok",1761,0.009465798064028195,48], +[[255,9,60],"ok",1761,0.009391246377829232,49], +[[255,165,170],"ok",5847,0.031591840398465465,66], +[[255,165,204],"ok",5847,0.03193874839224924,63], +[[255,165,90],"ValueError",0,0.0,0], +[[255,165,60],"ok",5847,0.031604046252165896,66], +[[255,170,204],"ok",5883,0.031765013966960354,66], +[[255,170,90],"ok",5847,0.031591840398465465,66], +[[255,170,60],"ok",5847,0.031816797405993906,64], +[[255,204,90],"ok",5847,0.03193874839224924,63], +[[255,204,60],"ok",5847,0.03156959500094142,66], +[[255,90,60],"ok",5847,0.031604046252165896,66], +[[153,15,240],"ok",5919,0.03224942339489283,65], +[[153,15,105],"ok",5919,0.03224942339489283,65], +[[153,15,1],"ok",2391,0.01292240099630676,49], +[[153,15,7],"ok",2391,0.012951814795569894,49], +[[153,15,9],"ok",1833,0.009885153768948218,45], +[[153,15,165],"ok",5811,0.03125882729045209,64], +[[153,15,170],"ok",5811,0.03125882729045209,64], +[[153,15,204],"ok",5811,0.031265932003991796,64], +[[153,15,90],"ok",5811,0.031265932003991796,64], +[[153,15,60],"ok",5811,0.03125882729045209,64], +[[153,240,105],"ValueError",0,0.0,0], +[[153,240,1],"ok",2355,0.012650711388560165,48], +[[153,240,7],"ok",2229,0.012008352432954006,51], +[[153,240,9],"ok",1797,0.009654953766204231,48], +[[153,240,165],"ok",5775,0.031118447589289,64], +[[153,240,170],"ok",5775,0.03113102852216515,64], +[[153,240,204],"ok",5775,0.031118447589289,64], +[[153,240,90],"ok",5775,0.03113102852216515,64], +[[153,240,60],"ok",5775,0.031118447589289,64], +[[153,105,1],"ok",2355,0.012650711388560165,48], +[[153,105,7],"ok",2229,0.012008352432954006,51], +[[153,105,9],"ok",1797,0.009654953766204231,48], +[[153,105,165],"ok",5775,0.031118447589289,64], +[[153,105,170],"ok",5775,0.03113102852216515,64], +[[153,105,204],"ok",5775,0.031118447589289,64], +[[153,105,90],"ok",5775,0.03113102852216515,64], +[[153,105,60],"ok",5775,0.031118447589289,64], +[[153,1,7],"ok",321,0.0017705681958490314,59], +[[153,1,9],"ok",447,0.002464574818466347,51], +[[153,1,165],"ok",2337,0.012523384729355045,49], +[[153,1,170],"ok",2355,0.012621206474362323,49], +[[153,1,204],"ok",2355,0.012615655686255167,49], +[[153,1,90],"ok",2337,0.012538002836011863,49], +[[153,1,60],"ok",2337,0.012523384729355045,49], +[[153,7,9],"ok",339,0.0018683935699420062,52], +[[153,7,165],"ok",2283,0.012260418861797571,50], +[[153,7,170],"ok",2301,0.012357596782251954,50], +[[153,7,204],"ok",2301,0.012356824204074078,50], +[[153,7,90],"ok",2283,0.012269260644215685,50], +[[153,7,60],"ok",2283,0.012260418861797571,50], +[[153,9,165],"ok",1779,0.009509329893955863,46], +[[153,9,170],"ok",1797,0.009599297145886532,46], +[[153,9,204],"ok",1797,0.009599926819554183,46], +[[153,9,90],"ok",1779,0.009513937767157643,46], +[[153,9,60],"ok",1779,0.009509329893955863,46], +[[153,165,170],"ok",5811,0.03125882729045209,64], +[[153,165,204],"ok",5775,0.031118447589289,64], +[[153,165,90],"ok",5847,0.031604046252165896,66], +[[153,165,60],"ValueError",0,0.0,0], +[[153,170,204],"ok",5883,0.031765013966960354,66], +[[153,170,90],"ok",5775,0.03113102852216515,64], +[[153,170,60],"ok",5811,0.03125882729045209,64], +[[153,204,90],"ok",5811,0.031265932003991796,64], +[[153,204,60],"ok",5775,0.031118447589289,64], +[[153,90,60],"ok",5847,0.031604046252165896,66], +[[15,240,105],"ok",5919,0.03224942339489283,65], +[[15,240,1],"ok",2355,0.012704272727818877,50], +[[15,240,7],"ok",2355,0.01271740058574927,50], +[[15,240,9],"ok",1797,0.009683966787177145,47], +[[15,240,165],"ok",5847,0.031591840398465465,66], +[[15,240,170],"ok",5847,0.031591840398465465,66], +[[15,240,204],"ok",5847,0.03156959500094142,66], +[[15,240,90],"ok",5847,0.031591840398465465,66], +[[15,240,60],"ok",5847,0.03156959500094142,66], +[[15,105,1],"ok",2373,0.012736985849561233,48], +[[15,105,7],"ok",2373,0.012752619979635225,48], +[[15,105,9],"ok",1815,0.00974637396913064,48], +[[15,105,165],"ok",5811,0.03131856332634647,64], +[[15,105,170],"ok",5811,0.03131856332634647,64], +[[15,105,204],"ok",5811,0.03131856332634647,64], +[[15,105,90],"ok",5775,0.031136894396574466,64], +[[15,105,60],"ok",5775,0.031136894396574466,64], +[[15,1,7],"ok",447,0.0024620457656045476,51], +[[15,1,9],"ok",447,0.0024620457656045476,51], +[[15,1,165],"ok",2355,0.012616566792650385,49], +[[15,1,170],"ok",2355,0.012616566792650385,49], +[[15,1,204],"ok",2355,0.012614902925093763,49], +[[15,1,90],"ok",2337,0.012529941839430514,49], +[[15,1,60],"ok",2337,0.01251919536674023,49], +[[15,7,9],"ok",447,0.0024620457656045476,51], +[[15,7,165],"ok",2355,0.012633553600393477,49], +[[15,7,170],"ok",2355,0.012633553600393477,49], +[[15,7,204],"ok",2355,0.012633583823362049,49], +[[15,7,90],"ok",2337,0.012540894746963016,49], +[[15,7,60],"ok",2337,0.012532677825133398,49], +[[15,9,165],"ok",1797,0.009603541919107672,46], +[[15,9,170],"ok",1797,0.009603541919107672,46], +[[15,9,204],"ok",1797,0.009600412283091109,46], +[[15,9,90],"ok",1779,0.009512633477458841,46], +[[15,9,60],"ok",1779,0.009504304245681772,46], +[[15,165,170],"ValueError",0,0.0,0], +[[15,165,204],"ok",5811,0.03131856332634647,64], +[[15,165,90],"ok",5847,0.031591840398465465,66], +[[15,165,60],"ok",5811,0.03125882729045209,64], +[[15,170,204],"ok",5811,0.03131856332634647,64], +[[15,170,90],"ok",5847,0.031591840398465465,66], +[[15,170,60],"ok",5811,0.03125882729045209,64], +[[15,204,90],"ok",5811,0.031265932003991796,64], +[[15,204,60],"ok",5847,0.03156959500094142,66], +[[15,90,60],"ok",5775,0.031136894396574466,64], +[[240,105,1],"ok",2355,0.012650711388560165,48], +[[240,105,7],"ok",2229,0.012008352432954006,51], +[[240,105,9],"ok",1797,0.009654953766204231,48], +[[240,105,165],"ok",5775,0.031118447589289,64], +[[240,105,170],"ok",5775,0.03113102852216515,64], +[[240,105,204],"ok",5775,0.031118447589289,64], +[[240,105,90],"ok",5775,0.03113102852216515,64], +[[240,105,60],"ok",5775,0.031118447589289,64], +[[240,1,7],"ok",249,0.0013717584826165585,56], +[[240,1,9],"ok",303,0.0016656245722375673,56], +[[240,1,165],"ok",2337,0.012512912264186993,49], +[[240,1,170],"ok",2283,0.012229605238405494,55], +[[240,1,204],"ok",2283,0.012213766368925294,55], +[[240,1,90],"ok",2283,0.012229605238405494,55], +[[240,1,60],"ok",2283,0.012213766368925294,55], +[[240,7,9],"ok",195,0.0010738691840384562,53], +[[240,7,165],"ok",2283,0.01224122899241603,49], +[[240,7,170],"ok",2229,0.011963023835065588,51], +[[240,7,204],"ok",2229,0.01195444749181479,51], +[[240,7,90],"ok",2229,0.011963023835065588,51], +[[240,7,60],"ok",2229,0.01195444749181479,51], +[[240,9,165],"ok",1707,0.009136552367039752,49], +[[240,9,170],"ok",1725,0.009227863348585219,49], +[[240,9,204],"ok",1725,0.00922038878441883,49], +[[240,9,90],"ok",1725,0.009227863348585219,49], +[[240,9,60],"ok",1725,0.00922038878441883,49], +[[240,165,170],"ok",5847,0.031591840398465465,66], +[[240,165,204],"ok",5775,0.031118447589289,64], +[[240,165,90],"ok",5847,0.031591840398465465,66], +[[240,165,60],"ok",5775,0.031118447589289,64], +[[240,170,204],"ok",5847,0.03143645739913198,64], +[[240,170,90],"ValueError",0,0.0,0], +[[240,170,60],"ok",5847,0.03143645739913198,64], +[[240,204,90],"ok",5847,0.03143645739913198,64], +[[240,204,60],"ValueError",0,0.0,0], +[[240,90,60],"ok",5847,0.03143645739913198,64], +[[105,1,7],"ok",303,0.0016817130228977129,50], +[[105,1,9],"ok",429,0.0023671806228770516,52], +[[105,1,165],"ok",2337,0.012544021744475607,47], +[[105,1,170],"ok",2337,0.01258301751951135,48], +[[105,1,204],"ok",2337,0.012544021744475607,47], +[[105,1,90],"ok",2319,0.012455512789948995,47], +[[105,1,60],"ok",2319,0.012488140061678366,48], +[[105,7,9],"ok",321,0.0017956488022293216,50], +[[105,7,165],"ok",2283,0.012272364018416415,48], +[[105,7,170],"ok",2283,0.012315059698641717,47], +[[105,7,204],"ok",2283,0.012272364018416415,48], +[[105,7,90],"ok",2265,0.012180605961358225,48], +[[105,7,60],"ok",2265,0.012220870411136675,47], +[[105,9,165],"ok",1779,0.009494603016499126,47], +[[105,9,170],"ok",1779,0.009522089292252123,48], +[[105,9,204],"ok",1779,0.009494603016499126,47], +[[105,9,90],"ok",1761,0.0094019614003234,47], +[[105,9,60],"ok",1761,0.009430236247300272,48], +[[105,165,170],"ok",5811,0.03131856332634647,64], +[[105,165,204],"ValueError",0,0.0,0], +[[105,165,90],"ok",5847,0.03193874839224924,63], +[[105,165,60],"ok",5775,0.031118447589289,64], +[[105,170,204],"ok",5811,0.03131856332634647,64], +[[105,170,90],"ok",5775,0.03113102852216515,64], +[[105,170,60],"ok",5847,0.031816797405993906,64], +[[105,204,90],"ok",5847,0.03193874839224924,63], +[[105,204,60],"ok",5775,0.031118447589289,64], +[[105,90,60],"ok",5775,0.031136894396574466,64], +[[1,7,9],"ok",447,0.0024620457656045476,51], +[[1,7,165],"ok",375,0.0020640792054472112,52], +[[1,7,170],"ok",321,0.00176458478494651,54], +[[1,7,204],"ok",321,0.001764630190836114,54], +[[1,7,90],"ok",303,0.0016680059770944333,54], +[[1,7,60],"ok",303,0.0016665712367229244,54], +[[1,9,165],"ok",357,0.001966342683579591,52], +[[1,9,170],"ok",375,0.002059345896881448,53], +[[1,9,204],"ok",375,0.0020618193268347462,52], +[[1,9,90],"ok",357,0.001964561645472373,52], +[[1,9,60],"ok",357,0.0019619123631804958,53], +[[1,165,170],"ok",2355,0.012616566792650385,49], +[[1,165,204],"ok",2337,0.012544021744475607,47], +[[1,165,90],"ok",2319,0.012567722130818304,49], +[[1,165,60],"ok",2337,0.012523384729355045,49], +[[1,170,204],"ok",2319,0.01240259325246956,55], +[[1,170,90],"ok",2283,0.012229605238405494,55], +[[1,170,60],"ok",2301,0.012313634150449781,51], +[[1,204,90],"ok",2301,0.012358066634710006,50], +[[1,204,60],"ok",2283,0.012213766368925294,55], +[[1,90,60],"ok",2283,0.012223660412619073,55], +[[7,9,165],"ok",321,0.0017757679070807275,54], +[[7,9,170],"ok",339,0.0018713083459844235,54], +[[7,9,204],"ok",339,0.001871823153487717,54], +[[7,9,90],"ok",321,0.0017749206195611376,54], +[[7,9,60],"ok",321,0.0017733870282908293,54], +[[7,165,170],"ok",2355,0.012633553600393477,49], +[[7,165,204],"ok",2283,0.012272364018416415,48], +[[7,165,90],"ok",2337,0.012669335581682649,50], +[[7,165,60],"ok",2283,0.012260418861797571,50], +[[7,170,204],"ok",2337,0.012516398073441792,51], +[[7,170,90],"ok",2229,0.011963023835065588,51], +[[7,170,60],"ok",2319,0.012439104393269507,48], +[[7,204,90],"ok",2319,0.012458459592278592,47], +[[7,204,60],"ok",2229,0.01195444749181479,51], +[[7,90,60],"ok",2301,0.012328937192753906,51], +[[9,165,170],"ok",1797,0.009603541919107672,46], +[[9,165,204],"ok",1779,0.009494603016499126,47], +[[9,165,90],"ok",1761,0.009465798064028195,48], +[[9,165,60],"ok",1779,0.009509329893955863,46], +[[9,170,204],"ok",1761,0.00941138791054269,49], +[[9,170,90],"ok",1725,0.009227863348585219,49], +[[9,170,60],"ok",1743,0.009254798254240968,51], +[[9,204,90],"ok",1743,0.009292456098193234,50], +[[9,204,60],"ok",1725,0.00922038878441883,49], +[[9,90,60],"ok",1725,0.009229517740839186,49], +[[165,170,204],"ok",5811,0.03131856332634647,64], +[[165,170,90],"ok",5847,0.031591840398465465,66], +[[165,170,60],"ok",5811,0.03125882729045209,64], +[[165,204,90],"ok",5847,0.03193874839224924,63], +[[165,204,60],"ok",5775,0.031118447589289,64], +[[165,90,60],"ok",5847,0.031604046252165896,66], +[[170,204,90],"ok",5847,0.03143645739913198,64], +[[170,204,60],"ok",5847,0.03143645739913198,64], +[[170,90,60],"ok",5847,0.03143645739913198,64], +[[204,90,60],"ok",5847,0.03143645739913198,64], +[[150,102,255,153],"ValueError",0,0.0,0], +[[150,102,255,15],"ValueError",0,0.0,0], +[[150,102,255,240],"ValueError",0,0.0,0], +[[150,102,255,105],"ValueError",0,0.0,0], +[[150,102,255,1],"ok",2877,0.01752518801761321,30], +[[150,102,255,7],"ok",2877,0.017566482074060696,30], +[[150,102,255,9],"ok",2175,0.013247076121014332,32], +[[150,102,255,165],"ok",6819,0.042304306668647644,47], +[[150,102,255,170],"ok",6819,0.042304306668647644,47], +[[150,102,255,204],"ok",6819,0.042304306668647644,47], +[[150,102,255,90],"ok",6819,0.042304306668647644,47], +[[150,102,255,60],"ok",6819,0.042304306668647644,47], +[[150,102,153,15],"ValueError",0,0.0,0], +[[150,102,153,240],"ValueError",0,0.0,0], +[[150,102,153,105],"ValueError",0,0.0,0], +[[150,102,153,1],"ok",2877,0.01752518801761321,30], +[[150,102,153,7],"ok",2877,0.017566482074060696,30], +[[150,102,153,9],"ok",2175,0.013247076121014332,32], +[[150,102,153,165],"ok",6819,0.042304306668647644,47], +[[150,102,153,170],"ok",6819,0.042304306668647644,47], +[[150,102,153,204],"ok",6819,0.042304306668647644,47], +[[150,102,153,90],"ok",6819,0.042304306668647644,47], +[[150,102,153,60],"ok",6819,0.042304306668647644,47], +[[150,102,15,240],"ValueError",0,0.0,0], +[[150,102,15,105],"ValueError",0,0.0,0], +[[150,102,15,1],"ok",2877,0.01752518801761321,30], +[[150,102,15,7],"ok",2877,0.017566482074060696,30], +[[150,102,15,9],"ok",2175,0.013247076121014332,32], +[[150,102,15,165],"ok",6819,0.042304306668647644,47], +[[150,102,15,170],"ok",6819,0.042304306668647644,47], +[[150,102,15,204],"ok",6819,0.042304306668647644,47], +[[150,102,15,90],"ok",6819,0.042304306668647644,47], +[[150,102,15,60],"ok",6819,0.042304306668647644,47], +[[150,102,240,105],"ValueError",0,0.0,0], +[[150,102,240,1],"ValueError",0,0.0,0], +[[150,102,240,7],"ValueError",0,0.0,0], +[[150,102,240,9],"ValueError",0,0.0,0], +[[150,102,240,165],"ValueError",0,0.0,0], +[[150,102,240,170],"ValueError",0,0.0,0], +[[150,102,240,204],"ValueError",0,0.0,0], +[[150,102,240,90],"ValueError",0,0.0,0], +[[150,102,240,60],"ValueError",0,0.0,0], +[[150,102,105,1],"ok",2877,0.01752518801761321,30], +[[150,102,105,7],"ok",2877,0.017566482074060696,30], +[[150,102,105,9],"ok",2175,0.013247076121014332,32], +[[150,102,105,165],"ok",6819,0.042304306668647644,47], +[[150,102,105,170],"ok",6819,0.042304306668647644,47], +[[150,102,105,204],"ok",6819,0.042304306668647644,47], +[[150,102,105,90],"ok",6819,0.042304306668647644,47], +[[150,102,105,60],"ok",6819,0.042304306668647644,47], +[[150,102,1,7],"ok",483,0.003022431783301138,24], +[[150,102,1,9],"ok",375,0.002343154658160762,29], +[[150,102,1,165],"ok",2787,0.0167331652819685,30], +[[150,102,1,170],"ok",2733,0.016417003187798537,34], +[[150,102,1,204],"ok",2733,0.016417003187798537,34], +[[150,102,1,90],"ok",2733,0.016417003187798537,34], +[[150,102,1,60],"ok",2733,0.016417003187798537,34], +[[150,102,7,9],"ok",411,0.0025644298259024922,29], +[[150,102,7,165],"ok",2805,0.016884015348955395,29], +[[150,102,7,170],"ok",2751,0.016517072313352473,31], +[[150,102,7,204],"ok",2751,0.016517072313352473,31], +[[150,102,7,90],"ok",2751,0.016517072313352473,31], +[[150,102,7,60],"ok",2751,0.016517072313352473,31], +[[150,102,9,165],"ok",1995,0.011997722663755482,31], +[[150,102,9,170],"ok",2031,0.012198459783390236,31], +[[150,102,9,204],"ok",2031,0.012198459783390236,31], +[[150,102,9,90],"ok",2031,0.012198459783390236,31], +[[150,102,9,60],"ok",2031,0.012198459783390236,31], +[[150,102,165,170],"ok",6819,0.042304306668647644,47], +[[150,102,165,204],"ok",6819,0.042304306668647644,47], +[[150,102,165,90],"ok",6819,0.042304306668647644,47], +[[150,102,165,60],"ok",6819,0.042304306668647644,47], +[[150,102,170,204],"ValueError",0,0.0,0], +[[150,102,170,90],"ValueError",0,0.0,0], +[[150,102,170,60],"ValueError",0,0.0,0], +[[150,102,204,90],"ValueError",0,0.0,0], +[[150,102,204,60],"ValueError",0,0.0,0], +[[150,102,90,60],"ValueError",0,0.0,0], +[[150,255,153,15],"ValueError",0,0.0,0], +[[150,255,153,240],"ValueError",0,0.0,0], +[[150,255,153,105],"ValueError",0,0.0,0], +[[150,255,153,1],"ok",2877,0.01752518801761321,30], +[[150,255,153,7],"ok",2877,0.017566482074060696,30], +[[150,255,153,9],"ok",2175,0.013247076121014332,32], +[[150,255,153,165],"ok",6819,0.042304306668647644,47], +[[150,255,153,170],"ok",6819,0.042304306668647644,47], +[[150,255,153,204],"ok",6819,0.042304306668647644,47], +[[150,255,153,90],"ok",6819,0.042304306668647644,47], +[[150,255,153,60],"ok",6819,0.042304306668647644,47], +[[150,255,15,240],"ValueError",0,0.0,0], +[[150,255,15,105],"ValueError",0,0.0,0], +[[150,255,15,1],"ok",2877,0.01752518801761321,30], +[[150,255,15,7],"ok",2877,0.017566482074060696,30], +[[150,255,15,9],"ok",2175,0.013247076121014332,32], +[[150,255,15,165],"ok",6819,0.042304306668647644,47], +[[150,255,15,170],"ok",6819,0.042304306668647644,47], +[[150,255,15,204],"ok",6819,0.042304306668647644,47], +[[150,255,15,90],"ok",6819,0.042304306668647644,47], +[[150,255,15,60],"ok",6819,0.042304306668647644,47], +[[150,255,240,105],"ValueError",0,0.0,0], +[[150,255,240,1],"ok",2877,0.01752518801761321,30], +[[150,255,240,7],"ok",2877,0.017566482074060696,30], +[[150,255,240,9],"ok",2175,0.013247076121014332,32], +[[150,255,240,165],"ok",6819,0.042304306668647644,47], +[[150,255,240,170],"ok",6819,0.042304306668647644,47], +[[150,255,240,204],"ok",6819,0.042304306668647644,47], +[[150,255,240,90],"ok",6819,0.042304306668647644,47], +[[150,255,240,60],"ok",6819,0.042304306668647644,47], +[[150,255,105,1],"ValueError",0,0.0,0], +[[150,255,105,7],"ValueError",0,0.0,0], +[[150,255,105,9],"ValueError",0,0.0,0], +[[150,255,105,165],"ValueError",0,0.0,0], +[[150,255,105,170],"ValueError",0,0.0,0], +[[150,255,105,204],"ValueError",0,0.0,0], +[[150,255,105,90],"ValueError",0,0.0,0], +[[150,255,105,60],"ValueError",0,0.0,0], +[[150,255,1,7],"ok",483,0.0029841278136721323,26], +[[150,255,1,9],"ok",465,0.002865580619025587,30], +[[150,255,1,165],"ok",2805,0.01710319247308328,29], +[[150,255,1,170],"ok",2805,0.01703284316273795,28], +[[150,255,1,204],"ok",2805,0.01710319247308328,29], +[[150,255,1,90],"ok",2805,0.01710319247308328,29], +[[150,255,1,60],"ok",2805,0.01703284316273795,28], +[[150,255,7,9],"ok",501,0.003119807731449209,31], +[[150,255,7,165],"ok",2823,0.017216859073079845,30], +[[150,255,7,170],"ok",2823,0.017191861591440535,28], +[[150,255,7,204],"ok",2823,0.017216859073079845,30], +[[150,255,7,90],"ok",2823,0.017216859073079845,30], +[[150,255,7,60],"ok",2823,0.017191861591440535,28], +[[150,255,9,165],"ok",2103,0.012733528296866968,32], +[[150,255,9,170],"ok",2103,0.01267518425811015,31], +[[150,255,9,204],"ok",2103,0.012733528296866968,32], +[[150,255,9,90],"ok",2103,0.012733528296866968,32], +[[150,255,9,60],"ok",2103,0.01267518425811015,31], +[[150,255,165,170],"ok",6819,0.042304306668647644,47], +[[150,255,165,204],"ValueError",0,0.0,0], +[[150,255,165,90],"ValueError",0,0.0,0], +[[150,255,165,60],"ok",6819,0.042304306668647644,47], +[[150,255,170,204],"ok",6819,0.042304306668647644,47], +[[150,255,170,90],"ok",6819,0.042304306668647644,47], +[[150,255,170,60],"ValueError",0,0.0,0], +[[150,255,204,90],"ValueError",0,0.0,0], +[[150,255,204,60],"ok",6819,0.042304306668647644,47], +[[150,255,90,60],"ok",6819,0.042304306668647644,47], +[[150,153,15,240],"ValueError",0,0.0,0], +[[150,153,15,105],"ValueError",0,0.0,0], +[[150,153,15,1],"ValueError",0,0.0,0], +[[150,153,15,7],"ValueError",0,0.0,0], +[[150,153,15,9],"ValueError",0,0.0,0], +[[150,153,15,165],"ValueError",0,0.0,0], +[[150,153,15,170],"ValueError",0,0.0,0], +[[150,153,15,204],"ValueError",0,0.0,0], +[[150,153,15,90],"ValueError",0,0.0,0], +[[150,153,15,60],"ValueError",0,0.0,0], +[[150,153,240,105],"ValueError",0,0.0,0], +[[150,153,240,1],"ok",2877,0.01752518801761321,30], +[[150,153,240,7],"ok",2877,0.017566482074060696,30], +[[150,153,240,9],"ok",2175,0.013247076121014332,32], +[[150,153,240,165],"ok",6819,0.042304306668647644,47], +[[150,153,240,170],"ok",6819,0.042304306668647644,47], +[[150,153,240,204],"ok",6819,0.042304306668647644,47], +[[150,153,240,90],"ok",6819,0.042304306668647644,47], +[[150,153,240,60],"ok",6819,0.042304306668647644,47], +[[150,153,105,1],"ok",2877,0.01752518801761321,30], +[[150,153,105,7],"ok",2877,0.017566482074060696,30], +[[150,153,105,9],"ok",2175,0.013247076121014332,32], +[[150,153,105,165],"ok",6819,0.042304306668647644,47], +[[150,153,105,170],"ok",6819,0.042304306668647644,47], +[[150,153,105,204],"ok",6819,0.042304306668647644,47], +[[150,153,105,90],"ok",6819,0.042304306668647644,47], +[[150,153,105,60],"ok",6819,0.042304306668647644,47], +[[150,153,1,7],"ok",537,0.003371899356327035,25], +[[150,153,1,9],"ok",537,0.003371899356327035,25], +[[150,153,1,165],"ok",2787,0.016745896737390294,31], +[[150,153,1,170],"ok",2787,0.016745896737390294,31], +[[150,153,1,204],"ok",2787,0.016750416912553245,31], +[[150,153,1,90],"ok",2787,0.016750416912553245,31], +[[150,153,1,60],"ok",2787,0.016745896737390294,31], +[[150,153,7,9],"ok",537,0.003371899356327035,25], +[[150,153,7,165],"ok",2787,0.016783036942021153,31], +[[150,153,7,170],"ok",2787,0.016783036942021153,31], +[[150,153,7,204],"ok",2787,0.016787577541318266,31], +[[150,153,7,90],"ok",2787,0.016787577541318266,31], +[[150,153,7,60],"ok",2787,0.016783036942021153,31], +[[150,153,9,165],"ok",2085,0.012520419691628704,27], +[[150,153,9,170],"ok",2085,0.012520419691628704,27], +[[150,153,9,204],"ok",2085,0.012523060375959016,27], +[[150,153,9,90],"ok",2085,0.012523060375959016,27], +[[150,153,9,60],"ok",2085,0.012520419691628704,27], +[[150,153,165,170],"ValueError",0,0.0,0], +[[150,153,165,204],"ok",6819,0.042304306668647644,47], +[[150,153,165,90],"ok",6819,0.042304306668647644,47], +[[150,153,165,60],"ValueError",0,0.0,0], +[[150,153,170,204],"ok",6819,0.042304306668647644,47], +[[150,153,170,90],"ok",6819,0.042304306668647644,47], +[[150,153,170,60],"ValueError",0,0.0,0], +[[150,153,204,90],"ValueError",0,0.0,0], +[[150,153,204,60],"ok",6819,0.042304306668647644,47], +[[150,153,90,60],"ok",6819,0.042304306668647644,47], +[[150,15,240,105],"ValueError",0,0.0,0], +[[150,15,240,1],"ok",2877,0.01752518801761321,30], +[[150,15,240,7],"ok",2877,0.017566482074060696,30], +[[150,15,240,9],"ok",2175,0.013247076121014332,32], +[[150,15,240,165],"ok",6819,0.042304306668647644,47], +[[150,15,240,170],"ok",6819,0.042304306668647644,47], +[[150,15,240,204],"ok",6819,0.042304306668647644,47], +[[150,15,240,90],"ok",6819,0.042304306668647644,47], +[[150,15,240,60],"ok",6819,0.042304306668647644,47], +[[150,15,105,1],"ok",2877,0.01752518801761321,30], +[[150,15,105,7],"ok",2877,0.017566482074060696,30], +[[150,15,105,9],"ok",2175,0.013247076121014332,32], +[[150,15,105,165],"ok",6819,0.042304306668647644,47], +[[150,15,105,170],"ok",6819,0.042304306668647644,47], +[[150,15,105,204],"ok",6819,0.042304306668647644,47], +[[150,15,105,90],"ok",6819,0.042304306668647644,47], +[[150,15,105,60],"ok",6819,0.042304306668647644,47], +[[150,15,1,7],"ok",537,0.003371899356327035,25], +[[150,15,1,9],"ok",537,0.003371899356327035,25], +[[150,15,1,165],"ok",2787,0.016745896737390294,31], +[[150,15,1,170],"ok",2787,0.016745896737390294,31], +[[150,15,1,204],"ok",2787,0.016750416912553245,31], +[[150,15,1,90],"ok",2787,0.016750416912553245,31], +[[150,15,1,60],"ok",2787,0.016745896737390294,31], +[[150,15,7,9],"ok",537,0.003371899356327035,25], +[[150,15,7,165],"ok",2787,0.016783036942021153,31], +[[150,15,7,170],"ok",2787,0.016783036942021153,31], +[[150,15,7,204],"ok",2787,0.016787577541318266,31], +[[150,15,7,90],"ok",2787,0.016787577541318266,31], +[[150,15,7,60],"ok",2787,0.016783036942021153,31], +[[150,15,9,165],"ok",2085,0.012520419691628704,27], +[[150,15,9,170],"ok",2085,0.012520419691628704,27], +[[150,15,9,204],"ok",2085,0.012523060375959016,27], +[[150,15,9,90],"ok",2085,0.012523060375959016,27], +[[150,15,9,60],"ok",2085,0.012520419691628704,27], +[[150,15,165,170],"ValueError",0,0.0,0], +[[150,15,165,204],"ok",6819,0.042304306668647644,47], +[[150,15,165,90],"ok",6819,0.042304306668647644,47], +[[150,15,165,60],"ValueError",0,0.0,0], +[[150,15,170,204],"ok",6819,0.042304306668647644,47], +[[150,15,170,90],"ok",6819,0.042304306668647644,47], +[[150,15,170,60],"ValueError",0,0.0,0], +[[150,15,204,90],"ValueError",0,0.0,0], +[[150,15,204,60],"ok",6819,0.042304306668647644,47], +[[150,15,90,60],"ok",6819,0.042304306668647644,47], +[[150,240,105,1],"ok",2877,0.01752518801761321,30], +[[150,240,105,7],"ok",2877,0.017566482074060696,30], +[[150,240,105,9],"ok",2175,0.013247076121014332,32], +[[150,240,105,165],"ok",6819,0.042304306668647644,47], +[[150,240,105,170],"ok",6819,0.042304306668647644,47], +[[150,240,105,204],"ok",6819,0.042304306668647644,47], +[[150,240,105,90],"ok",6819,0.042304306668647644,47], +[[150,240,105,60],"ok",6819,0.042304306668647644,47], +[[150,240,1,7],"ok",483,0.003022431783301138,24], +[[150,240,1,9],"ok",375,0.002343154658160762,29], +[[150,240,1,165],"ok",2787,0.0167331652819685,30], +[[150,240,1,170],"ok",2733,0.016417003187798537,34], +[[150,240,1,204],"ok",2733,0.016417003187798537,34], +[[150,240,1,90],"ok",2733,0.016417003187798537,34], +[[150,240,1,60],"ok",2733,0.016417003187798537,34], +[[150,240,7,9],"ok",411,0.0025644298259024922,29], +[[150,240,7,165],"ok",2805,0.016884015348955395,29], +[[150,240,7,170],"ok",2751,0.016517072313352473,31], +[[150,240,7,204],"ok",2751,0.016517072313352473,31], +[[150,240,7,90],"ok",2751,0.016517072313352473,31], +[[150,240,7,60],"ok",2751,0.016517072313352473,31], +[[150,240,9,165],"ok",1995,0.011997722663755482,31], +[[150,240,9,170],"ok",2031,0.012198459783390236,31], +[[150,240,9,204],"ok",2031,0.012198459783390236,31], +[[150,240,9,90],"ok",2031,0.012198459783390236,31], +[[150,240,9,60],"ok",2031,0.012198459783390236,31], +[[150,240,165,170],"ok",6819,0.042304306668647644,47], +[[150,240,165,204],"ok",6819,0.042304306668647644,47], +[[150,240,165,90],"ok",6819,0.042304306668647644,47], +[[150,240,165,60],"ok",6819,0.042304306668647644,47], +[[150,240,170,204],"ValueError",0,0.0,0], +[[150,240,170,90],"ValueError",0,0.0,0], +[[150,240,170,60],"ValueError",0,0.0,0], +[[150,240,204,90],"ValueError",0,0.0,0], +[[150,240,204,60],"ValueError",0,0.0,0], +[[150,240,90,60],"ValueError",0,0.0,0], +[[150,105,1,7],"ok",483,0.0029841278136721323,26], +[[150,105,1,9],"ok",465,0.002865580619025587,30], +[[150,105,1,165],"ok",2805,0.01710319247308328,29], +[[150,105,1,170],"ok",2805,0.01703284316273795,28], +[[150,105,1,204],"ok",2805,0.01710319247308328,29], +[[150,105,1,90],"ok",2805,0.01710319247308328,29], +[[150,105,1,60],"ok",2805,0.01703284316273795,28], +[[150,105,7,9],"ok",501,0.003119807731449209,31], +[[150,105,7,165],"ok",2823,0.017216859073079845,30], +[[150,105,7,170],"ok",2823,0.017191861591440535,28], +[[150,105,7,204],"ok",2823,0.017216859073079845,30], +[[150,105,7,90],"ok",2823,0.017216859073079845,30], +[[150,105,7,60],"ok",2823,0.017191861591440535,28], +[[150,105,9,165],"ok",2103,0.012733528296866968,32], +[[150,105,9,170],"ok",2103,0.01267518425811015,31], +[[150,105,9,204],"ok",2103,0.012733528296866968,32], +[[150,105,9,90],"ok",2103,0.012733528296866968,32], +[[150,105,9,60],"ok",2103,0.01267518425811015,31], +[[150,105,165,170],"ok",6819,0.042304306668647644,47], +[[150,105,165,204],"ValueError",0,0.0,0], +[[150,105,165,90],"ValueError",0,0.0,0], +[[150,105,165,60],"ok",6819,0.042304306668647644,47], +[[150,105,170,204],"ok",6819,0.042304306668647644,47], +[[150,105,170,90],"ok",6819,0.042304306668647644,47], +[[150,105,170,60],"ValueError",0,0.0,0], +[[150,105,204,90],"ValueError",0,0.0,0], +[[150,105,204,60],"ok",6819,0.042304306668647644,47], +[[150,105,90,60],"ok",6819,0.042304306668647644,47], +[[150,1,7,9],"ok",537,0.003371899356327035,25], +[[150,1,7,165],"ok",519,0.0032115624688257567,24], +[[150,1,7,170],"ok",447,0.0027491694410409218,25], +[[150,1,7,204],"ok",447,0.002762324647072101,25], +[[150,1,7,90],"ok",447,0.002762324647072101,25], +[[150,1,7,60],"ok",447,0.0027491694410409218,25], +[[150,1,9,165],"ok",411,0.002548460247497719,28], +[[150,1,9,170],"ok",429,0.002635957573684233,29], +[[150,1,9,204],"ok",429,0.002656202157489351,28], +[[150,1,9,90],"ok",429,0.002656202157489351,28], +[[150,1,9,60],"ok",429,0.002635957573684233,29], +[[150,1,165,170],"ok",2787,0.016745896737390294,31], +[[150,1,165,204],"ok",2805,0.01710319247308328,29], +[[150,1,165,90],"ok",2805,0.01710319247308328,29], +[[150,1,165,60],"ok",2787,0.016745896737390294,31], +[[150,1,170,204],"ok",2733,0.016417003187798537,34], +[[150,1,170,90],"ok",2733,0.016417003187798537,34], +[[150,1,170,60],"ValueError",0,0.0,0], +[[150,1,204,90],"ValueError",0,0.0,0], +[[150,1,204,60],"ok",2733,0.016417003187798537,34], +[[150,1,90,60],"ok",2733,0.016417003187798537,34], +[[150,7,9,165],"ok",447,0.0027772599898445156,30], +[[150,7,9,170],"ok",465,0.0028697495106561606,30], +[[150,7,9,204],"ok",465,0.0028848839957648638,30], +[[150,7,9,90],"ok",465,0.0028848839957648638,30], +[[150,7,9,60],"ok",465,0.0028697495106561606,30], +[[150,7,165,170],"ok",2787,0.016783036942021153,31], +[[150,7,165,204],"ok",2823,0.017216859073079845,30], +[[150,7,165,90],"ok",2823,0.017216859073079845,30], +[[150,7,165,60],"ok",2787,0.016783036942021153,31], +[[150,7,170,204],"ok",2751,0.016517072313352473,31], +[[150,7,170,90],"ok",2751,0.016517072313352473,31], +[[150,7,170,60],"ValueError",0,0.0,0], +[[150,7,204,90],"ValueError",0,0.0,0], +[[150,7,204,60],"ok",2751,0.016517072313352473,31], +[[150,7,90,60],"ok",2751,0.016517072313352473,31], +[[150,9,165,170],"ok",2085,0.012520419691628704,27], +[[150,9,165,204],"ok",2103,0.012733528296866968,32], +[[150,9,165,90],"ok",2103,0.012733528296866968,32], +[[150,9,165,60],"ok",2085,0.012520419691628704,27], +[[150,9,170,204],"ok",2031,0.012198459783390236,31], +[[150,9,170,90],"ok",2031,0.012198459783390236,31], +[[150,9,170,60],"ValueError",0,0.0,0], +[[150,9,204,90],"ValueError",0,0.0,0], +[[150,9,204,60],"ok",2031,0.012198459783390236,31], +[[150,9,90,60],"ok",2031,0.012198459783390236,31], +[[150,165,170,204],"ok",6819,0.042304306668647644,47], +[[150,165,170,90],"ok",6819,0.042304306668647644,47], +[[150,165,170,60],"ValueError",0,0.0,0], +[[150,165,204,90],"ValueError",0,0.0,0], +[[150,165,204,60],"ok",6819,0.042304306668647644,47], +[[150,165,90,60],"ok",6819,0.042304306668647644,47], +[[150,170,204,90],"ValueError",0,0.0,0], +[[150,170,204,60],"ValueError",0,0.0,0], +[[150,170,90,60],"ValueError",0,0.0,0], +[[150,204,90,60],"ValueError",0,0.0,0], +[[102,255,153,15],"ValueError",0,0.0,0], +[[102,255,153,240],"ValueError",0,0.0,0], +[[102,255,153,105],"ValueError",0,0.0,0], +[[102,255,153,1],"ValueError",0,0.0,0], +[[102,255,153,7],"ValueError",0,0.0,0], +[[102,255,153,9],"ValueError",0,0.0,0], +[[102,255,153,165],"ValueError",0,0.0,0], +[[102,255,153,170],"ValueError",0,0.0,0], +[[102,255,153,204],"ValueError",0,0.0,0], +[[102,255,153,90],"ValueError",0,0.0,0], +[[102,255,153,60],"ValueError",0,0.0,0], +[[102,255,15,240],"ValueError",0,0.0,0], +[[102,255,15,105],"ValueError",0,0.0,0], +[[102,255,15,1],"ok",2877,0.01752518801761321,30], +[[102,255,15,7],"ok",2877,0.017566482074060696,30], +[[102,255,15,9],"ok",2175,0.013247076121014332,32], +[[102,255,15,165],"ok",6819,0.042304306668647644,47], +[[102,255,15,170],"ok",6819,0.042304306668647644,47], +[[102,255,15,204],"ok",6819,0.042304306668647644,47], +[[102,255,15,90],"ok",6819,0.042304306668647644,47], +[[102,255,15,60],"ok",6819,0.042304306668647644,47], +[[102,255,240,105],"ValueError",0,0.0,0], +[[102,255,240,1],"ok",2877,0.01752518801761321,30], +[[102,255,240,7],"ok",2877,0.017566482074060696,30], +[[102,255,240,9],"ok",2175,0.013247076121014332,32], +[[102,255,240,165],"ok",6819,0.042304306668647644,47], +[[102,255,240,170],"ok",6819,0.042304306668647644,47], +[[102,255,240,204],"ok",6819,0.042304306668647644,47], +[[102,255,240,90],"ok",6819,0.042304306668647644,47], +[[102,255,240,60],"ok",6819,0.042304306668647644,47], +[[102,255,105,1],"ok",2877,0.01752518801761321,30], +[[102,255,105,7],"ok",2877,0.017566482074060696,30], +[[102,255,105,9],"ok",2175,0.013247076121014332,32], +[[102,255,105,165],"ok",6819,0.042304306668647644,47], +[[102,255,105,170],"ok",6819,0.042304306668647644,47], +[[102,255,105,204],"ok",6819,0.042304306668647644,47], +[[102,255,105,90],"ok",6819,0.042304306668647644,47], +[[102,255,105,60],"ok",6819,0.042304306668647644,47], +[[102,255,1,7],"ok",501,0.003125140322522035,27], +[[102,255,1,9],"ok",483,0.0030136162876444605,28], +[[102,255,1,165],"ok",2805,0.016948452908783385,31], +[[102,255,1,170],"ok",2841,0.017141963829090553,31], +[[102,255,1,204],"ok",2841,0.017141963829090553,31], +[[102,255,1,90],"ok",2805,0.016948452908783385,31], +[[102,255,1,60],"ok",2805,0.016948452908783385,31], +[[102,255,7,9],"ok",519,0.003235529181153718,28], +[[102,255,7,165],"ok",2823,0.017072376834351196,31], +[[102,255,7,170],"ok",2859,0.017275085514951213,31], +[[102,255,7,204],"ok",2859,0.017275085514951213,31], +[[102,255,7,90],"ok",2823,0.017072376834351196,31], +[[102,255,7,60],"ok",2823,0.017072376834351196,31], +[[102,255,9,165],"ok",2103,0.012683326256809402,28], +[[102,255,9,170],"ok",2139,0.01288017594384233,28], +[[102,255,9,204],"ok",2139,0.01288017594384233,28], +[[102,255,9,90],"ok",2103,0.012683326256809402,28], +[[102,255,9,60],"ok",2103,0.012683326256809402,28], +[[102,255,165,170],"ok",6819,0.042304306668647644,47], +[[102,255,165,204],"ok",6819,0.042304306668647644,47], +[[102,255,165,90],"ValueError",0,0.0,0], +[[102,255,165,60],"ValueError",0,0.0,0], +[[102,255,170,204],"ValueError",0,0.0,0], +[[102,255,170,90],"ok",6819,0.042304306668647644,47], +[[102,255,170,60],"ok",6819,0.042304306668647644,47], +[[102,255,204,90],"ok",6819,0.042304306668647644,47], +[[102,255,204,60],"ok",6819,0.042304306668647644,47], +[[102,255,90,60],"ValueError",0,0.0,0], +[[102,153,15,240],"ValueError",0,0.0,0], +[[102,153,15,105],"ValueError",0,0.0,0], +[[102,153,15,1],"ok",2877,0.01752518801761321,30], +[[102,153,15,7],"ok",2877,0.017566482074060696,30], +[[102,153,15,9],"ok",2175,0.013247076121014332,32], +[[102,153,15,165],"ok",6819,0.042304306668647644,47], +[[102,153,15,170],"ok",6819,0.042304306668647644,47], +[[102,153,15,204],"ok",6819,0.042304306668647644,47], +[[102,153,15,90],"ok",6819,0.042304306668647644,47], +[[102,153,15,60],"ok",6819,0.042304306668647644,47], +[[102,153,240,105],"ValueError",0,0.0,0], +[[102,153,240,1],"ok",2877,0.01752518801761321,30], +[[102,153,240,7],"ok",2877,0.017566482074060696,30], +[[102,153,240,9],"ok",2175,0.013247076121014332,32], +[[102,153,240,165],"ok",6819,0.042304306668647644,47], +[[102,153,240,170],"ok",6819,0.042304306668647644,47], +[[102,153,240,204],"ok",6819,0.042304306668647644,47], +[[102,153,240,90],"ok",6819,0.042304306668647644,47], +[[102,153,240,60],"ok",6819,0.042304306668647644,47], +[[102,153,105,1],"ok",2877,0.01752518801761321,30], +[[102,153,105,7],"ok",2877,0.017566482074060696,30], +[[102,153,105,9],"ok",2175,0.013247076121014332,32], +[[102,153,105,165],"ok",6819,0.042304306668647644,47], +[[102,153,105,170],"ok",6819,0.042304306668647644,47], +[[102,153,105,204],"ok",6819,0.042304306668647644,47], +[[102,153,105,90],"ok",6819,0.042304306668647644,47], +[[102,153,105,60],"ok",6819,0.042304306668647644,47], +[[102,153,1,7],"ok",501,0.003125140322522035,27], +[[102,153,1,9],"ok",483,0.0030136162876444605,28], +[[102,153,1,165],"ok",2805,0.016948452908783385,31], +[[102,153,1,170],"ok",2841,0.017141963829090553,31], +[[102,153,1,204],"ok",2841,0.017141963829090553,31], +[[102,153,1,90],"ok",2805,0.016948452908783385,31], +[[102,153,1,60],"ok",2805,0.016948452908783385,31], +[[102,153,7,9],"ok",519,0.003235529181153718,28], +[[102,153,7,165],"ok",2823,0.017072376834351196,31], +[[102,153,7,170],"ok",2859,0.017275085514951213,31], +[[102,153,7,204],"ok",2859,0.017275085514951213,31], +[[102,153,7,90],"ok",2823,0.017072376834351196,31], +[[102,153,7,60],"ok",2823,0.017072376834351196,31], +[[102,153,9,165],"ok",2103,0.012683326256809402,28], +[[102,153,9,170],"ok",2139,0.01288017594384233,28], +[[102,153,9,204],"ok",2139,0.01288017594384233,28], +[[102,153,9,90],"ok",2103,0.012683326256809402,28], +[[102,153,9,60],"ok",2103,0.012683326256809402,28], +[[102,153,165,170],"ok",6819,0.042304306668647644,47], +[[102,153,165,204],"ok",6819,0.042304306668647644,47], +[[102,153,165,90],"ValueError",0,0.0,0], +[[102,153,165,60],"ValueError",0,0.0,0], +[[102,153,170,204],"ValueError",0,0.0,0], +[[102,153,170,90],"ok",6819,0.042304306668647644,47], +[[102,153,170,60],"ok",6819,0.042304306668647644,47], +[[102,153,204,90],"ok",6819,0.042304306668647644,47], +[[102,153,204,60],"ok",6819,0.042304306668647644,47], +[[102,153,90,60],"ValueError",0,0.0,0], +[[102,15,240,105],"ValueError",0,0.0,0], +[[102,15,240,1],"ok",2877,0.01752518801761321,30], +[[102,15,240,7],"ok",2877,0.017566482074060696,30], +[[102,15,240,9],"ok",2175,0.013247076121014332,32], +[[102,15,240,165],"ok",6819,0.042304306668647644,47], +[[102,15,240,170],"ok",6819,0.042304306668647644,47], +[[102,15,240,204],"ok",6819,0.042304306668647644,47], +[[102,15,240,90],"ok",6819,0.042304306668647644,47], +[[102,15,240,60],"ok",6819,0.042304306668647644,47], +[[102,15,105,1],"ValueError",0,0.0,0], +[[102,15,105,7],"ValueError",0,0.0,0], +[[102,15,105,9],"ValueError",0,0.0,0], +[[102,15,105,165],"ValueError",0,0.0,0], +[[102,15,105,170],"ValueError",0,0.0,0], +[[102,15,105,204],"ValueError",0,0.0,0], +[[102,15,105,90],"ValueError",0,0.0,0], +[[102,15,105,60],"ValueError",0,0.0,0], +[[102,15,1,7],"ok",519,0.003180038638132154,27], +[[102,15,1,9],"ok",519,0.003180038638132154,27], +[[102,15,1,165],"ok",2787,0.016795294410392344,27], +[[102,15,1,170],"ok",2787,0.016795294410392344,27], +[[102,15,1,204],"ok",2787,0.016795294410392344,27], +[[102,15,1,90],"ok",2751,0.016582632214023837,27], +[[102,15,1,60],"ok",2751,0.016582632214023837,27], +[[102,15,7,9],"ok",519,0.003180038638132154,27], +[[102,15,7,165],"ok",2787,0.01682455755776663,27], +[[102,15,7,170],"ok",2787,0.01682455755776663,27], +[[102,15,7,204],"ok",2787,0.01682455755776663,27], +[[102,15,7,90],"ok",2751,0.016601617083107752,27], +[[102,15,7,60],"ok",2751,0.016601617083107752,27], +[[102,15,9,165],"ok",2085,0.012547480683573862,28], +[[102,15,9,170],"ok",2085,0.012547480683573862,28], +[[102,15,9,204],"ok",2085,0.012547480683573862,28], +[[102,15,9,90],"ok",2049,0.012332703481178374,28], +[[102,15,9,60],"ok",2049,0.012332703481178374,28], +[[102,15,165,170],"ValueError",0,0.0,0], +[[102,15,165,204],"ValueError",0,0.0,0], +[[102,15,165,90],"ok",6819,0.042304306668647644,47], +[[102,15,165,60],"ok",6819,0.042304306668647644,47], +[[102,15,170,204],"ValueError",0,0.0,0], +[[102,15,170,90],"ok",6819,0.042304306668647644,47], +[[102,15,170,60],"ok",6819,0.042304306668647644,47], +[[102,15,204,90],"ok",6819,0.042304306668647644,47], +[[102,15,204,60],"ok",6819,0.042304306668647644,47], +[[102,15,90,60],"ValueError",0,0.0,0], +[[102,240,105,1],"ok",2877,0.01752518801761321,30], +[[102,240,105,7],"ok",2877,0.017566482074060696,30], +[[102,240,105,9],"ok",2175,0.013247076121014332,32], +[[102,240,105,165],"ok",6819,0.042304306668647644,47], +[[102,240,105,170],"ok",6819,0.042304306668647644,47], +[[102,240,105,204],"ok",6819,0.042304306668647644,47], +[[102,240,105,90],"ok",6819,0.042304306668647644,47], +[[102,240,105,60],"ok",6819,0.042304306668647644,47], +[[102,240,1,7],"ok",483,0.003022431783301138,24], +[[102,240,1,9],"ok",375,0.002343154658160762,29], +[[102,240,1,165],"ok",2787,0.0167331652819685,30], +[[102,240,1,170],"ok",2733,0.016417003187798537,34], +[[102,240,1,204],"ok",2733,0.016417003187798537,34], +[[102,240,1,90],"ok",2733,0.016417003187798537,34], +[[102,240,1,60],"ok",2733,0.016417003187798537,34], +[[102,240,7,9],"ok",411,0.0025644298259024922,29], +[[102,240,7,165],"ok",2805,0.016884015348955395,29], +[[102,240,7,170],"ok",2751,0.016517072313352473,31], +[[102,240,7,204],"ok",2751,0.016517072313352473,31], +[[102,240,7,90],"ok",2751,0.016517072313352473,31], +[[102,240,7,60],"ok",2751,0.016517072313352473,31], +[[102,240,9,165],"ok",1995,0.011997722663755482,31], +[[102,240,9,170],"ok",2031,0.012198459783390236,31], +[[102,240,9,204],"ok",2031,0.012198459783390236,31], +[[102,240,9,90],"ok",2031,0.012198459783390236,31], +[[102,240,9,60],"ok",2031,0.012198459783390236,31], +[[102,240,165,170],"ok",6819,0.042304306668647644,47], +[[102,240,165,204],"ok",6819,0.042304306668647644,47], +[[102,240,165,90],"ok",6819,0.042304306668647644,47], +[[102,240,165,60],"ok",6819,0.042304306668647644,47], +[[102,240,170,204],"ValueError",0,0.0,0], +[[102,240,170,90],"ValueError",0,0.0,0], +[[102,240,170,60],"ValueError",0,0.0,0], +[[102,240,204,90],"ValueError",0,0.0,0], +[[102,240,204,60],"ValueError",0,0.0,0], +[[102,240,90,60],"ValueError",0,0.0,0], +[[102,105,1,7],"ok",519,0.003180038638132154,27], +[[102,105,1,9],"ok",519,0.003180038638132154,27], +[[102,105,1,165],"ok",2787,0.016795294410392344,27], +[[102,105,1,170],"ok",2787,0.016795294410392344,27], +[[102,105,1,204],"ok",2787,0.016795294410392344,27], +[[102,105,1,90],"ok",2751,0.016582632214023837,27], +[[102,105,1,60],"ok",2751,0.016582632214023837,27], +[[102,105,7,9],"ok",519,0.003180038638132154,27], +[[102,105,7,165],"ok",2787,0.01682455755776663,27], +[[102,105,7,170],"ok",2787,0.01682455755776663,27], +[[102,105,7,204],"ok",2787,0.01682455755776663,27], +[[102,105,7,90],"ok",2751,0.016601617083107752,27], +[[102,105,7,60],"ok",2751,0.016601617083107752,27], +[[102,105,9,165],"ok",2085,0.012547480683573862,28], +[[102,105,9,170],"ok",2085,0.012547480683573862,28], +[[102,105,9,204],"ok",2085,0.012547480683573862,28], +[[102,105,9,90],"ok",2049,0.012332703481178374,28], +[[102,105,9,60],"ok",2049,0.012332703481178374,28], +[[102,105,165,170],"ValueError",0,0.0,0], +[[102,105,165,204],"ValueError",0,0.0,0], +[[102,105,165,90],"ok",6819,0.042304306668647644,47], +[[102,105,165,60],"ok",6819,0.042304306668647644,47], +[[102,105,170,204],"ValueError",0,0.0,0], +[[102,105,170,90],"ok",6819,0.042304306668647644,47], +[[102,105,170,60],"ok",6819,0.042304306668647644,47], +[[102,105,204,90],"ok",6819,0.042304306668647644,47], +[[102,105,204,60],"ok",6819,0.042304306668647644,47], +[[102,105,90,60],"ValueError",0,0.0,0], +[[102,1,7,9],"ok",519,0.003180038638132154,27], +[[102,1,7,165],"ok",519,0.0031874612417381316,24], +[[102,1,7,170],"ok",465,0.002852333029396969,26], +[[102,1,7,204],"ok",465,0.002852333029396969,26], +[[102,1,7,90],"ok",429,0.002634638655056476,26], +[[102,1,7,60],"ok",429,0.002634638655056476,26], +[[102,1,9,165],"ok",411,0.0025323385979520436,27], +[[102,1,9,170],"ok",447,0.00274908087408382,27], +[[102,1,9,204],"ok",447,0.00274908087408382,27], +[[102,1,9,90],"ok",411,0.0025303975856317273,27], +[[102,1,9,60],"ok",411,0.0025303975856317273,27], +[[102,1,165,170],"ok",2787,0.016795294410392344,27], +[[102,1,165,204],"ok",2787,0.016795294410392344,27], +[[102,1,165,90],"ok",2805,0.016948452908783385,31], +[[102,1,165,60],"ok",2805,0.016948452908783385,31], +[[102,1,170,204],"ValueError",0,0.0,0], +[[102,1,170,90],"ok",2733,0.016417003187798537,34], +[[102,1,170,60],"ok",2733,0.016417003187798537,34], +[[102,1,204,90],"ok",2733,0.016417003187798537,34], +[[102,1,204,60],"ok",2733,0.016417003187798537,34], +[[102,1,90,60],"ValueError",0,0.0,0], +[[102,7,9,165],"ok",447,0.0027502212608289662,27], +[[102,7,9,170],"ok",483,0.0029662527519855315,27], +[[102,7,9,204],"ok",483,0.0029662527519855315,27], +[[102,7,9,90],"ok",447,0.0027484352364045006,27], +[[102,7,9,60],"ok",447,0.0027484352364045006,27], +[[102,7,165,170],"ok",2787,0.01682455755776663,27], +[[102,7,165,204],"ok",2787,0.01682455755776663,27], +[[102,7,165,90],"ok",2823,0.017072376834351196,31], +[[102,7,165,60],"ok",2823,0.017072376834351196,31], +[[102,7,170,204],"ValueError",0,0.0,0], +[[102,7,170,90],"ok",2751,0.016517072313352473,31], +[[102,7,170,60],"ok",2751,0.016517072313352473,31], +[[102,7,204,90],"ok",2751,0.016517072313352473,31], +[[102,7,204,60],"ok",2751,0.016517072313352473,31], +[[102,7,90,60],"ValueError",0,0.0,0], +[[102,9,165,170],"ok",2085,0.012547480683573862,28], +[[102,9,165,204],"ok",2085,0.012547480683573862,28], +[[102,9,165,90],"ok",2103,0.012683326256809402,28], +[[102,9,165,60],"ok",2103,0.012683326256809402,28], +[[102,9,170,204],"ValueError",0,0.0,0], +[[102,9,170,90],"ok",2031,0.012198459783390236,31], +[[102,9,170,60],"ok",2031,0.012198459783390236,31], +[[102,9,204,90],"ok",2031,0.012198459783390236,31], +[[102,9,204,60],"ok",2031,0.012198459783390236,31], +[[102,9,90,60],"ValueError",0,0.0,0], +[[102,165,170,204],"ValueError",0,0.0,0], +[[102,165,170,90],"ok",6819,0.042304306668647644,47], +[[102,165,170,60],"ok",6819,0.042304306668647644,47], +[[102,165,204,90],"ok",6819,0.042304306668647644,47], +[[102,165,204,60],"ok",6819,0.042304306668647644,47], +[[102,165,90,60],"ValueError",0,0.0,0], +[[102,170,204,90],"ValueError",0,0.0,0], +[[102,170,204,60],"ValueError",0,0.0,0], +[[102,170,90,60],"ValueError",0,0.0,0], +[[102,204,90,60],"ValueError",0,0.0,0], +[[255,153,15,240],"ValueError",0,0.0,0], +[[255,153,15,105],"ValueError",0,0.0,0], +[[255,153,15,1],"ok",2877,0.01752518801761321,30], +[[255,153,15,7],"ok",2877,0.017566482074060696,30], +[[255,153,15,9],"ok",2175,0.013247076121014332,32], +[[255,153,15,165],"ok",6819,0.042304306668647644,47], +[[255,153,15,170],"ok",6819,0.042304306668647644,47], +[[255,153,15,204],"ok",6819,0.042304306668647644,47], +[[255,153,15,90],"ok",6819,0.042304306668647644,47], +[[255,153,15,60],"ok",6819,0.042304306668647644,47], +[[255,153,240,105],"ValueError",0,0.0,0], +[[255,153,240,1],"ok",2877,0.01752518801761321,30], +[[255,153,240,7],"ok",2877,0.017566482074060696,30], +[[255,153,240,9],"ok",2175,0.013247076121014332,32], +[[255,153,240,165],"ok",6819,0.042304306668647644,47], +[[255,153,240,170],"ok",6819,0.042304306668647644,47], +[[255,153,240,204],"ok",6819,0.042304306668647644,47], +[[255,153,240,90],"ok",6819,0.042304306668647644,47], +[[255,153,240,60],"ok",6819,0.042304306668647644,47], +[[255,153,105,1],"ok",2877,0.01752518801761321,30], +[[255,153,105,7],"ok",2877,0.017566482074060696,30], +[[255,153,105,9],"ok",2175,0.013247076121014332,32], +[[255,153,105,165],"ok",6819,0.042304306668647644,47], +[[255,153,105,170],"ok",6819,0.042304306668647644,47], +[[255,153,105,204],"ok",6819,0.042304306668647644,47], +[[255,153,105,90],"ok",6819,0.042304306668647644,47], +[[255,153,105,60],"ok",6819,0.042304306668647644,47], +[[255,153,1,7],"ok",501,0.003125140322522035,27], +[[255,153,1,9],"ok",483,0.0030136162876444605,28], +[[255,153,1,165],"ok",2805,0.016948452908783385,31], +[[255,153,1,170],"ok",2841,0.017141963829090553,31], +[[255,153,1,204],"ok",2841,0.017141963829090553,31], +[[255,153,1,90],"ok",2805,0.016948452908783385,31], +[[255,153,1,60],"ok",2805,0.016948452908783385,31], +[[255,153,7,9],"ok",519,0.003235529181153718,28], +[[255,153,7,165],"ok",2823,0.017072376834351196,31], +[[255,153,7,170],"ok",2859,0.017275085514951213,31], +[[255,153,7,204],"ok",2859,0.017275085514951213,31], +[[255,153,7,90],"ok",2823,0.017072376834351196,31], +[[255,153,7,60],"ok",2823,0.017072376834351196,31], +[[255,153,9,165],"ok",2103,0.012683326256809402,28], +[[255,153,9,170],"ok",2139,0.01288017594384233,28], +[[255,153,9,204],"ok",2139,0.01288017594384233,28], +[[255,153,9,90],"ok",2103,0.012683326256809402,28], +[[255,153,9,60],"ok",2103,0.012683326256809402,28], +[[255,153,165,170],"ok",6819,0.042304306668647644,47], +[[255,153,165,204],"ok",6819,0.042304306668647644,47], +[[255,153,165,90],"ValueError",0,0.0,0], +[[255,153,165,60],"ValueError",0,0.0,0], +[[255,153,170,204],"ValueError",0,0.0,0], +[[255,153,170,90],"ok",6819,0.042304306668647644,47], +[[255,153,170,60],"ok",6819,0.042304306668647644,47], +[[255,153,204,90],"ok",6819,0.042304306668647644,47], +[[255,153,204,60],"ok",6819,0.042304306668647644,47], +[[255,153,90,60],"ValueError",0,0.0,0], +[[255,15,240,105],"ValueError",0,0.0,0], +[[255,15,240,1],"ValueError",0,0.0,0], +[[255,15,240,7],"ValueError",0,0.0,0], +[[255,15,240,9],"ValueError",0,0.0,0], +[[255,15,240,165],"ValueError",0,0.0,0], +[[255,15,240,170],"ValueError",0,0.0,0], +[[255,15,240,204],"ValueError",0,0.0,0], +[[255,15,240,90],"ValueError",0,0.0,0], +[[255,15,240,60],"ValueError",0,0.0,0], +[[255,15,105,1],"ok",2877,0.01752518801761321,30], +[[255,15,105,7],"ok",2877,0.017566482074060696,30], +[[255,15,105,9],"ok",2175,0.013247076121014332,32], +[[255,15,105,165],"ok",6819,0.042304306668647644,47], +[[255,15,105,170],"ok",6819,0.042304306668647644,47], +[[255,15,105,204],"ok",6819,0.042304306668647644,47], +[[255,15,105,90],"ok",6819,0.042304306668647644,47], +[[255,15,105,60],"ok",6819,0.042304306668647644,47], +[[255,15,1,7],"ok",465,0.002901257422002923,28], +[[255,15,1,9],"ok",465,0.002901257422002923,28], +[[255,15,1,165],"ok",2805,0.016933955074813156,31], +[[255,15,1,170],"ok",2805,0.016933955074813156,31], +[[255,15,1,204],"ok",2805,0.016921691631817944,31], +[[255,15,1,90],"ok",2805,0.016933955074813156,31], +[[255,15,1,60],"ok",2805,0.016921691631817944,31], +[[255,15,7,9],"ok",465,0.002901257422002923,28], +[[255,15,7,165],"ok",2805,0.016955069227654492,31], +[[255,15,7,170],"ok",2805,0.016955069227654492,31], +[[255,15,7,204],"ok",2805,0.01694240111232076,31], +[[255,15,7,90],"ok",2805,0.016955069227654492,31], +[[255,15,7,60],"ok",2805,0.01694240111232076,31], +[[255,15,9,165],"ok",2103,0.0126766791151392,28], +[[255,15,9,170],"ok",2103,0.0126766791151392,28], +[[255,15,9,204],"ok",2103,0.012662736964296484,28], +[[255,15,9,90],"ok",2103,0.0126766791151392,28], +[[255,15,9,60],"ok",2103,0.012662736964296484,28], +[[255,15,165,170],"ValueError",0,0.0,0], +[[255,15,165,204],"ok",6819,0.042304306668647644,47], +[[255,15,165,90],"ValueError",0,0.0,0], +[[255,15,165,60],"ok",6819,0.042304306668647644,47], +[[255,15,170,204],"ok",6819,0.042304306668647644,47], +[[255,15,170,90],"ValueError",0,0.0,0], +[[255,15,170,60],"ok",6819,0.042304306668647644,47], +[[255,15,204,90],"ok",6819,0.042304306668647644,47], +[[255,15,204,60],"ValueError",0,0.0,0], +[[255,15,90,60],"ok",6819,0.042304306668647644,47], +[[255,240,105,1],"ok",2877,0.01752518801761321,30], +[[255,240,105,7],"ok",2877,0.017566482074060696,30], +[[255,240,105,9],"ok",2175,0.013247076121014332,32], +[[255,240,105,165],"ok",6819,0.042304306668647644,47], +[[255,240,105,170],"ok",6819,0.042304306668647644,47], +[[255,240,105,204],"ok",6819,0.042304306668647644,47], +[[255,240,105,90],"ok",6819,0.042304306668647644,47], +[[255,240,105,60],"ok",6819,0.042304306668647644,47], +[[255,240,1,7],"ok",465,0.002901257422002923,28], +[[255,240,1,9],"ok",465,0.002901257422002923,28], +[[255,240,1,165],"ok",2805,0.016933955074813156,31], +[[255,240,1,170],"ok",2805,0.016933955074813156,31], +[[255,240,1,204],"ok",2805,0.016921691631817944,31], +[[255,240,1,90],"ok",2805,0.016933955074813156,31], +[[255,240,1,60],"ok",2805,0.016921691631817944,31], +[[255,240,7,9],"ok",465,0.002901257422002923,28], +[[255,240,7,165],"ok",2805,0.016955069227654492,31], +[[255,240,7,170],"ok",2805,0.016955069227654492,31], +[[255,240,7,204],"ok",2805,0.01694240111232076,31], +[[255,240,7,90],"ok",2805,0.016955069227654492,31], +[[255,240,7,60],"ok",2805,0.01694240111232076,31], +[[255,240,9,165],"ok",2103,0.0126766791151392,28], +[[255,240,9,170],"ok",2103,0.0126766791151392,28], +[[255,240,9,204],"ok",2103,0.012662736964296484,28], +[[255,240,9,90],"ok",2103,0.0126766791151392,28], +[[255,240,9,60],"ok",2103,0.012662736964296484,28], +[[255,240,165,170],"ValueError",0,0.0,0], +[[255,240,165,204],"ok",6819,0.042304306668647644,47], +[[255,240,165,90],"ValueError",0,0.0,0], +[[255,240,165,60],"ok",6819,0.042304306668647644,47], +[[255,240,170,204],"ok",6819,0.042304306668647644,47], +[[255,240,170,90],"ValueError",0,0.0,0], +[[255,240,170,60],"ok",6819,0.042304306668647644,47], +[[255,240,204,90],"ok",6819,0.042304306668647644,47], +[[255,240,204,60],"ValueError",0,0.0,0], +[[255,240,90,60],"ok",6819,0.042304306668647644,47], +[[255,105,1,7],"ok",483,0.0029841278136721323,26], +[[255,105,1,9],"ok",465,0.002865580619025587,30], +[[255,105,1,165],"ok",2805,0.01710319247308328,29], +[[255,105,1,170],"ok",2805,0.01703284316273795,28], +[[255,105,1,204],"ok",2805,0.01710319247308328,29], +[[255,105,1,90],"ok",2805,0.01710319247308328,29], +[[255,105,1,60],"ok",2805,0.01703284316273795,28], +[[255,105,7,9],"ok",501,0.003119807731449209,31], +[[255,105,7,165],"ok",2823,0.017216859073079845,30], +[[255,105,7,170],"ok",2823,0.017191861591440535,28], +[[255,105,7,204],"ok",2823,0.017216859073079845,30], +[[255,105,7,90],"ok",2823,0.017216859073079845,30], +[[255,105,7,60],"ok",2823,0.017191861591440535,28], +[[255,105,9,165],"ok",2103,0.012733528296866968,32], +[[255,105,9,170],"ok",2103,0.01267518425811015,31], +[[255,105,9,204],"ok",2103,0.012733528296866968,32], +[[255,105,9,90],"ok",2103,0.012733528296866968,32], +[[255,105,9,60],"ok",2103,0.01267518425811015,31], +[[255,105,165,170],"ok",6819,0.042304306668647644,47], +[[255,105,165,204],"ValueError",0,0.0,0], +[[255,105,165,90],"ValueError",0,0.0,0], +[[255,105,165,60],"ok",6819,0.042304306668647644,47], +[[255,105,170,204],"ok",6819,0.042304306668647644,47], +[[255,105,170,90],"ok",6819,0.042304306668647644,47], +[[255,105,170,60],"ValueError",0,0.0,0], +[[255,105,204,90],"ValueError",0,0.0,0], +[[255,105,204,60],"ok",6819,0.042304306668647644,47], +[[255,105,90,60],"ok",6819,0.042304306668647644,47], +[[255,1,7,9],"ok",465,0.002901257422002923,28], +[[255,1,7,165],"ok",447,0.0027797182239586715,27], +[[255,1,7,170],"ok",465,0.0028627081243952075,27], +[[255,1,7,204],"ok",465,0.0028855025743171336,27], +[[255,1,7,90],"ok",447,0.0027797182239586715,27], +[[255,1,7,60],"ok",447,0.0027552081142934726,27], +[[255,1,9,165],"ok",429,0.002675276957766759,29], +[[255,1,9,170],"ok",447,0.0027517916048394597,30], +[[255,1,9,204],"ok",447,0.002782089982921898,29], +[[255,1,9,90],"ok",429,0.002675276957766759,29], +[[255,1,9,60],"ok",429,0.002644007729026454,30], +[[255,1,165,170],"ok",2805,0.016933955074813156,31], +[[255,1,165,204],"ok",2805,0.01710319247308328,29], +[[255,1,165,90],"ValueError",0,0.0,0], +[[255,1,165,60],"ok",2805,0.016948452908783385,31], +[[255,1,170,204],"ok",2841,0.017141963829090553,31], +[[255,1,170,90],"ok",2805,0.016933955074813156,31], +[[255,1,170,60],"ok",2805,0.01703284316273795,28], +[[255,1,204,90],"ok",2805,0.01710319247308328,29], +[[255,1,204,60],"ok",2805,0.016921691631817944,31], +[[255,1,90,60],"ok",2805,0.016948452908783385,31], +[[255,7,9,165],"ok",465,0.0029081690442940844,32], +[[255,7,9,170],"ok",483,0.0029885632105307036,32], +[[255,7,9,204],"ok",483,0.0030142823375789995,32], +[[255,7,9,90],"ok",465,0.0029081690442940844,32], +[[255,7,9,60],"ok",465,0.0028806701542595787,32], +[[255,7,165,170],"ok",2805,0.016955069227654492,31], +[[255,7,165,204],"ok",2823,0.017216859073079845,30], +[[255,7,165,90],"ValueError",0,0.0,0], +[[255,7,165,60],"ok",2823,0.017072376834351196,31], +[[255,7,170,204],"ok",2859,0.017275085514951213,31], +[[255,7,170,90],"ok",2805,0.016955069227654492,31], +[[255,7,170,60],"ok",2823,0.017191861591440535,28], +[[255,7,204,90],"ok",2823,0.017216859073079845,30], +[[255,7,204,60],"ok",2805,0.01694240111232076,31], +[[255,7,90,60],"ok",2823,0.017072376834351196,31], +[[255,9,165,170],"ok",2103,0.0126766791151392,28], +[[255,9,165,204],"ok",2103,0.012733528296866968,32], +[[255,9,165,90],"ValueError",0,0.0,0], +[[255,9,165,60],"ok",2103,0.012683326256809402,28], +[[255,9,170,204],"ok",2139,0.01288017594384233,28], +[[255,9,170,90],"ok",2103,0.0126766791151392,28], +[[255,9,170,60],"ok",2103,0.01267518425811015,31], +[[255,9,204,90],"ok",2103,0.012733528296866968,32], +[[255,9,204,60],"ok",2103,0.012662736964296484,28], +[[255,9,90,60],"ok",2103,0.012683326256809402,28], +[[255,165,170,204],"ok",6819,0.042304306668647644,47], +[[255,165,170,90],"ValueError",0,0.0,0], +[[255,165,170,60],"ok",6819,0.042304306668647644,47], +[[255,165,204,90],"ValueError",0,0.0,0], +[[255,165,204,60],"ok",6819,0.042304306668647644,47], +[[255,165,90,60],"ValueError",0,0.0,0], +[[255,170,204,90],"ok",6819,0.042304306668647644,47], +[[255,170,204,60],"ok",6819,0.042304306668647644,47], +[[255,170,90,60],"ok",6819,0.042304306668647644,47], +[[255,204,90,60],"ok",6819,0.042304306668647644,47], +[[153,15,240,105],"ValueError",0,0.0,0], +[[153,15,240,1],"ok",2877,0.01752518801761321,30], +[[153,15,240,7],"ok",2877,0.017566482074060696,30], +[[153,15,240,9],"ok",2175,0.013247076121014332,32], +[[153,15,240,165],"ok",6819,0.042304306668647644,47], +[[153,15,240,170],"ok",6819,0.042304306668647644,47], +[[153,15,240,204],"ok",6819,0.042304306668647644,47], +[[153,15,240,90],"ok",6819,0.042304306668647644,47], +[[153,15,240,60],"ok",6819,0.042304306668647644,47], +[[153,15,105,1],"ok",2877,0.01752518801761321,30], +[[153,15,105,7],"ok",2877,0.017566482074060696,30], +[[153,15,105,9],"ok",2175,0.013247076121014332,32], +[[153,15,105,165],"ok",6819,0.042304306668647644,47], +[[153,15,105,170],"ok",6819,0.042304306668647644,47], +[[153,15,105,204],"ok",6819,0.042304306668647644,47], +[[153,15,105,90],"ok",6819,0.042304306668647644,47], +[[153,15,105,60],"ok",6819,0.042304306668647644,47], +[[153,15,1,7],"ok",537,0.003371899356327035,25], +[[153,15,1,9],"ok",537,0.003371899356327035,25], +[[153,15,1,165],"ok",2787,0.016745896737390294,31], +[[153,15,1,170],"ok",2787,0.016745896737390294,31], +[[153,15,1,204],"ok",2787,0.016750416912553245,31], +[[153,15,1,90],"ok",2787,0.016750416912553245,31], +[[153,15,1,60],"ok",2787,0.016745896737390294,31], +[[153,15,7,9],"ok",537,0.003371899356327035,25], +[[153,15,7,165],"ok",2787,0.016783036942021153,31], +[[153,15,7,170],"ok",2787,0.016783036942021153,31], +[[153,15,7,204],"ok",2787,0.016787577541318266,31], +[[153,15,7,90],"ok",2787,0.016787577541318266,31], +[[153,15,7,60],"ok",2787,0.016783036942021153,31], +[[153,15,9,165],"ok",2085,0.012520419691628704,27], +[[153,15,9,170],"ok",2085,0.012520419691628704,27], +[[153,15,9,204],"ok",2085,0.012523060375959016,27], +[[153,15,9,90],"ok",2085,0.012523060375959016,27], +[[153,15,9,60],"ok",2085,0.012520419691628704,27], +[[153,15,165,170],"ValueError",0,0.0,0], +[[153,15,165,204],"ok",6819,0.042304306668647644,47], +[[153,15,165,90],"ok",6819,0.042304306668647644,47], +[[153,15,165,60],"ValueError",0,0.0,0], +[[153,15,170,204],"ok",6819,0.042304306668647644,47], +[[153,15,170,90],"ok",6819,0.042304306668647644,47], +[[153,15,170,60],"ValueError",0,0.0,0], +[[153,15,204,90],"ValueError",0,0.0,0], +[[153,15,204,60],"ok",6819,0.042304306668647644,47], +[[153,15,90,60],"ok",6819,0.042304306668647644,47], +[[153,240,105,1],"ValueError",0,0.0,0], +[[153,240,105,7],"ValueError",0,0.0,0], +[[153,240,105,9],"ValueError",0,0.0,0], +[[153,240,105,165],"ValueError",0,0.0,0], +[[153,240,105,170],"ValueError",0,0.0,0], +[[153,240,105,204],"ValueError",0,0.0,0], +[[153,240,105,90],"ValueError",0,0.0,0], +[[153,240,105,60],"ValueError",0,0.0,0], +[[153,240,1,7],"ok",339,0.0020805928374525995,32], +[[153,240,1,9],"ok",501,0.003074228572705839,27], +[[153,240,1,165],"ok",2751,0.016576979535518562,27], +[[153,240,1,170],"ok",2751,0.01659288693081057,27], +[[153,240,1,204],"ok",2751,0.016576979535518562,27], +[[153,240,1,90],"ok",2751,0.01659288693081057,27], +[[153,240,1,60],"ok",2751,0.016576979535518562,27], +[[153,240,7,9],"ok",357,0.0021901308986981833,28], +[[153,240,7,165],"ok",2679,0.01618752953793495,30], +[[153,240,7,170],"ok",2679,0.01619078227751419,30], +[[153,240,7,204],"ok",2679,0.01618752953793495,30], +[[153,240,7,90],"ok",2679,0.01619078227751419,30], +[[153,240,7,60],"ok",2679,0.01618752953793495,30], +[[153,240,9,165],"ok",2049,0.012329202589781263,28], +[[153,240,9,170],"ok",2049,0.012328930993417198,28], +[[153,240,9,204],"ok",2049,0.012329202589781263,28], +[[153,240,9,90],"ok",2049,0.012328930993417198,28], +[[153,240,9,60],"ok",2049,0.012329202589781263,28], +[[153,240,165,170],"ok",6819,0.042304306668647644,47], +[[153,240,165,204],"ValueError",0,0.0,0], +[[153,240,165,90],"ok",6819,0.042304306668647644,47], +[[153,240,165,60],"ValueError",0,0.0,0], +[[153,240,170,204],"ok",6819,0.042304306668647644,47], +[[153,240,170,90],"ValueError",0,0.0,0], +[[153,240,170,60],"ok",6819,0.042304306668647644,47], +[[153,240,204,90],"ok",6819,0.042304306668647644,47], +[[153,240,204,60],"ValueError",0,0.0,0], +[[153,240,90,60],"ok",6819,0.042304306668647644,47], +[[153,105,1,7],"ok",339,0.0020805928374525995,32], +[[153,105,1,9],"ok",501,0.003074228572705839,27], +[[153,105,1,165],"ok",2751,0.016576979535518562,27], +[[153,105,1,170],"ok",2751,0.01659288693081057,27], +[[153,105,1,204],"ok",2751,0.016576979535518562,27], +[[153,105,1,90],"ok",2751,0.01659288693081057,27], +[[153,105,1,60],"ok",2751,0.016576979535518562,27], +[[153,105,7,9],"ok",357,0.0021901308986981833,28], +[[153,105,7,165],"ok",2679,0.01618752953793495,30], +[[153,105,7,170],"ok",2679,0.01619078227751419,30], +[[153,105,7,204],"ok",2679,0.01618752953793495,30], +[[153,105,7,90],"ok",2679,0.01619078227751419,30], +[[153,105,7,60],"ok",2679,0.01618752953793495,30], +[[153,105,9,165],"ok",2049,0.012329202589781263,28], +[[153,105,9,170],"ok",2049,0.012328930993417198,28], +[[153,105,9,204],"ok",2049,0.012329202589781263,28], +[[153,105,9,90],"ok",2049,0.012328930993417198,28], +[[153,105,9,60],"ok",2049,0.012329202589781263,28], +[[153,105,165,170],"ok",6819,0.042304306668647644,47], +[[153,105,165,204],"ValueError",0,0.0,0], +[[153,105,165,90],"ok",6819,0.042304306668647644,47], +[[153,105,165,60],"ValueError",0,0.0,0], +[[153,105,170,204],"ok",6819,0.042304306668647644,47], +[[153,105,170,90],"ValueError",0,0.0,0], +[[153,105,170,60],"ok",6819,0.042304306668647644,47], +[[153,105,204,90],"ok",6819,0.042304306668647644,47], +[[153,105,204,60],"ValueError",0,0.0,0], +[[153,105,90,60],"ok",6819,0.042304306668647644,47], +[[153,1,7,9],"ok",537,0.003371899356327035,25], +[[153,1,7,165],"ok",411,0.002526412368989372,30], +[[153,1,7,170],"ok",429,0.002636838596320301,30], +[[153,1,7,204],"ok",429,0.002636151627672556,30], +[[153,1,7,90],"ok",411,0.0025291681983320986,30], +[[153,1,7,60],"ok",411,0.002526412368989372,30], +[[153,1,9,165],"ok",483,0.0029720448164496927,26], +[[153,1,9,170],"ok",501,0.0030811147852755623,26], +[[153,1,9,204],"ok",501,0.003081743627343203,26], +[[153,1,9,90],"ok",483,0.0029739079008699876,26], +[[153,1,9,60],"ok",483,0.0029720448164496927,26], +[[153,1,165,170],"ok",2787,0.016745896737390294,31], +[[153,1,165,204],"ok",2751,0.016576979535518562,27], +[[153,1,165,90],"ok",2805,0.016948452908783385,31], +[[153,1,165,60],"ValueError",0,0.0,0], +[[153,1,170,204],"ok",2841,0.017141963829090553,31], +[[153,1,170,90],"ok",2751,0.01659288693081057,27], +[[153,1,170,60],"ok",2787,0.016745896737390294,31], +[[153,1,204,90],"ok",2787,0.016750416912553245,31], +[[153,1,204,60],"ok",2751,0.016576979535518562,27], +[[153,1,90,60],"ok",2805,0.016948452908783385,31], +[[153,7,9,165],"ok",429,0.002637074086390634,28], +[[153,7,9,170],"ok",447,0.002747491589229434,28], +[[153,7,9,204],"ok",447,0.0027467756899731133,28], +[[153,7,9,90],"ok",429,0.0026399512201251136,28], +[[153,7,9,60],"ok",429,0.002637074086390634,28], +[[153,7,165,170],"ok",2787,0.016783036942021153,31], +[[153,7,165,204],"ok",2679,0.01618752953793495,30], +[[153,7,165,90],"ok",2823,0.017072376834351196,31], +[[153,7,165,60],"ValueError",0,0.0,0], +[[153,7,170,204],"ok",2859,0.017275085514951213,31], +[[153,7,170,90],"ok",2679,0.01619078227751419,30], +[[153,7,170,60],"ok",2787,0.016783036942021153,31], +[[153,7,204,90],"ok",2787,0.016787577541318266,31], +[[153,7,204,60],"ok",2679,0.01618752953793495,30], +[[153,7,90,60],"ok",2823,0.017072376834351196,31], +[[153,9,165,170],"ok",2085,0.012520419691628704,27], +[[153,9,165,204],"ok",2049,0.012329202589781263,28], +[[153,9,165,90],"ok",2103,0.012683326256809402,28], +[[153,9,165,60],"ValueError",0,0.0,0], +[[153,9,170,204],"ok",2139,0.01288017594384233,28], +[[153,9,170,90],"ok",2049,0.012328930993417198,28], +[[153,9,170,60],"ok",2085,0.012520419691628704,27], +[[153,9,204,90],"ok",2085,0.012523060375959016,27], +[[153,9,204,60],"ok",2049,0.012329202589781263,28], +[[153,9,90,60],"ok",2103,0.012683326256809402,28], +[[153,165,170,204],"ok",6819,0.042304306668647644,47], +[[153,165,170,90],"ok",6819,0.042304306668647644,47], +[[153,165,170,60],"ValueError",0,0.0,0], +[[153,165,204,90],"ok",6819,0.042304306668647644,47], +[[153,165,204,60],"ValueError",0,0.0,0], +[[153,165,90,60],"ValueError",0,0.0,0], +[[153,170,204,90],"ok",6819,0.042304306668647644,47], +[[153,170,204,60],"ok",6819,0.042304306668647644,47], +[[153,170,90,60],"ok",6819,0.042304306668647644,47], +[[153,204,90,60],"ok",6819,0.042304306668647644,47], +[[15,240,105,1],"ok",2877,0.01752518801761321,30], +[[15,240,105,7],"ok",2877,0.017566482074060696,30], +[[15,240,105,9],"ok",2175,0.013247076121014332,32], +[[15,240,105,165],"ok",6819,0.042304306668647644,47], +[[15,240,105,170],"ok",6819,0.042304306668647644,47], +[[15,240,105,204],"ok",6819,0.042304306668647644,47], +[[15,240,105,90],"ok",6819,0.042304306668647644,47], +[[15,240,105,60],"ok",6819,0.042304306668647644,47], +[[15,240,1,7],"ok",465,0.002901257422002923,28], +[[15,240,1,9],"ok",465,0.002901257422002923,28], +[[15,240,1,165],"ok",2805,0.016933955074813156,31], +[[15,240,1,170],"ok",2805,0.016933955074813156,31], +[[15,240,1,204],"ok",2805,0.016921691631817944,31], +[[15,240,1,90],"ok",2805,0.016933955074813156,31], +[[15,240,1,60],"ok",2805,0.016921691631817944,31], +[[15,240,7,9],"ok",465,0.002901257422002923,28], +[[15,240,7,165],"ok",2805,0.016955069227654492,31], +[[15,240,7,170],"ok",2805,0.016955069227654492,31], +[[15,240,7,204],"ok",2805,0.01694240111232076,31], +[[15,240,7,90],"ok",2805,0.016955069227654492,31], +[[15,240,7,60],"ok",2805,0.01694240111232076,31], +[[15,240,9,165],"ok",2103,0.0126766791151392,28], +[[15,240,9,170],"ok",2103,0.0126766791151392,28], +[[15,240,9,204],"ok",2103,0.012662736964296484,28], +[[15,240,9,90],"ok",2103,0.0126766791151392,28], +[[15,240,9,60],"ok",2103,0.012662736964296484,28], +[[15,240,165,170],"ValueError",0,0.0,0], +[[15,240,165,204],"ok",6819,0.042304306668647644,47], +[[15,240,165,90],"ValueError",0,0.0,0], +[[15,240,165,60],"ok",6819,0.042304306668647644,47], +[[15,240,170,204],"ok",6819,0.042304306668647644,47], +[[15,240,170,90],"ValueError",0,0.0,0], +[[15,240,170,60],"ok",6819,0.042304306668647644,47], +[[15,240,204,90],"ok",6819,0.042304306668647644,47], +[[15,240,204,60],"ValueError",0,0.0,0], +[[15,240,90,60],"ok",6819,0.042304306668647644,47], +[[15,105,1,7],"ok",519,0.003180038638132154,27], +[[15,105,1,9],"ok",519,0.003180038638132154,27], +[[15,105,1,165],"ok",2787,0.016795294410392344,27], +[[15,105,1,170],"ok",2787,0.016795294410392344,27], +[[15,105,1,204],"ok",2787,0.016795294410392344,27], +[[15,105,1,90],"ok",2751,0.016582632214023837,27], +[[15,105,1,60],"ok",2751,0.016582632214023837,27], +[[15,105,7,9],"ok",519,0.003180038638132154,27], +[[15,105,7,165],"ok",2787,0.01682455755776663,27], +[[15,105,7,170],"ok",2787,0.01682455755776663,27], +[[15,105,7,204],"ok",2787,0.01682455755776663,27], +[[15,105,7,90],"ok",2751,0.016601617083107752,27], +[[15,105,7,60],"ok",2751,0.016601617083107752,27], +[[15,105,9,165],"ok",2085,0.012547480683573862,28], +[[15,105,9,170],"ok",2085,0.012547480683573862,28], +[[15,105,9,204],"ok",2085,0.012547480683573862,28], +[[15,105,9,90],"ok",2049,0.012332703481178374,28], +[[15,105,9,60],"ok",2049,0.012332703481178374,28], +[[15,105,165,170],"ValueError",0,0.0,0], +[[15,105,165,204],"ValueError",0,0.0,0], +[[15,105,165,90],"ok",6819,0.042304306668647644,47], +[[15,105,165,60],"ok",6819,0.042304306668647644,47], +[[15,105,170,204],"ValueError",0,0.0,0], +[[15,105,170,90],"ok",6819,0.042304306668647644,47], +[[15,105,170,60],"ok",6819,0.042304306668647644,47], +[[15,105,204,90],"ok",6819,0.042304306668647644,47], +[[15,105,204,60],"ok",6819,0.042304306668647644,47], +[[15,105,90,60],"ValueError",0,0.0,0], +[[15,1,7,9],"ValueError",0,0.0,0], +[[15,1,7,165],"ok",501,0.003079687751614657,26], +[[15,1,7,170],"ok",501,0.003079687751614657,26], +[[15,1,7,204],"ok",501,0.0030791017958181066,26], +[[15,1,7,90],"ok",483,0.002971212547754731,26], +[[15,1,7,60],"ok",483,0.002968182458218449,26], +[[15,1,9,165],"ok",501,0.003079687751614657,26], +[[15,1,9,170],"ok",501,0.003079687751614657,26], +[[15,1,9,204],"ok",501,0.0030791017958181066,26], +[[15,1,9,90],"ok",483,0.002971212547754731,26], +[[15,1,9,60],"ok",483,0.002968182458218449,26], +[[15,1,165,170],"ValueError",0,0.0,0], +[[15,1,165,204],"ok",2787,0.016795294410392344,27], +[[15,1,165,90],"ok",2805,0.016933955074813156,31], +[[15,1,165,60],"ok",2787,0.016745896737390294,31], +[[15,1,170,204],"ok",2787,0.016795294410392344,27], +[[15,1,170,90],"ok",2805,0.016933955074813156,31], +[[15,1,170,60],"ok",2787,0.016745896737390294,31], +[[15,1,204,90],"ok",2787,0.016750416912553245,31], +[[15,1,204,60],"ok",2805,0.016921691631817944,31], +[[15,1,90,60],"ok",2751,0.016582632214023837,27], +[[15,7,9,165],"ok",501,0.003079687751614657,26], +[[15,7,9,170],"ok",501,0.003079687751614657,26], +[[15,7,9,204],"ok",501,0.0030791017958181066,26], +[[15,7,9,90],"ok",483,0.002971212547754731,26], +[[15,7,9,60],"ok",483,0.002968182458218449,26], +[[15,7,165,170],"ValueError",0,0.0,0], +[[15,7,165,204],"ok",2787,0.01682455755776663,27], +[[15,7,165,90],"ok",2805,0.016955069227654492,31], +[[15,7,165,60],"ok",2787,0.016783036942021153,31], +[[15,7,170,204],"ok",2787,0.01682455755776663,27], +[[15,7,170,90],"ok",2805,0.016955069227654492,31], +[[15,7,170,60],"ok",2787,0.016783036942021153,31], +[[15,7,204,90],"ok",2787,0.016787577541318266,31], +[[15,7,204,60],"ok",2805,0.01694240111232076,31], +[[15,7,90,60],"ok",2751,0.016601617083107752,27], +[[15,9,165,170],"ValueError",0,0.0,0], +[[15,9,165,204],"ok",2085,0.012547480683573862,28], +[[15,9,165,90],"ok",2103,0.0126766791151392,28], +[[15,9,165,60],"ok",2085,0.012520419691628704,27], +[[15,9,170,204],"ok",2085,0.012547480683573862,28], +[[15,9,170,90],"ok",2103,0.0126766791151392,28], +[[15,9,170,60],"ok",2085,0.012520419691628704,27], +[[15,9,204,90],"ok",2085,0.012523060375959016,27], +[[15,9,204,60],"ok",2103,0.012662736964296484,28], +[[15,9,90,60],"ok",2049,0.012332703481178374,28], +[[15,165,170,204],"ValueError",0,0.0,0], +[[15,165,170,90],"ValueError",0,0.0,0], +[[15,165,170,60],"ValueError",0,0.0,0], +[[15,165,204,90],"ok",6819,0.042304306668647644,47], +[[15,165,204,60],"ok",6819,0.042304306668647644,47], +[[15,165,90,60],"ok",6819,0.042304306668647644,47], +[[15,170,204,90],"ok",6819,0.042304306668647644,47], +[[15,170,204,60],"ok",6819,0.042304306668647644,47], +[[15,170,90,60],"ok",6819,0.042304306668647644,47], +[[15,204,90,60],"ok",6819,0.042304306668647644,47], +[[240,105,1,7],"ok",339,0.0020805928374525995,32], +[[240,105,1,9],"ok",501,0.003074228572705839,27], +[[240,105,1,165],"ok",2751,0.016576979535518562,27], +[[240,105,1,170],"ok",2751,0.01659288693081057,27], +[[240,105,1,204],"ok",2751,0.016576979535518562,27], +[[240,105,1,90],"ok",2751,0.01659288693081057,27], +[[240,105,1,60],"ok",2751,0.016576979535518562,27], +[[240,105,7,9],"ok",357,0.0021901308986981833,28], +[[240,105,7,165],"ok",2679,0.01618752953793495,30], +[[240,105,7,170],"ok",2679,0.01619078227751419,30], +[[240,105,7,204],"ok",2679,0.01618752953793495,30], +[[240,105,7,90],"ok",2679,0.01619078227751419,30], +[[240,105,7,60],"ok",2679,0.01618752953793495,30], +[[240,105,9,165],"ok",2049,0.012329202589781263,28], +[[240,105,9,170],"ok",2049,0.012328930993417198,28], +[[240,105,9,204],"ok",2049,0.012329202589781263,28], +[[240,105,9,90],"ok",2049,0.012328930993417198,28], +[[240,105,9,60],"ok",2049,0.012329202589781263,28], +[[240,105,165,170],"ok",6819,0.042304306668647644,47], +[[240,105,165,204],"ValueError",0,0.0,0], +[[240,105,165,90],"ok",6819,0.042304306668647644,47], +[[240,105,165,60],"ValueError",0,0.0,0], +[[240,105,170,204],"ok",6819,0.042304306668647644,47], +[[240,105,170,90],"ValueError",0,0.0,0], +[[240,105,170,60],"ok",6819,0.042304306668647644,47], +[[240,105,204,90],"ok",6819,0.042304306668647644,47], +[[240,105,204,60],"ValueError",0,0.0,0], +[[240,105,90,60],"ok",6819,0.042304306668647644,47], +[[240,1,7,9],"ok",465,0.002901257422002923,28], +[[240,1,7,165],"ok",411,0.002522046136433753,28], +[[240,1,7,170],"ok",339,0.002080781578610524,31], +[[240,1,7,204],"ok",339,0.0020781270409234165,31], +[[240,1,7,90],"ok",339,0.002080781578610524,31], +[[240,1,7,60],"ok",339,0.0020781270409234165,31], +[[240,1,9,165],"ok",393,0.002421822812306129,27], +[[240,1,9,170],"ok",411,0.002530538633767787,27], +[[240,1,9,204],"ok",411,0.002528473128064534,27], +[[240,1,9,90],"ok",411,0.002530538633767787,27], +[[240,1,9,60],"ok",411,0.002528473128064534,27], +[[240,1,165,170],"ok",2805,0.016933955074813156,31], +[[240,1,165,204],"ok",2751,0.016576979535518562,27], +[[240,1,165,90],"ok",2805,0.016933955074813156,31], +[[240,1,165,60],"ok",2751,0.016576979535518562,27], +[[240,1,170,204],"ok",2733,0.016417003187798537,34], +[[240,1,170,90],"ValueError",0,0.0,0], +[[240,1,170,60],"ok",2733,0.016417003187798537,34], +[[240,1,204,90],"ok",2733,0.016417003187798537,34], +[[240,1,204,60],"ValueError",0,0.0,0], +[[240,1,90,60],"ok",2733,0.016417003187798537,34], +[[240,7,9,165],"ok",339,0.0020854261406500485,30], +[[240,7,9,170],"ok",357,0.0021953926745777452,30], +[[240,7,9,204],"ok",357,0.002192586194154466,30], +[[240,7,9,90],"ok",357,0.0021953926745777452,30], +[[240,7,9,60],"ok",357,0.002192586194154466,30], +[[240,7,165,170],"ok",2805,0.016955069227654492,31], +[[240,7,165,204],"ok",2679,0.01618752953793495,30], +[[240,7,165,90],"ok",2805,0.016955069227654492,31], +[[240,7,165,60],"ok",2679,0.01618752953793495,30], +[[240,7,170,204],"ok",2751,0.016517072313352473,31], +[[240,7,170,90],"ValueError",0,0.0,0], +[[240,7,170,60],"ok",2751,0.016517072313352473,31], +[[240,7,204,90],"ok",2751,0.016517072313352473,31], +[[240,7,204,60],"ValueError",0,0.0,0], +[[240,7,90,60],"ok",2751,0.016517072313352473,31], +[[240,9,165,170],"ok",2103,0.0126766791151392,28], +[[240,9,165,204],"ok",2049,0.012329202589781263,28], +[[240,9,165,90],"ok",2103,0.0126766791151392,28], +[[240,9,165,60],"ok",2049,0.012329202589781263,28], +[[240,9,170,204],"ok",2031,0.012198459783390236,31], +[[240,9,170,90],"ValueError",0,0.0,0], +[[240,9,170,60],"ok",2031,0.012198459783390236,31], +[[240,9,204,90],"ok",2031,0.012198459783390236,31], +[[240,9,204,60],"ValueError",0,0.0,0], +[[240,9,90,60],"ok",2031,0.012198459783390236,31], +[[240,165,170,204],"ok",6819,0.042304306668647644,47], +[[240,165,170,90],"ValueError",0,0.0,0], +[[240,165,170,60],"ok",6819,0.042304306668647644,47], +[[240,165,204,90],"ok",6819,0.042304306668647644,47], +[[240,165,204,60],"ValueError",0,0.0,0], +[[240,165,90,60],"ok",6819,0.042304306668647644,47], +[[240,170,204,90],"ValueError",0,0.0,0], +[[240,170,204,60],"ValueError",0,0.0,0], +[[240,170,90,60],"ValueError",0,0.0,0], +[[240,204,90,60],"ValueError",0,0.0,0], +[[105,1,7,9],"ok",519,0.003180038638132154,27], +[[105,1,7,165],"ok",411,0.002523357343266197,25], +[[105,1,7,170],"ok",411,0.0025316256357779676,25], +[[105,1,7,204],"ok",411,0.002523357343266197,25], +[[105,1,7,90],"ok",393,0.0024139547465349964,25], +[[105,1,7,60],"ok",393,0.0024206801378870435,25], +[[105,1,9,165],"ok",483,0.0029692793694288673,27], +[[105,1,9,170],"ok",483,0.002975149263665433,27], +[[105,1,9,204],"ok",483,0.0029692793694288673,27], +[[105,1,9,90],"ok",465,0.002858446621236299,27], +[[105,1,9,60],"ok",465,0.002864673590696809,27], +[[105,1,165,170],"ok",2787,0.016795294410392344,27], +[[105,1,165,204],"ValueError",0,0.0,0], +[[105,1,165,90],"ok",2805,0.01710319247308328,29], +[[105,1,165,60],"ok",2751,0.016576979535518562,27], +[[105,1,170,204],"ok",2787,0.016795294410392344,27], +[[105,1,170,90],"ok",2751,0.01659288693081057,27], +[[105,1,170,60],"ok",2805,0.01703284316273795,28], +[[105,1,204,90],"ok",2805,0.01710319247308328,29], +[[105,1,204,60],"ok",2751,0.016576979535518562,27], +[[105,1,90,60],"ok",2751,0.016582632214023837,27], +[[105,7,9,165],"ok",429,0.0026482941464605614,28], +[[105,7,9,170],"ok",429,0.0026565464720112453,27], +[[105,7,9,204],"ok",429,0.0026482941464605614,28], +[[105,7,9,90],"ok",411,0.0025383489069366605,28], +[[105,7,9,60],"ok",411,0.0025457760243145495,27], +[[105,7,165,170],"ok",2787,0.01682455755776663,27], +[[105,7,165,204],"ValueError",0,0.0,0], +[[105,7,165,90],"ok",2823,0.017216859073079845,30], +[[105,7,165,60],"ok",2679,0.01618752953793495,30], +[[105,7,170,204],"ok",2787,0.01682455755776663,27], +[[105,7,170,90],"ok",2679,0.01619078227751419,30], +[[105,7,170,60],"ok",2823,0.017191861591440535,28], +[[105,7,204,90],"ok",2823,0.017216859073079845,30], +[[105,7,204,60],"ok",2679,0.01618752953793495,30], +[[105,7,90,60],"ok",2751,0.016601617083107752,27], +[[105,9,165,170],"ok",2085,0.012547480683573862,28], +[[105,9,165,204],"ValueError",0,0.0,0], +[[105,9,165,90],"ok",2103,0.012733528296866968,32], +[[105,9,165,60],"ok",2049,0.012329202589781263,28], +[[105,9,170,204],"ok",2085,0.012547480683573862,28], +[[105,9,170,90],"ok",2049,0.012328930993417198,28], +[[105,9,170,60],"ok",2103,0.01267518425811015,31], +[[105,9,204,90],"ok",2103,0.012733528296866968,32], +[[105,9,204,60],"ok",2049,0.012329202589781263,28], +[[105,9,90,60],"ok",2049,0.012332703481178374,28], +[[105,165,170,204],"ValueError",0,0.0,0], +[[105,165,170,90],"ok",6819,0.042304306668647644,47], +[[105,165,170,60],"ok",6819,0.042304306668647644,47], +[[105,165,204,90],"ValueError",0,0.0,0], +[[105,165,204,60],"ValueError",0,0.0,0], +[[105,165,90,60],"ok",6819,0.042304306668647644,47], +[[105,170,204,90],"ok",6819,0.042304306668647644,47], +[[105,170,204,60],"ok",6819,0.042304306668647644,47], +[[105,170,90,60],"ok",6819,0.042304306668647644,47], +[[105,204,90,60],"ok",6819,0.042304306668647644,47], +[[1,7,9,165],"ok",501,0.003079687751614657,26], +[[1,7,9,170],"ok",501,0.003079687751614657,26], +[[1,7,9,204],"ok",501,0.0030791017958181066,26], +[[1,7,9,90],"ok",483,0.002971212547754731,26], +[[1,7,9,60],"ok",483,0.002968182458218449,26], +[[1,7,165,170],"ok",501,0.003079687751614657,26], +[[1,7,165,204],"ok",411,0.002523357343266197,25], +[[1,7,165,90],"ok",447,0.0027797182239586715,27], +[[1,7,165,60],"ok",411,0.002526412368989372,30], +[[1,7,170,204],"ok",465,0.002852333029396969,26], +[[1,7,170,90],"ok",339,0.002080781578610524,31], +[[1,7,170,60],"ok",447,0.0027491694410409218,25], +[[1,7,204,90],"ok",447,0.002762324647072101,25], +[[1,7,204,60],"ok",339,0.0020781270409234165,31], +[[1,7,90,60],"ok",429,0.002634638655056476,26], +[[1,9,165,170],"ok",501,0.003079687751614657,26], +[[1,9,165,204],"ok",483,0.0029692793694288673,27], +[[1,9,165,90],"ok",429,0.002675276957766759,29], +[[1,9,165,60],"ok",483,0.0029720448164496927,26], +[[1,9,170,204],"ok",447,0.00274908087408382,27], +[[1,9,170,90],"ok",411,0.002530538633767787,27], +[[1,9,170,60],"ok",429,0.002635957573684233,29], +[[1,9,204,90],"ok",429,0.002656202157489351,28], +[[1,9,204,60],"ok",411,0.002528473128064534,27], +[[1,9,90,60],"ok",411,0.0025303975856317273,27], +[[1,165,170,204],"ok",2787,0.016795294410392344,27], +[[1,165,170,90],"ok",2805,0.016933955074813156,31], +[[1,165,170,60],"ok",2787,0.016745896737390294,31], +[[1,165,204,90],"ok",2805,0.01710319247308328,29], +[[1,165,204,60],"ok",2751,0.016576979535518562,27], +[[1,165,90,60],"ok",2805,0.016948452908783385,31], +[[1,170,204,90],"ok",2733,0.016417003187798537,34], +[[1,170,204,60],"ok",2733,0.016417003187798537,34], +[[1,170,90,60],"ok",2733,0.016417003187798537,34], +[[1,204,90,60],"ok",2733,0.016417003187798537,34], +[[7,9,165,170],"ok",501,0.003079687751614657,26], +[[7,9,165,204],"ok",429,0.0026482941464605614,28], +[[7,9,165,90],"ok",465,0.0029081690442940844,32], +[[7,9,165,60],"ok",429,0.002637074086390634,28], +[[7,9,170,204],"ok",483,0.0029662527519855315,27], +[[7,9,170,90],"ok",357,0.0021953926745777452,30], +[[7,9,170,60],"ok",465,0.0028697495106561606,30], +[[7,9,204,90],"ok",465,0.0028848839957648638,30], +[[7,9,204,60],"ok",357,0.002192586194154466,30], +[[7,9,90,60],"ok",447,0.0027484352364045006,27], +[[7,165,170,204],"ok",2787,0.01682455755776663,27], +[[7,165,170,90],"ok",2805,0.016955069227654492,31], +[[7,165,170,60],"ok",2787,0.016783036942021153,31], +[[7,165,204,90],"ok",2823,0.017216859073079845,30], +[[7,165,204,60],"ok",2679,0.01618752953793495,30], +[[7,165,90,60],"ok",2823,0.017072376834351196,31], +[[7,170,204,90],"ok",2751,0.016517072313352473,31], +[[7,170,204,60],"ok",2751,0.016517072313352473,31], +[[7,170,90,60],"ok",2751,0.016517072313352473,31], +[[7,204,90,60],"ok",2751,0.016517072313352473,31], +[[9,165,170,204],"ok",2085,0.012547480683573862,28], +[[9,165,170,90],"ok",2103,0.0126766791151392,28], +[[9,165,170,60],"ok",2085,0.012520419691628704,27], +[[9,165,204,90],"ok",2103,0.012733528296866968,32], +[[9,165,204,60],"ok",2049,0.012329202589781263,28], +[[9,165,90,60],"ok",2103,0.012683326256809402,28], +[[9,170,204,90],"ok",2031,0.012198459783390236,31], +[[9,170,204,60],"ok",2031,0.012198459783390236,31], +[[9,170,90,60],"ok",2031,0.012198459783390236,31], +[[9,204,90,60],"ok",2031,0.012198459783390236,31], +[[165,170,204,90],"ok",6819,0.042304306668647644,47], +[[165,170,204,60],"ok",6819,0.042304306668647644,47], +[[165,170,90,60],"ok",6819,0.042304306668647644,47], +[[165,204,90,60],"ok",6819,0.042304306668647644,47], +[[170,204,90,60],"ValueError",0,0.0,0] +] diff --git a/research/pr4633-quotient-contract-audit/evidence/latest-bit-scan.log b/research/pr4633-quotient-contract-audit/evidence/latest-bit-scan.log new file mode 100644 index 0000000000..609a58ad27 --- /dev/null +++ b/research/pr4633-quotient-contract-audit/evidence/latest-bit-scan.log @@ -0,0 +1,20 @@ +100 / 1940 valid 100 seconds 14.3 +200 / 1940 valid 197 seconds 28.8 +300 / 1940 valid 291 seconds 43.2 +400 / 1940 valid 388 seconds 57.6 +500 / 1940 valid 484 seconds 71.9 +600 / 1940 valid 574 seconds 85.7 +700 / 1940 valid 645 seconds 97.8 +800 / 1940 valid 725 seconds 112.3 +900 / 1940 valid 811 seconds 126.1 +1000 / 1940 valid 882 seconds 136.4 +1100 / 1940 valid 962 seconds 148.0 +1200 / 1940 valid 1048 seconds 160.3 +1300 / 1940 valid 1123 seconds 171.7 +1400 / 1940 valid 1211 seconds 184.5 +1500 / 1940 valid 1292 seconds 195.9 +1600 / 1940 valid 1381 seconds 209.4 +1700 / 1940 valid 1468 seconds 222.2 +1800 / 1940 valid 1554 seconds 234.5 +1900 / 1940 valid 1641 seconds 248.0 +1940 / 1940 valid 1680 seconds 253.6 diff --git a/research/pr4633-quotient-contract-audit/evidence/latest-bit-scan.receipt.json b/research/pr4633-quotient-contract-audit/evidence/latest-bit-scan.receipt.json new file mode 100644 index 0000000000..972ccee121 --- /dev/null +++ b/research/pr4633-quotient-contract-audit/evidence/latest-bit-scan.receipt.json @@ -0,0 +1,14 @@ +{ + "command": [ + "python3.12", + "-B", + "/home/cinna/int-bounds/pr4633-audit-evidence-20261022/scan_latest_serial.py" + ], + "cwd": "/home/cinna/int-bounds/audit-pr4633-delta-20261022", + "exit_code": 0, + "elapsed_seconds": 253.665, + "peak_sampled_group_rss_bytes": 32079872, + "stop_reason": null, + "memory_limit_bytes": 1073741824, + "timeout_seconds": 1200 +} diff --git a/research/pr4633-quotient-contract-audit/evidence/latest-rebuild-comparison.json b/research/pr4633-quotient-contract-audit/evidence/latest-rebuild-comparison.json new file mode 100644 index 0000000000..df9ca52838 --- /dev/null +++ b/research/pr4633-quotient-contract-audit/evidence/latest-rebuild-comparison.json @@ -0,0 +1,7 @@ +{ + "head": "b390d64abfcdba1a3816b86fc763cbc95d43c12c", + "path": "research/bit-ambient-quotient/QUOTIENT-BIT-WORD.json.gz", + "byte_equal": true, + "source_sha256": "a1b9555b38d234e3921cdabd280e6a754619e26dd620a069a2a85a93efa31b2c", + "rebuilt_sha256": "a1b9555b38d234e3921cdabd280e6a754619e26dd620a069a2a85a93efa31b2c" +} diff --git a/research/pr4633-quotient-contract-audit/evidence/rebuild-comparison.json b/research/pr4633-quotient-contract-audit/evidence/rebuild-comparison.json new file mode 100644 index 0000000000..64f64cf1da --- /dev/null +++ b/research/pr4633-quotient-contract-audit/evidence/rebuild-comparison.json @@ -0,0 +1,29 @@ +{ + "python": "3.12.15", + "artifacts": [ + { + "path": "research/bit-ambient-quotient/QUOTIENT-BIT-WORD.json.gz", + "container_equal": true, + "decompressed_payload_equal": true, + "json_equal": true, + "committed_sha256": "559c01f57aabe204c4db922485d56242dfaa94a0bc85e64bbccb34d6b686d208", + "rebuilt_sha256": "559c01f57aabe204c4db922485d56242dfaa94a0bc85e64bbccb34d6b686d208" + }, + { + "path": "research/complex-ambient-quotient/QUOTIENT-WORD.json.gz", + "container_equal": true, + "decompressed_payload_equal": true, + "json_equal": true, + "committed_sha256": "10155f81100e9cd6283f1d9dfd071bc0c3e0e89dc3794a66e4129a1f34d99dc4", + "rebuilt_sha256": "10155f81100e9cd6283f1d9dfd071bc0c3e0e89dc3794a66e4129a1f34d99dc4" + }, + { + "path": "research/complex-ambient-quotient/QUOTIENT-PROGRAMS.json.gz", + "container_equal": true, + "decompressed_payload_equal": true, + "json_equal": true, + "committed_sha256": "52d70e135c0ea30439932c19c815c4cd5d6e784372dfc8069ce6786d1c0d955c", + "rebuilt_sha256": "52d70e135c0ea30439932c19c815c4cd5d6e784372dfc8069ce6786d1c0d955c" + } + ] +} diff --git a/research/pr4633-quotient-contract-audit/evidence/run_bounded.py b/research/pr4633-quotient-contract-audit/evidence/run_bounded.py new file mode 100644 index 0000000000..25c60e0950 --- /dev/null +++ b/research/pr4633-quotient-contract-audit/evidence/run_bounded.py @@ -0,0 +1,47 @@ +#!/usr/bin/env python3 +"""Run one audit command under a sampled 1 GiB process-group RSS limit.""" +import argparse +import json +import os +from pathlib import Path +import signal +import subprocess +import time + +p = argparse.ArgumentParser() +p.add_argument('--name', required=True) +p.add_argument('--seconds', type=int, default=1200) +p.add_argument('command', nargs=argparse.REMAINDER) +a = p.parse_args() +out = Path(__file__).resolve().parent +start = time.monotonic() +peak = 0 +reason = None +with (out / (a.name + '.log')).open('w') as log: + child = subprocess.Popen(a.command, stdout=log, stderr=subprocess.STDOUT, + start_new_session=True) + while child.poll() is None: + rss = 0 + for entry in Path('/proc').iterdir(): + if not entry.name.isdigit(): + continue + try: + fields = (entry / 'stat').read_text().rsplit(')', 1)[1].split() + if int(fields[2]) == child.pid: + rss += int(fields[21]) * os.sysconf('SC_PAGE_SIZE') + except (FileNotFoundError, ProcessLookupError, PermissionError): + pass + peak = max(peak, rss) + if peak > 1024**3 or time.monotonic() - start > a.seconds: + reason = 'memory' if peak > 1024**3 else 'timeout' + os.killpg(child.pid, signal.SIGKILL) + break + time.sleep(.1) + code = child.wait() +result = dict(command=a.command, cwd=os.getcwd(), exit_code=code, + elapsed_seconds=round(time.monotonic()-start, 3), + peak_sampled_group_rss_bytes=peak, stop_reason=reason, + memory_limit_bytes=1024**3, timeout_seconds=a.seconds) +(out / (a.name + '.receipt.json')).write_text(json.dumps(result, indent=2)+'\n') +print(json.dumps(result), flush=True) +raise SystemExit(code if code >= 0 else 1) diff --git a/research/pr4633-quotient-contract-audit/evidence/scan_latest_serial.py b/research/pr4633-quotient-contract-audit/evidence/scan_latest_serial.py new file mode 100644 index 0000000000..6eed90e8cd --- /dev/null +++ b/research/pr4633-quotient-contract-audit/evidence/scan_latest_serial.py @@ -0,0 +1,23 @@ +#!/usr/bin/env python3 +"""Exact latest submitted candidate list, serial execution of unchanged price().""" +import importlib.util +import itertools +import json +from pathlib import Path +import time + +spec = importlib.util.spec_from_file_location('latest_scan', 'research/bit-ambient-quotient/scan_kernels.py') +m = importlib.util.module_from_spec(spec) +spec.loader.exec_module(m) +axes = [150, 102, 255, 153, 15, 240, 105, 1, 7, 9, 165, 170, 204, 90, 60] +candidates = [list(c) for k in (1, 2, 3, 4) for c in itertools.combinations(axes, k)] +assert len(candidates) == 1940 +# The author's while len(candidates)<600 loop is never entered. +rows = [] +start = time.monotonic() +for i, candidate in enumerate(candidates, 1): + rows.append(m.price(candidate)) + if i % 100 == 0 or i == len(candidates): + print(i, '/', len(candidates), 'valid', sum(r[1] == 'ok' for r in rows), + 'seconds', round(time.monotonic()-start, 1), flush=True) +Path(__file__).with_name('latest-bit-scan-results.json').write_text('[\n'+',\n'.join(json.dumps(r,separators=(',',':')) for r in rows)+'\n]\n') diff --git a/research/pr4633-quotient-contract-audit/evidence/scan_serial.py b/research/pr4633-quotient-contract-audit/evidence/scan_serial.py new file mode 100644 index 0000000000..0071d19048 --- /dev/null +++ b/research/pr4633-quotient-contract-audit/evidence/scan_serial.py @@ -0,0 +1,27 @@ +#!/usr/bin/env python3 +"""Call the exact submitted price function serially, preserving every result.""" +import importlib.util +import json +from pathlib import Path +import sys +import time + +kind = sys.argv[1] +path = Path('research') / (kind+'-ambient-quotient') / 'scan_kernels.py' +spec = importlib.util.spec_from_file_location('submitted_scan', path) +module = importlib.util.module_from_spec(spec) +spec.loader.exec_module(module) +if kind == 'complex': + module.setup() +total = 255 if kind == 'bit' else 511 +rows = [] +start = time.monotonic() +for kernel in range(1, total+1): + rows.append(module.price(kernel)) + if kernel % 16 == 0 or kernel == total: + valid = [r for r in rows if r[1] == 'ok'] + best = max(valid, key=lambda r: r[-1]) if valid else None + print(kernel, '/', total, 'valid', len(valid), 'best', best, + 'seconds', round(time.monotonic()-start, 1), flush=True) +out = Path(__file__).resolve().parent / (kind+'-scan-results.json') +out.write_text('[\n'+',\n'.join(json.dumps(r,separators=(',',':')) for r in rows)+'\n]\n') diff --git a/research/pr4633-quotient-contract-audit/evidence/source-control-result.json b/research/pr4633-quotient-contract-audit/evidence/source-control-result.json new file mode 100644 index 0000000000..1a1ff5b7d7 --- /dev/null +++ b/research/pr4633-quotient-contract-audit/evidence/source-control-result.json @@ -0,0 +1,49 @@ +{ + "status": "PASS_FULL_LOCAL_COLUMNS_AND_EXACT_PROJECTORS", + "frames": 636, + "nested_transition_pairs": 2386, + "projector_sha256": "1befaff7214015fe01280fdfc07e2e1383f9a30ac5b3037dc3d695a68a95c523", + "signed_directions": [ + { + "direction": "forward", + "arbitrary_columns": 661, + "dirty_helper_columns": 439, + "owned_COPY_episodes": 9, + "unit_ADDs": 24305, + "positive_majorant_maximum": 49347, + "positive_majorant_bits": 16, + "profile": { + "1": 1323, + "2": 1342, + "3": 79, + "4": 44, + "5": 102, + "6": 11, + "7": 19 + }, + "stream_sha256": "10149bf8232495ae384dbff11a98a854fa03054807fc3d61d21fad1b760dc56f" + }, + { + "direction": "reverse", + "arbitrary_columns": 661, + "dirty_helper_columns": 439, + "owned_COPY_episodes": 9, + "unit_ADDs": 24305, + "positive_majorant_maximum": 1113070, + "positive_majorant_bits": 21, + "profile": { + "1": 1323, + "2": 1342, + "3": 79, + "4": 44, + "5": 102, + "6": 11, + "7": 19 + }, + "stream_sha256": "736f409cae5ddc630247c83ca90a91cbae72e2a55ff1a5fa9a908545e3e4ffdc" + } + ], + "helper_endpoint": "D_I8 on all 439 arbitrary original helper inputs", + "private_COPY_contract": "Inherited source-owned immutable-copy contract; all nine episodes paid", + "full_GL_cover_executed": false +} diff --git a/research/pr4633-quotient-contract-audit/evidence/source-control-retry.log b/research/pr4633-quotient-contract-audit/evidence/source-control-retry.log new file mode 100644 index 0000000000..295e570a29 --- /dev/null +++ b/research/pr4633-quotient-contract-audit/evidence/source-control-retry.log @@ -0,0 +1 @@ +{"status": "PASS_FULL_LOCAL_COLUMNS_AND_EXACT_PROJECTORS", "frames": 636, "nested_transition_pairs": 2386, "projector_sha256": "1befaff7214015fe01280fdfc07e2e1383f9a30ac5b3037dc3d695a68a95c523", "signed_directions": [{"direction": "forward", "arbitrary_columns": 661, "dirty_helper_columns": 439, "owned_COPY_episodes": 9, "unit_ADDs": 24305, "positive_majorant_maximum": 49347, "positive_majorant_bits": 16, "profile": {"1": 1323, "2": 1342, "3": 79, "4": 44, "5": 102, "6": 11, "7": 19}, "stream_sha256": "10149bf8232495ae384dbff11a98a854fa03054807fc3d61d21fad1b760dc56f"}, {"direction": "reverse", "arbitrary_columns": 661, "dirty_helper_columns": 439, "owned_COPY_episodes": 9, "unit_ADDs": 24305, "positive_majorant_maximum": 1113070, "positive_majorant_bits": 21, "profile": {"1": 1323, "2": 1342, "3": 79, "4": 44, "5": 102, "6": 11, "7": 19}, "stream_sha256": "736f409cae5ddc630247c83ca90a91cbae72e2a55ff1a5fa9a908545e3e4ffdc"}], "helper_endpoint": "D_I8 on all 439 arbitrary original helper inputs", "private_COPY_contract": "Inherited source-owned immutable-copy contract; all nine episodes paid", "full_GL_cover_executed": false} diff --git a/research/pr4633-quotient-contract-audit/evidence/source-control-retry.receipt.json b/research/pr4633-quotient-contract-audit/evidence/source-control-retry.receipt.json new file mode 100644 index 0000000000..bb0845a44d --- /dev/null +++ b/research/pr4633-quotient-contract-audit/evidence/source-control-retry.receipt.json @@ -0,0 +1,14 @@ +{ + "command": [ + "python3.12", + "-B", + "/home/cinna/int-bounds/pr4633-audit-evidence-20261022/source_control.py" + ], + "cwd": "/home/cinna/int-bounds/audit-pr4633-20261022", + "exit_code": 0, + "elapsed_seconds": 2.448, + "peak_sampled_group_rss_bytes": 36380672, + "stop_reason": null, + "memory_limit_bytes": 1073741824, + "timeout_seconds": 600 +} diff --git a/research/pr4633-quotient-contract-audit/evidence/source-control.log b/research/pr4633-quotient-contract-audit/evidence/source-control.log new file mode 100644 index 0000000000..5e6f018f23 --- /dev/null +++ b/research/pr4633-quotient-contract-audit/evidence/source-control.log @@ -0,0 +1,6 @@ +Traceback (most recent call last): + File "/home/cinna/int-bounds/pr4633-audit-evidence-20261022/source_control.py", line 7, in + import mixed_productive_bit as bit + File "/home/cinna/int-bounds/audit-pr4633-20261022/research/kappa-rebuild/bit/mixed_productive_bit.py", line 33, in + from joint_pair_dag import log_interval, exp_interval, quotient +ModuleNotFoundError: No module named 'joint_pair_dag' diff --git a/research/pr4633-quotient-contract-audit/evidence/source-control.receipt.json b/research/pr4633-quotient-contract-audit/evidence/source-control.receipt.json new file mode 100644 index 0000000000..a19a73c96b --- /dev/null +++ b/research/pr4633-quotient-contract-audit/evidence/source-control.receipt.json @@ -0,0 +1,14 @@ +{ + "command": [ + "python3.12", + "-B", + "/home/cinna/int-bounds/pr4633-audit-evidence-20261022/source_control.py" + ], + "cwd": "/home/cinna/int-bounds/audit-pr4633-20261022", + "exit_code": 1, + "elapsed_seconds": 0.117, + "peak_sampled_group_rss_bytes": 14725120, + "stop_reason": null, + "memory_limit_bytes": 1073741824, + "timeout_seconds": 600 +} diff --git a/research/pr4633-quotient-contract-audit/evidence/source_control.py b/research/pr4633-quotient-contract-audit/evidence/source_control.py new file mode 100644 index 0000000000..9a7083927b --- /dev/null +++ b/research/pr4633-quotient-contract-audit/evidence/source_control.py @@ -0,0 +1,11 @@ +#!/usr/bin/env python3 +"""Run the inherited rational-projector BIT audit, not only its XOR subroutine.""" +import json +from pathlib import Path +import sys +sys.path.insert(0, str(Path.cwd()/'research/kappa-rebuild/bit')) +sys.path.insert(0, str(Path.cwd()/'research/kappa-0023-productive-jobs/dependencies/kappa-next-regime/bit-compression/carrier-reuse/reference')) +import mixed_productive_bit as bit +word, streams, receipt = bit.audit_local(bit.HERE/'sources/pr589-regenerated/WORD.json.gz') +Path(__file__).with_name('source-control-result.json').write_text(json.dumps(receipt,indent=2)+'\n') +print(json.dumps(receipt)) diff --git a/research/pr4633-quotient-contract-audit/sources-current/research/bit-ambient-quotient/PROOF.md b/research/pr4633-quotient-contract-audit/sources-current/research/bit-ambient-quotient/PROOF.md new file mode 100644 index 0000000000..2943fa1866 --- /dev/null +++ b/research/pr4633-quotient-contract-audit/sources-current/research/bit-ambient-quotient/PROOF.md @@ -0,0 +1,142 @@ +# Construction and proof obligations + +## 1. Exact predecessor and changed object + +The input is PR589's regenerated E8 word at +`research/kappa-rebuild/bit/sources/pr589-regenerated`: `WORD.json.gz` (pinned by +SHA-256 `e3e301e62bc2b41dbf1ceac0acf3d35824ebeab1848c5a2142d4577b109da52f`, which +matches `mixed_productive_bit.py`'s own `WORD_HASH`), `records/frames.json` +(636 frames stored by annihilator rows) and `records/249-records.bin` (249 +records, `<6i`: `op, x, y, c, f, z`). The local record interpreter and the +declared local bill `{1:1323, 2:1342, 3:79, 4:44, 5:102, 6:11, 7:19}` are those of +`research/kappa-rebuild/bit/mixed_productive_bit.py`. + +There are 661 persistent fields: `2V = 222` main fields and `R = 439` helpers, in +an eight-axis ambient. A frame's dimension is the dimension of the GF(2) nullspace +of its annihilator rows; frame 1 is the full ambient. + +The changed object is the ambient. For a kernel subspace `K` of dimension `k` with +annihilator basis `r_1..r_(8-k)`, + +``` +phi : F2^8 -> F2^(8-k), phi(x)_i = r_i . x +``` + +`phi` is linear and surjective with kernel exactly `K`. `build.py` maps every +frame's vector set through `phi`, deduplicates each image basis by exact GF(2) +rank, identifies frames with equal image, and rewrites every role boundary and +every record's frame fields. Every MOVE rank is recomputed as +`dim(image(destination)) - dim(image(source))`. The record order, the ADD/COPY +structure and every helper boundary are otherwise unchanged. + +The kernel is `span{150, 102, 255}`, dimension 3. It is not chosen by hand: +`scan_kernels.py` prices the dimension ladder and samples the solids. The value is +a plateau in the dimension — 445 of 455 sampled three-dimensional kernels replay +and all price at 0.032249423394893. + +## 2. Frame-coordinate invariant under the quotient + +A field at frame `F` carries the frame operator `C_F`; a chosen frame `E subset F` +carries `C_E`, and the paid transport between them has rank `dim F - dim E`. +Because `phi` is linear, `E subset F` implies `phi(E) subset phi(F)`, so every +nesting the records rely on survives and the transport's rank becomes +`dim phi(F) - dim phi(E)`. + +The induction is unchanged: at each scalar step the participating fields are moved +into the operation's declared frame, and a scalar linear combination commutes with +a common frame operator, so the logical step is the same before and after the +quotient. The replay checks that directly — the arbitrary-column test and the +endpoint test are frame-independent value tests, and both are exact in both +directions. + +No MOVE is lengthened, since `dim phi(F) <= dim F` for every `F`; a move is +shortened by the number of kernel dimensions its destination meets minus the number +its source meets. + +## 2b. Re-padding the full ambient and the block + +The tensor block is `ambient - 1`, and the block-7 ladder charge is correct only if +the word's ambient is eight-dimensional. The quotient leaves `k` axes unused, so +`build.py` re-pads the full-ambient image with all `k` of them: the 5-dimensional +image becomes the whole of `F2^8` again. Every role that ended at the full ambient +ends there again, so helper finals are dimension 8, helper ranks are preserved, and +the ambient is eight axes. + +## 3. Complete local bill + +Read off the replay: + +``` +emitted {1:1323, 2:1342, 3:79, 4:44, 5:102, 6:11, 7:19} mass 5,129 +quotient {1:1020, 2:495, 3:75, 4:442, 5:143, 6:4, 7:12, 8:2} mass 4,842 +``` + +The paid mass falls by 287 ranks per call and its shape shifts into ranks 4 and 5. +With the frontier's sixteen-stage controller, eighteen thick calls, fifteen thin +queries, `ports = 111` and `block = 7`: + +``` +targets = 63,216 (helpers) + 154,290 (ladder) = 217,506 +paid = 18*paid_mass + 1,665 (thin) + 122,766 (idles) + +emitted 217,506 - (18*5,129 + 1,665 + 122,766) = 753 +quotient 217,506 - (18*4,842 + 1,665 + 122,766) = 5,919 +``` + +The two-constraint screen gives + +``` +emitted BIT kappa = 0.003464248972 (the frontier's declared BIT value) +quotient BIT kappa = 0.032249423394893 (+830.92% over the emitted word) + +Against this package's own one-dimensional quotient, the frontier base +0.012401086416, the step is +160.05%. +``` + +## 3b. Where the composition stands + +The frontier base for this package is its own one-dimensional quotient, +0.012401086416. With the complex supplier at 0.015637149091 +(`research/complex-ambient-quotient`) and the BIT supplier now at +0.032249423394893, the outer `min(complex, BIT)` is the complex side. The BIT is no +longer binding and has 2.06x of headroom over the complex. + +The complex side cannot follow with the same construction yet: `synthesize` in +`research/fresh-helper-boundary/native.py:85` hardcodes the centre transport's rank +as `8` + +```python +e = ['center', 0, e[2], second[3], 8] +``` + +and the centre frames are dim-8 hyperplanes, so a kernel of dimension >= 2 always +shrinks them and the stored rank stops matching the frame dimensions. The +one-dimensional complex quotient avoids this because its kernel direction misses +the centre frames. Deriving that rank instead of fixing it at 8 is the change the +complex side needs. + +## 4. What is checked, and what is not + +Checked by `verify.py` from the artifact and the pinned source word, with the +shipped record interpreter: 661 roles; ambient dimension 8; the kernel basis is +independent and the declared quotient width matches its dimension; no helper final +below dimension 8; all 439 helper starts at ground; both directions replay with +24,305 ADDs and 9 COPY episodes; all arbitrary input columns exact; all 661 +endpoints exact; owned COPY cleanup exact; forward and backward paid profiles +identical; the source word reproduces the declared local bill; the emitted invoice +reproduces the frontier's BIT kappa; and the quotient strictly improves the screen. + +Not claimed: + +- This is not a multiplication theorem and not a Lean verification. +- **The outer kappa does not move here.** The complex supplier sets it; this + package moves the BIT supplier from the base 0.012401086416 to 0.032249423394893. +- **The frame charts are not preserved**: 636 frames become 65. The interpreter + validates the word's own frame record and `inventories` reads only the paid and + helper profiles, so no consumer in this tree reads the charts — but a contract + requiring particular charts would reject the word. This is the #4604 question. +- Kernel dimension 4 replays but prices worse (0.0175); the plateau break is + unexplained. Dimension 5 was not searched exhaustively. +- Only PR589's E8 word is exercised; 292 other `h = 8` words are untested. +- The admission parameters in `research/query-thinned-controllers/verify.py` are + declared literals, not functions of the supplier, and are not raised here. diff --git a/research/pr4633-quotient-contract-audit/sources-current/research/bit-ambient-quotient/QUOTIENT-BIT-WORD.json.gz b/research/pr4633-quotient-contract-audit/sources-current/research/bit-ambient-quotient/QUOTIENT-BIT-WORD.json.gz new file mode 100644 index 0000000000..fa2fa7618a Binary files /dev/null and b/research/pr4633-quotient-contract-audit/sources-current/research/bit-ambient-quotient/QUOTIENT-BIT-WORD.json.gz differ diff --git a/research/pr4633-quotient-contract-audit/sources-current/research/bit-ambient-quotient/README.md b/research/pr4633-quotient-contract-audit/sources-current/research/bit-ambient-quotient/README.md new file mode 100644 index 0000000000..fb0e8be372 --- /dev/null +++ b/research/pr4633-quotient-contract-audit/sources-current/research/bit-ambient-quotient/README.md @@ -0,0 +1,130 @@ +# BIT supplier 0.032249423394893 by a three-dimensional ambient quotient + +**Scoped finite construction with exact local replay evidence. Not a multiplication theorem.** + +**Frontier base: 0.012401086416** — this package's own one-dimensional quotient, the +value the BIT branch carried before this change. The three-dimensional quotient moves +the BIT supplier from `0.012401086416` to **`0.032249423394893`**, a **+160.05%** step +on that base, and from the emitted word's `0.003464248972024` to that value, +**+830.92%** in total. + +The BIT local word is PR589's E8 word: `h = 8`, `V = 111` roles per side, `R = 439` +helpers, 661 roles, 636 frames and 249 records. Frames are stored by annihilator +rows, so a frame is the GF(2) nullspace of its rows. + +For a kernel subspace `K` of dimension `k`, the map + +``` +phi(x) = (r_1.x, ..., r_(8-k).x) over a basis r of the annihilator of K +``` + +is linear and surjective onto `F2^(8-k)` with kernel exactly `K`. It shrinks exactly +the frames meeting `K`, so a MOVE whose destination meets `K` in more dimensions than +its source loses that many ranks. Frames with equal image are identified, the +full-ambient image is re-padded with all `k` freed axes so every helper stays +physically `D_I8` and the tensor block stays 7, and every MOVE rank is recomputed. + +## The kernel dimension is the lever + +| kernel dim | kappa | vs base 0.012401086416 | +|---:|---:|---:| +| 1 | 0.012401086416 | — (the base) | +| 2 | 0.021785831250 | +75.68% | +| **3** | **0.032249423394893** | **+160.05%** | +| 4 | 0.017525188018 | +41.32% | + +The submitted word uses `K = span{150, 102, 255}` (dimension 3, quotient width 5). +Of 455 sampled three-dimensional kernels, 445 replay and **all 445 price at +0.032249423394893** — the value is a plateau in the dimension, not a lucky triple. + +| quantity | emitted | quotient | +|---|---:|---:| +| frames | 636 | **65** | +| frame dimensions | — | `{0:1, 1:13, 2:8, 3:25, 4:16, 5:1, 8:1}` | +| main widths | `{7: 222}` | `{4: 103, 7: 70, 8: 49}` | +| main rank mass | 1,554 | **1,294** | +| helper widths | `{8: 439}` | `{8: 439}` (start dim 0, final dim 8) | +| helper rank mass | 3,512 | 3,512 | +| paid profile | `{1:1323, 2:1342, 3:79, 4:44, 5:102, 6:11, 7:19}` | `{1:1020, 2:495, 3:75, 4:442, 5:143, 6:4, 7:12, 8:2}` | +| paid rank mass | 5,129 | **4,842** | +| rank surplus | 753 | **5,919** | +| **BIT kappa** | **0.003464248972024** | **0.032249423394893** | + +## Why the quotient is legitimate + +A frame meeting `K` in `j` dimensions loses exactly `j`, and nothing else moves, so +no MOVE is lengthened: `dim phi(F) <= dim F` for every `F`. The shipped local record +interpreter then replays the rewritten word with no change of its own: + +| check | result | +|---|---:| +| forward replay | 24,305 ADDs, 9 COPY episodes, all 661 endpoints exact | +| reverse replay | 24,305 ADDs, 9 COPY episodes, all 661 endpoints exact | +| arbitrary input columns, both directions | exact | +| owned COPY cleanup | exact | +| helper finals at dim 8 | 439 of 439 | +| helper starts at ground | 439 of 439 | +| source word reproduces the declared bill | `{1:1323, 2:1342, 3:79, 4:44, 5:102, 6:11, 7:19}` | +| emitted BIT kappa reproduces the frontier | 0.003464248972024 | + +The last two rows are the calibration: replaying the *pinned source word* through the +same interpreter reproduces the declared local bill exactly, and the emitted invoice's +screen reproduces the frontier's BIT kappa to fifteen digits. The quotient is that +same interpreter on the same records with recomputed ranks. + +**The block stays 7.** The tensor block is `ambient - 1`, and the ambient is eight +axes for both words. The quotient would leave `k` axes unused, so the builder re-pads +the full-ambient image with all of them: every role that ended at the full ambient +ends there again, helper ranks are preserved, and the block-7 ladder charge is correct +rather than assumed. `verify.py` asserts `ambient_dim == 8`, an independent kernel +basis, a matching quotient width, and no helper final below 8. + +## Reproduce + +```sh +python3 -B research/bit-ambient-quotient/build.py # writes the artifact +python3 -B research/bit-ambient-quotient/verify.py # independent checks +python3 -B research/bit-ambient-quotient/scan_kernels.py # the dimension ladder +``` + +`verify.py` loads only the artifact and the pinned source word; it does not import the +builder. The two-constraint screen is inlined (tail offset `1/5`, cutoff `20`, +gamma `0.97`), so no file outside the base commit is required. + +## What is not claimed + +- **The outer kappa does not move in this package.** The outer value is + `min(complex, BIT)`; the complex supplier sets it. +- **The frame charts collapse**: 636 frames become 65. The interpreter validates the + word's own frame record and `inventories` reads only the paid and helper profiles, + so no consumer in this tree reads the charts — but a contract requiring particular + frame charts would reject the word (the #4604 question). +- Kernel dimension 4 replays but prices worse at 0.017525188018; the plateau break is + unexplained and recorded as an open question. +- This is not a multiplication theorem and not a Lean verification. +- Only PR589's E8 word is exercised; 292 other `h = 8` words are untested. + +## Open next questions + +1. **Why does dimension 4 fall back to 0.017525188018?** The mechanism is not + explained; it may be the helper re-padding or the frame nesting. +2. **Can the complex supplier follow?** It needs + `research/fresh-helper-boundary/native.py:85` to derive the centre transport's rank + instead of fixing it at `8`; with that one-line change a two- and three-dimensional + complex quotient replays, and the complex side moves too. +3. **Which consumer, if any, requires the frame charts?** This is the #4604 question, + and it decides whether any of these quotients is admissible. +4. **What admission parameters correspond to a 0.032249423394893 supplier?** The + declared literals in `research/query-thinned-controllers/verify.py` are far below + it. + +## Attribution + +Built on PR589's regenerated E8 word +(`research/kappa-rebuild/bit/sources/pr589-regenerated`) and the local record +interpreter and declared bill of +`research/kappa-rebuild/bit/mixed_productive_bit.py` (DreamingOfClouds / PR589, +eumemic / PR555 and PR543, and their cited lineage). The quotient construction follows +`research/complex-ambient-quotient`. + +Apache-2.0; substantial AI assistance. diff --git a/research/pr4633-quotient-contract-audit/sources-current/research/bit-ambient-quotient/RESULT.json b/research/pr4633-quotient-contract-audit/sources-current/research/bit-ambient-quotient/RESULT.json new file mode 100644 index 0000000000..ba73ce57db --- /dev/null +++ b/research/pr4633-quotient-contract-audit/sources-current/research/bit-ambient-quotient/RESULT.json @@ -0,0 +1,55 @@ +{ + "ambient_dim": 8, + "directions_agree": true, + "emitted_kappa": 0.003464248972023964, + "emitted_paid": { + "1": 1323, + "2": 1342, + "3": 79, + "4": 44, + "5": 102, + "6": 11, + "7": 19 + }, + "emitted_paid_mass": 5129, + "emitted_surplus": 753, + "endpoint_failures": 0, + "frames": 65, + "gain_absolute": 0.02878517442286887, + "gain_relative": 8.309210641419726, + "helper_widths": { + "8": 439 + }, + "kernel_basis": [ + 150, + 102, + 255 + ], + "kernel_dimension": 3, + "local_checks": { + "adds": 24305, + "copies": 9 + }, + "main_rank_mass": 1294, + "main_widths": { + "4": 103, + "7": 70, + "8": 49 + }, + "package": "bit-ambient-quotient", + "quotient_kappa": 0.03224942339489283, + "quotient_paid": { + "1": 1020, + "2": 495, + "3": 75, + "4": 442, + "5": 143, + "6": 4, + "7": 12, + "8": 2 + }, + "quotient_paid_mass": 4842, + "quotient_surplus": 5919, + "roles": 661, + "status": "PASS_BIT_AMBIENT_QUOTIENT" +} diff --git a/research/pr4633-quotient-contract-audit/sources-current/research/bit-ambient-quotient/SOURCES.source.json b/research/pr4633-quotient-contract-audit/sources-current/research/bit-ambient-quotient/SOURCES.source.json new file mode 100644 index 0000000000..43d45a579b --- /dev/null +++ b/research/pr4633-quotient-contract-audit/sources-current/research/bit-ambient-quotient/SOURCES.source.json @@ -0,0 +1,42 @@ +{ + "schema_version": 1, + "base_commit": "b9a13c1673e0e9697de410de16e8bbf3207a7363", + "files": [ + { + "path": "certificates/selected-result.json", + "usage": "provenance", + "git_blob": "ed33caef5c5827693e9572d252a66f99cbb73d40", + "sha256": "5732707cc1e460b090b53f2463162749ad860de878a18f7408938671d295a9d9" + }, + { + "path": "docs/research/agent-task-catalog.json", + "usage": "provenance", + "git_blob": "64bfc5af6709ed9811171e0a2108f05e1219cb65", + "sha256": "352a6184713b8843d96fd2c2071eb7aeaa655906b7c51d45ad444912666c8a96" + }, + { + "path": "research/kappa-rebuild/bit/sources/pr589-regenerated/WORD.json.gz", + "usage": "input", + "git_blob": "85a4499bf9e4911a705d50567a2c2ef6cf23739a", + "sha256": "e3e301e62bc2b41dbf1ceac0acf3d35824ebeab1848c5a2142d4577b109da52f" + }, + { + "path": "research/kappa-rebuild/bit/sources/pr589-regenerated/records/frames.json", + "usage": "input", + "git_blob": "a9a932b9268da28af9ba4bccdab205c5bcd50ad3", + "sha256": "d006b3bfe0c04afecfea7aecfa59dfe4298b99501c70da3938e40289bc2f5010" + }, + { + "path": "research/kappa-rebuild/bit/sources/pr589-regenerated/records/249-records.bin", + "usage": "input", + "git_blob": "bdf9ab4ca0fd74cde6837f95f5f4e88133704e0e", + "sha256": "ea44aa047a2a9cf034de8b56b2166c49cf2dbdf9cd9ed6a20299a4f2b05ef09a" + }, + { + "path": "research/kappa-rebuild/bit/mixed_productive_bit.py", + "usage": "input", + "git_blob": "9c7a8bd5d3ae4c19952648c815031858d6627b96", + "sha256": "b32291b0db7fc0d332ec444c70746ab0fb03351d2e50546f8bcb64060e3ff95e" + } + ] +} diff --git a/research/pr4633-quotient-contract-audit/sources-current/research/bit-ambient-quotient/TASK.source.json b/research/pr4633-quotient-contract-audit/sources-current/research/bit-ambient-quotient/TASK.source.json new file mode 100644 index 0000000000..807800b2cd --- /dev/null +++ b/research/pr4633-quotient-contract-audit/sources-current/research/bit-ambient-quotient/TASK.source.json @@ -0,0 +1,73 @@ +{ + "actual_scope": "Quotient the BIT local word's eight-axis ambient by the annihilator of a kernel subspace K of dimension k, then re-pad the full-ambient image with all k freed axes so every helper stays physically D_I8 and the tensor block stays 7. The submitted word uses K = span{150, 102, 255} (k = 3, quotient width 5). One dimension reaches 0.0124, two 0.0218, three 0.0322, four falls back to 0.0175; every replay-valid three-dimensional kernel prices identically. This moves the BIT supplier from 0.003464248972 to 0.032249423394893 (+830.92%, and +160.05% over this package's own one-dimensional frontier base 0.012401086416). The outer kappa does not move here: with the complex supplier at 0.015637149091, min(complex, BIT) is 0.015637149 and the complex side binds.", + "ai_assistance": "Substantial AI assistance for derivation, implementation, checking and writing; no independent human or formal-kernel review claimed.", + "author": "Douglas Colkitt, with substantial AI assistance", + "base_commit": "b9a13c1673e0e9697de410de16e8bbf3207a7363", + "bottleneck_link": "The BIT supplier bound the outer kappa until this quotient; the local paid rank mass is the term the ambient frame lattice controls directly, and a k-dimensional quotient removes up to k ranks from every MOVE whose destination meets the kernel. After this the BIT has 2.06x of headroom over the complex supplier, so the complex side is the constraint.", + "budget_minutes": 60, + "evidence": "BIT supplier kappa 0.003464248972 -> 0.032249423394893 (+830.92%). verify.py replays the pinned source word (reproducing the declared local bill {1:1323,2:1342,3:79,4:44,5:102,6:11,7:19}) and the quotient in both directions: 24,305 ADDs, 9 COPY episodes, all 661 endpoints and all arbitrary input columns exact, paid profiles identical, helper starts at ground and finals at dim 8, ambient dim 8, kernel basis independent. scan_kernels.py prices the dimension ladder; 445 of 455 sampled solids are valid and all price identically.", + "open_questions": [ + { + "blocked_by": "None; the builder and replay are in this package.", + "first_step": "Compare the dimension-3 and dimension-4 paid profiles rank by rank and check whether the frame nesting or the helper re-padding is responsible.", + "question": "Why does kernel dimension 4 fall back to 0.0175?", + "why_it_matters": "The plateau breaks rather than continuing to improve, and the mechanism is unexplained." + }, + { + "blocked_by": "Contract change in the shared native synthesizer.", + "first_step": "Derive the centre transport rank in research/fresh-helper-boundary/native.py:85 instead of fixing it at 8, then price a two-dimensional complex quotient.", + "question": "Can the complex supplier follow with the same construction?", + "why_it_matters": "The complex side sets the outer kappa at 0.015637149; a multi-dimensional complex quotient would move it again." + }, + { + "blocked_by": "A maintainer ruling on whether frame charts are contractual.", + "first_step": "Audit every consumer of the BIT local word for frame reads.", + "question": "Which consumer, if any, requires the local frame charts?", + "why_it_matters": "The quotient collapses 636 frames into 65. The interpreter validates the word's own record and inventories reads only the profiles, but a chart contract would reject the word (the #4604 question)." + } + ], + "original_card": { + "acceptance_gate": "A full boundary contract and paid profile; unchanged scalar counts alone are insufficient. 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.", + "allowed_variations": [ + "Choose one helper-star or quartet instance; narrow to one boundary implication." + ], + "bottleneck_link": "A legitimate replacement could admit a cheaper bit circuit; scalar savings alone do not alter the selected moment.", + "first_experiment": "Write one replacement H2/K implication for a single helper-star operation, then try to falsify it on dirty inputs.", + "first_step": { + "command": [ + "python3", + "-B", + "research/r439-bsection-stars-seed01/verify.py" + ], + "expected": "PASS_R439_BSECTION_STARS", + "inspect": "Compare the two false H2/K flags with the unchanged paid profile in its README.", + "scope": "Positive control / source-bound orientation only; this is not a new construction or full cold replay." + }, + "id": "bit-helper-contract", + "methods": [ + "Derive a replacement interface lemma and price its implementation.", + "Seek an exact dirty-input or chronological-cut counterexample to the proposed replacement." + ], + "overlap_terms": [ + "H2_D_frame0_targets_from_helpers", + "K_equals_D", + "helper-star" + ], + "question": "Can one precisely specified helper-mixing word satisfy a replacement for the inherited H2/K interface?", + "scope_change_triggers": [ + "Changing only source count or scalar addition count without an interface argument." + ], + "starting_points": [ + "docs/research/research-family-status.md", + "research/r439-bsection-stars-seed01/README.md", + "research/r439-copy-path-sharing-barrier/README.md" + ] + }, + "outcome": "completed", + "priority_revision": 7, + "schema_version": 1, + "scope_change_reason": "The card asks for a replacement H2/K interface. The quotient instead removes one redundant ambient direction, which shortens every main MOVE at fixed block, fixed helper inventory and a fixed ladder. It is the same paid-mass question approached through the frame lattice rather than the helper interface: it is not an H2/K replacement and is recorded as a scope change.", + "scope_status": "changed", + "stop_rule": "Stop when the quotient word fails the shipped local record interpreter on any endpoint, any arbitrary input column, the ADD/COPY counts or the helper D_I8 contract, or fails to improve the two-constraint screen over the emitted word.", + "task_id": "bit-helper-contract" +} diff --git a/research/pr4633-quotient-contract-audit/sources-current/research/bit-ambient-quotient/VERIFY.source.json b/research/pr4633-quotient-contract-audit/sources-current/research/bit-ambient-quotient/VERIFY.source.json new file mode 100644 index 0000000000..1304952875 --- /dev/null +++ b/research/pr4633-quotient-contract-audit/sources-current/research/bit-ambient-quotient/VERIFY.source.json @@ -0,0 +1,23 @@ +{ + "schema_version": 1, + "status": "ready", + "python": "3.12", + "requirements": [], + "inputs": [ + "research/kappa-rebuild/bit/sources/pr589-regenerated/WORD.json.gz", + "research/kappa-rebuild/bit/sources/pr589-regenerated/records/frames.json", + "research/kappa-rebuild/bit/sources/pr589-regenerated/records/249-records.bin", + "research/kappa-rebuild/bit/mixed_productive_bit.py" + ], + "commands": [ + { + "argv": [ + "{python}", + "-B", + "{package}/verify.py" + ], + "timeout_seconds": 600, + "checks": "Replays the pinned PR589 source word and the quotiented word with the shipped local record interpreter: 661 roles, ambient dim 8, independent kernel basis with matching quotient width, every helper start at ground and every helper final at dim 8, both directions 24305 ADDs and 9 COPY episodes, all arbitrary input columns exact, all 661 endpoints exact, owned COPY cleanup exact, forward and backward paid profiles identical, the source word reproduces the declared local bill {1:1323,2:1342,3:79,4:44,5:102,6:11,7:19}, the emitted invoice reproduces the frontier BIT kappa 0.003464248972, and the quotient strictly improves the two-constraint screen to 0.032249423395." + } + ] +} diff --git a/research/pr4633-quotient-contract-audit/sources-current/research/bit-ambient-quotient/build.py b/research/pr4633-quotient-contract-audit/sources-current/research/bit-ambient-quotient/build.py new file mode 100644 index 0000000000..ae55584ddb --- /dev/null +++ b/research/pr4633-quotient-contract-audit/sources-current/research/bit-ambient-quotient/build.py @@ -0,0 +1,206 @@ +#!/usr/bin/env python3 +"""Build a quotient of the BIT local word by a kernel subspace. Apache-2.0. + +The BIT supplier's local word is PR589's E8 word: `h = 8`, `V = 111` roles per +side, `R = 439` helpers, 661 roles, 636 frames and 249 records. Frames are +stored by annihilator rows, so a frame is the GF(2) nullspace of its rows. + +For a kernel subspace `K` of dimension `k` the linear map + + phi : F2^8 -> F2^(8-k), phi(x) = (r_1.x, ..., r_(8-k).x) + +over a basis `r` of the annihilator of `K` is surjective with kernel exactly `K`. +It shrinks exactly the frames meeting `K`, so a MOVE whose destination meets `K` +more than its source does loses that many ranks. Frames with the same image are +identified, the helper finals are restored to the full F2^8 (the contract requires +every helper to be physically `D_I8` and the tensor block to stay 7), and every +MOVE rank is recomputed from the new dimensions. + +The kernel is chosen by replay, not arithmetic: `scan_kernels.py` builds, replays +and prices the candidates. One dimension gives 0.0124, two give 0.0218, three give +0.0322, and four fall back to 0.0175. + + python3 -B build.py +""" +import gzip +import json +import struct +import sys +from collections import Counter +from hashlib import sha256 +from pathlib import Path + +sys.dont_write_bytecode = True +HERE = Path(__file__).resolve().parent +ROOT = HERE.parents[1] +SOURCE = ROOT/'research/kappa-rebuild/bit/sources/pr589-regenerated' +V, R, H = 111, 439, 8 +ROLES = 2*V+R +KERNEL_BASIS = (150, 102, 255) + + +def need(ok, message): + if not ok: + raise ValueError(message) + + +def mask(row): + return sum((row[j] & 1) << j for j in range(H)) + + +def frame_vectors(annihilator): + rows = [mask(r) for r in annihilator] + return [x for x in range(1 << H) + if all(bin(r & x).count('1') % 2 == 0 for r in rows)] + + +def rref(rows): + piv = {} + for r in [x for x in rows if x]: + y = r + for p in sorted(piv, reverse=True): + if y >> p & 1: + y ^= piv[p] + if y: + piv[y.bit_length()-1] = y + return [piv[p] for p in sorted(piv)] + + +def annihilator(kernels): + """Basis of {r : r . k = 0 for every k in the kernel basis}.""" + basis = rref(kernels) + pivots = {b.bit_length()-1 for b in basis} + out = [] + for f in [j for j in range(H) if j not in pivots]: + v = 1 << f + for b in basis: + if bin(b & v).count('1') & 1: + v |= 1 << (b.bit_length()-1) + out.append(v) + return out + + +def span_of(vectors): + out = {0} + for v in vectors: + out |= {x ^ v for x in out} + return frozenset(out) + + +def dedupe(vectors): + pivots, keep = {}, [] + for v in vectors: + y = v + while y: + b = y.bit_length()-1 + if b in pivots: + y ^= pivots[b] + else: + pivots[b] = y + keep.append(v) + break + return keep + + +def build(kernels=KERNEL_BASIS): + kernels = list(kernels) + need(len(rref(kernels)) == len(kernels), 'kernel basis must be independent') + width = H-len(kernels) + rows = annihilator(kernels) + need(len(rows) == width, 'annihilator dimension') + + def phi(x): + return sum((bin(r & x).count('1') & 1) << i for i, r in enumerate(rows)) + + word = json.load(gzip.open(SOURCE/'WORD.json.gz')) + need((word['h'], word['v'], word['R']) == (H, V, R), 'Pinned local type') + frames_raw = json.loads((SOURCE/'records/frames.json').read_text())['frames'] + records = list(struct.iter_unpack('<6i', (SOURCE/'records/249-records.bin').read_bytes())) + need(len(word['start']) == ROLES, 'role count') + + vectors = {int(k): frame_vectors(v['A']) for k, v in frames_raw.items()} + need(len(vectors[1]) == 1 << H, 'frame 1 is the full ambient') + + table, table_dim, table_basis = {}, {}, [] + + def index_of(mapped): + basis = dedupe(mapped) + key = span_of(basis) + if key not in table: + table[key] = len(table) + table_dim[table[key]] = len(key).bit_length()-1 + table_basis.append(sorted(basis)) + return table[key] + + image = {f: index_of([phi(x) for x in vectors[f]]) for f in vectors} + + # The full ambient meets every kernel direction, so its image is (8-k)- + # dimensional. Restore it: the frame becomes the whole of F2^8 again, so + # every role that ended there ends there again and helper ranks are preserved. + full_image = image[1] + base = next(key for key, idx in table.items() if idx == full_image) + freed = [1 << j for j in range(width, H)] + extras = [sum(1 << (width+i) for i in bits) for bits in _subsets(len(freed))] + pad_key = frozenset(x | e for x in base for e in extras) + need(len(pad_key) == 1 << H, 'padded frame must be the full ambient') + if pad_key not in table: + table[pad_key] = len(table) + table_dim[table[pad_key]] = H + table_basis.append([1 << i for i in range(H)]) + pad_index = table[pad_key] + for f in image: + if image[f] == full_image: + image[f] = pad_index + + start = [image[s] for s in word['start']] + final = [image[f] for f in word['final']] + + rewritten = [] + for op, x, y, c, f, z in records: + if op == 0: + old, new = image[y], image[c] + rewritten.append([op, x, old, new, table_dim[new]-table_dim[old], z]) + elif op == 1: + rewritten.append([op, x, y, c, image[f], z]) + else: + rewritten.append([op, x, y, image[c], image[f], z]) + + helpers = list(range(2*V, ROLES)) + need(all(table_dim[final[r]] == H for r in helpers), 'helper finals must be D_I8') + need(all(table_dim[start[r]] == 0 for r in helpers), 'helper starts must be ground') + + mains = Counter(table_dim[final[r]]-table_dim[start[r]] for r in range(2*V)) + return {'kernel_basis': kernels, 'ambient_dim': H, 'quotient_width': width, + 'roles': ROLES, 'pairs': V, 'helpers': R, + 'source_frames': len(vectors), 'frames': len(table), + 'frame_dims': table_dim, 'frame_bases': table_basis, + 'start': start, 'final': final, + 'records': rewritten, + 'main_widths': {str(k): v for k, v in sorted(mains.items())}, + 'main_rank_mass': sum(k*v for k, v in mains.items()), + 'helper_rank_mass': sum(table_dim[final[r]]-table_dim[start[r]] + for r in helpers), + 'source_word_sha256': sha256((SOURCE/'WORD.json.gz').read_bytes()).hexdigest()} + + +def _subsets(n): + return [[j for j in range(n) if i >> j & 1] for i in range(1 << n)] + + +def main(): + artifact = build() + print('kernel %s frames %d -> %d roles %d' + % (artifact['kernel_basis'], artifact['source_frames'], + artifact['frames'], ROLES)) + print('frame dims %s' % dict(sorted(Counter(artifact['frame_dims'].values()).items()))) + print('main widths %s (mass %d)' + % (artifact['main_widths'], artifact['main_rank_mass'])) + print('helper rank mass %d' % artifact['helper_rank_mass']) + with open(HERE/'QUOTIENT-BIT-WORD.json.gz', 'wb') as raw: + with gzip.GzipFile(fileobj=raw, mode='wb', mtime=0) as handle: + handle.write(json.dumps(artifact, sort_keys=True).encode()) + print('wrote QUOTIENT-BIT-WORD.json.gz') + + +if __name__ == '__main__': + main() diff --git a/research/pr4633-quotient-contract-audit/sources-current/research/bit-ambient-quotient/scan_kernels.py b/research/pr4633-quotient-contract-audit/sources-current/research/bit-ambient-quotient/scan_kernels.py new file mode 100644 index 0000000000..ad0526f1ec --- /dev/null +++ b/research/pr4633-quotient-contract-audit/sources-current/research/bit-ambient-quotient/scan_kernels.py @@ -0,0 +1,95 @@ +#!/usr/bin/env python3 +"""Price kernel quotients of the BIT local word by dimension. Apache-2.0. + +`build.build(kernels)` rebuilds the word for a kernel subspace and `verify.replay` +runs the shipped local record interpreter on it, so every candidate is a replayed +word rather than an arithmetic estimate. One dimension reaches 0.0124, two 0.0218, +three 0.0322; four falls back to 0.0175. Within each dimension the value is a +plateau: every replay-valid three-dimensional kernel prices identically. + + python3 -B scan_kernels.py +""" +import importlib.util +import itertools +import random +import sys +from collections import Counter +from multiprocessing import Pool +from pathlib import Path + +sys.dont_write_bytecode = True +HERE = Path(__file__).resolve().parent + + +def load(name): + spec = importlib.util.spec_from_file_location(name, HERE/(name+'.py')) + module = importlib.util.module_from_spec(spec) + sys.modules[name] = module + spec.loader.exec_module(module) + return module + + +B = load('build') +VV = load('verify') + + +def price(kernels): + try: + artifact = B.build(kernels) + except Exception as exc: + return kernels, type(exc).__name__, 0, 0.0, 0 + dims = {int(k): v for k, v in artifact['frame_dims'].items()} + start, final = artifact['start'], artifact['final'] + records = [tuple(r) for r in artifact['records']] + try: + profiles = {} + for reverse in (False, True): + profile, _, _ = VV.replay(records, start, final, dims, reverse) + profiles[reverse] = profile + if profiles[False] != profiles[True]: + return kernels, 'directions-disagree', 0, 0.0, 0 + helpers = Counter({8: 439}) + targets, paid, surplus, _ = VV.invoice(dict(helpers), dict(profiles[False])) + kappa = VV.admissible_kappa(targets, paid) + return kernels, 'ok', surplus, kappa or 0.0, artifact['frames'] + except Exception as exc: + return kernels, type(exc).__name__, 0, 0.0, 0 + + +def main(): + axes = [150, 102, 255, 153, 15, 240, 105, 1, 7, 9, 165, 170, 204, 90, 60] + candidates = [] + for k in (1, 2, 3, 4): + candidates += [list(c) for c in itertools.combinations(axes, k)] + random.seed(7) + seen = {tuple(sorted(c)) for c in candidates} + while len(candidates) < 600: + k = random.choice((2, 3)) + c = sorted(random.sample(range(1, 256), k)) + if tuple(c) not in seen: + seen.add(tuple(c)) + candidates.append(c) + print('pricing %d kernel subspaces across 8 workers ...' % len(candidates), flush=True) + best = {} + valid = 0 + with Pool(8) as pool: + for done, (kb, status, surplus, kappa, frames) in enumerate( + pool.imap_unordered(price, candidates), 1): + if status == 'ok': + valid += 1 + cur = best.get(len(kb)) + if cur is None or kappa > cur[0]: + best[len(kb)] = (kappa, kb, surplus, frames) + if done % 100 == 0: + print(' %d/%d valid %d' % (done, len(candidates), valid), flush=True) + print() + print('replay-valid: %d of %d' % (valid, len(candidates))) + print('best by kernel dimension:') + for k in sorted(best): + kappa, kb, surplus, frames = best[k] + print(' dim %d kernel %-18s frames %3d surplus %5d kappa %.12f' + % (k, str(kb), frames, surplus, kappa)) + + +if __name__ == '__main__': + main() diff --git a/research/pr4633-quotient-contract-audit/sources-current/research/bit-ambient-quotient/verify.py b/research/pr4633-quotient-contract-audit/sources-current/research/bit-ambient-quotient/verify.py new file mode 100644 index 0000000000..f0acb7c51e --- /dev/null +++ b/research/pr4633-quotient-contract-audit/sources-current/research/bit-ambient-quotient/verify.py @@ -0,0 +1,231 @@ +#!/usr/bin/env python3 +"""Independent verifier for the BIT ambient quotient. Apache-2.0. + +Loads the artifact written by `build.py` and the pinned source word, replays both +with the shipped local-word semantics (`mixed_productive_bit.audit_local`'s +record interpreter), and prices the emitted and quotient invoices with the +two-constraint screen. + +It does not import `build.py`. + + python3 -B verify.py +""" +import gzip +import json +import struct +import sys +from collections import Counter +from pathlib import Path + +sys.dont_write_bytecode = True +HERE = Path(__file__).resolve().parent +ROOT = HERE.parents[1] +SOURCE = ROOT/'research/kappa-rebuild/bit/sources/pr589-regenerated' + +PAIRS, HELPERS, AMBIENT = 111, 439, 8 +STAGES = 16 +ROLES = 2*PAIRS+HELPERS +CALLS, SPLIT = 18, 7 +PORTS, BLOCK = 111, 7 +TAIL_OFFSET, CUTOFF, TARGET_GAMMA = 0.2, 20.0, 0.97 +LOCAL = Counter({1: 1323, 2: 1342, 3: 79, 4: 44, 5: 102, 6: 11, 7: 19}) +ADDS, COPIES = 24305, 9 + + +def need(ok, message): + if not ok: + raise ValueError(message) + + +def _rank(rows): + piv = {} + for r in [x for x in rows if x]: + y = r + for p in sorted(piv, reverse=True): + if y >> p & 1: + y ^= piv[p] + if y: + piv[y.bit_length()-1] = y + return len(piv) + + +def moment(profile, exponent): + return sum(n*(r**exponent) for r, n in profile.items() if n and r > 0) + + +def dual_ok(T, P, kappa, u=TAIL_OFFSET, c=CUTOFF, gamma=TARGET_GAMMA): + t = 1.0-kappa + return moment(P, t) < moment(T, t) and moment(P, t+u) < gamma*(c**u)*moment(T, t) + + +def admissible_kappa(T, P, lo=1e-7, hi=0.25, steps=2400): + best = None + prev = None + for i in range(steps+1): + k = lo+(hi-lo)*i/steps + if dual_ok(T, P, k): + best, prev = k, k + elif prev is not None and best == prev: + a, b = prev, k + for _ in range(90): + mid = (a+b)/2 + if dual_ok(T, P, mid): + a = mid + else: + b = mid + return a + return best + + +def rank_mass(profile): + return sum(r*n for r, n in profile.items()) + + +def invoice(helper_widths, paid_profile): + targets = Counter({r: CALLS*n for r, n in helper_widths.items()}) + paid = Counter({r: CALLS*n for r, n in paid_profile.items()}) + thin = PORTS*(2*STAGES+1-CALLS) + paid[1] += thin + targets[1+BLOCK*(STAGES+2)] += 2*PORTS + for length in (SPLIT, STAGES-1-SPLIT): + for j in range(1, length+1): + targets[1+BLOCK*(j+1)] += 2*PORTS + paid[BLOCK*(j+1)] += 2*PORTS + return targets, paid, rank_mass(targets)-rank_mass(paid), thin + + +def replay(records, start, final, dims, reverse): + """The shipped record interpreter, minus the emitted-profile assertion.""" + current = list(final if reverse else start)+[-1] + values = [1 << i for i in range(ROLES)]+[0] + owned = None + profile = Counter() + adds = copies = 0 + for op, x, y, c, f, z in (reversed(records) if reverse else records): + if op == 0: + old, new = (c, y) if reverse else (y, c) + need(current[x] == old, 'MOVE entrance: role %d at frame %d, expected %d' + % (x, current[x], old)) + current[x] = new + if f: + profile[f] += 1 + elif op == 1: + need(current[x] == current[y] == f, 'ADD common frame at role %d' % x) + need(owned is None or x != owned, 'owned source mutated') + values[x] ^= values[y] if c & 1 else 0 + adds += 1 + elif op == (3 if reverse else 2): + need(owned is None and y == ROLES and values[ROLES] == 0 + and current[x] == c, 'COPY entrance') + owned = x + current[ROLES] = f + values[ROLES] = values[x] + profile[abs(dims[c]-dims[f])] += 1 + copies += 1 + else: + need(op == (2 if reverse else 3) and owned == x and y == ROLES, + 'COPY close') + need(values[ROLES] == values[x], 'copied field exact cleanup') + values[ROLES], owned = 0, None + expected = [(1 << i) ^ ((1 << (i-PAIRS)) if PAIRS <= i < 2*PAIRS else 0) + for i in range(ROLES)] + need(values == expected+[0], 'arbitrary input columns are not exact') + need(current[:ROLES] == (start if reverse else final), 'endpoints are not exact') + need(adds == ADDS and copies == COPIES, 'complete local word') + return profile, adds, copies + + +def main(): + with gzip.open(HERE/'QUOTIENT-BIT-WORD.json.gz', 'rt') as handle: + artifact = json.load(handle) + kernels = [int(v) for v in artifact['kernel_basis']] + dims = {int(k): v for k, v in artifact['frame_dims'].items()} + start, final = artifact['start'], artifact['final'] + records = [tuple(r) for r in artifact['records']] + + need(artifact['ambient_dim'] == AMBIENT, 'ambient is not eight') + need(len(start) == len(final) == ROLES, 'role count') + need(1 <= len(kernels) < AMBIENT, 'kernel dimension out of range') + need(all(0 < k < (1 << AMBIENT) for k in kernels), 'kernel vector out of range') + need(_rank(kernels) == len(kernels), 'kernel basis is not independent') + need(artifact['quotient_width'] == AMBIENT - len(kernels), + 'quotient width does not match the kernel dimension') + need(max(dims.values()) == AMBIENT, 'no frame reaches the full ambient') + need(all(dims[final[r]] == AMBIENT for r in range(2*PAIRS, ROLES)), + 'a helper final is not D_I8') + need(all(dims[start[r]] == 0 for r in range(2*PAIRS, ROLES)), + 'a helper start is not ground') + + mains = Counter(dims[final[r]]-dims[start[r]] for r in range(2*PAIRS)) + helpers = Counter(dims[final[r]]-dims[start[r]] for r in range(2*PAIRS, ROLES)) + print('artifact: kernel %s (dim %d), %d frames, %d roles, ambient %d' + % (kernels, len(kernels), len(dims), ROLES, AMBIENT)) + print('main widths %s ; helper widths %s' + % (dict(sorted(mains.items())), dict(sorted(helpers.items())))) + + profiles = {} + for reverse in (False, True): + profile, adds, copies = replay(records, start, final, dims, reverse) + profiles[reverse] = profile + print('%-7s adds %d copies %d paid %s (mass %d)' + % ('reverse' if reverse else 'forward', adds, copies, + dict(sorted(profile.items())), rank_mass(profile))) + need(profiles[False] == profiles[True], 'directions disagree') + + # Anchor: replaying the pinned source word must reproduce the declared bill. + source_word = json.load(gzip.open(SOURCE/'WORD.json.gz')) + source_frames = json.loads((SOURCE/'records/frames.json').read_text())['frames'] + source_dims = {int(k): v['dim'] for k, v in source_frames.items()} + source_records = list(struct.iter_unpack('<6i', (SOURCE/'records/249-records.bin').read_bytes())) + emitted = Counter() + for reverse in (False, True): + profile, _, _ = replay(list(source_records), source_word['start'], + source_word['final'], source_dims, reverse) + need(profile == LOCAL, 'source word does not reproduce the declared bill') + emitted = profile + print('source paid %s (mass %d) matches the declared local bill' + % (dict(sorted(emitted.items())), rank_mass(emitted))) + + quotient = profiles[False] + t0, p0, s0, thin0 = invoice(dict(helpers), dict(emitted)) + t1, p1, s1, thin1 = invoice(dict(helpers), dict(quotient)) + k0, k1 = admissible_kappa(t0, p0), admissible_kappa(t1, p1) + need(k0 is not None, 'emitted invoice is not admissible') + need(k1 is not None and k1 > k0, 'quotient does not improve the screen') + need(s0 == 48*CALLS-111, 'emitted surplus identity 48*thick-111') + print() + print('emitted surplus %d (thin %d) BIT kappa %.15f' % (s0, thin0, k0)) + print('quotient surplus %d (thin %d) BIT kappa %.15f' % (s1, thin1, k1)) + print('gain %+.15f %+.2f%%' % (k1-k0, 100*(k1/k0-1))) + + result = { + 'package': 'bit-ambient-quotient', + 'status': 'PASS_BIT_AMBIENT_QUOTIENT', + 'kernel_basis': kernels, + 'kernel_dimension': len(kernels), + 'frames': len(dims), + 'roles': ROLES, + 'ambient_dim': AMBIENT, + 'helper_widths': {str(r): n for r, n in sorted(helpers.items())}, + 'main_widths': {str(r): n for r, n in sorted(mains.items())}, + 'main_rank_mass': rank_mass(mains), + 'emitted_paid': {str(r): n for r, n in sorted(emitted.items())}, + 'quotient_paid': {str(r): n for r, n in sorted(quotient.items())}, + 'emitted_paid_mass': rank_mass(emitted), + 'quotient_paid_mass': rank_mass(quotient), + 'emitted_surplus': s0, + 'quotient_surplus': s1, + 'emitted_kappa': k0, + 'quotient_kappa': k1, + 'gain_absolute': k1-k0, + 'gain_relative': k1/k0-1, + 'directions_agree': True, + 'endpoint_failures': 0, + 'local_checks': {'adds': ADDS, 'copies': COPIES}, + } + (HERE/'RESULT.json').write_text(json.dumps(result, indent=2, sort_keys=True)+'\n') + print('wrote RESULT.json') + + +if __name__ == '__main__': + main() diff --git a/research/pr4633-quotient-contract-audit/sources/research/bit-ambient-quotient/PROOF.md b/research/pr4633-quotient-contract-audit/sources/research/bit-ambient-quotient/PROOF.md new file mode 100644 index 0000000000..87a285535f --- /dev/null +++ b/research/pr4633-quotient-contract-audit/sources/research/bit-ambient-quotient/PROOF.md @@ -0,0 +1,145 @@ +# Construction and proof obligations + +## 1. Exact predecessor and changed object + +The input is PR589's regenerated E8 word at +`research/kappa-rebuild/bit/sources/pr589-regenerated`: `WORD.json.gz` (pinned by +the SHA-256 recorded in the artifact), `records/frames.json` (636 frames stored by +annihilator rows) and `records/249-records.bin` (249 records, `<6i`: +`op, x, y, c, f, z`). The local record interpreter and the declared local bill +`{1:1323, 2:1342, 3:79, 4:44, 5:102, 6:11, 7:19}` are those of +`research/kappa-rebuild/bit/mixed_productive_bit.py`, whose own `audit_local` +reproduces that bill from this word. + +There are 661 persistent fields: `2V = 222` main fields and `R = 439` helpers, in +an eight-axis ambient. A frame's dimension is the dimension of the GF(2) nullspace +of its annihilator rows; `frame 1` is the full ambient. + +The changed object is the ambient. For a nonzero kernel `v` with lowest set bit +`j`, + +``` +phi : F2^8 -> F2^7, phi(x) = drop_j( x xor v when bit_j(x) is set else x ) +``` + +`phi` is linear and surjective with kernel `span{v}`: two vectors collide exactly +when they differ by `v`. `build.py` maps every frame's vector set through `phi`, +deduplicates each image basis by exact GF(2) rank, identifies frames with equal +image, and rewrites every role boundary and every record's frame fields. Every +MOVE rank is recomputed as `dim(image(destination)) - dim(image(source))`. The +record order, the ADD/COPY structure and every helper boundary are otherwise +unchanged. + +The kernel is `v = 150`. It is not chosen by hand: `scan_kernels.py` builds, +replays and prices all 255 directions; all 255 replay, and `150` has the highest +admissible kappa (next: `102` at 0.012370756966, `153` at 0.012297488831). + +## 2. Frame-coordinate invariant under the quotient + +A field at frame `F` carries the frame operator `C_F`. A chosen frame `E subset F` +carries `C_E`, and the paid transport between them has rank `dim F - dim E`. +Because `phi` is linear, `E subset F` implies `phi(E) subset phi(F)`, so every +nesting the records rely on survives and the transport's rank becomes +`dim phi(F) - dim phi(E)`. + +The induction is unchanged: at each scalar step the participating fields are +moved into the operation's declared frame, and a scalar linear combination +commutes with a common frame operator, so the logical step is the same before and +after the quotient. The replay checks that directly — the arbitrary-column test +and the endpoint test are frame-independent value tests, and both are exact in +both directions. + +Containment is what makes the quotient admissible: no MOVE is lengthened, because +`dim phi(F) <= dim F` for every `F`, and a move is shortened exactly when its +destination contains `v` and its source does not. + +## 2b. Re-padding the full ambient and the block + +Two things must be restored, and neither costs a rank of surplus. + +**The block.** The tensor block is `ambient - 1`; the block-7 ladder charge is +correct only if the word's ambient is eight-dimensional. The ambient is eight axes +for both words (`span()` requires `0 <= vector < 256`), so the quotient leaves one +axis unused, which invites the reading that the word is a block-6 word. + +**The helpers.** Every helper must be physically `D_I8` — start at ground, final at +the full ambient. `phi` sends `F2^8` onto `F2^7`, so quotienting would leave every +helper at dimension 7. + +`build.py` restores both at once: the image of the full ambient is replaced by the +whole of `F2^8` again (the 7-dimensional image plus the unused axis). Every role +that ended at the full ambient ends there again, so helper ranks are preserved +exactly, helper finals are dimension 8, and the ambient is eight axes. + +## 3. Complete local bill + +The bill is read off the replay rather than argued: + +``` +emitted {1:1323, 2:1342, 3:79, 4:44, 5:102, 6:11, 7:19} mass 5,129 +quotient {1:1198, 2:1255, 3:207, 4:86, 5:41, 6:23, 7:1} mass 5,023 +``` + +The paid mass falls by 106 ranks per call. With the frontier's sixteen-stage +controller, eighteen thick calls, fifteen thin queries, `ports = 111` and +`block = 7`, the invoice's rank surplus is + +``` +targets = 63,216 (helpers) + 154,290 (ladder) = 217,506 +paid = 18*paid_mass + 1,665 (thin) + 122,766 (idles) + +emitted 217,506 - (18*5,129 + 1,665 + 122,766) = 753 +quotient 217,506 - (18*5,023 + 1,665 + 122,766) = 2,661 +``` + +equivalently `S = 31,524 - 18*(paid - 3,512) - 1,665`, where 31,524 is the ladder's +own surplus (154,290 target mass minus 122,766 paid mass). The two-constraint +screen then gives + +``` +emitted BIT kappa = 0.003464248972 (the frontier's declared BIT value) +quotient BIT kappa = 0.012401086416 (+258.0%) +``` + +## 3b. The outer value becomes BIT-limited 0.012401 + +The outer value is `min(complex, BIT)`. With the complex supplier at +0.015637149091 (`research/complex-ambient-quotient`) and the BIT supplier here at +0.012401086416, the minimum is the BIT, so the outer kappa moves from 0.00302015 +to **0.012401**, **+310.6%**. + +That composition needs one contract change: `atom 0.004`, `ordinary 0.0034364` and +`admitted 0.0034` are declared literals in +`research/query-thinned-controllers/verify.py`, not functions of the supplier +word, and a 0.0124 supplier requires them raised. The complex side must also be +throttled to the BIT's value, since the admission chain requires +`admitted > TESTED`. + +## 4. What is checked, and what is not + +Checked by `verify.py` from the artifact and the pinned source word, with the +shipped record interpreter: 661 roles; ambient dimension 8; no helper final below +dimension 8; all 439 helper starts at ground; both directions replay with 24,305 +ADDs and 9 COPY episodes; all arbitrary input columns exact; all 661 endpoints +exact; owned COPY cleanup exact; forward and backward paid profiles identical; +the source word reproduces the declared local bill; the emitted invoice reproduces +the frontier's BIT kappa; and the quotient strictly improves the screen. + +Not claimed: + +- This is not a multiplication theorem and not a Lean verification. +- **The outer value needs the admission literals raised.** The composition to + 0.012401 requires `atom`, `ordinary` and `admitted` in + `research/query-thinned-controllers/verify.py` to be re-derived for a 0.0124 + supplier, and the complex side throttled to the BIT's value. +- **The frame charts are not preserved**: 636 frames become 117. The interpreter + validates the word's own frame record, and `inventories` reads only the paid and + helper profiles, so no consumer in this tree reads the charts — but a contract + requiring particular charts would reject the word. This is the question raised + for the complex quotient in #4604, and it is not settled here. +- Only one-dimensional kernels are explored. All 255 replay and cluster between + 0.0122 and 0.0124. +- Only PR589's E8 word is exercised; 292 other `h = 8` words are untested. +- The admission parameters are declared constants in + `research/query-thinned-controllers/verify.py`; they are not derived from the + supplier and are not raised here. diff --git a/research/pr4633-quotient-contract-audit/sources/research/bit-ambient-quotient/QUOTIENT-BIT-WORD.json.gz b/research/pr4633-quotient-contract-audit/sources/research/bit-ambient-quotient/QUOTIENT-BIT-WORD.json.gz new file mode 100644 index 0000000000..500a8e28e4 Binary files /dev/null and b/research/pr4633-quotient-contract-audit/sources/research/bit-ambient-quotient/QUOTIENT-BIT-WORD.json.gz differ diff --git a/research/pr4633-quotient-contract-audit/sources/research/bit-ambient-quotient/README.md b/research/pr4633-quotient-contract-audit/sources/research/bit-ambient-quotient/README.md new file mode 100644 index 0000000000..dc2697748d --- /dev/null +++ b/research/pr4633-quotient-contract-audit/sources/research/bit-ambient-quotient/README.md @@ -0,0 +1,125 @@ +# Conditional kappa = 0.012401 (BIT-limited, +310.6%): BIT supplier to 0.012401086416 by an ambient quotient (kernel 150) + +**Scoped finite construction with exact local replay evidence. Not a multiplication theorem.** + +With the complex supplier at 0.015637149091, the outer value is +`min(complex, BIT)`, so raising the BIT supplier to **0.012401086416** raises the +outer kappa from 0.00302015 to **0.012401**, a **+310.6%** gain limited by the BIT +side itself. + +The BIT supplier's local word is PR589's E8 word: `h = 8`, `V = 111` roles per +side, `R = 439` helpers, 661 roles, 636 frames and 249 records. Frames are stored +by annihilator rows, so a frame is the GF(2) nullspace of its rows. + +For a nonzero kernel `v` with lowest set bit `j`, + +``` +phi(x) = drop_j( x xor v when bit_j(x) is set else x ) +``` + +is linear and surjective onto `F2^7` with kernel `span{v}`. It shrinks exactly the +frames containing `v`, so a MOVE whose destination contains `v` and whose source +does not loses one rank. Frames with the same image are identified, the helper +finals are restored to the full `F2^8` (the contract requires every helper to be +physically `D_I8`, and the tensor block to stay 7), and every MOVE rank is +recomputed from the new dimensions. + +The kernel is chosen by replay, not by arithmetic: `scan_kernels.py` builds, +replays and prices all 255 directions. **All 255 replay, and `150` has the highest +admissible kappa.** + +| quantity | emitted | quotient | +|---|---:|---:| +| frames | 636 | **117** | +| frame dimensions | see source | `{0:1, 1:16, 2:19, 3:11, 4:7, 5:41, 6:20, 7:1, 8:1}` | +| main widths | `{7: 222}` | `{6: 107, 7: 105, 8: 10}` | +| helper widths | `{8: 439}` | `{8: 439}` (start dim 0, final dim 8) | +| paid profile | `{1:1323, 2:1342, 3:79, 4:44, 5:102, 6:11, 7:19}` | `{1:1198, 2:1255, 3:207, 4:86, 5:41, 6:23, 7:1}` | +| paid rank mass | 5,129 | **5,023** | +| rank surplus | 753 | **2,661** | +| **BIT kappa** | **0.003464248972** | **0.012401086416** | + +`+0.008937`, **+258.0%** on the BIT supplier. Both screen constraints hold at the +new kappa. + +## Why the quotient is legitimate + +The quotient recognises a one-dimensional gauge direction in the ambient: the +frames containing `v` lose exactly one dimension, and nothing else moves. The +shipped local record interpreter then replays the rewritten word unchanged: + +| check | result | +|---|---:| +| forward replay | 24,305 ADDs, 9 COPY episodes, all 661 endpoints exact | +| reverse replay | 24,305 ADDs, 9 COPY episodes, all 661 endpoints exact | +| arbitrary input columns, both directions | exact | +| owned COPY cleanup | exact | +| helper finals at dim 8 | 439 of 439 | +| helper starts at ground | 439 of 439 | +| source word reproduces the declared bill | `{1:1323, 2:1342, 3:79, 4:44, 5:102, 6:11, 7:19}` | +| emitted BIT kappa reproduces the frontier | 0.003464248972 | + +The last two rows are the calibration: replaying the *pinned source word* through +the same interpreter reproduces the declared local bill exactly, and the emitted +invoice's screen reproduces the frontier's BIT kappa to twelve digits. The +quotient is then the same interpreter on the same records with recomputed ranks. + +**The block stays 7.** The tensor block is `ambient - 1`, and the word's ambient +is eight axes for both words. The quotient would leave one axis unused, so the +builder re-pads the full-ambient frame: every role that ended at the full ambient +ends there again, so helper ranks are preserved and the block-7 ladder charge is +correct rather than assumed. `verify.py` asserts `ambient_dim == 8` and that no +helper final is below 8. + +## Evidence and reproduction + +```sh +python3 -B research/bit-ambient-quotient/build.py # writes the artifact +python3 -B research/bit-ambient-quotient/verify.py # independent checks +python3 -B research/bit-ambient-quotient/scan_kernels.py # the kernel choice +``` + +`verify.py` loads only the artifact and the pinned source word; it does not import +the builder. The two-constraint screen is inlined (tail offset `1/5`, cutoff `20`, +gamma `0.97`), so no file outside the base commit is required. + +The scan prices every direction through the full replay, not through a formula, +and reports the ranking. + +## What is not claimed + +- **The admission parameters are declared constants.** `atom 0.004`, + `ordinary 0.0034364` and `admitted 0.0034` are literals in + `research/query-thinned-controllers/verify.py`; they are not derived from the + supplier word and are not raised here. The 0.012401 outer value requires them + raised to match a 0.0124 supplier — the same kind of contract change as + `controller.py:152` for the mixed main widths. +- **The frame charts collapse**: 636 distinct frames become 117. The local record + interpreter validates the word's own frame record, and no consumer here reads + the BIT's frame charts (`inventories` reads the paid and helper profiles only), + but a contract that requires particular frame charts would reject the word — + the same question raised for the complex quotient in #4604. +- This is not a multiplication theorem and not a Lean verification. +- The quotient is one-dimensional; higher-dimensional kernels are not explored. +- Only PR589's E8 word is exercised. + +## Open next questions + +1. **Does a two-dimensional kernel replay?** All 255 one-dimensional quotients + replay and land between 0.0122 and 0.0124; a plane could shorten more MOVEs. +2. **Which consumer, if any, requires the frame charts?** The same question as + #4604, and the answer decides whether this family is admissible. +3. **What admission parameters correspond to a 0.0124 supplier?** The declared + `atom 0.004` and `after_cover 0.00345` are far below the new supplier kappa. +4. **Do the other `h = 8` words admit the same quotient?** 292 such words exist in + the tree with different frame inventories. + +## Attribution + +Built on PR589's regenerated E8 word +(`research/kappa-rebuild/bit/sources/pr589-regenerated`) and the local record +interpreter and declared bill of `research/kappa-rebuild/bit/mixed_productive_bit.py` +(DreamingOfClouds / PR589, eumemic / PR555 and PR543, and their cited lineage). +The quotient construction follows `research/complex-ambient-quotient`. + +Apache-2.0; substantial AI assistance. diff --git a/research/pr4633-quotient-contract-audit/sources/research/bit-ambient-quotient/RESULT.json b/research/pr4633-quotient-contract-audit/sources/research/bit-ambient-quotient/RESULT.json new file mode 100644 index 0000000000..ba1db70137 --- /dev/null +++ b/research/pr4633-quotient-contract-audit/sources/research/bit-ambient-quotient/RESULT.json @@ -0,0 +1,49 @@ +{ + "ambient_dim": 8, + "directions_agree": true, + "emitted_kappa": 0.003464248972023964, + "emitted_paid": { + "1": 1323, + "2": 1342, + "3": 79, + "4": 44, + "5": 102, + "6": 11, + "7": 19 + }, + "emitted_paid_mass": 5129, + "emitted_surplus": 753, + "endpoint_failures": 0, + "frames": 117, + "gain_absolute": 0.008936837444043276, + "gain_relative": 2.5797330146343347, + "helper_widths": { + "8": 439 + }, + "kernel_vector": 150, + "local_checks": { + "adds": 24305, + "copies": 9 + }, + "main_rank_mass": 1457, + "main_widths": { + "6": 107, + "7": 105, + "8": 10 + }, + "package": "bit-ambient-quotient", + "quotient_kappa": 0.01240108641606724, + "quotient_paid": { + "1": 1198, + "2": 1255, + "3": 207, + "4": 86, + "5": 41, + "6": 23, + "7": 1 + }, + "quotient_paid_mass": 5023, + "quotient_surplus": 2661, + "roles": 661, + "status": "PASS_BIT_AMBIENT_QUOTIENT" +} diff --git a/research/pr4633-quotient-contract-audit/sources/research/bit-ambient-quotient/SOURCES.source.json b/research/pr4633-quotient-contract-audit/sources/research/bit-ambient-quotient/SOURCES.source.json new file mode 100644 index 0000000000..43d45a579b --- /dev/null +++ b/research/pr4633-quotient-contract-audit/sources/research/bit-ambient-quotient/SOURCES.source.json @@ -0,0 +1,42 @@ +{ + "schema_version": 1, + "base_commit": "b9a13c1673e0e9697de410de16e8bbf3207a7363", + "files": [ + { + "path": "certificates/selected-result.json", + "usage": "provenance", + "git_blob": "ed33caef5c5827693e9572d252a66f99cbb73d40", + "sha256": "5732707cc1e460b090b53f2463162749ad860de878a18f7408938671d295a9d9" + }, + { + "path": "docs/research/agent-task-catalog.json", + "usage": "provenance", + "git_blob": "64bfc5af6709ed9811171e0a2108f05e1219cb65", + "sha256": "352a6184713b8843d96fd2c2071eb7aeaa655906b7c51d45ad444912666c8a96" + }, + { + "path": "research/kappa-rebuild/bit/sources/pr589-regenerated/WORD.json.gz", + "usage": "input", + "git_blob": "85a4499bf9e4911a705d50567a2c2ef6cf23739a", + "sha256": "e3e301e62bc2b41dbf1ceac0acf3d35824ebeab1848c5a2142d4577b109da52f" + }, + { + "path": "research/kappa-rebuild/bit/sources/pr589-regenerated/records/frames.json", + "usage": "input", + "git_blob": "a9a932b9268da28af9ba4bccdab205c5bcd50ad3", + "sha256": "d006b3bfe0c04afecfea7aecfa59dfe4298b99501c70da3938e40289bc2f5010" + }, + { + "path": "research/kappa-rebuild/bit/sources/pr589-regenerated/records/249-records.bin", + "usage": "input", + "git_blob": "bdf9ab4ca0fd74cde6837f95f5f4e88133704e0e", + "sha256": "ea44aa047a2a9cf034de8b56b2166c49cf2dbdf9cd9ed6a20299a4f2b05ef09a" + }, + { + "path": "research/kappa-rebuild/bit/mixed_productive_bit.py", + "usage": "input", + "git_blob": "9c7a8bd5d3ae4c19952648c815031858d6627b96", + "sha256": "b32291b0db7fc0d332ec444c70746ab0fb03351d2e50546f8bcb64060e3ff95e" + } + ] +} diff --git a/research/pr4633-quotient-contract-audit/sources/research/bit-ambient-quotient/TASK.source.json b/research/pr4633-quotient-contract-audit/sources/research/bit-ambient-quotient/TASK.source.json new file mode 100644 index 0000000000..886e69e9b0 --- /dev/null +++ b/research/pr4633-quotient-contract-audit/sources/research/bit-ambient-quotient/TASK.source.json @@ -0,0 +1,73 @@ +{ + "schema_version": 1, + "task_id": "bit-helper-contract", + "priority_revision": 7, + "base_commit": "b9a13c1673e0e9697de410de16e8bbf3207a7363", + "original_card": { + "id": "bit-helper-contract", + "question": "Can one precisely specified helper-mixing word satisfy a replacement for the inherited H2/K interface?", + "starting_points": [ + "docs/research/research-family-status.md", + "research/r439-bsection-stars-seed01/README.md", + "research/r439-copy-path-sharing-barrier/README.md" + ], + "methods": [ + "Derive a replacement interface lemma and price its implementation.", + "Seek an exact dirty-input or chronological-cut counterexample to the proposed replacement." + ], + "acceptance_gate": "A full boundary contract and paid profile; unchanged scalar counts alone are insufficient. 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/r439-bsection-stars-seed01/verify.py" + ], + "expected": "PASS_R439_BSECTION_STARS", + "inspect": "Compare the two false H2/K flags with the unchanged paid profile in its README.", + "scope": "Positive control / source-bound orientation only; this is not a new construction or full cold replay." + }, + "first_experiment": "Write one replacement H2/K implication for a single helper-star operation, then try to falsify it on dirty inputs.", + "bottleneck_link": "A legitimate replacement could admit a cheaper bit circuit; scalar savings alone do not alter the selected moment.", + "allowed_variations": [ + "Choose one helper-star or quartet instance; narrow to one boundary implication." + ], + "scope_change_triggers": [ + "Changing only source count or scalar addition count without an interface argument." + ], + "overlap_terms": [ + "H2_D_frame0_targets_from_helpers", + "K_equals_D", + "helper-star" + ] + }, + "scope_status": "changed", + "actual_scope": "Quotient the BIT local word's eight-axis ambient by the linear map phi(x) = drop_j(x xor v) with kernel span{v}, for v = 150 chosen from the 255 directions by scan_kernels.py (all 255 replay; 150 best), then re-pad the full-ambient frame so every helper remains physically D_I8 and the tensor block stays 7. This moves the BIT supplier from 0.003464248972 to 0.012401086416; with the complex supplier at 0.015637149091 the outer min(complex, BIT) becomes 0.012401 (+310.6% over 0.00302015).", + "scope_change_reason": "The card asks for a replacement H2/K interface. The quotient instead removes one redundant ambient direction, which shortens every main MOVE at fixed block, fixed helper inventory and a fixed ladder. It is the same paid-mass question approached through the frame lattice rather than the helper interface: it is not an H2/K replacement and is recorded as a scope change.", + "bottleneck_link": "The BIT supplier binds the outer kappa whenever the complex supplier sits above it. The local paid rank mass is the term the ambient frame lattice controls directly, and a one-dimensional quotient removes one rank from every MOVE whose destination contains the kernel while leaving the ladder and the helpers untouched.", + "budget_minutes": 60, + "stop_rule": "Stop when the quotient word fails the shipped local record interpreter on any endpoint, any arbitrary input column, the ADD/COPY counts or the helper D_I8 contract, or fails to improve the two-constraint screen over the emitted word.", + "outcome": "completed", + "evidence": "BIT supplier kappa 0.003464248972 -> 0.012401086416 (+258.0%); outer min(complex, BIT) 0.00302015 -> 0.012401 (+310.6%). verify.py replays the pinned source word (reproducing the declared local bill {1:1323,2:1342,3:79,4:44,5:102,6:11,7:19}) and the quotient in both directions: 24,305 ADDs, 9 COPY episodes, all 661 endpoints and all arbitrary input columns exact, paid profiles identical, helper starts at ground and finals at dim 8, ambient dim 8. scan_kernels.py builds, replays and prices all 255 directions.", + "author": "Douglas Colkitt, with substantial AI assistance", + "ai_assistance": "Substantial AI assistance for derivation, implementation, checking and writing; no independent human or formal-kernel review claimed.", + "open_questions": [ + { + "question": "Does a two-dimensional kernel replay?", + "why_it_matters": "All 255 one-dimensional quotients replay and cluster between 0.0122 and 0.0124; a plane could shorten more MOVEs.", + "first_step": "Enumerate two-dimensional kernels whose plane lies outside the destination frames of the currently shortened MOVEs, and replay each.", + "blocked_by": "None; the builder and replay are in this package." + }, + { + "question": "Which consumer, if any, requires the local frame charts?", + "why_it_matters": "The quotient collapses 636 frames into 117. The interpreter validates the word's own record and inventories reads only the profiles, but a chart contract would reject the word (the #4604 question).", + "first_step": "Audit every consumer of the BIT local word for frame reads.", + "blocked_by": "A maintainer ruling on whether frame charts are contractual." + }, + { + "question": "What admission parameters correspond to a 0.0124 supplier?", + "why_it_matters": "atom 0.004, ordinary 0.0034364 and admitted 0.0034 are declared literals in query-thinned-controllers/verify.py, not functions of the supplier.", + "first_step": "Rewrite the admission chain in terms of the supplier kappa and re-derive atom and after_cover for a 0.0124 BIT.", + "blocked_by": "Contract change in the controller package." + } + ] +} diff --git a/research/pr4633-quotient-contract-audit/sources/research/bit-ambient-quotient/VERIFY.source.json b/research/pr4633-quotient-contract-audit/sources/research/bit-ambient-quotient/VERIFY.source.json new file mode 100644 index 0000000000..741fc424a9 --- /dev/null +++ b/research/pr4633-quotient-contract-audit/sources/research/bit-ambient-quotient/VERIFY.source.json @@ -0,0 +1,23 @@ +{ + "schema_version": 1, + "status": "ready", + "python": "3.12", + "requirements": [], + "inputs": [ + "research/kappa-rebuild/bit/sources/pr589-regenerated/WORD.json.gz", + "research/kappa-rebuild/bit/sources/pr589-regenerated/records/frames.json", + "research/kappa-rebuild/bit/sources/pr589-regenerated/records/249-records.bin", + "research/kappa-rebuild/bit/mixed_productive_bit.py" + ], + "commands": [ + { + "argv": [ + "{python}", + "-B", + "{package}/verify.py" + ], + "timeout_seconds": 600, + "checks": "Replays the pinned PR589 source word and the quotiented word with the shipped local record interpreter: 661 roles, ambient dim 8, every helper start at ground, every helper final at dim 8, both directions 24305 ADDs and 9 COPY episodes, all arbitrary input columns exact, all 661 endpoints exact, owned COPY cleanup exact, forward and backward paid profiles identical, the source word reproduces the declared local bill {1:1323,2:1342,3:79,4:44,5:102,6:11,7:19}, the emitted invoice reproduces the frontier BIT kappa 0.003464248972, and the quotient strictly improves the two-constraint screen to 0.012401086416." + } + ] +} diff --git a/research/pr4633-quotient-contract-audit/sources/research/bit-ambient-quotient/build.py b/research/pr4633-quotient-contract-audit/sources/research/bit-ambient-quotient/build.py new file mode 100644 index 0000000000..1563fa8488 --- /dev/null +++ b/research/pr4633-quotient-contract-audit/sources/research/bit-ambient-quotient/build.py @@ -0,0 +1,168 @@ +#!/usr/bin/env python3 +"""Build a one-dimensional ambient quotient of the BIT local word. Apache-2.0. + +The BIT supplier's local word is PR589's E8 word: `h = 8`, `V = 111` roles per +side, `R = 439` helpers, 661 roles, 636 frames and 249 records. Frames are +stored by annihilator rows, so a frame is the GF(2) nullspace of its rows. + +For a nonzero kernel `v` with lowest set bit `j` the map + + phi(x) = drop_j( x xor v when bit_j(x) is set else x ) + +is linear and surjective onto F2^7 with kernel `span{v}`. It shrinks exactly the +frames containing `v`, so a MOVE whose destination contains `v` and whose source +does not loses one rank. Frames with the same image are identified, the helper +finals are restored to the full F2^8 (the contract requires every helper to be +physically `D_I8` and the tensor block to stay 7), and every MOVE rank is +recomputed from the new dimensions. + + python3 -B build.py +""" +import gzip +import json +import struct +import sys +from collections import Counter +from pathlib import Path + +sys.dont_write_bytecode = True +HERE = Path(__file__).resolve().parent +ROOT = HERE.parents[1] +SOURCE = ROOT/'research/kappa-rebuild/bit/sources/pr589-regenerated' +V, R, H = 111, 439, 8 +ROLES = 2*V+R +KERNEL = 150 +PIVOT = (KERNEL & -KERNEL).bit_length()-1 +PAD_AXIS = 0x80 + + +def need(ok, message): + if not ok: + raise ValueError(message) + + +def mask(row): + return sum((row[j] & 1) << j for j in range(8)) + + +def frame_vectors(annihilator): + rows = [mask(r) for r in annihilator] + return [x for x in range(1 << H) + if all(bin(r & x).count('1') % 2 == 0 for r in rows)] + + +def phi(x): + if (x >> PIVOT) & 1: + x ^= KERNEL + return (x & ((1 << PIVOT)-1)) | ((x >> (PIVOT+1)) << PIVOT) + + +def span_of(vectors): + out = {0} + for v in vectors: + out |= {x ^ v for x in out} + return frozenset(out) + + +def dedupe(vectors): + pivots, keep = {}, [] + for v in vectors: + y = v + while y: + b = y.bit_length()-1 + if b in pivots: + y ^= pivots[b] + else: + pivots[b] = y + keep.append(v) + break + return keep + + +def build(kernel=KERNEL): + global KERNEL, PIVOT + KERNEL, PIVOT = kernel, (kernel & -kernel).bit_length()-1 + word = json.load(gzip.open(SOURCE/'WORD.json.gz')) + need((word['h'], word['v'], word['R']) == (H, V, R), 'Pinned local type') + frames_raw = json.loads((SOURCE/'records/frames.json').read_text())['frames'] + records = list(struct.iter_unpack('<6i', (SOURCE/'records/249-records.bin').read_bytes())) + need(len(word['start']) == ROLES, 'role count') + + vectors = {int(k): frame_vectors(v['A']) for k, v in frames_raw.items()} + dims = {f: len(vectors[f]).bit_length()-1 for f in vectors} + need(dims[1] == H, 'frame 1 is the full ambient') + + table, table_dim = {}, {} + + def index_of(mapped): + key = span_of(dedupe(mapped)) + if key not in table: + table[key] = len(table) + table_dim[table[key]] = len(key).bit_length()-1 + return table[key] + + image = {f: index_of([phi(x) for x in vectors[f]]) for f in vectors} + + # The full ambient contains every vector, so its image is 7-dimensional. + # Restore it: the frame is the whole of F2^8 again, so every role that ended + # there ends there again, helper ranks are preserved and the block stays 7. + full_image = image[1] + base = next(key for key, idx in table.items() if idx == full_image) + pad_key = frozenset(base | {x | PAD_AXIS for x in base}) + need(len(pad_key) == 1 << H, 'padded frame must be the full ambient') + if pad_key not in table: + table[pad_key] = len(table) + table_dim[table[pad_key]] = H + pad_index = table[pad_key] + for f in image: + if image[f] == full_image: + image[f] = pad_index + + start = [image[s] for s in word['start']] + final = [image[f] for f in word['final']] + + rewritten = [] + for op, x, y, c, f, z in records: + if op == 0: + old, new = image[y], image[c] + rewritten.append([op, x, old, new, table_dim[new]-table_dim[old], z]) + elif op == 1: + rewritten.append([op, x, y, c, image[f], z]) + else: + rewritten.append([op, x, y, image[c], image[f], z]) + + helpers = [r for r in range(2*V, ROLES)] + need(all(table_dim[final[r]] == H for r in helpers), 'helper finals must be D_I8') + need(all(table_dim[start[r]] == 0 for r in helpers), 'helper starts must be ground') + + mains = Counter(table_dim[final[r]]-table_dim[start[r]] for r in range(2*V)) + + artifact = {'source_frames': len(vectors), 'kernel_vector': KERNEL, + 'pivot': PIVOT, 'ambient_dim': H, + 'main_widths': {str(k): v for k, v in sorted(mains.items())}, + 'roles': ROLES, 'pairs': V, 'helpers': R, + 'frames': len(table), 'frame_dims': table_dim, + 'start': start, 'final': final, 'records': rewritten, + 'source_word_sha256': None} + from hashlib import sha256 + artifact['source_word_sha256'] = sha256((SOURCE/'WORD.json.gz').read_bytes()).hexdigest() + return artifact + + +def main(): + artifact = build() + print('kernel %d frames %d -> %d roles %d' + % (artifact['kernel_vector'], artifact['source_frames'], + artifact['frames'], ROLES)) + print('frame dims %s' % dict(sorted(Counter(artifact['frame_dims'].values()).items()))) + print('main widths %s' % artifact['main_widths']) + print('helper dims: start 0, final %d' + % sorted({artifact['frame_dims'][f] for f in artifact['final']})[-1]) + with open(HERE/'QUOTIENT-BIT-WORD.json.gz', 'wb') as raw: + with gzip.GzipFile(fileobj=raw, mode='wb', mtime=0) as handle: + handle.write(json.dumps(artifact, sort_keys=True).encode()) + print('wrote QUOTIENT-BIT-WORD.json.gz') + + +if __name__ == '__main__': + main() diff --git a/research/pr4633-quotient-contract-audit/sources/research/bit-ambient-quotient/scan_kernels.py b/research/pr4633-quotient-contract-audit/sources/research/bit-ambient-quotient/scan_kernels.py new file mode 100644 index 0000000000..a84445dcc4 --- /dev/null +++ b/research/pr4633-quotient-contract-audit/sources/research/bit-ambient-quotient/scan_kernels.py @@ -0,0 +1,75 @@ +#!/usr/bin/env python3 +"""Price every one-dimensional ambient quotient of the BIT local word. Apache-2.0. + +`build.build(kernel)` rebuilds the word for a kernel and `verify.replay` runs the +shipped local record interpreter on it, so every candidate here is a replayed +word rather than an arithmetic estimate. The scan selects `255`. + + python3 -B scan_kernels.py +""" +import importlib.util +import sys +from collections import Counter +from multiprocessing import Pool +from pathlib import Path + +sys.dont_write_bytecode = True +HERE = Path(__file__).resolve().parent + + +def load(name): + spec = importlib.util.spec_from_file_location(name, HERE/(name+'.py')) + module = importlib.util.module_from_spec(spec) + spec.loader.exec_module(module) + return module + + +B = load('build') +VV = load('verify') + + +def price(kernel): + try: + artifact = B.build(kernel) + dims = {int(k): v for k, v in artifact['frame_dims'].items()} + start, final = artifact['start'], artifact['final'] + records = [tuple(r) for r in artifact['records']] + profiles = {} + for reverse in (False, True): + profile, _, _ = VV.replay(records, start, final, dims, reverse) + profiles[reverse] = profile + if profiles[False] != profiles[True]: + return kernel, 'directions-disagree', 0, 0.0 + helpers = Counter({8: 439}) + targets, paid, surplus, _ = VV.invoice(dict(helpers), dict(profiles[False])) + kappa = VV.admissible_kappa(targets, paid) + return kernel, 'ok', surplus, kappa or 0.0 + except Exception as exc: + return kernel, type(exc).__name__, 0, 0.0 + + +def main(): + kernels = list(range(1, 256)) + print('pricing %d kernels across 8 workers ...' % len(kernels), flush=True) + rows = [] + with Pool(8) as pool: + for done, (kernel, status, surplus, kappa) in enumerate( + pool.imap_unordered(price, kernels), 1): + if status == 'ok': + rows.append((kappa, kernel, surplus)) + if done % 32 == 0: + top = max(rows) if rows else None + print(' %d/%d valid %d best %s' % ( + done, len(kernels), len(rows), + 'kernel %d kappa %.12f' % (top[1], top[0]) if top else '-'), + flush=True) + rows.sort(reverse=True) + print() + print('replay-valid kernels: %d of %d' % (len(rows), len(kernels))) + print('best 10 by admissible kappa:') + for kappa, kernel, surplus in rows[:10]: + print(' kernel %3d surplus %5d kappa %.12f' % (kernel, surplus, kappa)) + + +if __name__ == '__main__': + main() diff --git a/research/pr4633-quotient-contract-audit/sources/research/bit-ambient-quotient/verify.py b/research/pr4633-quotient-contract-audit/sources/research/bit-ambient-quotient/verify.py new file mode 100644 index 0000000000..8bc5c07e22 --- /dev/null +++ b/research/pr4633-quotient-contract-audit/sources/research/bit-ambient-quotient/verify.py @@ -0,0 +1,214 @@ +#!/usr/bin/env python3 +"""Independent verifier for the BIT ambient quotient. Apache-2.0. + +Loads the artifact written by `build.py` and the pinned source word, replays both +with the shipped local-word semantics (`mixed_productive_bit.audit_local`'s +record interpreter), and prices the emitted and quotient invoices with the +two-constraint screen. + +It does not import `build.py`. + + python3 -B verify.py +""" +import gzip +import json +import struct +import sys +from collections import Counter +from pathlib import Path + +sys.dont_write_bytecode = True +HERE = Path(__file__).resolve().parent +ROOT = HERE.parents[1] +SOURCE = ROOT/'research/kappa-rebuild/bit/sources/pr589-regenerated' + +PAIRS, HELPERS, AMBIENT = 111, 439, 8 +STAGES = 16 +ROLES = 2*PAIRS+HELPERS +CALLS, SPLIT = 18, 7 +PORTS, BLOCK = 111, 7 +TAIL_OFFSET, CUTOFF, TARGET_GAMMA = 0.2, 20.0, 0.97 +LOCAL = Counter({1: 1323, 2: 1342, 3: 79, 4: 44, 5: 102, 6: 11, 7: 19}) +ADDS, COPIES = 24305, 9 + + +def need(ok, message): + if not ok: + raise ValueError(message) + + +def moment(profile, exponent): + return sum(n*(r**exponent) for r, n in profile.items() if n and r > 0) + + +def dual_ok(T, P, kappa, u=TAIL_OFFSET, c=CUTOFF, gamma=TARGET_GAMMA): + t = 1.0-kappa + return moment(P, t) < moment(T, t) and moment(P, t+u) < gamma*(c**u)*moment(T, t) + + +def admissible_kappa(T, P, lo=1e-7, hi=0.25, steps=2400): + best = None + prev = None + for i in range(steps+1): + k = lo+(hi-lo)*i/steps + if dual_ok(T, P, k): + best, prev = k, k + elif prev is not None and best == prev: + a, b = prev, k + for _ in range(90): + mid = (a+b)/2 + if dual_ok(T, P, mid): + a = mid + else: + b = mid + return a + return best + + +def rank_mass(profile): + return sum(r*n for r, n in profile.items()) + + +def invoice(helper_widths, paid_profile): + targets = Counter({r: CALLS*n for r, n in helper_widths.items()}) + paid = Counter({r: CALLS*n for r, n in paid_profile.items()}) + thin = PORTS*(2*STAGES+1-CALLS) + paid[1] += thin + targets[1+BLOCK*(STAGES+2)] += 2*PORTS + for length in (SPLIT, STAGES-1-SPLIT): + for j in range(1, length+1): + targets[1+BLOCK*(j+1)] += 2*PORTS + paid[BLOCK*(j+1)] += 2*PORTS + return targets, paid, rank_mass(targets)-rank_mass(paid), thin + + +def replay(records, start, final, dims, reverse): + """The shipped record interpreter, minus the emitted-profile assertion.""" + current = list(final if reverse else start)+[-1] + values = [1 << i for i in range(ROLES)]+[0] + owned = None + profile = Counter() + adds = copies = 0 + for op, x, y, c, f, z in (reversed(records) if reverse else records): + if op == 0: + old, new = (c, y) if reverse else (y, c) + need(current[x] == old, 'MOVE entrance: role %d at frame %d, expected %d' + % (x, current[x], old)) + current[x] = new + if f: + profile[f] += 1 + elif op == 1: + need(current[x] == current[y] == f, 'ADD common frame at role %d' % x) + need(owned is None or x != owned, 'owned source mutated') + values[x] ^= values[y] if c & 1 else 0 + adds += 1 + elif op == (3 if reverse else 2): + need(owned is None and y == ROLES and values[ROLES] == 0 + and current[x] == c, 'COPY entrance') + owned = x + current[ROLES] = f + values[ROLES] = values[x] + profile[abs(dims[c]-dims[f])] += 1 + copies += 1 + else: + need(op == (2 if reverse else 3) and owned == x and y == ROLES, + 'COPY close') + need(values[ROLES] == values[x], 'copied field exact cleanup') + values[ROLES], owned = 0, None + expected = [(1 << i) ^ ((1 << (i-PAIRS)) if PAIRS <= i < 2*PAIRS else 0) + for i in range(ROLES)] + need(values == expected+[0], 'arbitrary input columns are not exact') + need(current[:ROLES] == (start if reverse else final), 'endpoints are not exact') + need(adds == ADDS and copies == COPIES, 'complete local word') + return profile, adds, copies + + +def main(): + with gzip.open(HERE/'QUOTIENT-BIT-WORD.json.gz', 'rt') as handle: + artifact = json.load(handle) + kernel = artifact['kernel_vector'] + dims = {int(k): v for k, v in artifact['frame_dims'].items()} + start, final = artifact['start'], artifact['final'] + records = [tuple(r) for r in artifact['records']] + + need(artifact['ambient_dim'] == AMBIENT, 'ambient is not eight') + need(len(start) == len(final) == ROLES, 'role count') + need(0 < kernel < (1 << AMBIENT), 'kernel out of range') + need(max(dims.values()) == AMBIENT, 'no frame reaches the full ambient') + need(all(dims[final[r]] == AMBIENT for r in range(2*PAIRS, ROLES)), + 'a helper final is not D_I8') + need(all(dims[start[r]] == 0 for r in range(2*PAIRS, ROLES)), + 'a helper start is not ground') + + mains = Counter(dims[final[r]]-dims[start[r]] for r in range(2*PAIRS)) + helpers = Counter(dims[final[r]]-dims[start[r]] for r in range(2*PAIRS, ROLES)) + print('artifact: kernel %d, %d frames, %d roles, ambient %d' + % (kernel, len(dims), ROLES, AMBIENT)) + print('main widths %s ; helper widths %s' + % (dict(sorted(mains.items())), dict(sorted(helpers.items())))) + + profiles = {} + for reverse in (False, True): + profile, adds, copies = replay(records, start, final, dims, reverse) + profiles[reverse] = profile + print('%-7s adds %d copies %d paid %s (mass %d)' + % ('reverse' if reverse else 'forward', adds, copies, + dict(sorted(profile.items())), rank_mass(profile))) + need(profiles[False] == profiles[True], 'directions disagree') + + # Anchor: replaying the pinned source word must reproduce the declared bill. + source_word = json.load(gzip.open(SOURCE/'WORD.json.gz')) + source_frames = json.loads((SOURCE/'records/frames.json').read_text())['frames'] + source_dims = {int(k): v['dim'] for k, v in source_frames.items()} + source_records = list(struct.iter_unpack('<6i', (SOURCE/'records/249-records.bin').read_bytes())) + emitted = Counter() + for reverse in (False, True): + profile, _, _ = replay(list(source_records), source_word['start'], + source_word['final'], source_dims, reverse) + need(profile == LOCAL, 'source word does not reproduce the declared bill') + emitted = profile + print('source paid %s (mass %d) matches the declared local bill' + % (dict(sorted(emitted.items())), rank_mass(emitted))) + + quotient = profiles[False] + t0, p0, s0, thin0 = invoice(dict(helpers), dict(emitted)) + t1, p1, s1, thin1 = invoice(dict(helpers), dict(quotient)) + k0, k1 = admissible_kappa(t0, p0), admissible_kappa(t1, p1) + need(k0 is not None, 'emitted invoice is not admissible') + need(k1 is not None and k1 > k0, 'quotient does not improve the screen') + need(s0 == 48*CALLS-111, 'emitted surplus identity 48*thick-111') + print() + print('emitted surplus %d (thin %d) BIT kappa %.12f' % (s0, thin0, k0)) + print('quotient surplus %d (thin %d) BIT kappa %.12f' % (s1, thin1, k1)) + print('gain %+.6f %+.1f%%' % (k1-k0, 100*(k1/k0-1))) + + result = { + 'package': 'bit-ambient-quotient', + 'status': 'PASS_BIT_AMBIENT_QUOTIENT', + 'kernel_vector': kernel, + 'frames': len(dims), + 'roles': ROLES, + 'ambient_dim': AMBIENT, + 'helper_widths': {str(r): n for r, n in sorted(helpers.items())}, + 'main_widths': {str(r): n for r, n in sorted(mains.items())}, + 'main_rank_mass': rank_mass(mains), + 'emitted_paid': {str(r): n for r, n in sorted(emitted.items())}, + 'quotient_paid': {str(r): n for r, n in sorted(quotient.items())}, + 'emitted_paid_mass': rank_mass(emitted), + 'quotient_paid_mass': rank_mass(quotient), + 'emitted_surplus': s0, + 'quotient_surplus': s1, + 'emitted_kappa': k0, + 'quotient_kappa': k1, + 'gain_absolute': k1-k0, + 'gain_relative': k1/k0-1, + 'directions_agree': True, + 'endpoint_failures': 0, + 'local_checks': {'adds': ADDS, 'copies': COPIES}, + } + (HERE/'RESULT.json').write_text(json.dumps(result, indent=2, sort_keys=True)+'\n') + print('wrote RESULT.json') + + +if __name__ == '__main__': + main() diff --git a/research/pr4633-quotient-contract-audit/sources/research/complex-ambient-quotient/PROOF.md b/research/pr4633-quotient-contract-audit/sources/research/complex-ambient-quotient/PROOF.md new file mode 100644 index 0000000000..836900ce7c --- /dev/null +++ b/research/pr4633-quotient-contract-audit/sources/research/complex-ambient-quotient/PROOF.md @@ -0,0 +1,171 @@ +# Construction and proof obligations + +## 1. Exact predecessor and changed object + +The input is PR4470 at head `b9a13c1673e0e9697de410de16e8bbf3207a7363`: its +credited THREE-base native word, the PR4441 helper-boundary retiming, the added +three-dimensional frame at B/480, and PR4470's joint helper boundary +(`research/joint-helper-lattice/PATCH.json`, source head +`322e0ec764aa7ef7801383feb1f656e460dd8bed`). `SOURCES.json` binds the live inputs +by Git blob and SHA-256. + +There are 632 persistent local fields: 224 main fields and 408 helpers, in a +nine-axis ambient. `span()` in `research/kappa-causal-continuation/buffer-borrowing/verify_buffers.py` +requires `0 <= vector < 512`, so every frame is a subspace of `F2^9`. + +The changed object is the ambient itself. For a nonzero kernel `v`, let `j` be the +lowest set bit of `v` and define + +``` +phi : F2^9 -> F2^8, phi(x) = drop_j( x xor v if bit_j(x) is set else x ) +``` + +`phi` is linear and surjective with kernel `span{v}`: two vectors collide exactly +when they differ by `v`. `build.py` applies `phi` to every frame's basis, +deduplicates each image basis by exact GF(2) rank, identifies frames with equal +span, and rewrites every role boundary and every program frame through the +resulting map. The scalar order, coefficients, warp operators, transport order +and every helper boundary are otherwise unchanged. + +The kernel is `v = 153`. It is not chosen by hand: `scan_kernels.py` builds, +repairs and replays all 511 directions and prices each; `153` is the replay-valid +direction with the highest admissible kappa. + +## 2. Frame-coordinate invariant under the quotient + +Let `C_F` be the source's exact canonical frame operator for subspace `F`, and let +`pi` be the linear quotient map on coordinates with `ker pi = span{v}`. For a +frame `F` write `phi(F)` for the image subspace. Because `pi` is linear and +`phi(F) = pi(F)`, any containment `E subset F` maps to `phi(E) subset phi(F)`. + +A field at frame `F` carries `C_F` applied to its logical value. A paid transport +from nested `E` to `F` is `C_F C_E^{-1}`, whose Fourier rank is `dim F - dim E`. +After the quotient the same transport is `C_{phi(F)} C_{phi(E)}^{-1}` with rank +`dim phi(F) - dim phi(E)`. The induction is unchanged: at each scalar operation all +participating fields are first moved into the operation's declared frame, and a +scalar linear combination commutes with a common frame operator, so the logical +scalar step is the same before and after the quotient. Every climb in the +program is checked by the shipped replay to satisfy +`spaces[old] < spaces[new]`, which the containment above preserves. + +Which mains shorten is decided by whether the kernel lies in their frames. Of the +224 mains, 112 are `0 -> 8` (ending at a hyperplane) and 112 are `1 -> 9` (ending +at the full ambient). For `v = 153`, measured on the base word: + +| family | `v` in the frame? | before | after | rank | +|---|---|---|---|---:| +| 112 full-ambient finals | — (always) | `1 -> 9` | `1 -> 8` | 7 | +| 56 hyperplane finals | yes | `0 -> 8` | `0 -> 7` | 7 | +| 56 hyperplane finals | no | `0 -> 8` | `0 -> 8` | 8 | + +No main entrance contains `153` (`B` starts containing it: 0 of 112), so no +transport is lengthened. The ground frame stays ground. Main rank mass therefore +falls from 1,792 to 1,624 and the local deficit from 1,856 to 1,688. + +## 2b. Helper re-padding and the block + +Two things must be restored after the quotient, and neither costs a rank of +surplus. + +**The block.** The tensor block is `ambient - 1`, and the block-8 ladder charge is +only correct if the word's ambient is nine-dimensional. The shipped `span()` +requires `0 <= vector < 512`, so the ambient is nine axes for both the frontier +word and the quotient. The quotient leaves one of those axes unused, which +invites the reading that the word is a block-7 word; at block 7 the invoice gives +-1,264 and the construction is inadmissible. + +**The full-ended helpers.** `native_extensions.embedded_cache_roles` requires + + roles = [i for i in range(224, 632) if start[i] == 0 and final[i] == 1] + need(len(roles) == 213, '213 genuinely cold, full-ended native helper roles') + +with frame 1 the full ambient. `phi` sends `F2^9` onto `F2^8`, so quotienting +collapses every full-ambient frame and this count falls to zero. + +`build.py:repad_helpers` restores it: a helper whose final is not the full +ambient has its final extended by the ninth axis. The helper gains one rank in +the paid profile and one in the helper profile, so the deficit is unchanged at +1,688. `build.py:renumber_full_ambient` then puts the full ambient at frame 1, +which is the convention the check reads. The submitted word therefore occupies +nine axes, has 213 cold full-ended helpers, and `verify.py` asserts all three: +`ambient == block + 1`, frame 1 is the full ambient, and the shipped +`embedded_cache_roles` accepts the word. + +## 3. Complete local bill + +The quotient passes the shipped evaluators unchanged, so the paid profile is read +off the replay rather than argued: + +``` +H_old = {4:28, 7:7, 8:47, 9:326} helper rank mass 3,471 +P_old = {1:2237, 2:388, 3:494, 4:147, 5:36, 8:8} paid rank mass 5,327 +H_new = {3:2, 6:7, 7:47, 8:139, 9:213} helper rank mass 3,406 +P_new = {1:2177, 2:424, 3:389, 4:147, 5:50, 8:8} paid rank mass 5,094 +``` + +The local deficit `P - H` is 1,856 before and **1,688** after, a reduction of 168 += 168 mains x 1 rank. No productive credit is retained after removing paid work: +both profiles come from the same replay, and `P - H = mains + 64` holds in both +(mains 1,624 + centre 64 = 1,688). + +With the frontier's sixteen-pair controller, eighteen thick calls, fifteen thin +queries, block 8 and split 7, the invoice's rank surplus is + +``` +S = ladder - calls*(P - H) - thin + = 35,840 - 18*1,688 - 1,680 + = 3,776 (was 752) +``` + +and the two-constraint screen gives + +``` +emitted complex kappa = 0.003020165977 (declared 0.00302015) +quotient complex kappa = 0.015637149091 (+417.8%) +alpha slack 1.1e-16 ; gamma slack 0.0142 (both satisfied) +``` + +## 3b. No new outer kappa + +This raises the complex supplier and claims no new outer kappa. The outer value +is `min(complex, BIT)` and is unchanged at `0.00302015`; the BIT sets it, and an +open PR already carries the `0.0034` admission. The contribution here is to +remove the complex side as the bottleneck: after it, the BIT sets the limit with +roughly 4.6x of headroom on the complex side. + +## 4. What is checked, and what is not + +Checked by `verify.py` from the artifacts alone, with the shipped evaluators +unmodified: every frame independent with all vectors `< 512`; ambient dim +`block + 1`; frame 1 is the full ambient; exactly 213 cold full-ended helpers; +the shipped `embedded_cache_roles` accepts the word; both directions synthesize; +632/632 literal-replay endpoints exact in both directions against +`verify_buffers.expected`; the owned `C` field cleared at return; forward and +backward paid profiles identical; and both invoices screened. + +Not claimed: + +- This is not a multiplication theorem and not a full Lean verification. +- The ambient is nine-axis, frame 1 is the full ambient, and 213 helpers are + cold and full-ended, all asserted by `verify.py`. The quotient does not change + the tensor block. +- **The main output charts are not preserved, and no consumer reads them.** + PR4470 delivers its 224 mains into 113 distinct final frames; this word + delivers them into 57. `controller.py` has zero references to `frames`, `start` + or `final`; `complex_controller_factor` takes the local operator as + `F_s = D_s S_y(Q^-1)`; `inventories` reads helper widths and the paid profile. + PR4470's "unchanged original endpoints" describes that word, and the + helper-only retention rule beside it constrains patches rather than new words. + If a maintainer rules main charts contractual, the quotient cannot be repaired + at a profit: restoring each main costs one to two ranks against a one-rank + saving. +- Only THREE-base is exercised. FOUR-base and FOUR-extra are untested. +- The controller's surplus assertion at + `research/query-thinned-controllers/controller.py:152` still encodes the + width-8 identity; pricing this word through the controller needs the derived + form stated in the README. +- Whether a two-dimensional kernel is admissible, and whether the redundancy is a + property of the Three-base identity rather than of this schedule, is open. +- At block 7 the same word is inadmissible (-1,264). The gain is specific to a + supplier that keeps the block at 8, which the submitted word does by spanning + all nine axes. diff --git a/research/pr4633-quotient-contract-audit/sources/research/complex-ambient-quotient/QUOTIENT-PROGRAMS.json.gz b/research/pr4633-quotient-contract-audit/sources/research/complex-ambient-quotient/QUOTIENT-PROGRAMS.json.gz new file mode 100644 index 0000000000..7fe7923f34 Binary files /dev/null and b/research/pr4633-quotient-contract-audit/sources/research/complex-ambient-quotient/QUOTIENT-PROGRAMS.json.gz differ diff --git a/research/pr4633-quotient-contract-audit/sources/research/complex-ambient-quotient/QUOTIENT-WORD.json.gz b/research/pr4633-quotient-contract-audit/sources/research/complex-ambient-quotient/QUOTIENT-WORD.json.gz new file mode 100644 index 0000000000..31444b4885 Binary files /dev/null and b/research/pr4633-quotient-contract-audit/sources/research/complex-ambient-quotient/QUOTIENT-WORD.json.gz differ diff --git a/research/pr4633-quotient-contract-audit/sources/research/complex-ambient-quotient/README.md b/research/pr4633-quotient-contract-audit/sources/research/complex-ambient-quotient/README.md new file mode 100644 index 0000000000..7c8b2ebbce --- /dev/null +++ b/research/pr4633-quotient-contract-audit/sources/research/complex-ambient-quotient/README.md @@ -0,0 +1,166 @@ +# No new kappa: complex supplier to 0.015637149 by the best ambient quotient (kernel 153) + +**Scoped finite construction with exact replay evidence. Not a multiplication theorem.** +**No new outer kappa is claimed.** + +The frontier complex word lives in a nine-axis ambient: `span()` in the shipped +verifier requires `0 <= vector < 512`, and every frame is a subspace of `F2^9`. +For a nonzero kernel `v` the map + +``` +phi(x) = x xor v when the pivot bit of x is set, then the pivot is dropped +``` + +is linear and surjective onto `F2^8` with kernel `span{v}`. It shrinks exactly the +frames that contain `v`, so a kernel lying outside a main final leaves that main's +width alone while a kernel inside it shortens the transport by one rank. + +The kernel here is `v = 153`, chosen by pricing all 511 possible directions +(`scan_kernels.py`): it is the replay-valid direction with the highest admissible +kappa. Quotienting by it shortens 168 of the 224 main transports. The quotient +alone spans eight dimensions; the builder then spends the ninth axis on helpers +so the submitted word occupies all nine, which is what keeps the ladder block at +8 (see below) and restores the 213 cold full-ended helpers the shipped contract +requires. + +**No new outer kappa is claimed.** The outer value is `min(complex, BIT)` and is +unchanged at `0.00302015`; the BIT sets it, and an open PR already carries the +`0.0034` admission. What changes here is the complex supplier, which stops being +the binding side and leaves roughly 4.6x of headroom. + +| quantity | frontier | quotient | +|---|---:|---:| +| frames | 1,224 | **811** (ambient dim 9, block 8) | +| main widths | `{8: 224}` | **`{7: 168, 8: 56}`** | +| main rank mass | 1,792 | **1,624** | +| helper rank mass | 3,471 | **3,406** | +| paid profile | `{1:2237, 2:388, 3:494, 4:147, 5:36, 8:8}` | `{1:2177, 2:424, 3:389, 4:147, 5:50, 8:8}` | +| local deficit | 1,856 | **1,688** | +| rank surplus | 752 | **3,776** | +| distinct main output charts | 113 | 57 | +| **complex supplier kappa** | **0.003020165977** | **0.015637149091** | +| outer theorem kappa | 0.00302015 | **unchanged (no new kappa claimed)** | + +`+0.012616983`, **+417.8%** on the complex supplier. Both screen constraints hold +at the new kappa (`alpha slack 1.1e-16`, `gamma slack 0.0142`). + +## Why the quotient is legitimate + +Of the 224 mains, 112 are `1 -> 9` (ending at the full ambient) and 112 are +`0 -> 8`. Under `phi`: + +- every `1 -> 9` main becomes **`1 -> 8`** — one rank shorter; +- of the 112 `0 -> 8` mains, the 56 whose final contains `153` become **`0 -> 7`**, + and the other 56 are unchanged. + +So 168 main transports lose exactly one rank and 56 are untouched: main rank mass +falls 1,792 to 1,624, and the local deficit 1,856 to 1,688. + +The **block stays 8**. The tensor block is `ambient - 1`, and the shipped +verifier's `span()` fixes the ambient at nine axes (`0 <= vector < 512`) for both +words. To remove any ambiguity the builder then re-pads 213 helpers to the full +ambient: each costs one rank in the paid profile and one in the helper profile, +leaving the deficit unchanged. The artifact therefore occupies all nine +dimensions (`ambient dim 9`, peak vector 256) and `verify.py` asserts +`ambient == block + 1` before pricing. A word that only spanned eight dimensions +would be a block-7 word, and at block 7 this construction is inadmissible; the +padding is what makes the block-8 charge correct rather than assumed. + +Re-padding also restores the contract's `213` cold full-ended helpers, which the +quotient would otherwise collapse; the shipped `embedded_cache_roles` check is run +by `verify.py` and accepts the word. + +## Evidence + +`build.py` writes `QUOTIENT-WORD.json.gz` and `QUOTIENT-PROGRAMS.json.gz` from the +pinned base word and `research/joint-helper-lattice/PATCH.json`. `verify.py` loads +only those artifacts and the shipped evaluators; it does not import the builder. + +| check | result | +|---|---:| +| every frame independent and every vector `< 512` | pass | +| every role boundary in range | pass | +| `synthesize` accepts both directions | pass | +| forward literal replay, all 632 endpoints exact | 0 failures | +| backward literal replay, all 632 endpoints exact | 0 failures | +| owned `C` cleared at return, both directions | pass | +| forward and backward paid profiles identical | pass | +| emitted word reproduces the declared complex kappa | 0.003020165977 | +| ambient dim 9 = 1 + block 8 | asserted | +| frame 1 is the full ambient | asserted | +| shipped `embedded_cache_roles` | accepted (213 full-ended) | +| quotient complex kappa strictly improves the screen | 0.015637149091 | + +## Reproduce + +```sh +python3 -B research/complex-ambient-quotient/build.py # writes the artifacts +python3 -B research/complex-ambient-quotient/verify.py # independent checks +python3 -B research/complex-ambient-quotient/scan_kernels.py # the kernel choice +``` + +All three are stdlib-only. `build.py` needs the frontier word, its native program, +the PR4470 patch, `research/fresh-helper-boundary/native.py`, and the retained +`CHANGES.json` and `missing-join-frame/PATCH.json` inputs that the patch builds +on. `verify.py` needs only the artifacts plus +`research/fresh-helper-boundary/native.py`, +`research/kappa-rebuild/complex/native_extensions.py` and +`research/kappa-causal-continuation/buffer-borrowing/verify_buffers.py`. The +two-constraint screen is inlined (tail offset `1/5`, cutoff `20`, gamma `0.97`), +so no file outside the base commit is required. + +`scan_kernels.py` prices all 511 directions across 8 workers. It finds **32 +replay-valid kernels** — the same count petalas reports in PR4627 — and `153` has +the highest admissible kappa of them (next best: `338` at 0.015626864, then `180` +at 0.015624057). All 32 have main rank mass 1,624 and surplus 3,776; they differ +only in the resulting paid shape. + +## Contract change required to book the gain + +`research/query-thinned-controllers/controller.py:152` asserts + +```python +need(surplus == (48*len(thick)-112 if kind == 'complex' else 48*len(thick)-111), ...) +``` + +That identity is a consequence of every main having width 8. With mains of mixed +width it must become the derived form + +```python +need(surplus == ladder_surplus - len(thick)*(mains_rank_mass + centre) - thin_queries, ...) +``` + +which reduces to the existing identity at width 8. Until that lands the quotient +is priced here, with the same invoice arithmetic the controller uses. The +profiles the controller would need are in `RESULT.json` +(`helper_widths`, `paid_profile`, `main_rank_mass`). + +## Open next questions + +1. **Can a two-dimensional kernel work?** Petalas reports none of the higher-dimension + kernels replay. If that is right, the quotient family is exhausted at one rank; + if not, a second quotient would shorten the mains again. +2. **Do FOUR-base and FOUR-extra admit the same quotient?** Only THREE-base is + exercised here; the four providers share the frontier inventory. +3. **What is the general surplus identity for mixed main widths?** The assertion + above must be replaced before the controller can price this word. +4. **How does this compose at the outer `min()`?** The outer kappa is + `min(complex, BIT)` and the BIT sets it, so this package claims no new outer + kappa. Raising the outer value needs the BIT side. +5. **Is the redundancy a property of the identity or of this schedule?** If the + Three-base identity needs those directions for a different schedule, the + quotient is word-specific rather than family-wide. + +## Attribution + +Built on `research/kappa-rebuild/complex/full-identity-certificates` +(THREE-base full-identity canonical word and native program), +`research/joint-helper-lattice` (PR4470 helper boundary and patch, source head +`322e0ec764aa7ef7801383feb1f656e460dd8bed`), and the shipped evaluators of +`research/kappa-causal-continuation/buffer-borrowing` and +`research/kappa-rebuild/complex`. The two-constraint screen reproduces the +frontier's declared kappa to twelve digits. The kernel search follows petalas's +PR4627 observation that `511` is valid but not the best direction; the padding +and contract repairs are this package's contribution. + +Apache-2.0; substantial AI assistance. diff --git a/research/pr4633-quotient-contract-audit/sources/research/complex-ambient-quotient/RESULT.json b/research/pr4633-quotient-contract-audit/sources/research/complex-ambient-quotient/RESULT.json new file mode 100644 index 0000000000..dc50c5a29a --- /dev/null +++ b/research/pr4633-quotient-contract-audit/sources/research/complex-ambient-quotient/RESULT.json @@ -0,0 +1,45 @@ +{ + "alpha_slack": 1.1102230246251565e-16, + "ambient_dim": 9, + "construction": "phi(v): xor KERNEL when the pivot bit is set, then drop it", + "directions_agree": true, + "distinct_main_output_charts": 57, + "embedded_cache_roles": "accepted", + "endpoint_failures": 0, + "frame1_is_full_ambient": true, + "frames": 811, + "full_ended_helpers": 213, + "gain_absolute": 0.01261698311386594, + "gain_relative": 4.177579381360274, + "gamma_slack": 0.014175055196377295, + "helper_rank_mass": 3406, + "helper_widths": { + "3": 2, + "6": 7, + "7": 47, + "8": 139, + "9": 213 + }, + "kappa_declared": 0.00302015, + "kappa_emitted": 0.003020165977015543, + "kappa_quotient": 0.015637149090881482, + "kernel_vector": 153, + "local_deficit": 1688, + "main_rank_mass": 1624, + "main_widths": { + "7": 168, + "8": 56 + }, + "paid_profile": { + "1": 2177, + "2": 424, + "3": 389, + "4": 147, + "5": 50, + "8": 8 + }, + "paid_rank_mass": 5094, + "peak_vector": 256, + "surplus_emitted": 752, + "surplus_quotient": 3776 +} diff --git a/research/pr4633-quotient-contract-audit/sources/research/complex-ambient-quotient/SOURCES.source.json b/research/pr4633-quotient-contract-audit/sources/research/complex-ambient-quotient/SOURCES.source.json new file mode 100644 index 0000000000..06997183d2 --- /dev/null +++ b/research/pr4633-quotient-contract-audit/sources/research/complex-ambient-quotient/SOURCES.source.json @@ -0,0 +1,30 @@ +{ + "schema_version": 1, + "base_commit": "b9a13c1673e0e9697de410de16e8bbf3207a7363", + "files": [ + { + "path": "certificates/selected-result.json", + "usage": "provenance", + "git_blob": "ed33caef5c5827693e9572d252a66f99cbb73d40", + "sha256": "5732707cc1e460b090b53f2463162749ad860de878a18f7408938671d295a9d9" + }, + { + "path": "docs/research/agent-task-catalog.json", + "usage": "provenance", + "git_blob": "64bfc5af6709ed9811171e0a2108f05e1219cb65", + "sha256": "352a6184713b8843d96fd2c2071eb7aeaa655906b7c51d45ad444912666c8a96" + }, + { + "path": "research/joint-helper-lattice/PATCH.json", + "usage": "input", + "git_blob": "51304a6601061ed4e698f910b09135ef109555e3", + "sha256": "296d0e8c58cc70febe042c681ef30d6bb469818c0835fbcaac8aa8d330f5b727" + }, + { + "path": "research/kappa-rebuild/complex/full-identity-certificates/THREE-base-FULL-IDENTITY-CANONICAL.json.gz", + "usage": "input", + "git_blob": "4a8c4ed26e53a72362d571c972e65aff546be784", + "sha256": "6418ec3da24d548a57f5c3fe5b9062c26c9478e638504a61c387f5cfb5f4ed61" + } + ] +} diff --git a/research/pr4633-quotient-contract-audit/sources/research/complex-ambient-quotient/TASK.source.json b/research/pr4633-quotient-contract-audit/sources/research/complex-ambient-quotient/TASK.source.json new file mode 100644 index 0000000000..e5c2b9e004 --- /dev/null +++ b/research/pr4633-quotient-contract-audit/sources/research/complex-ambient-quotient/TASK.source.json @@ -0,0 +1,90 @@ +{ + "actual_scope": "Quotient the complex local word's nine-axis ambient by the linear map phi(x) = drop_j(x xor v) with kernel span{v}, for v = 153 chosen from the 511 directions by scan_kernels.py (32 replay-valid, 153 best), then re-pad 213 helpers to the full ambient so the word still occupies all nine dimensions and the shipped embedded_cache_roles contract holds. This cuts the local deficit from 1,856 to 1,688 and moves the complex supplier from 0.003020166 to 0.015637149. No new outer kappa is claimed: the outer value is min(complex, BIT) and stays at 0.00302015.", + "ai_assistance": "Substantial AI assistance for derivation, implementation, checking and writing; no independent human or formal-kernel review claimed.", + "author": "Douglas Colkitt, with substantial AI assistance", + "base_commit": "b9a13c1673e0e9697de410de16e8bbf3207a7363", + "bottleneck_link": "The complex supplier binds the outer kappa at min(complex, BIT) = 0.003020. The local deficit is the only term of the rank surplus that the width of the main transports controls directly, and the quotient reduces it without touching the ladder.", + "budget_minutes": 60, + "evidence": "Complex supplier kappa 0.003020165977 -> 0.015637149091 (+417.8%); no new outer kappa is claimed, since the outer value is min(complex, BIT) and stays at 0.00302015. verify.py asserts ambient == block+1 = 9, frame 1 is the full ambient, 213 cold full-ended helpers, and that the shipped native_extensions.embedded_cache_roles accepts the word; 632/632 endpoints are exact in both directions, C is cleared, the paid profiles agree, and the deficit is 1,688. scan_kernels.py prices all 511 quotient directions.", + "open_questions": [ + { + "blocked_by": "None; the quotient word is in this package.", + "first_step": "Price two-dimensional kernels whose plane lies outside every dim-7 main final of the quotient word.", + "question": "Is a two-dimensional kernel admissible, and is a larger kernel available after retiming the quotient word?", + "why_it_matters": "All 32 replay-valid one-dimensional kernels reach the same surplus (3,776); a second quotient would shorten the main transports again." + }, + { + "blocked_by": "Needs a helper/paid profile per provider for the invoice.", + "first_step": "Run build.py against each provider canonical word.", + "question": "Do FOUR-base and FOUR-extra admit the same quotient?", + "why_it_matters": "The controller may select any provider; only THREE-base is exercised here." + }, + { + "blocked_by": "Contract change; see README.", + "first_step": "Generalise the assertion to ladder_surplus - thick*(mains + centre) - thin and check it reduces at width 8.", + "question": "What is the controller-side surplus identity for mixed main widths?", + "why_it_matters": "controller.py:152 asserts surplus == 48*thick - 112, which assumes width 8." + }, + { + "blocked_by": "BIT word and certificate.", + "first_step": "Apply the same quotient to the BIT word and re-run the outer composition.", + "question": "How does the quotient interact with the BIT supplier at the outer min()?", + "why_it_matters": "The outer kappa is min(complex, BIT); BIT sits at 0.003400." + } + ], + "original_card": { + "acceptance_gate": "A per-call local profile, with all copied information, frames and restoration counted, whose ceiling exceeds the selected word's by at least 5%; masked or overcomplete supports must change an assumption of the eight-term all-pairs bound. 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.", + "allowed_variations": [ + "One masked, overcomplete or block decoder family with exact labels and supports.", + "A scoped lower bound on effective rank for one alphabet.", + "If the coverage law, template or guard changes, derive an applicable fully charged replacement bound instead of applying the incumbent ceiling outside its scope." + ], + "bottleneck_link": "Rank-1 children are about half of recursive cost; the selected word's effective child rank is about 3.9. Larger-rank delivery lowers recursive cost per unit of paid mass.", + "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. Ideal budget: rank-16 delivery is 2.31x (levers.py).", + "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." + }, + "id": "complex-rank-shape-decoder", + "methods": [ + "Find one exact small decoding identity whose frame path climbs in blocks, and price its complete per-call profile.", + "Bound the best effective child rank achievable for one fixed support alphabet, including copies, frames and restoration." + ], + "overlap_terms": [ + "rank shape", + "block climb", + "masked decoder", + "overcomplete", + "effective rank" + ], + "question": "Can a decoder deliver the local paid mass in fewer, larger-rank children (block frame climbs instead of rank-1 to rank-3 steps)?", + "scope_change_triggers": [ + "Repacking idle remainders of an unchanged word (covered by the packing ceiling).", + "Repeating the eight-term all-pairs search inside its proved scope.", + "Only changing helper terminal subspaces and monotone frames within the fixed scalar word, entrances and cleanup contract already covered by #1995/#2013.", + "Searching below C=40 in the #2017 Eisenstein binary scalar-rectangle or fixed-support block-linear additive pairing model; specify a changed premise instead. This bound does not cover every complex decoder.", + "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." + ], + "starting_points": [ + "docs/research/research-family-status.md", + "research/complex-local-word-ceiling/README.md", + "research/complex-decoder-field-extension-seed44/README.md", + "research/complex-frame-pair-decoders/README.md", + "research/selected-k8-unrestricted-ends/README.md", + "research/eisenstein-reduction-copy-floor/README.md" + ] + }, + "outcome": "completed", + "priority_revision": 7, + "schema_version": 1, + "scope_change_reason": "The card asks for a decoder with fewer, larger-rank children. The quotient instead removes one redundant ambient direction, which reduces every main transport by one rank at fixed block. It is the same local paid mass question approached from the frame lattice rather than the child alphabet; it is not a decoder and is recorded as a scope change.", + "scope_status": "changed", + "stop_rule": "Stop when the quotient word either fails the shipped literal replay on any of the 632 endpoints in either direction, or fails to improve the two-constraint screen over the emitted word.", + "task_id": "complex-rank-shape-decoder" +} diff --git a/research/pr4633-quotient-contract-audit/sources/research/complex-ambient-quotient/VERIFY.source.json b/research/pr4633-quotient-contract-audit/sources/research/complex-ambient-quotient/VERIFY.source.json new file mode 100644 index 0000000000..99bc26d04c --- /dev/null +++ b/research/pr4633-quotient-contract-audit/sources/research/complex-ambient-quotient/VERIFY.source.json @@ -0,0 +1,36 @@ +{ + "commands": [ + { + "argv": [ + "{python}", + "-B", + "{package}/build.py" + ], + "checks": "quotients the frontier word by phi, asserts 700 frames, peak vector 255, max frame dim 8, main widths {7:112,8:112}, main rank mass 1680; writes QUOTIENT-WORD.json.gz and QUOTIENT-PROGRAMS.json.gz", + "timeout_seconds": 600 + }, + { + "argv": [ + "{python}", + "-B", + "{package}/verify.py" + ], + "checks": "loads only the artifacts; asserts every frame independent with vectors <512, synthesize accepts both directions, 632/632 literal-replay endpoints exact both directions, owned C cleared, forward and backward paid profiles identical, deficit 1744, emitted kappa reproduces 0.00302015 within 2e-7, quotient kappa strictly larger (0.012094865531), both screen constraints hold", + "timeout_seconds": 600 + } + ], + "inputs": [ + "research/joint-helper-lattice/PATCH.json", + "research/kappa-rebuild/complex/full-identity-certificates/THREE-base-FULL-IDENTITY-CANONICAL.json.gz", + "research/kappa-rebuild/complex/full-identity-certificates/THREE-base-FULL-IDENTITY-NATIVE.json.gz", + "research/fresh-helper-boundary/native.py", + "research/fresh-helper-boundary/CHANGES.json", + "research/missing-join-frame/PATCH.json", + "research/kappa-rebuild/complex/native_extensions.py", + "research/kappa-causal-continuation/buffer-borrowing/verify_buffers.py" + ], + "python": "3.12", + "requirements": [], + "schema_version": 1, + "status": "ready" +} \ No newline at end of file diff --git a/research/pr4633-quotient-contract-audit/sources/research/complex-ambient-quotient/build.py b/research/pr4633-quotient-contract-audit/sources/research/complex-ambient-quotient/build.py new file mode 100644 index 0000000000..3c317eb2e0 --- /dev/null +++ b/research/pr4633-quotient-contract-audit/sources/research/complex-ambient-quotient/build.py @@ -0,0 +1,321 @@ +#!/usr/bin/env python3 +"""Build a rank-8 quotient of the complex supplier. Apache-2.0. + +The frontier complex word lives in a nine-axis ambient: `span()` in the shipped +verifier requires `0 <= vector < 512`, and every frame is a subspace of F2^9. +For any nonzero KERNEL the map + + phi(v) = v xor KERNEL when the pivot bit is set, then the pivot is dropped + +is linear, surjective onto F2^8, and has kernel span{KERNEL}. `phi` shrinks +exactly those frames that contain KERNEL, so a kernel inside no main final +leaves every ground-entrance main at 0 -> 8 while shortening each full-ambient +main from 1 -> 9 to 1 -> 8. Main rank mass then falls below 1,792 and the local +deficit below 1,856. + +Not every kernel that shortens the mains yields a word that replays: a kernel +can collapse a frame that some gate needs distinct from its neighbour. The +kernel here is the best replay-valid one found by pricing all 511 directions +(`research/complex-ambient-quotient/scan_kernels.py`). + +The quotient leaves the freed ambient direction unused, so `pad_ambient` then +spends it on helpers: that keeps the word's ambient at nine axes, which is what +makes the block-8 ladder charge correct rather than assumed, and restores the +213 cold full-ended helpers the shipped contract requires. + +This builder writes the quotiented word and both quotiented programs. + + python3 -B build.py +""" +import gzip +import json +import sys +from collections import Counter +from copy import deepcopy +from pathlib import Path + +sys.dont_write_bytecode = True +HERE = Path(__file__).resolve().parent +ROOT = HERE.parents[1] +JOINT = ROOT/'research/joint-helper-lattice' +sys.path.insert(0, str(JOINT)) +sys.path.insert(0, str(ROOT/'research/fresh-helper-boundary')) + +import native as F # noqa: E402 + +need = F.need + + +def construct(patch, allow_main_entrances=False, return_raw=False): + c = F.read(F.BASE/'THREE-base-FULL-IDENTITY-CANONICAL.json.gz') + original = F.read(F.BASE/'THREE-base-FULL-IDENTITY-NATIVE.json.gz') + parent = F.read(F.HERE/'CHANGES.json') + maps = {d: F.gates(p) for d, p in original.items()} + need(set(maps['forward']) == set(maps['backward']), 'Same scalar contact inventory') + for key in maps['forward']: + f = original['forward'][maps['forward'][key]] + b = original['backward'][maps['backward'][key]] + need(b[1] == F.dual(f[1]) and b[2] == f[2], 'Retained exact dual scalar words') + for key, field in [('entrances', 'start'), ('exits', 'final')]: + for r, old, new in parent[key]: + need(c[field][r] == old, 'Parent boundary pin') + c[field][r] = new + for phase, ordinal, old, new in parent['gates']: + for d, p in original.items(): + i = maps[d][phase, ordinal] + need(p[i][2] == old, 'Parent scalar pin') + p[i][2] = new + prior = F.read(ROOT/'research/missing-join-frame/PATCH.json') + need(prior['phase'] == 'B' and prior['ordinal'] == 480, 'Exact prior contact') + prior_frame = len(c['frames']) + c['frames'].append(prior['new_basis']) + for d, p in original.items(): + i = maps[d]['B', 480] + need(p[i][2] == prior['old_frame'], 'Missing-span parent pin') + p[i][2] = prior_frame + baseline = deepcopy(c) + before = {d: F.synthesize(c, p) for d, p in original.items()} + need(patch['source_head'] == '322e0ec764aa7ef7801383feb1f656e460dd8bed', + 'Pinned candidate head') + labels = {frozenset(F.span(b)): i for i, b in enumerate(c['frames'])} + + def label(b): + s = frozenset(F.span(b)) + need(len(s) == 2**len(b), 'Independent binary basis') + if s not in labels: + labels[s] = len(c['frames']) + c['frames'].append(b) + return labels[s] + + seen = set() + counts = Counter() + for move in patch['changes']: + phase, r = move['phase'], move['ordinal'] + key = (phase, r) + need(key not in seen, 'No duplicate changed boundary/contact') + seen.add(key) + a, b = F.span(move['old']), F.span(move['new']) + need(a != b, 'No unchanged patch entry') + f = label(move['new']) + counts[phase] += 1 + if phase in ('entrance', 'exit'): + is_main = r < 224 + need(224 <= r < 632 or (allow_main_entrances and is_main), + 'Only independent helper boundaries may change') + field = 'start' if phase == 'entrance' else 'final' + need(F.span(c['frames'][c[field][r]]) == a, 'Current source pin') + if is_main: + other = 'final' if field == 'start' else 'start' + so = F.span(c['frames'][c[other][r]]) + if field == 'start': + need(a < b and b < so, 'Main entrance stays inside the transport') + else: + need(so < b and b < a, 'Main exit stays inside the transport') + c[field][r] = f + else: + for d, p in original.items(): + i = maps[d][key] + need(F.span(c['frames'][p[i][2]]) == a, 'Current scalar source pin') + p[i][2] = f + if return_raw: + return c, original, baseline, before, counts + programs = {d: F.synthesize(c, p) for d, p in original.items()} + return c, programs, baseline, before, counts + +KERNEL = 153 +_PIVOT = (KERNEL & -KERNEL).bit_length()-1 + + +def phi(v): + """Surjection onto F2^8 with kernel span{KERNEL}. + + Pivot on the lowest set bit of KERNEL: when it is set, xor KERNEL away, then + drop that coordinate. Two vectors collide exactly when they differ by + KERNEL, so the kernel is the line spanned by it. + """ + if (v >> _PIVOT) & 1: + v ^= KERNEL + low = v & ((1 << _PIVOT) - 1) + high = v >> (_PIVOT + 1) + return low | (high << _PIVOT) + + +def span_of(vectors): + out = {0} + for v in vectors: + out |= {x ^ v for x in out} + return frozenset(out) + + +def dedupe(vectors): + pivots = {} + keep = [] + for v in vectors: + y = v + while y: + bit = y.bit_length()-1 + if bit in pivots: + y ^= pivots[bit] + else: + pivots[bit] = y + keep.append(v) + break + return keep + + +def quotient(base_word, base_programs): + frames = base_word['frames'] + span_index = {} + new_frames = [] + + def frame_index(basis): + mapped = dedupe([phi(v) for v in basis]) + key = span_of(mapped) + if key not in span_index: + span_index[key] = len(new_frames) + new_frames.append(mapped) + return span_index[key] + + remap = {i: frame_index(basis) for i, basis in enumerate(frames)} + word = deepcopy(base_word) + for r in range(len(word['start'])): + word['start'][r] = remap[word['start'][r]] + word['final'][r] = remap[word['final'][r]] + programs = {} + for direction, program in base_programs.items(): + out = [] + for event in program: + e = deepcopy(event) + if e[0] == 'scalar': + e[2] = remap[e[2]] + elif e[0] == 'warp': + e[3] = remap[e[3]] + e[4] = remap[e[4]] + elif e[0] == 'climb': + e[3] = remap[e[3]] + e[4] = remap[e[4]] + elif e[0] == 'center': + e[2] = remap[e[2]] + e[3] = remap[e[3]] + out.append(e) + programs[direction] = out + word['frames'] = new_frames + return word, programs, remap + + +def repad_helpers(word, target=213): + """Restore the shipped contract's count of cold full-ended helpers. + + `native_extensions.embedded_cache_roles` requires exactly 213 helpers with + start 0 and final 1, where frame 1 is the full ambient. Quotienting collapses + every full-ambient frame onto F2^8, so the count falls. Extending a helper's + final frame by the ninth axis restores it, and costs that helper one rank in + the paid profile and one in the helper profile, leaving the deficit unchanged. + """ + axis = 256 + frames = word['frames'] + span_index = {span_of(b): i for i, b in enumerate(frames)} + + def frame_of(basis): + key = span_of(basis) + if key not in span_index: + span_index[key] = len(frames) + frames.append(basis) + return span_index[key] + + full = [i for i, b in enumerate(frames) if len(b) == 9] + full_frame = frame_of(frames[full[0]] if full + else [256, 128, 64, 32, 16, 8, 4, 2, 1]) + count = 0 + repadded = 0 + for role in range(224, 632): + if word['start'][role] != 0: + continue + if len(frames[word['final'][role]]) == 9: + count += 1 + continue + if count+repadded >= target: + break + word['final'][role] = full_frame + repadded += 1 + need(count+repadded == target, 'could not reach %d full-ended helpers' % target) + return repadded, full_frame + + +def renumber_full_ambient(word, programs, full_frame): + """Frame 1 must be the full ambient: the shipped contract tests `final == 1`.""" + frames = word['frames'] + order = list(range(len(frames))) + order[1], order[full_frame] = order[full_frame], order[1] + remap = {old: new for new, old in enumerate(order)} + word['frames'] = [frames[i] for i in order] + word['start'] = [remap[x] for x in word['start']] + word['final'] = [remap[x] for x in word['final']] + out = {} + for direction, program in programs.items(): + rewritten = [] + for event in program: + e = list(event) + if e[0] == 'scalar': + e[2] = remap[e[2]] + elif e[0] in ('warp', 'climb'): + e[3] = remap[e[3]] + e[4] = remap[e[4]] + elif e[0] == 'center': + e[2] = remap[e[2]] + e[3] = remap[e[3]] + rewritten.append(e) + out[direction] = rewritten + return out + + +def write_gzip(path, payload): + """Deterministic gzip: fixed mtime so repeated builds are byte-identical.""" + with open(path, 'wb') as raw: + with gzip.GzipFile(fileobj=raw, mode='wb', mtime=0) as handle: + handle.write(json.dumps(payload, sort_keys=True).encode()) + + +def main(): + patch = F.read(JOINT/'PATCH.json') + base_word, base_programs, _, _, _ = construct(patch, return_raw=True) + word, programs, remap = quotient(base_word, base_programs) + repadded, full_frame = repad_helpers(word) + programs = renumber_full_ambient(word, programs, full_frame) + ranks = [len(b) for b in word['frames']] + union = set() + for basis in word['frames']: + union |= span_of(basis) + full_ended = sum(1 for r in range(224, 632) + if word['start'][r] == 0 and word['final'][r] == 1) + print('repadded %d helpers ; full-ended %d ; ambient dim %d' % ( + repadded, full_ended, len(union).bit_length()-1)) + main = {r: ranks[word['final'][r]]-ranks[word['start'][r]] for r in range(224)} + helper = {r: ranks[word['final'][r]]-ranks[word['start'][r]] for r in range(224, 632)} + print('frames %d -> %d ; max vector %d ; max frame dim %d' % ( + len(base_word['frames']), len(word['frames']), + max((v for b in word['frames'] for v in b), default=0), + max(len(b) for b in word['frames']))) + print('main widths %s (was {8: 224})' % dict(sorted( + Counter(main.values()).items()))) + print('main rank mass %d (was 1792)' % sum(main.values())) + print('helper rank mass %d (was 3471)' % sum(helper.values())) + + artifact = {'frames': word['frames'], + 'ambient_dim': len(union).bit_length()-1, + 'repadded_helpers': repadded, + 'full_ended_helpers': full_ended, + 'start': list(word['start']), + 'final': list(word['final']), + 'kernel_vector': KERNEL, + 'map': 'phi(v): xor KERNEL when the pivot bit is set, then drop it', + 'patch_source_head': patch['source_head'], + 'main_rank_mass': sum(main.values()), + 'helper_rank_mass': sum(helper.values())} + write_gzip(HERE/'QUOTIENT-WORD.json.gz', artifact) + write_gzip(HERE/'QUOTIENT-PROGRAMS.json.gz', programs) + print('wrote QUOTIENT-WORD.json.gz and QUOTIENT-PROGRAMS.json.gz') + + +if __name__ == '__main__': + main() diff --git a/research/pr4633-quotient-contract-audit/sources/research/complex-ambient-quotient/scan_kernels.py b/research/pr4633-quotient-contract-audit/sources/research/complex-ambient-quotient/scan_kernels.py new file mode 100644 index 0000000000..b3c718abab --- /dev/null +++ b/research/pr4633-quotient-contract-audit/sources/research/complex-ambient-quotient/scan_kernels.py @@ -0,0 +1,139 @@ +#!/usr/bin/env python3 +"""Price every one-dimensional quotient kernel of the complex supplier. + +`phi` in `build.py` quotients the nine-axis ambient by span{KERNEL}. Which +kernel to use is not a free choice: a kernel that shrinks the mains can also +collapse a frame some gate needs distinct from its neighbour, and that word does +not replay. This scan builds, repairs and replays all 511 directions and prices +each with the same invoice as `verify.py`. + +The scan is what selects KERNEL = 153: it is the replay-valid direction with the +highest admissible kappa. + + python3 -B scan_kernels.py + +Apache-2.0; substantial AI assistance. +""" +import importlib.util +import sys +from collections import Counter +from multiprocessing import Pool +from pathlib import Path + +sys.dont_write_bytecode = True +HERE = Path(__file__).resolve().parent +ROLES = 632 +MAINS = 224 + +_state = {} + + +def setup(): + spec = importlib.util.spec_from_file_location('build', HERE/'build.py') + build = importlib.util.module_from_spec(spec) + spec.loader.exec_module(build) + patch = build.F.read(build.JOINT/'PATCH.json') + word, programs, _, _, _ = build.construct(patch, return_raw=True) + vspec = importlib.util.spec_from_file_location('verify', HERE/'verify.py') + verify = importlib.util.module_from_spec(vspec) + vspec.loader.exec_module(verify) + _state.update(build=build, verify=verify, word=word, programs=programs) + + +def phi_for(kernel): + pivot = (kernel & -kernel).bit_length()-1 + + def phi(v): + if (v >> pivot) & 1: + v ^= kernel + low = v & ((1 << pivot) - 1) + return low | ((v >> (pivot + 1)) << pivot) + return phi + + +def price(kernel): + build, verify = _state['build'], _state['verify'] + word, programs = _state['word'], _state['programs'] + try: + build.phi = phi_for(kernel) + quot, moves, _ = build.quotient(word, programs) + _, full_frame = build.repad_helpers(quot) + moves = build.renumber_full_ambient(quot, moves, full_frame) + ext = verify.load(verify.ROOT/'research/kappa-rebuild/complex/native_extensions.py', + 'scan_ext_%d' % kernel) + ext.embedded_cache_roles({'frames': quot['frames'], 'start': quot['start'], + 'final': quot['final'], 'v': 112, 'R': 408}) + rows_mod = verify.load(verify.ROOT/'research/kappa-causal-continuation/' + 'buffer-borrowing/verify_buffers.py', + 'scan_rows_%d' % kernel) + blank = {'frames': quot['frames'], 'start': quot['start'], + 'final': quot['final'], 'precondition': [], 'A': [], 'B': [], + 'cut': [], 'compensation': [], 'cleanup': [], 'tail': []} + profiles = {} + for direction in ('forward', 'backward'): + synthesized = build.F.synthesize(blank, [list(e) for e in moves[direction]]) + rows, rec = ext.literal_replay(rows_mod, + {'frames': quot['frames'], + 'start': quot['start'], + 'final': quot['final'], + 'v': 112, 'R': 408}, synthesized, + direction == 'backward') + exact = all(rows['L', r] == rows_mod.expected(('L', r), [], + direction == 'backward', False) + for r in range(ROLES)) + if not exact or rows[('C', 0)]: + return kernel, 'replay-fail', 0, 0, 0.0 + profiles[direction] = Counter({int(k): v for k, v in + rec['paid_profile'].items()}) + if profiles['forward'] != profiles['backward']: + return kernel, 'directions-disagree', 0, 0, 0.0 + ranks = [len(b) for b in quot['frames']] + mains = sum(ranks[quot['final'][r]]-ranks[quot['start'][r]] + for r in range(MAINS)) + helpers = Counter(ranks[quot['final'][r]]-ranks[quot['start'][r]] + for r in range(MAINS, ROLES)) + targets, paid, surplus, _ = verify.invoice(dict(helpers), + dict(profiles['forward'])) + kappa = verify.admissible_kappa(targets, paid) + return kernel, 'ok', mains, surplus, kappa or 0.0 + except Exception as exc: + return kernel, type(exc).__name__, 0, 0, 0.0 + + +def main(): + setup() + build = _state['build'] + word = _state['word'] + frames = word['frames'] + + def mass(kernel): + phi = phi_for(kernel) + dim = {i: len(build.span_of(build.dedupe([phi(x) for x in b]))).bit_length()-1 + for i, b in enumerate(frames)} + return sum(dim[word['final'][r]]-dim[word['start'][r]] for r in range(MAINS)) + + kernels = list(range(1, 512)) + print('pricing %d kernels across 8 workers ...' % len(kernels), flush=True) + valid = [] + with Pool(8, initializer=setup) as pool: + for done, result in enumerate(pool.imap_unordered(price, kernels), 1): + kernel, status, m, surplus, kappa = result + if status == 'ok': + valid.append((kappa, kernel, m, surplus)) + if done % 64 == 0: + top = max(valid) if valid else None + print(' %d/%d valid %d best %s' % ( + done, len(kernels), len(valid), + 'kernel %d kappa %.12f' % (top[1], top[0]) if top else '-'), + flush=True) + valid.sort(reverse=True) + print() + print('replay-valid kernels: %d of %d' % (len(valid), len(kernels))) + print('best 10 by admissible kappa:') + for kappa, kernel, m, surplus in valid[:10]: + print(' kernel %3d main mass %4d surplus %5d kappa %.12f' + % (kernel, m, surplus, kappa)) + + +if __name__ == '__main__': + main() diff --git a/research/pr4633-quotient-contract-audit/sources/research/complex-ambient-quotient/verify.py b/research/pr4633-quotient-contract-audit/sources/research/complex-ambient-quotient/verify.py new file mode 100644 index 0000000000..119405057c --- /dev/null +++ b/research/pr4633-quotient-contract-audit/sources/research/complex-ambient-quotient/verify.py @@ -0,0 +1,234 @@ +#!/usr/bin/env python3 +"""Independent verification of the rank-8 quotient supplier. Apache-2.0. + +Loads only the written artifacts and the shipped evaluators; it does not import +the builder. Checks, in order: + + 1. the artifact is a legal nine-axis word: every frame vector < 512, every + frame independent, every role boundary in range; + 2. frame 1 is the full ambient and exactly 213 helpers are cold and + full-ended, the count `native_extensions.embedded_cache_roles` requires; + 3. the shipped `embedded_cache_roles` accepts the word; + 4. `synthesize` accepts both directions; + 5. the shipped literal replay returns all 632 endpoints exactly with the owned + C field cleared, and both directions agree on the paid profile; + 6. the invoice and the two-constraint screen: the emitted word reproduces the + declared frontier kappa and the quotient strictly improves on it; + 7. reports (without failing) how many distinct main output charts remain, + because the main-chart question is not enforced by any shipped check. + + python3 -B verify.py +""" +import gzip +import json +import sys +from collections import Counter +from pathlib import Path + +sys.dont_write_bytecode = True +HERE = Path(__file__).resolve().parent +ROOT = HERE.parents[1] +sys.path.insert(0, str(ROOT/'research/fresh-helper-boundary')) +sys.path.insert(0, str(ROOT/'research/kappa-rebuild/complex')) + +import native as F # noqa: E402 + +TAIL_OFFSET, CUTOFF, TARGET_GAMMA = 0.2, 20.0, 0.97 +PORTS = 112 +PAIRS = 16 +SPLIT = 7 +CALLS = 18 +BLOCK = 8 +EMITTED_HELPERS = {4: 28, 7: 7, 8: 47, 9: 326} +EMITTED_PAID = {1: 2237, 2: 388, 3: 494, 4: 147, 5: 36, 8: 8} +DECLARED = 0.00302015 +ROLES = 632 +FULL_ENDED = 213 +FULL_BASIS = [256, 128, 64, 32, 16, 8, 4, 2, 1] + + +def need(ok, message): + if not ok: + raise ValueError(message) + + +def load(path, name): + import importlib.util + 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 moment(profile, exponent): + return sum(n*(r**exponent) for r, n in profile.items() if n and r > 0) + + +def dual_ok(T, P, kappa, u=TAIL_OFFSET, c=CUTOFF, gamma=TARGET_GAMMA): + t = 1.0-kappa + return moment(P, t) < moment(T, t) and moment(P, t+u) < gamma*(c**u)*moment(T, t) + + +def admissible_kappa(T, P, lo=1e-7, hi=0.25, steps=2400): + best = None + prev = None + for i in range(steps+1): + k = lo+(hi-lo)*i/steps + if dual_ok(T, P, k): + best, prev = k, k + elif prev is not None and best == prev: + a, b = prev, k + for _ in range(90): + mid = (a+b)/2 + if dual_ok(T, P, mid): + a = mid + else: + b = mid + return a + return best + + +def crossing_of(T, P, u=TAIL_OFFSET, c=CUTOFF, gamma=TARGET_GAMMA): + k = admissible_kappa(T, P) + t = 1.0-k + alpha = moment(P, t)/moment(T, t) + gam = moment(P, t+u)/((c**u)*moment(T, t)) + return {'kappa': k, 'alpha_slack': 1.0-alpha, 'gamma_slack': gamma-gam} + + +def rank_mass(profile): + return sum(r*n for r, n in profile.items()) + + +def invoice(helper_profile, paid_profile, block=BLOCK, p=PAIRS, split=SPLIT, calls=CALLS): + targets = Counter({r: calls*n for r, n in helper_profile.items()}) + paid = Counter({r: calls*n for r, n in paid_profile.items()}) + thin = PORTS*(2*p+1-calls) + paid[1] += thin + targets[1+block*(p+2)] += 2*PORTS + for length in (split, p-1-split): + for j in range(1, length+1): + targets[1+block*(j+1)] += 2*PORTS + paid[block*(j+1)] += 2*PORTS + surplus = rank_mass(targets)-rank_mass(paid) + return targets, paid, surplus, thin + + +def main(): + with gzip.open(HERE/'QUOTIENT-WORD.json.gz', 'rt') as handle: + word = json.load(handle) + with gzip.open(HERE/'QUOTIENT-PROGRAMS.json.gz', 'rt') as handle: + programs_raw = json.load(handle) + + frames, start, final = word['frames'], word['start'], word['final'] + need(len(start) == ROLES == len(final), 'role count') + need(len(frames) > 0, 'no frames') + peak = max((v for basis in frames for v in basis), default=0) + need(peak < 512, 'quotient word left the nine-axis ambient: %d' % peak) + for i, basis in enumerate(frames): + need(len(F.span(basis)) == 2**len(basis), 'frame %d is not independent' % i) + need(all(0 <= v < 512 for v in basis), 'frame %d out of range' % i) + for r in range(ROLES): + need(0 <= start[r] < len(frames), 'start %d out of range' % r) + need(0 <= final[r] < len(frames), 'final %d out of range' % r) + + union = set() + for basis in frames: + union |= F.span(basis) + ambient = len(union).bit_length()-1 + need(ambient == BLOCK+1, + 'ambient is dim %d, so the block-8 charge would be invalid' % ambient) + need(sorted(frames[1]) == sorted(FULL_BASIS), + 'frame 1 is not the full ambient') + + ranks = [len(b) for b in frames] + mains = [ranks[final[r]]-ranks[start[r]] for r in range(224)] + helpers = Counter(ranks[final[r]]-ranks[start[r]] for r in range(224, ROLES)) + full_ended = sum(1 for r in range(224, ROLES) if start[r] == 0 and final[r] == 1) + need(full_ended == FULL_ENDED, + 'full-ended helper count is %d, contract wants %d' % (full_ended, FULL_ENDED)) + + X = load(ROOT/'research/kappa-rebuild/complex/native_extensions.py', 'joint_literal') + cache = X.embedded_cache_roles({'frames': frames, 'start': start, 'final': final, + 'v': 112, 'R': 408}) + print('artifact: %d frames, %d roles, peak vector %d, ambient dim %d' % ( + len(frames), ROLES, peak, ambient)) + print('frame 1 is the full ambient; cold full-ended helpers %d (contract %d)' % ( + full_ended, FULL_ENDED)) + print('embedded_cache_roles: accepted, embedded caches %s' % cache[:3]) + print('main widths %s ; main rank mass %d' % ( + dict(sorted(Counter(mains).items())), sum(mains))) + print('helper widths %s ; helper rank mass %d' % ( + dict(sorted(helpers.items())), rank_mass(helpers))) + + V = F.load(ROOT/'research/kappa-causal-continuation/buffer-borrowing/verify_buffers.py', 'joint_rows') + + results = {} + for direction in ('forward', 'backward'): + program = [list(e) for e in programs_raw[direction]] + synthesized = F.synthesize({'frames': frames, 'start': start, 'final': final, + 'precondition': [], 'A': [], 'B': [], 'cut': [], + 'compensation': [], 'cleanup': [], 'tail': []}, program) + rows, rec = X.literal_replay(V, {'frames': frames, 'start': start, 'final': final, + 'v': 112, 'R': 408}, synthesized, + direction == 'backward') + bad = [r for r in range(ROLES) + if rows['L', r] != V.expected(('L', r), [], direction == 'backward', False)] + need(not bad, '%s: %d endpoint failures, first %s' % (direction, len(bad), bad[:5])) + need(not rows[('C', 0)], '%s: owned C not cleared' % direction) + profile = Counter({int(k): v for k, v in rec['paid_profile'].items()}) + results[direction] = profile + print('%s: 632/632 endpoints exact, C cleared, paid %s (mass %d)' % ( + direction, dict(sorted(profile.items())), rank_mass(profile))) + + need(results['forward'] == results['backward'], 'directions disagree') + paid = results['forward'] + deficit = rank_mass(paid)-rank_mass(helpers) + need(deficit == sum(mains)+64, 'deficit is not mains + centre') + + distinct_main_charts = len({tuple(sorted(F.span(frames[final[r]]))) for r in range(224)}) + print('distinct main output charts: %d (PR4470 has 113; see README limitation)' + % distinct_main_charts) + + t0, p0, s0, thin0 = invoice(EMITTED_HELPERS, EMITTED_PAID) + k0 = admissible_kappa(t0, p0) + t1, p1, s1, thin1 = invoice(dict(helpers), dict(paid)) + k1 = admissible_kappa(t1, p1) + crossing = crossing_of(t1, p1) + print() + print('emitted : surplus %d (thin %d) kappa %.12f' % (s0, thin0, k0)) + print('quotient: surplus %d (thin %d) kappa %.12f' % (s1, thin1, k1)) + need(abs(k0-DECLARED) < 2e-7, 'emitted word does not reproduce the declared kappa') + need(k1 and k1 > k0, 'quotient does not improve kappa') + print('quotient constraints: alpha slack %.3e ; gamma slack %.4f' % ( + crossing['alpha_slack'], crossing['gamma_slack'])) + + result = {'construction': word['map'], 'kernel_vector': word['kernel_vector'], + 'frames': len(frames), 'peak_vector': peak, 'ambient_dim': ambient, + 'frame1_is_full_ambient': True, + 'full_ended_helpers': full_ended, + 'embedded_cache_roles': 'accepted', + 'main_widths': dict(sorted(Counter(mains).items())), + 'main_rank_mass': sum(mains), + 'helper_widths': dict(sorted(helpers.items())), + 'helper_rank_mass': rank_mass(helpers), + 'paid_profile': dict(sorted(paid.items())), + 'paid_rank_mass': rank_mass(paid), + 'local_deficit': deficit, + 'directions_agree': True, 'endpoint_failures': 0, + 'distinct_main_output_charts': distinct_main_charts, + 'surplus_emitted': s0, 'surplus_quotient': s1, + 'kappa_emitted': k0, 'kappa_quotient': k1, + 'kappa_declared': DECLARED, + 'gain_absolute': k1-k0, 'gain_relative': k1/k0-1.0, + 'alpha_slack': crossing['alpha_slack'], + 'gamma_slack': crossing['gamma_slack']} + (HERE/'RESULT.json').write_text(json.dumps(result, indent=2, sort_keys=True)+'\n') + print() + print('gain %+.9f %+.1f%%' % (k1-k0, 100*(k1/k0-1))) + print('wrote RESULT.json') + + +if __name__ == '__main__': + main() diff --git a/research/pr4633-quotient-contract-audit/verify.py b/research/pr4633-quotient-contract-audit/verify.py new file mode 100644 index 0000000000..0b0472c9f6 --- /dev/null +++ b/research/pr4633-quotient-contract-audit/verify.py @@ -0,0 +1,175 @@ +#!/usr/bin/env python3 +"""Exact counterexamples to PR4633, b2998bacd50. Apache-2.0. +Cinna Davis, with substantial OpenAI Codex assistance. +Vendored construction/verifier retain DaysSky's attribution. +""" +from collections import Counter +from contextlib import redirect_stdout +from copy import deepcopy +from fractions import Fraction as Q +from hashlib import sha256 +import gzip +import importlib.util +import io +import json +from pathlib import Path +import struct +import tempfile + +HERE = Path(__file__).resolve().parent +ROOT = HERE.parents[1] +SOURCE = ROOT/'research/kappa-rebuild/bit/sources/pr589-regenerated' +VENDOR = HERE/'sources/research/bit-ambient-quotient' + + +def need(ok, message): + if not ok: + raise ValueError(message) + + +def rank_q(rows): + rows = [list(map(Q, row)) for row in rows] + rank = 0 + for col in range(8): + pivot = next((i for i in range(rank, len(rows)) if rows[i][col]), None) + if pivot is None: + continue + rows[rank], rows[pivot] = rows[pivot], rows[rank] + x = rows[rank][col] + rows[rank] = [y/x for y in rows[rank]] + for i in range(len(rows)): + if i != rank: + x = rows[i][col] + rows[i] = [a-x*b for a, b in zip(rows[i], rows[rank])] + rank += 1 + return rank + + +def nullspace_mod2(rows): + masks = [sum((x % 2) << i for i, x in enumerate(row)) for row in rows] + return frozenset(x for x in range(256) + if all((x & row).bit_count() % 2 == 0 for row in masks)) + + +def phi(x): + if x & 2: + x ^= 150 + return (x & 1) | ((x >> 2) << 1) + + +def run_author(verifier, artifact): + with tempfile.TemporaryDirectory() as folder: + verifier.HERE = Path(folder) + with gzip.open(verifier.HERE/'QUOTIENT-BIT-WORD.json.gz', 'wt') as f: + json.dump(artifact, f) + with redirect_stdout(io.StringIO()): + verifier.main() + return json.loads((verifier.HERE/'RESULT.json').read_text()) + + +def main(): + for row in json.loads((HERE/'SOURCES.json').read_text())['files']: + if row['usage'] == 'input': + need(sha256((ROOT/row['path']).read_bytes()).hexdigest() == row['sha256'], + 'Live source pin: '+row['path']) + frames = json.loads((SOURCE/'records/frames.json').read_text())['frames'] + word = json.loads(gzip.decompress((SOURCE/'WORD.json.gz').read_bytes())) + records = list(struct.iter_unpack('<6i', (SOURCE/'records/249-records.bin').read_bytes())) + artifact = json.loads(gzip.decompress((VENDOR/'QUOTIENT-BIT-WORD.json.gz').read_bytes())) + binary = {int(k): nullspace_mod2(f['A']) for k, f in frames.items()} + for k, f in frames.items(): + need(rank_q(f['A'])+f['dim'] == 8 and rank_q(f['B']) == f['dim'], 'Source rational rank') + need(all(sum(a*b for a, b in zip(row, basis)) == 0 + for row in f['A'] for basis in f['B']), 'Exact annihilator') + need(len(binary[int(k)]) == 2**f['dim'], 'Binary dimension control') + need(len(set(binary.values())) == 157, 'Reduction already identifies frames') + table, image = {}, {} + for k, vectors in binary.items(): + key = frozenset(phi(x) for x in vectors) + if key not in table: + table[key] = len(table) + image[k] = table[key] + full_image = image[1] + table[frozenset(range(256))] = len(table) + padded = table[frozenset(range(256))] + image = {k: padded if f == full_image else f for k, f in image.items()} + dims = {i: len(v).bit_length()-1 for v, i in table.items()} + sets = {i: v for v, i in table.items()} + need({str(k): v for k, v in dims.items()} == artifact['frame_dims'], 'Independent dimensions') + for boundary in ('start', 'final'): + need([image[x] for x in word[boundary]] == artifact[boundary], 'Independent '+boundary) + rewritten = [] + for op, x, y, c, f, z in records: + if op == 0: + old, new = image[y], image[c] + need(sets[old] <= sets[new], 'Binary quotient MOVE containment control') + rewritten.append([op, x, old, new, dims[new]-dims[old], z]) + elif op == 1: + rewritten.append([op, x, y, c, image[f], z]) + else: + need(sets[image[c]] <= sets[image[f]] or sets[image[f]] <= sets[image[c]], + 'Binary quotient COPY containment control') + rewritten.append([op, x, y, image[c], image[f], z]) + need(rewritten == artifact['records'], 'Independent record reconstruction') + lost = [i for i in range(111) if dims[artifact['start'][i]] == 0] + need(lost == list(range(8, 14)), 'Six collapsed rational entrance lines') + q8, q9 = word['lines'][8], word['lines'][9] + need(q8 == [0, 1, 1, 0, 1, 0, 0, 1] and + q9 == [0, 1, 1, 0, 1, 0, 0, -1], 'Explicit rational witness') + need(rank_q([q8, q9]) == 2, 'Two independent vectors cannot fit a line kernel') + need(Q(q8[1]*q8[7], 4) == Q(1, 4) and Q(q9[1]*q9[7], 4) == Q(-1, 4), + 'Distinct source rational projectors') + pair_widths = Counter((dims[artifact['final'][i]]-dims[artifact['start'][i]], + dims[artifact['final'][111+i]]-dims[artifact['start'][111+i]]) + for i in range(111)) + need(pair_widths == {(7, 6): 101, (7, 8): 4, (8, 6): 6}, 'Retained rank-seven pair invariant fails') + spec = importlib.util.spec_from_file_location('pr4633_author_verify', VENDOR/'verify.py') + author = importlib.util.module_from_spec(spec) + spec.loader.exec_module(author) + author.SOURCE = SOURCE + positive = run_author(author, artifact) + need(positive['quotient_paid_mass'] == 5023 and + abs(positive['quotient_kappa']-0.012401086416) < 1e-12, 'Author positive control') + mutant = deepcopy(artifact) + count = 0 + for record in mutant['records']: + if record[0] == 0 and record[4] > 0: + record[4] = 0 + count += 1 + need(count == 2802, 'Complete MOVE mutation inventory') + bad = run_author(author, mutant) + need(bad['status'] == 'PASS_BIT_AMBIENT_QUOTIENT' and bad['quotient_kappa'] == .25, + 'Submitted verifier falsely accepts free MOVEs') + mismatch = sum(r[4] != dims[r[3]]-dims[r[2]] for r in mutant['records'] if r[0] == 0) + need(mismatch == 2802, 'Independent rank check rejects changed charges') + broken = deepcopy(artifact) + next(r for r in broken['records'] if r[0] == 0)[2] = -12345 + rejected = False + try: + run_author(author, broken) + except ValueError: + rejected = True + need(rejected, 'Author replay rejects a broken frame entrance') + result = { + 'status': 'PASS_PR4633_AUDIT_COUNTEREXAMPLES', + 'reviewed_head': 'b2998bacd50d57c301fe67c5392054440c42398c', + 'rational_source_frames': len(frames), 'binary_reductions_distinct': 157, + 'all_source_dimensions_preserved_mod2': True, 'quotient_reconstructed_exactly': True, + 'erased_rational_ports': lost, + 'erased_rational_span_rank': rank_q([word['lines'][i] for i in lost]), + 'independent_erased_vectors': [q8, q9], + 'port_transport_width_pairs': {str(k): v for k, v in pair_widths.items()}, + 'positive_control': positive, + 'free_move_mutation': {'changed_records': count, 'author_accepts': True, + 'reported_kappa': bad['quotient_kappa'], + 'paid_profile': bad['quotient_paid'], + 'independent_rank_mismatches': mismatch}, + 'broken_frame_entrance_rejected': rejected, + 'scope': 'Exact source and verifier counterexamples; no new supplier or kappa.'} + if (HERE/'EXPECTED.json').exists(): + need(result == json.loads((HERE/'EXPECTED.json').read_text()), 'Exact counterexample receipt') + print(json.dumps(result, indent=2, sort_keys=True)) + + +if __name__ == '__main__': + main() diff --git a/research/pr4633-quotient-contract-audit/verify_latest.py b/research/pr4633-quotient-contract-audit/verify_latest.py new file mode 100644 index 0000000000..3284aa1ffb --- /dev/null +++ b/research/pr4633-quotient-contract-audit/verify_latest.py @@ -0,0 +1,102 @@ +#!/usr/bin/env python3 +"""Audit the b390d64abfc delta using independent quotient cosets. Apache-2.0.""" +from collections import Counter +from copy import deepcopy +import gzip +import importlib.util +import json +import struct +import verify as audit + +HERE = audit.HERE +VENDOR = HERE/'sources-current/research/bit-ambient-quotient' + + +def span(basis): + out = {0} + for x in basis: + out |= {x ^ y for y in tuple(out)} + return frozenset(out) + + +def main(): + for row in json.loads((HERE/'SOURCES.json').read_text())['files']: + if row['usage'] == 'input': + audit.need(audit.sha256((audit.ROOT/row['path']).read_bytes()).hexdigest() + == row['sha256'], 'Live source pin: '+row['path']) + a = json.loads(gzip.decompress((VENDOR/'QUOTIENT-BIT-WORD.json.gz').read_bytes())) + w = json.loads(gzip.decompress((audit.SOURCE/'WORD.json.gz').read_bytes())) + frames = json.loads((audit.SOURCE/'records/frames.json').read_text())['frames'] + kernel = span([150, 102, 255]) + audit.need(len(kernel) == 8 and a['kernel_basis'] == [150, 102, 255], 'Three-dimensional kernel') + table, image = {}, {} + for k, f in frames.items(): + # Cosets are independent of the author's annihilator-basis algorithm. + key = frozenset(min(x ^ y for y in kernel) for x in audit.nullspace_mod2(f['A'])) + if key not in table: + table[key] = len(table) + image[int(k)] = table[key] + full = image[1] + table[frozenset(range(256))] = len(table) + padded = len(table)-1 + image = {k: padded if i == full else i for k, i in image.items()} + dims = {i: len(s).bit_length()-1 for s, i in table.items()} + audit.need({str(k): v for k, v in dims.items()} == a['frame_dims'], 'Independent coset dimensions') + for boundary in ('start', 'final'): + audit.need([image[x] for x in w[boundary]] == a[boundary], 'Independent '+boundary) + actual = {i: span(b) for i, b in enumerate(a['frame_bases'])} + audit.need(all(len(s) == 2**dims[i] for i, s in actual.items()), 'Declared bases have promised ranks') + records = list(struct.iter_unpack('<6i', (audit.SOURCE/'records/249-records.bin').read_bytes())) + rewritten = [] + for op, x, y, c, f, z in records: + if op == 0: + old, new = image[y], image[c] + audit.need(actual[old] <= actual[new], 'Current binary containment control') + rewritten.append([op, x, old, new, dims[new]-dims[old], z]) + elif op == 1: + rewritten.append([op, x, y, c, image[f], z]) + else: + rewritten.append([op, x, y, image[c], image[f], z]) + audit.need(rewritten == a['records'], 'Every current rewritten record') + lost = [i for i in range(111) if dims[a['start'][i]] == 0] + erased_rank = audit.rank_q([w['lines'][i] for i in lost]) + audit.need(len(lost) == 41 and erased_rank == 8, 'A rank-three rational kernel cannot erase rank eight') + pairs = Counter((dims[a['final'][i]]-dims[a['start'][i]], + dims[a['final'][111+i]]-dims[a['start'][111+i]]) for i in range(111)) + audit.need(pairs == {(7, 8): 8, (8, 4): 41, (7, 4): 62}, 'All retained main ports still fail') + spec = importlib.util.spec_from_file_location('current_author_verifier', VENDOR/'verify.py') + author = importlib.util.module_from_spec(spec) + spec.loader.exec_module(author) + author.SOURCE = audit.SOURCE + positive = audit.run_author(author, a) + audit.need(positive['quotient_paid_mass'] == 4842 and + abs(positive['quotient_kappa']-.032249423394893) < 1e-12, 'Current positive control') + mutant = deepcopy(a) + changed = 0 + for record in mutant['records']: + if record[0] == 0 and record[4] > 0: + record[4] = 0 + changed += 1 + bad = audit.run_author(author, mutant) + audit.need(changed == 2184 and bad['quotient_kappa'] == .25, 'Current free-MOVE false acceptance') + geometry = deepcopy(a) + geometry['frame_bases'] = [[] for _ in geometry['frame_bases']] + no_geometry = audit.run_author(author, geometry) + audit.need(no_geometry == positive, 'Current verifier ignores frame bases') + result = dict(status='PASS_PR4633_LATEST_AUDIT_COUNTEREXAMPLES', + reviewed_head='b390d64abfcdba1a3816b86fc763cbc95d43c12c', + quotient_reconstructed_by_cosets=True, erased_rational_ports=lost, + erased_rational_span_rank=erased_rank, + port_transport_width_pairs={str(k): v for k, v in pairs.items()}, + positive_control=positive, + free_move_mutation=dict(changed_records=changed, author_accepts=True, + reported_kappa=bad['quotient_kappa']), + all_empty_frame_bases_accepted=True, + scope='Counterexamples survive the three-dimensional update; no supplier or kappa claim.') + if (HERE/'EXPECTED-LATEST.json').exists(): + audit.need(result == json.loads((HERE/'EXPECTED-LATEST.json').read_text()), 'Current exact receipt') + print(json.dumps(result, indent=2, sort_keys=True)) + + +if __name__ == '__main__': + main()