From acb22886813c73a95ce5eb4b67805defb687b879 Mon Sep 17 00:00:00 2001 From: ross Date: Wed, 21 Oct 2026 00:18:44 +1100 Subject: [PATCH] Construct restored compensation forests for staged words --- .../.gitattributes | 2 + .../CONTROL-VALIDATION.json | 17 + .../staged-compensation-forests/CONTROLS.json | 1050 ++++ .../CORE-SNAPSHOT.json | 405 ++ .../EVIDENCE-INDEX.md | 52 + .../FROZEN-SHA256.json | 43 + .../MST-VALIDATION.json | 10 + .../staged-compensation-forests/NOTICE.md | 22 + .../staged-compensation-forests/ORIGINS.json | 244 + .../PRIOR-CHECK.json | 59 + .../PROOF-NUMERICAL.md | 196 + research/staged-compensation-forests/PROOF.md | 269 + .../staged-compensation-forests/README.md | 129 + .../RELATED-WORK.md | 37 + .../REVIEW-DESIGN.md | 45 + .../REVIEW-NUMERICAL.md | 185 + .../REVIEW-VERIFICATION.md | 171 + .../SOURCE-HISTORY-ALIASES.json | 133 + .../staged-compensation-forests/SOURCES.json | 131 + .../staged-compensation-forests/TASK.json | 112 + .../staged-compensation-forests/VERIFY.json | 60 + .../artifacts/DESIGN.json | 5045 +++++++++++++++++ .../FOREST-COMPENSATION-base.json.gz | Bin 0 -> 8882 bytes .../FOREST-COMPENSATION-extra.json.gz | Bin 0 -> 8882 bytes .../artifacts/FOREST-WORD-base.json.gz | Bin 0 -> 65174 bytes .../artifacts/FOREST-WORD-extra.json.gz | Bin 0 -> 65170 bytes .../HISTORICAL-SHARED-COMPENSATION.json.gz | Bin 0 -> 9960 bytes .../artifacts/INDEPENDENT-FOREST.json.gz | Bin 0 -> 6460 bytes .../artifacts/PR1080-COMPARISON.json | 730 +++ .../artifacts/PRICES.json | 151 + .../artifacts/SOURCE-base.json.gz | Bin 0 -> 72570 bytes .../artifacts/SOURCE-extra.json.gz | Bin 0 -> 72568 bytes .../TWO-SIDED-COMPENSATION-base.json.gz | Bin 0 -> 7761 bytes .../TWO-SIDED-COMPENSATION-extra.json.gz | Bin 0 -> 7761 bytes .../artifacts/TWO-SIDED-WORD-base.json.gz | Bin 0 -> 63913 bytes .../artifacts/TWO-SIDED-WORD-extra.json.gz | Bin 0 -> 63910 bytes .../artifacts/WHOLE-WORD.json.gz | Bin 0 -> 34903 bytes .../staged-compensation-forests/check_word.py | 807 +++ .../compare_prior.py | 126 + .../staged-compensation-forests/construct.py | 202 + .../staged-compensation-forests/controls.py | 438 ++ .../frozen/history/C01-PROOF.md | 244 + .../frozen/inputs/HISTORICAL-base.json.gz | Bin 0 -> 9960 bytes .../frozen/inputs/HISTORICAL-extra.json.gz | Bin 0 -> 9960 bytes .../frozen/inputs/SOURCE-base.json.gz | Bin 0 -> 72570 bytes .../frozen/inputs/SOURCE-extra.json.gz | Bin 0 -> 72568 bytes .../frozen/notices/CREDITS.md | 19 + .../frozen/notices/LICENSE | 201 + .../frozen/notices/NATIVE-LINEAGE-NOTICE | 14 + .../frozen/notices/NOTICE | 28 + .../prior/PR1080-CANONICAL-WORD.json.gz | Bin 0 -> 84026 bytes .../frozen/prior/PR1080-RECIPE.json | 3123 ++++++++++ .../frozen/producers/bw_emit.py | 192 + .../frozen/producers/bw_transport.py | 416 ++ .../c01-design/SOURCE-DEPENDENCIES.json | 51 + .../frozen/reviews/c01-design/VALIDATION.json | 80 + .../c01-wholeword/SOURCE-DEPENDENCIES.json | 63 + .../reviews/c01-wholeword/VALIDATION.json | 72 + .../independent_mst.py | 534 ++ .../price_replay.py | 115 + .../staged-compensation-forests/verify.py | 208 + 61 files changed, 16231 insertions(+) create mode 100644 research/staged-compensation-forests/.gitattributes create mode 100644 research/staged-compensation-forests/CONTROL-VALIDATION.json create mode 100644 research/staged-compensation-forests/CONTROLS.json create mode 100644 research/staged-compensation-forests/CORE-SNAPSHOT.json create mode 100644 research/staged-compensation-forests/EVIDENCE-INDEX.md create mode 100644 research/staged-compensation-forests/FROZEN-SHA256.json create mode 100644 research/staged-compensation-forests/MST-VALIDATION.json create mode 100644 research/staged-compensation-forests/NOTICE.md create mode 100644 research/staged-compensation-forests/ORIGINS.json create mode 100644 research/staged-compensation-forests/PRIOR-CHECK.json create mode 100644 research/staged-compensation-forests/PROOF-NUMERICAL.md create mode 100644 research/staged-compensation-forests/PROOF.md create mode 100644 research/staged-compensation-forests/README.md create mode 100644 research/staged-compensation-forests/RELATED-WORK.md create mode 100644 research/staged-compensation-forests/REVIEW-DESIGN.md create mode 100644 research/staged-compensation-forests/REVIEW-NUMERICAL.md create mode 100644 research/staged-compensation-forests/REVIEW-VERIFICATION.md create mode 100644 research/staged-compensation-forests/SOURCE-HISTORY-ALIASES.json create mode 100644 research/staged-compensation-forests/SOURCES.json create mode 100644 research/staged-compensation-forests/TASK.json create mode 100644 research/staged-compensation-forests/VERIFY.json create mode 100644 research/staged-compensation-forests/artifacts/DESIGN.json create mode 100644 research/staged-compensation-forests/artifacts/FOREST-COMPENSATION-base.json.gz create mode 100644 research/staged-compensation-forests/artifacts/FOREST-COMPENSATION-extra.json.gz create mode 100644 research/staged-compensation-forests/artifacts/FOREST-WORD-base.json.gz create mode 100644 research/staged-compensation-forests/artifacts/FOREST-WORD-extra.json.gz create mode 100644 research/staged-compensation-forests/artifacts/HISTORICAL-SHARED-COMPENSATION.json.gz create mode 100644 research/staged-compensation-forests/artifacts/INDEPENDENT-FOREST.json.gz create mode 100644 research/staged-compensation-forests/artifacts/PR1080-COMPARISON.json create mode 100644 research/staged-compensation-forests/artifacts/PRICES.json create mode 100644 research/staged-compensation-forests/artifacts/SOURCE-base.json.gz create mode 100644 research/staged-compensation-forests/artifacts/SOURCE-extra.json.gz create mode 100644 research/staged-compensation-forests/artifacts/TWO-SIDED-COMPENSATION-base.json.gz create mode 100644 research/staged-compensation-forests/artifacts/TWO-SIDED-COMPENSATION-extra.json.gz create mode 100644 research/staged-compensation-forests/artifacts/TWO-SIDED-WORD-base.json.gz create mode 100644 research/staged-compensation-forests/artifacts/TWO-SIDED-WORD-extra.json.gz create mode 100644 research/staged-compensation-forests/artifacts/WHOLE-WORD.json.gz create mode 100644 research/staged-compensation-forests/check_word.py create mode 100644 research/staged-compensation-forests/compare_prior.py create mode 100644 research/staged-compensation-forests/construct.py create mode 100644 research/staged-compensation-forests/controls.py create mode 100644 research/staged-compensation-forests/frozen/history/C01-PROOF.md create mode 100644 research/staged-compensation-forests/frozen/inputs/HISTORICAL-base.json.gz create mode 100644 research/staged-compensation-forests/frozen/inputs/HISTORICAL-extra.json.gz create mode 100644 research/staged-compensation-forests/frozen/inputs/SOURCE-base.json.gz create mode 100644 research/staged-compensation-forests/frozen/inputs/SOURCE-extra.json.gz create mode 100644 research/staged-compensation-forests/frozen/notices/CREDITS.md create mode 100644 research/staged-compensation-forests/frozen/notices/LICENSE create mode 100644 research/staged-compensation-forests/frozen/notices/NATIVE-LINEAGE-NOTICE create mode 100644 research/staged-compensation-forests/frozen/notices/NOTICE create mode 100644 research/staged-compensation-forests/frozen/prior/PR1080-CANONICAL-WORD.json.gz create mode 100644 research/staged-compensation-forests/frozen/prior/PR1080-RECIPE.json create mode 100644 research/staged-compensation-forests/frozen/producers/bw_emit.py create mode 100644 research/staged-compensation-forests/frozen/producers/bw_transport.py create mode 100644 research/staged-compensation-forests/frozen/reviews/c01-design/SOURCE-DEPENDENCIES.json create mode 100644 research/staged-compensation-forests/frozen/reviews/c01-design/VALIDATION.json create mode 100644 research/staged-compensation-forests/frozen/reviews/c01-wholeword/SOURCE-DEPENDENCIES.json create mode 100644 research/staged-compensation-forests/frozen/reviews/c01-wholeword/VALIDATION.json create mode 100644 research/staged-compensation-forests/independent_mst.py create mode 100644 research/staged-compensation-forests/price_replay.py create mode 100644 research/staged-compensation-forests/verify.py diff --git a/research/staged-compensation-forests/.gitattributes b/research/staged-compensation-forests/.gitattributes new file mode 100644 index 0000000000..9b80cb5c3e --- /dev/null +++ b/research/staged-compensation-forests/.gitattributes @@ -0,0 +1,2 @@ +frozen/producers/bw_emit.py -text whitespace=trailing-space,space-before-tab,cr-at-eol +frozen/producers/bw_transport.py -text whitespace=trailing-space,space-before-tab,cr-at-eol diff --git a/research/staged-compensation-forests/CONTROL-VALIDATION.json b/research/staged-compensation-forests/CONTROL-VALIDATION.json new file mode 100644 index 0000000000..4a96acd423 --- /dev/null +++ b/research/staged-compensation-forests/CONTROL-VALIDATION.json @@ -0,0 +1,17 @@ +{ + "controls_sha256": "cb25c9ce5b7ebf6f0f589b1749424036dbc7f5c752d7e34e7559d545be36c1f3", + "full_normal_and_optimized_receipts_byte_identical": true, + "runs": [ + { + "outer_optimization": 0, + "receipt_sha256": "7ed2337a7a39f6dc2d4e113b938c823459e84c170fa841b7a7fa783a703337c8", + "seconds": 4.207446083979448 + }, + { + "outer_optimization": 1, + "receipt_sha256": "7ed2337a7a39f6dc2d4e113b938c823459e84c170fa841b7a7fa783a703337c8", + "seconds": 4.195838083018316 + } + ], + "status": "PASS_C01_CONTROL_DRIVER_BYTE_EQUALITY" +} diff --git a/research/staged-compensation-forests/CONTROLS.json b/research/staged-compensation-forests/CONTROLS.json new file mode 100644 index 0000000000..075c6eb58c --- /dev/null +++ b/research/staged-compensation-forests/CONTROLS.json @@ -0,0 +1,1050 @@ +{ + "actual_single_compensation_panel_replayed": true, + "full_wholeword_or_edge_census_replayed": false, + "no_new_kappa": true, + "normal_and_optimized_receipts_equal_except_mode": true, + "runs": [ + { + "actual_mathematics": { + "actual_authenticated_candidate": true, + "all_arbitrary_input_columns": 632, + "named_endpoint_gate_deletion_detected": true, + "rejections": [ + { + "intended_gate": "complete arbitrary-input panel endpoint", + "name": "actual_target_basis_sign" + } + ], + "witness": { + "actual": "-2", + "column": 163, + "expected": "0", + "row": 156 + } + }, + "compression": { + "equivalent_recompression_accepted": true, + "rejections": [ + { + "intended_gate": "changed frozen input: original.json.gz", + "name": "changed_compressed_input" + }, + { + "intended_gate": "origin digest mismatch: original.json.gz", + "name": "changed_container_origin" + }, + { + "intended_gate": "original decoded bytes changed: original.json.gz", + "name": "changed_original_after_transport_rebinding" + }, + { + "intended_gate": "frozen/origin inventory mismatch", + "name": "omitted_origin" + } + ] + }, + "coverage": { + "named_coverage_gate_deletion_detected": true, + "real_dispatch_with_tiny_fixtures_passes": true, + "rejections": [ + { + "intended_gate": "complete stage record coverage changed: construction", + "name": "construction_omission" + }, + { + "intended_gate": "complete stage record coverage changed: construction", + "name": "construction_duplicate" + }, + { + "intended_gate": "complete stage record coverage changed: construction", + "name": "construction_extra" + }, + { + "intended_gate": "complete stage record coverage changed: forest", + "name": "forest_omission" + }, + { + "intended_gate": "complete stage record coverage changed: forest", + "name": "forest_duplicate" + }, + { + "intended_gate": "complete stage record coverage changed: forest", + "name": "forest_extra" + }, + { + "intended_gate": "complete stage record coverage changed: wholeword", + "name": "wholeword_omission" + }, + { + "intended_gate": "complete stage record coverage changed: wholeword", + "name": "wholeword_duplicate" + }, + { + "intended_gate": "complete stage record coverage changed: wholeword", + "name": "wholeword_extra" + }, + { + "intended_gate": "construction output inventory changed", + "name": "extra_generated_construction_artifact" + }, + { + "intended_gate": "complete stage record coverage changed: construction", + "name": "deleted_actual_compare_call" + } + ], + "stage_counts": { + "construction": 13, + "forest": 1, + "wholeword": 1 + } + }, + "loader": { + "captured_source_survives_disposable_path_change": true, + "child_assertions_enabled": true, + "file_and_argument_semantics_preserved": true, + "rejections": [ + { + "intended_gate": "AssertionError: DIRECT_ASSERT", + "name": "direct.py" + }, + { + "intended_gate": "AssertionError: NESTED_ASSERT", + "name": "nested.py" + }, + { + "intended_gate": "changed frozen input: direct.py", + "name": "changed_executable_source" + }, + { + "intended_gate": "missing regular input: direct.py", + "name": "missing_executable_source" + }, + { + "intended_gate": "unregistered input: absent.py", + "name": "unregistered_source" + }, + { + "intended_gate": "unsafe package path", + "name": "absolute_path" + }, + { + "intended_gate": "unsafe package path", + "name": "parent_escape" + }, + { + "intended_gate": "missing regular input: link.py", + "name": "symlink_input" + }, + { + "intended_gate": "input escapes package", + "name": "ancestor_symlink_escape" + }, + { + "intended_gate": "DIRECT_RUNTIME_GATE", + "name": "direct_runtime_requirement" + } + ] + }, + "nested_producers": { + "nested_captured_source_survives_path_change": true, + "nested_producer_assertions_enabled": true, + "rejections": [ + { + "intended_gate": "AssertionError: NESTED_PRODUCER_ASSERT", + "name": "nested_producer_assertion" + }, + { + "intended_gate": "producer execution buffer hash mismatch: transport", + "name": "nested_producer_changed_source" + } + ] + }, + "parent_optimization": 0, + "real_records": [ + { + "nested_path": [ + "providers", + "base", + "semantic_controls", + 0, + "witnesses", + "dual", + "actual" + ], + "record": "artifacts/DESIGN.json", + "rejections": [ + { + "intended_gate": "complete typed record mismatch: artifacts/DESIGN.json", + "name": "nested_mutation" + }, + { + "intended_gate": "complete typed record mismatch: artifacts/DESIGN.json", + "name": "nested_omission" + } + ], + "sha256": "81af0f8d0699d79989ba89fc7de8bb7af047c4ca79b05b413a29428d3160a6e9" + }, + { + "nested_path": [ + 0, + 0 + ], + "record": "artifacts/FOREST-COMPENSATION-base.json.gz", + "rejections": [ + { + "intended_gate": "complete typed record mismatch: artifacts/FOREST-COMPENSATION-base.json.gz", + "name": "nested_mutation" + }, + { + "intended_gate": "complete typed record mismatch: artifacts/FOREST-COMPENSATION-base.json.gz", + "name": "nested_omission" + } + ], + "sha256": "7a39e3cfe0113743714b1fc38258c36803b20c5f4abeecf977e76ff5da0533e7" + }, + { + "nested_path": [ + 0, + 0 + ], + "record": "artifacts/FOREST-COMPENSATION-extra.json.gz", + "rejections": [ + { + "intended_gate": "complete typed record mismatch: artifacts/FOREST-COMPENSATION-extra.json.gz", + "name": "nested_mutation" + }, + { + "intended_gate": "complete typed record mismatch: artifacts/FOREST-COMPENSATION-extra.json.gz", + "name": "nested_omission" + } + ], + "sha256": "7a39e3cfe0113743714b1fc38258c36803b20c5f4abeecf977e76ff5da0533e7" + }, + { + "nested_path": [ + "A", + 12, + 3, + 0 + ], + "record": "artifacts/FOREST-WORD-base.json.gz", + "rejections": [ + { + "intended_gate": "complete typed record mismatch: artifacts/FOREST-WORD-base.json.gz", + "name": "nested_mutation" + }, + { + "intended_gate": "complete typed record mismatch: artifacts/FOREST-WORD-base.json.gz", + "name": "nested_omission" + } + ], + "sha256": "0f9a6750289ff2ccde92580079254f88fa6546e8f1903f88fb869c4e2fbe32c8" + }, + { + "nested_path": [ + "A", + 12, + 3, + 0 + ], + "record": "artifacts/FOREST-WORD-extra.json.gz", + "rejections": [ + { + "intended_gate": "complete typed record mismatch: artifacts/FOREST-WORD-extra.json.gz", + "name": "nested_mutation" + }, + { + "intended_gate": "complete typed record mismatch: artifacts/FOREST-WORD-extra.json.gz", + "name": "nested_omission" + } + ], + "sha256": "30faba0e589c162e5f7478c2c6f4496d8c5664d81693cf2cf1c7290f2a7d4dd4" + }, + { + "nested_path": [ + "providers", + "base", + "audits", + "FOREST", + "bill", + "coefficient_histogram", + "-1" + ], + "record": "artifacts/INDEPENDENT-FOREST.json.gz", + "rejections": [ + { + "intended_gate": "complete typed record mismatch: artifacts/INDEPENDENT-FOREST.json.gz", + "name": "nested_mutation" + }, + { + "intended_gate": "complete typed record mismatch: artifacts/INDEPENDENT-FOREST.json.gz", + "name": "nested_omission" + } + ], + "sha256": "058a5377582227aa0784d205e49efe59b0d4ba525afc2cb49a608f06bd51924a" + }, + { + "nested_path": [ + "current_eighth_witnesses", + 0, + 0 + ], + "record": "artifacts/PR1080-COMPARISON.json", + "rejections": [ + { + "intended_gate": "complete typed record mismatch: artifacts/PR1080-COMPARISON.json", + "name": "nested_mutation" + }, + { + "intended_gate": "complete typed record mismatch: artifacts/PR1080-COMPARISON.json", + "name": "nested_omission" + } + ], + "sha256": "88116932a22a3927bb630fd4ecf3e171663e12e8fd8d0347fa21a840a81482ac" + }, + { + "nested_path": [ + "bills", + "forest", + "histogram", + "-1" + ], + "record": "artifacts/PRICES.json", + "rejections": [ + { + "intended_gate": "complete typed record mismatch: artifacts/PRICES.json", + "name": "nested_mutation" + }, + { + "intended_gate": "complete typed record mismatch: artifacts/PRICES.json", + "name": "nested_omission" + } + ], + "sha256": "801e9f76954d330c6276ca5f681cd1b361df13538824dbee84373f46c16f93d3" + }, + { + "nested_path": [ + "A", + 12, + 3, + 0 + ], + "record": "artifacts/SOURCE-base.json.gz", + "rejections": [ + { + "intended_gate": "complete typed record mismatch: artifacts/SOURCE-base.json.gz", + "name": "nested_mutation" + }, + { + "intended_gate": "complete typed record mismatch: artifacts/SOURCE-base.json.gz", + "name": "nested_omission" + } + ], + "sha256": "735c540b1fe29d0ceeb4d2f304ec941e5f2bd3bc92bafc8cce2b4f9a67a3b653" + }, + { + "nested_path": [ + "A", + 12, + 3, + 0 + ], + "record": "artifacts/SOURCE-extra.json.gz", + "rejections": [ + { + "intended_gate": "complete typed record mismatch: artifacts/SOURCE-extra.json.gz", + "name": "nested_mutation" + }, + { + "intended_gate": "complete typed record mismatch: artifacts/SOURCE-extra.json.gz", + "name": "nested_omission" + } + ], + "sha256": "886338fc32da14f3389a82c8120a1bcf9c5e2f0ec3e9b2d377fdae809e1d977f" + }, + { + "nested_path": [ + 0, + 0 + ], + "record": "artifacts/TWO-SIDED-COMPENSATION-base.json.gz", + "rejections": [ + { + "intended_gate": "complete typed record mismatch: artifacts/TWO-SIDED-COMPENSATION-base.json.gz", + "name": "nested_mutation" + }, + { + "intended_gate": "complete typed record mismatch: artifacts/TWO-SIDED-COMPENSATION-base.json.gz", + "name": "nested_omission" + } + ], + "sha256": "4119728ab2a3833636a77862bf997b46a50ff7c3c5a874b5d7c675d9577c8546" + }, + { + "nested_path": [ + 0, + 0 + ], + "record": "artifacts/TWO-SIDED-COMPENSATION-extra.json.gz", + "rejections": [ + { + "intended_gate": "complete typed record mismatch: artifacts/TWO-SIDED-COMPENSATION-extra.json.gz", + "name": "nested_mutation" + }, + { + "intended_gate": "complete typed record mismatch: artifacts/TWO-SIDED-COMPENSATION-extra.json.gz", + "name": "nested_omission" + } + ], + "sha256": "4119728ab2a3833636a77862bf997b46a50ff7c3c5a874b5d7c675d9577c8546" + }, + { + "nested_path": [ + "A", + 12, + 3, + 0 + ], + "record": "artifacts/TWO-SIDED-WORD-base.json.gz", + "rejections": [ + { + "intended_gate": "complete typed record mismatch: artifacts/TWO-SIDED-WORD-base.json.gz", + "name": "nested_mutation" + }, + { + "intended_gate": "complete typed record mismatch: artifacts/TWO-SIDED-WORD-base.json.gz", + "name": "nested_omission" + } + ], + "sha256": "52f37fbd972cf70ca3ec5edcb9a8bdb4e0bcffa06aa7179dcff4c938a4e7265d" + }, + { + "nested_path": [ + "A", + 12, + 3, + 0 + ], + "record": "artifacts/TWO-SIDED-WORD-extra.json.gz", + "rejections": [ + { + "intended_gate": "complete typed record mismatch: artifacts/TWO-SIDED-WORD-extra.json.gz", + "name": "nested_mutation" + }, + { + "intended_gate": "complete typed record mismatch: artifacts/TWO-SIDED-WORD-extra.json.gz", + "name": "nested_omission" + } + ], + "sha256": "0591b5386589c43cd10e9c516477bed5ea55d3fb28ee5eab02399b8750c3735d" + }, + { + "nested_path": [ + "providers", + "base", + "historical_rank_basis_panel", + "checks", + "dual", + "prefix", + "exact_row_sum_witness", + "row", + "terms", + 0, + 0, + 0 + ], + "record": "artifacts/WHOLE-WORD.json.gz", + "rejections": [ + { + "intended_gate": "complete typed record mismatch: artifacts/WHOLE-WORD.json.gz", + "name": "nested_mutation" + }, + { + "intended_gate": "complete typed record mismatch: artifacts/WHOLE-WORD.json.gz", + "name": "nested_omission" + } + ], + "sha256": "8f779bd86348e60c06db984652308e6e3fa96d1a2782ea75e69695f7ed4d741f" + } + ], + "record_gate": { + "named_record_gate_deletion_detected": true, + "rejections": [ + { + "intended_gate": "complete typed record mismatch: expected.json", + "name": "boolean_for_integer" + }, + { + "intended_gate": "complete typed record mismatch: expected.json", + "name": "float_for_integer" + }, + { + "intended_gate": "complete typed record mismatch: expected.json", + "name": "integer_for_boolean" + }, + { + "intended_gate": "complete typed record mismatch: expected.json", + "name": "nested_omission" + }, + { + "intended_gate": "complete typed record mismatch: expected.json", + "name": "ordered_list_reorder" + }, + { + "intended_gate": "complete typed record mismatch: expected.json", + "name": "ordered_list_truncate" + }, + { + "intended_gate": "duplicate JSON key: a", + "name": "duplicate_json_key" + }, + { + "intended_gate": "duplicate JSON key: a", + "name": "nested_duplicate_json_key" + }, + { + "intended_gate": "nonfinite JSON constant: NaN", + "name": "nonfinite_NaN" + }, + { + "intended_gate": "nonfinite JSON constant: Infinity", + "name": "nonfinite_Infinity" + }, + { + "intended_gate": "nonfinite JSON constant: -Infinity", + "name": "nonfinite_-Infinity" + }, + { + "intended_gate": "missing regular input: expected.json", + "name": "missing_expected_record" + } + ] + } + }, + { + "actual_mathematics": { + "actual_authenticated_candidate": true, + "all_arbitrary_input_columns": 632, + "named_endpoint_gate_deletion_detected": true, + "rejections": [ + { + "intended_gate": "complete arbitrary-input panel endpoint", + "name": "actual_target_basis_sign" + } + ], + "witness": { + "actual": "-2", + "column": 163, + "expected": "0", + "row": 156 + } + }, + "compression": { + "equivalent_recompression_accepted": true, + "rejections": [ + { + "intended_gate": "changed frozen input: original.json.gz", + "name": "changed_compressed_input" + }, + { + "intended_gate": "origin digest mismatch: original.json.gz", + "name": "changed_container_origin" + }, + { + "intended_gate": "original decoded bytes changed: original.json.gz", + "name": "changed_original_after_transport_rebinding" + }, + { + "intended_gate": "frozen/origin inventory mismatch", + "name": "omitted_origin" + } + ] + }, + "coverage": { + "named_coverage_gate_deletion_detected": true, + "real_dispatch_with_tiny_fixtures_passes": true, + "rejections": [ + { + "intended_gate": "complete stage record coverage changed: construction", + "name": "construction_omission" + }, + { + "intended_gate": "complete stage record coverage changed: construction", + "name": "construction_duplicate" + }, + { + "intended_gate": "complete stage record coverage changed: construction", + "name": "construction_extra" + }, + { + "intended_gate": "complete stage record coverage changed: forest", + "name": "forest_omission" + }, + { + "intended_gate": "complete stage record coverage changed: forest", + "name": "forest_duplicate" + }, + { + "intended_gate": "complete stage record coverage changed: forest", + "name": "forest_extra" + }, + { + "intended_gate": "complete stage record coverage changed: wholeword", + "name": "wholeword_omission" + }, + { + "intended_gate": "complete stage record coverage changed: wholeword", + "name": "wholeword_duplicate" + }, + { + "intended_gate": "complete stage record coverage changed: wholeword", + "name": "wholeword_extra" + }, + { + "intended_gate": "construction output inventory changed", + "name": "extra_generated_construction_artifact" + }, + { + "intended_gate": "complete stage record coverage changed: construction", + "name": "deleted_actual_compare_call" + } + ], + "stage_counts": { + "construction": 13, + "forest": 1, + "wholeword": 1 + } + }, + "loader": { + "captured_source_survives_disposable_path_change": true, + "child_assertions_enabled": true, + "file_and_argument_semantics_preserved": true, + "rejections": [ + { + "intended_gate": "AssertionError: DIRECT_ASSERT", + "name": "direct.py" + }, + { + "intended_gate": "AssertionError: NESTED_ASSERT", + "name": "nested.py" + }, + { + "intended_gate": "changed frozen input: direct.py", + "name": "changed_executable_source" + }, + { + "intended_gate": "missing regular input: direct.py", + "name": "missing_executable_source" + }, + { + "intended_gate": "unregistered input: absent.py", + "name": "unregistered_source" + }, + { + "intended_gate": "unsafe package path", + "name": "absolute_path" + }, + { + "intended_gate": "unsafe package path", + "name": "parent_escape" + }, + { + "intended_gate": "missing regular input: link.py", + "name": "symlink_input" + }, + { + "intended_gate": "input escapes package", + "name": "ancestor_symlink_escape" + }, + { + "intended_gate": "DIRECT_RUNTIME_GATE", + "name": "direct_runtime_requirement" + } + ] + }, + "nested_producers": { + "nested_captured_source_survives_path_change": true, + "nested_producer_assertions_enabled": true, + "rejections": [ + { + "intended_gate": "AssertionError: NESTED_PRODUCER_ASSERT", + "name": "nested_producer_assertion" + }, + { + "intended_gate": "producer execution buffer hash mismatch: transport", + "name": "nested_producer_changed_source" + } + ] + }, + "parent_optimization": 1, + "real_records": [ + { + "nested_path": [ + "providers", + "base", + "semantic_controls", + 0, + "witnesses", + "dual", + "actual" + ], + "record": "artifacts/DESIGN.json", + "rejections": [ + { + "intended_gate": "complete typed record mismatch: artifacts/DESIGN.json", + "name": "nested_mutation" + }, + { + "intended_gate": "complete typed record mismatch: artifacts/DESIGN.json", + "name": "nested_omission" + } + ], + "sha256": "81af0f8d0699d79989ba89fc7de8bb7af047c4ca79b05b413a29428d3160a6e9" + }, + { + "nested_path": [ + 0, + 0 + ], + "record": "artifacts/FOREST-COMPENSATION-base.json.gz", + "rejections": [ + { + "intended_gate": "complete typed record mismatch: artifacts/FOREST-COMPENSATION-base.json.gz", + "name": "nested_mutation" + }, + { + "intended_gate": "complete typed record mismatch: artifacts/FOREST-COMPENSATION-base.json.gz", + "name": "nested_omission" + } + ], + "sha256": "7a39e3cfe0113743714b1fc38258c36803b20c5f4abeecf977e76ff5da0533e7" + }, + { + "nested_path": [ + 0, + 0 + ], + "record": "artifacts/FOREST-COMPENSATION-extra.json.gz", + "rejections": [ + { + "intended_gate": "complete typed record mismatch: artifacts/FOREST-COMPENSATION-extra.json.gz", + "name": "nested_mutation" + }, + { + "intended_gate": "complete typed record mismatch: artifacts/FOREST-COMPENSATION-extra.json.gz", + "name": "nested_omission" + } + ], + "sha256": "7a39e3cfe0113743714b1fc38258c36803b20c5f4abeecf977e76ff5da0533e7" + }, + { + "nested_path": [ + "A", + 12, + 3, + 0 + ], + "record": "artifacts/FOREST-WORD-base.json.gz", + "rejections": [ + { + "intended_gate": "complete typed record mismatch: artifacts/FOREST-WORD-base.json.gz", + "name": "nested_mutation" + }, + { + "intended_gate": "complete typed record mismatch: artifacts/FOREST-WORD-base.json.gz", + "name": "nested_omission" + } + ], + "sha256": "0f9a6750289ff2ccde92580079254f88fa6546e8f1903f88fb869c4e2fbe32c8" + }, + { + "nested_path": [ + "A", + 12, + 3, + 0 + ], + "record": "artifacts/FOREST-WORD-extra.json.gz", + "rejections": [ + { + "intended_gate": "complete typed record mismatch: artifacts/FOREST-WORD-extra.json.gz", + "name": "nested_mutation" + }, + { + "intended_gate": "complete typed record mismatch: artifacts/FOREST-WORD-extra.json.gz", + "name": "nested_omission" + } + ], + "sha256": "30faba0e589c162e5f7478c2c6f4496d8c5664d81693cf2cf1c7290f2a7d4dd4" + }, + { + "nested_path": [ + "providers", + "base", + "audits", + "FOREST", + "bill", + "coefficient_histogram", + "-1" + ], + "record": "artifacts/INDEPENDENT-FOREST.json.gz", + "rejections": [ + { + "intended_gate": "complete typed record mismatch: artifacts/INDEPENDENT-FOREST.json.gz", + "name": "nested_mutation" + }, + { + "intended_gate": "complete typed record mismatch: artifacts/INDEPENDENT-FOREST.json.gz", + "name": "nested_omission" + } + ], + "sha256": "058a5377582227aa0784d205e49efe59b0d4ba525afc2cb49a608f06bd51924a" + }, + { + "nested_path": [ + "current_eighth_witnesses", + 0, + 0 + ], + "record": "artifacts/PR1080-COMPARISON.json", + "rejections": [ + { + "intended_gate": "complete typed record mismatch: artifacts/PR1080-COMPARISON.json", + "name": "nested_mutation" + }, + { + "intended_gate": "complete typed record mismatch: artifacts/PR1080-COMPARISON.json", + "name": "nested_omission" + } + ], + "sha256": "88116932a22a3927bb630fd4ecf3e171663e12e8fd8d0347fa21a840a81482ac" + }, + { + "nested_path": [ + "bills", + "forest", + "histogram", + "-1" + ], + "record": "artifacts/PRICES.json", + "rejections": [ + { + "intended_gate": "complete typed record mismatch: artifacts/PRICES.json", + "name": "nested_mutation" + }, + { + "intended_gate": "complete typed record mismatch: artifacts/PRICES.json", + "name": "nested_omission" + } + ], + "sha256": "801e9f76954d330c6276ca5f681cd1b361df13538824dbee84373f46c16f93d3" + }, + { + "nested_path": [ + "A", + 12, + 3, + 0 + ], + "record": "artifacts/SOURCE-base.json.gz", + "rejections": [ + { + "intended_gate": "complete typed record mismatch: artifacts/SOURCE-base.json.gz", + "name": "nested_mutation" + }, + { + "intended_gate": "complete typed record mismatch: artifacts/SOURCE-base.json.gz", + "name": "nested_omission" + } + ], + "sha256": "735c540b1fe29d0ceeb4d2f304ec941e5f2bd3bc92bafc8cce2b4f9a67a3b653" + }, + { + "nested_path": [ + "A", + 12, + 3, + 0 + ], + "record": "artifacts/SOURCE-extra.json.gz", + "rejections": [ + { + "intended_gate": "complete typed record mismatch: artifacts/SOURCE-extra.json.gz", + "name": "nested_mutation" + }, + { + "intended_gate": "complete typed record mismatch: artifacts/SOURCE-extra.json.gz", + "name": "nested_omission" + } + ], + "sha256": "886338fc32da14f3389a82c8120a1bcf9c5e2f0ec3e9b2d377fdae809e1d977f" + }, + { + "nested_path": [ + 0, + 0 + ], + "record": "artifacts/TWO-SIDED-COMPENSATION-base.json.gz", + "rejections": [ + { + "intended_gate": "complete typed record mismatch: artifacts/TWO-SIDED-COMPENSATION-base.json.gz", + "name": "nested_mutation" + }, + { + "intended_gate": "complete typed record mismatch: artifacts/TWO-SIDED-COMPENSATION-base.json.gz", + "name": "nested_omission" + } + ], + "sha256": "4119728ab2a3833636a77862bf997b46a50ff7c3c5a874b5d7c675d9577c8546" + }, + { + "nested_path": [ + 0, + 0 + ], + "record": "artifacts/TWO-SIDED-COMPENSATION-extra.json.gz", + "rejections": [ + { + "intended_gate": "complete typed record mismatch: artifacts/TWO-SIDED-COMPENSATION-extra.json.gz", + "name": "nested_mutation" + }, + { + "intended_gate": "complete typed record mismatch: artifacts/TWO-SIDED-COMPENSATION-extra.json.gz", + "name": "nested_omission" + } + ], + "sha256": "4119728ab2a3833636a77862bf997b46a50ff7c3c5a874b5d7c675d9577c8546" + }, + { + "nested_path": [ + "A", + 12, + 3, + 0 + ], + "record": "artifacts/TWO-SIDED-WORD-base.json.gz", + "rejections": [ + { + "intended_gate": "complete typed record mismatch: artifacts/TWO-SIDED-WORD-base.json.gz", + "name": "nested_mutation" + }, + { + "intended_gate": "complete typed record mismatch: artifacts/TWO-SIDED-WORD-base.json.gz", + "name": "nested_omission" + } + ], + "sha256": "52f37fbd972cf70ca3ec5edcb9a8bdb4e0bcffa06aa7179dcff4c938a4e7265d" + }, + { + "nested_path": [ + "A", + 12, + 3, + 0 + ], + "record": "artifacts/TWO-SIDED-WORD-extra.json.gz", + "rejections": [ + { + "intended_gate": "complete typed record mismatch: artifacts/TWO-SIDED-WORD-extra.json.gz", + "name": "nested_mutation" + }, + { + "intended_gate": "complete typed record mismatch: artifacts/TWO-SIDED-WORD-extra.json.gz", + "name": "nested_omission" + } + ], + "sha256": "0591b5386589c43cd10e9c516477bed5ea55d3fb28ee5eab02399b8750c3735d" + }, + { + "nested_path": [ + "providers", + "base", + "historical_rank_basis_panel", + "checks", + "dual", + "prefix", + "exact_row_sum_witness", + "row", + "terms", + 0, + 0, + 0 + ], + "record": "artifacts/WHOLE-WORD.json.gz", + "rejections": [ + { + "intended_gate": "complete typed record mismatch: artifacts/WHOLE-WORD.json.gz", + "name": "nested_mutation" + }, + { + "intended_gate": "complete typed record mismatch: artifacts/WHOLE-WORD.json.gz", + "name": "nested_omission" + } + ], + "sha256": "8f779bd86348e60c06db984652308e6e3fa96d1a2782ea75e69695f7ed4d741f" + } + ], + "record_gate": { + "named_record_gate_deletion_detected": true, + "rejections": [ + { + "intended_gate": "complete typed record mismatch: expected.json", + "name": "boolean_for_integer" + }, + { + "intended_gate": "complete typed record mismatch: expected.json", + "name": "float_for_integer" + }, + { + "intended_gate": "complete typed record mismatch: expected.json", + "name": "integer_for_boolean" + }, + { + "intended_gate": "complete typed record mismatch: expected.json", + "name": "nested_omission" + }, + { + "intended_gate": "complete typed record mismatch: expected.json", + "name": "ordered_list_reorder" + }, + { + "intended_gate": "complete typed record mismatch: expected.json", + "name": "ordered_list_truncate" + }, + { + "intended_gate": "duplicate JSON key: a", + "name": "duplicate_json_key" + }, + { + "intended_gate": "duplicate JSON key: a", + "name": "nested_duplicate_json_key" + }, + { + "intended_gate": "nonfinite JSON constant: NaN", + "name": "nonfinite_NaN" + }, + { + "intended_gate": "nonfinite JSON constant: Infinity", + "name": "nonfinite_Infinity" + }, + { + "intended_gate": "nonfinite JSON constant: -Infinity", + "name": "nonfinite_-Infinity" + }, + { + "intended_gate": "missing regular input: expected.json", + "name": "missing_expected_record" + } + ] + } + } + ], + "source_hashes": { + "FROZEN-SHA256.json": "e6cab1a1119591f00fddbaa743b5a8469f1759396a95e38c0b7ced4e9edbd5f4", + "ORIGINS.json": "8037036b46003234b5247c6b140c36b92e5964d0675dcee99b98c93ec9615e83", + "check_word.py": "16cdeef8aabed919c066ad5da45450cfc524024814f550b3415368ed098a38c6", + "independent_mst.py": "8ef41fafd73ab06bfdc78ec69de0192f658bb94c6e452c3ffe53c5983cb16094", + "verify.py": "cd3cf6493ba50303fd6a90acc084d186d434add5c7d98288b8785f6a9310467d" + }, + "status": "PASS_C01_COMPACT_SOURCE_AND_MATHEMATICAL_GATES" +} diff --git a/research/staged-compensation-forests/CORE-SNAPSHOT.json b/research/staged-compensation-forests/CORE-SNAPSHOT.json new file mode 100644 index 0000000000..83266ad7df --- /dev/null +++ b/research/staged-compensation-forests/CORE-SNAPSHOT.json @@ -0,0 +1,405 @@ +{ + "authenticated_input_count": 41, + "controls": { + "complete_scientific_records": [ + "artifacts/DESIGN.json", + "artifacts/FOREST-COMPENSATION-base.json.gz", + "artifacts/FOREST-COMPENSATION-extra.json.gz", + "artifacts/FOREST-WORD-base.json.gz", + "artifacts/FOREST-WORD-extra.json.gz", + "artifacts/INDEPENDENT-FOREST.json.gz", + "artifacts/PR1080-COMPARISON.json", + "artifacts/PRICES.json", + "artifacts/SOURCE-base.json.gz", + "artifacts/SOURCE-extra.json.gz", + "artifacts/TWO-SIDED-COMPENSATION-base.json.gz", + "artifacts/TWO-SIDED-COMPENSATION-extra.json.gz", + "artifacts/TWO-SIDED-WORD-base.json.gz", + "artifacts/TWO-SIDED-WORD-extra.json.gz", + "artifacts/WHOLE-WORD.json.gz" + ], + "mode_results": [ + { + "complete_real_records": 15, + "intended_rejections": 70, + "named_check_deletions_detected": 3, + "optimization": 0 + }, + { + "complete_real_records": 15, + "intended_rejections": 70, + "named_check_deletions_detected": 3, + "optimization": 1 + } + ], + "outer_normal_and_optimized_driver_receipts_byte_identical": true, + "path": "CONTROLS.json", + "sha256": "7ed2337a7a39f6dc2d4e113b938c823459e84c170fa841b7a7fa783a703337c8", + "source_hashes": { + "FROZEN-SHA256.json": "e6cab1a1119591f00fddbaa743b5a8469f1759396a95e38c0b7ced4e9edbd5f4", + "ORIGINS.json": "8037036b46003234b5247c6b140c36b92e5964d0675dcee99b98c93ec9615e83", + "check_word.py": "16cdeef8aabed919c066ad5da45450cfc524024814f550b3415368ed098a38c6", + "independent_mst.py": "8ef41fafd73ab06bfdc78ec69de0192f658bb94c6e452c3ffe53c5983cb16094", + "verify.py": "cd3cf6493ba50303fd6a90acc084d186d434add5c7d98288b8785f6a9310467d" + } + }, + "core_digest_definition": "SHA256 of UTF-8 JSON for files, sorted keys, compact separators, ensure_ascii=False.", + "core_file_count": 59, + "core_sha256": "91f7cfb5d3c58fa55ad453987229041b91de2a6b158eb1a8f53c74646705cb07", + "excluded_from_core_inventory": [ + "CONTROLS.json", + "CORE-SNAPSHOT.json" + ], + "execution_scope": { + "all_live_column_panel_maps_replayed_by_reviewer": true, + "independent_MST_and_helper_census_replayed_by_reviewer": true, + "parent_owns_committed_and_git_free_package_replays": true, + "wholeword_scalar_stage_replayed_by_this_reviewer": false + }, + "files": { + ".gitattributes": { + "bytes": 179, + "sha256": "e5117b89b0b3b9da816516d1687ad69bc558b99e10ff18791dcf96720c84d4a5" + }, + "CONTROL-VALIDATION.json": { + "bytes": 564, + "sha256": "d16aad6c26c630bab84d6169515e6b9606bf0c727bd28566940dc13704f19be9" + }, + "EVIDENCE-INDEX.md": { + "bytes": 3712, + "sha256": "f8ae5939c6cdca6cbe7f99bbf5db4d07ed5e275c51431122f30cf3b175a6ea59" + }, + "FROZEN-SHA256.json": { + "bytes": 4311, + "sha256": "e6cab1a1119591f00fddbaa743b5a8469f1759396a95e38c0b7ced4e9edbd5f4" + }, + "MST-VALIDATION.json": { + "bytes": 517, + "sha256": "aad6c64636c6265ff30bb06bf3940e7ac1ec2385727b6db23e640069dcc205b2" + }, + "NOTICE.md": { + "bytes": 1085, + "sha256": "e0155aa1e1f8a70ac86432b64c2b36d609064c72bf0409dcebcc5d2e5c553b88" + }, + "ORIGINS.json": { + "bytes": 11210, + "sha256": "8037036b46003234b5247c6b140c36b92e5964d0675dcee99b98c93ec9615e83" + }, + "PRIOR-CHECK.json": { + "bytes": 1504, + "sha256": "1f5cb9713e1944743c4fb6d0b58e00f285c838a6422a9591124412b50e67ee94" + }, + "PROOF-NUMERICAL.md": { + "bytes": 10036, + "sha256": "9842350cb53d68fd613ef511ec65d71b8af1e89c2354c491087880137b1cf6ef" + }, + "PROOF.md": { + "bytes": 15172, + "sha256": "fcb5a93fec05523ca40de6b16c805a004fda43059837653f8a9644ebdb1b76d6" + }, + "README.md": { + "bytes": 6469, + "sha256": "c4a99ba41a718bf905e63e3812a763f5c155c54ad2c531eaedecc68e7092f47a" + }, + "RELATED-WORK.md": { + "bytes": 2103, + "sha256": "5fd31fe13185502bfd716e603d33fb1fc49d97246abdd026bb77db39a82ba9a3" + }, + "REVIEW-DESIGN.md": { + "bytes": 3024, + "sha256": "d6f72ba8a9b02c39702643de0d00aacb2fddc7ce19783a578be8c0fea549f161" + }, + "REVIEW-NUMERICAL.md": { + "bytes": 10515, + "sha256": "a6408f2fd32a04153625e52885965f3c307371735982c367b41ad153e4adca2a" + }, + "REVIEW-VERIFICATION.md": { + "bytes": 9613, + "sha256": "a6dc3c2fe817b41ad73c9d373224302a085a593f1c3c260bf156c6929b16d25f" + }, + "SOURCE-HISTORY-ALIASES.json": { + "bytes": 6176, + "sha256": "533d0f2b40beb634a1aeec967f8a59abe158719d7a5896cc8f340cb5c1cb0685" + }, + "SOURCES.json": { + "bytes": 5733, + "sha256": "04be05f30d742027809408aacd527b16ba851ce5a453eb35050d0deabdb8ac27" + }, + "TASK.json": { + "bytes": 7004, + "sha256": "e8f051415f5005051ef7b959f1fb4212e34f4d149a048cbd40c77ee8779435d2" + }, + "VERIFY.json": { + "bytes": 1530, + "sha256": "7724471088215b565509ebdb5b321e32b8aed9f8cad2d87f2b5f29e670a7818c" + }, + "artifacts/DESIGN.json": { + "bytes": 74627, + "sha256": "81af0f8d0699d79989ba89fc7de8bb7af047c4ca79b05b413a29428d3160a6e9" + }, + "artifacts/FOREST-COMPENSATION-base.json.gz": { + "bytes": 8882, + "sha256": "7a39e3cfe0113743714b1fc38258c36803b20c5f4abeecf977e76ff5da0533e7" + }, + "artifacts/FOREST-COMPENSATION-extra.json.gz": { + "bytes": 8882, + "sha256": "7a39e3cfe0113743714b1fc38258c36803b20c5f4abeecf977e76ff5da0533e7" + }, + "artifacts/FOREST-WORD-base.json.gz": { + "bytes": 65174, + "sha256": "0f9a6750289ff2ccde92580079254f88fa6546e8f1903f88fb869c4e2fbe32c8" + }, + "artifacts/FOREST-WORD-extra.json.gz": { + "bytes": 65170, + "sha256": "30faba0e589c162e5f7478c2c6f4496d8c5664d81693cf2cf1c7290f2a7d4dd4" + }, + "artifacts/HISTORICAL-SHARED-COMPENSATION.json.gz": { + "bytes": 9960, + "sha256": "e7bdb1e299a43a8fcbdad4c598b7161e504a94691df3940a9a4eaf638f5013f0" + }, + "artifacts/INDEPENDENT-FOREST.json.gz": { + "bytes": 6460, + "sha256": "058a5377582227aa0784d205e49efe59b0d4ba525afc2cb49a608f06bd51924a" + }, + "artifacts/PR1080-COMPARISON.json": { + "bytes": 8196, + "sha256": "88116932a22a3927bb630fd4ecf3e171663e12e8fd8d0347fa21a840a81482ac" + }, + "artifacts/PRICES.json": { + "bytes": 3626, + "sha256": "801e9f76954d330c6276ca5f681cd1b361df13538824dbee84373f46c16f93d3" + }, + "artifacts/SOURCE-base.json.gz": { + "bytes": 72570, + "sha256": "735c540b1fe29d0ceeb4d2f304ec941e5f2bd3bc92bafc8cce2b4f9a67a3b653" + }, + "artifacts/SOURCE-extra.json.gz": { + "bytes": 72568, + "sha256": "886338fc32da14f3389a82c8120a1bcf9c5e2f0ec3e9b2d377fdae809e1d977f" + }, + "artifacts/TWO-SIDED-COMPENSATION-base.json.gz": { + "bytes": 7761, + "sha256": "4119728ab2a3833636a77862bf997b46a50ff7c3c5a874b5d7c675d9577c8546" + }, + "artifacts/TWO-SIDED-COMPENSATION-extra.json.gz": { + "bytes": 7761, + "sha256": "4119728ab2a3833636a77862bf997b46a50ff7c3c5a874b5d7c675d9577c8546" + }, + "artifacts/TWO-SIDED-WORD-base.json.gz": { + "bytes": 63913, + "sha256": "52f37fbd972cf70ca3ec5edcb9a8bdb4e0bcffa06aa7179dcff4c938a4e7265d" + }, + "artifacts/TWO-SIDED-WORD-extra.json.gz": { + "bytes": 63910, + "sha256": "0591b5386589c43cd10e9c516477bed5ea55d3fb28ee5eab02399b8750c3735d" + }, + "artifacts/WHOLE-WORD.json.gz": { + "bytes": 34903, + "sha256": "8f779bd86348e60c06db984652308e6e3fa96d1a2782ea75e69695f7ed4d741f" + }, + "check_word.py": { + "bytes": 37571, + "sha256": "16cdeef8aabed919c066ad5da45450cfc524024814f550b3415368ed098a38c6" + }, + "compare_prior.py": { + "bytes": 5694, + "sha256": "34b5345c59643fad8875305b8a89417439a31bd2d1bca160199aa25d127d73e1" + }, + "construct.py": { + "bytes": 10805, + "sha256": "7d64232bced5cb621ff1a4ee65155b8d48b95620323564721042b4cfcb11bb00" + }, + "controls.py": { + "bytes": 21377, + "sha256": "cb25c9ce5b7ebf6f0f589b1749424036dbc7f5c752d7e34e7559d545be36c1f3" + }, + "frozen/history/C01-PROOF.md": { + "bytes": 12894, + "sha256": "b1529379218f953973a3fd0c450bf795eebe861461a676a09b5268bc8196b8d8" + }, + "frozen/inputs/HISTORICAL-base.json.gz": { + "bytes": 9960, + "sha256": "e7bdb1e299a43a8fcbdad4c598b7161e504a94691df3940a9a4eaf638f5013f0" + }, + "frozen/inputs/HISTORICAL-extra.json.gz": { + "bytes": 9960, + "sha256": "e7bdb1e299a43a8fcbdad4c598b7161e504a94691df3940a9a4eaf638f5013f0" + }, + "frozen/inputs/SOURCE-base.json.gz": { + "bytes": 72570, + "sha256": "735c540b1fe29d0ceeb4d2f304ec941e5f2bd3bc92bafc8cce2b4f9a67a3b653" + }, + "frozen/inputs/SOURCE-extra.json.gz": { + "bytes": 72568, + "sha256": "886338fc32da14f3389a82c8120a1bcf9c5e2f0ec3e9b2d377fdae809e1d977f" + }, + "frozen/notices/CREDITS.md": { + "bytes": 5030, + "sha256": "1d9d8f56d8899f55878e4cb2c4e052b22506444016a51c2e678773505f5189e6" + }, + "frozen/notices/LICENSE": { + "bytes": 11357, + "sha256": "c71d239df91726fc519c6eb72d318ec65820627232b2f796219e87dcf35d0ab4" + }, + "frozen/notices/NATIVE-LINEAGE-NOTICE": { + "bytes": 2456, + "sha256": "ee0c73ca35877aad0e0b6adc560a3881cb82276dba4cf2d4fc58cd19e57cc420" + }, + "frozen/notices/NOTICE": { + "bytes": 3234, + "sha256": "c9731c9cca25ede32c2a1b3aef6d5b249973cb2ed5fb2494407bdca598763661" + }, + "frozen/prior/PR1080-CANONICAL-WORD.json.gz": { + "bytes": 84026, + "sha256": "387a2266ffe006d20042221d967f67a4b18d9bb8de1cd1e01d4031b539fa74a5" + }, + "frozen/prior/PR1080-RECIPE.json": { + "bytes": 30228, + "sha256": "d526804d9d627cbd850b0e54c3de9aadc74646e1a9b6befb577f42240720750a" + }, + "frozen/producers/bw_emit.py": { + "bytes": 10012, + "sha256": "99b59a6fa3feda86785e4225157dcb1a6169d256cec4f5e0acc9cea7a701df76" + }, + "frozen/producers/bw_transport.py": { + "bytes": 17646, + "sha256": "9818e08b819310b40f1441b89be8c4369584a5b3fa5dfe9b86b1df9a7f5d6a76" + }, + "frozen/reviews/c01-design/SOURCE-DEPENDENCIES.json": { + "bytes": 2461, + "sha256": "0b7f7e854d7e756fca595f3144ae07336401c8897fe35226f8bfbcc7e95b2c10" + }, + "frozen/reviews/c01-design/VALIDATION.json": { + "bytes": 3496, + "sha256": "daa6902b6bd7c8bbc413cf618d24abf1dbfd1c4f34cd9fb7f37f5c70b77cfc5e" + }, + "frozen/reviews/c01-wholeword/SOURCE-DEPENDENCIES.json": { + "bytes": 2801, + "sha256": "7258f6729e69ecbcfe22730d18ded622feda3977a122093ca8be64ddc8413589" + }, + "frozen/reviews/c01-wholeword/VALIDATION.json": { + "bytes": 4420, + "sha256": "9eef8187df474a4b4ccdfb0410f92c66ad920a2c23fab2ca9456e032564685d2" + }, + "independent_mst.py": { + "bytes": 24296, + "sha256": "8ef41fafd73ab06bfdc78ec69de0192f658bb94c6e452c3ffe53c5983cb16094" + }, + "price_replay.py": { + "bytes": 4475, + "sha256": "d88ece61765bb04be465ef98fbcd8afb0013ca82b9c3487ad9a62a72d4843877" + }, + "verify.py": { + "bytes": 8010, + "sha256": "cd3cf6493ba50303fd6a90acc084d186d434add5c7d98288b8785f6a9310467d" + } + }, + "limits": [ + "Exact target-only forest class minimum; no joint target/helper optimum.", + "Companion scalar prefix model treats nonscalar events as identity and CLEAR as assignment.", + "Native Clifford phases, reversible erasure, native-child precision, recursive rounding, physical COPY/tape costs and a new kappa result remain unclaimed." + ], + "mathematical_review": { + "MST_normal_and_optimized_complete_receipts_byte_identical": true, + "MST_receipt_decoded_sha256": "cc1712a26558e0f9d832d3f2489c8ed49fa026b5a7618c31e5e61eee75582ab3", + "controls_per_provider": 13, + "disjoint_helper_pairs": 88, + "independently_priced_helper_candidates": 85284, + "live_input_columns_each_provider": 632, + "paid_cancelling_pair_added_component_primitives": 8, + "panel_orientations": [ + "forward", + "inverse", + "dual" + ], + "signed_graph_edges_and_cycle_inequalities": 12544, + "source_head": "3efbb5de06a49ffeea6684482f2d3fe48cdca3fb", + "target_forest_minimum": 13716, + "two_sided_component_price": 10633 + }, + "packaging_refresh": { + "added": [ + ".gitattributes" + ], + "all_scientific_sources_and_receipts_unchanged": true, + "changed": [ + "EVIDENCE-INDEX.md" + ], + "controls_and_math_not_rerun_for_metadata_only_change": true, + "prior_core_sha256": "6b0d8c253039e7f4a7ebb32d2d3e598da328793303f88223cbb4d4c3bc40cc34", + "prior_snapshot_sha256": "22ad402988676765427d39ab2613d10cd77cacfe61aa2097b4e3e5e8a36dff07", + "producer_attribute_rules": [ + "frozen/producers/bw_emit.py -text whitespace=trailing-space,space-before-tab,cr-at-eol", + "frozen/producers/bw_transport.py -text whitespace=trailing-space,space-before-tab,cr-at-eol" + ], + "purpose": "Preserve exact original CRLF producer bytes under repository line-ending normalization, with explicit whitespace diagnostics.", + "removed": [] + }, + "schema_version": 1, + "status": "PASS_C01_REVIEWED_CORE", + "validation": { + "all_frozen_origin_and_protected_tree_inventories_agree": true, + "all_root_documentation_included": true, + "all_storage_and_declared_original_hashes_match": true, + "compressed_original_bindings": [ + "artifacts/INDEPENDENT-FOREST.json.gz", + "artifacts/WHOLE-WORD.json.gz", + "frozen/prior/PR1080-CANONICAL-WORD.json.gz" + ], + "no_symlinks_or_bytecode_artifacts": true, + "owned_source_review_and_receipt_copies_match": true, + "registered_commands": [ + { + "argv": [ + "{python}", + "-I", + "-O", + "-B", + "{package}/verify.py", + "--stage", + "construction" + ], + "checks": "Complete deterministic source-matched forest/helper circuit, full output inventory and typed records, literal Horner prices, exact fixed PR1080 comparison.", + "timeout_seconds": 90 + }, + { + "argv": [ + "{python}", + "-I", + "-O", + "-B", + "{package}/verify.py", + "--stage", + "forest" + ], + "checks": "Independent Fraction graph and basis audit: every signed edge and helper score, class minimum, arbitrary inputs and semantic controls.", + "timeout_seconds": 90 + }, + { + "argv": [ + "{python}", + "-I", + "-O", + "-B", + "{package}/verify.py", + "--stage", + "wholeword" + ], + "checks": "Independent full raw free-warp words, four orientations, complete emitted scalar projection, literal prices and exact prefix/grid witnesses.", + "timeout_seconds": 180 + }, + { + "argv": [ + "{python}", + "-I", + "-B", + "{package}/controls.py", + "--package", + "{package}" + ], + "checks": "Normal/optimized source-byte execution, exact typed receipt coverage, actual semantic defects and check deletion.", + "timeout_seconds": 90 + } + ] + } +} diff --git a/research/staged-compensation-forests/EVIDENCE-INDEX.md b/research/staged-compensation-forests/EVIDENCE-INDEX.md new file mode 100644 index 0000000000..b026207948 --- /dev/null +++ b/research/staged-compensation-forests/EVIDENCE-INDEX.md @@ -0,0 +1,52 @@ +# Evidence and scope + +The package contains one replacement of the PR3605 compensation boundary. +Its comparator, intermediate forest and final two-sided word all use the same +source matrix. The checked final words are in +`artifacts/TWO-SIDED-WORD-{base,extra}.json.gz`. + +| Evidence | What it establishes | +| --- | --- | +| [PROOF.md](PROOF.md) | Arbitrary-dirty basis identity, exact signed-forest class minimum, disjoint-helper construction and paid local comparison | +| [PROOF-NUMERICAL.md](PROOF-NUMERICAL.md) | Full logical words, scalar-projection invoice, exact attained range and reachable-grid statements, with explicit physical exclusions | +| `construct.py`, `artifacts/DESIGN.json` | Complete deterministic edge and helper-choice census, frozen recipe, literal words and actual defect witnesses | +| `independent_mst.py`, `artifacts/INDEPENDENT-FOREST.json.gz` | Separate Fraction arithmetic, graph minimum, helper scores, restored basis and arbitrary-input operators | +| `check_word.py`, `artifacts/WHOLE-WORD.json.gz` | Separate integer-dyadic/free-word interpreter, complete source and candidate words, emitted scalar programs and prefix witnesses | +| `price_replay.py`, `artifacts/PRICES.json` | Literal Horner microcircuits and all four panel prices | +| `compare_prior.py`, `artifacts/PR1080-COMPARISON.json` | One frozen prior-source/recipe comparison; no relabeling search or broader obstruction | +| [REVIEW-DESIGN.md](REVIEW-DESIGN.md) | Separate review of the construction proof | +| [REVIEW-NUMERICAL.md](REVIEW-NUMERICAL.md) | Separate review of the logical and scalar numerical models | +| [REVIEW-VERIFICATION.md](REVIEW-VERIFICATION.md) | Source execution, acceptance controls, completeness and package boundary review | + +The mathematical checkers do not import one another or the builder. They share +the authenticated source words and candidate bytes. The original transport and +emitter retain their own checks; they are producers and inherited evidence, +not another independent verifier. Their executed source bytes are captured, +authenticated and compiled with assertions enabled. + +The 15 compared records comprise all 11 construction outputs, complete price +and prior-comparison records, the independent forest record and the complete +whole-word record. Comparison is typed and covers every JSON field. Gzip +payload equality permits equivalent compression containers for regenerated +outputs; frozen inputs retain exact byte pins. + +`FROZEN-SHA256.json` and `ORIGINS.json` enumerate the immutable inputs and +their provenance. The package attributes preserve the two inherited producer +files' original CRLF bytes through Git; no source text is rewritten. Original research files are retained without edits outside +this package. The two proof copies have only the declared filename-reference +adaptations in `ORIGINS.json`. Historical C01 factory screens are provenance +only and have not been rerun. + +The scientific source remains PR3605 +`3efbb5de06a49ffeea6684482f2d3fe48cdca3fb`. That PR head is not an ancestor of +this publication's base. [SOURCE-HISTORY-ALIASES.json](SOURCE-HISTORY-ALIASES.json) +records byte-for-byte bindings to the retained main copies used by the +repository's source-history gate. Neither the experimental word nor its +scientific pin changes. The prior PR1080 word is authenticated as one exact +member of its pinned source archive. + +Finite exact computation, written all-input arguments, AI review, package CI, +native/physical admission and a formal-kernel proof are separate kinds of +evidence. This package supplies the computations, arguments and AI reviews; +the PR records hosted CI separately. Native/physical admission and formal +kernel evidence are not supplied. diff --git a/research/staged-compensation-forests/FROZEN-SHA256.json b/research/staged-compensation-forests/FROZEN-SHA256.json new file mode 100644 index 0000000000..1db522f87e --- /dev/null +++ b/research/staged-compensation-forests/FROZEN-SHA256.json @@ -0,0 +1,43 @@ +{ + "frozen/inputs/SOURCE-base.json.gz": "735c540b1fe29d0ceeb4d2f304ec941e5f2bd3bc92bafc8cce2b4f9a67a3b653", + "frozen/inputs/HISTORICAL-base.json.gz": "e7bdb1e299a43a8fcbdad4c598b7161e504a94691df3940a9a4eaf638f5013f0", + "frozen/inputs/SOURCE-extra.json.gz": "886338fc32da14f3389a82c8120a1bcf9c5e2f0ec3e9b2d377fdae809e1d977f", + "frozen/inputs/HISTORICAL-extra.json.gz": "e7bdb1e299a43a8fcbdad4c598b7161e504a94691df3940a9a4eaf638f5013f0", + "frozen/notices/CREDITS.md": "1d9d8f56d8899f55878e4cb2c4e052b22506444016a51c2e678773505f5189e6", + "frozen/notices/NOTICE": "c9731c9cca25ede32c2a1b3aef6d5b249973cb2ed5fb2494407bdca598763661", + "frozen/notices/NATIVE-LINEAGE-NOTICE": "ee0c73ca35877aad0e0b6adc560a3881cb82276dba4cf2d4fc58cd19e57cc420", + "frozen/notices/LICENSE": "c71d239df91726fc519c6eb72d318ec65820627232b2f796219e87dcf35d0ab4", + "frozen/history/C01-PROOF.md": "b1529379218f953973a3fd0c450bf795eebe861461a676a09b5268bc8196b8d8", + "frozen/producers/bw_transport.py": "9818e08b819310b40f1441b89be8c4369584a5b3fa5dfe9b86b1df9a7f5d6a76", + "frozen/producers/bw_emit.py": "99b59a6fa3feda86785e4225157dcb1a6169d256cec4f5e0acc9cea7a701df76", + "construct.py": "7d64232bced5cb621ff1a4ee65155b8d48b95620323564721042b4cfcb11bb00", + "price_replay.py": "d88ece61765bb04be465ef98fbcd8afb0013ca82b9c3487ad9a62a72d4843877", + "compare_prior.py": "34b5345c59643fad8875305b8a89417439a31bd2d1bca160199aa25d127d73e1", + "artifacts/TWO-SIDED-COMPENSATION-extra.json.gz": "4119728ab2a3833636a77862bf997b46a50ff7c3c5a874b5d7c675d9577c8546", + "artifacts/FOREST-WORD-base.json.gz": "0f9a6750289ff2ccde92580079254f88fa6546e8f1903f88fb869c4e2fbe32c8", + "artifacts/TWO-SIDED-WORD-extra.json.gz": "0591b5386589c43cd10e9c516477bed5ea55d3fb28ee5eab02399b8750c3735d", + "artifacts/FOREST-COMPENSATION-extra.json.gz": "7a39e3cfe0113743714b1fc38258c36803b20c5f4abeecf977e76ff5da0533e7", + "artifacts/SOURCE-extra.json.gz": "886338fc32da14f3389a82c8120a1bcf9c5e2f0ec3e9b2d377fdae809e1d977f", + "artifacts/SOURCE-base.json.gz": "735c540b1fe29d0ceeb4d2f304ec941e5f2bd3bc92bafc8cce2b4f9a67a3b653", + "artifacts/TWO-SIDED-COMPENSATION-base.json.gz": "4119728ab2a3833636a77862bf997b46a50ff7c3c5a874b5d7c675d9577c8546", + "artifacts/TWO-SIDED-WORD-base.json.gz": "52f37fbd972cf70ca3ec5edcb9a8bdb4e0bcffa06aa7179dcff4c938a4e7265d", + "artifacts/FOREST-COMPENSATION-base.json.gz": "7a39e3cfe0113743714b1fc38258c36803b20c5f4abeecf977e76ff5da0533e7", + "artifacts/FOREST-WORD-extra.json.gz": "30faba0e589c162e5f7478c2c6f4496d8c5664d81693cf2cf1c7290f2a7d4dd4", + "artifacts/HISTORICAL-SHARED-COMPENSATION.json.gz": "e7bdb1e299a43a8fcbdad4c598b7161e504a94691df3940a9a4eaf638f5013f0", + "artifacts/DESIGN.json": "81af0f8d0699d79989ba89fc7de8bb7af047c4ca79b05b413a29428d3160a6e9", + "artifacts/PRICES.json": "801e9f76954d330c6276ca5f681cd1b361df13538824dbee84373f46c16f93d3", + "artifacts/PR1080-COMPARISON.json": "88116932a22a3927bb630fd4ecf3e171663e12e8fd8d0347fa21a840a81482ac", + "check_word.py": "16cdeef8aabed919c066ad5da45450cfc524024814f550b3415368ed098a38c6", + "artifacts/WHOLE-WORD.json.gz": "8f779bd86348e60c06db984652308e6e3fa96d1a2782ea75e69695f7ed4d741f", + "frozen/reviews/c01-design/VALIDATION.json": "daa6902b6bd7c8bbc413cf618d24abf1dbfd1c4f34cd9fb7f37f5c70b77cfc5e", + "frozen/reviews/c01-design/SOURCE-DEPENDENCIES.json": "0b7f7e854d7e756fca595f3144ae07336401c8897fe35226f8bfbcc7e95b2c10", + "frozen/reviews/c01-wholeword/VALIDATION.json": "9eef8187df474a4b4ccdfb0410f92c66ad920a2c23fab2ca9456e032564685d2", + "frozen/reviews/c01-wholeword/SOURCE-DEPENDENCIES.json": "7258f6729e69ecbcfe22730d18ded622feda3977a122093ca8be64ddc8413589", + "PROOF.md": "fcb5a93fec05523ca40de6b16c805a004fda43059837653f8a9644ebdb1b76d6", + "PROOF-NUMERICAL.md": "9842350cb53d68fd613ef511ec65d71b8af1e89c2354c491087880137b1cf6ef", + "REVIEW-DESIGN.md": "d6f72ba8a9b02c39702643de0d00aacb2fddc7ce19783a578be8c0fea549f161", + "frozen/prior/PR1080-CANONICAL-WORD.json.gz": "387a2266ffe006d20042221d967f67a4b18d9bb8de1cd1e01d4031b539fa74a5", + "frozen/prior/PR1080-RECIPE.json": "d526804d9d627cbd850b0e54c3de9aadc74646e1a9b6befb577f42240720750a", + "independent_mst.py": "8ef41fafd73ab06bfdc78ec69de0192f658bb94c6e452c3ffe53c5983cb16094", + "artifacts/INDEPENDENT-FOREST.json.gz": "058a5377582227aa0784d205e49efe59b0d4ba525afc2cb49a608f06bd51924a" +} diff --git a/research/staged-compensation-forests/MST-VALIDATION.json b/research/staged-compensation-forests/MST-VALIDATION.json new file mode 100644 index 0000000000..8e6c46e74c --- /dev/null +++ b/research/staged-compensation-forests/MST-VALIDATION.json @@ -0,0 +1,10 @@ +{ + "checker_sha256": "8ef41fafd73ab06bfdc78ec69de0192f658bb94c6e452c3ffe53c5983cb16094", + "normal_and_optimized_receipt_bytes_identical": true, + "python": "3.12.14 (main, Aug 25 2026, 13:50:33) [Clang 22.1.3 ]", + "receipt_sha256": "cc1712a26558e0f9d832d3f2489c8ed49fa026b5a7618c31e5e61eee75582ab3", + "seconds": 3.1999305830104277, + "source_and_candidate_inputs_were_shared_read_only": true, + "status": "PASS_OPTIMIZED_SPACED_SCRIPT_COMPLETE_RECEIPT_EQUALITY", + "temporary_script_path_contains_spaces": true +} diff --git a/research/staged-compensation-forests/NOTICE.md b/research/staged-compensation-forests/NOTICE.md new file mode 100644 index 0000000000..2b0bd19952 --- /dev/null +++ b/research/staged-compensation-forests/NOTICE.md @@ -0,0 +1,22 @@ +# Attribution and license + +New material: Ross Richardson, with substantial OpenAI Codex assistance. +Apache-2.0, as in [the repository license](frozen/notices/LICENSE). + +The exact staged words are Ross Richardson's PR3605 contribution, based on +dcharb78's PR3133 coupled carrier construction. Retained notices: + +- [PR3133 credits](frozen/notices/CREDITS.md) +- [PR3133 notice](frozen/notices/NOTICE) +- [Native implementation lineage](frozen/notices/NATIVE-LINEAGE-NOTICE) + +That lineage includes Yiyang Lu's staged compensation kernels, Jeremy Kothe's +preload and routing constructions, Marius-Paul Dumitrean's joint construction, +Mason Hale and Tekalign's dirty recovery work, and the earlier factory and +native architecture of icekylinx, DreamingOfClouds and their contributors. +The unmodified transport/emitter retain their own source notices, including +Cinna Davis's anticipatory borrowing changes. + +[RELATED-WORK.md](RELATED-WORK.md) credits the forest and two-sided +factorization methods. Their results and different source matrices are not +silently relabeled as this contribution. diff --git a/research/staged-compensation-forests/ORIGINS.json b/research/staged-compensation-forests/ORIGINS.json new file mode 100644 index 0000000000..fcd0f0f1b8 --- /dev/null +++ b/research/staged-compensation-forests/ORIGINS.json @@ -0,0 +1,244 @@ +{ + "frozen/inputs/SOURCE-base.json.gz": { + "sha256": "735c540b1fe29d0ceeb4d2f304ec941e5f2bd3bc92bafc8cce2b4f9a67a3b653", + "kind": "git", + "commit": "3efbb5de06a49ffeea6684482f2d3fe48cdca3fb", + "path": "research/staged-644-660-width-reduction/STAGED644-660-base.json.gz" + }, + "frozen/inputs/HISTORICAL-base.json.gz": { + "sha256": "e7bdb1e299a43a8fcbdad4c598b7161e504a94691df3940a9a4eaf638f5013f0", + "kind": "preserved-research", + "run": "kappa-3605-successor-20261018T0940Z", + "path": "major-frontier/word-factory/SHARED-COMPENSATION-base.json.gz", + "role": "Superseded rank-basis comparator; replayed as a literal panel." + }, + "frozen/inputs/SOURCE-extra.json.gz": { + "sha256": "886338fc32da14f3389a82c8120a1bcf9c5e2f0ec3e9b2d377fdae809e1d977f", + "kind": "git", + "commit": "3efbb5de06a49ffeea6684482f2d3fe48cdca3fb", + "path": "research/staged-644-660-width-reduction/STAGED644-660-extra.json.gz" + }, + "frozen/inputs/HISTORICAL-extra.json.gz": { + "sha256": "e7bdb1e299a43a8fcbdad4c598b7161e504a94691df3940a9a4eaf638f5013f0", + "kind": "preserved-research", + "run": "kappa-3605-successor-20261018T0940Z", + "path": "major-frontier/word-factory/SHARED-COMPENSATION-extra.json.gz", + "role": "Superseded rank-basis comparator; replayed as a literal panel." + }, + "frozen/notices/CREDITS.md": { + "sha256": "1d9d8f56d8899f55878e4cb2c4e052b22506444016a51c2e678773505f5189e6", + "kind": "git", + "commit": "3efbb5de06a49ffeea6684482f2d3fe48cdca3fb", + "path": "research/rank7-coupled-586-588-carrier-fold/CREDITS.md", + "role": "retained source credit" + }, + "frozen/notices/NOTICE": { + "sha256": "c9731c9cca25ede32c2a1b3aef6d5b249973cb2ed5fb2494407bdca598763661", + "kind": "git", + "commit": "3efbb5de06a49ffeea6684482f2d3fe48cdca3fb", + "path": "research/rank7-coupled-586-588-carrier-fold/NOTICE", + "role": "retained source credit" + }, + "frozen/notices/NATIVE-LINEAGE-NOTICE": { + "sha256": "ee0c73ca35877aad0e0b6adc560a3881cb82276dba4cf2d4fc58cd19e57cc420", + "kind": "git", + "commit": "3efbb5de06a49ffeea6684482f2d3fe48cdca3fb", + "path": "research/t74-native-fast/NATIVE-LINEAGE-NOTICE", + "role": "retained source credit" + }, + "frozen/notices/LICENSE": { + "sha256": "c71d239df91726fc519c6eb72d318ec65820627232b2f796219e87dcf35d0ab4", + "kind": "git", + "commit": "3efbb5de06a49ffeea6684482f2d3fe48cdca3fb", + "path": "LICENSE", + "role": "retained source credit" + }, + "frozen/history/C01-PROOF.md": { + "sha256": "b1529379218f953973a3fd0c450bf795eebe861461a676a09b5268bc8196b8d8", + "kind": "preserved-research", + "run": "kappa-3605-successor-20261018T0940Z", + "path": "major-frontier/word-factory/PROOF.md", + "role": "Unchanged historical scope and findings; factory screens are not re-run here." + }, + "frozen/producers/bw_transport.py": { + "sha256": "9818e08b819310b40f1441b89be8c4369584a5b3fa5dfe9b86b1df9a7f5d6a76", + "kind": "git", + "commit": "3efbb5de06a49ffeea6684482f2d3fe48cdca3fb", + "path": "research/t74-native-fast/vendor/native/new/code/borrow/bw_transport.py", + "role": "Unchanged source transport/emitter. Its checks are producer-lineage evidence." + }, + "frozen/producers/bw_emit.py": { + "sha256": "99b59a6fa3feda86785e4225157dcb1a6169d256cec4f5e0acc9cea7a701df76", + "kind": "git", + "commit": "3efbb5de06a49ffeea6684482f2d3fe48cdca3fb", + "path": "research/t74-native-fast/vendor/native/new/code/borrow/bw_emit.py", + "role": "Unchanged source transport/emitter. Its checks are producer-lineage evidence." + }, + "construct.py": { + "sha256": "7d64232bced5cb621ff1a4ee65155b8d48b95620323564721042b4cfcb11bb00", + "kind": "new-contribution", + "source": "c01-design/design.py" + }, + "price_replay.py": { + "sha256": "d88ece61765bb04be465ef98fbcd8afb0013ca82b9c3487ad9a62a72d4843877", + "kind": "new-contribution", + "source": "c01-design/price_replay.py" + }, + "compare_prior.py": { + "sha256": "34b5345c59643fad8875305b8a89417439a31bd2d1bca160199aa25d127d73e1", + "kind": "new-contribution", + "source": "c01-design/compare_prior.py" + }, + "artifacts/TWO-SIDED-COMPENSATION-extra.json.gz": { + "sha256": "4119728ab2a3833636a77862bf997b46a50ff7c3c5a874b5d7c675d9577c8546", + "kind": "new-contribution", + "source": "c01-design/artifacts/TWO-SIDED-COMPENSATION-extra.json.gz" + }, + "artifacts/FOREST-WORD-base.json.gz": { + "sha256": "0f9a6750289ff2ccde92580079254f88fa6546e8f1903f88fb869c4e2fbe32c8", + "kind": "new-contribution", + "source": "c01-design/artifacts/FOREST-WORD-base.json.gz" + }, + "artifacts/TWO-SIDED-WORD-extra.json.gz": { + "sha256": "0591b5386589c43cd10e9c516477bed5ea55d3fb28ee5eab02399b8750c3735d", + "kind": "new-contribution", + "source": "c01-design/artifacts/TWO-SIDED-WORD-extra.json.gz" + }, + "artifacts/FOREST-COMPENSATION-extra.json.gz": { + "sha256": "7a39e3cfe0113743714b1fc38258c36803b20c5f4abeecf977e76ff5da0533e7", + "kind": "new-contribution", + "source": "c01-design/artifacts/FOREST-COMPENSATION-extra.json.gz" + }, + "artifacts/SOURCE-extra.json.gz": { + "sha256": "886338fc32da14f3389a82c8120a1bcf9c5e2f0ec3e9b2d377fdae809e1d977f", + "kind": "new-contribution", + "source": "c01-design/artifacts/SOURCE-extra.json.gz" + }, + "artifacts/SOURCE-base.json.gz": { + "sha256": "735c540b1fe29d0ceeb4d2f304ec941e5f2bd3bc92bafc8cce2b4f9a67a3b653", + "kind": "new-contribution", + "source": "c01-design/artifacts/SOURCE-base.json.gz" + }, + "artifacts/TWO-SIDED-COMPENSATION-base.json.gz": { + "sha256": "4119728ab2a3833636a77862bf997b46a50ff7c3c5a874b5d7c675d9577c8546", + "kind": "new-contribution", + "source": "c01-design/artifacts/TWO-SIDED-COMPENSATION-base.json.gz" + }, + "artifacts/TWO-SIDED-WORD-base.json.gz": { + "sha256": "52f37fbd972cf70ca3ec5edcb9a8bdb4e0bcffa06aa7179dcff4c938a4e7265d", + "kind": "new-contribution", + "source": "c01-design/artifacts/TWO-SIDED-WORD-base.json.gz" + }, + "artifacts/FOREST-COMPENSATION-base.json.gz": { + "sha256": "7a39e3cfe0113743714b1fc38258c36803b20c5f4abeecf977e76ff5da0533e7", + "kind": "new-contribution", + "source": "c01-design/artifacts/FOREST-COMPENSATION-base.json.gz" + }, + "artifacts/FOREST-WORD-extra.json.gz": { + "sha256": "30faba0e589c162e5f7478c2c6f4496d8c5664d81693cf2cf1c7290f2a7d4dd4", + "kind": "new-contribution", + "source": "c01-design/artifacts/FOREST-WORD-extra.json.gz" + }, + "artifacts/HISTORICAL-SHARED-COMPENSATION.json.gz": { + "sha256": "e7bdb1e299a43a8fcbdad4c598b7161e504a94691df3940a9a4eaf638f5013f0", + "kind": "new-contribution", + "source": "c01-design/artifacts/HISTORICAL-SHARED-COMPENSATION.json.gz" + }, + "artifacts/DESIGN.json": { + "sha256": "81af0f8d0699d79989ba89fc7de8bb7af047c4ca79b05b413a29428d3160a6e9", + "kind": "new-contribution", + "source": "c01-design/artifacts/DESIGN.json" + }, + "artifacts/PRICES.json": { + "sha256": "801e9f76954d330c6276ca5f681cd1b361df13538824dbee84373f46c16f93d3", + "kind": "new-contribution", + "source": "c01-design/PRICES.json" + }, + "artifacts/PR1080-COMPARISON.json": { + "sha256": "88116932a22a3927bb630fd4ecf3e171663e12e8fd8d0347fa21a840a81482ac", + "kind": "new-contribution", + "source": "c01-design/PR1080-COMPARISON.json" + }, + "check_word.py": { + "sha256": "16cdeef8aabed919c066ad5da45450cfc524024814f550b3415368ed098a38c6", + "kind": "new-contribution", + "source": "c01-wholeword/check.py" + }, + "artifacts/WHOLE-WORD.json.gz": { + "sha256": "8f779bd86348e60c06db984652308e6e3fa96d1a2782ea75e69695f7ed4d741f", + "kind": "new-contribution", + "source": "c01-wholeword/CHECKS.json", + "original_sha256": "bd442037a8dc9c2a27f6a1b1e8b1e45e5c934cb7129cee2db2f85d1c20f26ec1" + }, + "frozen/reviews/c01-design/VALIDATION.json": { + "sha256": "daa6902b6bd7c8bbc413cf618d24abf1dbfd1c4f34cd9fb7f37f5c70b77cfc5e", + "kind": "new-contribution", + "source": "c01-design/VALIDATION.json", + "role": "Review-context evidence; registered replay is package-local." + }, + "frozen/reviews/c01-design/SOURCE-DEPENDENCIES.json": { + "sha256": "0b7f7e854d7e756fca595f3144ae07336401c8897fe35226f8bfbcc7e95b2c10", + "kind": "new-contribution", + "source": "c01-design/SOURCE-DEPENDENCIES.json", + "role": "Review-context evidence; registered replay is package-local." + }, + "frozen/reviews/c01-wholeword/VALIDATION.json": { + "sha256": "9eef8187df474a4b4ccdfb0410f92c66ad920a2c23fab2ca9456e032564685d2", + "kind": "new-contribution", + "source": "c01-wholeword/VALIDATION.json", + "role": "Review-context evidence; registered replay is package-local." + }, + "frozen/reviews/c01-wholeword/SOURCE-DEPENDENCIES.json": { + "sha256": "7258f6729e69ecbcfe22730d18ded622feda3977a122093ca8be64ddc8413589", + "kind": "new-contribution", + "source": "c01-wholeword/SOURCE-DEPENDENCIES.json", + "role": "Review-context evidence; registered replay is package-local." + }, + "PROOF.md": { + "sha256": "fcb5a93fec05523ca40de6b16c805a004fda43059837653f8a9644ebdb1b76d6", + "kind": "new-contribution", + "source": "c01-design/PROOF.md", + "source_sha256": "3cbacd11a7d7414e8889a6f559e759e9166d367fb7ec14c8896d381c7365ccf4", + "adaptation": "Document references only: design.py -> construct.py; receipts -> artifacts/." + }, + "PROOF-NUMERICAL.md": { + "sha256": "9842350cb53d68fd613ef511ec65d71b8af1e89c2354c491087880137b1cf6ef", + "kind": "new-contribution", + "source": "c01-wholeword/PROOF.md", + "source_sha256": "4bf4ab27640122985b4d2c9f941003d6e9cbda612b0811735f014585fde0d109", + "adaptation": "Document reference only: check.py -> check_word.py." + }, + "REVIEW-DESIGN.md": { + "sha256": "d6f72ba8a9b02c39702643de0d00aacb2fddc7ce19783a578be8c0fea549f161", + "kind": "new-contribution", + "source": "c01-wholeword/CROSS-REVIEW-DESIGN.md" + }, + "frozen/prior/PR1080-CANONICAL-WORD.json.gz": { + "sha256": "387a2266ffe006d20042221d967f67a4b18d9bb8de1cd1e01d4031b539fa74a5", + "kind": "git-archive-member", + "source": "PR1080 archive", + "commit": "803e080e181229a3af2196b7a13615c9d81ae10d", + "path": "research/community-frontier942-audit/t37-replay.tar.gz", + "archive_sha256": "48285025105210b56a32d3d4d57a21b7591760acc709d38073e4dca339eb06fe", + "member": "native/local/CANONICAL-WORD.json.gz", + "original_sha256": "24db880b7dab31e6af4eec8a1aba1bbbae29cd50d9a7b77cf0e9b571b3e5ae7c" + }, + "frozen/prior/PR1080-RECIPE.json": { + "sha256": "d526804d9d627cbd850b0e54c3de9aadc74646e1a9b6befb577f42240720750a", + "kind": "git", + "source": "PR1080", + "commit": "803e080e181229a3af2196b7a13615c9d81ae10d", + "path": "research/u8-two-sided-biforest-seed35/RECIPE.json" + }, + "independent_mst.py": { + "sha256": "8ef41fafd73ab06bfdc78ec69de0192f658bb94c6e452c3ffe53c5983cb16094", + "kind": "new-contribution", + "source": "c01-verification-review/independent_mst.py" + }, + "artifacts/INDEPENDENT-FOREST.json.gz": { + "sha256": "058a5377582227aa0784d205e49efe59b0d4ba525afc2cb49a608f06bd51924a", + "kind": "new-contribution", + "source": "c01-verification-review/CHECKS.json", + "original_sha256": "cc1712a26558e0f9d832d3f2489c8ed49fa026b5a7618c31e5e61eee75582ab3" + } +} diff --git a/research/staged-compensation-forests/PRIOR-CHECK.json b/research/staged-compensation-forests/PRIOR-CHECK.json new file mode 100644 index 0000000000..cc0313d593 --- /dev/null +++ b/research/staged-compensation-forests/PRIOR-CHECK.json @@ -0,0 +1,59 @@ +{ + "current_active_columns": 207, + "current_source_sha256": "735c540b1fe29d0ceeb4d2f304ec941e5f2bd3bc92bafc8cce2b4f9a67a3b653", + "development_note": "Initial reuse of the current raw-panel reader rejected the prior canonical frame ID 0, as expected. This separate audit explicitly reads prior canonical frame 0 and current raw empty-vector frame; no production checker changed.", + "frozen_prior_target_price_on_current_C": 22548, + "literal_helper_transfer_violations": { + "nonfull_terminal_helpers": [ + 226, + 228, + 230, + 251, + 267, + 299, + 304, + 320, + 331, + 363, + 395, + 412, + 428, + 511, + 531, + 572 + ], + "nonzero_entrance_helpers": [ + 462, + 474, + 476, + 477, + 478, + 480, + 523, + 526, + 527, + 528, + 529, + 531, + 542, + 561 + ], + "unavailable_removed_helpers": [ + 494, + 495, + 507, + 519 + ] + }, + "one_strict_eighth_witness": [ + 113, + 288, + "-1/8" + ], + "prior_active_columns": 216, + "prior_recipe_sha256": "d526804d9d627cbd850b0e54c3de9aadc74646e1a9b6befb577f42240720750a", + "prior_word_decoded_sha256": "24db880b7dab31e6af4eec8a1aba1bbbae29cd50d9a7b77cf0e9b571b3e5ae7c", + "scope": "Signed row/column permutations and this exact raw-register recipe transfer only; no general basis or paid remapping obstruction.", + "status": "PASS_INDEPENDENT_PR1080_FIXED_COMPARISON", + "strict_eighth_witness_count": 96 +} diff --git a/research/staged-compensation-forests/PROOF-NUMERICAL.md b/research/staged-compensation-forests/PROOF-NUMERICAL.md new file mode 100644 index 0000000000..56eba045f3 --- /dev/null +++ b/research/staged-compensation-forests/PROOF-NUMERICAL.md @@ -0,0 +1,196 @@ +# Exact finite scalar and prefix consequences of the C01 replacement + +This note concerns the two immutable PR3605 words at head +`3efbb5de06a49ffeea6684482f2d3fe48cdca3fb`. It checks the replacement produced in +the companion design package. It does not establish a new recursive bound, +physical Clifford implementation, or rounded native supplier. + +## Models and input domains + +The raw word has 704 historical register names, of which 72 are removed +identities. Every one of the remaining 632 logical inputs is an arbitrary +independent element. These comprise 112 sources, 112 targets and 408 helpers. +The 91 separate cleanup buffers enter at zero and must return exactly to zero. +The formal warp letters are independent invertible noncommuting operators. + +For the full raw word, `check_word.py` checks all coefficients in the dyadic free +warp algebra. Its integer rows use a common power-of-two denominator and +canonical signed integer coefficients. A warp left-multiplies each formal +word and cancels only an adjacent inverse pair. No numerical specialization of +the warp letters is used for this endpoint check. + +The inverse-transpose replay transposes and negates each ADD and inverts each +SCALE. Each dual warp letter represents `K^-T`, an independent free generator +in that orientation. Identifying it with `conjugate(K)` additionally uses the +inherited unit-modulus monomial premise; arbitrary invertibility alone is not +that premise. This is a separate interpretation of the same free-generator +names. The literal reverse inverse is also checked in each +orientation by reversing the entire chronological list and inverting every +gate. The two orientations and their inverses each cover all 632 arbitrary +input columns and all 91 required-zero buffer outputs. + +A second, explicitly weaker model is the **complete scalar projection** of the +emitted local programs. Every scalar macro is expanded by binary Horner into +ADD, DOUBLE, HALVE, NEGATE, COPY and CLEAR operations. All nonscalar native +events act as the identity in this projection. CLEAR is the assignment of zero, +with unit cost; it is not being proved to be reversible physical erasure. +Logical inputs remain arbitrary, while the eight center registers, 91 cleanup +buffers and one coefficient work register start at zero. Exact symbolic rows +are maintained through every primitive, including every internal Horner step. + +## Panel identity and availability + +Write the original frame-zero compensation as + + (y,h) -> (y+C h,h). + +The proposed target forest is an invertible unit shear product `T`, and the +helper preparation is a product `H` of 88 disjoint signed unit shears. The +literal chronological panel is + + T; H; +(T C H^-1) h; H^-1; T^-1. + +At the correction cut the stored helper vector is `H h`. Consequently + + T^-1 [T y + (T C H^-1)(H h)] = y + C h. + +Restoring `H` returns every arbitrary helper value. Neither preparation uses a +clean helper. The identity holds over every module over the dyadic rationals. +Its inverse subtracts `C h`; its inverse transpose adds `-C^T y` into the helper +bank. The finite check independently replays all four interfaces. + +There are 207 helper coordinates used in the panel. All are live and absent +from both `start_extra` and `helper_final` of the pinned source words. The +pinned transport's definition therefore gives each entrance frame zero and +exit frame FULL. Both preparation and restoration occur in the existing +frame-zero compensation phase, before the native entry adapters. + +The independent checker verifies that every field of the full word other than +`compensation` is unchanged. It also binds the raw panel to its compact +canonical register numbering and to every emitted zero-frame event. The +entire event suffix starting at entry adapters, and the entire nonscalar event +stream, are byte-semantically unchanged. This preserves their existing charges; +it does not price them at zero. + +## Complete scalar invoice + +For a reduced nonzero dyadic coefficient `a/2^d`, the literal binary-Horner +expansion costs + + p(a/2^d) = 3 + floor(log2(abs(a))) + popcount(abs(a)) + d + +per real component. The three fixed operations are the initial work clear, +target addition and final work clear. Every numerator doubling, numerator +addition and denominator halving is included. + +The following panel counts are the same for the base and extra providers and +in both orientations: + +| Part | ADD macros | Primitives per real component | +| --- | ---: | ---: | +| Target preparation | 95 | 380 | +| Helper preparation | 88 | 352 | +| Residual correction | 1922 | 9169 | +| Helper restoration | 88 | 352 | +| Target restoration | 95 | 380 | +| Candidate total | 2288 | 10633 | +| Original panel | 5736 | 31214 | +| Historical C01 rank-basis panel | 3214 | 17334 | + +The historical rank-basis panel is authenticated and freshly replayed on all +632 input columns in all four orientations. Its old receipt is not used as an +acceptance oracle. + +The complete emitted scalar programs, including their unchanged scalar +suffixes, have the following literal prices: + +| Orientation | Original | Candidate | Saving | +| --- | ---: | ---: | ---: | +| Forward, per real component | 79072 | 58491 | 20581 | +| Inverse transpose, per real component | 79096 | 58515 | 20581 | +| Forward, two real components | 158144 | 116982 | 41162 | +| Inverse transpose, two real components | 158192 | 117030 | 41162 | + +There are 17449 original scalar macros and 14001 candidate macros in either +emitted orientation. All native event charges, the recursive child histogram, +helper identities, helper widths, private buffers and source-wrapper charges +are retained. This finite scalar saving supplies no change in a recursive +rank moment or exponent. + +## Exact scalar-prefix and grid consequences + +For the scalar projection, let `A_j` be the matrix taking the 632 initial +logical inputs to all logical and private registers after primitive `j`. +Private initial values are zero. The checker computes every row of every +`A_j` exactly, without rounding. Define + + M = max_j max_r sum_i abs((A_j)[r,i]). + +The maximum is attained: the receipt includes an exact maximizing row, and +choosing each input's sign to match that row attains the row sum on the unit +input cube. These are exact scalar-projection range bounds, not physical +native-prefix norms. + +| Orientation | Original M | Candidate M | Original/candidate extra grid bits D | +| --- | ---: | ---: | ---: | +| Forward | 302 | 302 | 4 / 4 | +| Inverse transpose | 169 | 181 | 5 / 5 | + +The dual range bound becomes worse. It remains below 256 in both cases. +The forward bound remains below 512. For inputs bounded by `B` in absolute +value, all projected scalar registers are bounded by `M B`. + +For any integer `g`, if all logical inputs lie on the grid `2^-g Z`, the +checked primitive prefixes lie on `2^-(g+D) Z`. This follows by writing the +computed matrix rows as integer numerators divided by `2^D`. The receipt +includes a primitive, register and input coefficient having an odd numerator +at the stated maximum denominator. Applying the corresponding basis input +`2^-g e_i` therefore needs exactly `D` extra fractional bits at that prefix. +One fewer extra bit cannot represent that input's exact intermediate value. +Thus `D` is both sufficient and necessary for exact common-grid representation +of this finite scalar projection over the unrestricted common-grid input +domain. It is not a minimum physical guard count for a native supplier. + +On a fixed-point implementation of precisely this scalar projection, with +the stated exact input lattice and sufficient range, those grid bits make +every listed primitive exact. No rounding tie rule is exercised. This +conditional statement concerns the listed assignment/COPY primitives as +well; it does not establish an implementation of their physical contracts. + +The checker separately propagates a cancellation-free positive envelope from +unit bounds on logical inputs and zero bounds on private inputs. It applies +the absolute coefficient to every source contribution and resets the envelope +on each CLEAR assignment. Its largest values are: + +| Orientation | Original positive envelope | Candidate positive envelope | +| --- | --- | --- | +| Forward | 202390250292205836324211411723 / 512 | 277593730512244114269209832351 / 512 | +| Inverse transpose | 4091250694836343058381993950001 / 128 | 18499730109946033497554374971719 / 128 | + +The least integer `b` giving a strict bound by `2^b` is 89 in both forward +cases and changes from 95 to 97 in the inverse transpose. These envelopes are +conservative; they are not the exact attained ranges `M`, a physical storage +invoice, or a local-defect/error-feedback theorem. + +## Defect sensitivity and limits + +Sixteen semantic panel controls per provider must fail after exact arithmetic: +omitted target preparation, omitted helper preparation, omitted helper +restoration, omitted target restoration, stale original correction instead of +the current pullback, a final literal sign error, and wrong target restoration +order in both orientations; plus failure to reverse the literal inverse and a +wrong dual sign. Every rejection has a concrete differing output row in the +receipt. These are mathematical failures rather than authentication failures. + +The scalar replay observes nonzero linear forms at thousands of charged CLEAR +assignments, including eight final center clears. It records their counts +instead of treating those assignments as a strict-zero physical cleanup proof. +The 91 separate zero buffers do return to zero by literal exact computation +before their free events. + +The results comprise finite exact symbolic computations, together with written +linearity and grid arguments covering every input in the stated domains. +No formal proof assistant or kernel certificate is supplied. The result does +not establish a globally optimal two-sided factorization, all-size native +precision, physical Clifford phases, rounded strict-zero cleanup, recursive +source access, complete tape costs, or a new multiplication exponent. diff --git a/research/staged-compensation-forests/PROOF.md b/research/staged-compensation-forests/PROOF.md new file mode 100644 index 0000000000..f2943c76d0 --- /dev/null +++ b/research/staged-compensation-forests/PROOF.md @@ -0,0 +1,269 @@ +# A same-matrix forest and restored helper-basis replacement for C01 + +This is a finite exact compensation construction for the two PR3605 providers +at `3efbb5de06a49ffeea6684482f2d3fe48cdca3fb`. It replaces only their +`compensation` fields. The original 5,736 additions cost 31,214 cleared-work +primitives per real component. A signed target forest costs 13,716, the exact +minimum in the specified target-only forest class. Adding 88 disjoint signed +helper changes produces 2,288 additions at cost **10,633 per real component**. +This strictly improves the preserved C01 rank-basis proposal on this same +matrix, whose 3,214 additions cost 17,334. No recursive cost or kappa changes. + +The forest and two-sided mechanisms are established prior methods. The result +here is their exact source-specific application, complete same-matrix price, +literal restored word, and independently reviewable source bindings. Published +prices for different CK, X4 and U8 matrices are not comparators for this C. + +## Exact source and arbitrary-input contract + +The original compressed blobs are +`research/staged-644-660-width-reduction/STAGED644-660-{base,extra}.json.gz` at +the PR3605 head above. Their SHA256 values are respectively +`735c540b1fe29d0ceeb4d2f304ec941e5f2bd3bc92bafc8cce2b4f9a67a3b653` and +`886338fc32da14f3389a82c8120a1bcf9c5e2f0ec3e9b2d377fdae809e1d977f`. +Their exact compensation matrices agree. Each has 112 target rows, 207 +nonzero helper columns, and coefficients in one eighth of the integers. + +Let y be the actual target registers 112 through 223. Let h be the 207 active +helper coordinates, in their actual raw register identities. Both y and h are +arbitrary and independent on entrance. All remaining live coordinates are +arbitrary spectators. The required local map is + + (y,h) -> (y+C h,h). + +The full source word has 632 arbitrary live inputs and 91 private cleanup +buffers with the inherited zero entrance/exit contract. The compensation +replacement never touches a private cleanup buffer. It uses no new helper, +copy, source query, native warp or recursive child. No helper starts clean by +assumption. + +Every active helper is absent from both `start_extra` and `helper_final`. +This is not inferred just from the old compensation's reads. At the source pin, +`bw_transport.py` lines 158-167 give ordinary helpers default start frame zero +and final frame FULL, overridden precisely by those two dictionaries. Lines +339-348 enforce zero frame for compensation. `bw_emit.py` lines 72-83 execute +compensation before entry adapters and identify wrapped helpers using nonzero +entrance or nonFULL terminal frames. Consequently all chosen helper shears +operate on available, unwrapped frame-zero coordinates. Targets also have +zero entrance at this interface. The 207 helper identities and every selected +pair are recorded in `artifacts/DESIGN.json`. + +These source-code conditions establish the local frame premise. This work does +not claim that a fresh complete native emitter/phase run has been performed. +Native admission remains a dependent obligation. The separate whole-word +reviewer supplies a companion scalar, primitive-price and numerical audit; +its source bindings and exact covered domains must accompany any integrated claim. + +## Signed target forest and its exact class minimum + +For a rooted signed target forest, each nonroot t has one parent p(t) and +sign s_t in {-1,1}. Define + + (T y)_t = y_t - s_t y_p(t), + +with unchanged roots. Prepare these unit shears deepest-first, preserving the +original parent row until every child has read it. Restore by reversing the +preparation list and negating each coefficient. The resulting matrix T is +unit triangular in a depth ordering and invertible over the dyadic rationals. +At the prepared cut the correct residual is D=T C, with rows +`D_t=C_t-s_t C_p(t)`. These are immutable original rows of C, not a sequentially +updated parent row. Omitting preparation or reversing its chronological order +is rejected by actual arbitrary-input operator checks. + +For a reduced nonzero coefficient q=a/2^d, define + + p(q)=3+floor(log2(abs(a)))+popcount(abs(a))+d; p(0)=0. + +This counts one initial work clear, binary Horner source accumulations and +doublings, d halvings, one signed target accumulation and one final clear. +The coefficient work may enter arbitrarily and is erased by the two charged +clears. Real and imaginary components execute the same real-coefficient word +and are charged separately. A unit shear has component cost four, hence a +prepared/restored forest edge costs eight. + +Put `P(r)=sum_j p(r_j)`. Add one superroot *. The graph has a root edge +`(*,t)` of price P(C_t) and two signed edges between every unordered pair t,u, +with price `8+P(C_t-s C_u)`. The sign-symmetric tariff makes the latter prices +independent of the edge's eventual orientation, since +`C_u-s C_t=-s(C_t-s C_u)`. + +Every target forest extends to a spanning tree by joining its roots to *. +Conversely, deleting * from a spanning tree gives components each with exactly +one former neighbor of *, providing their roots. This is a bijection preserving +the complete residual-plus-two-adapter cost. Thus a minimum spanning tree +solves exactly the single-parent signed-unit target-forest problem. + +The complete graph has `112+2*binom(112,2)=12,544` edges. The deterministic +Kruskal construction orders by price, then actual endpoint identities and sign. +It attains 17 roots and 95 forest edges, with maximum target edge depth 15. +All 12,544 cycle inequalities are checked: each graph edge costs at least the +largest selected edge on its unique tree path. This is a certificate of the +spanning-tree minimum by the usual cycle-exchange argument. A separate Prim +traversal of the complete priced graph yields the identical 13,716 price. That +Prim traversal shares the complete edge price list; it is an algorithmic +cross-check, not a second arithmetic implementation. + +The claimed optimum is only for these signed-unit single-parent target forests +with independent coefficient lowering. It excludes multiple parents, general +dyadic target shears, helper transformations, shared coefficient work, +alternative lowerings and surrounding-boundary folding. In particular it is +not a lower bound for the subsequent two-sided construction. + +## Disjoint helper construction on the transformed matrix + +For each chosen ordered pair (a,b) with sign s, prepare `h_a += s h_b`. Every +helper occurs in at most one of the 88 selected pairs. Therefore their unit +shears commute, square-zero cross-terms vanish, and their product H has inverse +obtained by negating the signs. The correction matrix must be + + E = T C H^-1. + +For one pair its only changed column is `E_b=D_b-s D_a`. All pair prices are +computed from D=T C, rather than the original C. The complete signed pair +saving is + + sum_t [p(D_tb)-p(D_tb-s D_ta)] - 8. + +There are exactly `207*206*2=85,284` ordered/sign candidates; 951 have positive +complete savings. Sort by decreasing saving, then actual (a,b,s). One greedy +pass accepts a candidate exactly when neither helper has been used. This +selects 88 disjoint pairs with total saving 3,083 per real component. Disjointness +makes the savings additive because each chosen pair changes a distinct column +and no pair changes another pair's donor column. + +This is a fully specified construction, not a maximum-weight matching claim, +not a joint target/helper optimum, and not an alternating search. No wider +search was performed after finding this useful bounded candidate. + +The complete chronological word is + + y <- T y + h <- H h + y <- y + E h + h <- H^-1 h + y <- T^-1 y. + +For arbitrary y and h it returns +`T^-1(T y+T C H^-1 H h)=y+C h`, with h literally restored. Thus the original +panel and replacement are equal before any surrounding noncommuting native +operator is composed. Every other field of both complete source words remains +identical as a JSON value. No commutation of surrounding warp letters is used. + +The literal inverse reverses every gate and negates every ADD coefficient, +therefore implements `(y,h)->(y-C h,h)`. For a logical ADD gate +`A=I+q e_t e_s^T`, its inverse transpose is `A^-T=I-q e_s e_t^T`. +Apply these dual gates in the same chronological order. This yields the panel +`(y,h)->(y,h-C^T y)`. The helpers change at that dual panel boundary; their +whole-program endpoint obligation cannot be inferred from the forward panel's +unchanged-helper statement. Logical gates are dualized before primitive +lowering. Destructive work clears are not asserted to be invertible. + +## Complete same-matrix price + +| Compensation | Target basis ADDs, both ways | Helper basis ADDs, both ways | Residual ADDs | Total ADDs | Primitives per real component | +| --- | ---: | ---: | ---: | ---: | ---: | +| Original C | 0 | 0 | 5736 | 5736 | 31214 | +| Preserved rank basis | 112 | 0 | 3102 | 3214 | 17334 | +| Signed target forest | 190 | 0 | 2644 | 2834 | 13716 | +| Forest plus disjoint helpers | 190 | 176 | 1922 | 2288 | 10633 | + +The new residual costs 9,169 per component, the target preparation/restoration +760, and the helper preparation/restoration 704, totaling 10,633. Thus the +complete finite compensation saving is 3,448 logical ADDs and +`2*(31214-10633)=41,162` real primitives. It saves 13,402 real primitives over +the preserved rank basis and 6,166 beyond the same-C target-forest floor. +The logical ADD count and coefficient-dependent primitive bill are different +quantities; the latter includes every basis gate and every coefficient read. + +`price_replay.py` independently emits and executes the actual binary-Horner +microcircuit for all 21 coefficients used across the four panels. It checks +arbitrary source, target and private-work inputs and the required zero work +output. It obtains all four prices by summing literal primitive-list lengths, +without invoking the designer's tariff function. Its receipt is `artifacts/PRICES.json`. +The historical rank-basis panel's decompressed SHA256 is +`9f242abd5d2ed46a2e95dad46449d1d77c6fec330b5e0db6b324ac93fe756e62`. + +The inherited recursive histogram remains +`{1:2439,2:726,3:224,4:102,5:20,8:8}` and helper-width inventory remains +`{4:26,5:2,6:18,7:52,8:97,9:213}`. The replacement adds no recursive child, +non-scalar event or helper role. This finite scalar change does not improve +the recursive moment. + +## Comparison with the broader PR1080 method + +PR1080 at `803e080e181229a3af2196b7a13615c9d81ae10d` already supplies signed +helper forests and alternating two-sided MST refinement for historical U8. +Its baseline is a different 112-by-216 matrix with 6,320 nonzeros, quarter-grid +coefficients and cost 34,728. The exact canonical source was extracted from its +pinned archive and checked against decompressed SHA256 +`24db880b7dab31e6af4eec8a1aba1bbbae29cd50d9a7b77cf0e9b571b3e5ae7c`. +The present matrix has 207 active columns and genuine eighth-grid coefficients, +so signed row/column permutations cannot identify the two matrices. + +One fixed recipe-transfer check was performed, without an optimization search. +Its final frozen target forest, applied to the current C, costs **22,548** per +component. A literal register-ID transfer of the helper forest touches four +currently removed helpers (494,495,507,519), 14 helpers with nonzero entrances, +and 16 with nonFULL terminals. It is therefore not an admitted free-wrapper +substitution under the current source contract. The full offending sets and +actual eighth-grid witnesses are in `artifacts/PR1080-COMPARISON.json`. Historical +canonical numbering is not a supplied physical-role correspondence to the +current raw register identities: a paid remapping or other correspondence +would be a new obligation. No general change-of-basis equivalence obstruction +is claimed. The prior 7,930 U8 price is not a bound or candidate price for C01. + +This comparison credits the stronger preexisting mechanism rather than claiming +novelty for two-sided factorization. Applying its broader alternating class to +this new C remains outside the present bounded construction. + +## Executed exact domain and unresolved obligations + +`construct.py` checks original versus each candidate on every one of the 632 live +input columns, under forward, literal inverse and inverse-transpose operators, +in both source providers. All complete words preserve non-compensation JSON +fields. Nine actual operator mutations each fail in all three orientations: +omitted target preparation/restoration; wrong target preparation order; +omitted helper preparation/restoration; helper-preparation sign; residual sign; +target-restoration sign; and stale original-C injection. Each rejection has a +specific differing row/column coefficient. The omitted-target-preparation +control also passes the 520-column projection omitting arbitrary target inputs, +showing why that incomplete projection would be insufficient. + +The design and price checks concern exact rational scalar maps. Complete +supplier numerical prefixes are handled by the separately bound companion +audit. Rounded precision, source/tape access and finite native-phase admission +remain separate dependent obligations. Component +endpoint equality and fewer operations alone prove no bound on intermediate +magnitude or denominator growth. Neither the historical 192-bit allowance nor +an old whole-word prefix receipt is transferred automatically. This note does +not claim an all-size compiler, physical supplier, new owner allocation, +analytic transfer, full multiplication theorem, selected-frontier change, or +formal-kernel proof. + +## Sources and credit + +The actual source is dcharb78's PR3133 lineage and Ross Richardson's PR3605; +the preserved C01 rank-basis proposal is only the same-matrix comparator. +Credit Oscar Fennell PR759 for the forest/superroot method, Sricharan Vagvala +PR749 for rational target pairs and PR967 for bit helper stars, @dd-hemant PR816 +for signed rational forests, David Awad PR807 for helper-basis factoring, Ross +Richardson PR917 and PR932 for exact two-sided and X4 forest applications, and +Stephan Arrington (@steph4n-gh), with the disclosed Google DeepMind Antigravity +assistance, in PR1080 for arbitrary-depth helper forests and alternating refinement. +PR961's target-only dyadic forest analysis concerns its own historical input. +The inherited Gauge44, native, cold-helper, source-recovery, compiler and +precision attributions remain those of the pinned source packages. No code or +numeric saving from a different matrix is treated as interchangeable evidence. + +Prepared with substantial OpenAI Codex assistance. Separate AI mathematical +review is not independent human review. New material is Apache-2.0 under the +repository license. Exact source and output hashes accompany this proof. + +## Open next questions + +A fresh native compilation is needed for an integrated native supplier claim. +The separate whole-supplier scalar/numerical replay must be bound to these +exact replacement bytes. A larger signed helper-forest or +nonunit alphabet could further improve this matrix, but its paid restoration, +precision and source contracts must be recomputed. The present result provides +one useful fully restored candidate without claiming those broader optima. diff --git a/research/staged-compensation-forests/README.md b/research/staged-compensation-forests/README.md new file mode 100644 index 0000000000..6450dcbed9 --- /dev/null +++ b/research/staged-compensation-forests/README.md @@ -0,0 +1,129 @@ +# Restored compensation forests for the staged 644/660 words + +This finite construction replaces the frame-zero compensation in the two +PR3605 words. It reduces **5,736 additions to 2,288**, including preparation +and restoration of both the target and helper bases. Under the stated +cleared-work binary-Horner price, the saving is **41,162 real-component +primitives per orientation**. Every arbitrary target and helper input is +included. + +| Compensation on the same source matrix | Additions | Primitives per real component | +| --- | ---: | ---: | +| Original PR3605 | 5,736 | 31,214 | +| Earlier unpublished rank-basis construction | 3,214 | 17,334 | +| Signed-unit target forest | 2,834 | 13,716 | +| Target forest with disjoint helper pairs | 2,288 | 10,633 | + +The target forest has 17 roots and 95 signed edges. Its fully paid cost is +minimal within the single-parent signed-unit target-forest class on this +matrix. The second step selects 88 disjoint helper pairs from one fully +specified sorted greedy pass. **The two-sided circuit has no claimed global +or matching optimality.** The 1,922 remaining injections, 95 target preparations, +88 helper preparations, and both sets of restorations are all charged. + +The construction uses established forest and two-sided basis methods. Its +contribution is the explicit circuit for these exact staged words, the +comparison with the superseded unpublished circuit, and the accompanying +source-bound checks. [RELATED-WORK.md](RELATED-WORK.md) separates the input +matrices and prior recipes. + +## Exact interface + +Let `y` be the 112 arbitrary targets and `h` the arbitrary helper coordinates +at the compensation boundary. The source response is `(y,h) -> (y+C h,h)`. +Prepare the signed target forest `T` deepest-first, prepare the disjoint helper +shears `H`, inject `T C H^-1`, restore `H`, and restore `T`. The endpoint is +exactly the original response over the dyadic rationals. The helpers are +temporarily changed and then restored. + +All 207 active helper columns have the required zero-frame entrance and FULL +terminal frame in the pinned word. No removed register, private zero buffer, +wrapped entrance or early-ended helper is used as a new donor. Only the +compensation field changes. Sources, centers, warps, helper roles, ordered +widths, cleanup and the paid recursive profile are retained. + +The literal inverse reverses and negates the additions. The same-chronology +inverse transpose swaps source and target and negates each coefficient. Its +compensation endpoint changes helpers by `-C^T y`; unchanged-helper language +applies to the forward boundary. + +## Complete scalar comparison + +The independent logical-word replay retains ordered formal warp letters and +checks 632 arbitrary live inputs and 91 initially zero private buffers in +both orientations and their literal reverse inverses. A separate replay lowers +both emitted programs to scalar primitives. In that projection, nonscalar +events act as identity and CLEAR is a zero assignment. The original transport +and emitter produce these streams; they are not counted as a second +independent mathematical implementation. + +| Complete scalar-program quantity, per provider | Original | New | +| --- | ---: | ---: | +| Forward primitives per real component | 79,072 | 58,491 | +| Backward primitives per real component | 79,096 | 58,515 | +| Forward maximum exact coefficient row sum | 302 | 302 | +| Backward maximum exact coefficient row sum | 169 | 181 | +| Forward positive-envelope bits | 89 | 89 | +| Backward positive-envelope bits | 95 | 97 | + +Both conservative positive envelopes increase; the forward bit ceiling stays +at 89, while the backward ceiling rises to 97. The backward exact row sum also +increases. The earlier supplier's precision allowance is not reused. Exact prefix denominator +depths remain 4 forward and 5 backward. These are finite scalar/free-warp +calculations, not native phase or rounding certificates. + +## Reproduce + +With CPython 3.12 and its standard library, from the repository root: + +```sh +python3 -I -B scripts/research_package.py --package research/staged-compensation-forests +``` + +The registered commands authenticate the frozen inputs, regenerate the circuit +and its complete records, check the independent mathematical receipts, and +exercise acceptance controls. Generated output goes to temporary directories. +The package also works from a Git-free source export. The source transport and +emitter run with their assertions enabled. + +## Scope and limits + +The recursive profile remains +`{1:2439,2:726,3:224,4:102,5:20,8:8}`. The 408 helper roles, 91 private cleanup +buffers and ordered helper-width inventory are unchanged. Consequently this +scalar substitution gives **no improved recursive moment or kappa**. + +All coefficient work uses the declared component price +`p(a/2^d)=3+floor(log2|a|)+popcount(|a|)+d` for reduced nonzero dyadics, +with `p(0)=0`. This is a specified finite lowering model, not a measured runtime +claim. Scalar projection checks do not establish native phases, physical +strict-zero erasures, rounded cleanup, hosted owner allocations or an all-size +supplier. No existing whole-supplier precision allowance is admitted by this +package. + +The historical C01 factory and cold-tail screens are retained as provenance +in [the original note](frozen/history/C01-PROOF.md). They are not rerun or +promoted to new claims here. + +## Open next questions + +1. Can this exact compensation be admitted into a complete hosted native + supplier with its actual rounding, source-access and physical cleanup + costs? Start from the frozen two-sided words and regenerate that full + invoice and precision argument. +2. Can a different local contract improve the paid recursive profile? + Further scalar savings alone do not resolve that obligation. A new claim + must name the changed frame or child call and include all restoration. + +## Sources and credit + +PR3605 is pinned at `3efbb5de06a49ffeea6684482f2d3fe48cdca3fb`. +Its PR3133 word lineage, Jeremy Kothe's routing/preload work, Yiyang Lu's +compensation work and the retained native implementation notices remain +credited in [NOTICE.md](NOTICE.md). Forest and two-sided predecessors are +credited separately in [RELATED-WORK.md](RELATED-WORK.md). + +Prepared by Ross Richardson with substantial OpenAI Codex assistance in +construction, mathematical checking, verification and publication. Separate +AI contexts are not independent human review or formal-kernel evidence. +Apache-2.0. diff --git a/research/staged-compensation-forests/RELATED-WORK.md b/research/staged-compensation-forests/RELATED-WORK.md new file mode 100644 index 0000000000..b4afe5dd5c --- /dev/null +++ b/research/staged-compensation-forests/RELATED-WORK.md @@ -0,0 +1,37 @@ +# Related work and comparison boundary + +Restored target bases, signed forests and two-sided bases are prior methods. +The identity `T^-1(Ty + T C H^-1 Hh) = y+Ch` is not new. + +- Oscar Fennell's rooted target forests, Sricharan Vagvala's JP8 target + factorization, and the target-pair work of Scott Woolsey Biggart, Sagar + Thakrar, Dugongue, @dd-hemant and ToikY establish the relevant lineage. +- PR816 gives signed CK target forests and their exact class floor. +- David Awad's PR807 and Ross Richardson's + [PR917](https://github.com/CrocSwap/integer-mult-bounds/pull/917) + apply disjoint helper bases around target factorizations. PR917 is pinned + at `085c32a25e2a09b029fa816195b97fa93d6f0788`. +- PR967 allows depth-one helper stars. + [PR1080](https://github.com/CrocSwap/integer-mult-bounds/pull/1080), + pinned at `803e080e181229a3af2196b7a13615c9d81ae10d`, supplies a broader + two-sided signed bi-forest alphabet with arbitrary depth. + +Those numerical savings concern other matrices. This package compares all +four displayed costs on the exact PR3605 compensation matrix. In particular, +PR1080 has 216 active helpers and a quarter-grid matrix; this source has 207 +active helpers and nonzero eighth-grid coefficients. Its frozen literal +register recipe also refers to removed or differently wrapped helpers in the +staged word. A paid port or role remapping would be a separate construction. +The restricted 88-pair result does not exclude bi-forests or any other wider +alphabet. + +The historical unpublished C01 panel is supplied as an exact comparator, +not a new claim for basis-factorization priority. Its finite benefit is +superseded by the new circuit. The earlier source-factory failure screens +answer different questions and are not expanded here. + +Live overlap checks on 2026-10-20 searched paginated open and closed PR titles +and bodies, Discussions, and 5,234 local records. The snapshot reached +312 open PRs, 3,540 closed PRs and 2,707 Discussions, with individual fetches +between 12:45 and 12:47 UTC. These searches identify leads; they do not prove +novelty or inspect every code diff. diff --git a/research/staged-compensation-forests/REVIEW-DESIGN.md b/research/staged-compensation-forests/REVIEW-DESIGN.md new file mode 100644 index 0000000000..ee9fc797a7 --- /dev/null +++ b/research/staged-compensation-forests/REVIEW-DESIGN.md @@ -0,0 +1,45 @@ +# Mathematical cross-review of the companion C01 design + +PASS within the stated finite, exact scalar compensation model. Reviewed +`c01-design/PROOF.md` (SHA256 `3cbacd11a7d7414e8889a6f559e759e9166d367fb7ec14c8896d381c7365ccf4`) and the constructor +`c01-design/design.py` (SHA256 `7d64232bced5cb621ff1a4ee65155b8d48b95620323564721042b4cfcb11bb00`). The independent whole-word +checker in this directory does not import that constructor. + +The target preparation order is correct: deepest-first updates read each +original parent before that parent changes. Its residual is exactly `T C`. +For each helper preparation `h_a += s h_b`, right multiplication by `H^-1` +changes column b to `D_b - s D_a`. Pairwise disjointness prevents cross terms +and makes the claimed selected-pair savings additive. Restoring H and then T +therefore returns every arbitrary helper and target dirt term correctly. This +is freshly checked on all 632 logical input columns in both providers, with +forward, inverse-transpose and both literal reverse inverses. In particular, +the dual panel changes helpers by `-C^T y`; the proof correctly avoids claiming +they remain fixed at that local dual boundary. + +The source-availability premise is sufficient for this changed choice. The +207 used helpers are live and absent from both source override dictionaries; +the authenticated transport gives precisely those helpers zero entrance and +FULL exit frames. The emitted prefix binds each raw register to its compact +identity and executes all helper preparation/restoration before entry adapters. +The entire suffix and every nonscalar event are unchanged. This is a checked +local availability and scalar-emission statement, not a fresh physical phase +proof or a new native supplier contract. + +The target-forest optimum is correctly restricted to one signed unit parent +per nonroot, with the stated independent coefficient tariff. The superroot +bijection and sign symmetry make its total bill exactly a spanning-tree bill; +the complete all-edge cycle certificate is the appropriate minimum criterion. +The Prim calculation is correctly described as sharing the edge prices. The +88-pair selection is explicitly greedy and not claimed globally optimal. My +arithmetic replay independently confirms the final panel price 10633 per +component and the historical same-matrix rank-basis price 17334; it does not +supply an independent second enumeration of all forest or helper candidates. + +The finite primitive reduction is useful, but its numerical tradeoff must +accompany the integrated claim: the exact scalar dual prefix row bound rises +from 169 to 181 and its positive-envelope strict power-of-two allowance rises +from 95 to 97 bits. Forward positive envelope also grows, while its 89-bit +allowance and exact range bound 302 remain unchanged. Exact scalar projection +grid depths stay four and five in the two orientations. CLEAR remains a +charged assignment in this model. No rounded physical cleanup, formal-kernel +proof, all-size implementation or new kappa follows. diff --git a/research/staged-compensation-forests/REVIEW-NUMERICAL.md b/research/staged-compensation-forests/REVIEW-NUMERICAL.md new file mode 100644 index 0000000000..2134503988 --- /dev/null +++ b/research/staged-compensation-forests/REVIEW-NUMERICAL.md @@ -0,0 +1,185 @@ +# Cross-review of the companion C01 whole-word audit + +Status: **PASS for the stated exact formal-word and finite scalar-projection +claims.** No remaining mathematical or implementation blocker was found in +this bounded source review. This is a read-only review, not a second execution +of the companion checker or an independent human review. + +Reviewed source hashes: + +- `c01-wholeword/check.py`: + `16cdeef8aabed919c066ad5da45450cfc524024814f550b3415368ed098a38c6` +- `c01-wholeword/PROOF.md`: + `4bf4ab27640122985b4d2c9f941003d6e9cbda612b0811735f014585fde0d109` + +The review also used the already frozen, unchanged design-side source copies +of the PR3605 `bw_transport.py` and `bw_emit.py` to check the claimed event and +frame convention. The design panel payload remains SHA256 +`27defe7675576baaebfd45efe40439f491a683bd923b7259c98495db8d3783ac`. +No design source, proof or frozen receipt was changed by this cross-review. +This new review file is supplemental to the earlier design output inventory. + +## Formal operator interpretation + +`raw_program` constructs the entire literal chronology: expanded initial +corrections, precondition, compensation, A, cut, indexed B warps, B, restore and +cleanup. Initial corrections apply their operator word in the correct order +by reversing the chronological list of letters, then remove it with the +corresponding inverse sequence. `free_replay` left-multiplies free words and +cancels only adjacent inverse pairs. The word action is injective, which is +checked rather than using a commutative projection. + +The raw endpoint check covers all 632 arbitrary logical columns plus the 91 +zero-input private buffer rows. It compares the complete symbolic output with +the required shear and all helper identities, including zero private outputs. +The literal reverse inverse reverses the whole gate list and inverts each +ADD/SCALE/warp. The signed expected shear is adjusted accordingly. + +The same-order dual gate rules are correct. Scalar ADDs exchange source and +target and negate their coefficient; SCALE coefficients are inverted. The +unchanged warp identifier has a separate meaning in the dual alphabet, +namely K inverse transpose. Since free generators can be independently +renamed, the symbolic replay is valid under that interpretation. It does not +identify K with its own inverse transpose. For the inherited unit-modulus +monomial realization, K inverse transpose equals conjugate K; the physical +phase premise is separate and is not checked here. + +The proof originally left the last premise implicit. I requested an explicit +distinction between arbitrary invertibility and the unit-modulus monomial +interpretation. The reviewed final proof now states that distinction directly. +The checker required no change. + +## Raw word, emitted program and scalar projection + +The raw free-word map and the complete scalar projection are distinct models +throughout the reviewed proof. The latter explicitly sets nonscalar events +to identity, uses 632 arbitrary logical inputs, and initializes all eight +centers, 91 cleanup buffers and coefficient work to zero. No scalar-projection +range is asserted to be a physical native-prefix norm. + +The producer scripts are pinned before execution. The final loader reads each +producer into a byte buffer, checks that exact buffer against the declared +source hash, and sends the same bytes to the child over standard input. +Child Python invocations use `-I -B` without `-O`, even when the surrounding +checker is optimized. The bootstrap compiles those authenticated bytes with +`dont_inherit=True, optimize=0`, preserving the producer's `__file__` and +command-line arguments. It does not reopen the producer path as executable +source after authentication. +`bind_emitted_prefix` checks the raw-to-compact register mapping and every +zero-frame event against the independently expanded raw prefix, in both +orientations. The changed complete raw word is equal to the source in every +non-compensation field. The emitted suffix from entry adapters onward and +all nonscalar events must also agree exactly as JSON values. Those checks +justify retaining their existing charges, without setting them to zero or +claiming physical phase verification. + +The source helper availability check uses actual live register identities +and excludes both entrance and terminal wrapper overrides. This agrees with +the pinned transport defaults and zero-frame phase placement. The unchanged +literal helper and target restoration lists are checked explicitly before +operator equality is accepted. + +## Literal primitive price + +`lower_scalar` spells out the primitive lists separately from `primitive_price`. +For a nonzero dyadic ADD it emits the initial clear, every binary Horner +doubling and source ADD, every denominator halving, the signed target ADD and +the final clear. Its length is precisely +`3+floor(log2(abs(a)))+popcount(abs(a))+d`. Binary SCALE, negative sign, +COPY and CLEAR are all counted. The full scalar replay counts the emitted +primitive stream rather than multiplying ADD macro counts by a unit price. +It checks agreement with the producer's count and with the panel delta. + +This supports the stated component price change 79,072 to 58,491 forward and +79,096 to 58,515 dual, conditioned on the companion's executed receipts. +The common saving is 20,581 per real component, or 41,162 for two components. +The panel bill 31,214 to 10,633 agrees with the design and its separately +executed Horner microcircuit audit. No additional work-buffer or helper +initialization is hidden by these exact counting rules. + +## Exact range and grid theorem + +The normalized integer-dyadic row representation is sound. `row_add` aligns +both denominators before addition; `normalize` removes only the common power +of two shared by all coefficients. Row updates produce new dictionaries, so +COPY's temporary sharing of an immutable row object does not introduce a +later aliasing mutation. + +The metrics observe every changed destination after every literal primitive. +Unchanged rows retain their previously observed values. Initial logical rows +have norm one and private rows are zero, agreeing with the metric initialization. +Therefore the maximum of the observed exact absolute row sums is exactly +`max_j ||A_j||_infinity`, including intermediate Horner work. The maximizing +row witness gives an attaining input by assigning each independent real input +the sign of its coefficient. This proves the all-input unit-cube range claim +for the specified scalar projection. Scaling gives M times the input bound. + +For the grid theorem, every stored row denominator divides 2^D, so common-grid +inputs in 2^-g times the integers remain in the grid with g+D fractional bits. +At each newly largest positive exponent, canonical normalization guarantees +an odd coefficient exists; `Metrics.observe` records one. The corresponding +basis input at scale 2^-g proves necessity of that D over the unrestricted +common-grid domain. This does not prove a physical native guard-bit minimum. +The proof makes that limitation explicit. + +The companion's reported exact dual range increases from 169 to 181, and its +positive-envelope exponent increases from 95 to 97. These are retained as +worse bounds, not suppressed by the lower primitive count. The forward exact +range 302 and extra fractional grid bits 4/5 have their stated restricted +scalar-projection meaning. Positive-envelope propagation uses absolute values +and therefore provides a separate conservative bound, not the exact attained +row sum. The strict power-of-two bit conversion is correct for the nonzero +maxima used here. + +## CLEAR semantics and precision boundary + +A CLEAR is an explicitly charged zero assignment in the scalar model. The +counter increments when its pre-clear symbolic linear form is nonzero. This +means some admitted input makes that clear erase nonzero content; it does not +mean every numerical input is nonzero at that instruction. I requested this +wording clarification, and the reviewed final proof now says “nonzero linear +forms.” The implementation was already consistent with that statement. + +The 91 private zero buffers have a different, literal zero contract: allocation +and free events check their exact rows are zero, and all their uses are checked +against the active allocation set for the operations occurring here. Eight +final center clear assignments are not promoted to a reversible cleanup proof. +The proof separates these assignments from physical erasure, native child +precision, roundoff feedback, strict-zero restoration and all-size tape costs. + +The fixed-point observation is valid as a conditional exact implementation +statement: sufficient range and the proven input/grid assumptions make each +listed scalar primitive exact, so no rounding tie is exercised. It supplies +no implementation of the physical COPY/CLEAR contracts. + +## Loader-only update + +The initial review covered checker +`793a5ad6ab49640f732aed19788e4eb30f7af6fe30709ac917ae07c80959f725`. +For the updated checker I isolated the new authenticated-buffer loader block +inside `produced_programs`. Replacing only that block with its previous +path-execution implementation reconstructs the exact former checker hash. +Thus no mathematical interpreter, cost, domain, witness or acceptance code +changed in this update. The proof hash above is also unchanged. + +The companion's final `VALIDATION.json`, SHA256 +`9eef8187df474a4b4ccdfb0410f92c66ad920a2c23fab2ca9456e032564685d2`, +records successful normal and optimized replay with identical receipts. +It records that removing only `checker_sha256` leaves the entire mathematical +receipt unchanged. The current `CHECKS.json` SHA256 is +`bd442037a8dc9c2a27f6a1b1e8b1e45e5c934cb7129cee2db2f85d1c20f26ec1`; +I checked its binding to the new checker hash. This review inspected those +bindings and the exact loader-only difference; it did not repeat the +companion's mathematical executions. + +## Review outcome + +The two requested documentation clarifications were applied and re-read at the +hashes above. The authenticated-buffer loader update is also accepted. +No checker defect or numerical inconsistency requiring an additional +mathematical run was found during this review; no checker was rerun here. +Root integration should +bind the companion's executed receipt to these exact checker and replacement +bytes, preserve the worsened dual bounds, and retain the native/rounded and +full-multiplication-theorem exclusions. No broader optimum, new kappa or formal +kernel proof follows from this pass. diff --git a/research/staged-compensation-forests/REVIEW-VERIFICATION.md b/research/staged-compensation-forests/REVIEW-VERIFICATION.md new file mode 100644 index 0000000000..3a99a36eda --- /dev/null +++ b/research/staged-compensation-forests/REVIEW-VERIFICATION.md @@ -0,0 +1,171 @@ +# Independent forest, source and acceptance review + +**Verdict: PASS within the declared finite compensation model.** +This review independently derives the target-forest prices and verifies the +literal two-sided basis word, then audits the package's execution and receipt +bindings. It is separate AI review, not human acceptance or a formal-kernel +proof. Substantial OpenAI Codex assistance was used. + +## Exact mathematical domain + +The two inputs are pinned PR3605 words at +`3efbb5de06a49ffeea6684482f2d3fe48cdca3fb`. Their compensation matrices agree: +112 targets, 207 active helper columns and 5,736 nonzero entries. Each complete +word has 632 arbitrary live logical inputs. The independent panel interpreter +gives every live register its own input column, including arbitrary targets, +all active dirty helpers and all untouched spectators. + +The required panel is `(y,h) -> (y+C h,h)`. The source's ZERO and FULL frames +are frame conditions, not assertions that a helper's entering data are zero. +The pinned transport's default `start` and `final` expressions were inspected +and matched as AST expressions without executing that producer. All 207 +active helpers are present, absent from `removed`, and absent from both +override dictionaries `start_extra` and `helper_final`. They therefore have +the required ZERO entrance and FULL terminal conditions under that producer. + +The independent checker uses sparse `Fraction` rows, without the builder's +common-eighth representation or any imported builder routines. Its tariff +counts a separately constructed binary-Horner work computation: initial +CLEAR, source accumulations, doublings, denominator halvings, signed target +ADD and final CLEAR. Its exact coefficient reconstruction is checked before +the count is used. + +## Forest minimum and literal basis word + +For a signed parent edge, the complete component cost is +`8 + sum_j p(C_tj - s C_pj)`; a root costs `sum_j p(C_tj)`. +The eight primitives include both unit basis directions. Sign invariance +makes each signed pair price independent of its eventual orientation. +Adding a superroot gives a cost-preserving bijection between the declared +single-parent forests and spanning trees. + +The independent computation prices all 112 root edges and both signs of +all 6,216 target pairs: **12,544 edges**. It validates the selected tree, +reconstructs its rooted orientation and checks every cycle inequality. +A separate heap-based Prim traversal of the independently priced graph +returns **13,716**. The certificate has 17 roots, 95 target edges and maximum +target depth 15. This is a minimum only in the fixed signed-unit, +single-parent target-forest class with independent coefficient lowering. + +The actual preparation list is checked for the prescribed parent/sign +incidences and leaf-before-parent chronology. Applying that literal list to +the source matrix independently yields `D=T C`; it equals the direct +immutable-parent formula. The restore list must be the literal reverse +inverse. This checks arbitrary target inputs as well as helper coefficients. + +The checker separately recomputes all **85,284** ordered signed helper scores +from D. Exactly 951 are positive. The declared deterministic greedy rule +selects **88 disjoint pairs**, using 176 helpers and saving 3,083 component +primitives. Disjointness makes those scores additive. This verifies a +construction; it does not prove a maximum matching or a joint basis optimum. + +For `h_a += s h_b`, right multiplication by `H^-1` changes column b to +`D_b-s D_a`. The actual residual injections are compared completely with +`E=T C H^-1`. The actual helper restore is `H^-1`, followed by `T^-1`. +Thus every arbitrary input returns +`T^-1(T y + T C H^-1 H h)=y+C h`, with h restored literally. + +Both supplied providers pass all 632 input columns in the forward, literal +reverse-inverse and same-chronology inverse-transpose orientations. The dual +panel is `(y,h-C^T y)`: helpers change at this intermediate dual boundary. +The forward panel's restored-helper statement is not transferred to it. +Every complete candidate word is also checked to differ from its source +only in the compensation field. + +The independent complete component bills are: + +| Panel | Logical ADDs | Component primitives | +| --- | ---: | ---: | +| Original | 5,736 | 31,214 | +| Signed forest | 2,834 | 13,716 | +| Forest and disjoint helper basis | 2,288 | 10,633 | + +The last bill includes 760 target-basis primitives, 704 helper-basis primitives +and 9,169 residual primitives. It does not omit restoration. The separate +same-matrix historical rank-basis comparator costs 17,334, as checked by the +package's literal-price and whole-word auditors. + +## Defect-sensitive controls + +The independent forest receipt records thirteen rejecting controls for each +provider. Actual mutations omit or change target preparation, helper +preparation, residual injections and either restore; reverse target +chronology; or violate the helper entrance/terminal conditions. Each +operator mutation has an explicit differing row and input-column coefficient. +The test requires the intended semantic error. Unexpected acceptance is +raised outside the exception handler. + +Deleting only the complete endpoint requirement makes its negative control +fail, establishing sensitivity to that requirement. A positive control adds a +cancelling unit ADD pair: all three operator orientations still pass, and its +eight component primitives are charged. Omitting target preparation passes +the helper-only input projection while failing the full arbitrary-input map, +so checking only incoming helper columns would be insufficient. + +Normal execution and an isolated optimized execution from a temporary script +path containing spaces produce byte-identical complete forest receipts. +`MST-VALIDATION.json` records that run. The source and candidate directories were +shared read-only; this is not described as a complete package export. + +## Source execution and complete records + +Three execution-layer gaps were found and corrected during review: the root +wrapper reopened authenticated script paths, its stage result could omit a +comparison without failing coverage, and the whole-word checker's nested +producer subprocesses reopened producer paths. Both execution levels now send +the captured authenticated bytes to isolated subprocesses and compile with +`dont_inherit=True, optimize=0`, preserving the declared `__file__` and +`sys.argv` values. No frozen module is loaded through importlib or a bytecode +cache. The nested historical producers' assertions remain active under an +optimized outer verifier. + +The wrapper rejects duplicate JSON object keys and nonfinite constants, +unsafe paths, missing regular inputs, symlink escapes, changed frozen bytes, +origin-inventory mismatches and changed decompressed originals. Complete +canonical JSON comparison distinguishes integer, float and boolean values, +preserves list order and includes every nested field. Missing fixed records +are not regenerated. + +The required stage sets contain thirteen construction/comparator records, +one independent forest record and one whole-word record. Exact set and +duplicate-count checks enforce all fifteen comparisons. Construction also +checks its complete generated-file inventory. + +`CONTROLS.json` records compact normal and optimized runs against the final +wrapper and checkers: **70 intended rejections and three named-check deletion +tests per mode**, with all fifteen complete records checked. The control +driver itself also produces byte-identical receipts under outer normal and +optimized execution, recorded in `CONTROL-VALIDATION.json`. +These cover actual captured-source execution after a +disposable path change, both assertion layers, complete-record mutation and +omission, stage coverage, and a changed sign in the actual authenticated +target-basis word. Named record, coverage and endpoint checks are deliberately +deleted to verify that the corresponding controls then fail. The compact +suite replays the actual compensation panel; it does not repeat the complete +whole-word scalar audit or edge census for every mutation. + +## Earlier work and remaining limits + +The fixed PR1080 comparison was independently recalculated. Its prior matrix +has 216 active columns and quarter-grid coefficients; this one has 207 active +columns and 96 strict eighth-grid entries. Those invariants exclude signed +row/column permutation equivalence. Its frozen target forest costs 22,548 on +this matrix. Literal helper-ID transfer touches exactly four removed helpers, +fourteen nonzero entrances and sixteen non-FULL terminals. These are bounded +facts about that source and recipe, not a general basis-equivalence or paid +remapping obstruction. + +The design proof and related-work note credit the prior target-forest, +helper-basis and broader bi-forest methods. The present contribution is a +source-specific restored circuit and its complete same-matrix comparison, +not priority for those mechanisms. + +The companion whole-word audit owns the full free-operator identities, +literal emitter bindings and scalar-prefix replay. Its scalar numerical model +treats nonscalar events as identity and CLEAR as assignment. It therefore +does not by itself prove physical Clifford phases, reversible erasure, +native-child precision or recursive rounding. The panel proof also does not +establish COPY lifetimes, a new physical tape implementation, recursive +histogram improvement, a general supplier bound or a new kappa result. +Final package bytes are delimited by `CORE-SNAPSHOT.json`; committed and +Git-free package replay remain the parent's separate validation stages. diff --git a/research/staged-compensation-forests/SOURCE-HISTORY-ALIASES.json b/research/staged-compensation-forests/SOURCE-HISTORY-ALIASES.json new file mode 100644 index 0000000000..be909b05a1 --- /dev/null +++ b/research/staged-compensation-forests/SOURCE-HISTORY-ALIASES.json @@ -0,0 +1,133 @@ +{ + "reason": "PR3605 head is available locally but not ancestor of canonical main; registered source-history gate uses byte-identical retained main copies. Scientific pin and frozen word bytes remain unchanged.", + "bindings": [ + { + "historical_source": { + "path": "research/staged-644-660-width-reduction/STAGED644-660-base.json.gz", + "usage": "provenance", + "git_blob": "dc6d321b1e8e2a837a1ff7bb60e8f8f78d043db5", + "sha256": "735c540b1fe29d0ceeb4d2f304ec941e5f2bd3bc92bafc8cce2b4f9a67a3b653", + "pin": "head:3efbb5de06a49ffeea6684482f2d3fe48cdca3fb:research/staged-644-660-width-reduction/STAGED644-660-base.json.gz" + }, + "retained_source": { + "path": "research/staged-644-660-independent-audit/inputs/STAGED644-660-base.json.gz", + "usage": "provenance", + "git_blob": "dc6d321b1e8e2a837a1ff7bb60e8f8f78d043db5", + "sha256": "735c540b1fe29d0ceeb4d2f304ec941e5f2bd3bc92bafc8cce2b4f9a67a3b653" + }, + "byte_identical": true + }, + { + "historical_source": { + "path": "research/staged-644-660-width-reduction/STAGED644-660-extra.json.gz", + "usage": "provenance", + "git_blob": "78e7b2bb0653c8dcc0133980a19dd9d97ebdb67e", + "sha256": "886338fc32da14f3389a82c8120a1bcf9c5e2f0ec3e9b2d377fdae809e1d977f", + "pin": "head:3efbb5de06a49ffeea6684482f2d3fe48cdca3fb:research/staged-644-660-width-reduction/STAGED644-660-extra.json.gz" + }, + "retained_source": { + "path": "research/staged-644-660-independent-audit/inputs/STAGED644-660-extra.json.gz", + "usage": "provenance", + "git_blob": "78e7b2bb0653c8dcc0133980a19dd9d97ebdb67e", + "sha256": "886338fc32da14f3389a82c8120a1bcf9c5e2f0ec3e9b2d377fdae809e1d977f" + }, + "byte_identical": true + }, + { + "historical_source": { + "path": "research/rank7-coupled-586-588-carrier-fold/CREDITS.md", + "usage": "provenance", + "git_blob": "24f00912d4ec829c3c8d2a8d086aa135664a124c", + "sha256": "1d9d8f56d8899f55878e4cb2c4e052b22506444016a51c2e678773505f5189e6", + "pin": "head:3efbb5de06a49ffeea6684482f2d3fe48cdca3fb:research/rank7-coupled-586-588-carrier-fold/CREDITS.md" + }, + "retained_source": { + "path": "research/rank7-coupled-586-588-carrier-fold/CREDITS.md", + "usage": "provenance", + "git_blob": "24f00912d4ec829c3c8d2a8d086aa135664a124c", + "sha256": "1d9d8f56d8899f55878e4cb2c4e052b22506444016a51c2e678773505f5189e6" + }, + "byte_identical": true + }, + { + "historical_source": { + "path": "research/rank7-coupled-586-588-carrier-fold/NOTICE", + "usage": "provenance", + "git_blob": "89c20926ea7f803718f751d95989d5a269908efd", + "sha256": "c9731c9cca25ede32c2a1b3aef6d5b249973cb2ed5fb2494407bdca598763661", + "pin": "head:3efbb5de06a49ffeea6684482f2d3fe48cdca3fb:research/rank7-coupled-586-588-carrier-fold/NOTICE" + }, + "retained_source": { + "path": "research/rank7-coupled-586-588-carrier-fold/NOTICE", + "usage": "provenance", + "git_blob": "89c20926ea7f803718f751d95989d5a269908efd", + "sha256": "c9731c9cca25ede32c2a1b3aef6d5b249973cb2ed5fb2494407bdca598763661" + }, + "byte_identical": true + }, + { + "historical_source": { + "path": "research/t74-native-fast/NATIVE-LINEAGE-NOTICE", + "usage": "provenance", + "git_blob": "380e979f0e84e00a22bd890615d87cc4684ad740", + "sha256": "ee0c73ca35877aad0e0b6adc560a3881cb82276dba4cf2d4fc58cd19e57cc420", + "pin": "head:3efbb5de06a49ffeea6684482f2d3fe48cdca3fb:research/t74-native-fast/NATIVE-LINEAGE-NOTICE" + }, + "retained_source": { + "path": "research/t74-native-fast/NATIVE-LINEAGE-NOTICE", + "usage": "provenance", + "git_blob": "380e979f0e84e00a22bd890615d87cc4684ad740", + "sha256": "ee0c73ca35877aad0e0b6adc560a3881cb82276dba4cf2d4fc58cd19e57cc420" + }, + "byte_identical": true + }, + { + "historical_source": { + "path": "LICENSE", + "usage": "provenance", + "git_blob": "261eeb9e9f8b2b4b0d119366dda99c6fd7d35c64", + "sha256": "c71d239df91726fc519c6eb72d318ec65820627232b2f796219e87dcf35d0ab4", + "pin": "head:3efbb5de06a49ffeea6684482f2d3fe48cdca3fb:LICENSE" + }, + "retained_source": { + "path": "LICENSE", + "usage": "provenance", + "git_blob": "261eeb9e9f8b2b4b0d119366dda99c6fd7d35c64", + "sha256": "c71d239df91726fc519c6eb72d318ec65820627232b2f796219e87dcf35d0ab4" + }, + "byte_identical": true + }, + { + "historical_source": { + "path": "research/t74-native-fast/vendor/native/new/code/borrow/bw_transport.py", + "usage": "provenance", + "git_blob": "08248542b18864c94a5ac050c8669f68519838e1", + "sha256": "9818e08b819310b40f1441b89be8c4369584a5b3fa5dfe9b86b1df9a7f5d6a76", + "pin": "head:3efbb5de06a49ffeea6684482f2d3fe48cdca3fb:research/t74-native-fast/vendor/native/new/code/borrow/bw_transport.py" + }, + "retained_source": { + "path": "research/t74-native-fast/vendor/native/new/code/borrow/bw_transport.py", + "usage": "provenance", + "git_blob": "08248542b18864c94a5ac050c8669f68519838e1", + "sha256": "9818e08b819310b40f1441b89be8c4369584a5b3fa5dfe9b86b1df9a7f5d6a76" + }, + "byte_identical": true + }, + { + "historical_source": { + "path": "research/t74-native-fast/vendor/native/new/code/borrow/bw_emit.py", + "usage": "provenance", + "git_blob": "6d47f63ab7a533941b3881bbfd3ae4dac5f76932", + "sha256": "99b59a6fa3feda86785e4225157dcb1a6169d256cec4f5e0acc9cea7a701df76", + "pin": "head:3efbb5de06a49ffeea6684482f2d3fe48cdca3fb:research/t74-native-fast/vendor/native/new/code/borrow/bw_emit.py" + }, + "retained_source": { + "path": "research/t74-native-fast/vendor/native/new/code/borrow/bw_emit.py", + "usage": "provenance", + "git_blob": "6d47f63ab7a533941b3881bbfd3ae4dac5f76932", + "sha256": "99b59a6fa3feda86785e4225157dcb1a6169d256cec4f5e0acc9cea7a701df76" + }, + "byte_identical": true + } + ] +} diff --git a/research/staged-compensation-forests/SOURCES.json b/research/staged-compensation-forests/SOURCES.json new file mode 100644 index 0000000000..f5f99bad8d --- /dev/null +++ b/research/staged-compensation-forests/SOURCES.json @@ -0,0 +1,131 @@ +{ + "schema_version": 1, + "base_commit": "12fa8c5c844be21bfefb38a19503fbd867a11244", + "files": [ + { + "path": "certificates/selected-result.json", + "usage": "provenance", + "git_blob": "b1fea0c94436b236cc2b7d41a7be032811b94c81", + "sha256": "bb2eaa58647b353f88d0aec2eafb9d30df1be53589231b23e12ceef3e4bad129" + }, + { + "path": "docs/research/agent-task-catalog.json", + "usage": "provenance", + "git_blob": "64bfc5af6709ed9811171e0a2108f05e1219cb65", + "sha256": "352a6184713b8843d96fd2c2071eb7aeaa655906b7c51d45ad444912666c8a96" + }, + { + "path": "docs/research/research-family-status.md", + "usage": "provenance", + "git_blob": "abdd2792e6a5596b3fa6be3dc9db882bd8e3ef89", + "sha256": "0e61c47dfbc6f16e5f64594fcc7d907d4187568e38dddf10d473f0992419c44f" + }, + { + "path": "research/complex-ck-target-forest/README.md", + "usage": "provenance", + "git_blob": "23bbf1d09ccff2c8684902558e56d3337d66776a", + "sha256": "40d554792408752bd9aaf8852e7a55d60671e619a6511885cebdd6b4fe7d5e66" + }, + { + "path": "research/complex-ck-two-sided/README.md", + "usage": "provenance", + "git_blob": "e08efda4901a4c665a2e6b63d5da86adf3ed77fe", + "sha256": "b94bddf26ba781d93019dbf2f595f139bb842381dd0c53b5ec27bb9468afa428" + }, + { + "path": "research/complex-x4-target-forest/README.md", + "usage": "provenance", + "git_blob": "2794a3190a6a02ccc31b25c09fb2d7f268bae2db", + "sha256": "5ff31dd635e74215ee987c7c6381068dfa58355717263e5b8cf69119b7fc8e37" + }, + { + "path": "research/complex-compensation-basis/README.md", + "usage": "provenance", + "git_blob": "c054d50a137c8cacd2356ee9c9ce554438dcd46f", + "sha256": "5bbd35327a03f336cd983d3760bd3de747db10a40172fc828bb0cfc38c6c3f65" + }, + { + "path": "research/staged-644-660-independent-audit/inputs/STAGED644-660-base.json.gz", + "usage": "provenance", + "git_blob": "dc6d321b1e8e2a837a1ff7bb60e8f8f78d043db5", + "sha256": "735c540b1fe29d0ceeb4d2f304ec941e5f2bd3bc92bafc8cce2b4f9a67a3b653" + }, + { + "path": "research/staged-644-660-independent-audit/inputs/STAGED644-660-extra.json.gz", + "usage": "provenance", + "git_blob": "78e7b2bb0653c8dcc0133980a19dd9d97ebdb67e", + "sha256": "886338fc32da14f3389a82c8120a1bcf9c5e2f0ec3e9b2d377fdae809e1d977f" + }, + { + "path": "research/rank7-coupled-586-588-carrier-fold/CREDITS.md", + "usage": "provenance", + "git_blob": "24f00912d4ec829c3c8d2a8d086aa135664a124c", + "sha256": "1d9d8f56d8899f55878e4cb2c4e052b22506444016a51c2e678773505f5189e6" + }, + { + "path": "research/rank7-coupled-586-588-carrier-fold/NOTICE", + "usage": "provenance", + "git_blob": "89c20926ea7f803718f751d95989d5a269908efd", + "sha256": "c9731c9cca25ede32c2a1b3aef6d5b249973cb2ed5fb2494407bdca598763661" + }, + { + "path": "research/t74-native-fast/NATIVE-LINEAGE-NOTICE", + "usage": "provenance", + "git_blob": "380e979f0e84e00a22bd890615d87cc4684ad740", + "sha256": "ee0c73ca35877aad0e0b6adc560a3881cb82276dba4cf2d4fc58cd19e57cc420" + }, + { + "path": "LICENSE", + "usage": "provenance", + "git_blob": "261eeb9e9f8b2b4b0d119366dda99c6fd7d35c64", + "sha256": "c71d239df91726fc519c6eb72d318ec65820627232b2f796219e87dcf35d0ab4" + }, + { + "path": "research/t74-native-fast/vendor/native/new/code/borrow/bw_transport.py", + "usage": "provenance", + "git_blob": "08248542b18864c94a5ac050c8669f68519838e1", + "sha256": "9818e08b819310b40f1441b89be8c4369584a5b3fa5dfe9b86b1df9a7f5d6a76" + }, + { + "path": "research/t74-native-fast/vendor/native/new/code/borrow/bw_emit.py", + "usage": "provenance", + "git_blob": "6d47f63ab7a533941b3881bbfd3ae4dac5f76932", + "sha256": "99b59a6fa3feda86785e4225157dcb1a6169d256cec4f5e0acc9cea7a701df76" + }, + { + "path": "research/u8-two-sided-biforest-seed35/README.md", + "usage": "provenance", + "git_blob": "79f484e008b95b036503985b8d89830d4c20fbf3", + "sha256": "f7226bb8c46f4e2130d38d7342735c65b6217282563558357d2df5b8a9500963", + "pin": "head:803e080e181229a3af2196b7a13615c9d81ae10d:research/u8-two-sided-biforest-seed35/README.md" + }, + { + "path": "research/u8-two-sided-biforest-seed35/PROOF.md", + "usage": "provenance", + "git_blob": "52b68b24512a8bbc6bfd0d7c544f226fafae2b0d", + "sha256": "462ef3a290217c1e080d6b33f70129608efb8542a6076b3dda9a80ce5134aab7", + "pin": "head:803e080e181229a3af2196b7a13615c9d81ae10d:research/u8-two-sided-biforest-seed35/PROOF.md" + }, + { + "path": "research/u8-two-sided-biforest-seed35/RECIPE.json", + "usage": "provenance", + "git_blob": "3da499553bb790d4aea19cf04a5677c8f2c3f780", + "sha256": "d526804d9d627cbd850b0e54c3de9aadc74646e1a9b6befb577f42240720750a", + "pin": "head:803e080e181229a3af2196b7a13615c9d81ae10d:research/u8-two-sided-biforest-seed35/RECIPE.json" + }, + { + "path": "research/u8-two-sided-biforest-seed35/SOURCES.json", + "usage": "provenance", + "git_blob": "455a1dcd1980b28e000e11b3ab092cc6407b6c36", + "sha256": "1aaf2c3c0a71479919c0df184e9b60af7a6490049137de0bc643b1385a04f835", + "pin": "head:803e080e181229a3af2196b7a13615c9d81ae10d:research/u8-two-sided-biforest-seed35/SOURCES.json" + }, + { + "path": "research/community-frontier942-audit/t37-replay.tar.gz", + "usage": "provenance", + "pin": "head:803e080e181229a3af2196b7a13615c9d81ae10d:research/community-frontier942-audit/t37-replay.tar.gz", + "git_blob": "04ab9096221a06a58a0d2d915a43a5d7f091317f", + "sha256": "48285025105210b56a32d3d4d57a21b7591760acc709d38073e4dca339eb06fe" + } + ] +} diff --git a/research/staged-compensation-forests/TASK.json b/research/staged-compensation-forests/TASK.json new file mode 100644 index 0000000000..bc303aead7 --- /dev/null +++ b/research/staged-compensation-forests/TASK.json @@ -0,0 +1,112 @@ +{ + "schema_version": 1, + "task_id": "scalar-to-moment", + "priority_revision": 7, + "base_commit": "12fa8c5c844be21bfefb38a19503fbd867a11244", + "original_card": { + "id": "scalar-to-moment", + "question": "Can a changed frame itinerary remove a paid transition beyond the already covered scalar A2 contractions?", + "starting_points": [ + "docs/research/research-family-status.md", + "certificates/selected-result.json", + "research/staged544-a2-graph-rewrite/README.md", + "research/staged544-separated-a2/README.md", + "research/staged544-a2-composition-audit/README.md", + "research/staged544-a1858-contraction-audit/README.md" + ], + "methods": [ + "Derive the changed legal frame itinerary and exact child histogram.", + "Prove a scoped obstruction showing why that scalar gain cannot change the paid contract." + ], + "acceptance_gate": "An unchanged histogram is not a kappa gain; record any separate runtime or proof benefit explicitly.", + "first_step": { + "command": [ + "python3", + "-B", + "scripts/research_baseline.py" + ], + "expected": "PASS_RESEARCH_BASELINE_BINDINGS_ONLY", + "inspect": "Read the A2 and separated-A2 constructions and their composition/contraction audits. Scalar contractions can preserve the complete recursive histogram; fewer ADDs alone do not justify further scans.", + "scope": "Source-binding orientation only; no scientific replay, theorem acceptance or supplier admission. Budget any heavy replay separately." + }, + "first_experiment": "Identify an actual paid transition to remove and construct a legal replacement frame itinerary, charging restoration, source windows and changed helpers. Compare complete before/after histograms. Stop if only scalar count changes; report that benefit honestly, without expanding the same scalar-only census.", + "bottleneck_link": "A legal change to the histogram, not addition count alone, is the bridge to an exponent gain.", + "allowed_variations": [ + "One existing scalar simplification and one proposed frame-path change." + ], + "scope_change_triggers": [ + "Submitting only another scalar count as completion of a paid-profile task." + ], + "overlap_terms": [ + "scalar simplification", + "paid profile", + "R439", + "3998", + "4019", + "4112", + "4152", + "staged544-a2-graph-rewrite", + "staged544-separated-a2", + "staged544-a2-composition-audit", + "staged544-a1858-contraction-audit" + ], + "existing_checks": [ + { + "scope": "PR #3998: consecutive A2 scalar contraction", + "evidence": "research/staged544-a2-graph-rewrite/README.md", + "remaining": "A genuinely changed paid itinerary or a distinct independent audit; no default scalar-only expansion.", + "status": "author-checked", + "source_commit": "389268a6b5e0373a3125d5c6fcd6995f4ea324f5", + "selected_record_sha256": "bb2eaa58647b353f88d0aec2eafb9d30df1be53589231b23e12ceef3e4bad129" + }, + { + "scope": "PR #4019: separated A2 sites with unchanged recursive histogram", + "evidence": "research/staged544-separated-a2/README.md", + "remaining": "A genuinely changed paid itinerary or a distinct independent audit; no default scalar-only expansion.", + "status": "author-checked", + "source_commit": "f408e09df300b575235f7f77f81948071397e16d", + "selected_record_sha256": "bb2eaa58647b353f88d0aec2eafb9d30df1be53589231b23e12ceef3e4bad129" + }, + { + "scope": "PR #4112: composition audit", + "evidence": "research/staged544-a2-composition-audit/README.md", + "remaining": "A genuinely changed paid itinerary or a distinct independent audit; no default scalar-only expansion.", + "status": "author-checked", + "source_commit": "205b7380656ba4b6316a8a493b1a3c679b8f7a0e", + "selected_record_sha256": "bb2eaa58647b353f88d0aec2eafb9d30df1be53589231b23e12ceef3e4bad129" + }, + { + "scope": "PR #4152: A1858 contraction audit", + "evidence": "research/staged544-a1858-contraction-audit/README.md", + "remaining": "A genuinely changed paid itinerary or a distinct independent audit; no default scalar-only expansion.", + "status": "author-checked", + "source_commit": "caaa14cde5962adc372fdca71f63d0f29e73c8b2", + "selected_record_sha256": "bb2eaa58647b353f88d0aec2eafb9d30df1be53589231b23e12ceef3e4bad129" + } + ] + }, + "scope_status": "changed", + "actual_scope": "Finish the preserved C01 finite compensation result on its exact staged matrix: source-matched target-forest class minimum, one deterministic disjoint-helper construction, full literal scalar comparison and independent verification. No paid-profile improvement.", + "scope_change_reason": "The user explicitly assigned completion, review and bounded publication of unpublished contributions, including worthwhile refinement. This is one finite source-specific completion of C01, not completion of the scalar-to-moment research target or a repeated scalar-only search campaign.", + "bottleneck_link": "The old unpublished rank-basis circuit needed a fair same-matrix comparison with prior forest and two-sided methods and a complete finite scalar bill.", + "budget_minutes": 240, + "stop_rule": "One complete signed-unit target MST and one sorted disjoint-helper pass on the transformed matrix. Stop after the reviewed useful candidate; no alternating forest search or repeated scalar census, no kappa claim.", + "outcome": "partial", + "evidence": "PROOF.md, whole-word numerical note, complete generated circuit and records, independent exact graph/basis and full-word scalar checks, and actual semantic controls.", + "author": "Ross Richardson", + "ai_assistance": "Substantial OpenAI Codex assistance in construction, separate mathematical checking contexts and publication. AI reviews are not human or formal-kernel acceptance.", + "open_questions": [ + { + "question": "Can this exact local substitution be admitted into a complete native hosted supplier with its physical cleanup and precision costs?", + "why_it_matters": "The finite scalar savings and formal local identities do not certify native phases, physical CLEAR or recursive rounding.", + "first_step": "Regenerate the full source-bound hosted native program, all precision allocations and owner invoice for these exact frozen words.", + "blocked_by": "No complete native/physical/rounded admission is supplied." + }, + { + "question": "Can a changed local contract improve the complete paid profile?", + "why_it_matters": "The current scalar substitution leaves the entire recursive histogram unchanged.", + "first_step": "Identify an actual removable paid transition or changed child call and include all source, wrapper and restoration costs.", + "blocked_by": "No changed recursive child or frame contract is constructed here." + } + ] +} diff --git a/research/staged-compensation-forests/VERIFY.json b/research/staged-compensation-forests/VERIFY.json new file mode 100644 index 0000000000..bc65b005dd --- /dev/null +++ b/research/staged-compensation-forests/VERIFY.json @@ -0,0 +1,60 @@ +{ + "schema_version": 1, + "status": "ready", + "python": "3.12", + "requirements": [], + "inputs": [], + "commands": [ + { + "argv": [ + "{python}", + "-I", + "-O", + "-B", + "{package}/verify.py", + "--stage", + "construction" + ], + "timeout_seconds": 90, + "checks": "Complete deterministic source-matched forest/helper circuit, full output inventory and typed records, literal Horner prices, exact fixed PR1080 comparison." + }, + { + "argv": [ + "{python}", + "-I", + "-O", + "-B", + "{package}/verify.py", + "--stage", + "forest" + ], + "timeout_seconds": 90, + "checks": "Independent Fraction graph and basis audit: every signed edge and helper score, class minimum, arbitrary inputs and semantic controls." + }, + { + "argv": [ + "{python}", + "-I", + "-O", + "-B", + "{package}/verify.py", + "--stage", + "wholeword" + ], + "timeout_seconds": 180, + "checks": "Independent full raw free-warp words, four orientations, complete emitted scalar projection, literal prices and exact prefix/grid witnesses." + }, + { + "argv": [ + "{python}", + "-I", + "-B", + "{package}/controls.py", + "--package", + "{package}" + ], + "timeout_seconds": 90, + "checks": "Normal/optimized source-byte execution, exact typed receipt coverage, actual semantic defects and check deletion." + } + ] +} diff --git a/research/staged-compensation-forests/artifacts/DESIGN.json b/research/staged-compensation-forests/artifacts/DESIGN.json new file mode 100644 index 0000000000..c7c4748fc9 --- /dev/null +++ b/research/staged-compensation-forests/artifacts/DESIGN.json @@ -0,0 +1,5045 @@ +{ + "head": "3efbb5de06a49ffeea6684482f2d3fe48cdca3fb", + "providers": { + "base": { + "active_helpers": [ + 224, + 225, + 227, + 229, + 231, + 232, + 233, + 234, + 235, + 236, + 237, + 238, + 239, + 240, + 241, + 242, + 243, + 244, + 245, + 246, + 247, + 248, + 250, + 252, + 253, + 254, + 255, + 256, + 257, + 258, + 259, + 260, + 261, + 262, + 263, + 264, + 266, + 268, + 269, + 270, + 271, + 272, + 274, + 276, + 278, + 279, + 280, + 281, + 283, + 284, + 285, + 286, + 287, + 288, + 290, + 292, + 294, + 295, + 296, + 297, + 300, + 301, + 302, + 303, + 306, + 308, + 310, + 312, + 313, + 315, + 316, + 317, + 318, + 319, + 322, + 324, + 326, + 328, + 329, + 332, + 333, + 334, + 335, + 336, + 338, + 340, + 342, + 343, + 344, + 345, + 347, + 348, + 349, + 350, + 351, + 352, + 354, + 356, + 358, + 359, + 360, + 361, + 364, + 365, + 366, + 367, + 368, + 370, + 372, + 374, + 375, + 376, + 377, + 379, + 380, + 381, + 382, + 383, + 384, + 386, + 388, + 390, + 391, + 392, + 393, + 396, + 397, + 398, + 399, + 400, + 401, + 402, + 403, + 404, + 405, + 406, + 407, + 409, + 410, + 411, + 413, + 414, + 415, + 416, + 417, + 418, + 419, + 420, + 421, + 422, + 423, + 425, + 426, + 427, + 429, + 430, + 431, + 432, + 433, + 434, + 435, + 436, + 437, + 438, + 439, + 440, + 441, + 442, + 443, + 444, + 445, + 446, + 447, + 456, + 459, + 461, + 463, + 464, + 465, + 466, + 467, + 468, + 469, + 470, + 471, + 479, + 481, + 490, + 491, + 492, + 493, + 502, + 503, + 504, + 505, + 514, + 515, + 516, + 517, + 546, + 547, + 548, + 549, + 558, + 560, + 568, + 570 + ], + "all_column_checks": [ + [ + "forest", + "forward", + 632 + ], + [ + "forest", + "inverse", + 632 + ], + [ + "forest", + "dual", + 632 + ], + [ + "two-sided", + "forward", + 632 + ], + [ + "two-sided", + "inverse", + 632 + ], + [ + "two-sided", + "dual", + 632 + ] + ], + "all_cycle_inequalities": 12544, + "edge_census_sha256": "6f40d71cf2d1cdacc32ac943016e60a34ffa38399b117fc57ebb103b2fb7f8f1", + "edge_count": 12544, + "eligible_helpers": [ + 224, + 225, + 227, + 229, + 231, + 232, + 233, + 234, + 235, + 236, + 237, + 238, + 239, + 240, + 241, + 242, + 243, + 244, + 245, + 246, + 247, + 248, + 250, + 252, + 253, + 254, + 255, + 256, + 257, + 258, + 259, + 260, + 261, + 262, + 263, + 264, + 266, + 268, + 269, + 270, + 271, + 272, + 274, + 276, + 278, + 279, + 280, + 281, + 283, + 284, + 285, + 286, + 287, + 288, + 290, + 292, + 294, + 295, + 296, + 297, + 300, + 301, + 302, + 303, + 306, + 308, + 310, + 312, + 313, + 315, + 316, + 317, + 318, + 319, + 322, + 324, + 326, + 328, + 329, + 332, + 333, + 334, + 335, + 336, + 338, + 340, + 342, + 343, + 344, + 345, + 347, + 348, + 349, + 350, + 351, + 352, + 354, + 356, + 358, + 359, + 360, + 361, + 364, + 365, + 366, + 367, + 368, + 370, + 372, + 374, + 375, + 376, + 377, + 379, + 380, + 381, + 382, + 383, + 384, + 386, + 388, + 390, + 391, + 392, + 393, + 396, + 397, + 398, + 399, + 400, + 401, + 402, + 403, + 404, + 405, + 406, + 407, + 409, + 410, + 411, + 413, + 414, + 415, + 416, + 417, + 418, + 419, + 420, + 421, + 422, + 423, + 425, + 426, + 427, + 429, + 430, + 431, + 432, + 433, + 434, + 435, + 436, + 437, + 438, + 439, + 440, + 441, + 442, + 443, + 444, + 445, + 446, + 447, + 456, + 459, + 461, + 463, + 464, + 465, + 466, + 467, + 468, + 469, + 470, + 471, + 479, + 481, + 490, + 491, + 492, + 493, + 502, + 503, + 504, + 505, + 514, + 515, + 516, + 517, + 546, + 547, + 548, + 549, + 558, + 560, + 568, + 570 + ], + "forest_panel_sha256": "665d299ef25d80ea42e54d10c2e94e15527c2657898b88f3970cc14eb4fac654", + "forest_word_sha256": "882a0a24f6ad0741513251034692f437b588a1c5a26631a0a575b0686dd44de4", + "helper_candidate_count": 85284, + "helper_candidates_sha256": "abcd9fd7d6e8eccfdf9f856435d387e46162c5f2250b08eec8e9cf8bd6bb6f6a", + "max_depth": 15, + "original_bill": { + "coefficient_histogram": { + "-1": 153, + "-1/2": 1379, + "-1/4": 1221, + "-1/8": 34, + "-2": 3, + "-3/2": 3, + "-3/4": 5, + "-3/8": 9, + "-5/8": 3, + "1": 193, + "1/2": 1307, + "1/4": 1319, + "1/8": 30, + "2": 39, + "3/2": 3, + "3/4": 15, + "3/8": 11, + "5/8": 9 + }, + "component_primitives": 31214, + "logical_additions": 5736 + }, + "pairs": [ + [ + 123, + 288, + 296, + -1 + ], + [ + 100, + 272, + 280, + -1 + ], + [ + 90, + 306, + 312, + -1 + ], + [ + 90, + 308, + 318, + 1 + ], + [ + 86, + 356, + 366, + 1 + ], + [ + 86, + 372, + 382, + 1 + ], + [ + 81, + 340, + 350, + 1 + ], + [ + 75, + 262, + 266, + -1 + ], + [ + 75, + 269, + 257, + 1 + ], + [ + 68, + 422, + 426, + -1 + ], + [ + 66, + 233, + 227, + 1 + ], + [ + 64, + 253, + 241, + 1 + ], + [ + 64, + 405, + 414, + 1 + ], + [ + 62, + 438, + 442, + -1 + ], + [ + 62, + 441, + 434, + -1 + ], + [ + 60, + 406, + 410, + -1 + ], + [ + 59, + 332, + 326, + 1 + ], + [ + 59, + 421, + 430, + 1 + ], + [ + 57, + 437, + 446, + 1 + ], + [ + 56, + 388, + 398, + 1 + ], + [ + 55, + 246, + 250, + -1 + ], + [ + 52, + 276, + 234, + 1 + ], + [ + 51, + 274, + 279, + 1 + ], + [ + 51, + 370, + 375, + 1 + ], + [ + 50, + 261, + 270, + 1 + ], + [ + 50, + 284, + 283, + -1 + ], + [ + 49, + 352, + 367, + 1 + ], + [ + 48, + 384, + 399, + -1 + ], + [ + 47, + 229, + 238, + 1 + ], + [ + 47, + 354, + 359, + 1 + ], + [ + 47, + 368, + 383, + 1 + ], + [ + 47, + 409, + 402, + -1 + ], + [ + 47, + 425, + 418, + -1 + ], + [ + 47, + 445, + 433, + 1 + ], + [ + 45, + 245, + 254, + 1 + ], + [ + 43, + 336, + 351, + -1 + ], + [ + 40, + 290, + 295, + 1 + ], + [ + 37, + 338, + 343, + 1 + ], + [ + 37, + 411, + 427, + 1 + ], + [ + 37, + 413, + 401, + 1 + ], + [ + 36, + 380, + 379, + -1 + ], + [ + 32, + 429, + 417, + 1 + ], + [ + 31, + 324, + 334, + 1 + ], + [ + 31, + 348, + 347, + -1 + ], + [ + 31, + 396, + 225, + 1 + ], + [ + 30, + 264, + 259, + -1 + ], + [ + 29, + 391, + 386, + 1 + ], + [ + 25, + 260, + 271, + 1 + ], + [ + 25, + 419, + 287, + -1 + ], + [ + 24, + 358, + 364, + 1 + ], + [ + 21, + 268, + 263, + 1 + ], + [ + 20, + 248, + 243, + -1 + ], + [ + 20, + 335, + 328, + 1 + ], + [ + 17, + 258, + 256, + 1 + ], + [ + 17, + 294, + 300, + 1 + ], + [ + 16, + 285, + 403, + 1 + ], + [ + 16, + 415, + 431, + 1 + ], + [ + 15, + 237, + 224, + -1 + ], + [ + 15, + 244, + 255, + 1 + ], + [ + 15, + 361, + 377, + 1 + ], + [ + 12, + 231, + 235, + -1 + ], + [ + 12, + 242, + 240, + 1 + ], + [ + 12, + 292, + 239, + -1 + ], + [ + 12, + 436, + 447, + 1 + ], + [ + 12, + 439, + 443, + -1 + ], + [ + 12, + 440, + 435, + -1 + ], + [ + 12, + 444, + 432, + 1 + ], + [ + 11, + 345, + 393, + 1 + ], + [ + 10, + 301, + 303, + 1 + ], + [ + 10, + 310, + 313, + -1 + ], + [ + 10, + 322, + 329, + -1 + ], + [ + 10, + 416, + 286, + 1 + ], + [ + 9, + 479, + 349, + 1 + ], + [ + 9, + 505, + 517, + 1 + ], + [ + 6, + 247, + 252, + 1 + ], + [ + 6, + 344, + 376, + 1 + ], + [ + 5, + 461, + 317, + 1 + ], + [ + 5, + 463, + 333, + 1 + ], + [ + 5, + 491, + 365, + 1 + ], + [ + 5, + 503, + 381, + 1 + ], + [ + 5, + 504, + 316, + 1 + ], + [ + 4, + 456, + 467, + 1 + ], + [ + 4, + 459, + 465, + 1 + ], + [ + 3, + 548, + 549, + -1 + ], + [ + 3, + 560, + 547, + 1 + ], + [ + 1, + 471, + 360, + -1 + ], + [ + 1, + 493, + 302, + 1 + ], + [ + 1, + 515, + 397, + 1 + ] + ], + "parent": { + "-1": null, + "112": [ + 169, + -1, + 225 + ], + "113": [ + 118, + -1, + 191 + ], + "114": [ + -1, + 0, + 216 + ], + "115": [ + 179, + -1, + 177 + ], + "116": [ + -1, + 0, + 229 + ], + "117": [ + 116, + -1, + 176 + ], + "118": [ + 135, + 1, + 309 + ], + "119": [ + -1, + 0, + 273 + ], + "120": [ + 179, + 1, + 127 + ], + "121": [ + 173, + 1, + 156 + ], + "122": [ + 174, + 1, + 236 + ], + "123": [ + 148, + -1, + 288 + ], + "124": [ + 143, + -1, + 133 + ], + "125": [ + 128, + 1, + 244 + ], + "126": [ + -1, + 0, + 0 + ], + "127": [ + 154, + -1, + 269 + ], + "128": [ + 155, + 1, + 281 + ], + "129": [ + 124, + 1, + 180 + ], + "130": [ + 151, + 1, + 150 + ], + "131": [ + 151, + -1, + 181 + ], + "132": [ + 148, + -1, + 232 + ], + "133": [ + 123, + -1, + 8 + ], + "134": [ + 135, + 1, + 157 + ], + "135": [ + -1, + 0, + 250 + ], + "136": [ + -1, + 0, + 265 + ], + "137": [ + 121, + -1, + 109 + ], + "138": [ + -1, + 0, + 221 + ], + "139": [ + 119, + -1, + 220 + ], + "140": [ + 118, + -1, + 181 + ], + "141": [ + 157, + -1, + 296 + ], + "142": [ + 141, + -1, + 179 + ], + "143": [ + -1, + 0, + 234 + ], + "144": [ + 136, + 1, + 8 + ], + "145": [ + 135, + 1, + 8 + ], + "146": [ + 134, + 1, + 140 + ], + "147": [ + 136, + 1, + 188 + ], + "148": [ + 223, + -1, + 202 + ], + "149": [ + 123, + 1, + 140 + ], + "150": [ + 143, + 1, + 181 + ], + "151": [ + -1, + 0, + 225 + ], + "152": [ + 130, + 1, + 8 + ], + "153": [ + -1, + 0, + 0 + ], + "154": [ + 119, + 1, + 319 + ], + "155": [ + 149, + -1, + 196 + ], + "156": [ + 163, + -1, + 242 + ], + "157": [ + 136, + -1, + 170 + ], + "158": [ + 191, + 1, + 254 + ], + "159": [ + 137, + -1, + 8 + ], + "160": [ + 157, + 1, + 140 + ], + "161": [ + 146, + 1, + 8 + ], + "162": [ + 135, + 1, + 193 + ], + "163": [ + 125, + -1, + 264 + ], + "164": [ + -1, + 0, + 0 + ], + "165": [ + 127, + -1, + 289 + ], + "166": [ + 151, + 1, + 133 + ], + "167": [ + 151, + 1, + 8 + ], + "168": [ + 150, + 1, + 8 + ], + "169": [ + 139, + -1, + 243 + ], + "170": [ + 118, + 1, + 214 + ], + "171": [ + 142, + 1, + 8 + ], + "172": [ + 141, + 1, + 230 + ], + "173": [ + 114, + -1, + 94 + ], + "174": [ + -1, + 0, + 264 + ], + "175": [ + -1, + 0, + 0 + ], + "176": [ + 117, + 1, + 182 + ], + "177": [ + 116, + 1, + 8 + ], + "178": [ + 115, + 1, + 8 + ], + "179": [ + 138, + -1, + 146 + ], + "180": [ + 117, + 1, + 8 + ], + "181": [ + 116, + -1, + 179 + ], + "182": [ + 174, + -1, + 216 + ], + "183": [ + -1, + 0, + 0 + ], + "184": [ + 112, + 1, + 224 + ], + "185": [ + 141, + -1, + 174 + ], + "186": [ + 141, + 1, + 8 + ], + "187": [ + 140, + 1, + 8 + ], + "188": [ + 114, + -1, + 8 + ], + "189": [ + 143, + 1, + 8 + ], + "190": [ + 155, + 1, + 134 + ], + "191": [ + 201, + -1, + 236 + ], + "192": [ + 179, + 1, + 8 + ], + "193": [ + 190, + -1, + 8 + ], + "194": [ + 118, + 1, + 8 + ], + "195": [ + 185, + 1, + 8 + ], + "196": [ + 172, + 1, + 8 + ], + "197": [ + 147, + 1, + 8 + ], + "198": [ + 113, + 1, + 8 + ], + "199": [ + 155, + -1, + 8 + ], + "200": [ + 138, + 1, + 8 + ], + "201": [ + 206, + -1, + 263 + ], + "202": [ + 149, + -1, + 8 + ], + "203": [ + 122, + -1, + 218 + ], + "204": [ + 173, + -1, + 8 + ], + "205": [ + 170, + 1, + 8 + ], + "206": [ + 169, + 1, + 224 + ], + "207": [ + 120, + 1, + 8 + ], + "208": [ + 176, + 1, + 8 + ], + "209": [ + 181, + 1, + 8 + ], + "210": [ + 160, + 1, + 8 + ], + "211": [ + -1, + 0, + 0 + ], + "212": [ + 124, + 1, + 8 + ], + "213": [ + 166, + 1, + 8 + ], + "214": [ + 131, + 1, + 8 + ], + "215": [ + 129, + 1, + 8 + ], + "216": [ + -1, + 0, + 0 + ], + "217": [ + 165, + -1, + 261 + ], + "218": [ + -1, + 0, + 0 + ], + "219": [ + 157, + 1, + 8 + ], + "220": [ + 134, + 1, + 8 + ], + "221": [ + 162, + 1, + 8 + ], + "222": [ + 121, + -1, + 8 + ], + "223": [ + 158, + -1, + 233 + ] + }, + "prim_cost": 13716, + "profitable_helpers": 951, + "roots": 17, + "semantic_controls": [ + { + "mutation": "omit_target_preparation", + "witnesses": { + "dual": { + "actual": "-1", + "column": 184, + "expected": "0", + "row": 112 + }, + "forward": { + "actual": "-1", + "column": 119, + "expected": "0", + "row": 112 + }, + "inverse": { + "actual": "1", + "column": 169, + "expected": "0", + "row": 112 + } + } + }, + { + "mutation": "omit_target_restoration", + "witnesses": { + "dual": { + "actual": "1", + "column": 184, + "expected": "0", + "row": 112 + }, + "forward": { + "actual": "1", + "column": 169, + "expected": "0", + "row": 112 + }, + "inverse": { + "actual": "-1", + "column": 119, + "expected": "0", + "row": 112 + } + } + }, + { + "mutation": "parent_before_child_preparation", + "witnesses": { + "dual": { + "actual": "1", + "column": 121, + "expected": "0", + "row": 114 + }, + "forward": { + "actual": "1", + "column": 139, + "expected": "0", + "row": 112 + }, + "inverse": { + "actual": "-1", + "column": 139, + "expected": "0", + "row": 112 + } + } + }, + { + "mutation": "omit_helper_preparation", + "witnesses": { + "dual": { + "actual": "-1", + "column": 237, + "expected": "0", + "row": 224 + }, + "forward": { + "actual": "0", + "column": 234, + "expected": "1/2", + "row": 112 + }, + "inverse": { + "actual": "1", + "column": 238, + "expected": "0", + "row": 229 + } + } + }, + { + "mutation": "omit_helper_restoration", + "witnesses": { + "dual": { + "actual": "0", + "column": 119, + "expected": "1/2", + "row": 224 + }, + "forward": { + "actual": "1", + "column": 238, + "expected": "0", + "row": 229 + }, + "inverse": { + "actual": "0", + "column": 234, + "expected": "-1/2", + "row": 112 + } + } + }, + { + "mutation": "flip_helper_preparation_sign", + "witnesses": { + "dual": { + "actual": "-2", + "column": 288, + "expected": "0", + "row": 296 + }, + "forward": { + "actual": "-1/2", + "column": 296, + "expected": "1/2", + "row": 112 + }, + "inverse": { + "actual": "-2", + "column": 296, + "expected": "0", + "row": 288 + } + } + }, + { + "mutation": "flip_residual_sign", + "witnesses": { + "dual": { + "actual": "-1/2", + "column": 112, + "expected": "1/2", + "row": 224 + }, + "forward": { + "actual": "1/2", + "column": 224, + "expected": "-1/2", + "row": 112 + }, + "inverse": { + "actual": "-1/2", + "column": 224, + "expected": "1/2", + "row": 112 + } + } + }, + { + "mutation": "flip_target_restoration_sign", + "witnesses": { + "dual": { + "actual": "-2", + "column": 156, + "expected": "0", + "row": 163 + }, + "forward": { + "actual": "2", + "column": 163, + "expected": "0", + "row": 156 + }, + "inverse": { + "actual": "-2", + "column": 163, + "expected": "0", + "row": 156 + } + } + }, + { + "mutation": "stale_original_injection", + "witnesses": { + "dual": { + "actual": "1", + "column": 112, + "expected": "1/2", + "row": 224 + }, + "forward": { + "actual": "-1", + "column": 224, + "expected": "-1/2", + "row": 112 + }, + "inverse": { + "actual": "1", + "column": 224, + "expected": "1/2", + "row": 112 + } + } + }, + { + "full_arbitrary_target_domain_rejects": true, + "helper_only_projection_passes": true, + "mutation": "omit_target_preparation", + "projected_input_columns": 520 + } + ], + "source_compressed_sha256": "735c540b1fe29d0ceeb4d2f304ec941e5f2bd3bc92bafc8cce2b4f9a67a3b653", + "source_frame_predicate": "helper absent from start_extra and helper_final; not removed", + "target_edges": 95, + "target_only_bill": { + "coefficient_histogram": { + "-1": 447, + "-1/2": 789, + "-1/4": 176, + "-1/8": 2, + "-2": 16, + "-3/2": 3, + "1": 443, + "1/2": 709, + "1/4": 196, + "1/8": 4, + "2": 29, + "3": 2, + "3/2": 9, + "3/4": 2, + "3/8": 2, + "4": 3, + "5/4": 1, + "5/8": 1 + }, + "component_primitives": 13716, + "logical_additions": 2834 + }, + "target_residual_nonzeros": 2644, + "tree": [ + [ + 0, + -1, + 126, + 0 + ], + [ + 0, + -1, + 153, + 0 + ], + [ + 0, + -1, + 164, + 0 + ], + [ + 0, + -1, + 175, + 0 + ], + [ + 0, + -1, + 183, + 0 + ], + [ + 0, + -1, + 211, + 0 + ], + [ + 0, + -1, + 216, + 0 + ], + [ + 0, + -1, + 218, + 0 + ], + [ + 8, + 113, + 198, + 1 + ], + [ + 8, + 114, + 188, + -1 + ], + [ + 8, + 115, + 178, + 1 + ], + [ + 8, + 116, + 177, + 1 + ], + [ + 8, + 117, + 180, + 1 + ], + [ + 8, + 118, + 194, + 1 + ], + [ + 8, + 120, + 207, + 1 + ], + [ + 8, + 121, + 222, + -1 + ], + [ + 8, + 123, + 133, + -1 + ], + [ + 8, + 124, + 212, + 1 + ], + [ + 8, + 129, + 215, + 1 + ], + [ + 8, + 130, + 152, + 1 + ], + [ + 8, + 131, + 214, + 1 + ], + [ + 8, + 134, + 220, + 1 + ], + [ + 8, + 135, + 145, + 1 + ], + [ + 8, + 136, + 144, + 1 + ], + [ + 8, + 137, + 159, + -1 + ], + [ + 8, + 138, + 200, + 1 + ], + [ + 8, + 140, + 187, + 1 + ], + [ + 8, + 141, + 186, + 1 + ], + [ + 8, + 142, + 171, + 1 + ], + [ + 8, + 143, + 189, + 1 + ], + [ + 8, + 146, + 161, + 1 + ], + [ + 8, + 147, + 197, + 1 + ], + [ + 8, + 149, + 202, + -1 + ], + [ + 8, + 150, + 168, + 1 + ], + [ + 8, + 151, + 167, + 1 + ], + [ + 8, + 155, + 199, + -1 + ], + [ + 8, + 157, + 219, + 1 + ], + [ + 8, + 160, + 210, + 1 + ], + [ + 8, + 162, + 221, + 1 + ], + [ + 8, + 166, + 213, + 1 + ], + [ + 8, + 170, + 205, + 1 + ], + [ + 8, + 172, + 196, + 1 + ], + [ + 8, + 173, + 204, + -1 + ], + [ + 8, + 176, + 208, + 1 + ], + [ + 8, + 179, + 192, + 1 + ], + [ + 8, + 181, + 209, + 1 + ], + [ + 8, + 185, + 195, + 1 + ], + [ + 8, + 190, + 193, + -1 + ], + [ + 94, + 114, + 173, + -1 + ], + [ + 109, + 121, + 137, + -1 + ], + [ + 127, + 120, + 179, + 1 + ], + [ + 133, + 124, + 143, + -1 + ], + [ + 133, + 151, + 166, + 1 + ], + [ + 134, + 155, + 190, + 1 + ], + [ + 140, + 123, + 149, + 1 + ], + [ + 140, + 134, + 146, + 1 + ], + [ + 140, + 157, + 160, + 1 + ], + [ + 146, + 138, + 179, + -1 + ], + [ + 150, + 130, + 151, + 1 + ], + [ + 156, + 121, + 173, + 1 + ], + [ + 157, + 134, + 135, + 1 + ], + [ + 170, + 136, + 157, + -1 + ], + [ + 174, + 141, + 185, + -1 + ], + [ + 176, + 116, + 117, + -1 + ], + [ + 177, + 115, + 179, + -1 + ], + [ + 179, + 116, + 181, + -1 + ], + [ + 179, + 141, + 142, + -1 + ], + [ + 180, + 124, + 129, + 1 + ], + [ + 181, + 118, + 140, + -1 + ], + [ + 181, + 131, + 151, + -1 + ], + [ + 181, + 143, + 150, + 1 + ], + [ + 182, + 117, + 176, + 1 + ], + [ + 188, + 136, + 147, + 1 + ], + [ + 191, + 113, + 118, + -1 + ], + [ + 193, + 135, + 162, + 1 + ], + [ + 196, + 149, + 155, + -1 + ], + [ + 202, + 148, + 223, + -1 + ], + [ + 214, + 118, + 170, + 1 + ], + [ + 216, + -1, + 114, + 0 + ], + [ + 216, + 174, + 182, + -1 + ], + [ + 218, + 122, + 203, + -1 + ], + [ + 220, + 119, + 139, + -1 + ], + [ + 221, + -1, + 138, + 0 + ], + [ + 224, + 112, + 184, + 1 + ], + [ + 224, + 169, + 206, + 1 + ], + [ + 225, + -1, + 151, + 0 + ], + [ + 225, + 112, + 169, + -1 + ], + [ + 229, + -1, + 116, + 0 + ], + [ + 230, + 141, + 172, + 1 + ], + [ + 232, + 132, + 148, + -1 + ], + [ + 233, + 158, + 223, + -1 + ], + [ + 234, + -1, + 143, + 0 + ], + [ + 236, + 122, + 174, + 1 + ], + [ + 236, + 191, + 201, + -1 + ], + [ + 242, + 156, + 163, + -1 + ], + [ + 243, + 139, + 169, + -1 + ], + [ + 244, + 125, + 128, + 1 + ], + [ + 250, + -1, + 135, + 0 + ], + [ + 254, + 158, + 191, + 1 + ], + [ + 261, + 165, + 217, + -1 + ], + [ + 263, + 201, + 206, + -1 + ], + [ + 264, + -1, + 174, + 0 + ], + [ + 264, + 125, + 163, + -1 + ], + [ + 265, + -1, + 136, + 0 + ], + [ + 269, + 127, + 154, + -1 + ], + [ + 273, + -1, + 119, + 0 + ], + [ + 281, + 128, + 155, + 1 + ], + [ + 288, + 123, + 148, + -1 + ], + [ + 289, + 127, + 165, + -1 + ], + [ + 296, + 141, + 157, + -1 + ], + [ + 309, + 118, + 135, + 1 + ], + [ + 319, + 119, + 154, + 1 + ] + ], + "two-sided_panel_sha256": "27defe7675576baaebfd45efe40439f491a683bd923b7259c98495db8d3783ac", + "two-sided_word_sha256": "225cfbdf657b7aca21536948a5a810462393fe80d55e8662ae585dfafcdfdf3c", + "two_sided_bill": { + "coefficient_histogram": { + "-1": 508, + "-1/2": 552, + "-1/4": 91, + "-1/8": 2, + "-2": 13, + "1": 524, + "1/2": 455, + "1/4": 109, + "1/8": 4, + "2": 23, + "3": 2, + "3/2": 2, + "3/4": 2, + "4": 1 + }, + "component_primitives": 10633, + "logical_additions": 2288 + }, + "two_sided_residual_nonzeros": 1922 + }, + "extra": { + "active_helpers": [ + 224, + 225, + 227, + 229, + 231, + 232, + 233, + 234, + 235, + 236, + 237, + 238, + 239, + 240, + 241, + 242, + 243, + 244, + 245, + 246, + 247, + 248, + 250, + 252, + 253, + 254, + 255, + 256, + 257, + 258, + 259, + 260, + 261, + 262, + 263, + 264, + 266, + 268, + 269, + 270, + 271, + 272, + 274, + 276, + 278, + 279, + 280, + 281, + 283, + 284, + 285, + 286, + 287, + 288, + 290, + 292, + 294, + 295, + 296, + 297, + 300, + 301, + 302, + 303, + 306, + 308, + 310, + 312, + 313, + 315, + 316, + 317, + 318, + 319, + 322, + 324, + 326, + 328, + 329, + 332, + 333, + 334, + 335, + 336, + 338, + 340, + 342, + 343, + 344, + 345, + 347, + 348, + 349, + 350, + 351, + 352, + 354, + 356, + 358, + 359, + 360, + 361, + 364, + 365, + 366, + 367, + 368, + 370, + 372, + 374, + 375, + 376, + 377, + 379, + 380, + 381, + 382, + 383, + 384, + 386, + 388, + 390, + 391, + 392, + 393, + 396, + 397, + 398, + 399, + 400, + 401, + 402, + 403, + 404, + 405, + 406, + 407, + 409, + 410, + 411, + 413, + 414, + 415, + 416, + 417, + 418, + 419, + 420, + 421, + 422, + 423, + 425, + 426, + 427, + 429, + 430, + 431, + 432, + 433, + 434, + 435, + 436, + 437, + 438, + 439, + 440, + 441, + 442, + 443, + 444, + 445, + 446, + 447, + 456, + 459, + 461, + 463, + 464, + 465, + 466, + 467, + 468, + 469, + 470, + 471, + 479, + 481, + 490, + 491, + 492, + 493, + 502, + 503, + 504, + 505, + 514, + 515, + 516, + 517, + 546, + 547, + 548, + 549, + 558, + 560, + 568, + 570 + ], + "all_column_checks": [ + [ + "forest", + "forward", + 632 + ], + [ + "forest", + "inverse", + 632 + ], + [ + "forest", + "dual", + 632 + ], + [ + "two-sided", + "forward", + 632 + ], + [ + "two-sided", + "inverse", + 632 + ], + [ + "two-sided", + "dual", + 632 + ] + ], + "all_cycle_inequalities": 12544, + "edge_census_sha256": "6f40d71cf2d1cdacc32ac943016e60a34ffa38399b117fc57ebb103b2fb7f8f1", + "edge_count": 12544, + "eligible_helpers": [ + 224, + 225, + 227, + 229, + 231, + 232, + 233, + 234, + 235, + 236, + 237, + 238, + 239, + 240, + 241, + 242, + 243, + 244, + 245, + 246, + 247, + 248, + 250, + 252, + 253, + 254, + 255, + 256, + 257, + 258, + 259, + 260, + 261, + 262, + 263, + 264, + 266, + 268, + 269, + 270, + 271, + 272, + 274, + 276, + 278, + 279, + 280, + 281, + 283, + 284, + 285, + 286, + 287, + 288, + 290, + 292, + 294, + 295, + 296, + 297, + 300, + 301, + 302, + 303, + 306, + 308, + 310, + 312, + 313, + 315, + 316, + 317, + 318, + 319, + 322, + 324, + 326, + 328, + 329, + 332, + 333, + 334, + 335, + 336, + 338, + 340, + 342, + 343, + 344, + 345, + 347, + 348, + 349, + 350, + 351, + 352, + 354, + 356, + 358, + 359, + 360, + 361, + 364, + 365, + 366, + 367, + 368, + 370, + 372, + 374, + 375, + 376, + 377, + 379, + 380, + 381, + 382, + 383, + 384, + 386, + 388, + 390, + 391, + 392, + 393, + 396, + 397, + 398, + 399, + 400, + 401, + 402, + 403, + 404, + 405, + 406, + 407, + 409, + 410, + 411, + 413, + 414, + 415, + 416, + 417, + 418, + 419, + 420, + 421, + 422, + 423, + 425, + 426, + 427, + 429, + 430, + 431, + 432, + 433, + 434, + 435, + 436, + 437, + 438, + 439, + 440, + 441, + 442, + 443, + 444, + 445, + 446, + 447, + 456, + 459, + 461, + 463, + 464, + 465, + 466, + 467, + 468, + 469, + 470, + 471, + 479, + 481, + 490, + 491, + 492, + 493, + 502, + 503, + 504, + 505, + 514, + 515, + 516, + 517, + 546, + 547, + 548, + 549, + 558, + 560, + 568, + 570 + ], + "forest_panel_sha256": "665d299ef25d80ea42e54d10c2e94e15527c2657898b88f3970cc14eb4fac654", + "forest_word_sha256": "392a974d80dab042164dbbda7595b34fe23cecdeb67ec3dd60bf10fdfa1a0c32", + "helper_candidate_count": 85284, + "helper_candidates_sha256": "abcd9fd7d6e8eccfdf9f856435d387e46162c5f2250b08eec8e9cf8bd6bb6f6a", + "max_depth": 15, + "original_bill": { + "coefficient_histogram": { + "-1": 153, + "-1/2": 1379, + "-1/4": 1221, + "-1/8": 34, + "-2": 3, + "-3/2": 3, + "-3/4": 5, + "-3/8": 9, + "-5/8": 3, + "1": 193, + "1/2": 1307, + "1/4": 1319, + "1/8": 30, + "2": 39, + "3/2": 3, + "3/4": 15, + "3/8": 11, + "5/8": 9 + }, + "component_primitives": 31214, + "logical_additions": 5736 + }, + "pairs": [ + [ + 123, + 288, + 296, + -1 + ], + [ + 100, + 272, + 280, + -1 + ], + [ + 90, + 306, + 312, + -1 + ], + [ + 90, + 308, + 318, + 1 + ], + [ + 86, + 356, + 366, + 1 + ], + [ + 86, + 372, + 382, + 1 + ], + [ + 81, + 340, + 350, + 1 + ], + [ + 75, + 262, + 266, + -1 + ], + [ + 75, + 269, + 257, + 1 + ], + [ + 68, + 422, + 426, + -1 + ], + [ + 66, + 233, + 227, + 1 + ], + [ + 64, + 253, + 241, + 1 + ], + [ + 64, + 405, + 414, + 1 + ], + [ + 62, + 438, + 442, + -1 + ], + [ + 62, + 441, + 434, + -1 + ], + [ + 60, + 406, + 410, + -1 + ], + [ + 59, + 332, + 326, + 1 + ], + [ + 59, + 421, + 430, + 1 + ], + [ + 57, + 437, + 446, + 1 + ], + [ + 56, + 388, + 398, + 1 + ], + [ + 55, + 246, + 250, + -1 + ], + [ + 52, + 276, + 234, + 1 + ], + [ + 51, + 274, + 279, + 1 + ], + [ + 51, + 370, + 375, + 1 + ], + [ + 50, + 261, + 270, + 1 + ], + [ + 50, + 284, + 283, + -1 + ], + [ + 49, + 352, + 367, + 1 + ], + [ + 48, + 384, + 399, + -1 + ], + [ + 47, + 229, + 238, + 1 + ], + [ + 47, + 354, + 359, + 1 + ], + [ + 47, + 368, + 383, + 1 + ], + [ + 47, + 409, + 402, + -1 + ], + [ + 47, + 425, + 418, + -1 + ], + [ + 47, + 445, + 433, + 1 + ], + [ + 45, + 245, + 254, + 1 + ], + [ + 43, + 336, + 351, + -1 + ], + [ + 40, + 290, + 295, + 1 + ], + [ + 37, + 338, + 343, + 1 + ], + [ + 37, + 411, + 427, + 1 + ], + [ + 37, + 413, + 401, + 1 + ], + [ + 36, + 380, + 379, + -1 + ], + [ + 32, + 429, + 417, + 1 + ], + [ + 31, + 324, + 334, + 1 + ], + [ + 31, + 348, + 347, + -1 + ], + [ + 31, + 396, + 225, + 1 + ], + [ + 30, + 264, + 259, + -1 + ], + [ + 29, + 391, + 386, + 1 + ], + [ + 25, + 260, + 271, + 1 + ], + [ + 25, + 419, + 287, + -1 + ], + [ + 24, + 358, + 364, + 1 + ], + [ + 21, + 268, + 263, + 1 + ], + [ + 20, + 248, + 243, + -1 + ], + [ + 20, + 335, + 328, + 1 + ], + [ + 17, + 258, + 256, + 1 + ], + [ + 17, + 294, + 300, + 1 + ], + [ + 16, + 285, + 403, + 1 + ], + [ + 16, + 415, + 431, + 1 + ], + [ + 15, + 237, + 224, + -1 + ], + [ + 15, + 244, + 255, + 1 + ], + [ + 15, + 361, + 377, + 1 + ], + [ + 12, + 231, + 235, + -1 + ], + [ + 12, + 242, + 240, + 1 + ], + [ + 12, + 292, + 239, + -1 + ], + [ + 12, + 436, + 447, + 1 + ], + [ + 12, + 439, + 443, + -1 + ], + [ + 12, + 440, + 435, + -1 + ], + [ + 12, + 444, + 432, + 1 + ], + [ + 11, + 345, + 393, + 1 + ], + [ + 10, + 301, + 303, + 1 + ], + [ + 10, + 310, + 313, + -1 + ], + [ + 10, + 322, + 329, + -1 + ], + [ + 10, + 416, + 286, + 1 + ], + [ + 9, + 479, + 349, + 1 + ], + [ + 9, + 505, + 517, + 1 + ], + [ + 6, + 247, + 252, + 1 + ], + [ + 6, + 344, + 376, + 1 + ], + [ + 5, + 461, + 317, + 1 + ], + [ + 5, + 463, + 333, + 1 + ], + [ + 5, + 491, + 365, + 1 + ], + [ + 5, + 503, + 381, + 1 + ], + [ + 5, + 504, + 316, + 1 + ], + [ + 4, + 456, + 467, + 1 + ], + [ + 4, + 459, + 465, + 1 + ], + [ + 3, + 548, + 549, + -1 + ], + [ + 3, + 560, + 547, + 1 + ], + [ + 1, + 471, + 360, + -1 + ], + [ + 1, + 493, + 302, + 1 + ], + [ + 1, + 515, + 397, + 1 + ] + ], + "parent": { + "-1": null, + "112": [ + 169, + -1, + 225 + ], + "113": [ + 118, + -1, + 191 + ], + "114": [ + -1, + 0, + 216 + ], + "115": [ + 179, + -1, + 177 + ], + "116": [ + -1, + 0, + 229 + ], + "117": [ + 116, + -1, + 176 + ], + "118": [ + 135, + 1, + 309 + ], + "119": [ + -1, + 0, + 273 + ], + "120": [ + 179, + 1, + 127 + ], + "121": [ + 173, + 1, + 156 + ], + "122": [ + 174, + 1, + 236 + ], + "123": [ + 148, + -1, + 288 + ], + "124": [ + 143, + -1, + 133 + ], + "125": [ + 128, + 1, + 244 + ], + "126": [ + -1, + 0, + 0 + ], + "127": [ + 154, + -1, + 269 + ], + "128": [ + 155, + 1, + 281 + ], + "129": [ + 124, + 1, + 180 + ], + "130": [ + 151, + 1, + 150 + ], + "131": [ + 151, + -1, + 181 + ], + "132": [ + 148, + -1, + 232 + ], + "133": [ + 123, + -1, + 8 + ], + "134": [ + 135, + 1, + 157 + ], + "135": [ + -1, + 0, + 250 + ], + "136": [ + -1, + 0, + 265 + ], + "137": [ + 121, + -1, + 109 + ], + "138": [ + -1, + 0, + 221 + ], + "139": [ + 119, + -1, + 220 + ], + "140": [ + 118, + -1, + 181 + ], + "141": [ + 157, + -1, + 296 + ], + "142": [ + 141, + -1, + 179 + ], + "143": [ + -1, + 0, + 234 + ], + "144": [ + 136, + 1, + 8 + ], + "145": [ + 135, + 1, + 8 + ], + "146": [ + 134, + 1, + 140 + ], + "147": [ + 136, + 1, + 188 + ], + "148": [ + 223, + -1, + 202 + ], + "149": [ + 123, + 1, + 140 + ], + "150": [ + 143, + 1, + 181 + ], + "151": [ + -1, + 0, + 225 + ], + "152": [ + 130, + 1, + 8 + ], + "153": [ + -1, + 0, + 0 + ], + "154": [ + 119, + 1, + 319 + ], + "155": [ + 149, + -1, + 196 + ], + "156": [ + 163, + -1, + 242 + ], + "157": [ + 136, + -1, + 170 + ], + "158": [ + 191, + 1, + 254 + ], + "159": [ + 137, + -1, + 8 + ], + "160": [ + 157, + 1, + 140 + ], + "161": [ + 146, + 1, + 8 + ], + "162": [ + 135, + 1, + 193 + ], + "163": [ + 125, + -1, + 264 + ], + "164": [ + -1, + 0, + 0 + ], + "165": [ + 127, + -1, + 289 + ], + "166": [ + 151, + 1, + 133 + ], + "167": [ + 151, + 1, + 8 + ], + "168": [ + 150, + 1, + 8 + ], + "169": [ + 139, + -1, + 243 + ], + "170": [ + 118, + 1, + 214 + ], + "171": [ + 142, + 1, + 8 + ], + "172": [ + 141, + 1, + 230 + ], + "173": [ + 114, + -1, + 94 + ], + "174": [ + -1, + 0, + 264 + ], + "175": [ + -1, + 0, + 0 + ], + "176": [ + 117, + 1, + 182 + ], + "177": [ + 116, + 1, + 8 + ], + "178": [ + 115, + 1, + 8 + ], + "179": [ + 138, + -1, + 146 + ], + "180": [ + 117, + 1, + 8 + ], + "181": [ + 116, + -1, + 179 + ], + "182": [ + 174, + -1, + 216 + ], + "183": [ + -1, + 0, + 0 + ], + "184": [ + 112, + 1, + 224 + ], + "185": [ + 141, + -1, + 174 + ], + "186": [ + 141, + 1, + 8 + ], + "187": [ + 140, + 1, + 8 + ], + "188": [ + 114, + -1, + 8 + ], + "189": [ + 143, + 1, + 8 + ], + "190": [ + 155, + 1, + 134 + ], + "191": [ + 201, + -1, + 236 + ], + "192": [ + 179, + 1, + 8 + ], + "193": [ + 190, + -1, + 8 + ], + "194": [ + 118, + 1, + 8 + ], + "195": [ + 185, + 1, + 8 + ], + "196": [ + 172, + 1, + 8 + ], + "197": [ + 147, + 1, + 8 + ], + "198": [ + 113, + 1, + 8 + ], + "199": [ + 155, + -1, + 8 + ], + "200": [ + 138, + 1, + 8 + ], + "201": [ + 206, + -1, + 263 + ], + "202": [ + 149, + -1, + 8 + ], + "203": [ + 122, + -1, + 218 + ], + "204": [ + 173, + -1, + 8 + ], + "205": [ + 170, + 1, + 8 + ], + "206": [ + 169, + 1, + 224 + ], + "207": [ + 120, + 1, + 8 + ], + "208": [ + 176, + 1, + 8 + ], + "209": [ + 181, + 1, + 8 + ], + "210": [ + 160, + 1, + 8 + ], + "211": [ + -1, + 0, + 0 + ], + "212": [ + 124, + 1, + 8 + ], + "213": [ + 166, + 1, + 8 + ], + "214": [ + 131, + 1, + 8 + ], + "215": [ + 129, + 1, + 8 + ], + "216": [ + -1, + 0, + 0 + ], + "217": [ + 165, + -1, + 261 + ], + "218": [ + -1, + 0, + 0 + ], + "219": [ + 157, + 1, + 8 + ], + "220": [ + 134, + 1, + 8 + ], + "221": [ + 162, + 1, + 8 + ], + "222": [ + 121, + -1, + 8 + ], + "223": [ + 158, + -1, + 233 + ] + }, + "prim_cost": 13716, + "profitable_helpers": 951, + "roots": 17, + "semantic_controls": [ + { + "mutation": "omit_target_preparation", + "witnesses": { + "dual": { + "actual": "-1", + "column": 184, + "expected": "0", + "row": 112 + }, + "forward": { + "actual": "-1", + "column": 119, + "expected": "0", + "row": 112 + }, + "inverse": { + "actual": "1", + "column": 169, + "expected": "0", + "row": 112 + } + } + }, + { + "mutation": "omit_target_restoration", + "witnesses": { + "dual": { + "actual": "1", + "column": 184, + "expected": "0", + "row": 112 + }, + "forward": { + "actual": "1", + "column": 169, + "expected": "0", + "row": 112 + }, + "inverse": { + "actual": "-1", + "column": 119, + "expected": "0", + "row": 112 + } + } + }, + { + "mutation": "parent_before_child_preparation", + "witnesses": { + "dual": { + "actual": "1", + "column": 121, + "expected": "0", + "row": 114 + }, + "forward": { + "actual": "1", + "column": 139, + "expected": "0", + "row": 112 + }, + "inverse": { + "actual": "-1", + "column": 139, + "expected": "0", + "row": 112 + } + } + }, + { + "mutation": "omit_helper_preparation", + "witnesses": { + "dual": { + "actual": "-1", + "column": 237, + "expected": "0", + "row": 224 + }, + "forward": { + "actual": "0", + "column": 234, + "expected": "1/2", + "row": 112 + }, + "inverse": { + "actual": "1", + "column": 238, + "expected": "0", + "row": 229 + } + } + }, + { + "mutation": "omit_helper_restoration", + "witnesses": { + "dual": { + "actual": "0", + "column": 119, + "expected": "1/2", + "row": 224 + }, + "forward": { + "actual": "1", + "column": 238, + "expected": "0", + "row": 229 + }, + "inverse": { + "actual": "0", + "column": 234, + "expected": "-1/2", + "row": 112 + } + } + }, + { + "mutation": "flip_helper_preparation_sign", + "witnesses": { + "dual": { + "actual": "-2", + "column": 288, + "expected": "0", + "row": 296 + }, + "forward": { + "actual": "-1/2", + "column": 296, + "expected": "1/2", + "row": 112 + }, + "inverse": { + "actual": "-2", + "column": 296, + "expected": "0", + "row": 288 + } + } + }, + { + "mutation": "flip_residual_sign", + "witnesses": { + "dual": { + "actual": "-1/2", + "column": 112, + "expected": "1/2", + "row": 224 + }, + "forward": { + "actual": "1/2", + "column": 224, + "expected": "-1/2", + "row": 112 + }, + "inverse": { + "actual": "-1/2", + "column": 224, + "expected": "1/2", + "row": 112 + } + } + }, + { + "mutation": "flip_target_restoration_sign", + "witnesses": { + "dual": { + "actual": "-2", + "column": 156, + "expected": "0", + "row": 163 + }, + "forward": { + "actual": "2", + "column": 163, + "expected": "0", + "row": 156 + }, + "inverse": { + "actual": "-2", + "column": 163, + "expected": "0", + "row": 156 + } + } + }, + { + "mutation": "stale_original_injection", + "witnesses": { + "dual": { + "actual": "1", + "column": 112, + "expected": "1/2", + "row": 224 + }, + "forward": { + "actual": "-1", + "column": 224, + "expected": "-1/2", + "row": 112 + }, + "inverse": { + "actual": "1", + "column": 224, + "expected": "1/2", + "row": 112 + } + } + }, + { + "full_arbitrary_target_domain_rejects": true, + "helper_only_projection_passes": true, + "mutation": "omit_target_preparation", + "projected_input_columns": 520 + } + ], + "source_compressed_sha256": "886338fc32da14f3389a82c8120a1bcf9c5e2f0ec3e9b2d377fdae809e1d977f", + "source_frame_predicate": "helper absent from start_extra and helper_final; not removed", + "target_edges": 95, + "target_only_bill": { + "coefficient_histogram": { + "-1": 447, + "-1/2": 789, + "-1/4": 176, + "-1/8": 2, + "-2": 16, + "-3/2": 3, + "1": 443, + "1/2": 709, + "1/4": 196, + "1/8": 4, + "2": 29, + "3": 2, + "3/2": 9, + "3/4": 2, + "3/8": 2, + "4": 3, + "5/4": 1, + "5/8": 1 + }, + "component_primitives": 13716, + "logical_additions": 2834 + }, + "target_residual_nonzeros": 2644, + "tree": [ + [ + 0, + -1, + 126, + 0 + ], + [ + 0, + -1, + 153, + 0 + ], + [ + 0, + -1, + 164, + 0 + ], + [ + 0, + -1, + 175, + 0 + ], + [ + 0, + -1, + 183, + 0 + ], + [ + 0, + -1, + 211, + 0 + ], + [ + 0, + -1, + 216, + 0 + ], + [ + 0, + -1, + 218, + 0 + ], + [ + 8, + 113, + 198, + 1 + ], + [ + 8, + 114, + 188, + -1 + ], + [ + 8, + 115, + 178, + 1 + ], + [ + 8, + 116, + 177, + 1 + ], + [ + 8, + 117, + 180, + 1 + ], + [ + 8, + 118, + 194, + 1 + ], + [ + 8, + 120, + 207, + 1 + ], + [ + 8, + 121, + 222, + -1 + ], + [ + 8, + 123, + 133, + -1 + ], + [ + 8, + 124, + 212, + 1 + ], + [ + 8, + 129, + 215, + 1 + ], + [ + 8, + 130, + 152, + 1 + ], + [ + 8, + 131, + 214, + 1 + ], + [ + 8, + 134, + 220, + 1 + ], + [ + 8, + 135, + 145, + 1 + ], + [ + 8, + 136, + 144, + 1 + ], + [ + 8, + 137, + 159, + -1 + ], + [ + 8, + 138, + 200, + 1 + ], + [ + 8, + 140, + 187, + 1 + ], + [ + 8, + 141, + 186, + 1 + ], + [ + 8, + 142, + 171, + 1 + ], + [ + 8, + 143, + 189, + 1 + ], + [ + 8, + 146, + 161, + 1 + ], + [ + 8, + 147, + 197, + 1 + ], + [ + 8, + 149, + 202, + -1 + ], + [ + 8, + 150, + 168, + 1 + ], + [ + 8, + 151, + 167, + 1 + ], + [ + 8, + 155, + 199, + -1 + ], + [ + 8, + 157, + 219, + 1 + ], + [ + 8, + 160, + 210, + 1 + ], + [ + 8, + 162, + 221, + 1 + ], + [ + 8, + 166, + 213, + 1 + ], + [ + 8, + 170, + 205, + 1 + ], + [ + 8, + 172, + 196, + 1 + ], + [ + 8, + 173, + 204, + -1 + ], + [ + 8, + 176, + 208, + 1 + ], + [ + 8, + 179, + 192, + 1 + ], + [ + 8, + 181, + 209, + 1 + ], + [ + 8, + 185, + 195, + 1 + ], + [ + 8, + 190, + 193, + -1 + ], + [ + 94, + 114, + 173, + -1 + ], + [ + 109, + 121, + 137, + -1 + ], + [ + 127, + 120, + 179, + 1 + ], + [ + 133, + 124, + 143, + -1 + ], + [ + 133, + 151, + 166, + 1 + ], + [ + 134, + 155, + 190, + 1 + ], + [ + 140, + 123, + 149, + 1 + ], + [ + 140, + 134, + 146, + 1 + ], + [ + 140, + 157, + 160, + 1 + ], + [ + 146, + 138, + 179, + -1 + ], + [ + 150, + 130, + 151, + 1 + ], + [ + 156, + 121, + 173, + 1 + ], + [ + 157, + 134, + 135, + 1 + ], + [ + 170, + 136, + 157, + -1 + ], + [ + 174, + 141, + 185, + -1 + ], + [ + 176, + 116, + 117, + -1 + ], + [ + 177, + 115, + 179, + -1 + ], + [ + 179, + 116, + 181, + -1 + ], + [ + 179, + 141, + 142, + -1 + ], + [ + 180, + 124, + 129, + 1 + ], + [ + 181, + 118, + 140, + -1 + ], + [ + 181, + 131, + 151, + -1 + ], + [ + 181, + 143, + 150, + 1 + ], + [ + 182, + 117, + 176, + 1 + ], + [ + 188, + 136, + 147, + 1 + ], + [ + 191, + 113, + 118, + -1 + ], + [ + 193, + 135, + 162, + 1 + ], + [ + 196, + 149, + 155, + -1 + ], + [ + 202, + 148, + 223, + -1 + ], + [ + 214, + 118, + 170, + 1 + ], + [ + 216, + -1, + 114, + 0 + ], + [ + 216, + 174, + 182, + -1 + ], + [ + 218, + 122, + 203, + -1 + ], + [ + 220, + 119, + 139, + -1 + ], + [ + 221, + -1, + 138, + 0 + ], + [ + 224, + 112, + 184, + 1 + ], + [ + 224, + 169, + 206, + 1 + ], + [ + 225, + -1, + 151, + 0 + ], + [ + 225, + 112, + 169, + -1 + ], + [ + 229, + -1, + 116, + 0 + ], + [ + 230, + 141, + 172, + 1 + ], + [ + 232, + 132, + 148, + -1 + ], + [ + 233, + 158, + 223, + -1 + ], + [ + 234, + -1, + 143, + 0 + ], + [ + 236, + 122, + 174, + 1 + ], + [ + 236, + 191, + 201, + -1 + ], + [ + 242, + 156, + 163, + -1 + ], + [ + 243, + 139, + 169, + -1 + ], + [ + 244, + 125, + 128, + 1 + ], + [ + 250, + -1, + 135, + 0 + ], + [ + 254, + 158, + 191, + 1 + ], + [ + 261, + 165, + 217, + -1 + ], + [ + 263, + 201, + 206, + -1 + ], + [ + 264, + -1, + 174, + 0 + ], + [ + 264, + 125, + 163, + -1 + ], + [ + 265, + -1, + 136, + 0 + ], + [ + 269, + 127, + 154, + -1 + ], + [ + 273, + -1, + 119, + 0 + ], + [ + 281, + 128, + 155, + 1 + ], + [ + 288, + 123, + 148, + -1 + ], + [ + 289, + 127, + 165, + -1 + ], + [ + 296, + 141, + 157, + -1 + ], + [ + 309, + 118, + 135, + 1 + ], + [ + 319, + 119, + 154, + 1 + ] + ], + "two-sided_panel_sha256": "27defe7675576baaebfd45efe40439f491a683bd923b7259c98495db8d3783ac", + "two-sided_word_sha256": "20b8b7779904f7c33832f426489c192bf4b1ea0b7e53e041a5841e144d521f31", + "two_sided_bill": { + "coefficient_histogram": { + "-1": 508, + "-1/2": 552, + "-1/4": 91, + "-1/8": 2, + "-2": 13, + "1": 524, + "1/2": 455, + "1/4": 109, + "1/8": 4, + "2": 23, + "3": 2, + "3/2": 2, + "3/4": 2, + "4": 1 + }, + "component_primitives": 10633, + "logical_additions": 2288 + }, + "two_sided_residual_nonzeros": 1922 + } + } +} diff --git a/research/staged-compensation-forests/artifacts/FOREST-COMPENSATION-base.json.gz b/research/staged-compensation-forests/artifacts/FOREST-COMPENSATION-base.json.gz new file mode 100644 index 0000000000000000000000000000000000000000..c589fb5b316d229a2dfada88e550909744cbb458 GIT binary patch literal 8882 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

c^2e-a+VPhAq3>{xXm(b1#L+ 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�!JFKkprK&c{~ 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%0D)yj}b16uT^~!f2krUhFSb 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 F{|7mB)_VW| literal 0 HcmV?d00001 diff --git a/research/staged-compensation-forests/artifacts/INDEPENDENT-FOREST.json.gz b/research/staged-compensation-forests/artifacts/INDEPENDENT-FOREST.json.gz new file mode 100644 index 0000000000000000000000000000000000000000..743ac1725e8cf52db4eb0977b54698f92ae205d7 GIT binary patch literal 6460 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 CvcYNq literal 0 HcmV?d00001 diff --git a/research/staged-compensation-forests/artifacts/PR1080-COMPARISON.json b/research/staged-compensation-forests/artifacts/PR1080-COMPARISON.json new file mode 100644 index 0000000000..ee67cdcb82 --- /dev/null +++ b/research/staged-compensation-forests/artifacts/PR1080-COMPARISON.json @@ -0,0 +1,730 @@ +{ + "current_active_helpers": 207, + "current_component_price": 31214, + "current_eighth_witnesses": [ + [ + 113, + 288, + "-1/8" + ], + [ + 113, + 296, + "1/8" + ], + [ + 113, + 302, + "-5/8" + ], + [ + 118, + 288, + "1/8" + ], + [ + 118, + 296, + "-1/8" + ], + [ + 118, + 302, + "-3/8" + ], + [ + 122, + 288, + "-1/8" + ], + [ + 122, + 296, + "-3/8" + ], + [ + 122, + 302, + "-1/8" + ], + [ + 123, + 288, + "3/8" + ], + [ + 123, + 296, + "1/8" + ], + [ + 123, + 302, + "-1/8" + ], + [ + 125, + 288, + "1/8" + ], + [ + 125, + 296, + "-1/8" + ], + [ + 125, + 302, + "-3/8" + ], + [ + 128, + 288, + "1/8" + ], + [ + 128, + 296, + "-1/8" + ], + [ + 128, + 302, + "-3/8" + ], + [ + 133, + 288, + "-3/8" + ], + [ + 133, + 296, + "-1/8" + ], + [ + 133, + 302, + "1/8" + ], + [ + 134, + 288, + "-1/8" + ], + [ + 134, + 296, + "5/8" + ], + [ + 134, + 302, + "-1/8" + ], + [ + 135, + 288, + "1/8" + ], + [ + 135, + 296, + "3/8" + ], + [ + 135, + 302, + "1/8" + ], + [ + 140, + 288, + "1/8" + ], + [ + 140, + 296, + "-1/8" + ], + [ + 140, + 302, + "5/8" + ], + [ + 145, + 288, + "1/8" + ], + [ + 145, + 296, + "3/8" + ], + [ + 145, + 302, + "1/8" + ], + [ + 146, + 288, + "-1/8" + ], + [ + 146, + 296, + "5/8" + ], + [ + 146, + 302, + "-1/8" + ], + [ + 149, + 288, + "3/8" + ], + [ + 149, + 296, + "1/8" + ], + [ + 149, + 302, + "-1/8" + ], + [ + 155, + 288, + "1/8" + ], + [ + 155, + 296, + "-1/8" + ], + [ + 155, + 302, + "-3/8" + ], + [ + 156, + 288, + "1/8" + ], + [ + 156, + 296, + "-1/8" + ], + [ + 156, + 302, + "5/8" + ], + [ + 161, + 288, + "-1/8" + ], + [ + 161, + 296, + "5/8" + ], + [ + 161, + 302, + "-1/8" + ], + [ + 162, + 288, + "1/8" + ], + [ + 162, + 296, + "3/8" + ], + [ + 162, + 302, + "1/8" + ], + [ + 163, + 288, + "-1/8" + ], + [ + 163, + 296, + "1/8" + ], + [ + 163, + 302, + "-5/8" + ], + [ + 170, + 288, + "-1/8" + ], + [ + 170, + 296, + "1/8" + ], + [ + 170, + 302, + "3/8" + ], + [ + 174, + 288, + "-1/8" + ], + [ + 174, + 296, + "5/8" + ], + [ + 174, + 302, + "-1/8" + ], + [ + 182, + 288, + "-1/8" + ], + [ + 182, + 296, + "5/8" + ], + [ + 182, + 302, + "-1/8" + ], + [ + 187, + 288, + "1/8" + ], + [ + 187, + 296, + "-1/8" + ], + [ + 187, + 302, + "5/8" + ], + [ + 190, + 288, + "1/8" + ], + [ + 190, + 296, + "-1/8" + ], + [ + 190, + 302, + "-3/8" + ], + [ + 193, + 288, + "-1/8" + ], + [ + 193, + 296, + "1/8" + ], + [ + 193, + 302, + "3/8" + ], + [ + 194, + 288, + "1/8" + ], + [ + 194, + 296, + "-1/8" + ], + [ + 194, + 302, + "-3/8" + ], + [ + 198, + 288, + "-1/8" + ], + [ + 198, + 296, + "1/8" + ], + [ + 198, + 302, + "-5/8" + ], + [ + 199, + 288, + "-1/8" + ], + [ + 199, + 296, + "1/8" + ], + [ + 199, + 302, + "3/8" + ], + [ + 202, + 288, + "-3/8" + ], + [ + 202, + 296, + "-1/8" + ], + [ + 202, + 302, + "1/8" + ], + [ + 203, + 288, + "1/8" + ], + [ + 203, + 296, + "3/8" + ], + [ + 203, + 302, + "1/8" + ], + [ + 205, + 288, + "-1/8" + ], + [ + 205, + 296, + "1/8" + ], + [ + 205, + 302, + "3/8" + ], + [ + 220, + 288, + "-1/8" + ], + [ + 220, + 296, + "5/8" + ], + [ + 220, + 302, + "-1/8" + ], + [ + 221, + 288, + "1/8" + ], + [ + 221, + 296, + "3/8" + ], + [ + 221, + 302, + "1/8" + ] + ], + "current_nonzeros": 5736, + "current_targets": 112, + "frozen_helper_recipe_literal_id_transfer": { + "admitted_without_adapters_or_remapping": false, + "nonfull_terminal_helpers": [ + 226, + 228, + 230, + 251, + 267, + 299, + 304, + 320, + 331, + 363, + 395, + 412, + 428, + 511, + 531, + 572 + ], + "nonzero_entrance_helpers": [ + 462, + 474, + 476, + 477, + 478, + 480, + 523, + 526, + 527, + 528, + 529, + 531, + 542, + 561 + ], + "touched_helpers": [ + 226, + 228, + 230, + 231, + 235, + 236, + 238, + 239, + 240, + 242, + 244, + 246, + 247, + 248, + 251, + 252, + 253, + 254, + 255, + 256, + 258, + 260, + 262, + 263, + 264, + 267, + 268, + 269, + 270, + 271, + 272, + 274, + 276, + 278, + 279, + 280, + 283, + 284, + 285, + 286, + 287, + 288, + 290, + 292, + 294, + 295, + 296, + 299, + 300, + 301, + 302, + 303, + 304, + 306, + 308, + 310, + 312, + 315, + 316, + 317, + 318, + 319, + 320, + 322, + 324, + 326, + 331, + 332, + 333, + 334, + 335, + 336, + 338, + 340, + 342, + 343, + 344, + 345, + 347, + 348, + 349, + 350, + 351, + 352, + 354, + 356, + 358, + 359, + 360, + 361, + 363, + 364, + 365, + 366, + 367, + 368, + 370, + 372, + 374, + 375, + 377, + 379, + 380, + 381, + 382, + 383, + 384, + 386, + 388, + 390, + 391, + 392, + 393, + 395, + 396, + 397, + 398, + 399, + 400, + 402, + 404, + 406, + 407, + 411, + 412, + 413, + 414, + 415, + 416, + 418, + 420, + 422, + 423, + 427, + 428, + 430, + 431, + 434, + 436, + 438, + 439, + 440, + 443, + 444, + 445, + 446, + 447, + 462, + 464, + 465, + 467, + 468, + 469, + 474, + 476, + 477, + 478, + 479, + 480, + 491, + 493, + 494, + 495, + 502, + 503, + 505, + 507, + 511, + 515, + 516, + 517, + 519, + 523, + 526, + 527, + 528, + 529, + 531, + 542, + 558, + 560, + 561, + 570, + 572 + ], + "unavailable_removed_helpers": [ + 494, + 495, + 507, + 519 + ] + }, + "frozen_target_recipe_on_current_matrix_component_price": 22548, + "prior_active_helpers": 216, + "prior_component_price": 34728, + "prior_head": "803e080e181229a3af2196b7a13615c9d81ae10d", + "prior_nonzeros": 6320, + "prior_pr": 1080, + "prior_quarter_grid": true, + "prior_recipe_sha256": "d526804d9d627cbd850b0e54c3de9aadc74646e1a9b6befb577f42240720750a", + "prior_targets": 112, + "prior_word_compressed_sha256": "387a2266ffe006d20042221d967f67a4b18d9bb8de1cd1e01d4031b539fa74a5", + "prior_word_decoded_sha256": "24db880b7dab31e6af4eec8a1aba1bbbae29cd50d9a7b77cf0e9b571b3e5ae7c", + "scope": "One frozen source/recipe comparison. No relabeling search, general basis-equivalence obstruction, paid wrapper transfer, or global circuit optimum.", + "signed_permutation_equivalence_excluded_by_grid_and_support": true +} diff --git a/research/staged-compensation-forests/artifacts/PRICES.json b/research/staged-compensation-forests/artifacts/PRICES.json new file mode 100644 index 0000000000..d5056b1c9e --- /dev/null +++ b/research/staged-compensation-forests/artifacts/PRICES.json @@ -0,0 +1,151 @@ +{ + "arbitrary_microcircuit_input_symbols": [ + "source", + "target", + "coefficient-work" + ], + "bills": { + "forest": { + "component_primitives": 13716, + "histogram": { + "-1": 447, + "-1/2": 789, + "-1/4": 176, + "-1/8": 2, + "-2": 16, + "-3/2": 3, + "1": 443, + "1/2": 709, + "1/4": 196, + "1/8": 4, + "2": 29, + "3": 2, + "3/2": 9, + "3/4": 2, + "3/8": 2, + "4": 3, + "5/4": 1, + "5/8": 1 + }, + "logical_additions": 2834 + }, + "historical-rank-basis": { + "component_primitives": 17334, + "histogram": { + "-1": 132, + "-1/2": 774, + "-1/4": 659, + "-1/8": 20, + "-2": 2, + "-3/2": 2, + "-3/4": 4, + "-3/8": 4, + "-5/8": 2, + "1": 156, + "1/2": 712, + "1/4": 685, + "1/8": 16, + "2": 20, + "3/2": 2, + "3/4": 12, + "3/8": 6, + "5/8": 6 + }, + "logical_additions": 3214 + }, + "original": { + "component_primitives": 31214, + "histogram": { + "-1": 153, + "-1/2": 1379, + "-1/4": 1221, + "-1/8": 34, + "-2": 3, + "-3/2": 3, + "-3/4": 5, + "-3/8": 9, + "-5/8": 3, + "1": 193, + "1/2": 1307, + "1/4": 1319, + "1/8": 30, + "2": 39, + "3/2": 3, + "3/4": 15, + "3/8": 11, + "5/8": 9 + }, + "logical_additions": 5736 + }, + "two-sided": { + "component_primitives": 10633, + "histogram": { + "-1": 508, + "-1/2": 552, + "-1/4": 91, + "-1/8": 2, + "-2": 13, + "1": 524, + "1/2": 455, + "1/4": 109, + "1/8": 4, + "2": 23, + "3": 2, + "3/2": 2, + "3/4": 2, + "4": 1 + }, + "logical_additions": 2288 + } + }, + "microcircuit_coefficients": { + "-1": 4, + "-1/2": 5, + "-1/4": 6, + "-1/8": 7, + "-2": 5, + "-3/2": 7, + "-3/4": 8, + "-3/8": 9, + "-5/8": 10, + "1": 4, + "1/2": 5, + "1/4": 6, + "1/8": 7, + "2": 5, + "3": 6, + "3/2": 7, + "3/4": 8, + "3/8": 9, + "4": 6, + "5/4": 9, + "5/8": 10 + }, + "private_work_output": "zero", + "scope": "Independent emitted Horner microcircuit count; not a whole-supplier precision or tape invoice.", + "source_bindings": { + "forest": { + "compressed_sha256": "7a39e3cfe0113743714b1fc38258c36803b20c5f4abeecf977e76ff5da0533e7", + "decoded_sha256": "665d299ef25d80ea42e54d10c2e94e15527c2657898b88f3970cc14eb4fac654", + "input": "FOREST-COMPENSATION-base.json.gz" + }, + "historical-rank-basis": { + "compressed_sha256": "e7bdb1e299a43a8fcbdad4c598b7161e504a94691df3940a9a4eaf638f5013f0", + "decoded_sha256": "9f242abd5d2ed46a2e95dad46449d1d77c6fec330b5e0db6b324ac93fe756e62", + "input": "HISTORICAL-SHARED-COMPENSATION.json.gz" + }, + "original": { + "compressed_sha256": "735c540b1fe29d0ceeb4d2f304ec941e5f2bd3bc92bafc8cce2b4f9a67a3b653", + "decoded_sha256": "94d33db98720483f57efcd7bf50657f29f710554474e4f6b4b90617ad4500263", + "input": "SOURCE-base.json.gz" + }, + "two-sided": { + "compressed_sha256": "4119728ab2a3833636a77862bf997b46a50ff7c3c5a874b5d7c675d9577c8546", + "decoded_sha256": "27defe7675576baaebfd45efe40439f491a683bd923b7259c98495db8d3783ac", + "input": "TWO-SIDED-COMPENSATION-base.json.gz" + } + }, + "two_real_component_savings_vs_historical_rank_basis": 13402, + "two_real_component_savings_vs_original": 41162, + "two_real_component_savings_vs_target_forest": 6166 +} diff --git a/research/staged-compensation-forests/artifacts/SOURCE-base.json.gz b/research/staged-compensation-forests/artifacts/SOURCE-base.json.gz new file mode 100644 index 0000000000000000000000000000000000000000..dc6d321b1e8e2a837a1ff7bb60e8f8f78d043db5 GIT binary patch literal 72570 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 literal 0 HcmV?d00001 diff --git a/research/staged-compensation-forests/artifacts/SOURCE-extra.json.gz b/research/staged-compensation-forests/artifacts/SOURCE-extra.json.gz new file mode 100644 index 0000000000000000000000000000000000000000..78e7b2bb0653c8dcc0133980a19dd9d97ebdb67e GIT binary patch literal 72568 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

c^2e-a+VPhAq3>{xXm(b1#L+ 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 XCr{2jI{xo8_4j`PPH&knAJPB-v5`Pg literal 0 HcmV?d00001 diff --git a/research/staged-compensation-forests/artifacts/TWO-SIDED-COMPENSATION-extra.json.gz b/research/staged-compensation-forests/artifacts/TWO-SIDED-COMPENSATION-extra.json.gz new file mode 100644 index 0000000000000000000000000000000000000000..73ce8a7b09669fb7e85b9f6bdfcb01f0b75a8495 GIT binary patch literal 7761 zcmV-X9b=Rg1YHOzkvmtW)l`|Iz&e|>SFX$1$G``7QE{M_Q_sm1sGfI;!6 z;V1b|97xYkJfBH;NL0Q4q9}QB`DPT=U8PLK7tJa>k=4?H&Vb)JZtX`ceyb>};B|q{ zDrM`hF@T@jT$@_=cJ->|qbBq5@|(u3iPz4!UmOmteoN2#lQf#KVvnEXwTkh*2`%tS zDaF@q-vPgL8-8^=i`n;!`apw)c!37H;@1P*vuP@iwxRM@{;I7o$DJMy7{7EsD z#{xv_WK{Mp;B*a*Iu$7mXLGOxF%YVnvpbu!<< zM;*K04lH=%H}}Dona`8oEc}X@2S)MTGv=;SU+y9;uxrX)jHND6a`hwe@|)yJmtAJ2 z+*MAj=t1*#)1;Ypm!Vl#KfNPfCltS$&8)lQw2SL*r+1gq+P-?*P(ho}D?wov>uoO` z(2iF@lIgYXA?B%HUH1#M8E@ywDUCjF$qCE$yzB6k@{{HrT(jbTE)9R$(Gu6=l+L2n$e{j`tEY68^Xo2Zqahr z5rIWuUafo{tHo~}>pH9Bc61$#dN&oVs;%tkivz#t{?buf_pa?yJ6bfVQgD#4tp!m2IstWH_BIc^|=q|@|!$+@jFJ1@Z?b7Mc7Z<~_CU^CgS!ci%KCM>qDiHF( z*uDM#Ko`ZZC_iZ4xj0E5&}gpO|98H~s;kZwJYnmZcWs$kt9VtSDKG%;U{tNc=oVFI zF1?Z!zN)wGDzF~k);*yB=E|>hu2i zX;Aaq)2qsk&Zt844mha`fW|xAbUG}K>ezI=gdWWIb1yJwAQjmSexoK@HyOYbH zpI6kduJn34O`g&!HljZlok>3b6spN~xzk4ZgVL56|d1r1-J#9Dq@OOQ1 zd2j0PO}nk8d=A!%chd~J`MH~WcW)FU&usYBi3syoL-|8KcrXZ@3gct#j9TNVnZq1l0xfbVrl_N-J&+6q+*QRu#CJ_U=4LXj0biG?B*|as-fbNCAo*1k0b@-hjh9+6%8nhrw4r{ddKEqn^LbE=a9xD!5@rLCZG$nkxEQv0=xrp#xh4x+ zJdQbpb4ma{^^=z8q2FMIoM3?qOv|68dQQS|U$a#Hk>mblA4RU<7#2_&IQb?<<-t;$ zBW(Cf-<|`^%_v|(e)(cf%b#UeQ^WAGXmrX;Jou|BjTpf(quFABjivbDuVR~dYFlLh zdn)6P~)?*j1W?a$(-8&jGT#4W7^F@ayJuj zHz&s3oER@(_-lo%82fY81Gp*8g9(@T{V`|(#xeGuF9GxK)CYx!^&X24<>J;9=dtu2 zYXLW3o!E|e+TCR5eX-z3QX{=6tdyVv?le>)1{LCbR+(AxL5%vzN!udg!^PiiqE==L zig`_Kr8pj&4#%ZlzVo^kw?@3P816nH8^-zGR8=Wk8m=g2 z<45DBhNQ%;A99?lC$HL=Tf-aqvnfxO^EE>Yq)ZIGI`G~vxp0%wxgjvDZh?*KvL40LF<6jia~C$>J1@dkk2Q0may{P*DZ-0?{n}g=Ix_`7j-F?q!B{yt-p={m4l8dw z+sHB)7|xT4H~m;T9|k_yOW`d67`LV5*m<}sB^NGkTzulVQyGjW<3_kPb=2mkY9|NO z+$lK?m`lT<i!{Z+iyJ`p({MpCrzw6W7x$+4q2l`Rz~ebAc{)UVxcI;Z)`8}(jKhoQAxhV=)f`AqbxZpQOceU$w3*_uM$;?qg^GrkeJw?5Ff;o zu}u7_v6)T4ioZyd8%*3A&SEzHP`YnV%)O@&gOHf(sHD^@x}ZgD6gnX#Kg`JqDLIB- zp%2pJi`2l&xj2}urty&B8_>iXn;=Hm1Pm9Z^L2ehDHQw>9L#os_k+JQ>~<)I#*(qZ zWZ%UZcvJa<-NB2trGmxW8-A#ksCXG#@e?<~$wZfYHr(*56YCf*hSXyA@O&}~KA5YS zXAA9afpMBGKJ=`Q3kzUpDR^dI=zx{jn&PYB8*4*jb)^G0NeP!%W2Tz9l)&&}5Cx!IaMH`{wQTeIh8 zYj$vFG0r~?bqj!by?TS1&9_8Wj7`(C`Hk}oTbC^ zBjamrt6WCIxjV@3Hn4KbC|uzrcK#}y2c)?mk|tP6_~J+=+R^2EpH%T`KDt@T#;W7( zqs)(jSuyMefu)fGdv;)Q6bue}h44L)Og=uzWE+|AjZb1{d|3Lx-ayk?^2K6=n*i^2 zWMb6l%V~8}^kxVQhQGvAd*zK)*F3>xK_JNX9BROz@8E8oKh2M<5_V_DY91&a@E z0=ht##)d4)+qtr47`!H1criBt1&NAMK7<$ZPvY%a(J@Uh0QtpSM|J29V<(N^T90Lk z4SLT$yLQF)uyi}jAvPiL=C9@@eZ`CGz6XC4j{ahN^iRIHc)j5aOgEg#outqWXJVmW zg!XJP9_@x#9b$Y3DX*Cu@x*2nZbqRCDKR|Y2ZmTLdBd2Z!tY#EoF-39B!gCBL+Rii6&M#8|6KM|;dB$9oLk@=l#WLR&&)fB1sg`mE*R-MP^IOY zi@@Z^CwxP3@#`T6c$b?!SL%gN5=gfJaP_Q%6@R%~4QVChNIcYk-W%0(N_UnO^+(wNeN zQ=G7{iCy+Ls1`UErgySn@2gUh@Ix-e43N<;R{JQd?6`~%fB4Hkd(&dKY1gc zE+m7~g`^z5kd!7wK$;K%eK;sjIdmW}MEnP)({pm+;=3tc$G1K>023Qm9kk=XaHftV zfX{8MO4luQ9QwYox$w+w(ZVjg+uQuuGf|Jvck7dz;iMdmLiRGVd*$KCeMzUIUb>1j8YnC6A`0=hP%XIxC;)3yTpg3gYi1? zX6azORt}(1`MTef;;-!su%HxW;mW@VV_bsMt}kB~d*J+48r6a+2eb(`Q4Tgqytp{+ zDDw5n0d8D;Gv;>0okp6SM!s_ixMG8$qUhhN9pF?;&qW`xG{u$0(+cU$vfS8!)j3I~ zI@+8PAH-my3``#U$tV6M9I8%fonPEk{fve${Av!$NxTNc1P)DP))xUNm0e=0&0>{) zVMh7n;KZWrFrIj!6rowXnnA!>mjVk*A#0AlX_TP7STSB0$(nfcPdZpfi!^1YX!vnRkYb!fzC!UNIe~~EH1?_%^ z@6`05TUlakF9F+;J)iUq<+U3$=GudboMf~X9lLr(&SioY3fdwrS`|28pJqDKPbhyJ7`BVwnQ3R zBCWART4RYcwnQ3RA`>sfkf<*4;BQXuQ*?tic7rxfoo<{u-IVh_2B!p%rkvo>IM=#y zuJyz$9nJKn-)&MW-^{^*!4#7=C0>jVwJ&B9POc~gvI$$`xtd(Kcw8g^c4}TqNgSB; zdE?aY#;M;wFHNBoUkz{ih>X<9xsx_G40*C8cdiXM9GZS&z)ERtW`~{!druFKUjrjo zV*IKNWeg3|xby}Gy)`h|Ld?GY-oRN5oQ};nacgpCPMN>WK9A*9OkO5t>}zDklg~cs zngJ_gIClgG?K&|F*QV-}{wcUMEom&?xia2-)td%GrPI*;(Tufp!;H4pB>OjG3runr zbFfpDTrq>6iQN~kKv8*na1_{sv(F$Ey*WRil$@U5{CWY`;$RCgN2e2WzELyBBdIxG zxW|i>l$z3<%^|^2d3Q|YW6nXo`4DC`cYof;MCo8wG5>nESLrlT8w;?p1vs868{A~* z3Ke`}w~|35v9a`t-HmpVoL zhf))t&6uAkCVy93Y-(7IsbQfLmo0YU3Jx9_wi~5u^Wkgf;p;bXaN)7t=wh2sQ~P_% zQi_v5pl$XCwA~!CILnDO*-V0?j@DSygOf7WBt=QiwNdU6x&pWT9oWFR$&CAtp20Fs zp%NHRJWUQ2+s)Z#^BHDyv`9QVI~xuSpIDmWu+1m0lRGe70DI$g>JQ)j`GXh0&S|v+ zgQtx@>}lig3(mh$3`?g?F8JZEp5~|06{0_A>GIc>S}uD1HKxw`WILJ2y?Kf=dEIZk zd7(2n=~uxairAYMI-SGgeR7&IpBOac6N83)@}3ynxCtojgHJZh2ZtMrz;v*7e98UA z+%g#!3_ptEe|>WNZ*u%icvlu&pN0<jL@Wcl(-6VVCq2+?7Cl|a) zPR!Cte+x|aD$Z}02A)lETvY|{m;+N@6z8W-UHI_i{G@4MIt@9yZUsKgZ#vinc!%wc zt5raAP;D#-Ot}f0gYrRQXo4gT& zt3i{>HaT}7<}r6`)&pzS18X++=4I62&7j8>!8i$M@YD3l;Q?q5j}asDhCAm^4-P4D z+|lk67}fvA0_u(iA$K+ixwGXbIOL#nXH$+lZ~2b*35lD^Km>eZZ;BtT%wetr8y;gy zgHP-b$|>j0Ipw?wF80&x7k{FQfiISWli_eMU2<#qVeSp57gD`(Me`=yIXHMbCf-<_ z$LnEDxA9T))127ZNi8s*$_`p8onx>4@b1vWQhW0pnm4i3-o#RS^Guo_)-9WmX>VRh z^Co24n~>@ChCu&ph1FPk*2D2#>%sW0z;wn>e(r^=fHLNFJ$gKVJ#uipN6N4ZU4;Dk$*j8g=TWn%mGh==W7EJn`SP_F&b_t#u1A`em@ggA~qO!^f@Nf2@Dp@#LiN{?IiJL;WY6b)5S06mois##!l|P5O2l@ zv=RTh00UPPGg*3U^dudE;+JDCk-%_&x16_gZ}x3(_HD-}fR|$`^Yuos!Vk&}xWpr` z|4)2!WYoGGe26SCX3T7H1b* zO&HcXd=;MD`6q3mPQoPj>#&dKI_SI;cwprz^gXd*9hK5MCf^N*S+ECM{1d}EzP~A$ zsuWTR_TaQBdtlm>-8^-$`Kg1=kw1ZHsoDdVs?85o@4+t6!L6yIKPU!<>TVuP*!*C^ zZXO-j{OG`L9v#^H=)i8GZ8k^S1a??B_hgghZc^~<$r|jQ?D@DSYp}a{1YtLiAneKS za_sjN1mxD#6Gy^ihv(g##CPMSvKxPt;Gh?5KDY-42hhzahc-XfkQmg!;D@CgCn=a1 zf6tGCT%?4eGeHVGh`A@)R5yo)Z4M3Fiq46fBfU09dL>>YgdSAeimrx%;UZ-#zq7WL zJrg%SM7ueNYI6`(U|Kd5LnAkbR&5Tg3hXSzxh4x+oL*Sl9Qd>q-+HQ`RR(XfH{WLOCQbh4H2H~Xr87<=vW@L<$s0L$)0^;F@Kj9PNC!89ZI}~m z^CPj_Pzg({j1Ak7EW?R6wX44GdSH zi5n?&v^Wo*^A2YNNUV$x3n$;j|yuVi}Bgtj~UIuI8(O~W=&^HsqD0_KP+7oLdy&gyt!{koB zurf6NUe3)96Ya&;6vyrWC)gKrcW5)TVWK65iS}~g;!sDyll0348d&H#!52GX6T}e0 zo4g)eU#v~>Ma8B0NnoFRF;@ocmWdZvhLnq!3yC3Do|kjG!-Ik^cE*RL59|+G`Cq|@+#5OG)CU3slkZ0U84ZVK8;h5+!Qs;{uTv_qBZj4HEc7CKdF{i2 z&qcl1xQZL=BGo*?zfkc{uzAxB589i$VMpJSV>VaQS*peDP#_5HBn( zV5WQdE;p{ptA|r!W9g*9PmCUW@kS|dPD~CHehMq3lf$x-Pi$V&Qzr*&y&RjJ4umha zhA$R_ErSDl3LOX|K7#T_N92`&f2c0Jgo`I>44hTN+3dBX{ZopaZ>Z-F?wL!ths^S0)M?y%98P}hX_gRJGD#EWCJSsv}_yo%Rlgpq;|IltRwRgYZlr$r^Bu4vCUZL|j1P1y2`A)_ z2j4%%q&W!p zkJD|_Tya0;Fl7Hz*8TF-wfLsl#ZVj_~eqBDL_b{y}>#W~JS6w~}r+m1M|L2OIdXZUr=Vf>`! zpu6nQXu&-&O!?&g5u;_*SrnrMS}~jl=oUK01yp9nh@P;p**(8LpL?{e;DAZ6<)u9<1t-I@DR>5;3ym~ XCr{2jI{xo8_4j`PPH&knAJPB-v5`Pg literal 0 HcmV?d00001 diff --git a/research/staged-compensation-forests/artifacts/TWO-SIDED-WORD-base.json.gz b/research/staged-compensation-forests/artifacts/TWO-SIDED-WORD-base.json.gz new file mode 100644 index 0000000000000000000000000000000000000000..e1b8445ae381d04f2cb290b43607200bcf336e7c GIT binary patch literal 63913 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

c^2e-a+VPhAq3>{xXm(b1#L+ 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

jqTJS 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 aQu|QF2!NnnZ}mSuC)IbUKik53_WuAAXrxyF literal 0 HcmV?d00001 diff --git a/research/staged-compensation-forests/artifacts/WHOLE-WORD.json.gz b/research/staged-compensation-forests/artifacts/WHOLE-WORD.json.gz new file mode 100644 index 0000000000000000000000000000000000000000..267c41453ad5e8cb69d54eef3b62e81a9aed1900 GIT binary patch literal 34903 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 reduction for column, value in terms.items()} + exponent -= reduction + return terms, exponent + + +def row_scale(row, numerator, exponent): + terms, old_exponent = row + return normalize({column: numerator * value for column, value in terms.items()}, + old_exponent + exponent) + + +def row_add(left, right, numerator=1, exponent=0): + left_terms, left_exponent = left + right_terms, right_exponent = right + final_exponent = max(left_exponent, right_exponent + exponent) + terms = {column: value << (final_exponent - left_exponent) + for column, value in left_terms.items()} + shift = final_exponent - right_exponent - exponent + for column, value in right_terms.items(): + terms[column] = terms.get(column, 0) + numerator * (value << shift) + return normalize(terms, final_exponent) + + +def number(numerator, exponent=0): + require(numerator >= 0, "negative positive-envelope number") + if not numerator: + return 0, 0 + reduction = min(exponent, (numerator & -numerator).bit_length() - 1) + return numerator >> reduction, exponent - reduction + + +def number_add(left, right): + exponent = max(left[1], right[1]) + return number((left[0] << (exponent - left[1])) + + (right[0] << (exponent - right[1])), exponent) + + +def number_scale(value, numerator, exponent=0): + return number(value[0] * abs(numerator), value[1] + exponent) + + +def greater(left, right): + return (left[0] << right[1]) > (right[0] << left[1]) + + +def number_json(value): + numerator, exponent = value + return { + "numerator": numerator, + "denominator_exponent": exponent, + "value": str(Fraction(numerator, 1 << exponent)), + "strict_power_of_two_bits": numerator.bit_length() - exponent if numerator else 0, + } + + +def key_json(key): + if isinstance(key, tuple): + return [key_json(item) for item in key] + return key + + +def row_json(row): + return {"denominator_exponent": row[1], + "terms": [[key_json(key), value] for key, value in sorted(row[0].items())]} + + +def state_digest(state): + return digest([[key_json(key), row_json(row)] for key, row in sorted(state.items())]) + + +class Metrics: + def __init__(self): + self.maximum_denominator_exponent = 0 + self.maximum_numerator_bits = 1 + self.maximum_exact_row_sum = (1, 0) + self.maximum_positive_envelope = (1, 0) + self.grid_witness = None + self.row_sum_witness = None + self.envelope_witness = None + + def observe(self, row, envelope, index, reference): + terms, exponent = row + if exponent > self.maximum_denominator_exponent: + odd = next(key for key, value in sorted(terms.items()) if value % 2) + self.maximum_denominator_exponent = exponent + self.grid_witness = { + "instruction": index, "reference": key_json(reference), + "input_column": key_json(odd), "numerator": terms[odd], + "denominator_exponent": exponent, + } + if terms: + self.maximum_numerator_bits = max( + self.maximum_numerator_bits, + max(abs(value).bit_length() for value in terms.values())) + row_sum = number(sum(abs(value) for value in terms.values()), exponent) + if greater(row_sum, self.maximum_exact_row_sum): + self.maximum_exact_row_sum = row_sum + self.row_sum_witness = { + "instruction": index, "reference": key_json(reference), + "row": row_json(row), "row_sha256": digest(row_json(row))} + if greater(envelope, self.maximum_positive_envelope): + self.maximum_positive_envelope = envelope + self.envelope_witness = { + "instruction": index, "reference": key_json(reference)} + + def result(self): + return { + "maximum_denominator_exponent": self.maximum_denominator_exponent, + "maximum_numerator_bits": self.maximum_numerator_bits, + "maximum_exact_row_sum": number_json(self.maximum_exact_row_sum), + "maximum_positive_envelope": number_json(self.maximum_positive_envelope), + "grid_witness": self.grid_witness, + "exact_row_sum_witness": self.row_sum_witness, + "positive_envelope_witness": self.envelope_witness, + } + + +def inverse_gate(gate): + tag = gate[0] + if tag == "add": + return [tag, gate[1], gate[2], -gate[3], gate[4]] + if tag == "scale": + return [tag, gate[1], gate[3], gate[2]] + require(tag == "warp", "unknown inverse gate") + return [tag, gate[1], -gate[2]] + + +def dual_gate(gate): + tag = gate[0] + if tag == "add": + return [tag, gate[2], gate[1], -gate[3], gate[4]] + if tag == "scale": + return [tag, gate[1], gate[3], gate[2]] + require(tag == "warp", "unknown dual gate") + # Here the generator means the conjugate monomial K-bar, as in the + # inherited inverse-transpose alphabet. It is an independent free letter. + return gate[:] + + +def orientations(program, dual=False, inverse=False): + result = [dual_gate(gate) if dual else gate[:] for gate in program] + return [inverse_gate(gate) for gate in reversed(result)] if inverse else result + + +def bare_gate(gate): + tag = gate[0] + require(tag in ("add", "scale", "warp"), "unknown raw-word gate") + length = {"add": 5, "scale": 4, "warp": 3}[tag] + return gate[:length] + + +def raw_prefix(word): + gates = [] + for correction in word["initial_corrections"]: + q = Fraction(correction["coefficient"]) + source = correction["source"] + letters = correction["operator_word"] + gates += [["warp", source, op] for op in reversed(letters)] + gates += [["add", correction["target"], source, q.numerator, q.denominator]] + gates += [["warp", source, -op] for op in letters] + for section in ("precondition", "compensation"): + gates += [bare_gate(gate) for gate in word[section]] + return gates + + +def raw_program(word): + gates = raw_prefix(word) + for section in ("A", "cut"): + gates += [bare_gate(gate) for gate in word[section]] + at = {} + for operator, warp in enumerate(word["warps"], 1): + at.setdefault(warp[0], []).append(["warp", warp[1], operator]) + for index in range(len(word["B"]) + 1): + gates += at.get(index, []) + if index < len(word["B"]): + gates.append(bare_gate(word["B"][index])) + for section in ("restore", "cleanup"): + gates += [bare_gate(gate) for gate in word[section]] + return gates + + +def bind_emitted_prefix(word, canonical_word, events, dual): + kept = sorted(set(range(704)) - set(word["removed"])) + new_id = {register: index for index, register in enumerate(kept)} + expected_compensation = [ + ["add", new_id[gate[1]], new_id[gate[2]], gate[3], gate[4], 0] + for gate in word["compensation"]] + require(canonical_word["compensation"] == expected_compensation, + "raw-to-canonical compensation mismatch") + expected = [["phase", "zero_frame_precondition"]] + for gate in orientations(raw_prefix(word), dual): + if gate[0] == "warp": + expected.append(["warp", ["L", new_id[gate[1]]], gate[2], 0, 0]) + elif gate[0] == "scale": + expected.append(["scalar", ["scale", ["L", new_id[gate[1]]], + gate[2], gate[3]], 0]) + else: + expected.append(["scalar", ["add", ["L", new_id[gate[1]]], + ["L", new_id[gate[2]]], gate[3], gate[4]], 0]) + end = events.index(["phase", "entry_adapters"]) + require(events[:end] == expected, "literal emitted zero-frame prefix mismatch") + return {"events": end, "sha256": digest(expected)} + + +def free_replay(program, live, zero_buffers=()): + state = {r: ({(r, ()): 1}, 0) for r in live} + envelope = {r: (1, 0) for r in live} + for r in zero_buffers: + require(r not in state, "zero buffer aliases arbitrary input") + state[r] = ({}, 0) + envelope[r] = (0, 0) + metrics = Metrics() + for index, gate in enumerate(program): + tag, target = gate[:2] + require(target in state, "undeclared destination") + if tag == "warp": + operator = gate[2] + require(type(operator) is int and operator != 0, "invalid warp") + terms, exponent = state[target] + changed = {} + for (column, letters), value in terms.items(): + word = letters[1:] if letters and letters[0] == -operator else (operator,) + letters + key = column, word + require(key not in changed, "left free-word action must be injective") + changed[key] = value + state[target] = changed, exponent + elif tag == "scale": + numerator, exponent = dyadic(gate[2], gate[3]) + require(numerator != 0, "singular scale") + state[target] = row_scale(state[target], numerator, exponent) + envelope[target] = number_scale(envelope[target], numerator, exponent) + else: + require(tag == "add", "unknown operation") + source = gate[2] + require(source in state and source != target, "undeclared or aliasing source") + numerator, exponent = dyadic(gate[3], gate[4]) + require(numerator != 0, "zero addition") + state[target] = row_add(state[target], state[source], numerator, exponent) + envelope[target] = number_add( + envelope[target], number_scale(envelope[source], numerator, exponent)) + metrics.observe(state[target], envelope[target], index, target) + return state, metrics.result() + + +def difference(actual, expected): + for reference in sorted(set(actual) | set(expected)): + if actual.get(reference) != expected.get(reference): + return {"reference": key_json(reference), + "actual": row_json(actual.get(reference, ({}, 0))), + "expected": row_json(expected.get(reference, ({}, 0)))} + return None + + +def full_expected(live, zero_buffers, dual, inverse): + state = {r: ({(r, ()): 1}, 0) for r in live} + for r in zero_buffers: + state[r] = ({}, 0) + for port in range(112): + target, source = (port, 112 + port) if dual else (112 + port, port) + sign = (-1 if dual else 1) * (-1 if inverse else 1) + state[target][0][source, ()] = sign + return state + + +def audit_whole_word(word): + live = sorted(set(range(704)) - set(word["removed"])) + zero_buffers = sorted(704 + int(r) for r in word["helper_final"]) + require(len(live) == 632 and len(zero_buffers) == 91, "changed input domain") + program = raw_program(word) + result = {} + for dual in (False, True): + for inverse in (False, True): + label = ("dual" if dual else "forward") + ("-inverse" if inverse else "") + oriented = orientations(program, dual, inverse) + actual, metrics = free_replay(oriented, live, zero_buffers) + witness = difference(actual, full_expected(live, zero_buffers, dual, inverse)) + require(witness is None, f"whole-word endpoint {label}: {witness}") + result[label] = { + "all_arbitrary_input_columns": len(live), + "zero_buffer_columns_required_zero": len(zero_buffers), + "literal_gate_count": len(oriented), + "gate_counts": dict(sorted(Counter(gate[0] for gate in oriented).items())), + "endpoint_sha256": state_digest(actual), + "exact_endpoint": True, "all_zero_buffers_returned_exactly": True, + "metrics": metrics, + } + return result + + +def panel_sections(panel): + def kind(gate): + require(gate[0] == "add" and gate[-1] == [], "panel must be zero-frame additions") + target, source = gate[1:3] + if 112 <= target < 224 and 112 <= source < 224: + return "target" + if target >= 224 and source >= 224: + return "helper" + require(112 <= target < 224 and source >= 224, "incorrect panel bank") + return "residual" + runs = [] + for gate in panel: + label = kind(gate) + if not runs or runs[-1][0] != label: + runs.append((label, [])) + runs[-1][1].append(gate) + require([label for label, _ in runs] == + ["target", "helper", "residual", "helper", "target"], + "expected restored two-sided factorization") + return [gates for _, gates in runs] + + +def primitive_price(gate): + require(gate[0] == "add", "panel price only supports ADD") + numerator, exponent = dyadic(gate[3], gate[4]) + require(numerator != 0, "zero coefficient") + digits = [] + n = abs(numerator) + while n: + digits.append(n % 2) + n //= 2 + return 3 + len(digits) - 1 + sum(digits) + exponent + + +def panel_audit(source, candidate): + live = sorted(set(range(704)) - set(source["removed"])) + old = [bare_gate(gate) for gate in source["compensation"]] + new = [bare_gate(gate) for gate in candidate["compensation"]] + target_prepare, helper_prepare, residual, helper_restore, target_restore = panel_sections( + candidate["compensation"]) + require([bare_gate(gate) for gate in helper_restore] == + [inverse_gate(bare_gate(gate)) for gate in reversed(helper_prepare)], + "literal helper restoration mismatch") + require([bare_gate(gate) for gate in target_restore] == + [inverse_gate(bare_gate(gate)) for gate in reversed(target_prepare)], + "literal target restoration mismatch") + helpers = sorted({r for gate in candidate["compensation"] for r in gate[1:3] if r >= 224}) + require(all(r in live and str(r) not in source["start_extra"] + and str(r) not in source["helper_final"] for r in helpers), + "helper not available unwrapped at the compensation cut") + target_pre = [bare_gate(gate) for gate in target_prepare] + helper_pre = [bare_gate(gate) for gate in helper_prepare] + correction = [bare_gate(gate) for gate in residual] + helper_post = [bare_gate(gate) for gate in helper_restore] + target_post = [bare_gate(gate) for gate in target_restore] + checks = {} + for dual in (False, True): + for inverse in (False, True): + label = ("dual" if dual else "forward") + ("-inverse" if inverse else "") + old_state, old_metrics = free_replay(orientations(old, dual, inverse), live) + new_state, new_metrics = free_replay(orientations(new, dual, inverse), live) + require(difference(new_state, old_state) is None, "panel mismatch: " + label) + checks[label] = {"all_arbitrary_input_columns": len(live), + "endpoint_sha256": state_digest(new_state), + "old_prefix": old_metrics, "new_prefix": new_metrics} + sign = copy.deepcopy(new) + sign[-1][3] *= -1 + controls = { + "omit_target_prepare": helper_pre + correction + helper_post + target_post, + "omit_helper_prepare": target_pre + correction + helper_post + target_post, + "omit_helper_restore": target_pre + helper_pre + correction + target_post, + "omit_target_restore": target_pre + helper_pre + correction + helper_post, + "stale_original_pullback": target_pre + helper_pre + old + helper_post + target_post, + "literal_final_sign": sign, + "wrong_target_restore_order": target_pre + helper_pre + correction + helper_post + + list(reversed(target_post)), + } + rejected = [] + for dual in (False, True): + expected, _ = free_replay(orientations(old, dual), live) + for label, program in controls.items(): + state, _ = free_replay(orientations(program, dual), live) + witness = difference(state, expected) + require(witness is not None, "insensitive panel control: " + label) + rejected.append({"control": label, "orientation": "dual" if dual else "forward", + "witness": witness}) + # Deliberately omit the reversal required by a literal inverse. + expected, _ = free_replay(orientations(old, inverse=True), live) + state, _ = free_replay([inverse_gate(gate) for gate in new], live) + witness = difference(state, expected) + require(witness is not None, "insensitive inverse-order control") + rejected.append({"control": "invert_each_gate_without_reversal", "witness": witness}) + # Deliberately retain the forward sign on exactly one dual ADD. + bad_dual = orientations(new, dual=True) + bad_dual[0][3] *= -1 + state, _ = free_replay(bad_dual, live) + expected, _ = free_replay(orientations(old, dual=True), live) + witness = difference(state, expected) + require(witness is not None, "insensitive dual-sign control") + rejected.append({"control": "wrong_dual_sign", "witness": witness}) + names = ["target_prepare", "helper_prepare", "residual", "helper_restore", "target_restore"] + groups = [target_prepare, helper_prepare, residual, helper_restore, target_restore] + bill = {name: {"additions": len(gates), + "price_per_real_component": sum(map(primitive_price, gates))} + for name, gates in zip(names, groups)} + bill["source"] = {"additions": len(old), + "price_per_real_component": sum(map(primitive_price, source["compensation"]))} + bill["candidate"] = {"additions": len(new), + "price_per_real_component": sum(map(primitive_price, candidate["compensation"]))} + return {"input_columns": len(live), "helper_coordinates": helpers, + "all_helpers_enter_zero_frame_and_exit_full": True, + "restored_factorization": True, "checks": checks, + "bill": bill, "controls": rejected} + + +def historical_panel_audit(source, path): + require(hashlib.sha256(path.read_bytes()).hexdigest() == HISTORICAL_PANEL_HASH, + "historical rank-basis panel hash mismatch") + panel = read(path) + live = sorted(set(range(704)) - set(source["removed"])) + old = [bare_gate(gate) for gate in source["compensation"]] + new = [bare_gate(gate) for gate in panel] + checks = {} + for dual in (False, True): + for inverse in (False, True): + label = ("dual" if dual else "forward") + ("-inverse" if inverse else "") + expected, _ = free_replay(orientations(old, dual, inverse), live) + actual, metrics = free_replay(orientations(new, dual, inverse), live) + require(difference(actual, expected) is None, + "historical panel endpoint mismatch: " + label) + checks[label] = {"all_arbitrary_input_columns": len(live), + "endpoint_sha256": state_digest(actual), "prefix": metrics} + bill = sum(map(primitive_price, panel)) + require(len(panel) == 3214 and bill == 17334, "historical rank-basis bill changed") + return {"additions": len(panel), "price_per_real_component": bill, + "checks": checks, "scope": "Fresh boundary and panel-prefix replay only."} + + +def lower_scalar(operation): + """Binary Horner scalar expansion, independently spelled out.""" + tag = operation[0] + target = tuple(operation[1]) + work = ("W", 0) + if tag == "clear": + return [("clear", target)] + if tag == "copy": + return [("copy", target, tuple(operation[2]))] + if tag == "scale": + numerator, exponent = dyadic(operation[2], operation[3]) + absolute = abs(numerator) + require(absolute and absolute & (absolute - 1) == 0, "non-binary scale") + shift = absolute.bit_length() - 1 - exponent + result = [("double" if shift >= 0 else "halve", target)] * abs(shift) + if numerator < 0: + result.append(("negate", target)) + return result + require(tag == "add", "unknown scalar macro") + source = tuple(operation[2]) + require(target != source and work not in (target, source), "aliased scalar ADD") + numerator, exponent = dyadic(operation[3], operation[4]) + require(numerator != 0, "zero scalar ADD") + bits = [] + absolute = abs(numerator) + while absolute: + bits.append(absolute % 2) + absolute //= 2 + result = [("clear", work)] + for index, bit in enumerate(reversed(bits)): + if index: + result.append(("double", work)) + if bit: + result.append(("add", work, source, 1)) + result += [("halve", work)] * exponent + result += [("add", target, work, 1 if numerator > 0 else -1), ("clear", work)] + return result + + +def audit_scalar_projection(events, canonical_word, orientation): + n = 2 * canonical_word["v"] + canonical_word["R"] + require(n == 632, "unexpected compact logical dimension") + centers = len(canonical_word["centers"]) + zeroes = canonical_word["zero_buffers"] + sizes = {"L": set(range(n)), "C": set(range(centers)), "Z": set(zeroes), "W": {0}} + state = {("L", i): ({i: 1}, 0) for i in range(n)} + envelope = {("L", i): (1, 0) for i in range(n)} + for kind in ("C", "Z", "W"): + for i in sizes[kind]: + state[kind, i] = ({}, 0) + envelope[kind, i] = (0, 0) + metrics = Metrics() + counts = Counter() + by_phase = {} + phase = None + nonzero_clears = Counter() + active_zeroes = set() + primitive_index = 0 + macro_count = 0 + primitive_hash = hashlib.sha256() + for event_index, event in enumerate(events): + tag = event[0] + if tag == "phase": + phase = event[1] + continue + if tag == "zero_buffer": + z = event[2] + require(z in sizes["Z"], "undeclared zero buffer") + require(not state["Z", z][0], "nonzero private buffer at allocation/free") + if event[1] == "alloc": + require(z not in active_zeroes, "double zero-buffer allocation") + active_zeroes.add(z) + else: + require(event[1] == "free" and z in active_zeroes, "invalid zero-buffer free") + active_zeroes.remove(z) + continue + if tag != "scalar": + require(tag in ("adapter", "residual_adapter", "warp", "climb", "center"), + "unknown nonscalar event") + continue + macro_count += 1 + primitives = lower_scalar(event[1]) + for operation in primitives: + op, target = operation[:2] + require(target[0] in sizes and target[1] in sizes[target[0]], "invalid scalar destination") + if target[0] == "Z": + require(target[1] in active_zeroes, "unallocated private destination") + primitive_hash.update(canonical(operation) + b"\n") + counts[op] += 1 + by_phase.setdefault(phase, Counter())[op] += 1 + if op == "clear": + if state[target][0]: + nonzero_clears[target[0]] += 1 + state[target] = ({}, 0) + envelope[target] = (0, 0) + elif op == "copy": + source = operation[2] + require(source in state, "invalid scalar COPY source") + state[target] = state[source] + envelope[target] = envelope[source] + elif op == "add": + source, sign = operation[2:4] + require(source in state and source != target and sign in (-1, 1), + "invalid scalar ADD") + if source[0] == "Z": + require(source[1] in active_zeroes, "unallocated private source") + state[target] = row_add(state[target], state[source], sign) + envelope[target] = number_add(envelope[target], envelope[source]) + elif op == "double": + state[target] = row_scale(state[target], 2, 0) + envelope[target] = number_scale(envelope[target], 2, 0) + elif op == "halve": + state[target] = row_scale(state[target], 1, 1) + envelope[target] = number_scale(envelope[target], 1, 1) + else: + require(op == "negate", "unknown scalar primitive") + state[target] = row_scale(state[target], -1, 0) + metrics.observe(state[target], envelope[target], primitive_index, target) + primitive_index += 1 + require(not active_zeroes, "live private buffers at scalar endpoint") + expected = {("L", i): ({i: 1}, 0) for i in range(n)} + for i in range(112): + target, source, sign = ((112 + i, i, 1) if orientation == "forward" + else (i, 112 + i, -1)) + expected["L", target][0][source] = sign + for kind in ("C", "Z", "W"): + for index in sizes[kind]: + expected[kind, index] = ({}, 0) + witness = difference(state, expected) + require(witness is None, f"scalar endpoint {orientation}: {witness}") + return { + "arbitrary_logical_inputs": n, + "initial_zero_registers": {"C": centers, "Z": len(zeroes), "W": 1}, + "scalar_macro_count": macro_count, + "primitive_count_per_real_component": primitive_index, + "primitive_counts_per_real_component": dict(sorted(counts.items())), + "two_real_component_count": 2 * primitive_index, + "primitive_stream_sha256": primitive_hash.hexdigest(), + "primitive_counts_by_phase": {key: dict(sorted(value.items())) + for key, value in sorted(by_phase.items())}, + "nonzero_clear_assignments": dict(sorted(nonzero_clears.items())), + "endpoint_sha256": state_digest(state), + "exact_scalar_endpoint": True, + "metrics": metrics.result(), + "scope": "Scalar projection: nonscalar events act as identity; CLEAR is an assignment. " + "This is not a physical implementation or a reversible-erasure proof.", + } + + +def produced_programs(word_path, transport, emitter, directory): + env = dict(os.environ) + env.pop("PYTHONOPTIMIZE", None) + env["PYTHONDONTWRITEBYTECODE"] = "1" + for label, source, arguments in ( + ("transport", transport, [str(word_path), str(directory)]), + ("emitter", emitter, [str(directory)]), + ): + source_bytes = source.read_bytes() + require(hashlib.sha256(source_bytes).hexdigest() == PRODUCER_HASHES[label], + "producer execution buffer hash mismatch: " + label) + bootstrap = ( + "import sys\n" + "source = sys.stdin.buffer.read()\n" + "sys.argv = sys.argv[1:]\n" + "namespace = {'__name__': '__main__', '__file__': sys.argv[0]}\n" + "exec(compile(source, sys.argv[0], 'exec', dont_inherit=True, optimize=0), namespace)\n" + ) + completed = subprocess.run( + [sys.executable, "-I", "-B", "-c", bootstrap, str(source), *arguments], + input=source_bytes, capture_output=True, env=env, timeout=120) + require(completed.returncode == 0, + label + " failed: " + completed.stderr.decode(errors="replace")) + canonical_word = read(directory / "CANONICAL-WORD.json.gz") + programs = read(directory / "LOCAL-PROGRAMS.json.gz") + producer_checks = read(directory / "LOCAL-CHECKS.json") + require(set(programs) == {"forward", "backward"}, "incomplete emitted orientations") + for orientation, events in programs.items(): + require(digest(events) == producer_checks[orientation]["sha256"], + "emitted producer hash mismatch") + return canonical_word, programs, producer_checks + + +def main(): + parser = argparse.ArgumentParser(description=__doc__) + for name in ("source-base", "source-extra", "candidate-base", "candidate-extra", + "historical-panel-base", "historical-panel-extra", + "transport-source", "emitter-source", "output"): + parser.add_argument("--" + name, type=Path, required=True) + args = parser.parse_args() + paths = {name: value.resolve() for name, value in vars(args).items()} + require(len(set(paths.values())) == len(paths), "input/output path alias") + output = paths.pop("output") + for label in ("transport", "emitter"): + actual = hashlib.sha256(paths[label + "_source"].read_bytes()).hexdigest() + require(actual == PRODUCER_HASHES[label], "producer source hash mismatch: " + label) + result = { + "status": "PASS_EXACT_FINITE_WORD_AND_SCALAR_PREFIX", + "head": HEAD, "checker_sha256": hashlib.sha256(Path(__file__).read_bytes()).hexdigest(), + "inputs": {name: file_record(path) for name, path in sorted(paths.items())}, + "providers": {}, + "scope": { + "free_operator_model": "All632 arbitrary logical inputs over dyadic free warp algebra; " + "91 private buffers initially and finally zero. Four orientations.", + "scalar_model": "Both emitted orientations lowered to charged binary-Horner scalar primitives; " + "nonscalar events are identity and CLEAR is assignment.", + "not_established": ["physical Clifford phase correctness", + "physical reversible CLEAR implementation", + "native-child internal precision", "recursive rounding", + "all-size compiler or tape cost", "new kappa"], + }, + } + with tempfile.TemporaryDirectory(prefix="c01-wholeword-") as temporary: + scratch = Path(temporary) + for provider in ("base", "extra"): + source_path = paths["source_" + provider] + candidate_path = paths["candidate_" + provider] + require(hashlib.sha256(source_path.read_bytes()).hexdigest() == SOURCE_HASHES[provider], + "historical word hash mismatch: " + provider) + source, candidate = read(source_path), read(candidate_path) + require(set(source) == set(candidate), "changed full-word key set") + require(all(source[key] == candidate[key] for key in source if key != "compensation"), + "candidate changed a field outside compensation") + panel = panel_audit(source, candidate) + historical = historical_panel_audit(source, paths["historical_panel_" + provider]) + full = {} + generated = {} + for name, word, word_path in (("source", source, source_path), + ("candidate", candidate, candidate_path)): + full[name] = audit_whole_word(word) + canonical_word, programs, producer_checks = produced_programs( + word_path, paths["transport_source"], paths["emitter_source"], + scratch / (provider + "-" + name)) + generated[name] = { + "canonical_sha256": digest(canonical_word), + "program_sha256": digest(programs), + "producer_checks": producer_checks, + "canonical_word": canonical_word, + "programs": programs, + } + old_canonical, new_canonical = (generated[name]["canonical_word"] + for name in ("source", "candidate")) + require(all(old_canonical[key] == new_canonical[key] + for key in old_canonical if key != "compensation"), + "canonical transport changed outside compensation") + scalar = {} + preserved = {} + for orientation in ("forward", "backward"): + old_events = generated["source"]["programs"][orientation] + new_events = generated["candidate"]["programs"][orientation] + old_nonscalar = [event for event in old_events if event[0] != "scalar"] + new_nonscalar = [event for event in new_events if event[0] != "scalar"] + require(old_nonscalar == new_nonscalar, "changed nonscalar event stream") + old_boundary = old_events.index(["phase", "entry_adapters"]) + new_boundary = new_events.index(["phase", "entry_adapters"]) + require(old_events[old_boundary:] == new_events[new_boundary:], + "changed post-compensation native stream") + preserved[orientation] = { + "nonscalar_events": len(old_nonscalar), + "nonscalar_sha256": digest(old_nonscalar), + "unchanged_suffix_events": len(old_events) - old_boundary, + "suffix_sha256": digest(old_events[old_boundary:]), + } + preserved[orientation]["literal_prefix_binding"] = { + name: bind_emitted_prefix( + word, generated[name]["canonical_word"], + generated[name]["programs"][orientation], + orientation == "backward") + for name, word in (("source", source), ("candidate", candidate))} + scalar[orientation] = { + name: audit_scalar_projection(generated[name]["programs"][orientation], + generated[name]["canonical_word"], orientation) + for name in ("source", "candidate")} + for name in ("source", "candidate"): + ours = scalar[orientation][name] + theirs = generated[name]["producer_checks"][orientation] + require(ours["two_real_component_count"] == + theirs["real_component_primitive_bound"], + "independent literal primitive invoice mismatch") + require(ours["scalar_macro_count"] == theirs["scalar_macros"], + "independent macro coverage mismatch") + actual_saving = ( + scalar[orientation]["source"]["primitive_count_per_real_component"] + - scalar[orientation]["candidate"]["primitive_count_per_real_component"]) + predicted_saving = ( + panel["bill"]["source"]["price_per_real_component"] + - panel["bill"]["candidate"]["price_per_real_component"]) + require(actual_saving == predicted_saving, "whole primitive bill delta mismatch") + result["providers"][provider] = { + "panel": panel, "whole_word": full, "scalar_projection": scalar, + "historical_rank_basis_panel": historical, + "native_nonscalar_stream_preservation": preserved, + "generated": {name: {key: value for key, value in row.items() + if key not in ("canonical_word", "programs")} + for name, row in generated.items()}, + } + output.parent.mkdir(parents=True, exist_ok=True) + output.write_bytes(json.dumps(result, indent=2, sort_keys=True).encode() + b"\n") + print("PASS_EXACT_FINITE_WORD_AND_SCALAR_PREFIX", output) + + +if __name__ == "__main__": + main() diff --git a/research/staged-compensation-forests/compare_prior.py b/research/staged-compensation-forests/compare_prior.py new file mode 100644 index 0000000000..68ae32541c --- /dev/null +++ b/research/staged-compensation-forests/compare_prior.py @@ -0,0 +1,126 @@ +"""One fixed PR1080 recipe-transfer check; no optimization or search.""" +import argparse +from fractions import Fraction as Q +import gzip +import hashlib +import json +from pathlib import Path + + +def require(ok, message): + if not ok: + raise ValueError(message) + + +def digest(data): + return hashlib.sha256(data).hexdigest() + + +def matrix(gates): + result = {t: {} for t in range(112, 224)} + for op, t, h, numerator, denominator, frame in gates: + require(op == "add", "addition-only source") + q = result[t].get(h, Q(0)) + Q(numerator, denominator) + if q: + result[t][h] = q + else: + result[t].pop(h, None) + return result + + +def tariff(q): + if not q: + return 0 + d = q.denominator + require(d & (d - 1) == 0, "dyadic coefficient") + a = abs(q.numerator) + return 3 + a.bit_length() - 1 + a.bit_count() + d.bit_length() - 1 + + +def main(): + parser = argparse.ArgumentParser() + parser.add_argument("--prior-word", type=Path, required=True) + parser.add_argument("--prior-recipe", type=Path, required=True) + parser.add_argument("--current-word", type=Path, required=True) + parser.add_argument("--output", type=Path, required=True) + args = parser.parse_args() + require(args.output.resolve() not in + {args.prior_word.resolve(), args.prior_recipe.resolve(), args.current_word.resolve()}, + "output must not replace a frozen input") + old_bytes = args.prior_word.read_bytes() + old_payload = gzip.decompress(old_bytes) + require(digest(old_payload) == + "24db880b7dab31e6af4eec8a1aba1bbbae29cd50d9a7b77cf0e9b571b3e5ae7c", + "PR1080 original canonical word") + current_bytes = args.current_word.read_bytes() + require(digest(current_bytes) == + "735c540b1fe29d0ceeb4d2f304ec941e5f2bd3bc92bafc8cce2b4f9a67a3b653", + "PR3605 source word") + recipe_bytes = args.prior_recipe.read_bytes() + require(digest(recipe_bytes) == + "d526804d9d627cbd850b0e54c3de9aadc74646e1a9b6befb577f42240720750a", + "PR1080 frozen recipe") + recipe = json.loads(recipe_bytes) + old, current = json.loads(old_payload), json.loads(gzip.decompress(current_bytes)) + A, C = matrix(old["compensation"]), matrix(current["compensation"]) + old_support = set().union(*map(set, A.values())) + new_support = set().union(*map(set, C.values())) + require(len(old_support) == 216 and len(new_support) == 207, "support counts") + require(all((4 * a).denominator == 1 for row in A.values() for a in row.values()), + "prior quarter grid") + eighths = [(t, h, str(q)) for t, row in C.items() for h, q in row.items() + if (4 * q).denominator != 1] + require(bool(eighths), "strict current eighth-grid witness") + live = set(range(704)) - set(current["removed"]) + sources = set(recipe["sources"]) + helper_edges = recipe["helper_forest"] + touched = {recipe["sources"][i] for c, p, s, depth in helper_edges for i in (c, p)} + # This is deliberately the literal register-ID transfer. No mapping from + # historical canonical identities to current raw helper roles is assumed. + invalid = sorted(touched - live) + nonzero = sorted(touched & set(map(int, current["start_extra"]))) + nonfull = sorted(touched & set(map(int, current["helper_final"]))) + require(invalid or nonzero or nonfull, "expected direct transfer obstruction") + target_forest = recipe["target_forest"] + D = {t: dict(row) for t, row in C.items()} + for child, parent, sign, depth in target_forest: + t, p = recipe["targets"][child], recipe["targets"][parent] + for h in set(C[t]) | set(C[p]): + q = C[t].get(h, Q(0)) - sign * C[p].get(h, Q(0)) + if q: + D[t][h] = q + else: + D[t].pop(h, None) + target_cost = 8 * len(target_forest) + sum(tariff(q) for row in D.values() for q in row.values()) + output = { + "prior_pr": 1080, + "prior_head": "803e080e181229a3af2196b7a13615c9d81ae10d", + "prior_recipe_sha256": digest(recipe_bytes), + "prior_word_compressed_sha256": digest(old_bytes), + "prior_word_decoded_sha256": digest(old_payload), + "prior_targets": 112, "prior_active_helpers": len(old_support), + "prior_nonzeros": sum(map(len, A.values())), + "prior_component_price": sum(tariff(q) for row in A.values() for q in row.values()), + "current_targets": 112, "current_active_helpers": len(new_support), + "current_nonzeros": sum(map(len, C.values())), + "current_component_price": sum(tariff(q) for row in C.values() for q in row.values()), + "prior_quarter_grid": True, + "current_eighth_witnesses": sorted(eighths), + "signed_permutation_equivalence_excluded_by_grid_and_support": True, + "frozen_target_recipe_on_current_matrix_component_price": target_cost, + "frozen_helper_recipe_literal_id_transfer": { + "touched_helpers": sorted(touched), + "unavailable_removed_helpers": invalid, + "nonzero_entrance_helpers": nonzero, + "nonfull_terminal_helpers": nonfull, + "admitted_without_adapters_or_remapping": False, + }, + "scope": "One frozen source/recipe comparison. No relabeling search, general basis-equivalence obstruction, paid wrapper transfer, or global circuit optimum.", + } + args.output.write_text(json.dumps(output, sort_keys=True, indent=2) + "\n") + print("PASS_PR1080_FIXED_TRANSFER_CHECK", "target_recipe_price", target_cost, + "unavailable", len(invalid), "nonzero", len(nonzero), "nonfull", len(nonfull)) + + +if __name__ == "__main__": + main() diff --git a/research/staged-compensation-forests/construct.py b/research/staged-compensation-forests/construct.py new file mode 100644 index 0000000000..0d54e55239 --- /dev/null +++ b/research/staged-compensation-forests/construct.py @@ -0,0 +1,202 @@ +"""Deterministic same-C signed-unit MST and disjoint helper candidate. + +All arithmetic is exact on a common eighth grid. Writes only --out. +""" +import argparse, collections, fractions, gzip, hashlib, json, pathlib, subprocess +Q=fractions.Fraction +HEAD='3efbb5de06a49ffeea6684482f2d3fe48cdca3fb' +PKG='research/staged-644-660-width-reduction' +HASHES={'base':'735c540b1fe29d0ceeb4d2f304ec941e5f2bd3bc92bafc8cce2b4f9a67a3b653','extra':'886338fc32da14f3389a82c8120a1bcf9c5e2f0ec3e9b2d377fdae809e1d977f'} +def need(x,msg): + if not x: raise ValueError(msg) +def sha(b): return hashlib.sha256(b).hexdigest() +def canonical(x): return json.dumps(x,sort_keys=True,separators=(',',':')).encode() +def price(q): + if not q:return 0 + a=abs(q.numerator);d=q.denominator.bit_length()-1 + need(q.denominator==1<=maxpaths[a][b] for cost,a,b,s in edges),'MST cycle inequality') + # Different Prim graph traversal (same complete edge costs). + adjacency={i:[] for i in graph} + for cost,a,b,s in edges:adjacency[a].append((cost,b));adjacency[b].append((cost,a)) + seen={-1}; best={t:min(cost for cost,b in adjacency[-1] if b==t) for t in targets}; prim=0 + while len(seen)<113: + cost,t=min((v,t) for t,v in best.items() if t not in seen);seen.add(t);prim+=cost + for cost2,b in adjacency[t]: + if b not in seen:best[b]=min(best[b],cost2) + need(prim==sum(e[0] for e in tree),'Prim mismatch') + T=[];D={t:list(row) for t,row in zip(targets,rows)} + for t in sorted(targets,key=lambda t:(-depth[t],t)): + a,s,cost=parent[t] + if a!=-1:T.append(add(t,a,Q(-s))) + for t in targets: + a,s,cost=parent[t] + if a!=-1:D[t]=[x-s*y for x,y in zip(rows[t-112],rows[a-112])] + # Legal full-lifetime helpers only. The parent must verify the source's + # default frame interpretation against its frozen emitter. + eligible=[h for h in helpers if str(h) not in w['start_extra'] and str(h) not in w['helper_final'] and h not in w['removed']] + cols={h:[D[t][j] for t in targets] for j,h in enumerate(helpers)} + candidates=[];count=0 + for a in eligible: + for b in eligible: + if a==b:continue + old=sum(map(pi,cols[b])) + for s in (-1,1): + gain=old-sum(pi(v-s*u) for u,v in zip(cols[a],cols[b]))-8 + candidates.append((gain,a,b,s));count+=1 + positive=sorted((e for e in candidates if e[0]>0),key=lambda e:(-e[0],e[1:])) + used=set();pairs=[] + for e in positive: + gain,a,b,s=e + if a not in used and b not in used:pairs.append(e);used.update((a,b)) + H=[add(a,b,Q(s)) for gain,a,b,s in pairs] + E={t:list(row) for t,row in D.items()};index={h:j for j,h in enumerate(helpers)} + for gain,a,b,s in pairs: + for t in targets:E[t][index[b]]-=s*D[t][index[a]] + def injections(M):return [add(t,h,Q(a,8)) for t in targets for h,a in zip(helpers,M[t]) if a] + f=T+injections(D)+inverse(T) + g=T+H+injections(E)+inverse(H)+inverse(T) + def bill(gs):return {'logical_additions':len(gs),'component_primitives':sum(price(Q(z[3],z[4])) for z in gs),'coefficient_histogram':dict(sorted(collections.Counter(str(Q(z[3],z[4])) for z in gs).items()))} + original=bill(w['compensation']);fb=bill(f);gb=bill(g) + need(fb['component_primitives']==prim,'literal forest bill') + need(gb['component_primitives']==prim-sum(x[0] for x in pairs),'helper additive bill') + rec={'edge_count':len(edges),'edge_census_sha256':sha(canonical(edges)),'tree':tree,'parent':parent,'prim_cost':prim,'all_cycle_inequalities':len(edges),'roots':len([t for t in targets if parent[t][0]==-1]),'target_edges':len(T),'max_depth':max(depth.values())-1,'active_helpers':helpers,'eligible_helpers':eligible,'helper_candidate_count':count,'helper_candidates_sha256':sha(canonical(candidates)),'profitable_helpers':len(positive),'pairs':pairs,'source_frame_predicate':'helper absent from start_extra and helper_final; not removed','target_only_bill':fb,'two_sided_bill':gb,'original_bill':original,'target_residual_nonzeros':sum(map(lambda r:sum(a!=0 for a in r),D.values())),'two_sided_residual_nonzeros':sum(map(lambda r:sum(a!=0 for a in r),E.values()))} + return rec,f,g + +def endpoint(gs,live,mode): + rows={r:{r:Q(1)} for r in live} + seq=inverse(gs) if mode=='inverse' else gs + for g in seq: + t,s,q=g[1],g[2],Q(g[3],g[4]) + if mode=='dual':t,s,q=s,t,-q + plus(rows[t],rows[s],q) + return rows + +def semantic_controls(original, candidate, rec, live): + """Actual operator mutations, independent of file authentication.""" + nt=rec['target_edges']; nh=len(rec['pairs']) + ninj=rec['two_sided_residual_nonzeros'] + T=candidate[:nt]; H=candidate[nt:nt+nh] + injection=candidate[nt+nh:nt+nh+ninj] + Hi=candidate[nt+nh+ninj:nt+2*nh+ninj] + Ti=candidate[nt+2*nh+ninj:] + need(len(Hi)==nh and len(Ti)==nt,'five-stage partition') + def changed(xs,index): + ys=[list(g) for g in xs];ys[index]=list(ys[index]);ys[index][3]*=-1;return ys + mutants={ + 'omit_target_preparation':H+injection+Hi+Ti, + 'omit_target_restoration':T+H+injection+Hi, + 'parent_before_child_preparation':list(reversed(T))+H+injection+Hi+Ti, + 'omit_helper_preparation':T+injection+Hi+Ti, + 'omit_helper_restoration':T+H+injection+Ti, + 'flip_helper_preparation_sign':T+changed(H,0)+injection+Hi+Ti, + 'flip_residual_sign':T+H+changed(injection,0)+Hi+Ti, + 'flip_target_restoration_sign':T+H+injection+Hi+changed(Ti,-1), + 'stale_original_injection':T+H+original+Hi+Ti, + } + results=[] + expected={mode:endpoint(original,live,mode) for mode in ('forward','inverse','dual')} + for label,gs in mutants.items(): + bad={} + for mode in expected: + actual=endpoint(gs,live,mode) + differing=[r for r in live if actual[r]!=expected[mode][r]] + need(differing,'insensitive semantic control '+label+' '+mode) + r=differing[0]; keys=sorted(set(actual[r])|set(expected[mode][r])) + c=next(c for c in keys if actual[r].get(c,0)!=expected[mode][r].get(c,0)) + bad[mode]={'row':r,'column':c,'expected':str(expected[mode][r].get(c,0)),'actual':str(actual[r].get(c,0))} + results.append({'mutation':label,'witnesses':bad}) + # The target preparation is essential even though a helper-only test misses it. + omitted=endpoint(mutants['omit_target_preparation'],live,'forward') + outside_targets=[c for c in live if not 112<=c<224] + need(all(omitted[r].get(c,0)==expected['forward'][r].get(c,0) + for r in live for c in outside_targets),'helper-only counterexample premise') + results.append({'mutation':'omit_target_preparation', + 'helper_only_projection_passes':True, + 'projected_input_columns':len(outside_targets), + 'full_arbitrary_target_domain_rejects':True}) + return results + +def main(): + a=argparse.ArgumentParser() + source=a.add_mutually_exclusive_group(required=True) + source.add_argument('--repo',type=pathlib.Path) + source.add_argument('--source-dir',type=pathlib.Path) + a.add_argument('--out',type=pathlib.Path,required=True) + args=a.parse_args() + if args.source_dir: + source_root=args.source_dir.resolve(); output_root=args.out.resolve() + need(output_root!=source_root and source_root not in output_root.parents, + 'output must be outside frozen input directory') + args.out.mkdir(parents=True,exist_ok=True) + report={'head':HEAD,'providers':{}} + for provider in ('base','extra'): + raw=(args.source_dir/f'SOURCE-{provider}.json.gz').read_bytes() if args.source_dir else subprocess.check_output(['git','show',f'{HEAD}:{PKG}/STAGED644-660-{provider}.json.gz'],cwd=args.repo) + need(sha(raw)==HASHES[provider],'source digest');(args.out/f'SOURCE-{provider}.json.gz').write_bytes(raw) + w=json.loads(gzip.decompress(raw));C=matrix(w);rec,f,g=construct(C,w);live=sorted(set(range(704))-set(w['removed']));checks=[] + for name,gs in [('forest',f),('two-sided',g)]: + for mode in ('forward','inverse','dual'): + need(endpoint(gs,live,mode)==endpoint(w['compensation'],live,mode),'operator mismatch '+name+mode);checks.append([name,mode,len(live)]) + panel=canonical(gs);(args.out/f'{name.upper()}-COMPENSATION-{provider}.json.gz').write_bytes(gzip.compress(panel,mtime=0)) + candidate=dict(w);candidate['compensation']=gs + for key in w: + if key!='compensation':need(candidate[key]==w[key],'outside changed') + whole=canonical(candidate);(args.out/f'{name.upper()}-WORD-{provider}.json.gz').write_bytes(gzip.compress(whole,mtime=0));rec[name+'_panel_sha256']=sha(panel);rec[name+'_word_sha256']=sha(whole) + rec['semantic_controls']=semantic_controls(w['compensation'],g,rec,live) + rec['all_column_checks']=checks;rec['source_compressed_sha256']=sha(raw);report['providers'][provider]=rec + print(provider,rec['original_bill']['component_primitives'],rec['target_only_bill']['component_primitives'],rec['two_sided_bill']['component_primitives'],'pairs',len(rec['pairs']),'eligible',len(rec['eligible_helpers']),flush=True) + (args.out/'DESIGN.json').write_bytes(json.dumps(report,indent=2,sort_keys=True).encode()+b'\n') +if __name__=='__main__':main() diff --git a/research/staged-compensation-forests/controls.py b/research/staged-compensation-forests/controls.py new file mode 100644 index 0000000000..4559691ace --- /dev/null +++ b/research/staged-compensation-forests/controls.py @@ -0,0 +1,438 @@ +#!/usr/bin/env python3 +"""Compact C01 source, complete-record and mathematical acceptance controls. + +Uses external temporary fixtures. Does not rerun the whole-word scalar audit +or the all-edge/all-helper census. Prepared with substantial Codex assistance. +""" +import argparse +import copy +import gzip +import hashlib +import json +from pathlib import Path +import subprocess +import sys +import tempfile +import types + + +def require(ok, message): + if not ok: + raise ValueError(message) + + +def sha(raw): + return hashlib.sha256(raw).hexdigest() + + +def load_module(path, raw=None, name="reviewed_controls_module"): + source = path.read_bytes() if raw is None else raw + module = types.ModuleType(name) + module.__file__ = str(path) + exec(compile(source, str(path), "exec", dont_inherit=True, optimize=0), module.__dict__) + return module + + +def reject(label, action, expected, records, exact=True): + try: + action() + except (ValueError, AssertionError) as error: + message = str(error) + require(message == expected if exact else expected in message, + "wrong rejection for " + label + ": " + message) + records.append({"name": label, "intended_gate": expected}) + else: + raise ValueError("control accepted: " + label) + + +def fixture(root, files, originals=None): + root.mkdir(parents=True) + hashes, origins = {}, {} + for name, raw in files.items(): + path = root / name + path.parent.mkdir(parents=True, exist_ok=True) + path.write_bytes(raw) + hashes[name] = sha(raw) + origins[name] = {"sha256": sha(raw)} + if originals and name in originals: + origins[name]["original_sha256"] = sha(originals[name]) + (root / "FROZEN-SHA256.json").write_text(json.dumps(hashes)) + (root / "ORIGINS.json").write_text(json.dumps(origins)) + return root + + +def loader_checks(v, temporary): + positive = ( + b"import json, sys\nfrom pathlib import Path\n" + b"assert __debug__ and sys.flags.optimize == 0, 'CHILD_OPTIMIZATION'\n" + b"assert __file__ == sys.argv[0], 'SCRIPT_FILE_ARGUMENT'\n" + b"Path(sys.argv[-1]).write_text(json.dumps(sys.argv[1:-1]))\n" + ) + files = { + "script with spaces.py": positive, + "direct.py": b"assert False, 'DIRECT_ASSERT'\n", + "nested.py": b"def inner():\n assert False, 'NESTED_ASSERT'\ninner()\n", + "notfinite.json": b'{"a":NaN}', + } + root = fixture(temporary / "loader", files) + frozen, rejected = v.Frozen(root), [] + frozen.check_all() + output = temporary / "literal argument result.json" + frozen.run("script with spaces.py", ["argument with spaces", output]) + require(json.loads(output.read_text()) == ["argument with spaces"], "preserved script arguments") + for name, marker in (("direct.py", "DIRECT_ASSERT"), ("nested.py", "NESTED_ASSERT")): + reject(name, lambda name=name: frozen.run(name, []), + "AssertionError: " + marker, rejected, exact=False) + # This disposable source is changed only after Frozen.raw has returned. + # The script passed to the interpreter must remain the captured old bytes. + original_path, calls = frozen.path, {"count": 0} + def changed_path(name): + path = original_path(name) + calls["count"] += 1 + if calls["count"] == 2: + path.write_bytes(b"raise RuntimeError('REOPENED_CHANGED_SOURCE')\n") + return path + frozen.path = changed_path + try: + frozen.run("script with spaces.py", ["captured bytes", output]) + require(calls["count"] == 2 and json.loads(output.read_text()) == ["captured bytes"], + "captured authenticated source execution") + finally: + frozen.path = original_path + (root / "script with spaces.py").write_bytes(positive) + (root / "direct.py").write_bytes(b"PASS = True\n") + reject("changed_executable_source", lambda: frozen.run("direct.py", []), + "changed frozen input: direct.py", rejected) + (root / "direct.py").unlink() + reject("missing_executable_source", lambda: frozen.run("direct.py", []), + "missing regular input: direct.py", rejected) + reject("unregistered_source", lambda: frozen.run("absent.py", []), + "unregistered input: absent.py", rejected) + reject("absolute_path", lambda: frozen.path("/etc/passwd"), "unsafe package path", rejected) + reject("parent_escape", lambda: frozen.path("../outside"), "unsafe package path", rejected) + (root / "link.py").symlink_to(root / "nested.py") + reject("symlink_input", lambda: frozen.path("link.py"), + "missing regular input: link.py", rejected) + outside = temporary / "external" + outside.mkdir() + (outside / "data.json").write_text("{}") + (root / "outside").symlink_to(outside, target_is_directory=True) + reject("ancestor_symlink_escape", lambda: frozen.path("outside/data.json"), + "input escapes package", rejected) + reject("direct_runtime_requirement", lambda: v.require(False, "DIRECT_RUNTIME_GATE"), + "DIRECT_RUNTIME_GATE", rejected) + return {"rejections": rejected, "captured_source_survives_disposable_path_change": True, + "child_assertions_enabled": True, "file_and_argument_semantics_preserved": True} + + +def record_checks(v, temporary): + value = {"integer": 1, "boolean": True, "nested": {"ordered": [1, 2, 3]}} + raw = json.dumps(value).encode() + root = fixture(temporary / "record", {"expected.json": raw}) + frozen, rejected = v.Frozen(root), [] + frozen.compare("expected.json", raw) + mutations = { + "boolean_for_integer": dict(value, integer=True), + "float_for_integer": dict(value, integer=1.0), + "integer_for_boolean": dict(value, boolean=1), + "nested_omission": dict(value, nested={}), + "ordered_list_reorder": dict(value, nested={"ordered": [1, 3, 2]}), + "ordered_list_truncate": dict(value, nested={"ordered": [1, 2]}), + } + for label, changed in mutations.items(): + reject(label, lambda changed=changed: frozen.compare("expected.json", json.dumps(changed).encode()), + "complete typed record mismatch: expected.json", rejected) + reject("duplicate_json_key", lambda: v.data(b'{"a":1,"a":2}'), + "duplicate JSON key: a", rejected) + reject("nested_duplicate_json_key", lambda: v.data(b'{"n":{"a":1,"a":2}}'), + "duplicate JSON key: a", rejected) + for value_ in ("NaN", "Infinity", "-Infinity"): + reject("nonfinite_" + value_, lambda value_=value_: v.data(value_.encode()), + "nonfinite JSON constant: " + value_, rejected) + (root / "expected.json").unlink() + reject("missing_expected_record", lambda: frozen.compare("expected.json", raw), + "missing regular input: expected.json", rejected) + require(not (root / "expected.json").exists(), "missing expected record regenerated") + (root / "expected.json").write_bytes(raw) + saved = v.require + try: + v.require = lambda ok, message: None if message.startswith("complete typed record mismatch:") else saved(ok, message) + try: + reject("deleted_record_gate", + lambda: frozen.compare("expected.json", json.dumps(mutations["boolean_for_integer"]).encode()), + "complete typed record mismatch: expected.json", []) + except ValueError as error: + require(str(error) == "control accepted: deleted_record_gate", "record check-deletion sensitivity") + else: + raise ValueError("record check deletion not detected") + finally: + v.require = saved + return {"rejections": rejected, "named_record_gate_deletion_detected": True} + + +def compression_checks(v, temporary): + name, plain = "original.json.gz", b'{"original":[1,2,3]}\n' + root = fixture(temporary / "compression", {name: gzip.compress(plain, mtime=0)}, {name: plain}) + frozen, rejected = v.Frozen(root), [] + frozen.check_all() + changed = gzip.compress(b'{"original":[1,2,4]}\n', mtime=0) + (root / name).write_bytes(changed) + reject("changed_compressed_input", frozen.check_all, + "changed frozen input: " + name, rejected) + frozen.hashes[name] = sha(changed) + reject("changed_container_origin", frozen.check_all, + "origin digest mismatch: " + name, rejected) + frozen.origins[name]["sha256"] = sha(changed) + reject("changed_original_after_transport_rebinding", frozen.check_all, + "original decoded bytes changed: " + name, rejected) + same = gzip.compress(plain, mtime=17) + (root / name).write_bytes(same) + frozen.hashes[name] = frozen.origins[name]["sha256"] = sha(same) + frozen.check_all() + saved = frozen.origins + frozen.origins = {} + reject("omitted_origin", frozen.check_all, "frozen/origin inventory mismatch", rejected) + frozen.origins = saved + return {"rejections": rejected, "equivalent_recompression_accepted": True} + + +def coverage_checks(v, temporary): + rejected, counts = [], {} + for stage in ("construction", "forest", "wholeword"): + names = sorted(v.expected_records(stage)) + v.check_coverage(stage, names) + counts[stage] = len(names) + reject(stage + "_omission", lambda: v.check_coverage(stage, names[1:]), + "complete stage record coverage changed: " + stage, rejected) + reject(stage + "_duplicate", lambda: v.check_coverage(stage, names + names[:1]), + "complete stage record coverage changed: " + stage, rejected) + reject(stage + "_extra", lambda: v.check_coverage(stage, names + ["unexpected.json"]), + "complete stage record coverage changed: " + stage, rejected) + require(counts == {"construction": 13, "forest": 1, "wholeword": 1}, "stage inventory counts") + # Invoke the real dispatch code with a non-mathematical output fixture. + class GeneratedFixture: + def __init__(self, extra=False, omit=None): + self.root, self.compared, self.extra, self.omit = temporary, [], extra, omit + def run(self, script, arguments): + if script == "construct.py": + output = Path(arguments[arguments.index("--out") + 1]) + output.mkdir() + names = set(v.construction_names()) | ({"unexpected.json"} if self.extra else set()) + for name in names: + (output / name).write_text("{}") + else: + Path(arguments[arguments.index("--output") + 1]).write_text("{}") + def compare(self, name, raw): + if name != self.omit: + self.compared.append(name) + for stage in ("construction", "forest", "wholeword"): + scratch = temporary / ("dispatch-" + stage) + scratch.mkdir() + f = GeneratedFixture() + getattr(v, stage)(f, scratch) + v.check_coverage(stage, f.compared) + scratch = temporary / "dispatch-extra" + scratch.mkdir() + reject("extra_generated_construction_artifact", + lambda: v.construction(GeneratedFixture(extra=True), scratch), + "construction output inventory changed", rejected) + scratch = temporary / "dispatch-omission" + scratch.mkdir() + f = GeneratedFixture(omit="artifacts/DESIGN.json") + v.construction(f, scratch) + reject("deleted_actual_compare_call", lambda: v.check_coverage("construction", f.compared), + "complete stage record coverage changed: construction", rejected) + saved = v.require + try: + v.require = lambda ok, message: None if message.startswith("complete stage record coverage changed:") else saved(ok, message) + try: + reject("deleted_coverage_gate", lambda: v.check_coverage("construction", f.compared), + "complete stage record coverage changed: construction", []) + except ValueError as error: + require(str(error) == "control accepted: deleted_coverage_gate", "coverage deletion sensitivity") + else: + raise ValueError("coverage check deletion not detected") + finally: + v.require = saved + return {"rejections": rejected, "stage_counts": counts, + "real_dispatch_with_tiny_fixtures_passes": True, + "named_coverage_gate_deletion_detected": True} + + +def mathematical_checks(v, package): + frozen = v.Frozen(package) + mst = load_module(package / "independent_mst.py", frozen.raw("independent_mst.py")) + source = v.data(frozen.raw("frozen/inputs/SOURCE-base.json.gz")) + panel = v.data(frozen.raw("artifacts/TWO-SIDED-COMPENSATION-base.json.gz")) + helpers = {event[2] for event in source["compensation"]} + C = mst.sparse_matrix(source["compensation"], helpers) + live = sorted(set(range(704)) - set(source["removed"])) + expected = mst.expected_endpoint(C, live, "forward") + mst.complete_endpoint_gate(mst.endpoint(panel, live, "forward"), expected) + changed = copy.deepcopy(panel) + changed[0][3] *= -1 + actual = mst.endpoint(changed, live, "forward") + witness = mst.defect(actual, expected) + require(witness is not None, "actual target-basis sign mutation ineffective") + rejected = [] + reject("actual_target_basis_sign", lambda: mst.complete_endpoint_gate(actual, expected), + "complete arbitrary-input panel endpoint", rejected) + saved = mst.require + try: + mst.require = lambda ok, message: None if message == "complete arbitrary-input panel endpoint" else saved(ok, message) + try: + reject("deleted_actual_endpoint_gate", lambda: mst.complete_endpoint_gate(actual, expected), + "complete arbitrary-input panel endpoint", []) + except ValueError as error: + require(str(error) == "control accepted: deleted_actual_endpoint_gate", "actual endpoint deletion sensitivity") + else: + raise ValueError("actual endpoint check deletion not detected") + finally: + mst.require = saved + return {"rejections": rejected, "actual_authenticated_candidate": True, + "all_arbitrary_input_columns": len(live), "witness": witness, + "named_endpoint_gate_deletion_detected": True} + + +def nested_producer_checks(v, package, temporary): + frozen = v.Frozen(package) + whole = load_module(package / "check_word.py", frozen.raw("check_word.py")) + transport = temporary / "fixture transport.py" + emitter = temporary / "fixture emitter.py" + transport_raw = ( + b"from pathlib import Path\nimport gzip,json,sys\n" + b"assert __debug__ and sys.flags.optimize == 0, 'NESTED_OPTIMIZATION'\n" + b"p=Path(sys.argv[2]);p.mkdir()\n" + b"(p/'CANONICAL-WORD.json.gz').write_bytes(gzip.compress(b'{}',mtime=0))\n" + ) + emitter_raw = ( + b"from pathlib import Path\nimport gzip,json,sys,hashlib\n" + b"p=Path(sys.argv[1]);h=hashlib.sha256(b'[]').hexdigest()\n" + b"(p/'LOCAL-PROGRAMS.json.gz').write_bytes(gzip.compress(json.dumps({'forward':[],'backward':[]}).encode(),mtime=0))\n" + b"(p/'LOCAL-CHECKS.json').write_text(json.dumps({k:{'sha256':h} for k in ['forward','backward']}))\n" + ) + transport.write_bytes(transport_raw) + emitter.write_bytes(emitter_raw) + whole.PRODUCER_HASHES = {"transport": sha(transport_raw), "emitter": sha(emitter_raw)} + class ChangedAfterRead: + def __init__(self, path, raw): + self.path, self.raw, self.reads = path, raw, 0 + def __str__(self): + return str(self.path) + def read_bytes(self): + self.reads += 1 + self.path.write_bytes(b"raise RuntimeError('NESTED_REOPENED_SOURCE')\n") + return self.raw + changing = ChangedAfterRead(transport, transport_raw) + whole.produced_programs(temporary / "unused-word.json", changing, emitter, temporary / "nested-output") + require(changing.reads == 1, "nested producer capture was not reached") + bad = b"def inner():\n assert False, 'NESTED_PRODUCER_ASSERT'\ninner()\n" + transport.write_bytes(bad) + whole.PRODUCER_HASHES["transport"] = sha(bad) + rejected = [] + reject("nested_producer_assertion", + lambda: whole.produced_programs(temporary / "unused-word.json", transport, emitter, + temporary / "nested-never-written"), + "AssertionError: NESTED_PRODUCER_ASSERT", rejected, exact=False) + whole.PRODUCER_HASHES["transport"] = sha(transport_raw) + reject("nested_producer_changed_source", + lambda: whole.produced_programs(temporary / "unused-word.json", transport, emitter, + temporary / "nested-never-written"), + "producer execution buffer hash mismatch: transport", rejected) + return {"rejections": rejected, "nested_captured_source_survives_path_change": True, + "nested_producer_assertions_enabled": True} + + +def real_records(v, package): + frozen = v.Frozen(package) + names = sorted(set().union(*(v.expected_records(stage) + for stage in ("construction", "forest", "wholeword")))) + def leaves(value, path=()): + if isinstance(value, dict): + for key in sorted(value): + yield from leaves(value[key], path + (key,)) + elif isinstance(value, list): + for index, child in enumerate(value): + yield from leaves(child, path + (index,)) + else: + yield path, value + records = [] + for name in names: + raw = frozen.raw(name) + value = v.data(raw) + frozen.compare(name, json.dumps(value).encode()) + path, old = max(leaves(value), key=lambda item: len(item[0])) + require(len(path) > 1, "actual record nested coverage") + changed, omitted = copy.deepcopy(value), copy.deepcopy(value) + parent, deletion_parent = changed, omitted + for key in path[:-1]: + parent, deletion_parent = parent[key], deletion_parent[key] + parent[path[-1]] = not old if type(old) is bool else old + 1 if type(old) is int else {"changed": True} + del deletion_parent[path[-1]] + rejected = [] + for label, candidate in (("nested_mutation", changed), ("nested_omission", omitted)): + reject(label, lambda candidate=candidate: frozen.compare(name, json.dumps(candidate).encode()), + "complete typed record mismatch: " + name, rejected) + records.append({"record": name, "sha256": sha(raw), "nested_path": list(path), + "rejections": rejected}) + require(len(records) == 15, "all fifteen complete records") + return records + + +def child(package): + v = load_module(package / "verify.py") + v.Frozen(package).check_all() + with tempfile.TemporaryDirectory(prefix="c01-compact-controls-") as directory: + temporary = Path(directory) + result = { + "loader": loader_checks(v, temporary), + "record_gate": record_checks(v, temporary), + "compression": compression_checks(v, temporary), + "coverage": coverage_checks(v, temporary), + "actual_mathematics": mathematical_checks(v, package), + "nested_producers": nested_producer_checks(v, package, temporary), + "real_records": real_records(v, package), + } + v.Frozen(package).check_all() + return {"parent_optimization": sys.flags.optimize, **result} + + +def main(): + parser = argparse.ArgumentParser(description=__doc__) + parser.add_argument("--package", type=Path, required=True) + parser.add_argument("--output", type=Path) + parser.add_argument("--child", action="store_true") + args = parser.parse_args() + package = args.package.resolve() + if args.output: + require(not args.output.resolve().is_relative_to(package), "control output must be external") + if args.child: + print(json.dumps(child(package), sort_keys=True)) + return + names = ["verify.py", "independent_mst.py", "check_word.py", + "FROZEN-SHA256.json", "ORIGINS.json"] + before = {name: sha((package / name).read_bytes()) for name in names} + results = [] + for optimized in (False, True): + command = [sys.executable, "-I", "-B"] + (["-O"] if optimized else []) + command += [str(Path(__file__).resolve()), "--package", str(package), "--child"] + completed = subprocess.run(command, capture_output=True, text=True) + require(completed.returncode == 0, completed.stdout + completed.stderr) + results.append(json.loads(completed.stdout)) + require(before == {name: sha((package / name).read_bytes()) for name in names}, + "reviewed source changed during controls") + comparable = [{key: value for key, value in run.items() if key != "parent_optimization"} + for run in results] + require(comparable[0] == comparable[1], "normal and optimized control receipts differ") + result = {"status": "PASS_C01_COMPACT_SOURCE_AND_MATHEMATICAL_GATES", + "source_hashes": before, "runs": results, + "normal_and_optimized_receipts_equal_except_mode": True, + "full_wholeword_or_edge_census_replayed": False, + "actual_single_compensation_panel_replayed": True, "no_new_kappa": True} + if args.output: + args.output.write_text(json.dumps(result, sort_keys=True, indent=2) + "\n") + print(json.dumps(result, sort_keys=True)) + + +if __name__ == "__main__": + main() diff --git a/research/staged-compensation-forests/frozen/history/C01-PROOF.md b/research/staged-compensation-forests/frozen/history/C01-PROOF.md new file mode 100644 index 0000000000..0644f6b475 --- /dev/null +++ b/research/staged-compensation-forests/frozen/history/C01-PROOF.md @@ -0,0 +1,244 @@ +# A shared compensation basis, and a bounded factory screen + +Status: locally checked finite construction and scoped negative screen. The +compensation word is exact and reduces a finite scalar bill. Its recursive +histogram is unchanged, so this work establishes no new conditional kappa. +No public action, repository edit, native replay or full release was performed. + +## Pins and input contract + +The immutable comparator is PR3605 head +`3efbb5de06a49ffeea6684482f2d3fe48cdca3fb`, scientific commit +`c006ddb034f5efcb0706a5d8207d38c367a99ace`, under canonical guidance +`20ecf2891d80b5acf18d980b2164fb44ea7faa90`. The two source blobs are +`research/staged-644-660-width-reduction/STAGED644-660-{base,extra}.json.gz`. +Their compressed SHA256 pins are respectively +`735c540b1fe29d0ceeb4d2f304ec941e5f2bd3bc92bafc8cce2b4f9a67a3b653` and +`886338fc32da14f3389a82c8120a1bcf9c5e2f0ec3e9b2d377fdae809e1d977f`. +The predecessor local package is `ac92a027c78b0c9bb0ada739b26959afda489d0e`; +its PR3133 word source is `51eb9c4ee9e4722010d308aa3309e039d3940cc2`. + +All 632 live source, target and helper inputs are arbitrary independent module +elements over the dyadic rationals. No helper is initialized to zero by this +rewrite. The source's 91 private cleanup buffers retain their zero-input and +zero-output contract. There are 112 targets and 408 actual live helper roles; +the historical R=480 field includes 72 removed identities. The ordered ports, +centers, native charts, helper identities, entrances and ends are unchanged. + +## Actual combined word and current compensation pullback + +Let y be the 112 target coordinates and z the other raw live coordinates at +the existing frame-zero compensation interface. The old word is + + (y,z) -> (y+Cz,z). + +Its 5736 literal additions aggregate to a rational matrix C of rank 56 on 207 +nonzero helper columns, in both providers. A 14-block division into the actual +eight-consecutive-target address ranges has summed block ranks 104. That sum +does not equal the joint rank and cannot be used to price independent bases. + +Choose 56 actual rows of C as a basis. For each remaining row write +`C_r = sum_s b_rs C_s`, where s runs over the chosen target rows. The producer +tries four fully specified row orders and selects the least literal gate +count among the dyadic bases obtained. Define E by + + y_r -= sum_s b_rs y_s (nonbasis r), + y_s unchanged (basis s). + +The support is bipartite: basis rows are never changed and nonbasis rows are +never read. Thus E is invertible and the inverse consists of the negated gates +in reverse order. Here E needs exactly 56 unit-coefficient additions. Every +one of these additions crosses two of the displayed eight-target ranges. +For example, the exact current rows satisfy + + C_125 = C_139 + C_190, C_133 = -C_123. + +Consequently the two beginning updates to target125 are +`125 -= 139; 125 -= 190`. Its correction is then supplied by the shared basis +rows and the final inverse updates. The already arbitrary dirt in targets +139 and 190 cancels exactly when E is reversed. + +Replace only the compensation section by the chronological word + + y <- E y; + y <- y+(E C)z; + y <- E^-1 y. + +The new correction is EC at this *current target-basis cut*. Using C there +would be a stale pullback. Direct multiplication gives + + E^-1(Ey+ECz) = y+Cz. + +The other live coordinates are fixed throughout. This block identity is valid +on arbitrary inputs over every dyadic module. Every independent noncommuting +invertible warp in the surrounding supplier is retained literally; the changed +subword is already equal before any surrounding operator is composed. It does +not assume commuting or identical warp operators. + +`SHARED-COMPENSATION-{base,extra}.json.gz` contains the entire new subword. +The replacement is identical in both providers, with decompressed SHA256 +`9f242abd5d2ed46a2e95dad46449d1d77c6fec330b5e0db6b324ac93fe756e62`. +`SHARED-WORD-{base,extra}.json.gz` contains each complete changed supplier. +All other fields, including the 5222-gate literal inverse cleanup, are copied +unchanged from the pinned word. The target-only replacement has the same full +interface, so the old helper row/column identities, arbitrary entering dirt +restoration and 91 cleared private buffers remain exactly the same. + +The inverse of the new subword is obtained by reversing it and inverting every +addition; equivalently it is E, followed by `-(EC)z`, followed by E^-1. The +same-chronology inverse-transpose has block response `z <- z-C^T y`. The +independent checker executes every literal gate in both orientations on all +632 input columns. The producer also rejects a stale C pullback and a missing +inverse basis gate; the independent checker rejects a literal final-gate sign +defect in both orientations. + +## Complete changed bill + +All new operations are at the existing frame-zero compensation interface. +The source transport and normalized wrapper words are retained with their +original constant charges. This does not make those charges zero. + +| Component | old additions | new additions | +| --- | ---: | ---: | +| Target basis E | 0 | 56 | +| Helper-to-target correction | 5736 | 3102 | +| Inverse target basis | 0 | 56 | +| Total | 5736 | 3214 | + +There are no added scale gates, helper roles, zero buffers, source queries, +native warps, or recursive children. The local profile remains +`{1:2439,2:726,3:224,4:102,5:20,8:8}` and the ordered helper widths remain +`{4:26,5:2,6:18,7:52,8:97,9:213}`. Thus Delta H=0, every helper-width delta +is zero, and the complete recursive moment is unchanged for every exponent. + +Under the stipulated cleared-work component price + + p(a/2^d) = 3 + floor(log2|a|) + popcount(|a|) + d + +for a reduced nonzero dyadic coefficient, the exact bill in *each* forward +or inverse-transpose orientation is + +| Component | primitive cost per real component | +| --- | ---: | +| Old compensation | 31214 | +| New basis | 224 | +| New correction | 16886 | +| New inverse basis | 224 | +| New total | 17334 | +| Difference | -13880 | + +With two real components, old/new totals are 62428/34668 and the saving is +27760 cleared-work primitives. The 112 total basis additions cost 448 per +component, or 896 across both real components, and are included above. The +entire signed coefficient histograms are in `INDEPENDENT-SHARED.json`; no +coefficient-changing operation is priced by logical-gate count alone. + +## Prefix bounds and remaining numerical gate + +The following are exact maximum prefix matrix norms for this component, from +the identity on the 632 live coordinates, including E and its inverse. + +| orientation | old max norm1 | new max norm1 | old/new max norm-infinity | +| --- | ---: | ---: | ---: | +| forward | 79 | 79 | 151/4 | +| inverse-transpose | 151/4 | 153/4 | 79 | + +The literal reverse-inverse word has the same new bounds in the respective +orientations. Every exact prefix coefficient has denominator dividing 2^3; +the maximum reduced numerator bit length is three. These depth bounds match +the old component. The dual norm1 increase of 1/2 is real. The *whole supplier* +prefix, adjoint weights, rounded grid reserve and finite controller/tape bill +have not been rebound to the replacement. These component bounds alone do +not certify an existing whole-word precision reserve. + +## Bounded factory and complement screens + +These screens were chosen to test a premise beyond the prior fixed584/590 +recovery and enlarged644/660 entrance routes. They do not imply a universal +source-factory obstruction. + +First, the exact full non-target maps P and P^-1 were computed over the free +group algebra of all independent warp letters. For every selected low-frame +output pool I and protected input set J, scalar row/column annihilation is +expanded separately for every formal operator word before taking rational +kernels. This is not a scalar projection of noncommuting operators. + +An equal-clean source/copy exchange whose row difference involves only cold +inputs preserves P[:,J], provided J protects true sources and entering helper +dirt and the suffix is fixed. A cold-only invertible input premix also preserves +that block. Hence these changes cannot enlarge L=leftker(P[I,J]). At the +current rank-four pools all 26 rows are already saturated. Every current pool +through rank seven has rank(LK)=dim L, so a swap-only change at those exact +pools cannot add a direction. A general changed complementary clean basis or +changed suffix falls outside this observation. + +The paid-tail screen protects all 91 existing ended helper inputs and excludes +their output rows, so it cannot re-count an existing end. Among the 100 +distinct joins of two current rank-six last frames having rank at most seven, +every complete low-supported pool has L=0. No cold direction is available by +only changing the cold input basis and appending a tail at these joins. +`JOIN-SCREEN.json` contains every exact pool and pairing dimension. + +The genuinely changed complement screen uses the 28 independent A-end +two-coordinate source pairs. Eight pairs have a native warp on a changed wire +and are excluded. For each of the other 20 pairs it inserts an invertible T +after A and conjugates *every* subsequent cut/B/restore read and producer by +T, retaining all warp letters on other wires. For an outside read the new +coefficient row is the old row times T^-1; for a producer it is T times the old +column. Mutable cells therefore remain in the current basis at every use. +Read combinations are merged only by checked commuting transpositions and +never across a warp sentinel. All old helper identities remain identities +under this change because the final non-target map is T P on the two source +rows only. Its cleanup is the reverse-inverse of the complete changed +non-target word, with the same ended-helper substitutions; an inherited old +cleanup is not asserted for a rejected candidate. + +The finite domain consists of the 20 original-coordinate bases and, for each +pair, both triangular shears with coefficient in +`{-4,-2,-1,-1/2,1/2,1,2,4}`: 340 candidates per provider. All 680 complete +forward contact patterns fail monotone native frames with the old target +cuts, native charts, 91 helper ends and chronological order retained. +`FRAME-WITNESSES.json.gz` stores a concrete increasing contact path for every +case, including the forced direction and endpoint cap. An independent small +GF(2) verifier checks consecutive shared-register contacts and a separating +normal at the endpoint. `FRAME-WITNESS-SUMMARY.json` records the exact domain +and decompressed witness hash. An arbitrary larger GL basis, changed chart, +target endpoint, source assignment or whole consumer network is not excluded. +Rejected candidates have no admitted paid profile; unknown adapter/native +costs are not assigned zero. + +## Reproduction and attribution + +The positive construction and independent check use Python's standard library: + + python3 -B shared_compensation.py + python3 -B check_shared.py + +The source blobs must be present at the exact Git head above. The screen scripts +reuse the frozen source frame engine, with its exact path and source pins in +the preserved script imports, and the existing local venv only for mpmath. +`frame_witnesses.py` rechecks the literal path certificates without relying on +the optimizer's cost output. `MANIFEST.json` binds the local evidence files. + +PR2857/Yiyang Lu's shared compensation-kernel method and PR2894/Jeremy Kothe's +preload composition are separate predecessor mechanisms. PR2696/Mason Hale and +PR2751/Tekalign supply the exact dirty source-recovery lessons. The historical +Gauge44 source/copy and complementary-basis construction is credited to +icekylinx with OpenAI GPT-6 Astra assistance, with its PR531/PR635/AtomScout and +native lineage retained. None of those historical results certifies this +changed word. The actual present source is dcharb78's PR3133 and Ross +Richardson's PR3605, with all credits and notices in their pinned packages. + +The new local contribution is the emitted shared target-basis compensation +word, its exact cleared-work and prefix bill, and this bounded full-suffix +conjugation screen. Prepared with substantial OpenAI Codex assistance. Separate +AI checks do not constitute independent human review or formal-kernel proof. + +Possible standalone publication requires checking the prior compensation +forest and two-sided target-basis literature against these exact words and +binding the whole finite scalar/numerical invoice. `PUBLICATION-OVERLAP-LEADS.json` +records cache leads, not novelty evidence. No publication is promised. Native +phase/compiler binding, whole-word precision, owner/physical admission, all-size +compiler/source access/hosting, SCALAR/COPY/CLEAR allocation, finite tape costs, +recursive rounding, bootstrap/PR559 recovery/analytic transfer and BIT H1-H5 +remain at their inherited scope. This work does not alter the selected record. diff --git a/research/staged-compensation-forests/frozen/inputs/HISTORICAL-base.json.gz b/research/staged-compensation-forests/frozen/inputs/HISTORICAL-base.json.gz new file mode 100644 index 0000000000000000000000000000000000000000..4c0905b320332400e94dbd0d05cce1fe0870dcd9 GIT binary patch literal 9960 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%0D)yj}b16uT^~!f2krUhFSb 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 F{|7mB)_VW| literal 0 HcmV?d00001 diff --git a/research/staged-compensation-forests/frozen/inputs/HISTORICAL-extra.json.gz b/research/staged-compensation-forests/frozen/inputs/HISTORICAL-extra.json.gz new file mode 100644 index 0000000000000000000000000000000000000000..4c0905b320332400e94dbd0d05cce1fe0870dcd9 GIT binary patch literal 9960 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%0D)yj}b16uT^~!f2krUhFSb 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 F{|7mB)_VW| literal 0 HcmV?d00001 diff --git a/research/staged-compensation-forests/frozen/inputs/SOURCE-base.json.gz b/research/staged-compensation-forests/frozen/inputs/SOURCE-base.json.gz new file mode 100644 index 0000000000000000000000000000000000000000..dc6d321b1e8e2a837a1ff7bb60e8f8f78d043db5 GIT binary patch literal 72570 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 literal 0 HcmV?d00001 diff --git a/research/staged-compensation-forests/frozen/inputs/SOURCE-extra.json.gz b/research/staged-compensation-forests/frozen/inputs/SOURCE-extra.json.gz new file mode 100644 index 0000000000000000000000000000000000000000..78e7b2bb0653c8dcc0133980a19dd9d97ebdb67e GIT binary patch literal 72568 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

c^2e-a+VPhAq3>{xXm(b1#L+ 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 33` gates skipping `{22, 40, 54, 63}`, and `R2_E7` at `restore[190:203]`, `13 -> 15` gates skipping `{5, 73}`) on PR #2979's words that serve as the direct starting words for `B_586_438` and `B_588_440`. +- **New here (dcharb78, with AI assistance)**: the two coupled `B` + `restore` dying-helper carrier folds (`B_586_438` and `B_588_440`, `6` hunks / `6 -> 5` gates each) and `helper_final` lowerings on entering helpers `586` ($E_{30} \to V_{30,76,82}$) and `588` ($E_{30} \to V_{30,97,127}$) shifting the helper width inventory from `{4:26, 5:2, 6:16, 7:52, 8:99, 9:213}` to `{4:26, 5:2, 6:18, 7:50, 8:99, 9:213}` (`+665` net profit per helper, `+1,330` joint), the literal `T74_optimal_idle39` allocation (`allocation/FILL.json.gz`), the 21-control per-word edit review (`edits/edits_review.py`) and 100-control four-stage replay (`verify.py`), and the re-derived paid profile, cap certificate (`certificates/RELAX-CAP.json`), and complete fresh-native admission and release receipts. PR #2979 (mdumitrean), PR #3015 (jeremykothe2), and PR #3042 (dcharb78) are credited first. diff --git a/research/staged-compensation-forests/frozen/notices/LICENSE b/research/staged-compensation-forests/frozen/notices/LICENSE new file mode 100644 index 0000000000..261eeb9e9f --- /dev/null +++ b/research/staged-compensation-forests/frozen/notices/LICENSE @@ -0,0 +1,201 @@ + Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + + APPENDIX: How to apply the Apache License to your work. + + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "[]" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. + + Copyright [yyyy] [name of copyright owner] + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. diff --git a/research/staged-compensation-forests/frozen/notices/NATIVE-LINEAGE-NOTICE b/research/staged-compensation-forests/frozen/notices/NATIVE-LINEAGE-NOTICE new file mode 100644 index 0000000000..380e979f0e --- /dev/null +++ b/research/staged-compensation-forests/frozen/notices/NATIVE-LINEAGE-NOTICE @@ -0,0 +1,14 @@ +Anticipatory dirty borrowing: PR2226 (Cinna Davis / 1337isnot1337, with substantial OpenAI Codex assistance) is credited first. Its alias rule, changed-reference K_G handoffs, initial compensation and exact free-operator replay (vendored under new/code/borrow/vendor, see new/code/borrow/NOTICE-PR2226.md) are applied here to the T74 pivot-566+554 words; the native lowering, window-exact owner fill and independent audit of the borrow words are new in this package. Bootstrap carried-cutoff repair: PR1956 (Josie Elliston); Lemma G label/adapter checks and X/Y/Z mutants: PR1964 (thakrarsagar), extended here with borrow warp/zero-buffer controls. + +New research prepared by Rohan Arun with substantial OpenAI Codex assistance. Apache-2.0. Parent words and build recipe method derive from Jeremy Kothe PR1274 and Rohan Arun PR1218, with lineage credited in README.md. All inherited mathematical qualifications are retained. +Additional pivot555 and567 composition by Rohan Arun with substantial OpenAI Codex assistance. + +T74 exact-fill owner construction by Rohan Arun with substantial OpenAI Codex assistance. + +PR1377 grid refinement credited to Jeremy Kothe. Outer witness refinement by Rohan Arun with OpenAI Codex assistance; construction unchanged. + +Pivot-566 kernel, words, edits, rebuild.py and rebind.py: PR1625 (mdumitrean). Endpoint/outer-witness stacking, fine_cache.py and oracle stage by jeremykothe2 with oh-my-pi assistance. + +The preceding paragraphs are inherited source notices, not attribution of this derivative. +This joint twelve-source construction, generator, independent replay, hosting composition and package: Tekalign (@tekuuu), with substantial OpenAI Codex assistance. No independent human review claimed. +Credits: Cinna Davis/PR2226 anticipatory dirty borrowing; Tekalign/PR2436 four lifted targets; Jeremy Kothe/PR2462,2588,2673 source pipeline, source-label swap and order/fill; zxv/PR2530 eight aliases; Mason Hale/PR2696 concentrated source-partner assignment and independent local interpreter; Philippe Van Velzen/PR2559,2679 evacuation, six pre-life hosts and refit/alias; themilkman216/PR2621 priority order; Marius-Paul Dumitrean/PR2733 independent concentrated/pre-life composition; Vlado Vojdanovski/PR2322 generator utilities. PR2720's fixed-old-path cut obstruction motivates the changed premise. The retained owner/native/bit/modern outer lineage and their notices remain in the pinned source. New work Apache-2.0. diff --git a/research/staged-compensation-forests/frozen/notices/NOTICE b/research/staged-compensation-forests/frozen/notices/NOTICE new file mode 100644 index 0000000000..89c20926ea --- /dev/null +++ b/research/staged-compensation-forests/frozen/notices/NOTICE @@ -0,0 +1,28 @@ +research/rank7-joint-endframes +Copyright 2026 Marius-Paul Dumitrean. Licensed under the Apache License, Version 2.0. +Prepared with substantial AI assistance (Anthropic Claude, via Claude Code). + +This package retains, byte-identical, Apache-2.0 files from: PR #2942 (Marius-Paul Dumitrean, head +a027b0f6fdb0ab2b42ba10fc31b53960166bf2bf, research/paired-extension-normal45): data/PARENT-base.json.gz and +data/PARENT-extra.json.gz (its data/WORD-*.json.gz), comparators/PR2942-CLAIM.json and tools/wordedit.py; PR #2917 +(Mason Hale, head 224bd5e56041c40078ff6b5fa7393733a215de5c, research/paired-helper-extension): structure.py (Jeremy +Diviney's PR2908 two-sided certificate checker), vendor/audit_local.py (PR2833's independent exact auditor, icekylinx +attribution), vendor/preload_move.py (Jeremy Kothe's PR2894 frame accounting and cleanup), allocation/ORDER.json, +allocation/DISPATCH.json and allocation/vendor/ (independent_owners.py: Tekalign's independent owner checker as vendored +by PR2839/PR2917; PLAN.json.gz, TEMPLATE.json.gz); PR #2957 (Jeremy Kothe, head b74b25f3ccc84c16e1a801d73b2f47e5ea764c78, +research/paired-extension-cap-fill-swaps): vendor/declared_rewrites.py (the pure applier of the fourteen declared +rewrites) and comparators/PR2957-CLAIM.json; PR #2966 (Jeremy Kothe, head e62d3eb9005117d82a9babcfa937ecc53237c490, +research/paired-extension-normal45-rewrites): comparators/PR2966-CLAIM.json; PR #2969 (Dugongue, head +e2ca469b08385d3d5e29a918d66dbefaf889e9f3, research/paired-swap-normal45): allocation/baseline/ (its CLAIM.json and its +allocation ORDER.json and PROFILE.json); and PR #2930 (head 81f3b5d12977eba09e06fbff729167d59faabe90): tools/relax.py, +tools/root.py, tools/relax_exact.py. +data/REWRITES-2957.json is Jeremy Kothe's PR2957 rewrite list, re-addressed to this package's stage-2 word with exact +preimages (every entry keeps a credit field). producer.py follows PR2917's producer.py (Mason Hale) for its paired steps; +verify.py, check_allocation.py, check_cap.py, run_registered.py and reproduce.py adapt our PR2942 versions of PR2917's and +PR2930's; tools/audit_allocation_moment.py is PR2917's exact moment auditor with only its authenticated baseline changed (to +the PR2969 headline); tools/derive_adapters.py generalizes PR2917's adapter derivation (PR2908, Jeremy Diviney); +tools/build_overlay.py follows the overlay conventions of PR2908's and PR2917's builders. construction/allocation/ retains +the flow model of PR2857/PR2843 (Yiyang Lu, Marius-Paul Dumitrean) as adapted for this allocation. All original notices of +the exported predecessor packages remain in force. + +Derived work (Apache-2.0): this package (`research/rank7-restore-carrier-skips`) builds on PR #2979 (Marius-Paul Dumitrean, head be191346, research/rank7-joint-endframes) and PR #3015 (Jeremy Kothe, jeremykothe2, research/rank7-joint-endframes-restore-edit), retained byte-identical except for the files named in README.md, plus two declared restore edit blocks (`R1_E42` and `R2_E7` in `edits/EDITS.json` and `edits/FINAL-WORD-*.json.gz`) and their re-derived certificates and complete fresh-native admission and release receipts by dcharb78, with AI assistance. PR #2979's own evidence is kept under evidence/pr2979/. diff --git a/research/staged-compensation-forests/frozen/prior/PR1080-CANONICAL-WORD.json.gz b/research/staged-compensation-forests/frozen/prior/PR1080-CANONICAL-WORD.json.gz new file mode 100644 index 0000000000000000000000000000000000000000..278a9df6a0fc4e8252a87077e124e13eb0a4b5a7 GIT binary patch literal 84026 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 0, G^-1(f0) = f1 for op < 0). The same event stream serves both orientations: +the inverse-transpose of a monomial K_G is the monomial conj(K_G) (same permutation, conjugated phases), a different +formal symbol of the free operator algebra, and the exact column check of the physical product is run for both. +""" +if not __debug__: + raise RuntimeError('assertions must remain enabled') # every check of this stage is an assert +import sys as _sys, os as _os; _sys.path.insert(0, _os.path.dirname(_os.path.abspath(__file__))) +import gzip,hashlib,json +from collections import Counter +from fractions import Fraction as Q +from pathlib import Path + +OUT=Path(_sys.argv[1]);cp=OUT/'CANONICAL-WORD.json.gz' +c=json.load(gzip.open(cp)) +frames=c['frames'];v,R,h=c['v'],c['R'],c['h'];n=2*v+R +def digest(x):return hashlib.sha256(json.dumps(x,sort_keys=True,separators=(',',':')).encode()).hexdigest() +def basis(vs): + b={} + for x in vs: + for p in sorted(b,reverse=True): + if x>>p&1:x^=b[p] + if x: + p=x.bit_length()-1 + for q in b: + if b[q]>>p&1:b[q]^=x + b[p]=x + return tuple(b[p] for p in sorted(b,reverse=True)) +def reg(x):return list(x) if isinstance(x,list) else ['L',x] # BW: ['Z', c] is a private zero buffer +def dual(e): + e=list(e) + if e[0]=='add':e[1],e[2]=e[2],e[1];e[3]*=-1 + else:e[2],e[3]=e[3],e[2] + return e +def scalar(e,back): + e=dual(e) if back else list(e) + if e[0]=='add':return ['add',reg(e[1]),reg(e[2]),e[3],e[4]] + return ['scale',reg(e[1]),e[2],e[3]] +def primitive_bound(e): + if e[0] in ('clear','copy'):return 1 + q=Q(e[3],e[4]) if e[0]=='add' else Q(e[2],e[3]) + a,b=abs(q.numerator),q.denominator + assert b&(b-1)==0 + if e[0]=='scale': + assert a&(a-1)==0 + return abs(a.bit_length()-b.bit_length())+int(q<0) + return 3+(a.bit_length()-1)+a.bit_count()+(b.bit_length()-1) +def lregs(e):return [r for r in ([e[1]]+([e[2]] if e[0]=='add' else [])) if not isinstance(r,list)] + +def expand(e): + """BW: a twisted addition t += c*W(s) at frame zero: warp s by W, add, unwarp (all rank zero at frame 0).""" + if e[0]!='tadd':return [e] + _,t,s,word,a,b,f=e + return [['warp',s,op,0,0] for op in reversed(word)]+[['add',t,s,a,b,0]]+[['warp',s,-op,0,0] for op in word] + +def emit(back): + out=[];cur=c['start'].copy() + def event(e):out.append(e) + def scal(e,f):event(['scalar',e,f]) + def warp(e): + _,r,op,f0,f1=e + if isinstance(r,list):assert r[0]=='Z' and f0==f1==1 + else: + assert cur[r]==f0,('warp frame mismatch',r,cur[r],f0);cur[r]=f1 + event(['warp',reg(r),op,f0,f1]) + event(['phase','zero_frame_precondition']) + for e0 in c['precondition']+c['compensation']: + for e in expand(e0): + if e[0]=='warp':warp(e);continue + regs=lregs(e) + assert all(c['start'][r]==0 for r in regs) + scal(scalar(e,back),0) + event(['phase','entry_adapters']) + entering=[r for r,f in enumerate(c['start']) if r>=2*v and f!=0] + hpe={r for r in range(2*v,n) if c['final'][r]!=1} + wrapped=sorted(set(entering)|hpe) + for r,f in enumerate(c['start']): + if r in wrapped:event(['residual_adapter','pre',r,f]+([c['final'][r]] if c['final'][r]!=1 else [])) + else:event(['adapter','old_to_new',r,f]) + def climb(r,f,part): + old=cur[r] + if old==f:return + assert basis(frames[old]+frames[f])==tuple(frames[f]) + rank=len(frames[f])-len(frames[old]);assert rank>0 + event(['climb',part,r,old,f,rank]);cur[r]=f + for part in ('A','centers','B')+(('cleanup_tail',) if c.get('tail') else ())+('final',): + event(['phase',part]) + if part in ('A','B','cleanup_tail'): + for e in (c['tail'] if part=='cleanup_tail' else c[part]): + if e[0]=='warp':warp(e);continue # BW: monomial reference change, no climb + for r in lregs(e):climb(r,e[-1],part) + scal(scalar(e,back),e[-1]) + elif part=='centers': + lv=lambda r:c.get('target_levels',{}).get(str(r-v),0) + assert all(cur[r]==lv(r) for r in range(v,2*v)) + for k,r in enumerate(c['centers']): + cf=c['center_frames'][k];assert cur[r]==cf + terms=[e for e in c['cut'] if e[2]==r] + path=[cf]+sorted({lv(e[1]) for e in terms}-{cf},key=lambda x:-len(frames[x])) + C=['C',k] + if not back: + scal(['clear',C],cf);scal(['copy',C,['L',r]],cf) + for a in range(len(path)): + if a>0:event(['center',k,path[a-1],path[a],len(frames[path[a-1]])-len(frames[path[a]])]) + for e in terms: + if lv(e[1])==path[a]:scal(['add',['L',e[1]],C,e[3],e[4]],path[a]) + scal(['clear',C],path[-1]) + else: + scal(['clear',C],path[-1]) + for a in range(len(path)-1,-1,-1): + for e in terms: + if lv(e[1])==path[a]:scal(['add',C,['L',e[1]],e[3],e[4]],path[a]) + if a>0:event(['center',k,path[a],path[a-1],len(frames[path[a-1]])-len(frames[path[a]])]) + scal(['add',['L',r],C,-1,1],cf);scal(['clear',C],cf) + else: + for r,f in enumerate(c['final']):climb(r,f,part) + event(['phase','exit_adapters']) + for r,f in enumerate(c['final']): + if r not in hpe:event(['adapter','new_to_old',r,f]) + event(['phase','full_frame_cleanup']) + zb=c.get('zero_buffers',[]) + for z in zb:event(['zero_buffer','alloc',z]) # BW: private FULL-frame zero buffers stand in for the restored (hyperplane-ended) helpers + for e in c['cleanup']: + if e[0]=='warp':warp(e);continue + regs=lregs(e) + assert all(c['final'][r]==1 for r in regs) + assert all(r[0]=='Z' and r[1] in zb for r in [e[1]]+([e[2]] if e[0]=='add' else []) if isinstance(r,list)) + scal(scalar(e,back),1) + for z in zb:event(['zero_buffer','free',z]) + for r in wrapped:event(['residual_adapter','post',r,c['start'][r]]+([c['final'][r]] if r in hpe else [])) + event(['phase','done']) + return out + +def add_row(dst,src,q): + for j,x in src.items(): + z=dst.get(j,Q(0))+q*x + if z:dst[j]=z + else:dst.pop(j,None) +def warp_row(row,op): + out={} + for (var,word),x in row.items(): + word=word[1:] if word and word[0]==-op else (op,)+word + out[var,word]=x + return out + +def check_local(events,back): + # BW: literal scalar replay of the emitted stream in the free warp algebra (rows over (register, warp word)), centres and zero buffers. + state={('L',r):{(r,()):Q(1)} for r in range(n)};live=[];paid=Counter();prims=0;macros=0;zlive=set();nwarp=0 + for e in events: + if e[0]=='climb':assert not live;paid[e[5]]+=1 + elif e[0]=='center':assert live==[e[1]];paid[e[4]]+=1 + elif e[0]=='zero_buffer': + z=e[2] + if e[1]=='alloc':assert z not in zlive;zlive.add(z);state['Z',z]={} + else:assert not state['Z',z] and z in zlive;zlive.remove(z) + elif e[0]=='warp': + t=tuple(e[1]);nwarp+=1;state[t]=warp_row(state[t],e[2]) + elif e[0]=='scalar': + op=e[1];tag=op[0];t=tuple(op[1]);macros+=1;prims+=2*primitive_bound(op) + if tag=='clear': + state[t]={} + if t[0]=='C' and t[1] in live:live.remove(t[1]) + elif tag=='copy':state[t]={(var,w):x for (var,w),x in state.get(tuple(op[2]),{}).items()};live.append(t[1]) + elif tag=='scale':state[t]={j:Q(op[2],op[3])*x for j,x in state[t].items()} + else: + s=tuple(op[2]);q=Q(op[3],op[4]);row=state.setdefault(t,{}) + if t[0]=='C' and t[1] not in live:live.append(t[1]) + add_row(row,state.get(s,{}),q) + assert not live and not zlive and all(not row for r,row in state.items() if r[0] in 'CZ') + for r in range(n): + expected={(r,()):Q(1)} + if back and r> k & 1: + x ^= pivots[k] + if x: + k = x.bit_length() - 1 + for j in pivots: + if pivots[j] >> k & 1: + pivots[j] ^= x + pivots[k] = x + return tuple(pivots[k] for k in sorted(pivots, reverse=True)) + + +def span(b): + s = {0} + for x in b: + s |= {t ^ x for t in s} + return frozenset(s) + + +def rank_of(vs): + return len(basis(vs)) + + +def solve_G(cols, h): + """G given as images of e_i; returns (invertible?, image-of-subspace function).""" + def lin(x): + out = 0 + for i, c in enumerate(cols): + if x >> i & 1: + out ^= c + return out + return lin, rank_of(cols) == h + + +# ---- free operator algebra over the warps ------------------------------------------------------------------ +def add_row(dst, src, c): + for key, value in list(src.items()): + z = dst.get(key, Q(0)) + c * value + if z: + dst[key] = z + elif key in dst: + del dst[key] + + +def warp_row(row, op): + out = {} + for (var, word), value in row.items(): + word = word[1:] if word and word[0] == -op else (op,) + word + out[var, word] = value + return out + + +def is_dyadic(q): + return q.denominator & (q.denominator - 1) == 0 + + +def gate_regs(e): + if e[0] == 'add': + return [e[1], e[2]] + if e[0] == 'scale': + return [e[1]] + raise AssertionError(e[0]) + + +def dual(e): + e = list(e) + if e[0] == 'add': + e[1], e[2] = e[2], e[1] + e[3] = -e[3] + elif e[0] == 'scale': + e[2], e[3] = e[3], e[2] + return e + + +def apply_gate(e, rows, back): + if back: + e = dual(e) + if e[0] == 'scale': + q = Q(e[2], e[3]) + assert q + rows[e[1]] = {j: q * x for j, x in rows[e[1]].items()} + else: + assert e[1] != e[2] + add_row(rows[e[1]], rows[e[2]], Q(e[3], e[4])) + + +def run(word_path, out): + t0 = time.monotonic() + word = read(word_path) + assert word['kind'] == 'BORROW-WORD' + v, h, R0 = word['report']['v'], word['report']['h'], word['report']['R'] + assert h == 9 and v == 112 + n0 = 2 * v + R0 + removed = sorted(word['removed']) + assert all(2 * v <= r < n0 for r in removed) and len(set(removed)) == len(removed) + k = len(removed) + kept = [r for r in range(n0) if r not in set(removed)] + newid = {r: i for i, r in enumerate(kept)} + n = len(kept) + R = R0 - k + assert n == 2 * v + R + Zbase = n0 # builder convention: zero buffer of restored c is register n0 + c + ports = word['ports'] + assert len(set(ports)) == v + full = tuple(1 << i for i in range(h - 1, -1, -1)) + frames, frame_ids = [(), full], {(): 0, full: 1} + + def fid(vectors): + frame = basis(vectors) + if frame not in frame_ids: + frame_ids[frame] = len(frames) + frames.append(frame) + return frame_ids[frame] + + def R_(r): # register -> new register (int) or ['Z', c] + if isinstance(r, list): + return r + if r >= Zbase: + return ['Z', newid[r - Zbase]] + return newid[r] + + start = [fid([p]) for p in ports] + [0] * (v + R) + for r, frame in word['start_extra'].items(): + assert 2 * v <= int(r) < n0 and int(r) not in set(removed) + start[newid[int(r)]] = fid(frame) + final = [1] * v + [fid(x for x in range(1, 1 << h) if (x & p).bit_count() % 2 == 0) for p in ports] + [1] * R + helper_final = {} + for r, frame in word['helper_final'].items(): + assert 2 * v <= int(r) < n0 and int(r) not in set(removed) + helper_final[newid[int(r)]] = fid(frame) + final[newid[int(r)]] = helper_final[newid[int(r)]] + zero_buffers = sorted(helper_final) # every restored (hyperplane-ended) helper is replaced by a private zero buffer in the FULL cleanup + + def gate(e): + e = copy.deepcopy(e) + # Four-low lifted-target port (PR2436 mechanism): literal A-phase warp after the entry adapters. + if e[0] == 'warp': + assert len(e) == 5 + return ['warp', R_(e[1]), e[2], fid(e[3]), fid(e[4])] + if e[0] == 'add': + e[1], e[2] = R_(e[1]), R_(e[2]) + else: + e[1] = R_(e[1]) + e[-1] = None if e[-1] is None else fid(e[-1]) + return e + + # warps: operator table; op id = position + 1; G given by images of the basis vectors + warps = [] + for i, (pos, lender, G, frm, to) in enumerate(word['warps']): + warps.append({'op': i + 1, 'B_pos': pos, 'lender': newid[lender], 'G_columns': list(G), + 'from_frame': fid(frm), 'to_frame': fid(to)}) + byp = {} + for w_ in warps: + byp.setdefault(w_['B_pos'], []).append(w_) + + def warp_event(r, op, f0, f1): + return ['warp', r, op, f0, f1] + + # compensation (zero frame): initial corrections first, as twisted additions t += c * W(s) + pre = [] + for term in word['initial_corrections']: + q = Q(term['coefficient']) + pre.append(['tadd', newid[term['target']], newid[term['source']], list(term['operator_word']), + q.numerator, q.denominator, 0]) + precondition = pre + [gate(e) for e in word['precondition']] # the formal initial corrections come first (PR2226 order) + compensation = [gate(e) for e in word['compensation']] + A = [gate(e) for e in word['A']] + cut = [gate(e) for e in word['cut']] + B = [] + for p in range(len(word['B']) + 1): + for w_ in sorted(byp.get(p, []), key=lambda x: x['op']): + B.append(warp_event(w_['lender'], w_['op'], w_['from_frame'], w_['to_frame'])) + if p < len(word['B']): + B.append(gate(word['B'][p])) + assert sum(1 for e in B if e[0] == 'warp') == len(warps) + tail = [gate(e) for e in word['restore']] + cleanup = [] + for e in word['cleanup']: + if e[0] == 'warp': + cleanup.append(warp_event(R_(e[1]), e[2], 1, 1)) + assert basis(e[3]) == full + else: + cleanup.append(gate(e)) + centers = [newid[r] for r in word['centers']] + center_frames = [fid(f) for f in word['center_frames']] + levels = {str(t): fid(f) for t, f in word['target_levels'].items()} + + canonical = dict(h=h, v=v, R=R, ports=ports, frames=frames, start=start, final=final, + precondition=precondition, compensation=compensation, A=A, cut=cut, B=B, tail=tail, + cleanup=cleanup, centers=centers, center_frames=center_frames, target_levels=levels, + warps=warps, zero_buffers=zero_buffers, removed=removed, helper_origin=kept[2 * v:], + borrow=dict(k=k, base=word.get('base'), original_helpers=R0)) + # ---- exact scalar replay in the free algebra over the warps (both orientations) ----------------------------------- + nz = len(zero_buffers) + + def regkey(r): + return tuple(r) if isinstance(r, list) else ('L', r) + + def expand_tadd(e): + _, t, s, wordops, a, b, f = e + ev = [warp_event(s, op, 0, 0) for op in reversed(wordops)] + ev.append(['add', t, s, a, b, 0]) + ev += [warp_event(s, -op, 0, 0) for op in wordops] + return ev + + def program(): + yield 'pre', [x for e in precondition + compensation for x in (expand_tadd(e) if e[0] == 'tadd' else [e])] + yield 'A', A + yield 'A', cut + yield 'B', B + yield 'tail', tail + yield 'cleanup', cleanup + + def fullprog(): + return [(part, e) for part, es in program() for e in es] + prog = fullprog() + for back in (False, True): + rows = {regkey(r): {(r, ()): Q(1)} for r in range(n)} + for c in zero_buffers: + rows[('Z', c)] = {} + for part, e in prog: + if e[0] == 'warp': + key = ('L', e[1]) if not isinstance(e[1], list) else tuple(e[1]) + rows[key] = warp_row(rows[key], e[2]) + else: + if e[0] == 'add': + src, dst = regkey(e[2]), regkey(e[1]) + a, b = e[3], e[4] + if back: + src, dst, a = dst, src, -a + assert src != dst + add_row(rows[dst], rows[src], Q(a, b)) + else: + key = regkey(e[1]) + a, b = (e[3], e[2]) if back else (e[2], e[3]) + q = Q(a, b) + assert q + rows[key] = {j: q * x for j, x in rows[key].items()} + expected = {regkey(r): {(r, ()): Q(1)} for r in range(n)} + for t in range(v): + if back: + expected[('L', t)][(v + t, ())] = Q(-1) + else: + expected[('L', v + t)][(t, ())] = Q(1) + for c in zero_buffers: + expected[('Z', c)] = {} + bad = [key for key in expected if rows[key] != expected[key]] + assert not bad, ('arbitrary-input endpoint (free warp algebra)', back, bad[:8]) + # dyadic primitives + for part, e in prog: + if e[0] == 'add': + assert is_dyadic(Q(e[3], e[4])) + elif e[0] == 'scale': + q = Q(e[2], e[3]) + a = abs(q.numerator) + assert is_dyadic(q) and a and a & (a - 1) == 0 + + wrapped_regs = {r for r in range(2 * v, n) if start[r] != 0 or final[r] != 1} # entering or hyperplane-ended helpers carry wrappers + # ---- frame chains, paid profile, edges, warps ------------------------------------------------------------------- + contains = lambda a, b: basis(frames[a] + frames[b]) == tuple(frames[b]) + cur = start.copy() + paid, edges = Counter(), set() + wsum = {w_['op']: w_ for w_ in warps} + G_of = {} + for w_ in warps: + lin, inv_ = solve_G(w_['G_columns'], h) + assert inv_, ('non-invertible G', w_['op']) + img = basis([lin(x) for x in frames[w_['from_frame']]]) + assert img == tuple(frames[w_['to_frame']]), ('G does not map the from frame onto the to frame', w_['op']) + assert len(frames[w_['from_frame']]) == len(frames[w_['to_frame']]) + G_of[w_['op']] = lin + warp_edges = set() + + def regs_of(e): + return [r for r in gate_regs(e) if not isinstance(r, list)] + + def climb(r, f): + old = cur[r] + assert contains(old, f), ('nonmonotone', r, old, f) + if old != f: + degree = len(frames[f]) - len(frames[old]) + paid[degree] += 1 + edges.add((old, f)) + cur[r] = f + + def do_warp(e): + _, r, op, f0, f1 = e + if isinstance(r, list): + assert r[0] == 'Z' + assert f0 == f1 == 1 + return + assert cur[r] == f0, ('warp frame mismatch', r, op, cur[r], f0) + a = abs(op) + lin = G_of[a] + if op > 0: + ok = basis([lin(x) for x in frames[f0]]) == tuple(frames[f1]) + else: + ok = basis([lin(x) for x in frames[f1]]) == tuple(frames[f0]) + assert ok, ('warp G does not carry the frame', op, f0, f1) + cur[r] = f1 + warp_edges.add((1 if op > 0 else -1, a, f0, f1)) + + # zero-frame phase + for e in precondition + compensation: + if e[0] == 'tadd': + assert start[e[2]] == 0 and start[e[1]] == 0 and e[-1] == 0 and e[2] not in set(wrapped_regs) and all(op != 0 for op in e[3]) + for ev in expand_tadd(e): + if ev[0] == 'warp': + do_warp(ev) # frame 0 -> 0: K_G itself is the physical operator + continue + for r in regs_of(e): + assert start[r] == 0 and e[-1] == 0, ('zero-frame precondition on a nonzero entrance', e) + for part in ('A', 'B'): + if part == 'B': + assert all(cur[r] == f for r, f in zip(centers, center_frames)) + assert all(cur[v + t] == levels.get(str(t), 0) for t in range(v)) + for r, frame in zip(centers, center_frames): + served = {levels.get(str(e[1] - v), 0) for e in cut if e[2] == r} + old = frame + for f in sorted(served, key=lambda f: -len(frames[f])): + assert contains(f, old) + if old != f: + paid[len(frames[old]) - len(frames[f])] += 1 + edges.add((old, f)) + edges.add((f, old)) + old = f + for e in (A if part == 'A' else B): + if e[0] == 'warp': + do_warp(e) + else: + for r in regs_of(e): + climb(r, e[-1]) + for e in tail: + for r in regs_of(e): + climb(r, e[-1]) + for r, f in enumerate(final): + climb(r, f) + for e in cleanup: + if e[0] == 'warp': + do_warp(e) + continue + for r in gate_regs(e): + if isinstance(r, list): + assert r[0] == 'Z' and r[1] in set(zero_buffers) and e[-1] == 1 + else: + assert final[r] == 1 and e[-1] == 1, ('cleanup on a non-FULL end', e) + assert all(len(frames[final[r]]) < h for r in zero_buffers) + assert set(zero_buffers) == set(helper_final) + rep = word['report'] + assert dict(paid) == {int(r): c for r, c in rep['local_profile'].items()}, ('paid profile differs', dict(paid), rep['local_profile']) + canonical['local_profile'] = dict(sorted(paid.items())) + canonical['edges'] = sorted(edges) + canonical['warp_edges'] = sorted(warp_edges) + out.mkdir(parents=True, exist_ok=False) + payload = json.dumps(canonical, sort_keys=True, separators=(',', ':')).encode() + (out / 'CANONICAL-WORD.json.gz').write_bytes(gzip.compress(payload, mtime=0)) + raw = word_path.read_bytes() + (out / 'FULL-WORD.json.gz').write_bytes(gzip.compress(gzip.decompress(raw) if word_path.suffix == '.gz' else raw, mtime=0)) + receipt = dict(status='PASS_BORROW_WORD_FREE_ALGEBRA_ALL_COLUMNS_AND_NATIVE_FRAMES', + input_content_sha256=hashlib.sha256(gzip.decompress(raw) if word_path.suffix == '.gz' else raw).hexdigest(), + canonical_content_sha256=hashlib.sha256(payload).hexdigest(), + live_columns_each_orientation=n, helpers=R, original_helpers=R0, removed_helpers=k, + zero_buffers=nz, warps=len(warps), warp_events=sum(e[0] == 'warp' for part, e in prog), + initial_corrections=len(word['initial_corrections']), + scalar_operations=len([1 for p, e in prog if e[0] != 'warp']), + local_profile=dict(sorted(paid.items())), local_rank_mass=sum(r * z for r, z in paid.items()), + widths=[len(frames[final[r]]) - len(frames[start[r]]) for r in range(2 * v, n)], + frames=len(frames), directed_edges=len(edges), warp_edge_classes=len(warp_edges), + seconds=time.monotonic() - t0, + scope='Fresh exact forward and inverse-transpose replay over a free noncommutative warp algebra on every arbitrary input, native frame chains, dyadic primitives, zero buffers returned to zero. Physical Clifford exactness of every warp is checked by the local replay and the phase recipes.') + (out / 'SCALAR-FRAME-AUDIT.json').write_text(json.dumps(receipt, indent=2) + '\n') + print(json.dumps({k_: x for k_, x in receipt.items() if k_ != 'widths'}, indent=2), flush=True) + + +if __name__ == '__main__': + ap = argparse.ArgumentParser(description=__doc__) + ap.add_argument('word', type=Path) + ap.add_argument('out', type=Path) + a = ap.parse_args() + run(a.word, a.out) diff --git a/research/staged-compensation-forests/frozen/reviews/c01-design/SOURCE-DEPENDENCIES.json b/research/staged-compensation-forests/frozen/reviews/c01-design/SOURCE-DEPENDENCIES.json new file mode 100644 index 0000000000..f5692951cd --- /dev/null +++ b/research/staged-compensation-forests/frozen/reviews/c01-design/SOURCE-DEPENDENCIES.json @@ -0,0 +1,51 @@ +{ + "files": [ + { + "commit": "3efbb5de06a49ffeea6684482f2d3fe48cdca3fb", + "path": "source-references/bw_transport.py", + "repository_path": "research/t74-native-fast/vendor/native/new/code/borrow/bw_transport.py", + "sha256": "9818e08b819310b40f1441b89be8c4369584a5b3fa5dfe9b86b1df9a7f5d6a76", + "usage": "frame-contract provenance, not executed by design" + }, + { + "commit": "3efbb5de06a49ffeea6684482f2d3fe48cdca3fb", + "path": "source-references/bw_emit.py", + "repository_path": "research/t74-native-fast/vendor/native/new/code/borrow/bw_emit.py", + "sha256": "99b59a6fa3feda86785e4225157dcb1a6169d256cec4f5e0acc9cea7a701df76", + "usage": "frame-contract provenance, not executed by design" + }, + { + "commit": "3efbb5de06a49ffeea6684482f2d3fe48cdca3fb", + "path": "artifacts/SOURCE-base.json.gz", + "repository_path": "research/staged-644-660-width-reduction/STAGED644-660-base.json.gz", + "sha256": "735c540b1fe29d0ceeb4d2f304ec941e5f2bd3bc92bafc8cce2b4f9a67a3b653", + "usage": "design mathematical input" + }, + { + "commit": "3efbb5de06a49ffeea6684482f2d3fe48cdca3fb", + "path": "artifacts/SOURCE-extra.json.gz", + "repository_path": "research/staged-644-660-width-reduction/STAGED644-660-extra.json.gz", + "sha256": "886338fc32da14f3389a82c8120a1bcf9c5e2f0ec3e9b2d377fdae809e1d977f", + "usage": "design mathematical input" + }, + { + "path": "artifacts/HISTORICAL-SHARED-COMPENSATION.json.gz", + "preserved_source": "kappa-3605-successor-20261018T0940Z/major-frontier/word-factory/SHARED-COMPENSATION-base.json.gz", + "sha256": "e7bdb1e299a43a8fcbdad4c598b7161e504a94691df3940a9a4eaf638f5013f0", + "usage": "same-C historical rank-basis comparator" + }, + { + "commit": "803e080e181229a3af2196b7a13615c9d81ae10d", + "path": "PR1080-CANONICAL-WORD.json.gz", + "sha256": "387a2266ffe006d20042221d967f67a4b18d9bb8de1cd1e01d4031b539fa74a5", + "usage": "different-matrix frozen source comparison" + }, + { + "commit": "803e080e181229a3af2196b7a13615c9d81ae10d", + "path": "PR1080-RECIPE.json", + "sha256": "d526804d9d627cbd850b0e54c3de9aadc74646e1a9b6befb577f42240720750a", + "usage": "one fixed prior-recipe transfer test" + } + ], + "scope": "Full frozen inputs for the three design/pricing/prior-comparison commands; source-reference files substantiate unexecuted frame-contract premises." +} diff --git a/research/staged-compensation-forests/frozen/reviews/c01-design/VALIDATION.json b/research/staged-compensation-forests/frozen/reviews/c01-design/VALIDATION.json new file mode 100644 index 0000000000..f4c5579438 --- /dev/null +++ b/research/staged-compensation-forests/frozen/reviews/c01-design/VALIDATION.json @@ -0,0 +1,80 @@ +{ + "arbitrary_columns_per_operator": 632, + "design_outputs_compared_whole_bytes": [ + "DESIGN.json", + "SOURCE-base.json.gz", + "FOREST-COMPENSATION-base.json.gz", + "FOREST-WORD-base.json.gz", + "TWO-SIDED-COMPENSATION-base.json.gz", + "TWO-SIDED-WORD-base.json.gz", + "SOURCE-extra.json.gz", + "FOREST-COMPENSATION-extra.json.gz", + "FOREST-WORD-extra.json.gz", + "TWO-SIDED-COMPENSATION-extra.json.gz", + "TWO-SIDED-WORD-extra.json.gz" + ], + "executed": [ + { + "mode": "normal", + "script": "design.py", + "status": "PASS", + "stdout": "base 31214 13716 10633 pairs 88 eligible 207\nextra 31214 13716 10633 pairs 88 eligible 207" + }, + { + "mode": "normal", + "script": "price_replay.py", + "status": "PASS", + "stdout": "PASS_LITERAL_HORNER_PRICES 21 coefficients" + }, + { + "mode": "normal", + "script": "compare_prior.py", + "status": "PASS", + "stdout": "PASS_PR1080_FIXED_TRANSFER_CHECK target_recipe_price 22548 unavailable 4 nonzero 14 nonfull 16" + }, + { + "mode": "optimized", + "script": "design.py", + "status": "PASS", + "stdout": "base 31214 13716 10633 pairs 88 eligible 207\nextra 31214 13716 10633 pairs 88 eligible 207" + }, + { + "mode": "optimized", + "script": "price_replay.py", + "status": "PASS", + "stdout": "PASS_LITERAL_HORNER_PRICES 21 coefficients" + }, + { + "mode": "optimized", + "script": "compare_prior.py", + "status": "PASS", + "stdout": "PASS_PR1080_FIXED_TRANSFER_CHECK target_recipe_price 22548 unavailable 4 nonzero 14 nonfull 16" + } + ], + "helper_only_counterexample_columns": 520, + "inputs_unchanged": true, + "no_native_chain_executed": true, + "normal_optimized_and_relocated_outputs_identical": true, + "operator_mutations_per_provider": 9, + "orientations_per_mutation": 3, + "primitive_coefficients_checked": 21, + "python_version": "Python 3.12.14", + "source_after": { + "PR1080-CANONICAL-WORD.json.gz": "387a2266ffe006d20042221d967f67a4b18d9bb8de1cd1e01d4031b539fa74a5", + "PR1080-RECIPE.json": "d526804d9d627cbd850b0e54c3de9aadc74646e1a9b6befb577f42240720750a", + "artifacts/HISTORICAL-SHARED-COMPENSATION.json.gz": "e7bdb1e299a43a8fcbdad4c598b7161e504a94691df3940a9a4eaf638f5013f0", + "artifacts/SOURCE-base.json.gz": "735c540b1fe29d0ceeb4d2f304ec941e5f2bd3bc92bafc8cce2b4f9a67a3b653", + "artifacts/SOURCE-extra.json.gz": "886338fc32da14f3389a82c8120a1bcf9c5e2f0ec3e9b2d377fdae809e1d977f", + "source-references/bw_emit.py": "99b59a6fa3feda86785e4225157dcb1a6169d256cec4f5e0acc9cea7a701df76", + "source-references/bw_transport.py": "9818e08b819310b40f1441b89be8c4369584a5b3fa5dfe9b86b1df9a7f5d6a76" + }, + "source_before": { + "PR1080-CANONICAL-WORD.json.gz": "387a2266ffe006d20042221d967f67a4b18d9bb8de1cd1e01d4031b539fa74a5", + "PR1080-RECIPE.json": "d526804d9d627cbd850b0e54c3de9aadc74646e1a9b6befb577f42240720750a", + "artifacts/HISTORICAL-SHARED-COMPENSATION.json.gz": "e7bdb1e299a43a8fcbdad4c598b7161e504a94691df3940a9a4eaf638f5013f0", + "artifacts/SOURCE-base.json.gz": "735c540b1fe29d0ceeb4d2f304ec941e5f2bd3bc92bafc8cce2b4f9a67a3b653", + "artifacts/SOURCE-extra.json.gz": "886338fc32da14f3389a82c8120a1bcf9c5e2f0ec3e9b2d377fdae809e1d977f", + "source-references/bw_emit.py": "99b59a6fa3feda86785e4225157dcb1a6169d256cec4f5e0acc9cea7a701df76", + "source-references/bw_transport.py": "9818e08b819310b40f1441b89be8c4369584a5b3fa5dfe9b86b1df9a7f5d6a76" + } +} diff --git a/research/staged-compensation-forests/frozen/reviews/c01-wholeword/SOURCE-DEPENDENCIES.json b/research/staged-compensation-forests/frozen/reviews/c01-wholeword/SOURCE-DEPENDENCIES.json new file mode 100644 index 0000000000..d2a5360ff2 --- /dev/null +++ b/research/staged-compensation-forests/frozen/reviews/c01-wholeword/SOURCE-DEPENDENCIES.json @@ -0,0 +1,63 @@ +{ + "files": [ + { + "head": "3efbb5de06a49ffeea6684482f2d3fe48cdca3fb", + "repository_path": "research/t74-native-fast/vendor/native/new/code/borrow/bw_transport.py", + "path": "bw_transport.py", + "sha256": "9818e08b819310b40f1441b89be8c4369584a5b3fa5dfe9b86b1df9a7f5d6a76", + "bytes": 17646 + }, + { + "head": "3efbb5de06a49ffeea6684482f2d3fe48cdca3fb", + "repository_path": "research/t74-native-fast/vendor/native/new/code/borrow/bw_emit.py", + "path": "bw_emit.py", + "sha256": "99b59a6fa3feda86785e4225157dcb1a6169d256cec4f5e0acc9cea7a701df76", + "bytes": 10012 + } + ], + "checker_input_bindings": { + "candidate_base": { + "bytes": 63913, + "decoded_sha256": "225cfbdf657b7aca21536948a5a810462393fe80d55e8662ae585dfafcdfdf3c", + "sha256": "52f37fbd972cf70ca3ec5edcb9a8bdb4e0bcffa06aa7179dcff4c938a4e7265d" + }, + "candidate_extra": { + "bytes": 63910, + "decoded_sha256": "20b8b7779904f7c33832f426489c192bf4b1ea0b7e53e041a5841e144d521f31", + "sha256": "0591b5386589c43cd10e9c516477bed5ea55d3fb28ee5eab02399b8750c3735d" + }, + "emitter_source": { + "bytes": 10012, + "decoded_sha256": "99b59a6fa3feda86785e4225157dcb1a6169d256cec4f5e0acc9cea7a701df76", + "sha256": "99b59a6fa3feda86785e4225157dcb1a6169d256cec4f5e0acc9cea7a701df76" + }, + "historical_panel_base": { + "bytes": 9960, + "decoded_sha256": "9f242abd5d2ed46a2e95dad46449d1d77c6fec330b5e0db6b324ac93fe756e62", + "sha256": "e7bdb1e299a43a8fcbdad4c598b7161e504a94691df3940a9a4eaf638f5013f0" + }, + "historical_panel_extra": { + "bytes": 9960, + "decoded_sha256": "9f242abd5d2ed46a2e95dad46449d1d77c6fec330b5e0db6b324ac93fe756e62", + "sha256": "e7bdb1e299a43a8fcbdad4c598b7161e504a94691df3940a9a4eaf638f5013f0" + }, + "source_base": { + "bytes": 72570, + "decoded_sha256": "94d33db98720483f57efcd7bf50657f29f710554474e4f6b4b90617ad4500263", + "sha256": "735c540b1fe29d0ceeb4d2f304ec941e5f2bd3bc92bafc8cce2b4f9a67a3b653" + }, + "source_extra": { + "bytes": 72568, + "decoded_sha256": "ec4b2e15beaf99be4a96a6056fd6e92d09ea2382a4d0e8ab321f10bb2fc1dd10", + "sha256": "886338fc32da14f3389a82c8120a1bcf9c5e2f0ec3e9b2d377fdae809e1d977f" + }, + "transport_source": { + "bytes": 17646, + "decoded_sha256": "9818e08b819310b40f1441b89be8c4369584a5b3fa5dfe9b86b1df9a7f5d6a76", + "sha256": "9818e08b819310b40f1441b89be8c4369584a5b3fa5dfe9b86b1df9a7f5d6a76" + } + }, + "source_head": "3efbb5de06a49ffeea6684482f2d3fe48cdca3fb", + "historical_panel": "C01 word-factory SHARED-COMPENSATION-{base,extra}.json.gz; immutable same-matrix rank-basis comparator", + "candidate_origin": "Sibling c01-design/artifacts/TWO-SIDED-WORD-{base,extra}.json.gz; only compensation changed" +} diff --git a/research/staged-compensation-forests/frozen/reviews/c01-wholeword/VALIDATION.json b/research/staged-compensation-forests/frozen/reviews/c01-wholeword/VALIDATION.json new file mode 100644 index 0000000000..c1adb5627e --- /dev/null +++ b/research/staged-compensation-forests/frozen/reviews/c01-wholeword/VALIDATION.json @@ -0,0 +1,72 @@ +{ + "python": "Python 3.12.14", + "runs": [ + { + "mode": "normal", + "returncode": 0, + "seconds": 17.47155079100048, + "command": [ + "/Users/ross/.cache/codex-runtimes/codex-primary-runtime/dependencies/python/bin/python3", + "-I", + "-B", + "/Users/ross/git/math/.research-automation/runs/unpublished-round2-20261020T1106Z/c01-wholeword/check.py", + "--source-base", + "/Users/ross/git/math/.research-automation/runs/unpublished-round2-20261020T1106Z/c01-design/artifacts/SOURCE-base.json.gz", + "--candidate-base", + "/Users/ross/git/math/.research-automation/runs/unpublished-round2-20261020T1106Z/c01-design/artifacts/TWO-SIDED-WORD-base.json.gz", + "--historical-panel-base", + "/Users/ross/git/math/.research-automation/runs/kappa-3605-successor-20261018T0940Z/major-frontier/word-factory/SHARED-COMPENSATION-base.json.gz", + "--source-extra", + "/Users/ross/git/math/.research-automation/runs/unpublished-round2-20261020T1106Z/c01-design/artifacts/SOURCE-extra.json.gz", + "--candidate-extra", + "/Users/ross/git/math/.research-automation/runs/unpublished-round2-20261020T1106Z/c01-design/artifacts/TWO-SIDED-WORD-extra.json.gz", + "--historical-panel-extra", + "/Users/ross/git/math/.research-automation/runs/kappa-3605-successor-20261018T0940Z/major-frontier/word-factory/SHARED-COMPENSATION-extra.json.gz", + "--transport-source", + "/Users/ross/git/math/.research-automation/runs/unpublished-round2-20261020T1106Z/c01-wholeword/bw_transport.py", + "--emitter-source", + "/Users/ross/git/math/.research-automation/runs/unpublished-round2-20261020T1106Z/c01-wholeword/bw_emit.py", + "--output", + "/Users/ross/git/math/.research-automation/runs/unpublished-round2-20261020T1106Z/c01-wholeword/CHECKS.json" + ] + }, + { + "mode": "optimized", + "returncode": 0, + "seconds": 12.394257875013864, + "command": [ + "/Users/ross/.cache/codex-runtimes/codex-primary-runtime/dependencies/python/bin/python3", + "-I", + "-O", + "-B", + "/Users/ross/git/math/.research-automation/runs/unpublished-round2-20261020T1106Z/c01-wholeword/check.py", + "--source-base", + "/Users/ross/git/math/.research-automation/runs/unpublished-round2-20261020T1106Z/c01-design/artifacts/SOURCE-base.json.gz", + "--candidate-base", + "/Users/ross/git/math/.research-automation/runs/unpublished-round2-20261020T1106Z/c01-design/artifacts/TWO-SIDED-WORD-base.json.gz", + "--historical-panel-base", + "/Users/ross/git/math/.research-automation/runs/kappa-3605-successor-20261018T0940Z/major-frontier/word-factory/SHARED-COMPENSATION-base.json.gz", + "--source-extra", + "/Users/ross/git/math/.research-automation/runs/unpublished-round2-20261020T1106Z/c01-design/artifacts/SOURCE-extra.json.gz", + "--candidate-extra", + "/Users/ross/git/math/.research-automation/runs/unpublished-round2-20261020T1106Z/c01-design/artifacts/TWO-SIDED-WORD-extra.json.gz", + "--historical-panel-extra", + "/Users/ross/git/math/.research-automation/runs/kappa-3605-successor-20261018T0940Z/major-frontier/word-factory/SHARED-COMPENSATION-extra.json.gz", + "--transport-source", + "/Users/ross/git/math/.research-automation/runs/unpublished-round2-20261020T1106Z/c01-wholeword/bw_transport.py", + "--emitter-source", + "/Users/ross/git/math/.research-automation/runs/unpublished-round2-20261020T1106Z/c01-wholeword/bw_emit.py", + "--output", + "/Users/ross/git/math/.research-automation/runs/unpublished-round2-20261020T1106Z/c01-wholeword/CHECKS-OPTIMIZED.json" + ] + } + ], + "byte_identical_normal_and_optimized": true, + "receipt_bytes": 1013816, + "receipt_sha256": "bd442037a8dc9c2a27f6a1b1e8b1e45e5c934cb7129cee2db2f85d1c20f26ec1", + "checker_sha256": "16cdeef8aabed919c066ad5da45450cfc524024814f550b3415368ed098a38c6", + "prior_checker_sha256": "793a5ad6ab49640f732aed19788e4eb30f7af6fe30709ac917ae07c80959f725", + "prior_receipt_sha256": "49d8a49ed821c5ef1556fe90a94d0779188b14205144de55365405921f8b7307", + "mathematical_receipt_identical_except_checker_sha256": true, + "loader_fix": "Execute the exact authenticated producer byte buffer through stdin; compile dont_inherit=True,optimize=0 with preserved __file__ and sys.argv." +} diff --git a/research/staged-compensation-forests/independent_mst.py b/research/staged-compensation-forests/independent_mst.py new file mode 100644 index 0000000000..ca3dda5476 --- /dev/null +++ b/research/staged-compensation-forests/independent_mst.py @@ -0,0 +1,534 @@ +#!/usr/bin/env python3 +"""Independent Fraction audit of the fixed C01 forest and helper basis. + +No builder or producer code is imported or executed. The producer's default +frame expressions are read from its pinned AST. All outputs must be external +to the two input directories. Prepared with substantial OpenAI Codex assistance. +""" +import argparse +import ast +from collections import Counter +from fractions import Fraction +from functools import lru_cache +import gzip +import hashlib +import heapq +import json +from pathlib import Path + +Q = Fraction +SOURCE_PINS = { + "base": "735c540b1fe29d0ceeb4d2f304ec941e5f2bd3bc92bafc8cce2b4f9a67a3b653", + "extra": "886338fc32da14f3389a82c8120a1bcf9c5e2f0ec3e9b2d377fdae809e1d977f", +} +TRANSPORT_PIN = "9818e08b819310b40f1441b89be8c4369584a5b3fa5dfe9b86b1df9a7f5d6a76" +TARGETS = tuple(range(112, 224)) + + +def require(ok, message): + if not ok: + raise ValueError(message) + + +def canonical(value): + return json.dumps(value, sort_keys=True, separators=(",", ":")).encode() + + +def digest(raw): + return hashlib.sha256(raw).hexdigest() + + +def load(path, bindings, label, pin=None): + raw = path.read_bytes() + if pin is not None: + require(digest(raw) == pin, "pinned input: " + label) + decoded = gzip.decompress(raw) if raw.startswith(b"\x1f\x8b") else raw + bindings[label] = {"sha256": digest(raw), "decoded_sha256": digest(decoded)} + return json.loads(decoded) + + +@lru_cache(maxsize=None) +def tariff(q): + """Count a literal cleared-work Horner program, using exact rationals.""" + if not q: + return 0 + work, count = Q(0), 1 # initial private CLEAR + digits = bin(abs(q.numerator))[2:] + for position, bit in enumerate(digits): + if position: + work *= 2 + count += 1 + if bit == "1": + work += 1 + count += 1 + denominator = q.denominator + while denominator != 1: + require(denominator % 2 == 0, "non-dyadic price") + work /= 2 + denominator //= 2 + count += 1 + require(work == abs(q), "Horner coefficient reconstruction") + return count + 2 # signed target ADD and final private CLEAR + + +def accumulate(dst, src, q): + for column, coefficient in src.items(): + value = dst.get(column, Q(0)) + q * coefficient + if value: + dst[column] = value + else: + dst.pop(column, None) + + +def difference(left, right, sign): + row = dict(left) + accumulate(row, right, -sign) + return row + + +def row_price(row): + return sum(tariff(q) for q in row.values()) + + +def gate(dst, src, q): + return ["add", dst, src, q.numerator, q.denominator, []] + + +def coefficient(event): + require(type(event) is list and len(event) == 6 and event[0] == "add" + and event[5] == [], "addition and ZERO-frame schema") + require(all(type(x) is int for x in event[1:5]) + and event[1] != event[2] and event[4] > 0, "addition coordinates") + q = Q(event[3], event[4]) + require(q != 0 and q.denominator & (q.denominator - 1) == 0, + "nonzero dyadic addition") + return q + + +def inverse(events): + return [gate(e[1], e[2], -coefficient(e)) for e in reversed(events)] + + +def sparse_matrix(events, helpers): + result = {t: {} for t in TARGETS} + for e in events: + q = coefficient(e) + require(e[1] in result and e[2] in helpers, "residual injection coordinates") + accumulate(result[e[1]], {e[2]: Q(1)}, q) + return result + + +def matrix_serial(matrix): + return [[r, [[c, str(q)] for c, q in sorted(row.items())]] + for r, row in sorted(matrix.items())] + + +def bill(events): + values = [coefficient(e) for e in events] + return {"logical_additions": len(events), + "component_primitives": sum(map(tariff, values)), + "coefficient_histogram": dict(sorted(Counter(map(str, values)).items()))} + + +def frame_contract(raw): + """Bind the reviewed default-frame formulas without running the producer.""" + require(digest(raw) == TRANSPORT_PIN, "pinned transport source") + tree = ast.parse(raw) + functions = [n for n in tree.body if isinstance(n, ast.FunctionDef) and n.name == "run"] + require(len(functions) == 1, "unique producer run") + expected = { + "start": "[fid([p]) for p in ports] + [0] * (v + R)", + "final": "[1] * v + [fid(x for x in range(1, 1 << h) if (x & p).bit_count() % 2 == 0) for p in ports] + [1] * R", + } + for name, expression in expected.items(): + nodes = [n.value for n in functions[0].body if isinstance(n, ast.Assign) + and any(isinstance(t, ast.Name) and t.id == name for t in n.targets)] + require(len(nodes) == 1, "unique default frame assignment") + require(ast.dump(nodes[0]) == ast.dump(ast.parse(expression, mode="eval").body), + "producer default frame expression") + return {"transport_sha256": TRANSPORT_PIN, + "helper_default_entrance": "ZERO", + "helper_default_terminal": "FULL", + "producer_executed": False} + + +def eligible_helpers(word, helpers): + require(word["report"]["v"] == 112 and word["report"]["h"] == 9, + "source geometry") + n = 224 + word["report"]["R"] + require(n == 704 and len(set(word["removed"])) == len(word["removed"]), + "source register inventory") + require(all(224 <= r < n for r in word["removed"]), "removed helper domain") + unavailable = set(word["removed"]) + extra = {int(k) for k in word["start_extra"]} + nonfull = {int(k) for k in word["helper_final"]} + require(all(224 <= h < n and h not in unavailable for h in helpers), + "active helper availability") + require(not (set(helpers) & extra), "helper ZERO entrance") + require(not (set(helpers) & nonfull), "helper FULL terminal") + return list(helpers) + + +def graph_certificate(C, record): + edges = [] + for t in TARGETS: + edges.append([row_price(C[t]), -1, t, 0]) + for t in TARGETS: + for p in TARGETS: + if p >= t: + break + for sign in (-1, 1): + edges.append([8 + row_price(difference(C[t], C[p], sign)), + p, t, sign]) + edges.sort() + require(len(edges) == 112 + 2 * (112 * 111 // 2) == 12544, "all signed graph edges") + require(record["edge_count"] == len(edges) + and record["edge_census_sha256"] == digest(canonical(edges)), + "builder edge census differs") + prices = {(a, b, s): cost for cost, a, b, s in edges} + nodes = (-1,) + TARGETS + adjacency = {v: [] for v in nodes} + tree = record["tree"] + require(len(tree) == 112 and len({tuple(e[1:]) for e in tree}) == 112, + "tree inventory") + for cost, a, b, sign in tree: + require(prices.get((a, b, sign)) == cost, "tree edge price") + adjacency[a].append((b, sign, cost)) + adjacency[b].append((a, sign, cost)) + parents, depths = {-1: None}, {-1: 0} + queue = [-1] + for node in queue: + for child, sign, cost in sorted(adjacency[node]): + if child not in parents: + parents[child] = [node, sign, cost] + depths[child] = depths[node] + 1 + queue.append(child) + require(len(parents) == 113, "tree spans every target") + require({str(k): v for k, v in parents.items()} == record["parent"], "tree parent record") + pathmax = {} + for start in nodes: + maximum, todo = {start: 0}, [start] + for node in todo: + for nxt, sign, cost in adjacency[node]: + if nxt not in maximum: + maximum[nxt] = max(maximum[node], cost) + todo.append(nxt) + pathmax[start] = maximum + slacks = [cost - pathmax[a][b] for cost, a, b, sign in edges] + require(all(s >= 0 for s in slacks), "MST cycle inequality") + # Independently solve with a heap-based Prim traversal of our priced graph. + graph = {v: [] for v in nodes} + for cost, a, b, sign in edges: + graph[a].append((cost, b)) + graph[b].append((cost, a)) + seen, heap, prim = {-1}, list(graph[-1]), 0 + heapq.heapify(heap) + while len(seen) < len(nodes): + require(bool(heap), "Prim graph connectivity") + cost, nxt = heapq.heappop(heap) + if nxt in seen: + continue + prim += cost + seen.add(nxt) + for item in graph[nxt]: + if item[1] not in seen: + heapq.heappush(heap, item) + require(prim == sum(e[0] for e in tree) == record["prim_cost"] == 13716, + "independent forest minimum") + return parents, depths, { + "edge_count": len(edges), "root_edges": 112, "signed_pair_edges": len(edges) - 112, + "edge_census_sha256": digest(canonical(edges)), + "all_cycle_inequalities_checked": len(slacks), + "cycle_slack_histogram": dict(sorted(Counter(slacks).items())), + "cycle_slacks_sha256": digest(canonical(slacks)), + "independent_heap_Prim_price": prim, + "tree": tree, "roots": sum(parents[t][0] == -1 for t in TARGETS), + "target_edges": sum(parents[t][0] != -1 for t in TARGETS), + "maximum_forest_depth": max(depths.values()) - 1, + } + + +def target_preparation(events, parents): + expected = {(t, parents[t][0], Q(-parents[t][1])) for t in TARGETS + if parents[t][0] != -1} + actual = [(e[1], e[2], coefficient(e)) for e in events] + require(set(actual) == expected and len(actual) == len(expected), + "target forest basis gates") + positions = {t: i for i, (t, p, q) in enumerate(actual)} + for t, p, q in actual: + require(p not in positions or positions[t] < positions[p], + "leaf before parent preparation") + + +def transformed_rows(C, parents): + return {t: dict(C[t]) if parents[t][0] == -1 + else difference(C[t], C[parents[t][0]], parents[t][1]) for t in TARGETS} + + +def helper_certificate(D, helpers, record): + columns = {h: {t: D[t][h] for t in TARGETS if h in D[t]} for h in helpers} + candidates = [] + for a in helpers: + for b in helpers: + if a == b: + continue + for sign in (-1, 1): + gain = row_price(columns[b]) - row_price(difference(columns[b], columns[a], sign)) - 8 + candidates.append([gain, a, b, sign]) + require(len(candidates) == 2 * 207 * 206 == 85284, "all helper candidate scores") + require(record["helper_candidate_count"] == len(candidates) + and record["helper_candidates_sha256"] == digest(canonical(candidates)), + "builder helper score census differs") + positive = sorted((e for e in candidates if e[0] > 0), + key=lambda e: (-e[0], e[1:])) + used, pairs = set(), [] + for gain, a, b, sign in positive: + if a not in used and b not in used: + pairs.append([gain, a, b, sign]) + used.update((a, b)) + require(pairs == record["pairs"] and len(pairs) == 88 and len(used) == 176, + "88 disjoint attaining helper pairs") + E = {t: dict(row) for t, row in D.items()} + for gain, a, b, sign in pairs: + for t in TARGETS: + value = D[t].get(b, Q(0)) - sign * D[t].get(a, Q(0)) + if value: + E[t][b] = value + else: + E[t].pop(b, None) + return pairs, E, { + "candidate_count": len(candidates), "candidate_sha256": digest(canonical(candidates)), + "positive_candidates": len(positive), "pairs": pairs, + "disjoint_helpers": len(used), "total_additive_saving": sum(e[0] for e in pairs), + "joint_optimum_claimed": False, + } + + +def endpoint(events, live, mode): + rows = {r: {r: Q(1)} for r in live} + stream = inverse(events) if mode == "inverse" else events + for e in stream: + q, dst, src = coefficient(e), e[1], e[2] + if mode == "dual": + dst, src, q = src, dst, -q + require(dst in rows and src in rows, "panel live register") + accumulate(rows[dst], rows[src], q) + return rows + + +def expected_endpoint(C, live, mode): + rows = {r: {r: Q(1)} for r in live} + for target, row in C.items(): + for helper, q in row.items(): + if mode == "dual": + rows[helper][target] = -q + else: + rows[target][helper] = q if mode == "forward" else -q + return rows + + +def defect(actual, expected): + for row in sorted(expected): + if actual[row] != expected[row]: + for column in sorted(set(actual[row]) | set(expected[row])): + if actual[row].get(column, 0) != expected[row].get(column, 0): + return {"row": row, "column": column, + "actual": str(actual[row].get(column, Q(0))), + "expected": str(expected[row].get(column, Q(0)))} + return None + + +def complete_endpoint_gate(actual, expected): + require(defect(actual, expected) is None, "complete arbitrary-input panel endpoint") + + +def rejects(label, action, expected_error): + try: + action() + except ValueError as error: + require(str(error) == expected_error, "wrong rejection for " + label + ": " + str(error)) + return {"name": label, "intended_gate": expected_error} + raise ValueError("control accepted: " + label) + + +def panel_controls(C, live, T, H, injection, Hi, Ti, parents, word, helpers): + global require + expected = expected_endpoint(C, live, "forward") + def flipped(events, index): + answer = [list(e) for e in events] + answer[index] = gate(events[index][1], events[index][2], -coefficient(events[index])) + return answer + original = [gate(t, h, q) for t, row in C.items() for h, q in row.items()] + variants = { + "omit_target_preparation": H + injection + Hi + Ti, + "wrong_target_basis_sign": flipped(T, 0) + H + injection + Hi + Ti, + "parent_before_child": list(reversed(T)) + H + injection + Hi + Ti, + "omit_helper_preparation": T + injection + Hi + Ti, + "wrong_helper_basis_sign": T + flipped(H, 0) + injection + Hi + Ti, + "stale_untransformed_residual": T + H + original + Hi + Ti, + "wrong_residual_sign": T + H + flipped(injection, 0) + Hi + Ti, + "omit_helper_restoration": T + H + injection + Ti, + "omit_target_restoration": T + H + injection + Hi, + "wrong_target_restoration_order": T + H + injection + Hi + list(reversed(Ti)), + } + controls = [] + for label, events in variants.items(): + actual = endpoint(events, live, "forward") + witness = defect(actual, expected) + require(witness is not None, "effective mathematical mutation: " + label) + record = rejects(label, lambda: complete_endpoint_gate(actual, expected), + "complete arbitrary-input panel endpoint") + record["witness"] = witness + controls.append(record) + controls.append(rejects("explicit_leaf_order_check", + lambda: target_preparation(list(reversed(T)), parents), + "leaf before parent preparation")) + changed = dict(word) + changed["start_extra"] = dict(word["start_extra"], **{str(helpers[0]): [1]}) + controls.append(rejects("nonzero_helper_entrance", + lambda: eligible_helpers(changed, helpers), "helper ZERO entrance")) + changed = dict(word) + changed["helper_final"] = dict(word["helper_final"], **{str(helpers[0]): [1]}) + controls.append(rejects("nonfull_helper_terminal", + lambda: eligible_helpers(changed, helpers), "helper FULL terminal")) + # Deliberately remove precisely the named endpoint requirement. The + # negative-control helper must then fail because the mutant was accepted. + saved = require + actual = endpoint(variants["omit_helper_restoration"], live, "forward") + try: + require = lambda ok, message: None if message == "complete arbitrary-input panel endpoint" else saved(ok, message) + try: + rejects("deleted_endpoint_gate", lambda: complete_endpoint_gate(actual, expected), + "complete arbitrary-input panel endpoint") + except ValueError as error: + saved(str(error) == "control accepted: deleted_endpoint_gate", "check-deletion sensitivity") + else: + raise ValueError("deleted endpoint gate was not detected") + finally: + require = saved + full = T + H + injection + Hi + Ti + paid_pair = [gate(TARGETS[0], helpers[0], Q(1)), gate(TARGETS[0], helpers[0], Q(-1))] + for mode in ("forward", "inverse", "dual"): + complete_endpoint_gate(endpoint(full + paid_pair, live, mode), expected_endpoint(C, live, mode)) + require(bill(full + paid_pair)["component_primitives"] == bill(full)["component_primitives"] + 8, + "positive cancelling pair must be paid") + omitted = endpoint(variants["omit_target_preparation"], live, "forward") + outside = [c for c in live if c not in TARGETS] + require(all(omitted[r].get(c, 0) == expected[r].get(c, 0) for r in live for c in outside), + "helper-only projection counterexample") + return {"rejections": controls, "named_endpoint_check_deletion_detected": True, + "paid_cancelling_pair": {"accepted_all_three_orientations": True, + "added_component_primitives": 8}, + "omitted_target_preparation_passes_helper_only_projection": True} + + +def main(): + parser = argparse.ArgumentParser(description=__doc__) + parser.add_argument("--source-dir", type=Path, required=True) + parser.add_argument("--candidate-dir", type=Path, required=True) + parser.add_argument("--transport-source", type=Path, required=True) + parser.add_argument("--output", type=Path, required=True) + args = parser.parse_args() + require(not any(args.output.resolve().is_relative_to(p.resolve()) + for p in (args.source_dir, args.candidate_dir)), "output must be external") + bindings = {} + transport = args.transport_source.read_bytes() + defaults = frame_contract(transport) + bindings["transport"] = {"sha256": digest(transport)} + design = load(args.candidate_dir / "DESIGN.json", bindings, "DESIGN") + require(design["head"] == "3efbb5de06a49ffeea6684482f2d3fe48cdca3fb", "source Git pin") + providers, common, common_C = {}, None, None + for provider in ("base", "extra"): + word = load(args.source_dir / f"SOURCE-{provider}.json.gz", + bindings, "source-" + provider, SOURCE_PINS[provider]) + active = sorted({e[2] for e in word["compensation"]}) + require(len(active) == 207, "all active helper columns") + C = sparse_matrix(word["compensation"], set(active)) + require(sum(map(len, C.values())) == len(word["compensation"]) == 5736, + "unaggregated fixed compensation") + eligible = eligible_helpers(word, active) + record = design["providers"][provider] + require(record["active_helpers"] == active == record["eligible_helpers"], + "helper frame eligibility record") + if common is None: + parents, depths, graph = graph_certificate(C, record) + D = transformed_rows(C, parents) + pairs, E, helper = helper_certificate(D, eligible, record) + common = {"matrix_sha256": digest(canonical(matrix_serial(C))), + "target_residual_sha256": digest(canonical(matrix_serial(D))), + "two_sided_residual_sha256": digest(canonical(matrix_serial(E))), + "graph": graph, "helper_construction": helper} + common_C = C + core_record = {k: record[k] for k in ("tree", "parent", "pairs", "edge_census_sha256", + "helper_candidates_sha256", "prim_cost")} + else: + require(C == common_C, "same C in both providers") + require(core_record == {k: record[k] for k in core_record}, "same fixed construction") + live = sorted(set(range(704)) - set(word["removed"])) + nt, nh, ni = 95, 88, 1922 + panels, audits = {}, {} + for variant, M in (("FOREST", D), ("TWO-SIDED", E)): + panel = load(args.candidate_dir / f"{variant}-COMPENSATION-{provider}.json.gz", + bindings, variant + "-panel-" + provider) + candidate = load(args.candidate_dir / f"{variant}-WORD-{provider}.json.gz", + bindings, variant + "-word-" + provider) + require(set(candidate) == set(word) + and all(candidate[k] == word[k] for k in word if k != "compensation"), + "outside compensation unchanged") + require(candidate["compensation"] == panel, "whole word uses audited compensation") + T = panel[:nt] + target_preparation(T, parents) + # Applying the literal T to C independently recovers the stated TC. + literal_D = {t: dict(row) for t, row in C.items()} + for e in T: + accumulate(literal_D[e[1]], literal_D[e[2]], coefficient(e)) + require(literal_D == D, "literal target basis gives TC") + if variant == "FOREST": + injection, Ti = panel[nt:-nt], panel[-nt:] + require(Ti == inverse(T), "literal target inverse") + else: + H = panel[nt:nt+nh] + injection = panel[nt+nh:nt+nh+ni] + Hi = panel[nt+nh+ni:nt+2*nh+ni] + Ti = panel[nt+2*nh+ni:] + require(H == [gate(a, b, Q(sign)) for gain, a, b, sign in pairs], + "literal disjoint helper basis") + require(Hi == inverse(H) and Ti == inverse(T), "literal two-sided inverses") + require(sparse_matrix(injection, set(active)) == M + and len(injection) == sum(map(len, M.values())), + "complete residual TCH^-1") + checks = {} + for mode in ("forward", "inverse", "dual"): + rows = endpoint(panel, live, mode) + complete_endpoint_gate(rows, expected_endpoint(C, live, mode)) + checks[mode] = {"all_input_columns": len(live), + "operator_sha256": digest(canonical(matrix_serial(rows)))} + invoice = bill(panel) + name = "target_only_bill" if variant == "FOREST" else "two_sided_bill" + require(invoice == record[name], "complete literal bill") + audits[variant] = {"bill": invoice, "orientations": checks, + "residual_nonzeros": len(injection)} + panels[variant] = panel + require(bill(word["compensation"]) == record["original_bill"], "original full bill") + require([record[k]["component_primitives"] for k in + ("original_bill", "target_only_bill", "two_sided_bill")] == [31214, 13716, 10633], + "fixed price comparison") + require(13716 - common["helper_construction"]["total_additive_saving"] == 10633, + "helper scores include both basis directions") + controls = panel_controls(C, live, T, H, injection, Hi, Ti, parents, word, active) + providers[provider] = {"live_registers": len(live), "active_and_eligible_helpers": active, + "original_bill": bill(word["compensation"]), + "audits": audits, "controls": controls} + result = {"status": "PASS_INDEPENDENT_FRACTION_FOREST_AND_BASES", + "source_head": design["head"], "source_bindings": bindings, + "producer_default_frames": defaults, "common": common, "providers": providers, + "tariffs": {str(q): tariff(q) for q in sorted( + {coefficient(e) for panel in panels.values() for e in panel})}, + "scope": "Fixed single-parent signed-unit target forest minimum and a disjoint helper construction. All live input columns; no joint basis optimum, whole-word precision or new kappa claim."} + args.output.write_text(json.dumps(result, indent=2, sort_keys=True) + "\n") + print(result["status"], "edges=12544", "helper_scores=85284", "pairs=88", + "prices=31214,13716,10633") + + +if __name__ == "__main__": + main() diff --git a/research/staged-compensation-forests/price_replay.py b/research/staged-compensation-forests/price_replay.py new file mode 100644 index 0000000000..9e0a0a0c22 --- /dev/null +++ b/research/staged-compensation-forests/price_replay.py @@ -0,0 +1,115 @@ +"""Independent literal Horner price and three-symbol microcircuit replay.""" +import argparse +from collections import Counter +from fractions import Fraction as Q +import gzip +import hashlib +import json +from pathlib import Path + + +def require(ok, message): + if not ok: + raise ValueError(message) + + +def primitives(q): + require(q != 0, "zero coefficient is not emitted") + n = abs(q.numerator) + d = q.denominator + steps = [("clear", "w")] + for position, bit in enumerate(bin(n)[2:]): + if position: + steps.append(("double", "w")) + if bit == "1": + steps.append(("add", "w", "s", 1)) + while d > 1: + require(d % 2 == 0, "non-dyadic coefficient") + steps.append(("halve", "w")) + d //= 2 + steps.append(("add", "t", "w", 1 if q > 0 else -1)) + steps.append(("clear", "w")) + return steps + + +def check_microcircuit(q): + steps = primitives(q) + rows = {"s": [Q(1), Q(0), Q(0)], + "t": [Q(0), Q(1), Q(0)], + "w": [Q(0), Q(0), Q(1)]} + for step in steps: + op, dst, *rest = step + if op == "clear": + rows[dst] = [Q(0)] * 3 + elif op == "double": + rows[dst] = [2 * a for a in rows[dst]] + elif op == "halve": + rows[dst] = [a / 2 for a in rows[dst]] + elif op == "add": + src, sign = rest + rows[dst] = [a + sign * b for a, b in zip(rows[dst], rows[src])] + else: + raise ValueError(op) + require(rows == {"s": [Q(1), Q(0), Q(0)], + "t": [q, Q(1), Q(0)], + "w": [Q(0), Q(0), Q(0)]}, "coefficient microcircuit") + return len(steps) + + +def main(): + parser = argparse.ArgumentParser() + parser.add_argument("--artifacts", type=Path, required=True) + parser.add_argument("--output", type=Path, required=True) + args = parser.parse_args() + require(args.artifacts.resolve() not in args.output.resolve().parents, + "output must be outside frozen artifact directory") + files = { + "original": ("SOURCE-base.json.gz", "compensation"), + "historical-rank-basis": ("HISTORICAL-SHARED-COMPENSATION.json.gz", None), + "forest": ("FOREST-COMPENSATION-base.json.gz", None), + "two-sided": ("TWO-SIDED-COMPENSATION-base.json.gz", None), + } + panels, digests = {}, {} + for name, (path, key) in files.items(): + raw = (args.artifacts / path).read_bytes() + decoded = gzip.decompress(raw) + value = json.loads(decoded) + panels[name] = value[key] if key else value + digests[name] = { + "input": path, + "compressed_sha256": hashlib.sha256(raw).hexdigest(), + "decoded_sha256": hashlib.sha256(decoded).hexdigest(), + } + require(digests["original"]["compressed_sha256"] == + "735c540b1fe29d0ceeb4d2f304ec941e5f2bd3bc92bafc8cce2b4f9a67a3b653", + "original source pin") + require(digests["historical-rank-basis"]["decoded_sha256"] == + "9f242abd5d2ed46a2e95dad46449d1d77c6fec330b5e0db6b324ac93fe756e62", + "historical same-C source pin") + coefficients = {Q(g[3], g[4]) for panel in panels.values() for g in panel} + costs = {q: check_microcircuit(q) for q in coefficients} + bills = { + name: {"logical_additions": len(panel), + "component_primitives": sum(costs[Q(g[3], g[4])] for g in panel), + "histogram": dict(sorted(Counter(str(Q(g[3], g[4])) for g in panel).items()))} + for name, panel in panels.items() + } + require([bills[k]["component_primitives"] for k in files] == + [31214, 17334, 13716, 10633], "complete independent literal prices") + results = { + "source_bindings": digests, + "microcircuit_coefficients": {str(q): costs[q] for q in sorted(costs)}, + "arbitrary_microcircuit_input_symbols": ["source", "target", "coefficient-work"], + "private_work_output": "zero", + "bills": bills, + "two_real_component_savings_vs_original": 41162, + "two_real_component_savings_vs_historical_rank_basis": 13402, + "two_real_component_savings_vs_target_forest": 6166, + "scope": "Independent emitted Horner microcircuit count; not a whole-supplier precision or tape invoice.", + } + args.output.write_text(json.dumps(results, sort_keys=True, indent=2) + "\n") + print("PASS_LITERAL_HORNER_PRICES", len(costs), "coefficients") + + +if __name__ == "__main__": + main() diff --git a/research/staged-compensation-forests/verify.py b/research/staged-compensation-forests/verify.py new file mode 100644 index 0000000000..dd1fc936f5 --- /dev/null +++ b/research/staged-compensation-forests/verify.py @@ -0,0 +1,208 @@ +#!/usr/bin/env python3 +"""Authenticate and replay the finite staged compensation package. + +Ross Richardson with substantial OpenAI Codex assistance. Apache-2.0. +""" +import argparse +import gzip +import hashlib +import json +from pathlib import Path, PurePosixPath +import subprocess +import sys +import tempfile + + +def require(condition, message): + if not condition: + raise ValueError(message) + + +def unique_object(pairs): + result = {} + for key, value in pairs: + require(key not in result, "duplicate JSON key: " + key) + result[key] = value + return result + + +def invalid_constant(value): + raise ValueError("nonfinite JSON constant: " + value) + + +def decoded(raw): + return gzip.decompress(raw) if raw.startswith(b"\x1f\x8b") else raw + + +def data(raw): + return json.loads(decoded(raw), object_pairs_hook=unique_object, + parse_constant=invalid_constant) + + +def canonical(value): + return json.dumps(value, sort_keys=True, separators=(",", ":"), + ensure_ascii=False, allow_nan=False) + + +def digest(raw): + return hashlib.sha256(raw).hexdigest() + + +class Frozen: + def __init__(self, root): + self.root = Path(root).resolve() + self.hashes = data((self.root / "FROZEN-SHA256.json").read_bytes()) + self.origins = data((self.root / "ORIGINS.json").read_bytes()) + self.compared = [] + + def path(self, name): + parts = PurePosixPath(name) + require(not parts.is_absolute() and ".." not in parts.parts, + "unsafe package path") + path = self.root / name + require(path.is_file() and not path.is_symlink(), "missing regular input: " + name) + require(path.resolve().is_relative_to(self.root), "input escapes package") + return path + + def raw(self, name): + require(name in self.hashes, "unregistered input: " + name) + raw = self.path(name).read_bytes() + require(digest(raw) == self.hashes[name], "changed frozen input: " + name) + return raw + + def check_all(self): + require(set(self.origins) == set(self.hashes), "frozen/origin inventory mismatch") + for name in self.hashes: + raw = self.raw(name) + origin = self.origins[name] + require(origin["sha256"] == digest(raw), "origin digest mismatch: " + name) + if "original_sha256" in origin: + require(digest(decoded(raw)) == origin["original_sha256"], + "original decoded bytes changed: " + name) + + def compare(self, expected, generated): + require(canonical(data(self.raw(expected))) == canonical(data(generated)), + "complete typed record mismatch: " + expected) + self.compared.append(expected) + + def run(self, script, arguments): + source = self.raw(script) + bootstrap = ( + "import sys\n" + "source = sys.stdin.buffer.read()\n" + "sys.argv = sys.argv[1:]\n" + "namespace = {'__name__': '__main__', '__file__': sys.argv[0]}\n" + "exec(compile(source, sys.argv[0], 'exec', dont_inherit=True, optimize=0), namespace)\n" + ) + completed = subprocess.run( + [sys.executable, "-I", "-B", "-c", bootstrap, + str(self.path(script)), *map(str, arguments)], + cwd=self.root, input=source, capture_output=True, check=False) + require(completed.returncode == 0, + "checker failed: " + script + "\n" + + completed.stdout.decode(errors="replace") + + completed.stderr.decode(errors="replace")) + + +def construction_names(): + names = {"DESIGN.json"} + for provider in ("base", "extra"): + names.add("SOURCE-" + provider + ".json.gz") + for family in ("FOREST", "TWO-SIDED"): + for kind in ("COMPENSATION", "WORD"): + names.add(f"{family}-{kind}-{provider}.json.gz") + return names + + +def expected_records(stage): + if stage == "construction": + return {"artifacts/" + name for name in construction_names()} | { + "artifacts/PRICES.json", "artifacts/PR1080-COMPARISON.json"} + return {"forest": {"artifacts/INDEPENDENT-FOREST.json.gz"}, + "wholeword": {"artifacts/WHOLE-WORD.json.gz"}}[stage] + + +def check_coverage(stage, compared): + expected = expected_records(stage) + require(set(compared) == expected and len(compared) == len(expected), + "complete stage record coverage changed: " + stage) + + +def construction(frozen, scratch): + output = scratch / "construction" + frozen.run("construct.py", [ + "--source-dir", frozen.root / "frozen/inputs", "--out", output]) + names = construction_names() + require({p.name for p in output.iterdir()} == names, + "construction output inventory changed") + for name in sorted(names): + frozen.compare("artifacts/" + name, (output / name).read_bytes()) + price = scratch / "prices.json" + frozen.run("price_replay.py", [ + "--artifacts", frozen.root / "artifacts", "--output", price]) + frozen.compare("artifacts/PRICES.json", price.read_bytes()) + prior = scratch / "prior.json" + frozen.run("compare_prior.py", [ + "--current-word", frozen.root / "frozen/inputs/SOURCE-base.json.gz", + "--prior-word", frozen.root / "frozen/prior/PR1080-CANONICAL-WORD.json.gz", + "--prior-recipe", frozen.root / "frozen/prior/PR1080-RECIPE.json", + "--output", prior]) + frozen.compare("artifacts/PR1080-COMPARISON.json", prior.read_bytes()) + + +def forest(frozen, scratch): + output = scratch / "forest.json" + frozen.run("independent_mst.py", [ + "--source-dir", frozen.root / "frozen/inputs", + "--candidate-dir", frozen.root / "artifacts", + "--transport-source", frozen.root / "frozen/producers/bw_transport.py", + "--output", output]) + frozen.compare("artifacts/INDEPENDENT-FOREST.json.gz", output.read_bytes()) + + +def wholeword(frozen, scratch): + output = scratch / "wholeword.json" + arguments = [] + for provider in ("base", "extra"): + arguments += ["--source-" + provider, + frozen.root / f"frozen/inputs/SOURCE-{provider}.json.gz", + "--candidate-" + provider, + frozen.root / f"artifacts/TWO-SIDED-WORD-{provider}.json.gz", + "--historical-panel-" + provider, + frozen.root / f"frozen/inputs/HISTORICAL-{provider}.json.gz"] + arguments += [ + "--transport-source", frozen.root / "frozen/producers/bw_transport.py", + "--emitter-source", frozen.root / "frozen/producers/bw_emit.py", + "--output", output] + frozen.run("check_word.py", arguments) + frozen.compare("artifacts/WHOLE-WORD.json.gz", output.read_bytes()) + + +def main(): + parser = argparse.ArgumentParser(description=__doc__) + parser.add_argument("--stage", required=True, + choices=("construction", "forest", "wholeword")) + parser.add_argument("--output", type=Path) + args = parser.parse_args() + root = Path(__file__).resolve().parent + if args.output: + output = args.output.resolve() + require(not output.is_relative_to(root), "output must be outside package") + require(not output.exists(), "output already exists") + frozen = Frozen(root) + frozen.check_all() + with tempfile.TemporaryDirectory(prefix="staged-compensation-") as temporary: + globals()[args.stage](frozen, Path(temporary)) + check_coverage(args.stage, frozen.compared) + frozen.check_all() + receipt = {"status": "PASS_STAGED_COMPENSATION_" + args.stage.upper(), + "complete_records": sorted(frozen.compared), + "frozen_inputs": len(frozen.hashes), "no_new_kappa": True} + if args.output: + args.output.parent.mkdir(parents=True, exist_ok=True) + args.output.write_text(json.dumps(receipt, indent=2) + "\n") + print(receipt["status"], "records=" + str(len(frozen.compared))) + + +if __name__ == "__main__": + main()