From 001ebcdb3f86a7f9d5f5897f9cf5a84e74dd1822 Mon Sep 17 00:00:00 2001 From: Chris R Date: Mon, 19 Oct 2026 16:33:22 +1100 Subject: [PATCH 1/2] Certify two neutral-first retiming domains on pinned staged544 providers --- .../staged544-neutral-two-edit/.gitattributes | 1 + .../staged544-neutral-two-edit/.gitignore | 9 + .../staged544-neutral-two-edit/CENSUS.json | 10037 +++++++++++++ .../CERTIFICATE-base.json | 11817 ++++++++++++++++ .../CERTIFICATE-extra.json | 11817 ++++++++++++++++ .../staged544-neutral-two-edit/LEDGER.json | 186 + research/staged544-neutral-two-edit/PROOF.md | 146 + research/staged544-neutral-two-edit/README.md | 131 + .../staged544-neutral-two-edit/SOURCES.json | 154 + research/staged544-neutral-two-edit/TASK.json | 128 + .../VALIDATION.json | 108 + .../staged544-neutral-two-edit/VERIFY.json | 43 + .../check_controls.py | 33 + .../inputs/BORROW-WORD-43base.json.gz | Bin 0 -> 72769 bytes .../inputs/BORROW-WORD-43extra.json.gz | Bin 0 -> 72766 bytes .../inputs/PROFILE.json | 10 + research/staged544-neutral-two-edit/search.py | 339 + .../vendor/SOURCE-CREDITS.md | 14 + .../vendor/audit_core.py | 480 + .../vendor/audit_verify.py | 254 + .../vendor/pr3886_retiming.py | 269 + research/staged544-neutral-two-edit/verify.py | 250 + 22 files changed, 36226 insertions(+) create mode 100644 research/staged544-neutral-two-edit/.gitattributes create mode 100644 research/staged544-neutral-two-edit/.gitignore create mode 100644 research/staged544-neutral-two-edit/CENSUS.json create mode 100644 research/staged544-neutral-two-edit/CERTIFICATE-base.json create mode 100644 research/staged544-neutral-two-edit/CERTIFICATE-extra.json create mode 100644 research/staged544-neutral-two-edit/LEDGER.json create mode 100644 research/staged544-neutral-two-edit/PROOF.md create mode 100644 research/staged544-neutral-two-edit/README.md create mode 100644 research/staged544-neutral-two-edit/SOURCES.json create mode 100644 research/staged544-neutral-two-edit/TASK.json create mode 100644 research/staged544-neutral-two-edit/VALIDATION.json create mode 100644 research/staged544-neutral-two-edit/VERIFY.json create mode 100644 research/staged544-neutral-two-edit/check_controls.py create mode 100644 research/staged544-neutral-two-edit/inputs/BORROW-WORD-43base.json.gz create mode 100644 research/staged544-neutral-two-edit/inputs/BORROW-WORD-43extra.json.gz create mode 100644 research/staged544-neutral-two-edit/inputs/PROFILE.json create mode 100644 research/staged544-neutral-two-edit/search.py create mode 100644 research/staged544-neutral-two-edit/vendor/SOURCE-CREDITS.md create mode 100644 research/staged544-neutral-two-edit/vendor/audit_core.py create mode 100644 research/staged544-neutral-two-edit/vendor/audit_verify.py create mode 100644 research/staged544-neutral-two-edit/vendor/pr3886_retiming.py create mode 100644 research/staged544-neutral-two-edit/verify.py diff --git a/research/staged544-neutral-two-edit/.gitattributes b/research/staged544-neutral-two-edit/.gitattributes new file mode 100644 index 0000000000..fa1385d99a --- /dev/null +++ b/research/staged544-neutral-two-edit/.gitattributes @@ -0,0 +1 @@ +* -text diff --git a/research/staged544-neutral-two-edit/.gitignore b/research/staged544-neutral-two-edit/.gitignore new file mode 100644 index 0000000000..4d39da6267 --- /dev/null +++ b/research/staged544-neutral-two-edit/.gitignore @@ -0,0 +1,9 @@ +__pycache__/ +*.pyc +FIRST-*.json +SEARCH-*.json +PAIRS-*.json +NOVEL-*.json +GAINS-*.json +SEMANTICS-*.json +*.log diff --git a/research/staged544-neutral-two-edit/CENSUS.json b/research/staged544-neutral-two-edit/CENSUS.json new file mode 100644 index 0000000000..746311c0bf --- /dev/null +++ b/research/staged544-neutral-two-edit/CENSUS.json @@ -0,0 +1,10037 @@ +{ + "counts_are": "Insertion-cut/frame-dimension prices in a relaxation; not distinct circuits or all frame assignments.", + "evidence_kind": "Exact finite source-bound censuses plus informal scoped continuum proof; no formal kernel.", + "global_optimum_claim": false, + "new_current_supplier": false, + "providers": { + "base": { + "adjacent_dirty_block_checks": 3752, + "adjacent_swapped_gate_seconds": { + "counts": { + "commuting_adjacent_pairs": 3928, + "frame_rejected": 176, + "legal_first": 3752, + "second_prices": 3155468 + }, + "delta_types": [ + { + "caps": [ + 0, + 2, + 0, + 0, + 0, + 0, + 0, + 0, + 0 + ], + "count": 5404, + "delta": { + "1": -2, + "2": 4, + "3": -2 + }, + "prefix_caps": [ + 0, + 2, + 2, + 2, + 2, + 2, + 2, + 2 + ] + }, + { + "caps": [ + 0, + 1, + 1, + 0, + 0, + 0, + 0, + 0, + 0 + ], + "count": 8951, + "delta": { + "1": -1, + "2": 1, + "3": 1, + "4": -1 + }, + "prefix_caps": [ + 0, + 1, + 2, + 2, + 2, + 2, + 2, + 2 + ] + }, + { + "caps": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0 + ], + "count": 2713223, + "delta": {}, + "prefix_caps": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0 + ] + }, + { + "caps": [ + 1, + 2, + 1, + 0, + 0, + 0, + 0, + 0, + 0 + ], + "count": 9813, + "delta": { + "2": 2, + "4": -1 + }, + "prefix_caps": [ + 1, + 3, + 4, + 4, + 4, + 4, + 4, + 4 + ] + }, + { + "caps": [ + 1, + 2, + 0, + 0, + 0, + 0, + 0, + 0, + 0 + ], + "count": 2498, + "delta": { + "2": 3, + "3": -2 + }, + "prefix_caps": [ + 1, + 3, + 3, + 3, + 3, + 3, + 3, + 3 + ] + }, + { + "caps": [ + 2, + 4, + 2, + 0, + 0, + 0, + 0, + 0, + 0 + ], + "count": 37360, + "delta": { + "2": 4, + "4": -2 + }, + "prefix_caps": [ + 2, + 6, + 8, + 8, + 8, + 8, + 8, + 8 + ] + }, + { + "caps": [ + 1, + 1, + 1, + 0, + 0, + 0, + 0, + 0, + 0 + ], + "count": 14916, + "delta": { + "1": 1, + "3": 1, + "4": -1 + }, + "prefix_caps": [ + 1, + 2, + 3, + 3, + 3, + 3, + 3, + 3 + ] + }, + { + "caps": [ + 1, + 1, + 0, + 0, + 0, + 0, + 0, + 0, + 0 + ], + "count": 62032, + "delta": { + "1": 1, + "2": 1, + "3": -1 + }, + "prefix_caps": [ + 1, + 2, + 2, + 2, + 2, + 2, + 2, + 2 + ] + }, + { + "caps": [ + 1, + 1, + -1, + 0, + 0, + 0, + 0, + 0, + 0 + ], + "count": 2908, + "delta": { + "1": 1, + "2": 2, + "3": -3, + "4": 1 + }, + "prefix_caps": [ + 1, + 2, + 1, + 1, + 1, + 1, + 1, + 1 + ] + }, + { + "caps": [ + 2, + 3, + 1, + 0, + 0, + 0, + 0, + 0, + 0 + ], + "count": 14240, + "delta": { + "1": 1, + "2": 3, + "3": -1, + "4": -1 + }, + "prefix_caps": [ + 2, + 5, + 6, + 6, + 6, + 6, + 6, + 6 + ] + }, + { + "caps": [ + 1, + 0, + 1, + 1, + 0, + 0, + 0, + 0, + 0 + ], + "count": 3260, + "delta": { + "1": 2, + "2": -2, + "3": 1, + "4": 1, + "5": -1 + }, + "prefix_caps": [ + 1, + 1, + 2, + 3, + 3, + 3, + 3, + 3 + ] + }, + { + "caps": [ + 1, + 0, + 1, + 0, + 0, + 0, + 0, + 0, + 0 + ], + "count": 588, + "delta": { + "1": 2, + "2": -2, + "3": 2, + "4": -1 + }, + "prefix_caps": [ + 1, + 1, + 2, + 2, + 2, + 2, + 2, + 2 + ] + }, + { + "caps": [ + 1, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0 + ], + "count": 5225, + "delta": { + "1": 2, + "2": -1 + }, + "prefix_caps": [ + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1 + ] + }, + { + "caps": [ + 2, + 2, + 2, + 0, + 0, + 0, + 0, + 0, + 0 + ], + "count": 74720, + "delta": { + "1": 2, + "3": 2, + "4": -2 + }, + "prefix_caps": [ + 2, + 4, + 6, + 6, + 6, + 6, + 6, + 6 + ] + }, + { + "caps": [ + 2, + 2, + 1, + 0, + 0, + 0, + 0, + 0, + 0 + ], + "count": 14240, + "delta": { + "1": 2, + "2": 1, + "4": -1 + }, + "prefix_caps": [ + 2, + 4, + 5, + 5, + 5, + 5, + 5, + 5 + ] + }, + { + "caps": [ + 2, + 2, + 0, + 0, + 0, + 0, + 0, + 0, + 0 + ], + "count": 77464, + "delta": { + "1": 2, + "2": 2, + "3": -2 + }, + "prefix_caps": [ + 2, + 4, + 4, + 4, + 4, + 4, + 4, + 4 + ] + }, + { + "caps": [ + 2, + 1, + 1, + 0, + 0, + 0, + 0, + 0, + 0 + ], + "count": 84, + "delta": { + "1": 3, + "2": -1, + "3": 1, + "4": -1 + }, + "prefix_caps": [ + 2, + 3, + 4, + 4, + 4, + 4, + 4, + 4 + ] + }, + { + "caps": [ + 2, + 1, + 0, + 0, + 0, + 0, + 0, + 0, + 0 + ], + "count": 11192, + "delta": { + "1": 3, + "3": -1 + }, + "prefix_caps": [ + 2, + 3, + 3, + 3, + 3, + 3, + 3, + 3 + ] + }, + { + "caps": [ + 2, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0 + ], + "count": 97350, + "delta": { + "1": 4, + "2": -2 + }, + "prefix_caps": [ + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2 + ] + } + ], + "neutral_second_prices": 2713223, + "ordered_state_sha256": "05effe1091c6d10c37f1bf48c42d54289407e23049843fc4a45d9a499cca0929", + "strictly_worse_second_prices": 442245 + }, + "adjacent_third_gate_new_middle": { + "counts": { + "legal_first": 3752, + "second_prices": 1045449 + }, + "delta_types": [ + { + "caps": [ + 0, + 2, + 0, + 0, + 0, + 0, + 0, + 0, + 0 + ], + "count": 3018, + "delta": { + "1": -2, + "2": 4, + "3": -2 + }, + "prefix_caps": [ + 0, + 2, + 2, + 2, + 2, + 2, + 2, + 2 + ] + }, + { + "caps": [ + 0, + 1, + 1, + 0, + 0, + 0, + 0, + 0, + 0 + ], + "count": 4433, + "delta": { + "1": -1, + "2": 1, + "3": 1, + "4": -1 + }, + "prefix_caps": [ + 0, + 1, + 2, + 2, + 2, + 2, + 2, + 2 + ] + }, + { + "caps": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0 + ], + "count": 921868, + "delta": {}, + "prefix_caps": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0 + ] + }, + { + "caps": [ + 1, + 2, + 1, + 0, + 0, + 0, + 0, + 0, + 0 + ], + "count": 4677, + "delta": { + "2": 2, + "4": -1 + }, + "prefix_caps": [ + 1, + 3, + 4, + 4, + 4, + 4, + 4, + 4 + ] + }, + { + "caps": [ + 1, + 2, + 0, + 0, + 0, + 0, + 0, + 0, + 0 + ], + "count": 1235, + "delta": { + "2": 3, + "3": -2 + }, + "prefix_caps": [ + 1, + 3, + 3, + 3, + 3, + 3, + 3, + 3 + ] + }, + { + "caps": [ + 2, + 4, + 2, + 0, + 0, + 0, + 0, + 0, + 0 + ], + "count": 9248, + "delta": { + "2": 4, + "4": -2 + }, + "prefix_caps": [ + 2, + 6, + 8, + 8, + 8, + 8, + 8, + 8 + ] + }, + { + "caps": [ + 1, + 1, + 1, + 0, + 0, + 0, + 0, + 0, + 0 + ], + "count": 3656, + "delta": { + "1": 1, + "3": 1, + "4": -1 + }, + "prefix_caps": [ + 1, + 2, + 3, + 3, + 3, + 3, + 3, + 3 + ] + }, + { + "caps": [ + 1, + 1, + 0, + 0, + 0, + 0, + 0, + 0, + 0 + ], + "count": 17781, + "delta": { + "1": 1, + "2": 1, + "3": -1 + }, + "prefix_caps": [ + 1, + 2, + 2, + 2, + 2, + 2, + 2, + 2 + ] + }, + { + "caps": [ + 1, + 1, + -1, + 0, + 0, + 0, + 0, + 0, + 0 + ], + "count": 1369, + "delta": { + "1": 1, + "2": 2, + "3": -3, + "4": 1 + }, + "prefix_caps": [ + 1, + 2, + 1, + 1, + 1, + 1, + 1, + 1 + ] + }, + { + "caps": [ + 2, + 3, + 1, + 0, + 0, + 0, + 0, + 0, + 0 + ], + "count": 3502, + "delta": { + "1": 1, + "2": 3, + "3": -1, + "4": -1 + }, + "prefix_caps": [ + 2, + 5, + 6, + 6, + 6, + 6, + 6, + 6 + ] + }, + { + "caps": [ + 1, + 0, + 1, + 1, + 0, + 0, + 0, + 0, + 0 + ], + "count": 770, + "delta": { + "1": 2, + "2": -2, + "3": 1, + "4": 1, + "5": -1 + }, + "prefix_caps": [ + 1, + 1, + 2, + 3, + 3, + 3, + 3, + 3 + ] + }, + { + "caps": [ + 1, + 0, + 1, + 0, + 0, + 0, + 0, + 0, + 0 + ], + "count": 253, + "delta": { + "1": 2, + "2": -2, + "3": 2, + "4": -1 + }, + "prefix_caps": [ + 1, + 1, + 2, + 2, + 2, + 2, + 2, + 2 + ] + }, + { + "caps": [ + 1, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0 + ], + "count": 3054, + "delta": { + "1": 2, + "2": -1 + }, + "prefix_caps": [ + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1 + ] + }, + { + "caps": [ + 2, + 2, + 2, + 0, + 0, + 0, + 0, + 0, + 0 + ], + "count": 18496, + "delta": { + "1": 2, + "3": 2, + "4": -2 + }, + "prefix_caps": [ + 2, + 4, + 6, + 6, + 6, + 6, + 6, + 6 + ] + }, + { + "caps": [ + 2, + 2, + 1, + 0, + 0, + 0, + 0, + 0, + 0 + ], + "count": 3502, + "delta": { + "1": 2, + "2": 1, + "4": -1 + }, + "prefix_caps": [ + 2, + 4, + 5, + 5, + 5, + 5, + 5, + 5 + ] + }, + { + "caps": [ + 2, + 2, + 0, + 0, + 0, + 0, + 0, + 0, + 0 + ], + "count": 19698, + "delta": { + "1": 2, + "2": 2, + "3": -2 + }, + "prefix_caps": [ + 2, + 4, + 4, + 4, + 4, + 4, + 4, + 4 + ] + }, + { + "caps": [ + 2, + 1, + 1, + 0, + 0, + 0, + 0, + 0, + 0 + ], + "count": 69, + "delta": { + "1": 3, + "2": -1, + "3": 1, + "4": -1 + }, + "prefix_caps": [ + 2, + 3, + 4, + 4, + 4, + 4, + 4, + 4 + ] + }, + { + "caps": [ + 2, + 1, + 0, + 0, + 0, + 0, + 0, + 0, + 0 + ], + "count": 3666, + "delta": { + "1": 3, + "3": -1 + }, + "prefix_caps": [ + 2, + 3, + 3, + 3, + 3, + 3, + 3, + 3 + ] + }, + { + "caps": [ + 2, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0 + ], + "count": 25154, + "delta": { + "1": 4, + "2": -2 + }, + "prefix_caps": [ + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2 + ] + } + ], + "neutral_second_prices": 921868, + "ordered_state_sha256": "532217b93fa2c028810fc8e18e698434407f9cff1efa4f52502668a68d506461", + "strictly_worse_second_prices": 123581 + }, + "frame_changing_first": { + "counts": { + "legal_first": 122, + "second_prices": 1035911 + }, + "delta_types": [ + { + "caps": [ + 0, + 1, + 1, + 0, + 0, + 0, + 0, + 0, + 0 + ], + "count": 414, + "delta": { + "1": -1, + "2": 1, + "3": 1, + "4": -1 + }, + "prefix_caps": [ + 0, + 1, + 2, + 2, + 2, + 2, + 2, + 2 + ] + }, + { + "caps": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0 + ], + "count": 989125, + "delta": {}, + "prefix_caps": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0 + ] + }, + { + "caps": [ + 1, + 0, + 1, + 0, + 0, + 0, + 0, + 0, + 0 + ], + "count": 1415, + "delta": { + "1": 2, + "2": -2, + "3": 2, + "4": -1 + }, + "prefix_caps": [ + 1, + 1, + 2, + 2, + 2, + 2, + 2, + 2 + ] + }, + { + "caps": [ + 1, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0 + ], + "count": 7815, + "delta": { + "1": 2, + "2": -1 + }, + "prefix_caps": [ + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1 + ] + }, + { + "caps": [ + 2, + 2, + 0, + 0, + 0, + 0, + 0, + 0, + 0 + ], + "count": 33462, + "delta": { + "1": 2, + "2": 2, + "3": -2 + }, + "prefix_caps": [ + 2, + 4, + 4, + 4, + 4, + 4, + 4, + 4 + ] + }, + { + "caps": [ + 2, + 1, + 1, + 0, + 0, + 0, + 0, + 0, + 0 + ], + "count": 1105, + "delta": { + "1": 3, + "2": -1, + "3": 1, + "4": -1 + }, + "prefix_caps": [ + 2, + 3, + 4, + 4, + 4, + 4, + 4, + 4 + ] + }, + { + "caps": [ + 2, + 1, + 0, + 0, + 0, + 0, + 0, + 0, + 0 + ], + "count": 2575, + "delta": { + "1": 3, + "3": -1 + }, + "prefix_caps": [ + 2, + 3, + 3, + 3, + 3, + 3, + 3, + 3 + ] + } + ], + "first_edits": [ + { + "cut": 578, + "delta": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0 + ], + "frame": [ + 194 + ], + "index": 575, + "lower_dim": 0, + "registers": [ + 408, + 409 + ], + "section": "A", + "upper_dim": 1 + }, + { + "cut": 2026, + "delta": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0 + ], + "frame": [ + 11, + 21, + 38, + 448, + 5, + 64, + 128 + ], + "index": 2026, + "lower_dim": 4, + "registers": [ + 57, + 92 + ], + "section": "A", + "upper_dim": 7 + }, + { + "cut": 2028, + "delta": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0 + ], + "frame": [ + 11, + 21, + 38, + 448, + 5, + 64, + 128 + ], + "index": 2026, + "lower_dim": 4, + "registers": [ + 57, + 92 + ], + "section": "A", + "upper_dim": 7 + }, + { + "cut": 2029, + "delta": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0 + ], + "frame": [ + 11, + 21, + 38, + 448, + 5, + 64, + 128 + ], + "index": 2026, + "lower_dim": 4, + "registers": [ + 57, + 92 + ], + "section": "A", + "upper_dim": 7 + }, + { + "cut": 2180, + "delta": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0 + ], + "frame": [ + 45, + 85, + 133, + 261, + 5, + 11, + 16 + ], + "index": 2180, + "lower_dim": 4, + "registers": [ + 62, + 63 + ], + "section": "A", + "upper_dim": 7 + }, + { + "cut": 2182, + "delta": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0 + ], + "frame": [ + 45, + 85, + 133, + 261, + 5, + 11, + 16 + ], + "index": 2180, + "lower_dim": 4, + "registers": [ + 62, + 63 + ], + "section": "A", + "upper_dim": 7 + }, + { + "cut": 2183, + "delta": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0 + ], + "frame": [ + 45, + 85, + 133, + 261, + 5, + 11, + 16 + ], + "index": 2180, + "lower_dim": 4, + "registers": [ + 62, + 63 + ], + "section": "A", + "upper_dim": 7 + }, + { + "cut": 2334, + "delta": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0 + ], + "frame": [ + 14, + 35, + 69, + 400, + 5, + 16, + 128 + ], + "index": 2334, + "lower_dim": 4, + "registers": [ + 94, + 61 + ], + "section": "A", + "upper_dim": 7 + }, + { + "cut": 2336, + "delta": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0 + ], + "frame": [ + 14, + 35, + 69, + 400, + 5, + 16, + 128 + ], + "index": 2334, + "lower_dim": 4, + "registers": [ + 94, + 61 + ], + "section": "A", + "upper_dim": 7 + }, + { + "cut": 2337, + "delta": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0 + ], + "frame": [ + 14, + 35, + 69, + 400, + 5, + 16, + 128 + ], + "index": 2334, + "lower_dim": 4, + "registers": [ + 94, + 61 + ], + "section": "A", + "upper_dim": 7 + }, + { + "cut": 364, + "delta": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0 + ], + "frame": [ + 45, + 73, + 137, + 286, + 25 + ], + "index": 365, + "lower_dim": 4, + "registers": [ + 139, + 14 + ], + "section": "B", + "upper_dim": 5 + }, + { + "cut": 365, + "delta": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0 + ], + "frame": [ + 45, + 73, + 137, + 286, + 25 + ], + "index": 365, + "lower_dim": 4, + "registers": [ + 139, + 14 + ], + "section": "B", + "upper_dim": 5 + }, + { + "cut": 367, + "delta": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0 + ], + "frame": [ + 45, + 73, + 137, + 286, + 25 + ], + "index": 365, + "lower_dim": 4, + "registers": [ + 139, + 14 + ], + "section": "B", + "upper_dim": 5 + }, + { + "cut": 368, + "delta": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0 + ], + "frame": [ + 45, + 73, + 137, + 286, + 25 + ], + "index": 365, + "lower_dim": 4, + "registers": [ + 139, + 14 + ], + "section": "B", + "upper_dim": 5 + }, + { + "cut": 364, + "delta": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0 + ], + "frame": [ + 2, + 9, + 36, + 469, + 16 + ], + "index": 366, + "lower_dim": 4, + "registers": [ + 127, + 239 + ], + "section": "B", + "upper_dim": 5 + }, + { + "cut": 365, + "delta": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0 + ], + "frame": [ + 2, + 9, + 36, + 469, + 16 + ], + "index": 366, + "lower_dim": 4, + "registers": [ + 127, + 239 + ], + "section": "B", + "upper_dim": 5 + }, + { + "cut": 366, + "delta": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0 + ], + "frame": [ + 2, + 9, + 36, + 469, + 16 + ], + "index": 366, + "lower_dim": 4, + "registers": [ + 127, + 239 + ], + "section": "B", + "upper_dim": 5 + }, + { + "cut": 368, + "delta": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0 + ], + "frame": [ + 2, + 9, + 36, + 469, + 16 + ], + "index": 366, + "lower_dim": 4, + "registers": [ + 127, + 239 + ], + "section": "B", + "upper_dim": 5 + }, + { + "cut": 369, + "delta": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0 + ], + "frame": [ + 2, + 9, + 36, + 469, + 16 + ], + "index": 366, + "lower_dim": 4, + "registers": [ + 127, + 239 + ], + "section": "B", + "upper_dim": 5 + }, + { + "cut": 365, + "delta": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0 + ], + "frame": [ + 45, + 87, + 137, + 265, + 25 + ], + "index": 367, + "lower_dim": 4, + "registers": [ + 125, + 78 + ], + "section": "B", + "upper_dim": 5 + }, + { + "cut": 366, + "delta": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0 + ], + "frame": [ + 45, + 87, + 137, + 265, + 25 + ], + "index": 367, + "lower_dim": 4, + "registers": [ + 125, + 78 + ], + "section": "B", + "upper_dim": 5 + }, + { + "cut": 367, + "delta": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0 + ], + "frame": [ + 45, + 87, + 137, + 265, + 25 + ], + "index": 367, + "lower_dim": 4, + "registers": [ + 125, + 78 + ], + "section": "B", + "upper_dim": 5 + }, + { + "cut": 385, + "delta": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0 + ], + "frame": [ + 45, + 80, + 146, + 261, + 2 + ], + "index": 386, + "lower_dim": 4, + "registers": [ + 203, + 415 + ], + "section": "B", + "upper_dim": 5 + }, + { + "cut": 386, + "delta": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0 + ], + "frame": [ + 45, + 80, + 146, + 261, + 2 + ], + "index": 386, + "lower_dim": 4, + "registers": [ + 203, + 415 + ], + "section": "B", + "upper_dim": 5 + }, + { + "cut": 388, + "delta": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0 + ], + "frame": [ + 45, + 80, + 146, + 261, + 2 + ], + "index": 386, + "lower_dim": 4, + "registers": [ + 203, + 415 + ], + "section": "B", + "upper_dim": 5 + }, + { + "cut": 389, + "delta": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0 + ], + "frame": [ + 45, + 80, + 146, + 261, + 2 + ], + "index": 386, + "lower_dim": 4, + "registers": [ + 203, + 415 + ], + "section": "B", + "upper_dim": 5 + }, + { + "cut": 385, + "delta": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0 + ], + "frame": [ + 9, + 36, + 208, + 261, + 82 + ], + "index": 387, + "lower_dim": 4, + "registers": [ + 165, + 255 + ], + "section": "B", + "upper_dim": 5 + }, + { + "cut": 386, + "delta": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0 + ], + "frame": [ + 9, + 36, + 208, + 261, + 82 + ], + "index": 387, + "lower_dim": 4, + "registers": [ + 165, + 255 + ], + "section": "B", + "upper_dim": 5 + }, + { + "cut": 387, + "delta": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0 + ], + "frame": [ + 9, + 36, + 208, + 261, + 82 + ], + "index": 387, + "lower_dim": 4, + "registers": [ + 165, + 255 + ], + "section": "B", + "upper_dim": 5 + }, + { + "cut": 389, + "delta": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0 + ], + "frame": [ + 9, + 36, + 208, + 261, + 82 + ], + "index": 387, + "lower_dim": 4, + "registers": [ + 165, + 255 + ], + "section": "B", + "upper_dim": 5 + }, + { + "cut": 390, + "delta": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0 + ], + "frame": [ + 9, + 36, + 208, + 261, + 82 + ], + "index": 387, + "lower_dim": 4, + "registers": [ + 165, + 255 + ], + "section": "B", + "upper_dim": 5 + }, + { + "cut": 386, + "delta": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0 + ], + "frame": [ + 5, + 40, + 194, + 265, + 82 + ], + "index": 388, + "lower_dim": 4, + "registers": [ + 148, + 21 + ], + "section": "B", + "upper_dim": 5 + }, + { + "cut": 387, + "delta": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0 + ], + "frame": [ + 5, + 40, + 194, + 265, + 82 + ], + "index": 388, + "lower_dim": 4, + "registers": [ + 148, + 21 + ], + "section": "B", + "upper_dim": 5 + }, + { + "cut": 388, + "delta": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0 + ], + "frame": [ + 5, + 40, + 194, + 265, + 82 + ], + "index": 388, + "lower_dim": 4, + "registers": [ + 148, + 21 + ], + "section": "B", + "upper_dim": 5 + }, + { + "cut": 407, + "delta": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0 + ], + "frame": [ + 45, + 69, + 146, + 272, + 9 + ], + "index": 408, + "lower_dim": 4, + "registers": [ + 201, + 431 + ], + "section": "B", + "upper_dim": 5 + }, + { + "cut": 408, + "delta": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0 + ], + "frame": [ + 45, + 69, + 146, + 272, + 9 + ], + "index": 408, + "lower_dim": 4, + "registers": [ + 201, + 431 + ], + "section": "B", + "upper_dim": 5 + }, + { + "cut": 410, + "delta": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0 + ], + "frame": [ + 45, + 69, + 146, + 272, + 9 + ], + "index": 408, + "lower_dim": 4, + "registers": [ + 201, + 431 + ], + "section": "B", + "upper_dim": 5 + }, + { + "cut": 411, + "delta": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0 + ], + "frame": [ + 45, + 69, + 146, + 272, + 9 + ], + "index": 408, + "lower_dim": 4, + "registers": [ + 201, + 431 + ], + "section": "B", + "upper_dim": 5 + }, + { + "cut": 407, + "delta": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0 + ], + "frame": [ + 45, + 69, + 130, + 274, + 9 + ], + "index": 409, + "lower_dim": 4, + "registers": [ + 163, + 271 + ], + "section": "B", + "upper_dim": 5 + }, + { + "cut": 408, + "delta": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0 + ], + "frame": [ + 45, + 69, + 130, + 274, + 9 + ], + "index": 409, + "lower_dim": 4, + "registers": [ + 163, + 271 + ], + "section": "B", + "upper_dim": 5 + }, + { + "cut": 409, + "delta": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0 + ], + "frame": [ + 45, + 69, + 130, + 274, + 9 + ], + "index": 409, + "lower_dim": 4, + "registers": [ + 163, + 271 + ], + "section": "B", + "upper_dim": 5 + }, + { + "cut": 411, + "delta": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0 + ], + "frame": [ + 45, + 69, + 130, + 274, + 9 + ], + "index": 409, + "lower_dim": 4, + "registers": [ + 163, + 271 + ], + "section": "B", + "upper_dim": 5 + }, + { + "cut": 412, + "delta": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0 + ], + "frame": [ + 45, + 69, + 130, + 274, + 9 + ], + "index": 409, + "lower_dim": 4, + "registers": [ + 163, + 271 + ], + "section": "B", + "upper_dim": 5 + }, + { + "cut": 408, + "delta": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0 + ], + "frame": [ + 45, + 73, + 144, + 274, + 5 + ], + "index": 410, + "lower_dim": 4, + "registers": [ + 223, + 447 + ], + "section": "B", + "upper_dim": 5 + }, + { + "cut": 409, + "delta": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0 + ], + "frame": [ + 45, + 73, + 144, + 274, + 5 + ], + "index": 410, + "lower_dim": 4, + "registers": [ + 223, + 447 + ], + "section": "B", + "upper_dim": 5 + }, + { + "cut": 410, + "delta": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0 + ], + "frame": [ + 45, + 73, + 144, + 274, + 5 + ], + "index": 410, + "lower_dim": 4, + "registers": [ + 223, + 447 + ], + "section": "B", + "upper_dim": 5 + }, + { + "cut": 428, + "delta": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0 + ], + "frame": [ + 14, + 35, + 130, + 341, + 66 + ], + "index": 429, + "lower_dim": 4, + "registers": [ + 191, + 99 + ], + "section": "B", + "upper_dim": 5 + }, + { + "cut": 429, + "delta": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0 + ], + "frame": [ + 14, + 35, + 130, + 341, + 66 + ], + "index": 429, + "lower_dim": 4, + "registers": [ + 191, + 99 + ], + "section": "B", + "upper_dim": 5 + }, + { + "cut": 431, + "delta": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0 + ], + "frame": [ + 14, + 35, + 130, + 341, + 66 + ], + "index": 429, + "lower_dim": 4, + "registers": [ + 191, + 99 + ], + "section": "B", + "upper_dim": 5 + }, + { + "cut": 432, + "delta": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0 + ], + "frame": [ + 14, + 35, + 130, + 341, + 66 + ], + "index": 429, + "lower_dim": 4, + "registers": [ + 191, + 99 + ], + "section": "B", + "upper_dim": 5 + }, + { + "cut": 428, + "delta": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0 + ], + "frame": [ + 14, + 35, + 215, + 258, + 66 + ], + "index": 430, + "lower_dim": 4, + "registers": [ + 156, + 25 + ], + "section": "B", + "upper_dim": 5 + }, + { + "cut": 429, + "delta": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0 + ], + "frame": [ + 14, + 35, + 215, + 258, + 66 + ], + "index": 430, + "lower_dim": 4, + "registers": [ + 156, + 25 + ], + "section": "B", + "upper_dim": 5 + }, + { + "cut": 430, + "delta": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0 + ], + "frame": [ + 14, + 35, + 215, + 258, + 66 + ], + "index": 430, + "lower_dim": 4, + "registers": [ + 156, + 25 + ], + "section": "B", + "upper_dim": 5 + }, + { + "cut": 432, + "delta": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0 + ], + "frame": [ + 14, + 35, + 215, + 258, + 66 + ], + "index": 430, + "lower_dim": 4, + "registers": [ + 156, + 25 + ], + "section": "B", + "upper_dim": 5 + }, + { + "cut": 433, + "delta": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0 + ], + "frame": [ + 14, + 35, + 215, + 258, + 66 + ], + "index": 430, + "lower_dim": 4, + "registers": [ + 156, + 25 + ], + "section": "B", + "upper_dim": 5 + }, + { + "cut": 429, + "delta": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0 + ], + "frame": [ + 28, + 45, + 199, + 268, + 76 + ], + "index": 431, + "lower_dim": 4, + "registers": [ + 158, + 47 + ], + "section": "B", + "upper_dim": 5 + }, + { + "cut": 430, + "delta": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0 + ], + "frame": [ + 28, + 45, + 199, + 268, + 76 + ], + "index": 431, + "lower_dim": 4, + "registers": [ + 158, + 47 + ], + "section": "B", + "upper_dim": 5 + }, + { + "cut": 431, + "delta": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0 + ], + "frame": [ + 28, + 45, + 199, + 268, + 76 + ], + "index": 431, + "lower_dim": 4, + "registers": [ + 158, + 47 + ], + "section": "B", + "upper_dim": 5 + }, + { + "cut": 470, + "delta": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0 + ], + "frame": [ + 28, + 45, + 194, + 258, + 5 + ], + "index": 471, + "lower_dim": 4, + "registers": [ + 119, + 409 + ], + "section": "B", + "upper_dim": 5 + }, + { + "cut": 471, + "delta": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0 + ], + "frame": [ + 28, + 45, + 194, + 258, + 5 + ], + "index": 471, + "lower_dim": 4, + "registers": [ + 119, + 409 + ], + "section": "B", + "upper_dim": 5 + }, + { + "cut": 473, + "delta": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0 + ], + "frame": [ + 28, + 45, + 194, + 258, + 5 + ], + "index": 471, + "lower_dim": 4, + "registers": [ + 119, + 409 + ], + "section": "B", + "upper_dim": 5 + }, + { + "cut": 474, + "delta": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0 + ], + "frame": [ + 28, + 45, + 194, + 258, + 5 + ], + "index": 471, + "lower_dim": 4, + "registers": [ + 119, + 409 + ], + "section": "B", + "upper_dim": 5 + }, + { + "cut": 470, + "delta": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0 + ], + "frame": [ + 21, + 45, + 66, + 386, + 12 + ], + "index": 472, + "lower_dim": 4, + "registers": [ + 154, + 87 + ], + "section": "B", + "upper_dim": 5 + }, + { + "cut": 471, + "delta": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0 + ], + "frame": [ + 21, + 45, + 66, + 386, + 12 + ], + "index": 472, + "lower_dim": 4, + "registers": [ + 154, + 87 + ], + "section": "B", + "upper_dim": 5 + }, + { + "cut": 472, + "delta": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0 + ], + "frame": [ + 21, + 45, + 66, + 386, + 12 + ], + "index": 472, + "lower_dim": 4, + "registers": [ + 154, + 87 + ], + "section": "B", + "upper_dim": 5 + }, + { + "cut": 474, + "delta": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0 + ], + "frame": [ + 21, + 45, + 66, + 386, + 12 + ], + "index": 472, + "lower_dim": 4, + "registers": [ + 154, + 87 + ], + "section": "B", + "upper_dim": 5 + }, + { + "cut": 475, + "delta": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0 + ], + "frame": [ + 21, + 45, + 66, + 386, + 12 + ], + "index": 472, + "lower_dim": 4, + "registers": [ + 154, + 87 + ], + "section": "B", + "upper_dim": 5 + }, + { + "cut": 471, + "delta": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0 + ], + "frame": [ + 2, + 45, + 192, + 320, + 25 + ], + "index": 473, + "lower_dim": 4, + "registers": [ + 128, + 425 + ], + "section": "B", + "upper_dim": 5 + }, + { + "cut": 472, + "delta": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0 + ], + "frame": [ + 2, + 45, + 192, + 320, + 25 + ], + "index": 473, + "lower_dim": 4, + "registers": [ + 128, + 425 + ], + "section": "B", + "upper_dim": 5 + }, + { + "cut": 473, + "delta": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0 + ], + "frame": [ + 2, + 45, + 192, + 320, + 25 + ], + "index": 473, + "lower_dim": 4, + "registers": [ + 128, + 425 + ], + "section": "B", + "upper_dim": 5 + }, + { + "cut": 491, + "delta": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0 + ], + "frame": [ + 5, + 40, + 137, + 336, + 82 + ], + "index": 492, + "lower_dim": 4, + "registers": [ + 122, + 52 + ], + "section": "B", + "upper_dim": 5 + }, + { + "cut": 492, + "delta": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0 + ], + "frame": [ + 5, + 40, + 137, + 336, + 82 + ], + "index": 492, + "lower_dim": 4, + "registers": [ + 122, + 52 + ], + "section": "B", + "upper_dim": 5 + }, + { + "cut": 494, + "delta": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0 + ], + "frame": [ + 5, + 40, + 137, + 336, + 82 + ], + "index": 492, + "lower_dim": 4, + "registers": [ + 122, + 52 + ], + "section": "B", + "upper_dim": 5 + }, + { + "cut": 495, + "delta": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0 + ], + "frame": [ + 5, + 40, + 137, + 336, + 82 + ], + "index": 492, + "lower_dim": 4, + "registers": [ + 122, + 52 + ], + "section": "B", + "upper_dim": 5 + }, + { + "cut": 491, + "delta": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0 + ], + "frame": [ + 45, + 66, + 133, + 274, + 16 + ], + "index": 493, + "lower_dim": 4, + "registers": [ + 217, + 90 + ], + "section": "B", + "upper_dim": 5 + }, + { + "cut": 492, + "delta": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0 + ], + "frame": [ + 45, + 66, + 133, + 274, + 16 + ], + "index": 493, + "lower_dim": 4, + "registers": [ + 217, + 90 + ], + "section": "B", + "upper_dim": 5 + }, + { + "cut": 493, + "delta": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0 + ], + "frame": [ + 45, + 66, + 133, + 274, + 16 + ], + "index": 493, + "lower_dim": 4, + "registers": [ + 217, + 90 + ], + "section": "B", + "upper_dim": 5 + }, + { + "cut": 495, + "delta": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0 + ], + "frame": [ + 45, + 66, + 133, + 274, + 16 + ], + "index": 493, + "lower_dim": 4, + "registers": [ + 217, + 90 + ], + "section": "B", + "upper_dim": 5 + }, + { + "cut": 496, + "delta": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0 + ], + "frame": [ + 45, + 66, + 133, + 274, + 16 + ], + "index": 493, + "lower_dim": 4, + "registers": [ + 217, + 90 + ], + "section": "B", + "upper_dim": 5 + }, + { + "cut": 492, + "delta": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0 + ], + "frame": [ + 45, + 80, + 137, + 274, + 2 + ], + "index": 494, + "lower_dim": 4, + "registers": [ + 132, + 441 + ], + "section": "B", + "upper_dim": 5 + }, + { + "cut": 493, + "delta": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0 + ], + "frame": [ + 45, + 80, + 137, + 274, + 2 + ], + "index": 494, + "lower_dim": 4, + "registers": [ + 132, + 441 + ], + "section": "B", + "upper_dim": 5 + }, + { + "cut": 494, + "delta": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0 + ], + "frame": [ + 45, + 80, + 137, + 274, + 2 + ], + "index": 494, + "lower_dim": 4, + "registers": [ + 132, + 441 + ], + "section": "B", + "upper_dim": 5 + }, + { + "cut": 764, + "delta": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0 + ], + "frame": [ + 18, + 33, + 67, + 392, + 3 + ], + "index": 766, + "lower_dim": 4, + "registers": [ + 168, + 554 + ], + "section": "B", + "upper_dim": 5 + }, + { + "cut": 765, + "delta": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0 + ], + "frame": [ + 18, + 33, + 67, + 392, + 3 + ], + "index": 766, + "lower_dim": 4, + "registers": [ + 168, + 554 + ], + "section": "B", + "upper_dim": 5 + }, + { + "cut": 766, + "delta": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0 + ], + "frame": [ + 18, + 33, + 67, + 392, + 3 + ], + "index": 766, + "lower_dim": 4, + "registers": [ + 168, + 554 + ], + "section": "B", + "upper_dim": 5 + }, + { + "cut": 768, + "delta": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0 + ], + "frame": [ + 18, + 33, + 67, + 392, + 3 + ], + "index": 766, + "lower_dim": 4, + "registers": [ + 168, + 554 + ], + "section": "B", + "upper_dim": 5 + }, + { + "cut": 769, + "delta": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0 + ], + "frame": [ + 18, + 33, + 67, + 392, + 3 + ], + "index": 766, + "lower_dim": 4, + "registers": [ + 168, + 554 + ], + "section": "B", + "upper_dim": 5 + }, + { + "cut": 765, + "delta": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0 + ], + "frame": [ + 4, + 51, + 136, + 264, + 82 + ], + "index": 767, + "lower_dim": 4, + "registers": [ + 150, + 439 + ], + "section": "B", + "upper_dim": 5 + }, + { + "cut": 766, + "delta": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0 + ], + "frame": [ + 4, + 51, + 136, + 264, + 82 + ], + "index": 767, + "lower_dim": 4, + "registers": [ + 150, + 439 + ], + "section": "B", + "upper_dim": 5 + }, + { + "cut": 767, + "delta": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0 + ], + "frame": [ + 4, + 51, + 136, + 264, + 82 + ], + "index": 767, + "lower_dim": 4, + "registers": [ + 150, + 439 + ], + "section": "B", + "upper_dim": 5 + }, + { + "cut": 769, + "delta": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0 + ], + "frame": [ + 4, + 51, + 136, + 264, + 82 + ], + "index": 767, + "lower_dim": 4, + "registers": [ + 150, + 439 + ], + "section": "B", + "upper_dim": 5 + }, + { + "cut": 770, + "delta": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0 + ], + "frame": [ + 4, + 51, + 136, + 264, + 82 + ], + "index": 767, + "lower_dim": 4, + "registers": [ + 150, + 439 + ], + "section": "B", + "upper_dim": 5 + }, + { + "cut": 766, + "delta": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0 + ], + "frame": [ + 4, + 18, + 33, + 459, + 64 + ], + "index": 768, + "lower_dim": 4, + "registers": [ + 143, + 555 + ], + "section": "B", + "upper_dim": 5 + }, + { + "cut": 767, + "delta": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0 + ], + "frame": [ + 4, + 18, + 33, + 459, + 64 + ], + "index": 768, + "lower_dim": 4, + "registers": [ + 143, + 555 + ], + "section": "B", + "upper_dim": 5 + }, + { + "cut": 768, + "delta": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0 + ], + "frame": [ + 4, + 18, + 33, + 459, + 64 + ], + "index": 768, + "lower_dim": 4, + "registers": [ + 143, + 555 + ], + "section": "B", + "upper_dim": 5 + }, + { + "cut": 770, + "delta": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0 + ], + "frame": [ + 4, + 18, + 33, + 459, + 64 + ], + "index": 768, + "lower_dim": 4, + "registers": [ + 143, + 555 + ], + "section": "B", + "upper_dim": 5 + }, + { + "cut": 771, + "delta": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0 + ], + "frame": [ + 4, + 18, + 33, + 459, + 64 + ], + "index": 768, + "lower_dim": 4, + "registers": [ + 143, + 555 + ], + "section": "B", + "upper_dim": 5 + }, + { + "cut": 769, + "delta": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0 + ], + "frame": [ + 18, + 33, + 200, + 259, + 76 + ], + "index": 771, + "lower_dim": 4, + "registers": [ + 214, + 566 + ], + "section": "B", + "upper_dim": 5 + }, + { + "cut": 770, + "delta": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0 + ], + "frame": [ + 18, + 33, + 200, + 259, + 76 + ], + "index": 771, + "lower_dim": 4, + "registers": [ + 214, + 566 + ], + "section": "B", + "upper_dim": 5 + }, + { + "cut": 771, + "delta": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0 + ], + "frame": [ + 18, + 33, + 200, + 259, + 76 + ], + "index": 771, + "lower_dim": 4, + "registers": [ + 214, + 566 + ], + "section": "B", + "upper_dim": 5 + }, + { + "cut": 773, + "delta": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0 + ], + "frame": [ + 18, + 33, + 200, + 259, + 76 + ], + "index": 771, + "lower_dim": 4, + "registers": [ + 214, + 566 + ], + "section": "B", + "upper_dim": 5 + }, + { + "cut": 774, + "delta": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0 + ], + "frame": [ + 18, + 33, + 200, + 259, + 76 + ], + "index": 771, + "lower_dim": 4, + "registers": [ + 214, + 566 + ], + "section": "B", + "upper_dim": 5 + }, + { + "cut": 770, + "delta": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0 + ], + "frame": [ + 51, + 72, + 140, + 274, + 4 + ], + "index": 772, + "lower_dim": 4, + "registers": [ + 131, + 444 + ], + "section": "B", + "upper_dim": 5 + }, + { + "cut": 771, + "delta": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0 + ], + "frame": [ + 51, + 72, + 140, + 274, + 4 + ], + "index": 772, + "lower_dim": 4, + "registers": [ + 131, + 444 + ], + "section": "B", + "upper_dim": 5 + }, + { + "cut": 772, + "delta": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0 + ], + "frame": [ + 51, + 72, + 140, + 274, + 4 + ], + "index": 772, + "lower_dim": 4, + "registers": [ + 131, + 444 + ], + "section": "B", + "upper_dim": 5 + }, + { + "cut": 774, + "delta": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0 + ], + "frame": [ + 51, + 72, + 140, + 274, + 4 + ], + "index": 772, + "lower_dim": 4, + "registers": [ + 131, + 444 + ], + "section": "B", + "upper_dim": 5 + }, + { + "cut": 775, + "delta": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0 + ], + "frame": [ + 51, + 72, + 140, + 274, + 4 + ], + "index": 772, + "lower_dim": 4, + "registers": [ + 131, + 444 + ], + "section": "B", + "upper_dim": 5 + }, + { + "cut": 771, + "delta": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0 + ], + "frame": [ + 18, + 33, + 131, + 328, + 76 + ], + "index": 773, + "lower_dim": 4, + "registers": [ + 167, + 567 + ], + "section": "B", + "upper_dim": 5 + }, + { + "cut": 772, + "delta": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0 + ], + "frame": [ + 18, + 33, + 131, + 328, + 76 + ], + "index": 773, + "lower_dim": 4, + "registers": [ + 167, + 567 + ], + "section": "B", + "upper_dim": 5 + }, + { + "cut": 773, + "delta": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0 + ], + "frame": [ + 18, + 33, + 131, + 328, + 76 + ], + "index": 773, + "lower_dim": 4, + "registers": [ + 167, + 567 + ], + "section": "B", + "upper_dim": 5 + }, + { + "cut": 775, + "delta": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0 + ], + "frame": [ + 18, + 33, + 131, + 328, + 76 + ], + "index": 773, + "lower_dim": 4, + "registers": [ + 167, + 567 + ], + "section": "B", + "upper_dim": 5 + }, + { + "cut": 776, + "delta": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0 + ], + "frame": [ + 18, + 33, + 131, + 328, + 76 + ], + "index": 773, + "lower_dim": 4, + "registers": [ + 167, + 567 + ], + "section": "B", + "upper_dim": 5 + }, + { + "cut": 776, + "delta": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0 + ], + "frame": [ + 13, + 19, + 33, + 455, + 65 + ], + "index": 778, + "lower_dim": 4, + "registers": [ + 197, + 531 + ], + "section": "B", + "upper_dim": 5 + }, + { + "cut": 777, + "delta": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0 + ], + "frame": [ + 13, + 19, + 33, + 455, + 65 + ], + "index": 778, + "lower_dim": 4, + "registers": [ + 197, + 531 + ], + "section": "B", + "upper_dim": 5 + }, + { + "cut": 778, + "delta": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0 + ], + "frame": [ + 13, + 19, + 33, + 455, + 65 + ], + "index": 778, + "lower_dim": 4, + "registers": [ + 197, + 531 + ], + "section": "B", + "upper_dim": 5 + }, + { + "cut": 780, + "delta": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0 + ], + "frame": [ + 13, + 19, + 33, + 455, + 65 + ], + "index": 778, + "lower_dim": 4, + "registers": [ + 197, + 531 + ], + "section": "B", + "upper_dim": 5 + }, + { + "cut": 781, + "delta": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0 + ], + "frame": [ + 13, + 19, + 33, + 455, + 65 + ], + "index": 778, + "lower_dim": 4, + "registers": [ + 197, + 531 + ], + "section": "B", + "upper_dim": 5 + }, + { + "cut": 781, + "delta": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0 + ], + "frame": [ + 30, + 33, + 134, + 321, + 64 + ], + "index": 783, + "lower_dim": 4, + "registers": [ + 145, + 543 + ], + "section": "B", + "upper_dim": 5 + }, + { + "cut": 782, + "delta": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0 + ], + "frame": [ + 30, + 33, + 134, + 321, + 64 + ], + "index": 783, + "lower_dim": 4, + "registers": [ + 145, + 543 + ], + "section": "B", + "upper_dim": 5 + }, + { + "cut": 783, + "delta": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0 + ], + "frame": [ + 30, + 33, + 134, + 321, + 64 + ], + "index": 783, + "lower_dim": 4, + "registers": [ + 145, + 543 + ], + "section": "B", + "upper_dim": 5 + }, + { + "cut": 785, + "delta": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0 + ], + "frame": [ + 30, + 33, + 134, + 321, + 64 + ], + "index": 783, + "lower_dim": 4, + "registers": [ + 145, + 543 + ], + "section": "B", + "upper_dim": 5 + }, + { + "cut": 786, + "delta": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0 + ], + "frame": [ + 30, + 33, + 134, + 321, + 64 + ], + "index": 783, + "lower_dim": 4, + "registers": [ + 145, + 543 + ], + "section": "B", + "upper_dim": 5 + } + ], + "neutral_second_prices": 989125, + "ordered_state_sha256": "43c5ecc267c6c9ae62e0fc21b69b8674321ce36b414de63ac51c08f96826812a", + "strictly_worse_second_prices": 46786 + }, + "fresh_coverage_crosschecks": 39, + "full_dirty_first_word_checks": 122, + "total_second_prices": 5236828 + }, + "extra": { + "adjacent_dirty_block_checks": 3752, + "adjacent_swapped_gate_seconds": { + "counts": { + "commuting_adjacent_pairs": 3928, + "frame_rejected": 176, + "legal_first": 3752, + "second_prices": 3155468 + }, + "delta_types": [ + { + "caps": [ + 0, + 2, + 0, + 0, + 0, + 0, + 0, + 0, + 0 + ], + "count": 5404, + "delta": { + "1": -2, + "2": 4, + "3": -2 + }, + "prefix_caps": [ + 0, + 2, + 2, + 2, + 2, + 2, + 2, + 2 + ] + }, + { + "caps": [ + 0, + 1, + 1, + 0, + 0, + 0, + 0, + 0, + 0 + ], + "count": 8951, + "delta": { + "1": -1, + "2": 1, + "3": 1, + "4": -1 + }, + "prefix_caps": [ + 0, + 1, + 2, + 2, + 2, + 2, + 2, + 2 + ] + }, + { + "caps": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0 + ], + "count": 2713223, + "delta": {}, + "prefix_caps": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0 + ] + }, + { + "caps": [ + 1, + 2, + 1, + 0, + 0, + 0, + 0, + 0, + 0 + ], + "count": 9813, + "delta": { + "2": 2, + "4": -1 + }, + "prefix_caps": [ + 1, + 3, + 4, + 4, + 4, + 4, + 4, + 4 + ] + }, + { + "caps": [ + 1, + 2, + 0, + 0, + 0, + 0, + 0, + 0, + 0 + ], + "count": 2498, + "delta": { + "2": 3, + "3": -2 + }, + "prefix_caps": [ + 1, + 3, + 3, + 3, + 3, + 3, + 3, + 3 + ] + }, + { + "caps": [ + 2, + 4, + 2, + 0, + 0, + 0, + 0, + 0, + 0 + ], + "count": 37360, + "delta": { + "2": 4, + "4": -2 + }, + "prefix_caps": [ + 2, + 6, + 8, + 8, + 8, + 8, + 8, + 8 + ] + }, + { + "caps": [ + 1, + 1, + 1, + 0, + 0, + 0, + 0, + 0, + 0 + ], + "count": 14916, + "delta": { + "1": 1, + "3": 1, + "4": -1 + }, + "prefix_caps": [ + 1, + 2, + 3, + 3, + 3, + 3, + 3, + 3 + ] + }, + { + "caps": [ + 1, + 1, + 0, + 0, + 0, + 0, + 0, + 0, + 0 + ], + "count": 62032, + "delta": { + "1": 1, + "2": 1, + "3": -1 + }, + "prefix_caps": [ + 1, + 2, + 2, + 2, + 2, + 2, + 2, + 2 + ] + }, + { + "caps": [ + 1, + 1, + -1, + 0, + 0, + 0, + 0, + 0, + 0 + ], + "count": 2908, + "delta": { + "1": 1, + "2": 2, + "3": -3, + "4": 1 + }, + "prefix_caps": [ + 1, + 2, + 1, + 1, + 1, + 1, + 1, + 1 + ] + }, + { + "caps": [ + 2, + 3, + 1, + 0, + 0, + 0, + 0, + 0, + 0 + ], + "count": 14240, + "delta": { + "1": 1, + "2": 3, + "3": -1, + "4": -1 + }, + "prefix_caps": [ + 2, + 5, + 6, + 6, + 6, + 6, + 6, + 6 + ] + }, + { + "caps": [ + 1, + 0, + 1, + 1, + 0, + 0, + 0, + 0, + 0 + ], + "count": 3260, + "delta": { + "1": 2, + "2": -2, + "3": 1, + "4": 1, + "5": -1 + }, + "prefix_caps": [ + 1, + 1, + 2, + 3, + 3, + 3, + 3, + 3 + ] + }, + { + "caps": [ + 1, + 0, + 1, + 0, + 0, + 0, + 0, + 0, + 0 + ], + "count": 588, + "delta": { + "1": 2, + "2": -2, + "3": 2, + "4": -1 + }, + "prefix_caps": [ + 1, + 1, + 2, + 2, + 2, + 2, + 2, + 2 + ] + }, + { + "caps": [ + 1, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0 + ], + "count": 5225, + "delta": { + "1": 2, + "2": -1 + }, + "prefix_caps": [ + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1 + ] + }, + { + "caps": [ + 2, + 2, + 2, + 0, + 0, + 0, + 0, + 0, + 0 + ], + "count": 74720, + "delta": { + "1": 2, + "3": 2, + "4": -2 + }, + "prefix_caps": [ + 2, + 4, + 6, + 6, + 6, + 6, + 6, + 6 + ] + }, + { + "caps": [ + 2, + 2, + 1, + 0, + 0, + 0, + 0, + 0, + 0 + ], + "count": 14240, + "delta": { + "1": 2, + "2": 1, + "4": -1 + }, + "prefix_caps": [ + 2, + 4, + 5, + 5, + 5, + 5, + 5, + 5 + ] + }, + { + "caps": [ + 2, + 2, + 0, + 0, + 0, + 0, + 0, + 0, + 0 + ], + "count": 77464, + "delta": { + "1": 2, + "2": 2, + "3": -2 + }, + "prefix_caps": [ + 2, + 4, + 4, + 4, + 4, + 4, + 4, + 4 + ] + }, + { + "caps": [ + 2, + 1, + 1, + 0, + 0, + 0, + 0, + 0, + 0 + ], + "count": 84, + "delta": { + "1": 3, + "2": -1, + "3": 1, + "4": -1 + }, + "prefix_caps": [ + 2, + 3, + 4, + 4, + 4, + 4, + 4, + 4 + ] + }, + { + "caps": [ + 2, + 1, + 0, + 0, + 0, + 0, + 0, + 0, + 0 + ], + "count": 11192, + "delta": { + "1": 3, + "3": -1 + }, + "prefix_caps": [ + 2, + 3, + 3, + 3, + 3, + 3, + 3, + 3 + ] + }, + { + "caps": [ + 2, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0 + ], + "count": 97350, + "delta": { + "1": 4, + "2": -2 + }, + "prefix_caps": [ + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2 + ] + } + ], + "neutral_second_prices": 2713223, + "ordered_state_sha256": "05effe1091c6d10c37f1bf48c42d54289407e23049843fc4a45d9a499cca0929", + "strictly_worse_second_prices": 442245 + }, + "adjacent_third_gate_new_middle": { + "counts": { + "legal_first": 3752, + "second_prices": 1045449 + }, + "delta_types": [ + { + "caps": [ + 0, + 2, + 0, + 0, + 0, + 0, + 0, + 0, + 0 + ], + "count": 3018, + "delta": { + "1": -2, + "2": 4, + "3": -2 + }, + "prefix_caps": [ + 0, + 2, + 2, + 2, + 2, + 2, + 2, + 2 + ] + }, + { + "caps": [ + 0, + 1, + 1, + 0, + 0, + 0, + 0, + 0, + 0 + ], + "count": 4433, + "delta": { + "1": -1, + "2": 1, + "3": 1, + "4": -1 + }, + "prefix_caps": [ + 0, + 1, + 2, + 2, + 2, + 2, + 2, + 2 + ] + }, + { + "caps": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0 + ], + "count": 921868, + "delta": {}, + "prefix_caps": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0 + ] + }, + { + "caps": [ + 1, + 2, + 1, + 0, + 0, + 0, + 0, + 0, + 0 + ], + "count": 4677, + "delta": { + "2": 2, + "4": -1 + }, + "prefix_caps": [ + 1, + 3, + 4, + 4, + 4, + 4, + 4, + 4 + ] + }, + { + "caps": [ + 1, + 2, + 0, + 0, + 0, + 0, + 0, + 0, + 0 + ], + "count": 1235, + "delta": { + "2": 3, + "3": -2 + }, + "prefix_caps": [ + 1, + 3, + 3, + 3, + 3, + 3, + 3, + 3 + ] + }, + { + "caps": [ + 2, + 4, + 2, + 0, + 0, + 0, + 0, + 0, + 0 + ], + "count": 9248, + "delta": { + "2": 4, + "4": -2 + }, + "prefix_caps": [ + 2, + 6, + 8, + 8, + 8, + 8, + 8, + 8 + ] + }, + { + "caps": [ + 1, + 1, + 1, + 0, + 0, + 0, + 0, + 0, + 0 + ], + "count": 3656, + "delta": { + "1": 1, + "3": 1, + "4": -1 + }, + "prefix_caps": [ + 1, + 2, + 3, + 3, + 3, + 3, + 3, + 3 + ] + }, + { + "caps": [ + 1, + 1, + 0, + 0, + 0, + 0, + 0, + 0, + 0 + ], + "count": 17781, + "delta": { + "1": 1, + "2": 1, + "3": -1 + }, + "prefix_caps": [ + 1, + 2, + 2, + 2, + 2, + 2, + 2, + 2 + ] + }, + { + "caps": [ + 1, + 1, + -1, + 0, + 0, + 0, + 0, + 0, + 0 + ], + "count": 1369, + "delta": { + "1": 1, + "2": 2, + "3": -3, + "4": 1 + }, + "prefix_caps": [ + 1, + 2, + 1, + 1, + 1, + 1, + 1, + 1 + ] + }, + { + "caps": [ + 2, + 3, + 1, + 0, + 0, + 0, + 0, + 0, + 0 + ], + "count": 3502, + "delta": { + "1": 1, + "2": 3, + "3": -1, + "4": -1 + }, + "prefix_caps": [ + 2, + 5, + 6, + 6, + 6, + 6, + 6, + 6 + ] + }, + { + "caps": [ + 1, + 0, + 1, + 1, + 0, + 0, + 0, + 0, + 0 + ], + "count": 770, + "delta": { + "1": 2, + "2": -2, + "3": 1, + "4": 1, + "5": -1 + }, + "prefix_caps": [ + 1, + 1, + 2, + 3, + 3, + 3, + 3, + 3 + ] + }, + { + "caps": [ + 1, + 0, + 1, + 0, + 0, + 0, + 0, + 0, + 0 + ], + "count": 253, + "delta": { + "1": 2, + "2": -2, + "3": 2, + "4": -1 + }, + "prefix_caps": [ + 1, + 1, + 2, + 2, + 2, + 2, + 2, + 2 + ] + }, + { + "caps": [ + 1, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0 + ], + "count": 3054, + "delta": { + "1": 2, + "2": -1 + }, + "prefix_caps": [ + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1 + ] + }, + { + "caps": [ + 2, + 2, + 2, + 0, + 0, + 0, + 0, + 0, + 0 + ], + "count": 18496, + "delta": { + "1": 2, + "3": 2, + "4": -2 + }, + "prefix_caps": [ + 2, + 4, + 6, + 6, + 6, + 6, + 6, + 6 + ] + }, + { + "caps": [ + 2, + 2, + 1, + 0, + 0, + 0, + 0, + 0, + 0 + ], + "count": 3502, + "delta": { + "1": 2, + "2": 1, + "4": -1 + }, + "prefix_caps": [ + 2, + 4, + 5, + 5, + 5, + 5, + 5, + 5 + ] + }, + { + "caps": [ + 2, + 2, + 0, + 0, + 0, + 0, + 0, + 0, + 0 + ], + "count": 19698, + "delta": { + "1": 2, + "2": 2, + "3": -2 + }, + "prefix_caps": [ + 2, + 4, + 4, + 4, + 4, + 4, + 4, + 4 + ] + }, + { + "caps": [ + 2, + 1, + 1, + 0, + 0, + 0, + 0, + 0, + 0 + ], + "count": 69, + "delta": { + "1": 3, + "2": -1, + "3": 1, + "4": -1 + }, + "prefix_caps": [ + 2, + 3, + 4, + 4, + 4, + 4, + 4, + 4 + ] + }, + { + "caps": [ + 2, + 1, + 0, + 0, + 0, + 0, + 0, + 0, + 0 + ], + "count": 3666, + "delta": { + "1": 3, + "3": -1 + }, + "prefix_caps": [ + 2, + 3, + 3, + 3, + 3, + 3, + 3, + 3 + ] + }, + { + "caps": [ + 2, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0 + ], + "count": 25154, + "delta": { + "1": 4, + "2": -2 + }, + "prefix_caps": [ + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2 + ] + } + ], + "neutral_second_prices": 921868, + "ordered_state_sha256": "532217b93fa2c028810fc8e18e698434407f9cff1efa4f52502668a68d506461", + "strictly_worse_second_prices": 123581 + }, + "frame_changing_first": { + "counts": { + "legal_first": 122, + "second_prices": 1035911 + }, + "delta_types": [ + { + "caps": [ + 0, + 1, + 1, + 0, + 0, + 0, + 0, + 0, + 0 + ], + "count": 414, + "delta": { + "1": -1, + "2": 1, + "3": 1, + "4": -1 + }, + "prefix_caps": [ + 0, + 1, + 2, + 2, + 2, + 2, + 2, + 2 + ] + }, + { + "caps": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0 + ], + "count": 989125, + "delta": {}, + "prefix_caps": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0 + ] + }, + { + "caps": [ + 1, + 0, + 1, + 0, + 0, + 0, + 0, + 0, + 0 + ], + "count": 1415, + "delta": { + "1": 2, + "2": -2, + "3": 2, + "4": -1 + }, + "prefix_caps": [ + 1, + 1, + 2, + 2, + 2, + 2, + 2, + 2 + ] + }, + { + "caps": [ + 1, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0 + ], + "count": 7815, + "delta": { + "1": 2, + "2": -1 + }, + "prefix_caps": [ + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1 + ] + }, + { + "caps": [ + 2, + 2, + 0, + 0, + 0, + 0, + 0, + 0, + 0 + ], + "count": 33462, + "delta": { + "1": 2, + "2": 2, + "3": -2 + }, + "prefix_caps": [ + 2, + 4, + 4, + 4, + 4, + 4, + 4, + 4 + ] + }, + { + "caps": [ + 2, + 1, + 1, + 0, + 0, + 0, + 0, + 0, + 0 + ], + "count": 1105, + "delta": { + "1": 3, + "2": -1, + "3": 1, + "4": -1 + }, + "prefix_caps": [ + 2, + 3, + 4, + 4, + 4, + 4, + 4, + 4 + ] + }, + { + "caps": [ + 2, + 1, + 0, + 0, + 0, + 0, + 0, + 0, + 0 + ], + "count": 2575, + "delta": { + "1": 3, + "3": -1 + }, + "prefix_caps": [ + 2, + 3, + 3, + 3, + 3, + 3, + 3, + 3 + ] + } + ], + "first_edits": [ + { + "cut": 578, + "delta": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0 + ], + "frame": [ + 194 + ], + "index": 575, + "lower_dim": 0, + "registers": [ + 408, + 409 + ], + "section": "A", + "upper_dim": 1 + }, + { + "cut": 2026, + "delta": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0 + ], + "frame": [ + 11, + 21, + 38, + 448, + 5, + 64, + 128 + ], + "index": 2026, + "lower_dim": 4, + "registers": [ + 57, + 92 + ], + "section": "A", + "upper_dim": 7 + }, + { + "cut": 2028, + "delta": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0 + ], + "frame": [ + 11, + 21, + 38, + 448, + 5, + 64, + 128 + ], + "index": 2026, + "lower_dim": 4, + "registers": [ + 57, + 92 + ], + "section": "A", + "upper_dim": 7 + }, + { + "cut": 2029, + "delta": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0 + ], + "frame": [ + 11, + 21, + 38, + 448, + 5, + 64, + 128 + ], + "index": 2026, + "lower_dim": 4, + "registers": [ + 57, + 92 + ], + "section": "A", + "upper_dim": 7 + }, + { + "cut": 2180, + "delta": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0 + ], + "frame": [ + 45, + 85, + 133, + 261, + 5, + 11, + 16 + ], + "index": 2180, + "lower_dim": 4, + "registers": [ + 62, + 63 + ], + "section": "A", + "upper_dim": 7 + }, + { + "cut": 2182, + "delta": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0 + ], + "frame": [ + 45, + 85, + 133, + 261, + 5, + 11, + 16 + ], + "index": 2180, + "lower_dim": 4, + "registers": [ + 62, + 63 + ], + "section": "A", + "upper_dim": 7 + }, + { + "cut": 2183, + "delta": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0 + ], + "frame": [ + 45, + 85, + 133, + 261, + 5, + 11, + 16 + ], + "index": 2180, + "lower_dim": 4, + "registers": [ + 62, + 63 + ], + "section": "A", + "upper_dim": 7 + }, + { + "cut": 2334, + "delta": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0 + ], + "frame": [ + 14, + 35, + 69, + 400, + 5, + 16, + 128 + ], + "index": 2334, + "lower_dim": 4, + "registers": [ + 94, + 61 + ], + "section": "A", + "upper_dim": 7 + }, + { + "cut": 2336, + "delta": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0 + ], + "frame": [ + 14, + 35, + 69, + 400, + 5, + 16, + 128 + ], + "index": 2334, + "lower_dim": 4, + "registers": [ + 94, + 61 + ], + "section": "A", + "upper_dim": 7 + }, + { + "cut": 2337, + "delta": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0 + ], + "frame": [ + 14, + 35, + 69, + 400, + 5, + 16, + 128 + ], + "index": 2334, + "lower_dim": 4, + "registers": [ + 94, + 61 + ], + "section": "A", + "upper_dim": 7 + }, + { + "cut": 364, + "delta": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0 + ], + "frame": [ + 45, + 73, + 137, + 286, + 25 + ], + "index": 365, + "lower_dim": 4, + "registers": [ + 139, + 14 + ], + "section": "B", + "upper_dim": 5 + }, + { + "cut": 365, + "delta": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0 + ], + "frame": [ + 45, + 73, + 137, + 286, + 25 + ], + "index": 365, + "lower_dim": 4, + "registers": [ + 139, + 14 + ], + "section": "B", + "upper_dim": 5 + }, + { + "cut": 367, + "delta": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0 + ], + "frame": [ + 45, + 73, + 137, + 286, + 25 + ], + "index": 365, + "lower_dim": 4, + "registers": [ + 139, + 14 + ], + "section": "B", + "upper_dim": 5 + }, + { + "cut": 368, + "delta": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0 + ], + "frame": [ + 45, + 73, + 137, + 286, + 25 + ], + "index": 365, + "lower_dim": 4, + "registers": [ + 139, + 14 + ], + "section": "B", + "upper_dim": 5 + }, + { + "cut": 364, + "delta": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0 + ], + "frame": [ + 2, + 9, + 36, + 469, + 16 + ], + "index": 366, + "lower_dim": 4, + "registers": [ + 127, + 239 + ], + "section": "B", + "upper_dim": 5 + }, + { + "cut": 365, + "delta": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0 + ], + "frame": [ + 2, + 9, + 36, + 469, + 16 + ], + "index": 366, + "lower_dim": 4, + "registers": [ + 127, + 239 + ], + "section": "B", + "upper_dim": 5 + }, + { + "cut": 366, + "delta": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0 + ], + "frame": [ + 2, + 9, + 36, + 469, + 16 + ], + "index": 366, + "lower_dim": 4, + "registers": [ + 127, + 239 + ], + "section": "B", + "upper_dim": 5 + }, + { + "cut": 368, + "delta": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0 + ], + "frame": [ + 2, + 9, + 36, + 469, + 16 + ], + "index": 366, + "lower_dim": 4, + "registers": [ + 127, + 239 + ], + "section": "B", + "upper_dim": 5 + }, + { + "cut": 369, + "delta": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0 + ], + "frame": [ + 2, + 9, + 36, + 469, + 16 + ], + "index": 366, + "lower_dim": 4, + "registers": [ + 127, + 239 + ], + "section": "B", + "upper_dim": 5 + }, + { + "cut": 365, + "delta": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0 + ], + "frame": [ + 45, + 87, + 137, + 265, + 25 + ], + "index": 367, + "lower_dim": 4, + "registers": [ + 125, + 78 + ], + "section": "B", + "upper_dim": 5 + }, + { + "cut": 366, + "delta": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0 + ], + "frame": [ + 45, + 87, + 137, + 265, + 25 + ], + "index": 367, + "lower_dim": 4, + "registers": [ + 125, + 78 + ], + "section": "B", + "upper_dim": 5 + }, + { + "cut": 367, + "delta": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0 + ], + "frame": [ + 45, + 87, + 137, + 265, + 25 + ], + "index": 367, + "lower_dim": 4, + "registers": [ + 125, + 78 + ], + "section": "B", + "upper_dim": 5 + }, + { + "cut": 385, + "delta": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0 + ], + "frame": [ + 45, + 80, + 146, + 261, + 2 + ], + "index": 386, + "lower_dim": 4, + "registers": [ + 203, + 415 + ], + "section": "B", + "upper_dim": 5 + }, + { + "cut": 386, + "delta": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0 + ], + "frame": [ + 45, + 80, + 146, + 261, + 2 + ], + "index": 386, + "lower_dim": 4, + "registers": [ + 203, + 415 + ], + "section": "B", + "upper_dim": 5 + }, + { + "cut": 388, + "delta": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0 + ], + "frame": [ + 45, + 80, + 146, + 261, + 2 + ], + "index": 386, + "lower_dim": 4, + "registers": [ + 203, + 415 + ], + "section": "B", + "upper_dim": 5 + }, + { + "cut": 389, + "delta": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0 + ], + "frame": [ + 45, + 80, + 146, + 261, + 2 + ], + "index": 386, + "lower_dim": 4, + "registers": [ + 203, + 415 + ], + "section": "B", + "upper_dim": 5 + }, + { + "cut": 385, + "delta": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0 + ], + "frame": [ + 9, + 36, + 208, + 261, + 82 + ], + "index": 387, + "lower_dim": 4, + "registers": [ + 165, + 255 + ], + "section": "B", + "upper_dim": 5 + }, + { + "cut": 386, + "delta": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0 + ], + "frame": [ + 9, + 36, + 208, + 261, + 82 + ], + "index": 387, + "lower_dim": 4, + "registers": [ + 165, + 255 + ], + "section": "B", + "upper_dim": 5 + }, + { + "cut": 387, + "delta": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0 + ], + "frame": [ + 9, + 36, + 208, + 261, + 82 + ], + "index": 387, + "lower_dim": 4, + "registers": [ + 165, + 255 + ], + "section": "B", + "upper_dim": 5 + }, + { + "cut": 389, + "delta": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0 + ], + "frame": [ + 9, + 36, + 208, + 261, + 82 + ], + "index": 387, + "lower_dim": 4, + "registers": [ + 165, + 255 + ], + "section": "B", + "upper_dim": 5 + }, + { + "cut": 390, + "delta": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0 + ], + "frame": [ + 9, + 36, + 208, + 261, + 82 + ], + "index": 387, + "lower_dim": 4, + "registers": [ + 165, + 255 + ], + "section": "B", + "upper_dim": 5 + }, + { + "cut": 386, + "delta": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0 + ], + "frame": [ + 5, + 40, + 194, + 265, + 82 + ], + "index": 388, + "lower_dim": 4, + "registers": [ + 148, + 21 + ], + "section": "B", + "upper_dim": 5 + }, + { + "cut": 387, + "delta": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0 + ], + "frame": [ + 5, + 40, + 194, + 265, + 82 + ], + "index": 388, + "lower_dim": 4, + "registers": [ + 148, + 21 + ], + "section": "B", + "upper_dim": 5 + }, + { + "cut": 388, + "delta": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0 + ], + "frame": [ + 5, + 40, + 194, + 265, + 82 + ], + "index": 388, + "lower_dim": 4, + "registers": [ + 148, + 21 + ], + "section": "B", + "upper_dim": 5 + }, + { + "cut": 407, + "delta": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0 + ], + "frame": [ + 45, + 69, + 146, + 272, + 9 + ], + "index": 408, + "lower_dim": 4, + "registers": [ + 201, + 431 + ], + "section": "B", + "upper_dim": 5 + }, + { + "cut": 408, + "delta": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0 + ], + "frame": [ + 45, + 69, + 146, + 272, + 9 + ], + "index": 408, + "lower_dim": 4, + "registers": [ + 201, + 431 + ], + "section": "B", + "upper_dim": 5 + }, + { + "cut": 410, + "delta": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0 + ], + "frame": [ + 45, + 69, + 146, + 272, + 9 + ], + "index": 408, + "lower_dim": 4, + "registers": [ + 201, + 431 + ], + "section": "B", + "upper_dim": 5 + }, + { + "cut": 411, + "delta": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0 + ], + "frame": [ + 45, + 69, + 146, + 272, + 9 + ], + "index": 408, + "lower_dim": 4, + "registers": [ + 201, + 431 + ], + "section": "B", + "upper_dim": 5 + }, + { + "cut": 407, + "delta": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0 + ], + "frame": [ + 45, + 69, + 130, + 274, + 9 + ], + "index": 409, + "lower_dim": 4, + "registers": [ + 163, + 271 + ], + "section": "B", + "upper_dim": 5 + }, + { + "cut": 408, + "delta": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0 + ], + "frame": [ + 45, + 69, + 130, + 274, + 9 + ], + "index": 409, + "lower_dim": 4, + "registers": [ + 163, + 271 + ], + "section": "B", + "upper_dim": 5 + }, + { + "cut": 409, + "delta": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0 + ], + "frame": [ + 45, + 69, + 130, + 274, + 9 + ], + "index": 409, + "lower_dim": 4, + "registers": [ + 163, + 271 + ], + "section": "B", + "upper_dim": 5 + }, + { + "cut": 411, + "delta": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0 + ], + "frame": [ + 45, + 69, + 130, + 274, + 9 + ], + "index": 409, + "lower_dim": 4, + "registers": [ + 163, + 271 + ], + "section": "B", + "upper_dim": 5 + }, + { + "cut": 412, + "delta": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0 + ], + "frame": [ + 45, + 69, + 130, + 274, + 9 + ], + "index": 409, + "lower_dim": 4, + "registers": [ + 163, + 271 + ], + "section": "B", + "upper_dim": 5 + }, + { + "cut": 408, + "delta": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0 + ], + "frame": [ + 45, + 73, + 144, + 274, + 5 + ], + "index": 410, + "lower_dim": 4, + "registers": [ + 223, + 447 + ], + "section": "B", + "upper_dim": 5 + }, + { + "cut": 409, + "delta": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0 + ], + "frame": [ + 45, + 73, + 144, + 274, + 5 + ], + "index": 410, + "lower_dim": 4, + "registers": [ + 223, + 447 + ], + "section": "B", + "upper_dim": 5 + }, + { + "cut": 410, + "delta": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0 + ], + "frame": [ + 45, + 73, + 144, + 274, + 5 + ], + "index": 410, + "lower_dim": 4, + "registers": [ + 223, + 447 + ], + "section": "B", + "upper_dim": 5 + }, + { + "cut": 428, + "delta": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0 + ], + "frame": [ + 14, + 35, + 130, + 341, + 66 + ], + "index": 429, + "lower_dim": 4, + "registers": [ + 191, + 99 + ], + "section": "B", + "upper_dim": 5 + }, + { + "cut": 429, + "delta": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0 + ], + "frame": [ + 14, + 35, + 130, + 341, + 66 + ], + "index": 429, + "lower_dim": 4, + "registers": [ + 191, + 99 + ], + "section": "B", + "upper_dim": 5 + }, + { + "cut": 431, + "delta": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0 + ], + "frame": [ + 14, + 35, + 130, + 341, + 66 + ], + "index": 429, + "lower_dim": 4, + "registers": [ + 191, + 99 + ], + "section": "B", + "upper_dim": 5 + }, + { + "cut": 432, + "delta": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0 + ], + "frame": [ + 14, + 35, + 130, + 341, + 66 + ], + "index": 429, + "lower_dim": 4, + "registers": [ + 191, + 99 + ], + "section": "B", + "upper_dim": 5 + }, + { + "cut": 428, + "delta": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0 + ], + "frame": [ + 14, + 35, + 215, + 258, + 66 + ], + "index": 430, + "lower_dim": 4, + "registers": [ + 156, + 25 + ], + "section": "B", + "upper_dim": 5 + }, + { + "cut": 429, + "delta": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0 + ], + "frame": [ + 14, + 35, + 215, + 258, + 66 + ], + "index": 430, + "lower_dim": 4, + "registers": [ + 156, + 25 + ], + "section": "B", + "upper_dim": 5 + }, + { + "cut": 430, + "delta": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0 + ], + "frame": [ + 14, + 35, + 215, + 258, + 66 + ], + "index": 430, + "lower_dim": 4, + "registers": [ + 156, + 25 + ], + "section": "B", + "upper_dim": 5 + }, + { + "cut": 432, + "delta": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0 + ], + "frame": [ + 14, + 35, + 215, + 258, + 66 + ], + "index": 430, + "lower_dim": 4, + "registers": [ + 156, + 25 + ], + "section": "B", + "upper_dim": 5 + }, + { + "cut": 433, + "delta": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0 + ], + "frame": [ + 14, + 35, + 215, + 258, + 66 + ], + "index": 430, + "lower_dim": 4, + "registers": [ + 156, + 25 + ], + "section": "B", + "upper_dim": 5 + }, + { + "cut": 429, + "delta": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0 + ], + "frame": [ + 28, + 45, + 199, + 268, + 76 + ], + "index": 431, + "lower_dim": 4, + "registers": [ + 158, + 47 + ], + "section": "B", + "upper_dim": 5 + }, + { + "cut": 430, + "delta": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0 + ], + "frame": [ + 28, + 45, + 199, + 268, + 76 + ], + "index": 431, + "lower_dim": 4, + "registers": [ + 158, + 47 + ], + "section": "B", + "upper_dim": 5 + }, + { + "cut": 431, + "delta": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0 + ], + "frame": [ + 28, + 45, + 199, + 268, + 76 + ], + "index": 431, + "lower_dim": 4, + "registers": [ + 158, + 47 + ], + "section": "B", + "upper_dim": 5 + }, + { + "cut": 470, + "delta": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0 + ], + "frame": [ + 28, + 45, + 194, + 258, + 5 + ], + "index": 471, + "lower_dim": 4, + "registers": [ + 119, + 409 + ], + "section": "B", + "upper_dim": 5 + }, + { + "cut": 471, + "delta": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0 + ], + "frame": [ + 28, + 45, + 194, + 258, + 5 + ], + "index": 471, + "lower_dim": 4, + "registers": [ + 119, + 409 + ], + "section": "B", + "upper_dim": 5 + }, + { + "cut": 473, + "delta": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0 + ], + "frame": [ + 28, + 45, + 194, + 258, + 5 + ], + "index": 471, + "lower_dim": 4, + "registers": [ + 119, + 409 + ], + "section": "B", + "upper_dim": 5 + }, + { + "cut": 474, + "delta": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0 + ], + "frame": [ + 28, + 45, + 194, + 258, + 5 + ], + "index": 471, + "lower_dim": 4, + "registers": [ + 119, + 409 + ], + "section": "B", + "upper_dim": 5 + }, + { + "cut": 470, + "delta": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0 + ], + "frame": [ + 21, + 45, + 66, + 386, + 12 + ], + "index": 472, + "lower_dim": 4, + "registers": [ + 154, + 87 + ], + "section": "B", + "upper_dim": 5 + }, + { + "cut": 471, + "delta": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0 + ], + "frame": [ + 21, + 45, + 66, + 386, + 12 + ], + "index": 472, + "lower_dim": 4, + "registers": [ + 154, + 87 + ], + "section": "B", + "upper_dim": 5 + }, + { + "cut": 472, + "delta": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0 + ], + "frame": [ + 21, + 45, + 66, + 386, + 12 + ], + "index": 472, + "lower_dim": 4, + "registers": [ + 154, + 87 + ], + "section": "B", + "upper_dim": 5 + }, + { + "cut": 474, + "delta": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0 + ], + "frame": [ + 21, + 45, + 66, + 386, + 12 + ], + "index": 472, + "lower_dim": 4, + "registers": [ + 154, + 87 + ], + "section": "B", + "upper_dim": 5 + }, + { + "cut": 475, + "delta": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0 + ], + "frame": [ + 21, + 45, + 66, + 386, + 12 + ], + "index": 472, + "lower_dim": 4, + "registers": [ + 154, + 87 + ], + "section": "B", + "upper_dim": 5 + }, + { + "cut": 471, + "delta": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0 + ], + "frame": [ + 2, + 45, + 192, + 320, + 25 + ], + "index": 473, + "lower_dim": 4, + "registers": [ + 128, + 425 + ], + "section": "B", + "upper_dim": 5 + }, + { + "cut": 472, + "delta": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0 + ], + "frame": [ + 2, + 45, + 192, + 320, + 25 + ], + "index": 473, + "lower_dim": 4, + "registers": [ + 128, + 425 + ], + "section": "B", + "upper_dim": 5 + }, + { + "cut": 473, + "delta": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0 + ], + "frame": [ + 2, + 45, + 192, + 320, + 25 + ], + "index": 473, + "lower_dim": 4, + "registers": [ + 128, + 425 + ], + "section": "B", + "upper_dim": 5 + }, + { + "cut": 491, + "delta": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0 + ], + "frame": [ + 5, + 40, + 137, + 336, + 82 + ], + "index": 492, + "lower_dim": 4, + "registers": [ + 122, + 52 + ], + "section": "B", + "upper_dim": 5 + }, + { + "cut": 492, + "delta": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0 + ], + "frame": [ + 5, + 40, + 137, + 336, + 82 + ], + "index": 492, + "lower_dim": 4, + "registers": [ + 122, + 52 + ], + "section": "B", + "upper_dim": 5 + }, + { + "cut": 494, + "delta": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0 + ], + "frame": [ + 5, + 40, + 137, + 336, + 82 + ], + "index": 492, + "lower_dim": 4, + "registers": [ + 122, + 52 + ], + "section": "B", + "upper_dim": 5 + }, + { + "cut": 495, + "delta": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0 + ], + "frame": [ + 5, + 40, + 137, + 336, + 82 + ], + "index": 492, + "lower_dim": 4, + "registers": [ + 122, + 52 + ], + "section": "B", + "upper_dim": 5 + }, + { + "cut": 491, + "delta": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0 + ], + "frame": [ + 45, + 66, + 133, + 274, + 16 + ], + "index": 493, + "lower_dim": 4, + "registers": [ + 217, + 90 + ], + "section": "B", + "upper_dim": 5 + }, + { + "cut": 492, + "delta": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0 + ], + "frame": [ + 45, + 66, + 133, + 274, + 16 + ], + "index": 493, + "lower_dim": 4, + "registers": [ + 217, + 90 + ], + "section": "B", + "upper_dim": 5 + }, + { + "cut": 493, + "delta": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0 + ], + "frame": [ + 45, + 66, + 133, + 274, + 16 + ], + "index": 493, + "lower_dim": 4, + "registers": [ + 217, + 90 + ], + "section": "B", + "upper_dim": 5 + }, + { + "cut": 495, + "delta": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0 + ], + "frame": [ + 45, + 66, + 133, + 274, + 16 + ], + "index": 493, + "lower_dim": 4, + "registers": [ + 217, + 90 + ], + "section": "B", + "upper_dim": 5 + }, + { + "cut": 496, + "delta": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0 + ], + "frame": [ + 45, + 66, + 133, + 274, + 16 + ], + "index": 493, + "lower_dim": 4, + "registers": [ + 217, + 90 + ], + "section": "B", + "upper_dim": 5 + }, + { + "cut": 492, + "delta": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0 + ], + "frame": [ + 45, + 80, + 137, + 274, + 2 + ], + "index": 494, + "lower_dim": 4, + "registers": [ + 132, + 441 + ], + "section": "B", + "upper_dim": 5 + }, + { + "cut": 493, + "delta": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0 + ], + "frame": [ + 45, + 80, + 137, + 274, + 2 + ], + "index": 494, + "lower_dim": 4, + "registers": [ + 132, + 441 + ], + "section": "B", + "upper_dim": 5 + }, + { + "cut": 494, + "delta": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0 + ], + "frame": [ + 45, + 80, + 137, + 274, + 2 + ], + "index": 494, + "lower_dim": 4, + "registers": [ + 132, + 441 + ], + "section": "B", + "upper_dim": 5 + }, + { + "cut": 764, + "delta": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0 + ], + "frame": [ + 18, + 33, + 67, + 392, + 3 + ], + "index": 766, + "lower_dim": 4, + "registers": [ + 168, + 554 + ], + "section": "B", + "upper_dim": 5 + }, + { + "cut": 765, + "delta": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0 + ], + "frame": [ + 18, + 33, + 67, + 392, + 3 + ], + "index": 766, + "lower_dim": 4, + "registers": [ + 168, + 554 + ], + "section": "B", + "upper_dim": 5 + }, + { + "cut": 766, + "delta": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0 + ], + "frame": [ + 18, + 33, + 67, + 392, + 3 + ], + "index": 766, + "lower_dim": 4, + "registers": [ + 168, + 554 + ], + "section": "B", + "upper_dim": 5 + }, + { + "cut": 768, + "delta": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0 + ], + "frame": [ + 18, + 33, + 67, + 392, + 3 + ], + "index": 766, + "lower_dim": 4, + "registers": [ + 168, + 554 + ], + "section": "B", + "upper_dim": 5 + }, + { + "cut": 769, + "delta": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0 + ], + "frame": [ + 18, + 33, + 67, + 392, + 3 + ], + "index": 766, + "lower_dim": 4, + "registers": [ + 168, + 554 + ], + "section": "B", + "upper_dim": 5 + }, + { + "cut": 765, + "delta": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0 + ], + "frame": [ + 4, + 51, + 136, + 264, + 82 + ], + "index": 767, + "lower_dim": 4, + "registers": [ + 150, + 439 + ], + "section": "B", + "upper_dim": 5 + }, + { + "cut": 766, + "delta": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0 + ], + "frame": [ + 4, + 51, + 136, + 264, + 82 + ], + "index": 767, + "lower_dim": 4, + "registers": [ + 150, + 439 + ], + "section": "B", + "upper_dim": 5 + }, + { + "cut": 767, + "delta": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0 + ], + "frame": [ + 4, + 51, + 136, + 264, + 82 + ], + "index": 767, + "lower_dim": 4, + "registers": [ + 150, + 439 + ], + "section": "B", + "upper_dim": 5 + }, + { + "cut": 769, + "delta": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0 + ], + "frame": [ + 4, + 51, + 136, + 264, + 82 + ], + "index": 767, + "lower_dim": 4, + "registers": [ + 150, + 439 + ], + "section": "B", + "upper_dim": 5 + }, + { + "cut": 770, + "delta": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0 + ], + "frame": [ + 4, + 51, + 136, + 264, + 82 + ], + "index": 767, + "lower_dim": 4, + "registers": [ + 150, + 439 + ], + "section": "B", + "upper_dim": 5 + }, + { + "cut": 766, + "delta": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0 + ], + "frame": [ + 4, + 18, + 33, + 459, + 64 + ], + "index": 768, + "lower_dim": 4, + "registers": [ + 143, + 555 + ], + "section": "B", + "upper_dim": 5 + }, + { + "cut": 767, + "delta": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0 + ], + "frame": [ + 4, + 18, + 33, + 459, + 64 + ], + "index": 768, + "lower_dim": 4, + "registers": [ + 143, + 555 + ], + "section": "B", + "upper_dim": 5 + }, + { + "cut": 768, + "delta": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0 + ], + "frame": [ + 4, + 18, + 33, + 459, + 64 + ], + "index": 768, + "lower_dim": 4, + "registers": [ + 143, + 555 + ], + "section": "B", + "upper_dim": 5 + }, + { + "cut": 770, + "delta": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0 + ], + "frame": [ + 4, + 18, + 33, + 459, + 64 + ], + "index": 768, + "lower_dim": 4, + "registers": [ + 143, + 555 + ], + "section": "B", + "upper_dim": 5 + }, + { + "cut": 771, + "delta": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0 + ], + "frame": [ + 4, + 18, + 33, + 459, + 64 + ], + "index": 768, + "lower_dim": 4, + "registers": [ + 143, + 555 + ], + "section": "B", + "upper_dim": 5 + }, + { + "cut": 769, + "delta": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0 + ], + "frame": [ + 18, + 33, + 200, + 259, + 76 + ], + "index": 771, + "lower_dim": 4, + "registers": [ + 214, + 566 + ], + "section": "B", + "upper_dim": 5 + }, + { + "cut": 770, + "delta": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0 + ], + "frame": [ + 18, + 33, + 200, + 259, + 76 + ], + "index": 771, + "lower_dim": 4, + "registers": [ + 214, + 566 + ], + "section": "B", + "upper_dim": 5 + }, + { + "cut": 771, + "delta": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0 + ], + "frame": [ + 18, + 33, + 200, + 259, + 76 + ], + "index": 771, + "lower_dim": 4, + "registers": [ + 214, + 566 + ], + "section": "B", + "upper_dim": 5 + }, + { + "cut": 773, + "delta": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0 + ], + "frame": [ + 18, + 33, + 200, + 259, + 76 + ], + "index": 771, + "lower_dim": 4, + "registers": [ + 214, + 566 + ], + "section": "B", + "upper_dim": 5 + }, + { + "cut": 774, + "delta": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0 + ], + "frame": [ + 18, + 33, + 200, + 259, + 76 + ], + "index": 771, + "lower_dim": 4, + "registers": [ + 214, + 566 + ], + "section": "B", + "upper_dim": 5 + }, + { + "cut": 770, + "delta": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0 + ], + "frame": [ + 51, + 72, + 140, + 274, + 4 + ], + "index": 772, + "lower_dim": 4, + "registers": [ + 131, + 444 + ], + "section": "B", + "upper_dim": 5 + }, + { + "cut": 771, + "delta": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0 + ], + "frame": [ + 51, + 72, + 140, + 274, + 4 + ], + "index": 772, + "lower_dim": 4, + "registers": [ + 131, + 444 + ], + "section": "B", + "upper_dim": 5 + }, + { + "cut": 772, + "delta": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0 + ], + "frame": [ + 51, + 72, + 140, + 274, + 4 + ], + "index": 772, + "lower_dim": 4, + "registers": [ + 131, + 444 + ], + "section": "B", + "upper_dim": 5 + }, + { + "cut": 774, + "delta": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0 + ], + "frame": [ + 51, + 72, + 140, + 274, + 4 + ], + "index": 772, + "lower_dim": 4, + "registers": [ + 131, + 444 + ], + "section": "B", + "upper_dim": 5 + }, + { + "cut": 775, + "delta": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0 + ], + "frame": [ + 51, + 72, + 140, + 274, + 4 + ], + "index": 772, + "lower_dim": 4, + "registers": [ + 131, + 444 + ], + "section": "B", + "upper_dim": 5 + }, + { + "cut": 771, + "delta": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0 + ], + "frame": [ + 18, + 33, + 131, + 328, + 76 + ], + "index": 773, + "lower_dim": 4, + "registers": [ + 167, + 567 + ], + "section": "B", + "upper_dim": 5 + }, + { + "cut": 772, + "delta": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0 + ], + "frame": [ + 18, + 33, + 131, + 328, + 76 + ], + "index": 773, + "lower_dim": 4, + "registers": [ + 167, + 567 + ], + "section": "B", + "upper_dim": 5 + }, + { + "cut": 773, + "delta": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0 + ], + "frame": [ + 18, + 33, + 131, + 328, + 76 + ], + "index": 773, + "lower_dim": 4, + "registers": [ + 167, + 567 + ], + "section": "B", + "upper_dim": 5 + }, + { + "cut": 775, + "delta": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0 + ], + "frame": [ + 18, + 33, + 131, + 328, + 76 + ], + "index": 773, + "lower_dim": 4, + "registers": [ + 167, + 567 + ], + "section": "B", + "upper_dim": 5 + }, + { + "cut": 776, + "delta": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0 + ], + "frame": [ + 18, + 33, + 131, + 328, + 76 + ], + "index": 773, + "lower_dim": 4, + "registers": [ + 167, + 567 + ], + "section": "B", + "upper_dim": 5 + }, + { + "cut": 776, + "delta": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0 + ], + "frame": [ + 13, + 19, + 33, + 455, + 65 + ], + "index": 778, + "lower_dim": 4, + "registers": [ + 197, + 531 + ], + "section": "B", + "upper_dim": 5 + }, + { + "cut": 777, + "delta": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0 + ], + "frame": [ + 13, + 19, + 33, + 455, + 65 + ], + "index": 778, + "lower_dim": 4, + "registers": [ + 197, + 531 + ], + "section": "B", + "upper_dim": 5 + }, + { + "cut": 778, + "delta": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0 + ], + "frame": [ + 13, + 19, + 33, + 455, + 65 + ], + "index": 778, + "lower_dim": 4, + "registers": [ + 197, + 531 + ], + "section": "B", + "upper_dim": 5 + }, + { + "cut": 780, + "delta": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0 + ], + "frame": [ + 13, + 19, + 33, + 455, + 65 + ], + "index": 778, + "lower_dim": 4, + "registers": [ + 197, + 531 + ], + "section": "B", + "upper_dim": 5 + }, + { + "cut": 781, + "delta": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0 + ], + "frame": [ + 13, + 19, + 33, + 455, + 65 + ], + "index": 778, + "lower_dim": 4, + "registers": [ + 197, + 531 + ], + "section": "B", + "upper_dim": 5 + }, + { + "cut": 781, + "delta": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0 + ], + "frame": [ + 30, + 33, + 134, + 321, + 64 + ], + "index": 783, + "lower_dim": 4, + "registers": [ + 145, + 543 + ], + "section": "B", + "upper_dim": 5 + }, + { + "cut": 782, + "delta": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0 + ], + "frame": [ + 30, + 33, + 134, + 321, + 64 + ], + "index": 783, + "lower_dim": 4, + "registers": [ + 145, + 543 + ], + "section": "B", + "upper_dim": 5 + }, + { + "cut": 783, + "delta": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0 + ], + "frame": [ + 30, + 33, + 134, + 321, + 64 + ], + "index": 783, + "lower_dim": 4, + "registers": [ + 145, + 543 + ], + "section": "B", + "upper_dim": 5 + }, + { + "cut": 785, + "delta": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0 + ], + "frame": [ + 30, + 33, + 134, + 321, + 64 + ], + "index": 783, + "lower_dim": 4, + "registers": [ + 145, + 543 + ], + "section": "B", + "upper_dim": 5 + }, + { + "cut": 786, + "delta": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0 + ], + "frame": [ + 30, + 33, + 134, + 321, + 64 + ], + "index": 783, + "lower_dim": 4, + "registers": [ + 145, + 543 + ], + "section": "B", + "upper_dim": 5 + } + ], + "neutral_second_prices": 989125, + "ordered_state_sha256": "43c5ecc267c6c9ae62e0fc21b69b8674321ce36b414de63ac51c08f96826812a", + "strictly_worse_second_prices": 46786 + }, + "fresh_coverage_crosschecks": 39, + "full_dirty_first_word_checks": 122, + "total_second_prices": 5236828 + } + }, + "raw_moment_interval": "0 1+4`. With cleanup and basis spelling restored, the result is the pinned +source word. Full arbitrary-dirty replay checks the rollback, neutral middle +and recovered word in each provider. This detects a real two-step gain but is +not a new improvement over the current source. + +The two declared domains do not cover arbitrary nonadjacent neutral starts, +frame-changing starts beyond displacement two, non-neutral intermediate words, +simultaneous incompatible intermediate frames, SCALE moves, commutator +corrections, warp crossings, changed phases or interfaces. Unknown physical, +native realization and complete supplier costs are recorded as unknown, not +zero. No current supplier improvement, new kappa or selected-frontier change +is inferred from a failed finite search. diff --git a/research/staged544-neutral-two-edit/README.md b/research/staged544-neutral-two-edit/README.md new file mode 100644 index 0000000000..aca3e12d80 --- /dev/null +++ b/research/staged544-neutral-two-edit/README.md @@ -0,0 +1,131 @@ +# Exact neutral-first two-edit searches on staged544 + +This package continues PR3886's explicit open question: can a neutral first +retiming enable a strictly cheaper second gate/frame edit on the literal +PR3734 staged544 words? It preserves all caller, helper, phase and native-warp +interfaces and searches two declared first-edit domains. The result is scoped +to those domains; it is not a global barrier, supplier admission or new kappa. + +**Result:** neither declared domain lowers the raw recursive moment for any +real `0 1+4`. This is a sensitivity +control, not a new current improvement. The verifier also includes wrong-scalar, +bad-frame, cleanup, noncommutation, source-drift and invoice controls. + +Full per-first-word dirty replay, from the repository root: + +```sh +python3 -B research/staged544-neutral-two-edit/verify.py --provider base +python3 -B research/staged544-neutral-two-edit/verify.py --provider extra +``` + +The registered replay uses `--compositional-dirty`: it checks every first block +on independent dirty symbols and fully replays the baseline and positive +controls, rather than repeating 122 whole-word interpreter runs. The full mode +above remains available. Both modes regenerate all search cells, compare exact +certificates and check the complete ledger. Both full normal replays passed: +635.689 seconds for base and 540.046 seconds for extra on CPython 3.12.3. +Assertion-disabled checks repeat the positive fixtures, rejection controls and +retained sign arithmetic; they do not repeat the full enumeration under `-O`. +Finalized execution coverage is recorded in VALIDATION.json. + +```sh +python3 -B scripts/research_package.py --package research/staged544-neutral-two-edit +``` + +The opt-in hook is VERIFY.json. Metadata/history/hosted CI validation are +distinct from mathematical verification. The official registered replay and +metadata/pin checks passed in an isolated fixture with the exact authenticated +canonical Git objects; delivered scientific-code and manifest bytes match that +checked snapshot. The fixture explicitly marks missing older history shallow, +so no full source-history preflight or hosted CI result is claimed. No fresh native +Gaussian/Clifford, physical hosting/allocation, precision/tape, all-size/compiler, +full outer/supplier, analytic or BIT admission is asserted. + +## Open next questions + +* Can a nonadjacent neutral first move outside the two domains unlock a gain? + Pin one literal outside-domain word and derive its interacting second-move + ledger. The missing evidence is a legal source-bound witness, not another + aggregate histogram allowance. +* Can two coordinated frame changes improve the bill through an intermediate + word that is not neutral? Supply a literal before/after word and restored + dirty-state contract before a wider search. Simultaneous legality and full + physical consumer costs remain blockers. + +Structured questions, the explicit user assignment, expansion decision, +checkpoint and overlap limitations are retained in TASK.json. Neither a zero +result here nor PR3886's frozen-baseline certificate can be iterated into a +universal obstruction. + +## Credit and provenance + +* dataisfire / PR3734, `fa041037a3374eaa08feeca0b26a5d6893194147`: + literal staged544 providers and retained auditor sources. +* Chris R / Clear1nsight / PR3886 scientific head + `359fe0fe77d29544972fd22ee674085ed5a3b4d0`: single-ADD relaxation, + exact sign certificate and source-bound recovery control. The later PR head + `6e5c125bdc1064a31a8705d42f091e23c94fd659` changes only an unrelated workflow; + its research package is unchanged. +* Jeremy Kothe / PR2957 and PR2979, with the subsequent staged-entry and + retiming chain: already-retained circuit mechanism and construction lineage. +* Dugongue / PR3863, `635fe84596c19016f3d0316a5cf7abbe48285490`, and the + ranked-pair/MathProof predecessors: paid rank-profile targets and accounting. +* Sagar Thakrar's audit_core and roger-sato's semantic adapter are reused + unchanged. Their Arham Tahir frame-contract attribution is preserved in + vendor/SOURCE-CREDITS.md. They are not newly independent interpreters. + +New neutral-first enumeration, middle-cut reduction, exact block checks and +ledger by Chris R / Clear1nsight with substantial OpenAI Codex assistance. +Apache-2.0 and all retained notices apply. No independent human review or +formal-kernel acceptance is claimed. diff --git a/research/staged544-neutral-two-edit/SOURCES.json b/research/staged544-neutral-two-edit/SOURCES.json new file mode 100644 index 0000000000..df7d22541c --- /dev/null +++ b/research/staged544-neutral-two-edit/SOURCES.json @@ -0,0 +1,154 @@ +{ + "schema_version": 1, + "base_commit": "20ecf2891d80b5acf18d980b2164fb44ea7faa90", + "files": [ + { + "path": "docs/research/agent-task-catalog.json", + "usage": "provenance", + "git_blob": "67f085acd86acd7d4e03922d9cf4b26bca66fed5", + "sha256": "47b42433f5a85809a3aadd29c2c339da2c6ed728e4f7762df6b88bccb7874cf0" + } + ], + "snapshots": [ + { + "local": "vendor/pr3886_retiming.py", + "bytes": 10391, + "sha256": "591d7278541ac4de9e9b6fc1e17aba23b205ac4b6c81824a28fc08294658ef0d", + "git_blob": "c33d7bbcdf2435056b3a56526e8e43f6513e381b", + "source_repository": "Clear1nsight/integer-mult-bounds", + "source_commit": "359fe0fe77d29544972fd22ee674085ed5a3b4d0", + "source_path": "research/rank-profile-retiming-obstruction/retiming.py" + }, + { + "local": "vendor/audit_core.py", + "bytes": 19364, + "sha256": "888679ca8502cdcb100420fe5382a052529a494bf76cb332928b86e62612b951", + "git_blob": "8b5e1d5f2a106402f036b63028ecef31a4e4c462", + "source_repository": "Clear1nsight/integer-mult-bounds", + "source_commit": "359fe0fe77d29544972fd22ee674085ed5a3b4d0", + "source_path": "research/rank-profile-retiming-obstruction/vendor/audit_core.py", + "predecessor_origin": { + "local": "vendor/audit_core.py", + "source_path": "research/staged544-producer-return/audit_core.py", + "source_repository": "dataisfire/integer-mult-bounds", + "source_commit": "fa041037a3374eaa08feeca0b26a5d6893194147", + "bytes": 19364, + "sha256": "888679ca8502cdcb100420fe5382a052529a494bf76cb332928b86e62612b951", + "git_blob": "8b5e1d5f2a106402f036b63028ecef31a4e4c462" + } + }, + { + "local": "vendor/audit_verify.py", + "bytes": 12382, + "sha256": "99971d3cc143cc894600e08c8cfbad3e8f537a544212f21dfbe4271cfa97354d", + "git_blob": "7f9fc1df424ae1d459616e49bda7a5dd17e40491", + "source_repository": "Clear1nsight/integer-mult-bounds", + "source_commit": "359fe0fe77d29544972fd22ee674085ed5a3b4d0", + "source_path": "research/rank-profile-retiming-obstruction/vendor/audit_verify.py", + "predecessor_origin": { + "local": "vendor/audit_verify.py", + "source_path": "research/staged544-producer-return/audit_verify.py", + "source_repository": "dataisfire/integer-mult-bounds", + "source_commit": "fa041037a3374eaa08feeca0b26a5d6893194147", + "bytes": 12382, + "sha256": "99971d3cc143cc894600e08c8cfbad3e8f537a544212f21dfbe4271cfa97354d", + "git_blob": "7f9fc1df424ae1d459616e49bda7a5dd17e40491" + } + }, + { + "local": "vendor/SOURCE-CREDITS.md", + "bytes": 2882, + "sha256": "d4a13d8b8ed9cdb594f00efb3d1a336e09d934423330f02a1514308a720c278b", + "git_blob": "c054fad87eeaa510865e682ee0c976c4cd728da2", + "source_repository": "Clear1nsight/integer-mult-bounds", + "source_commit": "359fe0fe77d29544972fd22ee674085ed5a3b4d0", + "source_path": "research/rank-profile-retiming-obstruction/vendor/SOURCE-CREDITS.md", + "predecessor_origin": { + "local": "vendor/SOURCE-CREDITS.md", + "source_path": "research/staged544-producer-return/SOURCE-CREDITS.md", + "source_repository": "dataisfire/integer-mult-bounds", + "source_commit": "fa041037a3374eaa08feeca0b26a5d6893194147", + "bytes": 2882, + "sha256": "d4a13d8b8ed9cdb594f00efb3d1a336e09d934423330f02a1514308a720c278b", + "git_blob": "c054fad87eeaa510865e682ee0c976c4cd728da2" + } + }, + { + "local": "inputs/PROFILE.json", + "bytes": 130, + "sha256": "06b4e2abe8d56b49bad3bdc8f8504082404b40609d548fa8de2618eb7373fd48", + "git_blob": "d1000454afc30925dc4b447a6f007e4b7dcbbab3", + "source_repository": "Clear1nsight/integer-mult-bounds", + "source_commit": "359fe0fe77d29544972fd22ee674085ed5a3b4d0", + "source_path": "research/rank-profile-retiming-obstruction/inputs/PROFILE.json", + "predecessor_origin": { + "local": "inputs/PROFILE.json", + "source_path": "research/staged544-producer-return/inputs/PROFILE.json", + "source_repository": "dataisfire/integer-mult-bounds", + "source_commit": "fa041037a3374eaa08feeca0b26a5d6893194147", + "bytes": 130, + "sha256": "06b4e2abe8d56b49bad3bdc8f8504082404b40609d548fa8de2618eb7373fd48", + "git_blob": "d1000454afc30925dc4b447a6f007e4b7dcbbab3" + } + }, + { + "local": "inputs/BORROW-WORD-43base.json.gz", + "bytes": 72769, + "sha256": "5ca4be99851f8878cbfe0fd6c454df926b11218f17feefa1664721cf03156699", + "git_blob": "674ea18ade4af85ca865fb08dc973637a09e30e6", + "source_repository": "Clear1nsight/integer-mult-bounds", + "source_commit": "359fe0fe77d29544972fd22ee674085ed5a3b4d0", + "source_path": "research/rank-profile-retiming-obstruction/inputs/BORROW-WORD-43base.json.gz", + "predecessor_origin": { + "local": "inputs/BORROW-WORD-43base.json.gz", + "source_path": "research/staged544-producer-return/words/BORROW-WORD-43base.json.gz", + "source_repository": "dataisfire/integer-mult-bounds", + "source_commit": "fa041037a3374eaa08feeca0b26a5d6893194147", + "bytes": 72769, + "sha256": "5ca4be99851f8878cbfe0fd6c454df926b11218f17feefa1664721cf03156699", + "git_blob": "674ea18ade4af85ca865fb08dc973637a09e30e6" + } + }, + { + "local": "inputs/BORROW-WORD-43extra.json.gz", + "bytes": 72766, + "sha256": "965268a9be73d3f62e7ef680d18f108cf064bfe1f44b82157baa61443232904e", + "git_blob": "b17e2be67e327f04802fd034c344fe4253c13a4a", + "source_repository": "Clear1nsight/integer-mult-bounds", + "source_commit": "359fe0fe77d29544972fd22ee674085ed5a3b4d0", + "source_path": "research/rank-profile-retiming-obstruction/inputs/BORROW-WORD-43extra.json.gz", + "predecessor_origin": { + "local": "inputs/BORROW-WORD-43extra.json.gz", + "source_path": "research/staged544-producer-return/words/BORROW-WORD-43extra.json.gz", + "source_repository": "dataisfire/integer-mult-bounds", + "source_commit": "fa041037a3374eaa08feeca0b26a5d6893194147", + "bytes": 72766, + "sha256": "965268a9be73d3f62e7ef680d18f108cf064bfe1f44b82157baa61443232904e", + "git_blob": "b17e2be67e327f04802fd034c344fe4253c13a4a" + } + } + ], + "external_snapshot_contract": "All scientific external bytes are self-contained package snapshots authenticated by length, SHA256 and Git blob before execution. Attribution heads are not runtime Git ancestry dependencies. No frozen predecessor is changed.", + "method_predecessors": [ + { + "pr": 3863, + "author": "Dugongue", + "head": "635fe84596c19016f3d0316a5cf7abbe48285490", + "scope": "Uniform rational paid-profile credit and proposed 2+2 to 1+3 target; read, not reimplemented as new mathematics." + }, + { + "pr": 2957, + "author": "Jeremy Kothe", + "retained_record": "research/rank7-joint-endframes/data/REWRITES-2957.json", + "retained_record_base": "20ecf2891d80b5acf18d980b2164fb44ea7faa90", + "scope": "Already-retained commuting swap used as a counterfactual rollback/recovery positive control." + }, + { + "pr": 3886, + "author": "Chris R / Clear1nsight", + "scientific_head": "359fe0fe77d29544972fd22ee674085ed5a3b4d0", + "current_head_at_entry": "6e5c125bdc1064a31a8705d42f091e23c94fd659", + "scope": "Retiming, source words, exact sign certificates and counterfactual recovery. Latest commit only changes unrelated workflow." + } + ] +} diff --git a/research/staged544-neutral-two-edit/TASK.json b/research/staged544-neutral-two-edit/TASK.json new file mode 100644 index 0000000000..3196168c6d --- /dev/null +++ b/research/staged544-neutral-two-edit/TASK.json @@ -0,0 +1,128 @@ +{ + "schema_version": 1, + "task_id": "scalar-to-moment", + "priority_revision": 6, + "base_commit": "20ecf2891d80b5acf18d980b2164fb44ea7faa90", + "original_card": { + "id": "scalar-to-moment", + "question": "Can one known scalar simplification be converted into an actual paid-profile improvement?", + "starting_points": [ + "research/r439-bsection-stars-seed01/README.md", + "certificates/selected-result.json" + ], + "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", + "research/r439-bsection-stars-seed01/verify.py" + ], + "expected": "PASS_R439_BSECTION_STARS", + "inspect": "Observe that the positive control improves scalar counts while retaining the paid histogram.", + "scope": "Positive control / source-bound orientation only; this is not a new construction or full cold replay." + }, + "first_experiment": "Choose one simplification and derive the complete changed frame itinerary, or prove why it cannot change the histogram.", + "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" + ] + }, + "scope_status": "changed", + "scope_change_reason": "Explicit user assignment continues PR3886. The first-word geometry is allowed to change, so this goes beyond its frozen single-variable-frame baseline certificate. The adjacent-swap domain additionally prices third ADDs at the newly exposed cut; all other third-gate cuts inherit baseline prices by the written reduction.", + "actual_scope": "Two explicit neutral-first domains on both pinned PR3734 providers: all neutral frame-changing first ADD edits at displacement <=2 followed by any interacting second ADD retiming; and all adjacent frame-preserving commuting ADD swaps followed by any second ADD retiming, using an exact new-middle-cut reduction. All first/second edits stay within original scalar corridors and preserve interfaces.", + "bottleneck_link": "Decide whether a neutral source-level edit enables a paid moment improvement outside the frozen single-ADD certificate.", + "budget_minutes": 60, + "author": "Chris R / Clear1nsight", + "outcome": "negative-result", + "evidence": "Both exact two-edit domains completed on both providers: 10,473,656 new second cut/dimension prices, no improvement for 0BR5+nm^TZst4Z-nyx-{iCb9Dz(>I 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 a{2=x9TiBifgoL2jalJEr?dHi{zx^MgbT>}` literal 0 HcmV?d00001 diff --git a/research/staged544-neutral-two-edit/inputs/BORROW-WORD-43extra.json.gz b/research/staged544-neutral-two-edit/inputs/BORROW-WORD-43extra.json.gz new file mode 100644 index 0000000000000000000000000000000000000000..b17e2be67e327f04802fd034c344fe4253c13a4a GIT binary patch literal 72766 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 literal 0 HcmV?d00001 diff --git a/research/staged544-neutral-two-edit/inputs/PROFILE.json b/research/staged544-neutral-two-edit/inputs/PROFILE.json new file mode 100644 index 0000000000..d1000454af --- /dev/null +++ b/research/staged544-neutral-two-edit/inputs/PROFILE.json @@ -0,0 +1,10 @@ +{ + "1": 7990332, + "2": 2349000, + "3": 748971, + "4": 330480, + "5": 69479, + "8": 25920, + "32": 1, + "48": 137911 +} diff --git a/research/staged544-neutral-two-edit/search.py b/research/staged544-neutral-two-edit/search.py new file mode 100644 index 0000000000..dc77563ca7 --- /dev/null +++ b/research/staged544-neutral-two-edit/search.py @@ -0,0 +1,339 @@ +#!/usr/bin/env python3 +# SPDX-License-Identifier: Apache-2.0 +"""Bounded neutral-first search on exact PR3734 words. + +Chris R / Clear1nsight with substantial OpenAI assistance. Geometry and the +single-gate retiming machinery are reused from credited PR3886, not independent. +""" +import argparse +from bisect import bisect_left +from collections import Counter +from copy import deepcopy +import gzip +import hashlib +import json +from pathlib import Path +import time +import types + +P = Path(__file__).resolve().parent + +def authenticate_sources(): + for row in json.loads((P/'SOURCES.json').read_text())['snapshots']: + raw=(P/row['local']).read_bytes() + if len(raw)!=row['bytes'] or hashlib.sha256(raw).hexdigest()!=row['sha256']: + raise ValueError('source length/SHA256 drift: '+row['local']) + blob=hashlib.sha1(b'blob '+str(len(raw)).encode()+b'\0'+raw).hexdigest() + if blob!=row['git_blob']:raise ValueError('source Git blob drift: '+row['local']) + +authenticate_sources() + +def module(name, path): + m = types.ModuleType(name) + m.__file__ = str(path) + exec(compile(path.read_bytes(), str(path), 'exec'), m.__dict__) + return m + +R = module('retiming_source', P/'vendor/pr3886_retiming.py') +C = module('retained_core', P/'vendor/audit_core.py') +A = module('retained_adapter', P/'vendor/audit_verify.py') +need = R.need + +def load(tag): + return json.loads(gzip.decompress((P/'inputs'/('BORROW-WORD-43'+tag+'.json.gz')).read_bytes())) + +def canonical(w): + return json.dumps(w, sort_keys=True, separators=(',', ':')).encode() + +def digest(w): + return hashlib.sha256(canonical(w)).hexdigest() + +def placements(w, max_distance=None, gate_filter=None, sections=('A','B','restore'), trace=None, + target_cut=None, trusted_reach=False): + """All cut/dimension prices in the declared class, plus exact frame bounds. + + Like PR3886 this first prices a relaxation. Returned witnesses must separately + pass frame_bill; a relaxed zero is not admission. One representative subspace + per dimension is generated here (not exhaustive over subspaces). + """ + nodes, where, bill = R.tracing(w) if trace is None else trace + for section in sections: + gates = w[section] + for lo, hi in R.segments(w, section): + occ = {} + for i in range(lo, hi): + for r in R.touched(gates[i]): + occ.setdefault(r, []).append(i) + for i in range(lo, hi): + g = gates[i] + if g[0] != 'add' or (gate_filter is not None and not gate_filter(section, i, g)): + continue + lower, upper = i, i+1 + if not trusted_reach: + while lower > lo and R.crosses(g, gates[lower-1]): lower -= 1 + while upper < hi and R.crosses(g, gates[upper]): upper += 1 + else: + need(target_cut is not None,'trusted reach needs an exact cut') + lower,upper=target_cut,target_cut + if max_distance is not None: + lower, upper = max(lower,i-max_distance), min(upper,i+1+max_distance) + removal = [0]*10 + reduced, entries, exits = {}, {}, {} + for r in R.touched(g): + seq = nodes[r] + pos = where[((section,i),r)] + _, _, p, u = seq[pos] + q = seq[pos+1][3] + removal[R.rank(u)-R.rank(p)] -= 1 + removal[R.rank(q)-R.rank(u)] -= 1 + removal[R.rank(q)-R.rank(p)] += 1 + indices = occ[r] + reduced[r] = [x for x in indices if x != i] + entries[r] = seq[where[((section,indices[0]),r)]][2] + last = where[((section,indices[-1]),r)] + exits[r] = seq[last+1][3] + cuts=range(lower,upper+1) if target_cut is None else ([target_cut] if lower<=target_cut<=upper else []) + for cut in cuts: + if cut == i+1: continue + boundary = [] + for r in R.touched(g): + indices = reduced[r] + j = bisect_left(indices,cut) + p = R.span(tuple(gates[indices[j-1]][-1])) if j else entries[r] + q = R.span(tuple(gates[indices[j]][-1])) if j>v)&1): + extension.append(v); mask = R.span(tuple(extension)) + frames[len(extension)] = tuple(extension) + for d in range(R.rank(L),R.rank(H)+1): + delta = removal.copy() + for p,q in dims: + delta[q-p] -= 1; delta[d-p] += 1; delta[q-d] += 1 + delta[0] = 0 + yield {'section':section,'index':i,'cut':cut,'frame':list(frames[d]), + 'delta':tuple(delta),'lower_dim':R.rank(L),'upper_dim':R.rank(H), + 'registers':list(R.touched(g))} + +def apply(w, rec): + return R.apply_move(w,rec['section'],rec['index'],rec['cut'],rec['frame']) + +def inspect_first(tag, distance): + w=load(tag); counts=Counter(); examples=[]; unique=set() + t=time.monotonic() + for rec in placements(w,max_distance=distance): + counts['prices'] += 1 + if any(rec['delta']): continue + counts['neutral_prices'] += 1 + g=w[rec['section']][rec['index']] + newindex=rec['cut']-(rec['cut']>rec['index']) + if newindex==rec['index'] and R.span(tuple(g[-1]))==R.span(tuple(rec['frame'])): + counts['identity'] += 1; continue + key=(rec['section'],rec['index'],rec['cut'],R.span(tuple(rec['frame']))) + if key in unique:continue + unique.add(key) + examples.append(rec) + counts['changed_frame' if R.span(tuple(g[-1]))!=R.span(tuple(rec['frame'])) else 'same_frame'] += 1 + counts['by_'+rec['section']] += 1 + counts['slack_'+str(rec['upper_dim']-rec['lower_dim'])] += 1 + print(json.dumps({'provider':tag,'distance':distance,'counts':counts,'seconds':time.monotonic()-t}),flush=True) + (P/('FIRST-'+tag+'.json')).write_text(json.dumps(examples,sort_keys=True)+'\n') + +def explore(tag, distance=2, changed_only=True, limit=None, write=True, progress=True): + w=load(tag); original=C.frame_bill(w); counts=Counter(); states=[]; gains=[] + records=[r for r in placements(w,max_distance=distance) if not any(r['delta'])] + if changed_only: + records=[r for r in records if R.span(tuple(w[r['section']][r['index']][-1]))!=R.span(tuple(r['frame']))] + if limit is not None:records=records[:limit] + t=time.monotonic() + for serial,first in enumerate(records): + new=apply(w,first) + try:bill,widths,*_=C.frame_bill(new) + except C.AuditFailure: + counts['first_boundary_rejected']+=1;continue + need(bill==original[0] and widths==original[1],'neutral literal bill differs') + counts['legal_first']+=1 + touched=set(first['registers']) + scope=lambda sec,i,g:bool(touched.intersection(R.touched(g))) + delta_counts=Counter(); second_count=0;uncertified=[] + for second in placements(new,gate_filter=scope): + delta=second['delta'];delta_counts[delta]+=1;second_count+=1 + if not R.all_power_nonnegative(delta): + counts['uncertified_prices']+=1 + candidate=apply(new,second) + try:after,newwidths,*_=C.frame_bill(candidate) + except C.AuditFailure: + counts['second_boundary_rejected']+=1;continue + need(newwidths==widths,'helper inventory drift') + actual=tuple([0]+[after.get(k,0)-bill.get(k,0) for k in range(1,10)]) + need(actual==delta,'relaxed vs actual legal bill differs') + cap=R.caps(delta) + profitable=all(x<=0 for x in cap) and any(x<0 for x in cap) + item={'first':first,'second':second,'profile':after,'caps':cap,'all_concave_improvement':profitable} + uncertified.append(item) + if profitable: + gains.append(item) + if progress:print('GAIN',tag,serial,json.dumps(item),flush=True) + if write:(P/('GAINS-'+tag+'.json')).write_text(json.dumps(gains,sort_keys=True,indent=2)+'\n') + counts['second_prices']+=second_count + states.append({'first':first,'second_prices':second_count, + 'deltas':[{'delta':d,'count':n,'certificate':R.all_power_nonnegative(d)} for d,n in sorted(delta_counts.items())], + 'uncertified':uncertified}) + if progress and serial%10==0:print('PROGRESS',tag,serial+1,len(records),dict(counts),'seconds',time.monotonic()-t,flush=True) + report={'provider':tag,'distance':distance,'changed_frame_only':changed_only,'counts':counts,'states':states,'gains':gains} + if write:(P/('SEARCH-'+tag+'.json')).write_text(json.dumps(report,sort_keys=True,indent=2)+'\n') + if progress:print('DONE',tag,dict(counts),'seconds',time.monotonic()-t,flush=True) + return report + +def adjacent_pairs(tag, write=True, progress=True): + """Every original adjacent commuting ADD pair; retain both original frames. + + First move is the left ADD rightwards past the right ADD. The second move + may retime either of those ADDs anywhere in its corridor, with any frame + dimension. Other gates/frames and all external interfaces remain fixed. + """ + w=load(tag);baseline=R.tracing(w);original=baseline[2];counts=Counter();states=[];gains=[] + t=time.monotonic() + for section in ('A','B','restore'): + for lo,hi in R.segments(w,section): + for i in range(lo,hi-1): + g,h=w[section][i:i+2] + if g[0]!='add' or h[0]!='add' or not R.crosses(g,h):continue + counts['commuting_adjacent_pairs']+=1 + if g==h:counts['identical_gates']+=1;continue + new=w.copy();new[section]=w[section].copy() + new[section][i:i+2]=[h,g] + trace=adjacent_trace(w,baseline,section,i) + if trace is None: + counts['frame_rejected']+=1;continue + need(trace[2]==original,'frame-preserving commuting swap not neutral') + counts['legal_first']+=1 + filt=lambda sec,j,k:j in (i,i+1) + dc=Counter();unc=[] + for second in placements(new,gate_filter=filt,sections=(section,),trace=trace): + d=second['delta'];dc[d]+=1;counts['second_prices']+=1 + if not R.all_power_nonnegative(d): + counts['uncertified_prices']+=1 + cand=apply(new,second) + try:after,*_=C.frame_bill(cand) + except C.AuditFailure: + counts['second_boundary_rejected']+=1;continue + need(tuple([0]+[after.get(k,0)-original.get(k,0) for k in range(1,10)])==d,'invoice mismatch') + item={'first':{'section':section,'index':i,'cut':i+2,'frame':g[-1]},'second':second,'profile':after,'caps':R.caps(d)} + unc.append(item) + if all(x<=0 for x in R.caps(d)) and any(x<0 for x in R.caps(d)): + gains.append(item) + if progress:print('GAIN_PAIR',tag,json.dumps(item),flush=True) + states.append({'section':section,'left_index':i,'second_prices':sum(dc.values()), + 'deltas':[{'delta':d,'count':n,'certificate':R.all_power_nonnegative(d)} for d,n in sorted(dc.items())], + 'uncertified':unc}) + if progress and counts['legal_first']%250==0:print('PAIR_PROGRESS',tag,dict(counts),'seconds',time.monotonic()-t,flush=True) + result={'provider':tag,'counts':counts,'states':states,'gains':gains} + if write:(P/('PAIRS-'+tag+'.json')).write_text(json.dumps(result,sort_keys=True,indent=2)+'\n') + if progress:print('PAIRS_DONE',tag,dict(counts),'seconds',time.monotonic()-t,flush=True) + return result + +def corridor_bounds(w): + out={} + for section in ('A','B','restore'): + gates=w[section] + for lo,hi in R.segments(w,section): + for i in range(lo,hi): + g=gates[i] + if g[0]!='add':continue + low,up=i,i+1 + while low>lo and R.crosses(g,gates[low-1]):low-=1 + while up=i and R.crosses(k,h)) if j> x & 1] + + +def dim(mask): + size = bin(mask).count('1') + need(size and size & (size - 1) == 0, 'not a subspace point set') + return size.bit_length() - 1 + + +FULL = (1 << 512) - 1 +ZERO = 1 + + +def hyperplane(port): + return sum(1 << x for x in range(512) if bin(x & port).count('1') % 2 == 0) + + +def warp_images(columns): + """Images of all 512 vectors under the F_2-linear map with columns G e_i.""" + need(len(columns) == H and all(type(c) is int and 0 <= c < 512 for c in columns), 'warp columns') + images = [0] * 512 + for x in range(1, 512): + low = x & -x + images[x] = images[x ^ low] ^ columns[low.bit_length() - 1] + need(len(set(images)) == 512, 'singular warp') + return images + + +def image_mask(images, mask): + return sum(1 << images[x] for x in points(mask)) + + +def lagrangian_action_ok(images, U, E): + """K_G(x,z)=(Gx, Gx+G^{-T}(x+z)) is symplectic and maps L_U to L_E, L_0 and L_FULL to themselves. + + L_U={(x,x+p): x in U, p in U^perp}. This is the binary frame action only; it + is not a Clifford phase or Gaussian-product certificate. For invertible G with + G(U)=E it is implied by the frame-map check ( = ), so it is a + consistency check of the implementation, not extra evidence. + """ + inverse = [0] * 512 + for x, y in enumerate(images): + inverse[y] = x + # G^{-T} z: bit j of the result is . + git = lambda z: sum((bin(inverse[1 << j] & z).count('1') & 1) << j for j in range(H)) + lift = lambda x, z: (images[x], images[x] ^ git(x ^ z)) + pair = lambda a, b: (bin(a[0] & b[1]).count('1') + bin(a[1] & b[0]).count('1')) & 1 + basis = [(1 << i, 0) for i in range(H)] + [(0, 1 << i) for i in range(H)] + lifted = [lift(*b) for b in basis] + if any(pair(lifted[i], lifted[j]) != pair(basis[i], basis[j]) for i in range(18) for j in range(i + 1, 18)): + return False + + def frame(mask): + us = points(mask) + perp = [p for p in range(512) if all(bin(p & u).count('1') % 2 == 0 for u in us)] + return {(u, u ^ p) for u in us for p in perp} + return all({lift(*pt) for pt in frame(a)} == frame(b) for a, b in ((ZERO, ZERO), (FULL, FULL), (U, E))) + + +# ---------------------------------------------------------------------------- +# Chronological binary-frame bill (BORROW-WORD contract) +# ---------------------------------------------------------------------------- +def frame_bill(w, lagrangian=False): + rep = w['report'] + need((rep['v'], 2 * rep['v'] + rep['R'], rep['h']) == (V, N, H), 'word geometry') + removed = set(w['removed']) + need(len(removed) == len(w['removed']) and all(2 * V <= r < N for r in removed), 'removed helpers') + live = [r for r in range(N) if r not in removed] + liveset = set(live) + B, warps = w['B'], w['warps'] + for k, (pos, lender, cols, U, E) in enumerate(warps, 1): + need(0 <= pos <= len(B), 'warp position', k) + need(lender in liveset and not is_target(lender), 'warp lender', k) + images = warp_images(cols) + su, se = span(U), span(E) + need(dim(su) == len(U) == len(E) == dim(se), 'warp frame bases', k) + need(image_mask(images, su) == se, 'warp does not map its frame', k) + if lagrangian: + need(lagrangian_action_ok(images, su, se), 'lifted frame action', k) + for name in ('A', 'B', 'restore'): + for g in w[name]: + if g[0] != 'warp': + need(all(r in liveset for r in touched(g)), 'removed/out-of-range register', name, g) + if g[0] == 'add' and not is_target(g[1]): + need(not is_target(g[2]), 'non-target reads a target', name, g) + need(all(g[-1] is None and is_target(g[1]) and g[0] == 'add' for g in w['cut']), 'cut gates') + need(all(g[-1] == [] and is_target(g[1]) for g in w['precondition'] + w['compensation']), 'zero-frame wrapper writes') + need(all(not is_target(g[1]) for g in w['restore']), 'restore writes a target') + + ports = w['ports'] + start, end = {}, {} + for r in live: + if r < V: + start[r], end[r] = span((ports[r],)), FULL + elif r < 2 * V: + start[r], end[r] = ZERO, hyperplane(ports[r - V]) + else: + start[r], end[r] = ZERO, FULL + for q, U in w['start_extra'].items(): + need(int(q) in liveset and int(q) >= 2 * V, 'entrance names a live helper', q) + start[int(q)] = span(U) + for q, U in w['helper_final'].items(): + need(int(q) in liveset and int(q) >= 2 * V, 'terminal names a live helper', q) + end[int(q)] = span(U) + + current, bill, chain = dict(start), Counter(), {} + + def climb(r, mask, where): + need(current[r] & ~mask == 0, 'frame containment fails', where, r) + d = dim(mask) - dim(current[r]) + if d: + bill[d] += 1 + chain.setdefault(r, []).append((where, d, mask)) + current[r] = mask + + npre = w['prelude_events'] + for i, g in enumerate(w['A']): + if g[0] == 'warp': + need(i < npre and len(g) == 5, 'warp outside the prelude', i) + _, r, op, fr, to = g + need(op != 0 and abs(op) <= len(warps) and warps[abs(op) - 1][1] == r, 'prelude warp lender', i) + images = warp_images(warps[abs(op) - 1][2]) + if op < 0: + inverse = [0] * 512 + for x, y in enumerate(images): + inverse[y] = x + images = inverse + need(image_mask(images, span(fr)) == span(to), 'prelude warp frame action', i) + need(current[r] == span(fr), 'prelude warp entry frame', i, r) + current[r] = span(to) + chain.setdefault(r, []).append((('A', i), 'warp', span(to))) + else: + if i < npre: + need(is_target(g[1]), 'prelude scalar writes a non-target', i) + for r in touched(g): + climb(r, span(g[-1]), ('A', i)) + levels = {V + int(t): span(U) for t, U in w['target_levels'].items()} + need(all(current[t] == levels.get(t, ZERO) for t in range(V, 2 * V)), 'target cut levels') + for q, U in zip(w['centers'], w['center_frames']): + U = span(U) + need(current[q] == U, 'centre entry frame', q) + served = {levels.get(g[1], ZERO) for g in w['cut'] if g[2] == q} + for T in sorted(served, key=lambda m: -dim(m)): + need(T & ~U == 0, 'centre descent not nested', q) + d = dim(U) - dim(T) + if d: + bill[d] += 1 + chain.setdefault(q, []).append((('centre',), d, T)) + U = T + at = {} + for k, rec in enumerate(warps, 1): + at.setdefault(rec[0], []).append(k) + for p in range(len(B) + 1): + for k in at.get(p, ()): + _, lender, _, U, E = warps[k - 1] + need(current[lender] == span(U), 'native warp entry frame', k, lender) + current[lender] = span(E) + chain.setdefault(lender, []).append((('warp', k), 'warp', span(E))) + if p < len(B): + for r in touched(B[p]): + climb(r, span(B[p][-1]), ('B', p)) + for i, g in enumerate(w['restore']): + for r in touched(g): + climb(r, span(g[-1]), ('restore', i)) + for r in live: + climb(r, end[r], ('end',)) + restored = set(map(int, w['helper_final'])) + need(all(end[r] == FULL for r in live if r not in restored and not is_target(r)), 'a FULL-cleanup register ends low') + widths = Counter(dim(end[r]) - dim(start[r]) for r in live if r >= 2 * V) + return dict(sorted(bill.items())), dict(sorted(widths.items())), chain, start, end + + +def hygiene(w): + """Inherited structural contract: dyadic scalars, power-of-two scales, wrapper and correction access.""" + entering = set(map(int, w['start_extra'])) + restored = set(map(int, w['helper_final'])) + live = set(range(N)) - set(w['removed']) + for name in ('precondition', 'compensation', 'A', 'cut', 'B', 'restore', 'cleanup'): + for g in w[name]: + if g[0] == 'warp': + continue + q = Q(g[3], g[4]) if g[0] == 'add' else Q(g[2], g[3]) + need(q != 0 and q.denominator & (q.denominator - 1) == 0, 'non-dyadic scalar', name, g) + if g[0] == 'scale': + need(abs(q.numerator) & (abs(q.numerator) - 1) == 0, 'non power-of-two scale', name, g) + for g in w['precondition'] + w['compensation']: + need(not any(r in entering | restored for r in touched(g)), 'wrapper touches an entering or restored helper', g) + for c in w['initial_corrections']: + word = c['operator_word'] + need(is_target(c['target']) and c['source'] in live and c['source'] >= 2 * V + and c['source'] not in entering, 'correction access', c) + need(word and all(w['warps'][abs(o) - 1][1] == c['source'] for o in word), 'correction operator lender', c) + q = Q(c['coefficient']) + need(q != 0 and q.denominator & (q.denominator - 1) == 0, 'correction coefficient', c) + return True + + +# ---------------------------------------------------------------------------- +# Literal inverse cleanup, derived from the contract +# ---------------------------------------------------------------------------- +def ordinary_forward(w): + """Chronological non-wrapper actions whose inverse forms cleanup.""" + out = [g for g in w['A'][w['prelude_events']:]] + at = {} + for k, rec in enumerate(w['warps'], 1): + at.setdefault(rec[0], []).append(['warp', rec[1], k]) + for p in range(len(w['B']) + 1): + out += at.get(p, []) + if p < len(w['B']): + out.append(w['B'][p]) + return out + list(w['restore']) + + +def derive_cleanup(w): + restored = set(map(int, w['helper_final'])) + buf = lambda r: r + N if r in restored else r + full = [256, 128, 64, 32, 16, 8, 4, 2, 1] + out = [] + for g in reversed(ordinary_forward(w)): + if g[0] == 'warp': + out.append(['warp', buf(g[1]), -g[2], full]) + elif is_target(g[1]): + continue + elif g[0] == 'add': + out.append(['add', buf(g[1]), buf(g[2]), -g[3], g[4], full]) + else: + need(g[0] == 'scale', 'unknown primitive', g) + out.append(['scale', buf(g[1]), g[3], g[2], full]) + return out + + +def same_cleanup(a, b): + norm = lambda c: [(g[:-1], span(g[-1])) for g in c] + return len(a) == len(b) and norm(a) == norm(b) + + +# ---------------------------------------------------------------------------- +# Exact free-operator semantics. A value is a dict {(input, word): Fraction}; +# word is a reduced tuple of signed operator ids (leftmost = applied last). +# ---------------------------------------------------------------------------- +def program(w, cleanup=None): + """Literal executed sequence: corrections, wrapper, A, cut, B+warps, restore | cleanup.""" + items = [('corr', c['target'], c['source'], tuple(c['operator_word']), Q(c['coefficient'])) + for c in w['initial_corrections']] + items += w['precondition'] + w['compensation'] + w['A'] + w['cut'] + at = {} + for k, rec in enumerate(w['warps'], 1): + at.setdefault(rec[0], []).append(['warp', rec[1], k]) + for p in range(len(w['B']) + 1): + items += at.get(p, []) + if p < len(w['B']): + items.append(w['B'][p]) + items += w['restore'] + return items, list(w['cleanup'] if cleanup is None else cleanup) + + +def dual_op(op): + return (1 if op > 0 else -1) * (abs(op) + DUAL) + + +def _left(op, word): + return word[1:] if word and word[0] == -op else (op,) + word + + +def _right(word, op): + return word[:-1] if word and word[-1] == -op else word + (op,) + + +def _axpy(dst, src, q): + for key, x in src.items(): + y = dst.get(key, 0) + q * x + if y: + dst[key] = y + else: + dst.pop(key, None) + + +def forward_rows(w, cleanup=None, dual=False, symbolic_buffers=True, snapshot=None): + """Schrodinger pass: every register's value as a combination of initial inputs. + + Live inputs are independent symbols. Private buffers are independent symbols + when symbolic_buffers is set (dirty), otherwise zero. The optional snapshot + callback sees the rows at the cleanup boundary. + """ + removed = set(w['removed']) + live = [r for r in range(N) if r not in removed] + restored = sorted(map(int, w['helper_final'])) + rows = {r: {(r, ()): Q(1)} for r in live} + for c in restored: + rows[c + N] = {(c + N, ()): Q(1)} if symbolic_buffers else {} + prefix, tail = program(w, cleanup) + + def apply(g): + kind = g[0] + if kind == 'add': + t, s, q = g[1], g[2], Q(g[3], g[4]) + need(t != s and q, 'add gate', g) + if dual: + t, s, q = s, t, -q + _axpy(rows[t], rows[s], q) + elif kind == 'scale': + q = Q(g[2], g[3]) + need(q != 0, 'zero scale', g) + if dual: + q = 1 / q + rows[g[1]] = {k: q * x for k, x in rows[g[1]].items()} + elif kind == 'warp': + op = dual_op(g[2]) if dual else g[2] + rows[g[1]] = {(var, _left(op, word)): x for (var, word), x in rows[g[1]].items()} + elif kind == 'corr': + _, t, s, word, c = g + if dual: + src, ops, dst, c = rows[t], [-dual_op(o) for o in word], s, -c + else: + src, ops, dst = rows[s], list(reversed(word)), t + moved = {} + for (var, wd), x in src.items(): + for o in ops: + wd = _left(o, wd) + moved[var, wd] = x + _axpy(rows[dst], moved, c) + else: + raise AuditFailure('unknown primitive ' + repr(g)) + + for g in prefix: + apply(g) + if snapshot is not None: + snapshot(rows) + for g in tail: + apply(g) + return rows + + +def reverse_columns(w, cleanup=None, upto_cleanup=False): + """Heisenberg pull-back: process the forward program backwards. + + cols[s] = {(output, word): coefficient}: the final output register 'output' + contains coefficient*word*x_s. Words grow on the right. Every live input and + every private buffer is an independent symbol. + """ + removed = set(w['removed']) + live = [r for r in range(N) if r not in removed] + restored = sorted(map(int, w['helper_final'])) + regs = live + [c + N for c in restored] + cols = {r: {(r, ()): Q(1)} for r in regs} + prefix, tail = program(w, cleanup) + seq = prefix if upto_cleanup else prefix + tail + for g in reversed(seq): + kind = g[0] + if kind == 'add': + t, s, q = g[1], g[2], Q(g[3], g[4]) + need(t != s and q, 'add gate', g) + _axpy(cols[s], cols[t], q) + elif kind == 'scale': + q = Q(g[2], g[3]) + need(q != 0, 'zero scale', g) + cols[g[1]] = {k: q * x for k, x in cols[g[1]].items()} + elif kind == 'warp': + op = g[2] + cols[g[1]] = {(out, _right(word, op)): x for (out, word), x in cols[g[1]].items()} + elif kind == 'corr': + _, t, s, word, c = g + moved = {} + for (out, wd), x in cols[t].items(): + for o in word: + wd = _right(wd, o) + moved[out, wd] = x + _axpy(cols[s], moved, c) + else: + raise AuditFailure('unknown primitive ' + repr(g)) + return cols + + +def transpose(cols): + rows = {} + for s, col in cols.items(): + for (r, word), x in col.items(): + rows.setdefault(r, {})[s, word] = x + return rows + + +def endpoint_defects(w, rows, dual=False): + """Compare final rows with the contract on the zero-buffer (live-input) domain. + + Returns (bad live registers, dirty buffers, buffer->live leaks, buffer self-map identity). + """ + removed = set(w['removed']) + live = [r for r in range(N) if r not in removed] + restored = sorted(map(int, w['helper_final'])) + bad = [] + for r in live: + expect = {(r, ()): Q(1)} + if dual and r < V: + expect[r + V, ()] = Q(-1) + if not dual and is_target(r): + expect[r - V, ()] = Q(1) + got = {k: x for k, x in rows.get(r, {}).items() if k[0] < N} + if got != expect: + bad.append(r) + dirty = [c for c in restored if any(k[0] < N for k in rows.get(c + N, {}))] + leaks = sorted({r for r in live for k in rows.get(r, {}) if k[0] >= N}) + buffer_identity = all({k: x for k, x in rows.get(c + N, {}).items() if k[0] >= N} == {(c + N, ()): Q(1)} + for c in restored) + return bad, dirty, leaks, buffer_identity + + +def boundary_defects(w, rows): + """Contract at the cleanup boundary (forward): targets sheared, restored helpers clean and isolated.""" + restored = set(map(int, w['helper_final'])) + out = [] + for t in range(V, 2 * V): + if {k: x for k, x in rows[t].items() if k[0] < N} != {(t, ()): Q(1), (t - V, ()): Q(1)}: + out.append(('target', t)) + for c in restored: + if rows[c] != {(c, ()): Q(1)}: + out.append(('restored', c)) + for r, row in rows.items(): + if r < N and r not in restored and any(k[0] in restored for k in row): + out.append(('restored input read', r)) + return out diff --git a/research/staged544-neutral-two-edit/vendor/audit_verify.py b/research/staged544-neutral-two-edit/vendor/audit_verify.py new file mode 100644 index 0000000000..7f9fc1df42 --- /dev/null +++ b/research/staged544-neutral-two-edit/vendor/audit_verify.py @@ -0,0 +1,254 @@ +#!/usr/bin/env python3 +"""Whole-word cross-check of published RETIMED and DELAYED supplier words. + +Reuses Sagar Thakrar's exact PR3687 audit_core, unchanged and authenticated +before execution. This is not a new interpreter. No construction/native checker +is imported. roger-sato with substantial OpenAI Codex assistance; Apache-2.0. +""" +from collections import Counter +from copy import deepcopy +import gzip +import hashlib +import json +from pathlib import Path +import sys +import types + +HERE = Path(__file__).resolve().parent +STAGED = {1: 2439, 2: 726, 3: 224, 4: 102, 5: 20, 8: 8} +RETIMED = {1: 2437, 2: 724, 3: 226, 4: 102, 5: 20, 8: 8} +WIDTHS = {4: 26, 5: 2, 6: 18, 7: 52, 8: 97, 9: 213} +MOVES = ((591, 1045, 640, 644, 2, [423, 65, 20, 10]), + (641, 1085, 656, 660, -1, [427, 96, 24, 6])) +SOURCE_COMMITS = { + 3605: '3efbb5de06a49ffeea6684482f2d3fe48cdca3fb', + 3642: '044d24f12e74f228dd462c07ae2d7f3ea35e2be9', + 3653: '607a09ff441c79b215a8127a81f4cc70021d0d9b', + 3682: '431e6c6023ef352c41696469de7fb614cd4ded8c', + 3687: 'f798838eb8ede4178e94f240e7b7e54b3f80c82d', +} + + +def need(ok, message): + if not ok: + raise ValueError(message) + + +def authenticate(): + rows = json.loads((HERE / 'SOURCES.json').read_text())['snapshots'] + expected = {(3687, 'vendor/audit_core.py')} + for provider in ('base', 'extra'): + expected.update((number, f'inputs/{kind}-{provider}.json.gz') for number, kind in + ((3605, 'STAGED'), (3642, 'RETIMED'), (3653, 'RETIMED'), (3682, 'DELAYED'))) + keys = [(row['source_pr'], row['local']) for row in rows] + need(len(keys) == len(expected) and set(keys) == expected, 'source mapping inventory differs') + for row in rows: + need(row['source_commit'] == SOURCE_COMMITS[row['source_pr']], 'source commit differs') + raw = (HERE / row['local']).read_bytes() + need(len(raw) == row['bytes'], 'source byte length: ' + row['local']) + need(hashlib.sha256(raw).hexdigest() == row['sha256'], 'source SHA256: ' + row['local']) + blob = hashlib.sha1(b'blob ' + str(len(raw)).encode() + b'\0' + raw).hexdigest() + need(blob == row['git_blob'], 'source Git blob: ' + row['local']) + core = types.ModuleType('retained_audit_core') + path = HERE / 'vendor/audit_core.py' + # Execute the authenticated source bytes, without accepting a .pyc cache. + exec(compile(path.read_bytes(), str(path), 'exec'), core.__dict__) + return core + + +def load(kind, provider): + return json.loads(gzip.decompress((HERE / 'inputs' / f'{kind}-{provider}.json.gz').read_bytes())) + + +def events(w): + result = [] + for pos in range(len(w['B']) + 1): + result += [('warp', k, deepcopy(rec)) for k, rec in enumerate(w['warps']) if rec[0] == pos] + if pos < len(w['B']): + result.append(('gate', pos, deepcopy(w['B'][pos]))) + return result + + +def replace_events(w, seq): + result = deepcopy(w) + body, warps = [], [None] * len(w['warps']) + for kind, label, gate in seq: + gate = deepcopy(gate) + if kind == 'gate': + body.append(gate) + else: + gate[0] = len(body) + warps[label] = gate + need(all(rec is not None for rec in warps), 'lost warp in reconstruction') + result['B'], result['warps'] = body, warps + return result + + +def reconstruct(C, staged, kind): + """Literal prose recipes: adjacent shear swap, or move before first producer. + + This repeats the credited local structural arguments as an input control; + the new evidence is the full word calculation below. + """ + seq = events(staged) + for start, stop, donor, pivot, coefficient, frame in MOVES: + source = next(x for x in seq if x[:2] == ('gate', start)) + need(source[2] == ['add', donor, pivot, coefficient, 1, [429, 30]], 'source release') + if kind == 'RETIMED': + target = next(x for x in seq if x[:2] == ('gate', start + 1)) + need(target[2][0] == 'add' and target[2][2] == pivot, 'adjacent same-pivot shear') + need(not any(rec[0] == start + 1 for rec in staged['warps']), 'unexpected crossed warp') + where = seq.index(target) + 1 + else: + target = next(x for x in seq if x[:2] == ('gate', stop)) + writes = [i for i, g in enumerate(staged['B']) if i > start and g[1] == pivot] + need(writes[0] == stop, 'first producer cut') + where = seq.index(target) + changed = deepcopy(source[2]) + changed[-1] = frame + seq.insert(where, ('gate', -pivot, changed)) + seq.remove(source) + result = replace_events(staged, seq) + result['cleanup'] = C.derive_cleanup(result) + result['report']['local_profile'] = {str(k): v for k, v in RETIMED.items()} + return result + + +def semantics(C, w): + """All live and buffer inputs are symbols, with no zero-buffer assumption.""" + def endpoint(name, result): + bad_live, dirty_buffers, leaks, buffer_identity = result + need(not bad_live and not dirty_buffers and not leaks and buffer_identity, + name + ' endpoint: ' + repr(result)) + boundary = {} + rows = C.forward_rows(w, symbolic_buffers=True, + snapshot=lambda values: boundary.setdefault('defects', C.boundary_defects(w, values))) + endpoint('forward', C.endpoint_defects(w, rows)) + dual_rows = C.forward_rows(w, dual=True, symbolic_buffers=True) + endpoint('dual', C.endpoint_defects(w, dual_rows, dual=True)) + need(not boundary['defects'], 'cleanup boundary: ' + repr(boundary['defects'])) + pulled = C.transpose(C.reverse_columns(w)) + need(pulled == {r: row for r, row in rows.items() if row}, 'reverse pull-back differs from forward') + pre = C.transpose(C.reverse_columns(w, upto_cleanup=True)) + pre = {r: pre.get(r, {}) for r in set(pre) | set(range(C.N))} + need(not C.boundary_defects(w, pre), 'reverse cleanup-boundary contract') + live = C.N - len(w['removed']) + buffers = len(w['helper_final']) + need((live, buffers, len(rows)) == (632, 91, 723), 'complete symbolic domain') + # Endpoint expectations are derived by the retained checker: live x,y,h + # map to x,y+x,h; all private buffer symbols return unchanged. + return {'live_inputs': live, 'dirty_buffers': buffers, 'matrix_dimension': len(rows), + 'forward': 'PASS', 'dual': 'PASS', 'reverse_pullback_equals_forward': True, + 'cleanup_boundary_forward_and_reverse': 'PASS', + 'buffer_to_live_leaks': 0, 'buffer_self_map': 'identity', + 'nonzero_endpoint_terms': sum(len(row) for row in rows.values())} + + +def inspect(C, w, profile): + C.hygiene(w) + bill, widths, chain, _, _ = C.frame_bill(w) + need(bill == profile, 'computed profile differs') + need(w['report']['local_profile'] == {str(k): v for k, v in bill.items()}, 'declared profile differs') + need(widths == WIDTHS, 'helper widths differ') + need(w['cleanup'] == C.derive_cleanup(w), 'literal cleanup differs') + return {'semantics': semantics(C, w), 'profile': bill, 'widths': widths, + 'rank_mass': sum(r * n for r, n in bill.items())}, chain + + +def expect_rejection(C, fn, phrase): + try: + fn() + except (ValueError, C.AuditFailure) as exc: + need(phrase in str(exc), 'wrong rejection: ' + str(exc)) + return phrase + raise ValueError('mutant unexpectedly passed: ' + phrase) + + +def negative_controls(C, staged, w, kind): + controls = [] + for _, _, donor, pivot, _, _ in MOVES: + seq = events(w) + release = next(x for x in seq if x[0] == 'gate' and x[2][0] == 'add' and x[2][1:3] == [donor, pivot]) + for defect in ('omit', 'flip', 'cross_first_producer'): + changed = deepcopy(seq) + index = seq.index(release) + if defect == 'omit': + changed.pop(index) + elif defect == 'flip': + changed[index][2][3] *= -1 + else: + producer = next(x for x in changed[index + 1:] if x[0] == 'gate' and x[2][1] == pivot) + moved = changed.pop(index) + changed.insert(changed.index(producer) + 1, moved) + bad = replace_events(w, changed) + bad['cleanup'] = C.derive_cleanup(bad) + # Repair the literal inverse so stale cleanup is not the rejection. + reason = expect_rejection(C, lambda: semantics(C, bad), 'forward endpoint') + controls.append({'defect': defect, 'pivot': pivot, 'rejected_by': reason}) + old_cleanup = deepcopy(w) + old_cleanup['cleanup'] = staged['cleanup'] + # The inverse shears commute: this is a format failure, not a wrong operator. + semantic_control = semantics(C, old_cleanup) + need(old_cleanup['cleanup'] != C.derive_cleanup(old_cleanup), 'old cleanup unexpectedly literal') + controls.append({'defect': 'old_cleanup_order', 'semantics': semantic_control, + 'rejected_by': expect_rejection(C, lambda: inspect(C, old_cleanup, RETIMED), 'literal cleanup differs')}) + old_frames = deepcopy(w) + for gate in old_frames['B']: + if gate[0] == 'add' and gate[1:3] in ([640, 644], [656, 660]): + gate[-1] = [429, 30] + need(semantics(C, old_frames) == semantic_control, 'frame-only mutation changed operator') + if kind == 'RETIMED': + need(C.frame_bill(old_frames)[0] == STAGED, 'old frame control does not restore staged bill') + controls.append({'defect': 'old_release_frames', 'semantic_operator': 'PASS', + 'profile': STAGED, 'rejected_by': expect_rejection(C, lambda: inspect(C, old_frames, RETIMED), 'computed profile differs')}) + else: + # The later release encounters a donor that has already climbed, so + # the original rank-2 frame is now illegal, despite the same operator. + controls.append({'defect': 'old_release_frames', 'semantic_operator': 'PASS', + 'rejected_by': expect_rejection(C, lambda: inspect(C, old_frames, RETIMED), 'frame containment fails')}) + fake_report = deepcopy(w) + fake_report['report']['local_profile']['1'] += 1 + controls.append({'defect': 'wrong_declared_profile', 'rejected_by': + expect_rejection(C, lambda: inspect(C, fake_report, RETIMED), 'declared profile differs')}) + return controls + + +def run(C): + results = {} + for provider in ('base', 'extra'): + staged = load('STAGED', provider) + control, old_chain = inspect(C, staged, STAGED) + records = {'STAGED': control} + for kind in ('RETIMED', 'DELAYED'): + w = load(kind, provider) + need(reconstruct(C, staged, kind) == w, 'prose reconstruction differs: ' + kind) + record, chain = inspect(C, w, RETIMED) + deltas = {} + for register in set(chain) | set(old_chain): + before = Counter(d for _, d, _ in old_chain.get(register, []) if type(d) is int and d > 0) + after = Counter(d for _, d, _ in chain.get(register, []) if type(d) is int and d > 0) + delta = {r: after[r] - before[r] for r in set(after) | set(before) if after[r] != before[r]} + if delta: + deltas[register] = delta + need(deltas == {640: {1: -1, 2: -1, 3: 1}, 656: {1: -1, 2: -1, 3: 1}}, 'per-register invoice differs') + record['prose_reconstruction'] = 'exact complete JSON equality' + record['changed_register_bills'] = deltas + record['controls'] = negative_controls(C, staged, w, kind) + records[kind] = record + print('CHECKED', provider, kind, '723-register forward/dual/pull-back and 9 controls', flush=True) + results[provider] = records + return {'status': 'PASS_RETIMED_AND_DELAYED_WHOLE_WORD_AUDIT', + 'scope': 'Reused PR3687 interpreter; finite exact operator/frame audit only. No native Gaussian, owner, root, or complete supplier claim.', + 'providers': results} + + +if __name__ == '__main__': + need(sys.argv[1:] in ([], ['--write']), 'usage: verify.py [--write]') + C = authenticate() + result = run(C) + output = json.dumps(result, sort_keys=True, indent=2) + '\n' + if sys.argv[1:] == ['--write']: + (HERE / 'RESULT.json').write_text(output) + else: + need((HERE / 'RESULT.json').read_text() == output, 'committed result differs') + print(result['status']) diff --git a/research/staged544-neutral-two-edit/vendor/pr3886_retiming.py b/research/staged544-neutral-two-edit/vendor/pr3886_retiming.py new file mode 100644 index 0000000000..c33d7bbcdf --- /dev/null +++ b/research/staged544-neutral-two-edit/vendor/pr3886_retiming.py @@ -0,0 +1,269 @@ +# SPDX-License-Identifier: Apache-2.0 +"""Exact, fixed-neighbour single-ADD retiming relaxation. + +Chris R / Clear1nsight, with substantial OpenAI assistance. The BORROW-WORD +frame contract and scalar-retiming mechanism are credited in README.md. +This module does not import the retained auditor or a numerical optimiser. +""" +from bisect import bisect_left +from collections import Counter +from copy import deepcopy +from fractions import Fraction +from functools import lru_cache + + +def need(ok, message): + if not ok: + raise ValueError(message) + + +@lru_cache(maxsize=None) +def span(vectors): + points = {0} + for v in vectors: + need(type(v) is int and 0 <= v < 512, 'invalid frame vector') + points |= {x ^ v for x in tuple(points)} + return sum(1 << x for x in points) + + +@lru_cache(maxsize=None) +def basis(mask): + answer = [] + have = 1 + for v in range(1, 512): + if (mask >> v) & 1 and not (have >> v) & 1: + answer.append(v) + have = span(tuple(answer)) + need(have == mask, 'not a binary subspace') + return tuple(answer) + + +@lru_cache(maxsize=None) +def join(a, b): + return span(basis(a) + basis(b)) + + +@lru_cache(maxsize=None) +def rank(mask): + n = mask.bit_count() + need(n > 0 and n & (n - 1) == 0, 'invalid subspace cardinality') + return n.bit_length() - 1 + + +def contained(a, b): + return not a & ~b + + +def touched(gate): + return gate[1:3] if gate[0] == 'add' else gate[1:2] + + +def tracing(word): + """Own chronological trace; centre descent is NOT persistent state. + + A check node is a fixed boundary, not a charged instruction. The census + relaxes it to a virtual climb. Every legal witness has zero such charge. + """ + full = (1 << 512) - 1 + live = set(range(704)) - set(word['removed']) + start, end = {}, {} + for r in live: + if r < 112: + start[r], end[r] = span((word['ports'][r],)), full + elif r < 224: + p = word['ports'][r - 112] + start[r] = 1 + end[r] = sum(1 << x for x in range(512) if (x & p).bit_count() % 2 == 0) + else: + start[r], end[r] = 1, full + for r, fr in word['start_extra'].items(): + start[int(r)] = span(tuple(fr)) + for r, fr in word['helper_final'].items(): + end[int(r)] = span(tuple(fr)) + current = dict(start) + nodes = {r: [] for r in live} + where = {} + bill = Counter() + + def event(r, frame, address, kind='climb'): + before = current[r] + if kind != 'map': + need(contained(before, frame), 'source frame containment') + d = rank(frame) - rank(before) + if kind == 'check': + need(d == 0, 'source fixed boundary') + elif d: + bill[d] += 1 + if kind == 'climb': + where[(address, r)] = len(nodes[r]) + nodes[r].append((address, kind, before, frame)) + current[r] = frame + + for i, gate in enumerate(word['A']): + if gate[0] == 'warp': + event(gate[1], span(tuple(gate[3])), ('check-A', i), 'check') + event(gate[1], span(tuple(gate[4])), ('map-A', i), 'map') + else: + for r in touched(gate): + event(r, span(tuple(gate[-1])), ('A', i)) + levels = {112 + int(r): span(tuple(fr)) for r, fr in word['target_levels'].items()} + for r in range(112, 224): + event(r, levels.get(r, 1), ('target-cut', r), 'check') + for r, fr in zip(word['centers'], word['center_frames']): + u = span(tuple(fr)) + event(r, u, ('centre-cut', r), 'check') + served = {levels.get(g[1], 1) for g in word['cut'] if g[2] == r} + for v in sorted(served, key=lambda x: -rank(x)): + need(contained(v, u), 'centre nesting') + if rank(u) > rank(v): + bill[rank(u) - rank(v)] += 1 + u = v + # The main forward register remains at its declared centre entry. + warps = {} + for j, rec in enumerate(word['warps']): + warps.setdefault(rec[0], []).append((j, rec)) + for i in range(len(word['B']) + 1): + for j, rec in warps.get(i, []): + event(rec[1], span(tuple(rec[3])), ('check-B', j), 'check') + event(rec[1], span(tuple(rec[4])), ('map-B', j), 'map') + if i < len(word['B']): + gate = word['B'][i] + for r in touched(gate): + event(r, span(tuple(gate[-1])), ('B', i)) + for i, gate in enumerate(word['restore']): + for r in touched(gate): + event(r, span(tuple(gate[-1])), ('restore', i)) + for r in live: + event(r, end[r], ('end',)) + return nodes, where, dict(sorted(bill.items())) + + +def crosses(g, h): + """Sufficient exact scalar normal form, not all algebraic commutations.""" + if h[0] == 'add': + return g[1] != h[2] and h[1] != g[2] + return h[0] == 'scale' and h[2] != 0 + + +def segments(word, section): + if section == 'A': + cuts = [word['prelude_events'], len(word['A'])] + elif section == 'B': + cuts = sorted({0, len(word['B'])} | {rec[0] for rec in word['warps']}) + else: + cuts = [0, len(word[section])] + return list(zip(cuts, cuts[1:])) + + +def caps(delta): + return [sum(n * min(r, k) for r, n in enumerate(delta)) for k in range(1, 10)] + + +def all_power_nonnegative(delta): + """Sufficient exact certificate using decreasing positive curvatures.""" + values = caps(delta) + prefix = 0 + for value in values[:-1]: + prefix += value + if prefix < 0: + return False + return values[-1] == 0 + + +def census(word): + nodes, where, bill = tracing(word) + deltas = Counter() + counts = {} + for section in ('A', 'B', 'restore'): + gates = word[section] + count = 0 + for lo, hi in segments(word, section): + occurrences = {} + for i in range(lo, hi): + need(gates[i][0] in ('add', 'scale'), 'unexpected scalar segment') + for r in touched(gates[i]): + occurrences.setdefault(r, []).append(i) + for i in range(lo, hi): + g = gates[i] + if g[0] != 'add': + continue + lower = i + while lower > lo and crosses(g, gates[lower - 1]): + lower -= 1 + upper = i + 1 + while upper < hi and crosses(g, gates[upper]): + upper += 1 + removal = [0] * 10 + reduced, entries, exits = {}, {}, {} + for r in touched(g): + seq = nodes[r] + pos = where[((section, i), r)] + _, _, p, u = seq[pos] + need(pos + 1 < len(seq) and seq[pos + 1][1] != 'map', 'missing successor') + q = seq[pos + 1][3] + removal[rank(u) - rank(p)] -= 1 + removal[rank(q) - rank(u)] -= 1 + removal[rank(q) - rank(p)] += 1 + indices = occurrences[r] + reduced[r] = [x for x in indices if x != i] + entries[r] = seq[where[((section, indices[0]), r)]][2] + last = where[((section, indices[-1]), r)] + need(seq[last + 1][1] != 'map', 'missing exit check') + exits[r] = seq[last + 1][3] + for cut in range(lower, upper + 1): + if cut == i + 1: # Same placement as cut i, counted once. + continue + boundaries = [] + for r in touched(g): + indices = reduced[r] + j = bisect_left(indices, cut) + p = span(tuple(gates[indices[j - 1]][-1])) if j else entries[r] + q = span(tuple(gates[indices[j]][-1])) if j < len(indices) else exits[r] + boundaries.append((p, q)) + lower_frame = join(boundaries[0][0], boundaries[1][0]) + upper_frame = boundaries[0][1] & boundaries[1][1] + if not contained(lower_frame, upper_frame): + continue + dims = [(rank(p), rank(q)) for p, q in boundaries] + for d in range(rank(lower_frame), rank(upper_frame) + 1): + delta = removal.copy() + for p, q in dims: + delta[q - p] -= 1 + delta[d - p] += 1 + delta[q - d] += 1 + delta[0] = 0 + need(sum(r * n for r, n in enumerate(delta)) == 0, 'rank mass drift') + deltas[tuple(delta)] += 1 + count += 1 + counts[section] = count + return {'per_section': counts, 'candidates': sum(counts.values()), + 'source_profile': bill, + 'deltas': [{'delta': {r: n for r, n in enumerate(d) if n}, 'count': n, + 'caps': caps(d), 'certificate': all_power_nonnegative(d)} + for d, n in sorted(deltas.items())]} + + +def apply_move(word, section, index, cut, frame): + """Apply one exact scalar retiming. Caller must rederive cleanup and audit.""" + need(section in ('A', 'B', 'restore'), 'unknown section') + gates = word[section] + need(type(index) is int and 0 <= index < len(gates), 'bad source index') + need(type(cut) is int and 0 <= cut <= len(gates), 'bad insertion cut') + need(any(lo <= index < hi and lo <= cut <= hi for lo, hi in segments(word, section)), + 'crosses prelude or native warp boundary') + g = deepcopy(gates[index]) + need(g[0] == 'add', 'only ADD moves are covered') + crossed = gates[index + 1:cut] if cut > index else gates[cut:index] + need(all(crosses(g, h) for h in crossed), 'noncommuting scalar barrier') + coefficient = Fraction(g[3], g[4]) + for h in crossed: + if h[0] == 'scale' and h[1] in touched(g): + power = (1 if h[1] == g[1] else -1) * (1 if cut > index else -1) + coefficient *= Fraction(h[2], h[3]) ** power + g[3:5] = [coefficient.numerator, coefficient.denominator] + g[-1] = list(basis(span(tuple(frame)))) + result = deepcopy(word) + result[section].pop(index) + result[section].insert(cut - (cut > index), g) + # Segment length and all warp cuts are unchanged. No warp is crossed. + return result diff --git a/research/staged544-neutral-two-edit/verify.py b/research/staged544-neutral-two-edit/verify.py new file mode 100644 index 0000000000..57009d907d --- /dev/null +++ b/research/staged544-neutral-two-edit/verify.py @@ -0,0 +1,250 @@ +#!/usr/bin/env python3 +# SPDX-License-Identifier: Apache-2.0 +"""Source-bound finite two-edit replay; no network, Git, solver or native build.""" +import argparse +from collections import Counter +from copy import deepcopy +from fractions import Fraction as Q +import hashlib +import json +from pathlib import Path +import time +import types + +P=Path(__file__).resolve().parent + +def need(ok,why): + if not ok:raise ValueError(why) + +def authentic(raw,row): + need(len(raw)==row['bytes'],'source length: '+row['local']) + need(hashlib.sha256(raw).hexdigest()==row['sha256'],'source SHA256: '+row['local']) + need(hashlib.sha1(b'blob '+str(len(raw)).encode()+b'\0'+raw).hexdigest()==row['git_blob'], + 'source Git blob: '+row['local']) + +sources=json.loads((P/'SOURCES.json').read_text()) +for row in sources['snapshots']:authentic((P/row['local']).read_bytes(),row) +S=types.ModuleType('neutral_search');S.__file__=str(P/'search.py') +exec(compile((P/'search.py').read_bytes(),str(P/'search.py'),'exec'),S.__dict__) +R,C,A=S.R,S.C,S.A + +def normal(x):return json.loads(json.dumps(x,sort_keys=True)) + +def object_hash(x): + return hashlib.sha256(json.dumps(x,sort_keys=True,separators=(',',':')).encode()).hexdigest() + +def block_matrix(gates,registers=None): + """Own rational scalar-block check, independent of retained interpreters. + + Every input row is an independent symbol, so equality is on all dirty states. + Frames are checked separately; native gates are forbidden in this block. + """ + if registers is None:registers=sorted({r for g in gates for r in (g[1:3] if g[0]=='add' else g[1:2])}) + rows={r:{r:Q(1)} for r in registers} + for g in gates: + if g[0]=='scale': + q=Q(g[2],g[3]);need(q!=0,'zero scalar') + rows[g[1]]={k:v*q for k,v in rows[g[1]].items()} + else: + need(g[0]=='add' and g[1]!=g[2],'non-scalar block or self ADD') + q=Q(g[3],g[4]);need(q!=0,'zero ADD') + for k,v in rows[g[2]].items(): + z=rows[g[1]].get(k,0)+q*v + if z:rows[g[1]][k]=z + else:rows[g[1]].pop(k,None) + return [[str(rows[r].get(c,0)) for c in registers] for r in registers] + +def block_equal(before,after): + regs=sorted({r for g in before+after for r in (g[1:3] if g[0]=='add' else g[1:2])}) + b,a=block_matrix(before,regs),block_matrix(after,regs) + need(a==b,'arbitrary-dirty scalar block differs') + return {'registers':regs,'matrix_sha256':object_hash(a)} + +def first_block(w,new,rec): + lo=min(rec['index'],rec['cut']);hi=max(rec['index']+1,rec['cut']) + return block_equal(w[rec['section']][lo:hi],new[rec['section']][lo:hi]) + +def summarize(report,keep_first=False): + totals=Counter() + for state in report['states']: + for row in state['deltas']: + d=tuple(row['delta']);need(R.all_power_nonnegative(d),'uncertified second delta') + need(sum(k*n for k,n in enumerate(d))==0,'rank mass drift') + totals[d]+=row['count'] + need(not report['gains'],'improving or uncertified literal candidate remains') + need(report['counts'].get('uncertified_prices',0)==0,'unresolved relaxed price') + rows=[{'delta':{str(k):n for k,n in enumerate(d) if n},'count':n, + 'caps':R.caps(d),'prefix_caps':[sum(R.caps(d)[:j]) for j in range(1,9)]} + for d,n in sorted(totals.items())] + result={'counts':dict(report['counts']),'delta_types':rows, + 'ordered_state_sha256':object_hash(report['states'])} + if keep_first:result['first_edits']=[x['first'] for x in report['states']] + return result + +def rejects(fn,label): + try:fn() + except (ValueError,C.AuditFailure):return label + raise ValueError('control accepted: '+label) + +def ledger(w): + bill,widths,chain,start,end=C.frame_bill(w) + need(R.tracing(w)[2]==bill,'independent chronological bill') + need(w['cleanup']==C.derive_cleanup(w),'source cleanup differs') + C.hygiene(w) + primitive={sec:dict(sorted(Counter(g[0] for g in w[sec]).items())) for sec in + ('precondition','compensation','A','cut','B','restore','cleanup')} + inherited=json.loads((P/'inputs/PROFILE.json').read_text()) + return {'local_profile':bill,'local_recursive_children':sum(bill.values()), + 'local_rank_mass':sum(r*n for r,n in bill.items()),'helper_width_inventory':widths, + 'helper_roles':sum(widths.values()),'live_inputs':C.N-len(w['removed']), + 'dirty_buffers':len(w['helper_final']),'primitive_inventory':primitive, + 'native_B_maps':len(w['warps']),'initial_operator_corrections':len(w['initial_corrections']), + 'extra_scalar_gates':0,'extra_helpers':0,'extra_dirty_buffers':0, + 'entrance_frame_sha256':object_hash({str(k):str(v) for k,v in start.items()}), + 'exit_frame_sha256':object_hash({str(k):str(v) for k,v in end.items()}), + 'inherited_outer_profile':inherited, + 'inherited_outer_profile_status':'Authenticated source only; not freshly reconstructed or admitted.', + 'proved_obligations':['Exact local chronological recursive invoice including centre descents and final climbs', + 'Fixed primitive counts, native maps/cuts, role and buffer counts', + 'Every admitted first-edit scalar block on arbitrary dirty inputs', + 'Full 723-input first-word and positive-control operator/cleanup checks'], + 'unknown_obligations':['Fresh native Gaussian/Clifford realization', + 'Fresh physical hosting and global allocation/owner chronology', + 'Uniform coefficient/precision/tape and bit-operation costs', + 'All-size/compiler and full outer/supplier admission','Analytic transfer and BIT H1-H5'], + 'unknown_costs_are_zero':False,'new_supplier_or_kappa':False} + +def positive_control(w): + old=deepcopy(w);g,h=old['A'][4043:4045] + need(g[:5]==['add',81,40,1,1] and h[:5]==['add',81,17,1,1],'control source drift') + old['A'][4043:4045]=[h[:-1]+[g[-1]],g] + old['cleanup']=C.derive_cleanup(old) + mid=R.apply_move(old,'A',4043,4045,g[-1]);mid['cleanup']=C.derive_cleanup(mid) + new=R.apply_move(mid,'A',4044,4044,h[-1]);new['A'][4044][-1]=deepcopy(h[-1]) + new['cleanup']=C.derive_cleanup(new) + before=C.frame_bill(old)[0];middle=C.frame_bill(mid)[0];after=C.frame_bill(new)[0] + need(before==middle,'positive first edit not neutral') + need(after==C.frame_bill(w)[0] and new==w,'positive recovery not literal source') + delta=tuple([0]+[after.get(k,0)-before.get(k,0) for k in range(1,10)]) + need(delta==(0,1,-1,-1,1,0,0,0,0,0),'positive control invoice') + need(not R.all_power_nonnegative(delta),'known profitable second edit excluded') + matches=[r for r in S.placements(mid,gate_filter=lambda s,i,g:s=='A' and i==4044, + sections=('A',),target_cut=4044) if tuple(r['delta'])==delta] + need(matches,'enumerator missed profitable frame-only second step') + block_equal(old['A'][4043:4045],mid['A'][4043:4045]) + semantics={name:A.semantics(C,value) for name,value in [('rollback',old),('neutral_middle',mid),('recovered',new)]} + return {'before_profile':before,'neutral_profile':middle,'after_profile':after, + 'delta':delta,'semantics':semantics,'credit':'Jeremy Kothe PR2957, recovered in PR3886; already in baseline'},mid + +def controls(w): + result=[];row=sources['snapshots'][0] + result.append(rejects(lambda:authentic((P/row['local']).read_bytes()+b'x',row),'source byte drift')) + bad=deepcopy(w);bad['A'][4044][3]*=-1;bad['cleanup']=C.derive_cleanup(bad) + result.append(rejects(lambda:A.semantics(C,bad),'wrong scalar after refreshed cleanup')) + bad=deepcopy(w);bad['A'][4044][-1]=[] + result.append(rejects(lambda:C.frame_bill(bad),'illegal gate frame')) + bad=deepcopy(w);bad['cleanup']=bad['cleanup'][1:] + result.append(rejects(lambda:A.semantics(C,bad),'omitted cleanup on arbitrary dirt')) + bad=deepcopy(w);bad['report']['local_profile']['1']+=1 + result.append(rejects(lambda:need(C.frame_bill(bad)[0]=={int(k):v for k,v in bad['report']['local_profile'].items()},'invoice differs'),'false declared invoice')) + i=next(i for i in range(w['prelude_events'],len(w['A'])-1) + if w['A'][i][0]=='add' and not R.crosses(w['A'][i],w['A'][i+1])) + result.append(rejects(lambda:R.apply_move(w,'A',i,i+2,w['A'][i][-1]),'noncommuting scalar barrier')) + pair=[['add',0,1,1,1,[]],['add',1,2,1,1,[]]] + result.append(rejects(lambda:block_equal(pair,list(reversed(pair))),'own dirty-block checker rejects noncommuting swap')) + need(not R.all_power_nonnegative((0,1,-2,1,0,0,0,0,0,0)),'profitable target has false sign certificate') + result.append('profitable 2+2 to 1+3 rejected by non-improvement certificate') + return result + +def verify_provider(tag,full_dirty=True): + w=S.load(tag);t=time.monotonic();base=R.census(w) + need(base['candidates']==1776295 and len(base['deltas'])==19,'baseline census drift') + need(all(x['certificate'] for x in base['deltas']),'baseline sign failure') + own=Counter(tuple(x['delta']) for x in S.placements(w)) + expected=Counter({tuple([0]+[x['delta'].get(k,0) for k in range(1,10)]):x['count'] for x in base['deltas']}) + need(own==expected,'new enumerator does not reproduce full baseline census') + print('BASELINE_BOUND',tag,base['candidates'],flush=True) + zero=[x for x in S.placements(w,max_distance=2) if not any(x['delta'])] + need(all(len(x['frame']) in (x['lower_dim'],x['upper_dim']) for x in zero),'unsampled interior neutral first subspace') + frame=S.explore(tag,write=False,progress=False) + print('FRAME_SECOND_PRICES',tag,frame['counts']['second_prices'],flush=True) + pair=S.adjacent_pairs(tag,write=False,progress=False) + print('SWAPPED_GATE_SECOND_PRICES',tag,pair['counts']['second_prices'],flush=True) + novel=S.adjacent_novel_cuts(tag,write=False,progress=False) + print('THIRD_GATE_MIDDLE_PRICES',tag,novel['counts']['second_prices'],flush=True) + need(pair['counts']['legal_first']==novel['counts']['legal_first'],'adjacent start inventory differs') + need([(s['section'],s['left_index']) for s in pair['states']]==[(s['section'],s['left_index']) for s in novel['states']], + 'adjacent start ordering differs') + first_checks=[] + for j,state in enumerate(frame['states']): + rec=state['first'];new=S.apply(w,rec);new['cleanup']=C.derive_cleanup(new) + block=first_block(w,new,rec) + C.hygiene(new) + need(C.frame_bill(new)[:2]==C.frame_bill(w)[:2],'first local invoice/inventory drift') + need(new['report']['local_profile']==w['report']['local_profile'],'first declared invoice drift') + semantic=A.semantics(C,new) if full_dirty else {'status':'compositional: exact local dirty-block equality plus full baseline replay'} + first_checks.append({'first':rec,'literal_word_sha256':S.digest(new),'block':block,'semantics':semantic}) + if (j+1)%20==0:print('DIRTY_FIRST_WORDS',tag,j+1,len(frame['states']),flush=True) + trace=R.tracing(w);pair_blocks=[];trace_controls=0;bounds=S.corridor_bounds(w) + for serial,state in enumerate(pair['states']): + sec,i=state['section'],state['left_index'];g,h=w[sec][i:i+2] + block=block_equal([g,h],[h,g]);pair_blocks.append([sec,i,block]) + if serial%101==0 or serial==len(pair['states'])-1: + new=w.copy();new[sec]=w[sec].copy();new[sec][i:i+2]=[h,g] + need(S.adjacent_trace(w,trace,sec,i)==R.tracing(new),'incremental trace differs') + need(C.frame_bill(new)[:2]==C.frame_bill(w)[:2],'retained adjacent auditor differs') + # Check the optimized third-gate reach filter against the unrestricted + # enumerator at precisely this middle cut, including all dimensions. + lo,hi=next((lo,hi) for lo,hi in R.segments(w,sec) if lo<=i=i and R.crosses(k,h)) if j Date: Mon, 19 Oct 2026 16:36:41 +1100 Subject: [PATCH 2/2] Fix inherited P112 workflow context validation Reuse the reviewed one-file P112 parser repair now merged in fork PR8. Initialize TMPDIR from RUNNER_TEMP in a first step rather than using runner context in job env. Preserve all research files and frozen scientific inputs, manual trigger, repository guard, permissions, action pins and pass criteria. Validated YAML and exact semantic delta against the approved workflow blob. Substantial OpenAI assistance. --- .github/workflows/p112-common-slice.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/p112-common-slice.yml b/.github/workflows/p112-common-slice.yml index 37f99ca573..48047f61c4 100644 --- a/.github/workflows/p112-common-slice.yml +++ b/.github/workflows/p112-common-slice.yml @@ -15,9 +15,9 @@ jobs: if: github.repository == 'CrocSwap/integer-mult-bounds' runs-on: ubuntu-24.04 timeout-minutes: 20 - env: - TMPDIR: ${{ runner.temp }}/p112-common-slice steps: + - name: Initialise P112 work directory + run: echo "TMPDIR=$RUNNER_TEMP/p112-common-slice" >> "$GITHUB_ENV" - uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 with: fetch-depth: 0