From abc12f62e4fe9bfcb2e33c84703253c918668351 Mon Sep 17 00:00:00 2001 From: roger-sato Date: Sun, 18 Oct 2026 21:28:43 +0900 Subject: [PATCH 1/4] Improve conditional T530 kappa through commuting release retiming --- .../.gitattributes | 2 + .../staged-release-retiming-t530/CREDITS.md | 11 + .../staged-release-retiming-t530/PROOF.md | 115 + .../PUBLIC-VALIDATION.json | 48 + .../staged-release-retiming-t530/README.md | 73 + .../staged-release-retiming-t530/SOURCES.json | 96 + .../staged-release-retiming-t530/TASK.json | 71 + .../staged-release-retiming-t530/VERIFY.json | 34 + .../full-admission/ARCHIVE-OMISSIONS.json | 17 + .../full-admission/LICENSE | 201 + .../full-admission/MAIN-INPUTS.json | 546 + .../full-admission/NOTICE | 415 + .../full-admission/PUBLIC-PINS.json | 189 + .../full-admission/PUBLIC-PROVENANCE.json | 877 + .../full-admission/README.md | 98 + .../full-admission/check_recorded_summary.py | 211 + .../data/RETIME-AUDIT-base.json | 41 + .../data/RETIME-AUDIT-extra.json | 41 + .../data/RETIMED-RECORD-base.json | 161 + .../data/RETIMED-RECORD-extra.json | 161 + .../data/RETIMED644-660-base.json.gz | Bin 0 -> 72575 bytes .../data/RETIMED644-660-extra.json.gz | Bin 0 -> 72574 bytes .../data/STAGED644-660-base.json.gz | Bin 0 -> 72570 bytes .../data/STAGED644-660-extra.json.gz | Bin 0 -> 72568 bytes .../evidence/ADMISSION-COMMAND.json | 33 + .../evidence/ADMISSION-RESULT.json | 382 + .../evidence/ADMISSION-STAGES.json | 113 + .../full-admission/evidence/ASSEMBLY.json | 515 + .../evidence/CONTROLLER-AUDIT.json | 104 + .../full-admission/evidence/DERIVATION.json | 59 + .../evidence/GEOMETRY-CONTROLS.json | 29 + .../evidence/INHERITED-RUNTIME-PATCHES.json | 225 + .../evidence/NATIVE-ENVIRONMENT.json | 13 + .../evidence/NATIVE-NATIVE-RECEIPT.json | 113 + .../evidence/NATIVE-RESULT.json | 41 + .../evidence/NATIVE-STAGES.json | 32 + .../full-admission/evidence/OWNER-AUDIT.json | 68 + .../evidence/PACKAGE-MANIFEST.json | 660 + .../evidence/PARENT-SOURCE-MANIFEST.json | 650 + .../evidence/PORTABLE-SOURCE-CHECK.json | 57 + .../evidence/PREFIX-AND-INVOICE.json | 72718 ++++++++++++++++ .../PUBLIC-SOURCE-REBUILD-RESULT.json | 30 + .../evidence/PUBLIC-SUMMARY-CONTROLS.json | 22 + .../evidence/RELEASE-RECEIPT.json | 7 + .../evidence/RETAINED-REUSE-RECEIPT.json | 113 + .../evidence/RETIMING-COMPLETE-RELEASE.json | 17 + .../evidence/SOURCE-MANIFEST.json | 656 + .../evidence/STAGE-SCRIPT-BINDINGS.json | 9 + .../evidence/STRICT-STAGES.json | 50 + .../evidence/SUPPLIER-RESULT.json | 140 + .../evidence/SUPPLIER-STAGES.json | 116 + .../evidence/logs/discovery.log | 8 + .../evidence/logs/outer-check_ledger.py.log | 2 + .../logs/outer-independent_check.py.log | 43 + .../full-admission/evidence/logs/owners.log | 1 + .../evidence/logs/parent-lift.log | 1 + .../full-admission/evidence/logs/rebind.log | 1 + .../full-admission/evidence/logs/release.log | 2 + .../evidence/native-base-RESULT.json | 55 + .../full-admission/evidence/native-base.log | 6 + .../evidence/native-extra-RESULT.json | 55 + .../full-admission/evidence/native-extra.log | 6 + .../native-logs/base/ledgers-bw_emit.py.log | 2 + .../base/local-replay-bw_audit_local.py.log | 3 + .../base/native-bw_transport.py.log | 28 + .../base/phases-bw_check_recipes.py.log | 1 + .../native-logs/base/phases-bw_phases.py.log | 17 + .../base/wrappers-bw_adapters.py.log | 1 + .../native-logs/extra/ledgers-bw_emit.py.log | 2 + .../extra/local-replay-bw_audit_local.py.log | 3 + .../extra/native-bw_transport.py.log | 28 + .../extra/phases-bw_check_recipes.py.log | 1 + .../native-logs/extra/phases-bw_phases.py.log | 17 + .../extra/wrappers-bw_adapters.py.log | 1 + .../CACHE.json | 17 + .../STEPS.json | 27 + .../local/INDEPENDENT-LOCAL-REPLAY.json | 154 + .../local/LOCAL-CHECKS.json | 40 + .../CACHE.json | 17 + .../STEPS.json | 27 + .../local/INDEPENDENT-LOCAL-REPLAY.json | 154 + .../local/LOCAL-CHECKS.json | 40 + .../CACHE.json | 21 + .../STEPS.json | 27 + .../local/INDEPENDENT-LOCAL-REPLAY.json | 71 + .../local/LOCAL-CHECKS.json | 36 + .../RECEIPT.json | 13 + .../RESULT.json | 118 + .../STAGES.json | 98 + .../CACHE.json | 21 + .../STEPS.json | 27 + .../local/INDEPENDENT-LOCAL-REPLAY.json | 71 + .../local/LOCAL-CHECKS.json | 36 + .../evidence/portable-STAGES.json | 57 + .../evidence/portable-new-retiming-review.log | 1 + .../portable-preserved-staged-review.log | 1 + .../evidence/release-logs/outer.log | 7 + .../evidence/release-logs/verify.log | 20 + .../evidence/retained-parent-CLAIM.json | 10 + .../evidence/runtime-summary/CLAIM.json | 18 + .../evidence/runtime-summary/new/SPEC.json | 44121 ++++++++++ .../evidence/runtime-summary/outer/B.json | 14 + .../runtime-summary/outer/LEDGER.json | 575 + .../runtime-summary/outer/OUTER-CLAIM.json | 13 + .../evidence/stage-scripts/discovery.py | 32 + .../stage-scripts/outer-check_ledger.py.py | 260 + .../outer-independent_check.py.py | 60 + .../evidence/stage-scripts/owners.py | 66 + .../evidence/stage-scripts/parent-lift.py | 96 + .../evidence/stage-scripts/rebind.py | 59 + .../evidence/stage-scripts/release.py | 203 + .../evidence/strict-logs/admission.log | 1 + .../evidence/strict-logs/assembly.log | 1 + .../evidence/strict-logs/audit.log | 104 + .../evidence/strict-logs/bind.log | 1 + .../evidence/strict-logs/bit.log | 1 + .../evidence/strict-logs/emit.log | 58 + .../evidence/strict-logs/independent.log | 1 + .../evidence/strict-logs/invoice.log | 36 + .../supplier-logs/audit-local-566-base.log | 139 + .../supplier-logs/audit-local-566-extra.log | 139 + .../supplier-logs/declared-edit-review.log | 1 + .../supplier-logs/fine-engine-oracle.log | 1 + .../supplier-logs/geometry-controls.log | 1 + .../evidence/supplier-logs/lemmag-labels.log | 1 + .../evidence/supplier-logs/lift-parent.log | 1 + .../supplier-logs/paired-extension-review.log | 161 + .../preload-move-independent-review.log | 111 + .../evidence/supplier-logs/rebind-566.log | 1 + .../supplier-logs/rebuild-borrow-words.log | 19 + .../supplier-logs/rebuild-words-566.log | 4 + .../supplier-logs/reconstruct-owners.log | 1 + .../shared-kernel-independent-review.log | 131 + .../staged-release-retime-review.log | 1 + .../supplier-logs/staged3605-review.log | 1 + .../evidence/supplier-logs/strict-t74.log | 9 + .../two-sided-helper408-review.log | 183 + .../full-admission/reproduce.py | 78 + .../full-admission/scripts/admit_extension.py | 419 + .../scripts/admit_extension.py.patch | 11 + .../full-admission/scripts/integrate.py | 87 + .../scripts/prepare_extension_native.py | 76 + .../scripts/prepare_extension_native.py.patch | 15 + .../full-admission/test_recorded_summary.py | 83 + .../vendor/PR3626-FETCH-PINS.json | 80 + .../full-admission/vendor/PR3626-INPUTS.json | 53 + .../vendor/staged-width-t530/CLAIM.json | 27 + .../vendor/staged-width-t530/CREDITS.md | 7 + .../vendor/staged-width-t530/EXPECTED.json | 24 + .../vendor/staged-width-t530/FRONTIER.json | 27 + .../vendor/staged-width-t530/PROOF.md | 13 + .../vendor/staged-width-t530/README.md | 33 + .../staged-width-t530/owners/ARTIFACTS.json | 24 + .../staged-width-t530/owners/CANDIDATE.json | 34257 ++++++++ .../owners/DEPENDENCIES.json | 32 + .../staged-width-t530/owners/DISPATCH37.json | 1 + .../staged-width-t530/owners/EXPECTED.json | 24 + .../staged-width-t530/owners/INPUT-PINS.json | 13 + .../staged-width-t530/owners/ORDER37.json | 1 + .../staged-width-t530/owners/PROVIDERS.json | 1 + .../staged-width-t530/owners/README.txt | 7 + .../staged-width-t530/owners/SOURCE-PINS.json | 27 + .../owners/T16-DISPATCH.json | 1 + .../staged-width-t530/owners/T16-ORDER.json | 1 + .../owners/T16-PROVENANCE.json | 21 + .../owners/UPSTREAM-PROOF.md | 159 + .../owners/UPSTREAM-SOURCE-CREDITS.md | 19 + .../owners/UPSTREAM-SOURCE-NOTICE | 28 + .../owners/independent_literal.py | 128 + .../owners/integral_network.py | 92 + .../owners/portable_expand.py | 126 + .../owners/source_context.py | 32 + .../owners/test_owner_guards.py | 22 + .../owners/verify_candidate.py | 45 + .../staged-width-t530/owners/verify_owner.py | 19 + .../vendor/staged-width-t530/replay.py | 67 + .../staged-width-t530/source_builder.py | 90 + .../supplier3605/ARTIFACTS.json | 6 + .../staged-width-t530/supplier3605/PROOF.md | 224 + .../staged-width-t530/supplier3605/README.md | 72 + .../supplier3605/SOURCES.json | 144 + .../STAGED-PAIR-RECORD-base.json.gz | Bin 0 -> 660 bytes .../STAGED-PAIR-RECORD-extra.json.gz | Bin 0 -> 661 bytes .../supplier3605/STAGED644-660-base.json.gz | Bin 0 -> 72570 bytes .../supplier3605/STAGED644-660-extra.json.gz | Bin 0 -> 72568 bytes .../staged-width-t530/supplier3605/TASK.json | 66 + .../supplier3605/VALIDATION.json | 513 + .../supplier3605/VERIFY.json | 55 + .../supplier3605/check_residual.py | 52 + .../supplier3605/check_scope.py | 135 + .../supplier3605/staged_pair.py | 86 + .../staged-width-t530/supplier3605/verify.py | 108 + .../templates/prepare_extension_native.py | 76 + .../local-audit/LICENSE | 201 + .../local-audit/MANIFEST.json | 34 + .../local-audit/NATIVE-LINEAGE-NOTICE | 14 + .../local-audit/PUBLIC-INPUTS.json | 5 + .../local-audit/PUBLICATION-PROVENANCE.json | 54 + .../local-audit/README.md | 73 + .../local-audit/SOURCE-PINS.json | 15 + .../local-audit/check_retiming_independent.py | 140 + .../local-audit/check_retiming_negative.py | 40 + .../receipts/native-base/COMMANDS.json | 85 + .../receipts/native-base/RESULT.json | 55 + .../local/INDEPENDENT-LOCAL-REPLAY.json | 154 + .../native/local/LOCAL-CHECKS.json | 40 + .../native/local/SCALAR-FRAME-AUDIT.json | 438 + .../native/local/WARP-RECIPE-CHECKS.json | 23 + .../native/local/WRAPPER-CHECKS.json | 962 + .../receipts/native-extra/COMMANDS.json | 85 + .../receipts/native-extra/RESULT.json | 55 + .../local/INDEPENDENT-LOCAL-REPLAY.json | 154 + .../native/local/LOCAL-CHECKS.json | 40 + .../native/local/SCALAR-FRAME-AUDIT.json | 438 + .../native/local/WARP-RECIPE-CHECKS.json | 23 + .../native/local/WRAPPER-CHECKS.json | 962 + .../local-audit/vendor/SOURCE-CREDITS.md | 19 + .../local-audit/vendor/SOURCE-NOTICE | 28 + .../local-audit/vendor/audit_local.py | 501 + .../local-audit/verify.py | 64 + .../words/RETIMED644-660-base.json.gz | Bin 0 -> 72575 bytes .../words/RETIMED644-660-extra.json.gz | Bin 0 -> 72574 bytes .../words/STAGED644-660-base.json.gz | Bin 0 -> 72570 bytes .../words/STAGED644-660-extra.json.gz | Bin 0 -> 72568 bytes .../numerics/INPUT-SHA256.json | 19 + .../numerics/PROVENANCE.json | 8 + .../numerics/PUBLIC-INPUTS.json | 5 + .../numerics/PUBLICATION-PROVENANCE.json | 28 + .../numerics/README.md | 21 + .../numerics/recorded/MOMENT.json | 59 + .../numerics/recorded/outer/CLAIM.json | 4 + .../numerics/recorded/outer/RESULT.json | 11 + .../numerics/recorded/outer/new/SPEC.json | 23 + .../numerics/recorded/outer/outer/B.json | 14 + .../recorded/outer/outer/INDEPENDENT.json | 43 + .../numerics/recorded/outer/outer/LEDGER.json | 575 + .../recorded/outer/outer/check_ledger.py | 260 + .../recorded/outer/outer/independent_check.py | 60 + .../numerics/run.py | 16 + .../numerics/t530/CREDITS.md | 7 + .../numerics/t530/EXPECTED.json | 24 + .../numerics/t530/PROOF.md | 13 + .../numerics/t530/evidence/RESULT.json | 382 + .../numerics/t530/price.py | 77 + .../supplier3605/STAGED644-660-base.json.gz | Bin 0 -> 72570 bytes .../supplier3605/STAGED644-660-extra.json.gz | Bin 0 -> 72568 bytes .../outer/check_ledger.py | 258 + .../outer/independent_check.py | 60 + .../arith.py | 133 + .../numerics/verify_moment.py | 53 + .../numerics/verify_outer.py | 39 + .../words/RETIMED644-660-base.json.gz | Bin 0 -> 72575 bytes .../words/RETIMED644-660-extra.json.gz | Bin 0 -> 72574 bytes .../owner-audit/DERIVATION.json | 14 + .../owner-audit/PUBLIC-INPUTS.json | 43 + .../owner-audit/PUBLIC-PROVENANCE.json | 23 + .../owner-audit/README.md | 46 + .../owner-audit/RESULT.json | 41 + .../owner-audit/evidence/FRESH-RESULT.json | 41 + .../owner-audit/evidence/FRESH-RUN.json | 21 + .../owner-audit/independent_literal.py | 129 + .../checked-base/CANONICAL-WORD.json.gz | Bin 0 -> 84192 bytes .../checked-extra/CANONICAL-WORD.json.gz | Bin 0 -> 84194 bytes .../owner-audit/run.py | 63 + .../owner-audit/upstream/ARTIFACTS.json | 24 + .../owner-audit/upstream/CANDIDATE.json | 34257 ++++++++ .../owner-audit/upstream/DEPENDENCIES.json | 32 + .../owner-audit/upstream/DISPATCH37.json | 1 + .../owner-audit/upstream/EXPECTED.json | 24 + .../owner-audit/upstream/INPUT-PINS.json | 13 + .../owner-audit/upstream/ORDER37.json | 1 + .../owner-audit/upstream/PROVIDERS.json | 1 + .../owner-audit/upstream/README.txt | 7 + .../owner-audit/upstream/SOURCE-PINS.json | 27 + .../owner-audit/upstream/T16-DISPATCH.json | 1 + .../owner-audit/upstream/T16-ORDER.json | 1 + .../owner-audit/upstream/T16-PROVENANCE.json | 21 + .../owner-audit/upstream/UPSTREAM-PROOF.md | 159 + .../upstream/UPSTREAM-SOURCE-CREDITS.md | 19 + .../upstream/UPSTREAM-SOURCE-NOTICE | 28 + .../upstream/independent_literal.py | 128 + .../owner-audit/upstream/integral_network.py | 92 + .../owner-audit/upstream/portable_expand.py | 126 + .../owner-audit/upstream/source_context.py | 32 + .../owner-audit/upstream/test_owner_guards.py | 22 + .../owner-audit/upstream/verify_candidate.py | 45 + .../owner-audit/upstream/verify_owner.py | 19 + .../packing-cap/PUBLIC-INPUTS.json | 5 + .../packing-cap/PUBLICATION-PROVENANCE.json | 22 + .../packing-cap/README.md | 68 + .../packing-cap/RETIMED-PACKING-CAP.json | 112 + .../packing-cap/cap-source/binomial.py | 39 + .../cap-source/pr3630-check_budget.py | 121 + .../packing-cap/check_retimed_cap.py | 107 + .../staged-release-retiming-t530/verify.py | 101 + 295 files changed, 209177 insertions(+) create mode 100644 research/staged-release-retiming-t530/.gitattributes create mode 100644 research/staged-release-retiming-t530/CREDITS.md create mode 100644 research/staged-release-retiming-t530/PROOF.md create mode 100644 research/staged-release-retiming-t530/PUBLIC-VALIDATION.json create mode 100644 research/staged-release-retiming-t530/README.md create mode 100644 research/staged-release-retiming-t530/SOURCES.json create mode 100644 research/staged-release-retiming-t530/TASK.json create mode 100644 research/staged-release-retiming-t530/VERIFY.json create mode 100644 research/staged-release-retiming-t530/full-admission/ARCHIVE-OMISSIONS.json create mode 100644 research/staged-release-retiming-t530/full-admission/LICENSE create mode 100644 research/staged-release-retiming-t530/full-admission/MAIN-INPUTS.json create mode 100644 research/staged-release-retiming-t530/full-admission/NOTICE create mode 100644 research/staged-release-retiming-t530/full-admission/PUBLIC-PINS.json create mode 100644 research/staged-release-retiming-t530/full-admission/PUBLIC-PROVENANCE.json create mode 100644 research/staged-release-retiming-t530/full-admission/README.md create mode 100644 research/staged-release-retiming-t530/full-admission/check_recorded_summary.py create mode 100644 research/staged-release-retiming-t530/full-admission/data/RETIME-AUDIT-base.json create mode 100644 research/staged-release-retiming-t530/full-admission/data/RETIME-AUDIT-extra.json create mode 100644 research/staged-release-retiming-t530/full-admission/data/RETIMED-RECORD-base.json create mode 100644 research/staged-release-retiming-t530/full-admission/data/RETIMED-RECORD-extra.json create mode 100644 research/staged-release-retiming-t530/full-admission/data/RETIMED644-660-base.json.gz create mode 100644 research/staged-release-retiming-t530/full-admission/data/RETIMED644-660-extra.json.gz create mode 100644 research/staged-release-retiming-t530/full-admission/data/STAGED644-660-base.json.gz create mode 100644 research/staged-release-retiming-t530/full-admission/data/STAGED644-660-extra.json.gz create mode 100644 research/staged-release-retiming-t530/full-admission/evidence/ADMISSION-COMMAND.json create mode 100644 research/staged-release-retiming-t530/full-admission/evidence/ADMISSION-RESULT.json create mode 100644 research/staged-release-retiming-t530/full-admission/evidence/ADMISSION-STAGES.json create mode 100644 research/staged-release-retiming-t530/full-admission/evidence/ASSEMBLY.json create mode 100644 research/staged-release-retiming-t530/full-admission/evidence/CONTROLLER-AUDIT.json create mode 100644 research/staged-release-retiming-t530/full-admission/evidence/DERIVATION.json create mode 100644 research/staged-release-retiming-t530/full-admission/evidence/GEOMETRY-CONTROLS.json create mode 100644 research/staged-release-retiming-t530/full-admission/evidence/INHERITED-RUNTIME-PATCHES.json create mode 100644 research/staged-release-retiming-t530/full-admission/evidence/NATIVE-ENVIRONMENT.json create mode 100644 research/staged-release-retiming-t530/full-admission/evidence/NATIVE-NATIVE-RECEIPT.json create mode 100644 research/staged-release-retiming-t530/full-admission/evidence/NATIVE-RESULT.json create mode 100644 research/staged-release-retiming-t530/full-admission/evidence/NATIVE-STAGES.json create mode 100644 research/staged-release-retiming-t530/full-admission/evidence/OWNER-AUDIT.json create mode 100644 research/staged-release-retiming-t530/full-admission/evidence/PACKAGE-MANIFEST.json create mode 100644 research/staged-release-retiming-t530/full-admission/evidence/PARENT-SOURCE-MANIFEST.json create mode 100644 research/staged-release-retiming-t530/full-admission/evidence/PORTABLE-SOURCE-CHECK.json create mode 100644 research/staged-release-retiming-t530/full-admission/evidence/PREFIX-AND-INVOICE.json create mode 100644 research/staged-release-retiming-t530/full-admission/evidence/PUBLIC-SOURCE-REBUILD-RESULT.json create mode 100644 research/staged-release-retiming-t530/full-admission/evidence/PUBLIC-SUMMARY-CONTROLS.json create mode 100644 research/staged-release-retiming-t530/full-admission/evidence/RELEASE-RECEIPT.json create mode 100644 research/staged-release-retiming-t530/full-admission/evidence/RETAINED-REUSE-RECEIPT.json create mode 100644 research/staged-release-retiming-t530/full-admission/evidence/RETIMING-COMPLETE-RELEASE.json create mode 100644 research/staged-release-retiming-t530/full-admission/evidence/SOURCE-MANIFEST.json create mode 100644 research/staged-release-retiming-t530/full-admission/evidence/STAGE-SCRIPT-BINDINGS.json create mode 100644 research/staged-release-retiming-t530/full-admission/evidence/STRICT-STAGES.json create mode 100644 research/staged-release-retiming-t530/full-admission/evidence/SUPPLIER-RESULT.json create mode 100644 research/staged-release-retiming-t530/full-admission/evidence/SUPPLIER-STAGES.json create mode 100644 research/staged-release-retiming-t530/full-admission/evidence/logs/discovery.log create mode 100644 research/staged-release-retiming-t530/full-admission/evidence/logs/outer-check_ledger.py.log create mode 100644 research/staged-release-retiming-t530/full-admission/evidence/logs/outer-independent_check.py.log create mode 100644 research/staged-release-retiming-t530/full-admission/evidence/logs/owners.log create mode 100644 research/staged-release-retiming-t530/full-admission/evidence/logs/parent-lift.log create mode 100644 research/staged-release-retiming-t530/full-admission/evidence/logs/rebind.log create mode 100644 research/staged-release-retiming-t530/full-admission/evidence/logs/release.log create mode 100644 research/staged-release-retiming-t530/full-admission/evidence/native-base-RESULT.json create mode 100644 research/staged-release-retiming-t530/full-admission/evidence/native-base.log create mode 100644 research/staged-release-retiming-t530/full-admission/evidence/native-extra-RESULT.json create mode 100644 research/staged-release-retiming-t530/full-admission/evidence/native-extra.log create mode 100644 research/staged-release-retiming-t530/full-admission/evidence/native-logs/base/ledgers-bw_emit.py.log create mode 100644 research/staged-release-retiming-t530/full-admission/evidence/native-logs/base/local-replay-bw_audit_local.py.log create mode 100644 research/staged-release-retiming-t530/full-admission/evidence/native-logs/base/native-bw_transport.py.log create mode 100644 research/staged-release-retiming-t530/full-admission/evidence/native-logs/base/phases-bw_check_recipes.py.log create mode 100644 research/staged-release-retiming-t530/full-admission/evidence/native-logs/base/phases-bw_phases.py.log create mode 100644 research/staged-release-retiming-t530/full-admission/evidence/native-logs/base/wrappers-bw_adapters.py.log create mode 100644 research/staged-release-retiming-t530/full-admission/evidence/native-logs/extra/ledgers-bw_emit.py.log create mode 100644 research/staged-release-retiming-t530/full-admission/evidence/native-logs/extra/local-replay-bw_audit_local.py.log create mode 100644 research/staged-release-retiming-t530/full-admission/evidence/native-logs/extra/native-bw_transport.py.log create mode 100644 research/staged-release-retiming-t530/full-admission/evidence/native-logs/extra/phases-bw_check_recipes.py.log create mode 100644 research/staged-release-retiming-t530/full-admission/evidence/native-logs/extra/phases-bw_phases.py.log create mode 100644 research/staged-release-retiming-t530/full-admission/evidence/native-logs/extra/wrappers-bw_adapters.py.log create mode 100644 research/staged-release-retiming-t530/full-admission/evidence/native-summary/65624efec36b35934b750c1741ba2ad4e6df3cff86e44536b0c016ebddb0fb55/CACHE.json create mode 100644 research/staged-release-retiming-t530/full-admission/evidence/native-summary/65624efec36b35934b750c1741ba2ad4e6df3cff86e44536b0c016ebddb0fb55/STEPS.json create mode 100644 research/staged-release-retiming-t530/full-admission/evidence/native-summary/65624efec36b35934b750c1741ba2ad4e6df3cff86e44536b0c016ebddb0fb55/local/INDEPENDENT-LOCAL-REPLAY.json create mode 100644 research/staged-release-retiming-t530/full-admission/evidence/native-summary/65624efec36b35934b750c1741ba2ad4e6df3cff86e44536b0c016ebddb0fb55/local/LOCAL-CHECKS.json create mode 100644 research/staged-release-retiming-t530/full-admission/evidence/native-summary/6df3356808e29909776be8bc0faf03df983401a267c2d740d1ac2dbcaa278269/CACHE.json create mode 100644 research/staged-release-retiming-t530/full-admission/evidence/native-summary/6df3356808e29909776be8bc0faf03df983401a267c2d740d1ac2dbcaa278269/STEPS.json create mode 100644 research/staged-release-retiming-t530/full-admission/evidence/native-summary/6df3356808e29909776be8bc0faf03df983401a267c2d740d1ac2dbcaa278269/local/INDEPENDENT-LOCAL-REPLAY.json create mode 100644 research/staged-release-retiming-t530/full-admission/evidence/native-summary/6df3356808e29909776be8bc0faf03df983401a267c2d740d1ac2dbcaa278269/local/LOCAL-CHECKS.json create mode 100644 research/staged-release-retiming-t530/full-admission/evidence/native-summary/7b0e9fbda32749aabc7e156d9fe09bceb0624a178628fe69e5dfea783462f905/CACHE.json create mode 100644 research/staged-release-retiming-t530/full-admission/evidence/native-summary/7b0e9fbda32749aabc7e156d9fe09bceb0624a178628fe69e5dfea783462f905/STEPS.json create mode 100644 research/staged-release-retiming-t530/full-admission/evidence/native-summary/7b0e9fbda32749aabc7e156d9fe09bceb0624a178628fe69e5dfea783462f905/local/INDEPENDENT-LOCAL-REPLAY.json create mode 100644 research/staged-release-retiming-t530/full-admission/evidence/native-summary/7b0e9fbda32749aabc7e156d9fe09bceb0624a178628fe69e5dfea783462f905/local/LOCAL-CHECKS.json create mode 100644 research/staged-release-retiming-t530/full-admission/evidence/native-summary/_receipts/e0eefc96567fbb45e19e6de0ca295381dbe0e686c08ddc783639b065c7c791d4/RECEIPT.json create mode 100644 research/staged-release-retiming-t530/full-admission/evidence/native-summary/_receipts/e0eefc96567fbb45e19e6de0ca295381dbe0e686c08ddc783639b065c7c791d4/RESULT.json create mode 100644 research/staged-release-retiming-t530/full-admission/evidence/native-summary/_receipts/e0eefc96567fbb45e19e6de0ca295381dbe0e686c08ddc783639b065c7c791d4/STAGES.json create mode 100644 research/staged-release-retiming-t530/full-admission/evidence/native-summary/e8e6e78ff7422275c38324499e1f33fb2ecd30de9503aef2b8f1ee80d8c4df8e/CACHE.json create mode 100644 research/staged-release-retiming-t530/full-admission/evidence/native-summary/e8e6e78ff7422275c38324499e1f33fb2ecd30de9503aef2b8f1ee80d8c4df8e/STEPS.json create mode 100644 research/staged-release-retiming-t530/full-admission/evidence/native-summary/e8e6e78ff7422275c38324499e1f33fb2ecd30de9503aef2b8f1ee80d8c4df8e/local/INDEPENDENT-LOCAL-REPLAY.json create mode 100644 research/staged-release-retiming-t530/full-admission/evidence/native-summary/e8e6e78ff7422275c38324499e1f33fb2ecd30de9503aef2b8f1ee80d8c4df8e/local/LOCAL-CHECKS.json create mode 100644 research/staged-release-retiming-t530/full-admission/evidence/portable-STAGES.json create mode 100644 research/staged-release-retiming-t530/full-admission/evidence/portable-new-retiming-review.log create mode 100644 research/staged-release-retiming-t530/full-admission/evidence/portable-preserved-staged-review.log create mode 100644 research/staged-release-retiming-t530/full-admission/evidence/release-logs/outer.log create mode 100644 research/staged-release-retiming-t530/full-admission/evidence/release-logs/verify.log create mode 100644 research/staged-release-retiming-t530/full-admission/evidence/retained-parent-CLAIM.json create mode 100644 research/staged-release-retiming-t530/full-admission/evidence/runtime-summary/CLAIM.json create mode 100644 research/staged-release-retiming-t530/full-admission/evidence/runtime-summary/new/SPEC.json create mode 100644 research/staged-release-retiming-t530/full-admission/evidence/runtime-summary/outer/B.json create mode 100644 research/staged-release-retiming-t530/full-admission/evidence/runtime-summary/outer/LEDGER.json create mode 100644 research/staged-release-retiming-t530/full-admission/evidence/runtime-summary/outer/OUTER-CLAIM.json create mode 100644 research/staged-release-retiming-t530/full-admission/evidence/stage-scripts/discovery.py create mode 100644 research/staged-release-retiming-t530/full-admission/evidence/stage-scripts/outer-check_ledger.py.py create mode 100644 research/staged-release-retiming-t530/full-admission/evidence/stage-scripts/outer-independent_check.py.py create mode 100644 research/staged-release-retiming-t530/full-admission/evidence/stage-scripts/owners.py create mode 100644 research/staged-release-retiming-t530/full-admission/evidence/stage-scripts/parent-lift.py create mode 100644 research/staged-release-retiming-t530/full-admission/evidence/stage-scripts/rebind.py create mode 100644 research/staged-release-retiming-t530/full-admission/evidence/stage-scripts/release.py create mode 100644 research/staged-release-retiming-t530/full-admission/evidence/strict-logs/admission.log create mode 100644 research/staged-release-retiming-t530/full-admission/evidence/strict-logs/assembly.log create mode 100644 research/staged-release-retiming-t530/full-admission/evidence/strict-logs/audit.log create mode 100644 research/staged-release-retiming-t530/full-admission/evidence/strict-logs/bind.log create mode 100644 research/staged-release-retiming-t530/full-admission/evidence/strict-logs/bit.log create mode 100644 research/staged-release-retiming-t530/full-admission/evidence/strict-logs/emit.log create mode 100644 research/staged-release-retiming-t530/full-admission/evidence/strict-logs/independent.log create mode 100644 research/staged-release-retiming-t530/full-admission/evidence/strict-logs/invoice.log create mode 100644 research/staged-release-retiming-t530/full-admission/evidence/supplier-logs/audit-local-566-base.log create mode 100644 research/staged-release-retiming-t530/full-admission/evidence/supplier-logs/audit-local-566-extra.log create mode 100644 research/staged-release-retiming-t530/full-admission/evidence/supplier-logs/declared-edit-review.log create mode 100644 research/staged-release-retiming-t530/full-admission/evidence/supplier-logs/fine-engine-oracle.log create mode 100644 research/staged-release-retiming-t530/full-admission/evidence/supplier-logs/geometry-controls.log create mode 100644 research/staged-release-retiming-t530/full-admission/evidence/supplier-logs/lemmag-labels.log create mode 100644 research/staged-release-retiming-t530/full-admission/evidence/supplier-logs/lift-parent.log create mode 100644 research/staged-release-retiming-t530/full-admission/evidence/supplier-logs/paired-extension-review.log create mode 100644 research/staged-release-retiming-t530/full-admission/evidence/supplier-logs/preload-move-independent-review.log create mode 100644 research/staged-release-retiming-t530/full-admission/evidence/supplier-logs/rebind-566.log create mode 100644 research/staged-release-retiming-t530/full-admission/evidence/supplier-logs/rebuild-borrow-words.log create mode 100644 research/staged-release-retiming-t530/full-admission/evidence/supplier-logs/rebuild-words-566.log create mode 100644 research/staged-release-retiming-t530/full-admission/evidence/supplier-logs/reconstruct-owners.log create mode 100644 research/staged-release-retiming-t530/full-admission/evidence/supplier-logs/shared-kernel-independent-review.log create mode 100644 research/staged-release-retiming-t530/full-admission/evidence/supplier-logs/staged-release-retime-review.log create mode 100644 research/staged-release-retiming-t530/full-admission/evidence/supplier-logs/staged3605-review.log create mode 100644 research/staged-release-retiming-t530/full-admission/evidence/supplier-logs/strict-t74.log create mode 100644 research/staged-release-retiming-t530/full-admission/evidence/supplier-logs/two-sided-helper408-review.log create mode 100644 research/staged-release-retiming-t530/full-admission/reproduce.py create mode 100644 research/staged-release-retiming-t530/full-admission/scripts/admit_extension.py create mode 100644 research/staged-release-retiming-t530/full-admission/scripts/admit_extension.py.patch create mode 100644 research/staged-release-retiming-t530/full-admission/scripts/integrate.py create mode 100644 research/staged-release-retiming-t530/full-admission/scripts/prepare_extension_native.py create mode 100644 research/staged-release-retiming-t530/full-admission/scripts/prepare_extension_native.py.patch create mode 100644 research/staged-release-retiming-t530/full-admission/test_recorded_summary.py create mode 100644 research/staged-release-retiming-t530/full-admission/vendor/PR3626-FETCH-PINS.json create mode 100644 research/staged-release-retiming-t530/full-admission/vendor/PR3626-INPUTS.json create mode 100644 research/staged-release-retiming-t530/full-admission/vendor/staged-width-t530/CLAIM.json create mode 100644 research/staged-release-retiming-t530/full-admission/vendor/staged-width-t530/CREDITS.md create mode 100644 research/staged-release-retiming-t530/full-admission/vendor/staged-width-t530/EXPECTED.json create mode 100644 research/staged-release-retiming-t530/full-admission/vendor/staged-width-t530/FRONTIER.json create mode 100644 research/staged-release-retiming-t530/full-admission/vendor/staged-width-t530/PROOF.md create mode 100644 research/staged-release-retiming-t530/full-admission/vendor/staged-width-t530/README.md create mode 100644 research/staged-release-retiming-t530/full-admission/vendor/staged-width-t530/owners/ARTIFACTS.json create mode 100644 research/staged-release-retiming-t530/full-admission/vendor/staged-width-t530/owners/CANDIDATE.json create mode 100644 research/staged-release-retiming-t530/full-admission/vendor/staged-width-t530/owners/DEPENDENCIES.json create mode 100644 research/staged-release-retiming-t530/full-admission/vendor/staged-width-t530/owners/DISPATCH37.json create mode 100644 research/staged-release-retiming-t530/full-admission/vendor/staged-width-t530/owners/EXPECTED.json create mode 100644 research/staged-release-retiming-t530/full-admission/vendor/staged-width-t530/owners/INPUT-PINS.json create mode 100644 research/staged-release-retiming-t530/full-admission/vendor/staged-width-t530/owners/ORDER37.json create mode 100644 research/staged-release-retiming-t530/full-admission/vendor/staged-width-t530/owners/PROVIDERS.json create mode 100644 research/staged-release-retiming-t530/full-admission/vendor/staged-width-t530/owners/README.txt create mode 100644 research/staged-release-retiming-t530/full-admission/vendor/staged-width-t530/owners/SOURCE-PINS.json create mode 100644 research/staged-release-retiming-t530/full-admission/vendor/staged-width-t530/owners/T16-DISPATCH.json create mode 100644 research/staged-release-retiming-t530/full-admission/vendor/staged-width-t530/owners/T16-ORDER.json create mode 100644 research/staged-release-retiming-t530/full-admission/vendor/staged-width-t530/owners/T16-PROVENANCE.json create mode 100644 research/staged-release-retiming-t530/full-admission/vendor/staged-width-t530/owners/UPSTREAM-PROOF.md create mode 100644 research/staged-release-retiming-t530/full-admission/vendor/staged-width-t530/owners/UPSTREAM-SOURCE-CREDITS.md create mode 100644 research/staged-release-retiming-t530/full-admission/vendor/staged-width-t530/owners/UPSTREAM-SOURCE-NOTICE create mode 100644 research/staged-release-retiming-t530/full-admission/vendor/staged-width-t530/owners/independent_literal.py create mode 100644 research/staged-release-retiming-t530/full-admission/vendor/staged-width-t530/owners/integral_network.py create mode 100644 research/staged-release-retiming-t530/full-admission/vendor/staged-width-t530/owners/portable_expand.py create mode 100644 research/staged-release-retiming-t530/full-admission/vendor/staged-width-t530/owners/source_context.py create mode 100644 research/staged-release-retiming-t530/full-admission/vendor/staged-width-t530/owners/test_owner_guards.py create mode 100644 research/staged-release-retiming-t530/full-admission/vendor/staged-width-t530/owners/verify_candidate.py create mode 100644 research/staged-release-retiming-t530/full-admission/vendor/staged-width-t530/owners/verify_owner.py create mode 100644 research/staged-release-retiming-t530/full-admission/vendor/staged-width-t530/replay.py create mode 100644 research/staged-release-retiming-t530/full-admission/vendor/staged-width-t530/source_builder.py create mode 100644 research/staged-release-retiming-t530/full-admission/vendor/staged-width-t530/supplier3605/ARTIFACTS.json create mode 100644 research/staged-release-retiming-t530/full-admission/vendor/staged-width-t530/supplier3605/PROOF.md create mode 100644 research/staged-release-retiming-t530/full-admission/vendor/staged-width-t530/supplier3605/README.md create mode 100644 research/staged-release-retiming-t530/full-admission/vendor/staged-width-t530/supplier3605/SOURCES.json create mode 100644 research/staged-release-retiming-t530/full-admission/vendor/staged-width-t530/supplier3605/STAGED-PAIR-RECORD-base.json.gz create mode 100644 research/staged-release-retiming-t530/full-admission/vendor/staged-width-t530/supplier3605/STAGED-PAIR-RECORD-extra.json.gz create mode 100644 research/staged-release-retiming-t530/full-admission/vendor/staged-width-t530/supplier3605/STAGED644-660-base.json.gz create mode 100644 research/staged-release-retiming-t530/full-admission/vendor/staged-width-t530/supplier3605/STAGED644-660-extra.json.gz create mode 100644 research/staged-release-retiming-t530/full-admission/vendor/staged-width-t530/supplier3605/TASK.json create mode 100644 research/staged-release-retiming-t530/full-admission/vendor/staged-width-t530/supplier3605/VALIDATION.json create mode 100644 research/staged-release-retiming-t530/full-admission/vendor/staged-width-t530/supplier3605/VERIFY.json create mode 100644 research/staged-release-retiming-t530/full-admission/vendor/staged-width-t530/supplier3605/check_residual.py create mode 100644 research/staged-release-retiming-t530/full-admission/vendor/staged-width-t530/supplier3605/check_scope.py create mode 100644 research/staged-release-retiming-t530/full-admission/vendor/staged-width-t530/supplier3605/staged_pair.py create mode 100644 research/staged-release-retiming-t530/full-admission/vendor/staged-width-t530/supplier3605/verify.py create mode 100644 research/staged-release-retiming-t530/full-admission/vendor/staged-width-t530/templates/prepare_extension_native.py create mode 100644 research/staged-release-retiming-t530/local-audit/LICENSE create mode 100644 research/staged-release-retiming-t530/local-audit/MANIFEST.json create mode 100644 research/staged-release-retiming-t530/local-audit/NATIVE-LINEAGE-NOTICE create mode 100644 research/staged-release-retiming-t530/local-audit/PUBLIC-INPUTS.json create mode 100644 research/staged-release-retiming-t530/local-audit/PUBLICATION-PROVENANCE.json create mode 100644 research/staged-release-retiming-t530/local-audit/README.md create mode 100644 research/staged-release-retiming-t530/local-audit/SOURCE-PINS.json create mode 100644 research/staged-release-retiming-t530/local-audit/check_retiming_independent.py create mode 100644 research/staged-release-retiming-t530/local-audit/check_retiming_negative.py create mode 100644 research/staged-release-retiming-t530/local-audit/receipts/native-base/COMMANDS.json create mode 100644 research/staged-release-retiming-t530/local-audit/receipts/native-base/RESULT.json create mode 100644 research/staged-release-retiming-t530/local-audit/receipts/native-base/native/local/INDEPENDENT-LOCAL-REPLAY.json create mode 100644 research/staged-release-retiming-t530/local-audit/receipts/native-base/native/local/LOCAL-CHECKS.json create mode 100644 research/staged-release-retiming-t530/local-audit/receipts/native-base/native/local/SCALAR-FRAME-AUDIT.json create mode 100644 research/staged-release-retiming-t530/local-audit/receipts/native-base/native/local/WARP-RECIPE-CHECKS.json create mode 100644 research/staged-release-retiming-t530/local-audit/receipts/native-base/native/local/WRAPPER-CHECKS.json create mode 100644 research/staged-release-retiming-t530/local-audit/receipts/native-extra/COMMANDS.json create mode 100644 research/staged-release-retiming-t530/local-audit/receipts/native-extra/RESULT.json create mode 100644 research/staged-release-retiming-t530/local-audit/receipts/native-extra/native/local/INDEPENDENT-LOCAL-REPLAY.json create mode 100644 research/staged-release-retiming-t530/local-audit/receipts/native-extra/native/local/LOCAL-CHECKS.json create mode 100644 research/staged-release-retiming-t530/local-audit/receipts/native-extra/native/local/SCALAR-FRAME-AUDIT.json create mode 100644 research/staged-release-retiming-t530/local-audit/receipts/native-extra/native/local/WARP-RECIPE-CHECKS.json create mode 100644 research/staged-release-retiming-t530/local-audit/receipts/native-extra/native/local/WRAPPER-CHECKS.json create mode 100644 research/staged-release-retiming-t530/local-audit/vendor/SOURCE-CREDITS.md create mode 100644 research/staged-release-retiming-t530/local-audit/vendor/SOURCE-NOTICE create mode 100644 research/staged-release-retiming-t530/local-audit/vendor/audit_local.py create mode 100644 research/staged-release-retiming-t530/local-audit/verify.py create mode 100644 research/staged-release-retiming-t530/local-audit/words/RETIMED644-660-base.json.gz create mode 100644 research/staged-release-retiming-t530/local-audit/words/RETIMED644-660-extra.json.gz create mode 100644 research/staged-release-retiming-t530/local-audit/words/STAGED644-660-base.json.gz create mode 100644 research/staged-release-retiming-t530/local-audit/words/STAGED644-660-extra.json.gz create mode 100644 research/staged-release-retiming-t530/numerics/INPUT-SHA256.json create mode 100644 research/staged-release-retiming-t530/numerics/PROVENANCE.json create mode 100644 research/staged-release-retiming-t530/numerics/PUBLIC-INPUTS.json create mode 100644 research/staged-release-retiming-t530/numerics/PUBLICATION-PROVENANCE.json create mode 100644 research/staged-release-retiming-t530/numerics/README.md create mode 100644 research/staged-release-retiming-t530/numerics/recorded/MOMENT.json create mode 100644 research/staged-release-retiming-t530/numerics/recorded/outer/CLAIM.json create mode 100644 research/staged-release-retiming-t530/numerics/recorded/outer/RESULT.json create mode 100644 research/staged-release-retiming-t530/numerics/recorded/outer/new/SPEC.json create mode 100644 research/staged-release-retiming-t530/numerics/recorded/outer/outer/B.json create mode 100644 research/staged-release-retiming-t530/numerics/recorded/outer/outer/INDEPENDENT.json create mode 100644 research/staged-release-retiming-t530/numerics/recorded/outer/outer/LEDGER.json create mode 100644 research/staged-release-retiming-t530/numerics/recorded/outer/outer/check_ledger.py create mode 100644 research/staged-release-retiming-t530/numerics/recorded/outer/outer/independent_check.py create mode 100644 research/staged-release-retiming-t530/numerics/run.py create mode 100644 research/staged-release-retiming-t530/numerics/t530/CREDITS.md create mode 100644 research/staged-release-retiming-t530/numerics/t530/EXPECTED.json create mode 100644 research/staged-release-retiming-t530/numerics/t530/PROOF.md create mode 100644 research/staged-release-retiming-t530/numerics/t530/evidence/RESULT.json create mode 100644 research/staged-release-retiming-t530/numerics/t530/price.py create mode 100644 research/staged-release-retiming-t530/numerics/t530/supplier3605/STAGED644-660-base.json.gz create mode 100644 research/staged-release-retiming-t530/numerics/t530/supplier3605/STAGED644-660-extra.json.gz create mode 100644 research/staged-release-retiming-t530/numerics/vendor-repo/research/gmx-t74-borrow43-handoff/outer/check_ledger.py create mode 100644 research/staged-release-retiming-t530/numerics/vendor-repo/research/gmx-t74-borrow43-handoff/outer/independent_check.py create mode 100644 research/staged-release-retiming-t530/numerics/vendor-repo/research/pending-claims-independent-pricing/arith.py create mode 100644 research/staged-release-retiming-t530/numerics/verify_moment.py create mode 100644 research/staged-release-retiming-t530/numerics/verify_outer.py create mode 100644 research/staged-release-retiming-t530/numerics/words/RETIMED644-660-base.json.gz create mode 100644 research/staged-release-retiming-t530/numerics/words/RETIMED644-660-extra.json.gz create mode 100644 research/staged-release-retiming-t530/owner-audit/DERIVATION.json create mode 100644 research/staged-release-retiming-t530/owner-audit/PUBLIC-INPUTS.json create mode 100644 research/staged-release-retiming-t530/owner-audit/PUBLIC-PROVENANCE.json create mode 100644 research/staged-release-retiming-t530/owner-audit/README.md create mode 100644 research/staged-release-retiming-t530/owner-audit/RESULT.json create mode 100644 research/staged-release-retiming-t530/owner-audit/evidence/FRESH-RESULT.json create mode 100644 research/staged-release-retiming-t530/owner-audit/evidence/FRESH-RUN.json create mode 100644 research/staged-release-retiming-t530/owner-audit/independent_literal.py create mode 100644 research/staged-release-retiming-t530/owner-audit/native/checked-base/CANONICAL-WORD.json.gz create mode 100644 research/staged-release-retiming-t530/owner-audit/native/checked-extra/CANONICAL-WORD.json.gz create mode 100644 research/staged-release-retiming-t530/owner-audit/run.py create mode 100644 research/staged-release-retiming-t530/owner-audit/upstream/ARTIFACTS.json create mode 100644 research/staged-release-retiming-t530/owner-audit/upstream/CANDIDATE.json create mode 100644 research/staged-release-retiming-t530/owner-audit/upstream/DEPENDENCIES.json create mode 100644 research/staged-release-retiming-t530/owner-audit/upstream/DISPATCH37.json create mode 100644 research/staged-release-retiming-t530/owner-audit/upstream/EXPECTED.json create mode 100644 research/staged-release-retiming-t530/owner-audit/upstream/INPUT-PINS.json create mode 100644 research/staged-release-retiming-t530/owner-audit/upstream/ORDER37.json create mode 100644 research/staged-release-retiming-t530/owner-audit/upstream/PROVIDERS.json create mode 100644 research/staged-release-retiming-t530/owner-audit/upstream/README.txt create mode 100644 research/staged-release-retiming-t530/owner-audit/upstream/SOURCE-PINS.json create mode 100644 research/staged-release-retiming-t530/owner-audit/upstream/T16-DISPATCH.json create mode 100644 research/staged-release-retiming-t530/owner-audit/upstream/T16-ORDER.json create mode 100644 research/staged-release-retiming-t530/owner-audit/upstream/T16-PROVENANCE.json create mode 100644 research/staged-release-retiming-t530/owner-audit/upstream/UPSTREAM-PROOF.md create mode 100644 research/staged-release-retiming-t530/owner-audit/upstream/UPSTREAM-SOURCE-CREDITS.md create mode 100644 research/staged-release-retiming-t530/owner-audit/upstream/UPSTREAM-SOURCE-NOTICE create mode 100644 research/staged-release-retiming-t530/owner-audit/upstream/independent_literal.py create mode 100644 research/staged-release-retiming-t530/owner-audit/upstream/integral_network.py create mode 100644 research/staged-release-retiming-t530/owner-audit/upstream/portable_expand.py create mode 100644 research/staged-release-retiming-t530/owner-audit/upstream/source_context.py create mode 100644 research/staged-release-retiming-t530/owner-audit/upstream/test_owner_guards.py create mode 100644 research/staged-release-retiming-t530/owner-audit/upstream/verify_candidate.py create mode 100644 research/staged-release-retiming-t530/owner-audit/upstream/verify_owner.py create mode 100644 research/staged-release-retiming-t530/packing-cap/PUBLIC-INPUTS.json create mode 100644 research/staged-release-retiming-t530/packing-cap/PUBLICATION-PROVENANCE.json create mode 100644 research/staged-release-retiming-t530/packing-cap/README.md create mode 100644 research/staged-release-retiming-t530/packing-cap/RETIMED-PACKING-CAP.json create mode 100644 research/staged-release-retiming-t530/packing-cap/cap-source/binomial.py create mode 100644 research/staged-release-retiming-t530/packing-cap/cap-source/pr3630-check_budget.py create mode 100644 research/staged-release-retiming-t530/packing-cap/check_retimed_cap.py create mode 100644 research/staged-release-retiming-t530/verify.py diff --git a/research/staged-release-retiming-t530/.gitattributes b/research/staged-release-retiming-t530/.gitattributes new file mode 100644 index 0000000000..d8af14b17d --- /dev/null +++ b/research/staged-release-retiming-t530/.gitattributes @@ -0,0 +1,2 @@ +# Preserve exact bytes of hash-pinned scientific sources and receipts. +* -text whitespace=blank-at-eol,blank-at-eof,space-before-tab,cr-at-eol diff --git a/research/staged-release-retiming-t530/CREDITS.md b/research/staged-release-retiming-t530/CREDITS.md new file mode 100644 index 0000000000..17eebfae27 --- /dev/null +++ b/research/staged-release-retiming-t530/CREDITS.md @@ -0,0 +1,11 @@ +# Credit and provenance + +The new contribution is the two commuting release retimings, their independent local proof, changed complete bill, source-bound T530 integration, and the public reproduction package. This work was prepared for GitHub user `roger-sato` with substantial OpenAI Codex assistance, including separate circuit, owner/packing and exact-math review agents. Those agent checks are not independent human peer review. No personal priority over inherited mathematical work is asserted. + +- Ross Richardson's [PR3605](https://github.com/CrocSwap/integer-mult-bounds/pull/3605), head `3efbb5de06a49ffeea6684482f2d3fe48cdca3fb`, supplies the staged helpers and both original words. Its lineage includes dcharb78's PR3133 and Jeremy Diviney's PR3148 work. +- hexapode's [PR3626](https://github.com/CrocSwap/integer-mult-bounds/pull/3626), head `659fd5e7064d9466b668d7188cbb013b333a415a`, supplies the actual T530 allocation, deterministic reconstruction, independent owner audit and complete release machinery. Its manifest and source notices are preserved in the relevant components. +- Ross Richardson's [PR3630](https://github.com/CrocSwap/integer-mult-bounds/pull/3630), head `bcac7fe04b9b7f7f5d3c27d620561f96c4ae5608`, supplies the fixed-inventory basis/dual argument; PR3531 at `550a660a97308d3aeb3620ee1f4218f77e2c2742` supplies the retained positive-binomial interval engine. +- [PR3633](https://github.com/CrocSwap/integer-mult-bounds/pull/3633), head `46c5aaca40117a4ca90a3316771ae52cf9a6801e`, is relevant parallel work attaining the old fixed-inventory ceiling. Its allocation is a comparison and possible future composition, not an input to our achieved endpoint. +- Canonical main at `20ecf2891d80b5acf18d980b2164fb44ea7faa90` supplies the native, owner, outer and release infrastructure. The independent free-operator auditor is preserved from the rank7-coupled-586-588-carrier-fold lineage; its notice credits icekylinx with OpenAI GPT-6 Astra assistance. + +All retained notices, licenses and contributor lists remain in their component source trees. The original repository and this derivative package use Apache-2.0. Exact source bytes are retained where pinned; publication adapters are identified by original/public SHA256 provenance maps. Retained computational summaries are distinguished from fresh replay and from general mathematical assumptions. diff --git a/research/staged-release-retiming-t530/PROOF.md b/research/staged-release-retiming-t530/PROOF.md new file mode 100644 index 0000000000..bd9a0d2696 --- /dev/null +++ b/research/staged-release-retiming-t530/PROOF.md @@ -0,0 +1,115 @@ +# Proof of the retiming improvement and its conditional transfer + +## 1. Claim and dependency boundary + +Under the same inherited theorem/implementation hypotheses as the pinned PR3626 release, replacing its two PR3605 staged suppliers by the words in `local-audit/words/` yields + +``` +κ = 0.001730394391813963415120 - 10^-46 - 10^-70 + = 17303943918139634151199999999999999999999998999999999999999999999999 + / 10000000000000000000000000000000000000000000000000000000000000000000000. +``` + +The proof has three distinct parts: an exact algebraic/frame change; a finite complete owner/invoice construction; and a conditional transfer using the inherited compiler and outer assumptions. The last part is not asserted unconditionally. All source pins, original proofs and executable obligations are in the sibling components and their notices. + +## 2. Exact word change + +Use zero-based B indices. In **both** base and extra words, at indices 591 and 592 replace + +``` +640 += 2*644 at P +496 -= 2*644 at P +``` + +by + +``` +496 -= 2*644 at P +640 += 2*644 at Q1. +``` + +At indices 641 and 642 replace + +``` +656 -= 660 at P +520 -= 2*660 at P +``` + +by + +``` +520 -= 2*660 at P +656 -= 660 at Q2. +``` + +Here `L = span(30)`, `P = span(429,30)`, `Q1 = span(423,65,20,10)` and `Q2 = span(427,96,24,6)` are the native GF(2) frame subspaces. Their dimensions are 1, 2, 4 and 4, with `L ⊂ P ⊂ Qi` in each case. These inclusions are checked by exact binary elimination, not numerical rank. + +For distinct registers t,u,s, elementary shears `I+c E_ts` and `I+d E_us` commute: both cross products of the two matrix units are zero because neither target is the shared source. This holds over the exact rational scalar model for arbitrary register inputs. Each displayed pair has that form. No warp is crossed and the involved registers have no warp. Moving the first gate after the second therefore preserves the exact operator. + +The delayed donor's original frame itinerary is `L → P → Qi`. Inspection of the complete intervening event sequence shows no intermediate contact, and `Qi` is already the next frame used by donor and pivot. The new itinerary is `L → Qi`, while the pivot still pays its existing `P → Qi` transition. Thus there is no frame decrease, uncharged new pivot transition, lost input or changed boundary frame. The independent minimal checker explicitly verifies these conditions and rejects frame, coefficient and interface mutations. + +Cleanup is regenerated by the required canonical inverse-reverse order at FULL. Only B, cleanup and the reported local profile change; A, cut, restore, warps, helper identities, entrance/final frames and all external interfaces remain identical. The old cleanup order is itself algebraically equivalent because its inverse shears commute; rejecting it is a canonical-format control, not evidence that its operator is wrong. + +## 3. Local recursive bill and exact operator coverage + +A frame jump by d dimensions contributes `H_d`. Each direct jump replaces `H1+H2` by `H3`; the two pairs produce + +``` +ΔH = -2H1 -2H2 +2H3 +old = {1:2439,2:726,3:224,4:102,5:20,8:8} +new = {1:2437,2:724,3:226,4:102,5:20,8:8}. +``` + +Rank mass remains 5,135, since `-2*1-2*2+2*3=0`. The width inventory remains `{4:26,5:2,6:18,7:52,8:97,9:213}` (408 helpers), and all 91 private zero buffers remain private and zero at exit. For `0 1. +``` + +They enclose the root between these adjacent exact decimal rationals without floating-point decisions. The lower endpoint with the two inherited strict margins is the stated κ. The source-bound modern outer arithmetic checks 63 strict inequalities and 17 rejection controls plus an independent balance derivation. The complete derivative release binds the changed providers, actual T530 ownership, physical invoice and modern endpoint; its outer gate independently replays 19 exact obligations. An inherited supplier-only intermediate endpoint is not substituted for this final modern endpoint. + +The seven scientific stages all completed with exit code 0 and terminal `PASS_RELEASE`. They operated on source-manifest SHA256 `fb47533a401d1d13719be8b9aab91fe5313931ca62d40dba336eab6a96275aa0`. Public materialization reproduces that source identity. See the README for the precise fresh/reused distinction and why the public normalized summary does not authenticate omitted runtime archive bytes. + +## 6. Conditionality and what remains unproved + +This finite result retains the predecessor's all-size dispatcher/compiler assumptions; common-label/mutable-source realization and whole-call hosting; SCALAR/COPY/CLEAR and zero-allocation contracts; uniform coefficient and stock bounds; recursive rounded-precision arguments; bootstrap; tape/recovery; and analytic/BIT H1–H5 premises. Checking finite native instances, exact owner rows and inequalities does not itself prove those general assumptions. No independent human review or formal proof-assistant kernel certification is claimed. + +The additional packing certificate checks all 2551 patterns of the stated fixed helper inventory, with 2539 strictly positive reduced costs and 12 symbolic zeros. It bounds that relaxation's root by `0.001730418899766071163805`; it neither supplies a better achieved construction nor excludes improvements that alter the word, inventory or model. Combining this retiming with PR3633 remains an untested next question. diff --git a/research/staged-release-retiming-t530/PUBLIC-VALIDATION.json b/research/staged-release-retiming-t530/PUBLIC-VALIDATION.json new file mode 100644 index 0000000000..e5be56653c --- /dev/null +++ b/research/staged-release-retiming-t530/PUBLIC-VALIDATION.json @@ -0,0 +1,48 @@ +{ + "status": "PASS_STAGED_RELEASE_RETIMING_T530_BOUNDED_CHECKS", + "kappa": "17303943918139634151199999999999999999999998999999999999999999999999/10000000000000000000000000000000000000000000000000000000000000000000000", + "profile": { + "1": 11747920, + "2": 3453480, + "3": 1112042, + "4": 486540, + "5": 103690, + "8": 38160, + "48": 202828 + }, + "stages": [ + { + "stage": "local", + "exit_code": 0, + "seconds": 2.23428725003032 + }, + { + "stage": "owner", + "exit_code": 0, + "seconds": 19.858183250005823 + }, + { + "stage": "numerics", + "exit_code": 0, + "seconds": 0.3183805840089917 + }, + { + "stage": "packing", + "exit_code": 0, + "seconds": 1.709134666947648 + }, + { + "stage": "recorded-summary", + "exit_code": 0, + "seconds": 0.06325900001684204 + } + ], + "package_files_unchanged": true, + "scope": "Fresh finite local/operator, regenerated ownership/invoice, exact arithmetic and scoped packing checks; full native/controller/outer admission is retained evidence only in this command. Inherited general assumptions remain.", + "environment": { + "python": "3.12.14", + "numpy": "2.5.4" + }, + "registered_runner_status": "PASS_REGISTERED_RESEARCH_PACKAGE", + "metadata_status": "PASS_PACKAGE_METADATA_AND_PINS" +} diff --git a/research/staged-release-retiming-t530/README.md b/research/staged-release-retiming-t530/README.md new file mode 100644 index 0000000000..525c0d40a9 --- /dev/null +++ b/research/staged-release-retiming-t530/README.md @@ -0,0 +1,73 @@ +# Two commuting release retimings: a conditional T530 improvement + +The two staged suppliers from [PR3605](https://github.com/CrocSwap/integer-mult-bounds/pull/3605) admit an exact change of gate order and frame itinerary. In each invocation it replaces `2H1 + 2H2` by `2H3`, while preserving the operator, helper identities, entrance/final frames and width inventory. Applying that change to the actual 4,770-call allocation of [PR3626](https://github.com/CrocSwap/integer-mult-bounds/pull/3626) gives + +```text +κ = 0.001730394391813963415120 − 10^-46 − 10^-70 +``` + +The improvement over that pinned direct predecessor is **0.00000032252710818353258**, or about **0.0186424%**. This is an achieved *conditional finite construction and transfer certificate*, subject to the inherited hypotheses below. It is not an unconditional multiplication theorem, an independently reviewed result, or a global-best/priority claim. This package does not update the selected frontier. + +[PROOF.md](PROOF.md) gives the exact edits, commuting argument, legal nested frames, complete paid profile, rational root enclosure and transfer dependency chain. [CREDITS.md](CREDITS.md) identifies inherited and parallel work. + +## Source and scope + +| Source | Exact pin | Role | +| --- | --- | --- | +| Canonical main | `20ecf2891d80b5acf18d980b2164fb44ea7faa90` | Native, allocation and admission infrastructure | +| PR3605 | `3efbb5de06a49ffeea6684482f2d3fe48cdca3fb` | Both original staged suppliers | +| PR3626 | `659fd5e7064d9466b668d7188cbb013b333a415a` | T530 allocation and complete release driver | +| PR3633 | `46c5aaca40117a4ca90a3316771ae52cf9a6801e` | Comparison only; its T488 allocation is not used | + +The direct predecessor endpoint is `0.001730071864705779882540 − 10^-46 − 10^-70`. PR3633 subsequently attained the old fixed-inventory ceiling at `0.001730096363528623534230 − 10^-46 − 10^-70`. Our result changes the local bill underlying that ceiling; no untested composition with PR3633 contributes to the claimed value. The larger difference from selected main's `0.001672660197076918` includes inherited improvements and is not attributed to this work. + +This was user-directed research. `TASK.json` retrospectively classifies it under the nearest `scalar-to-moment` card, with refined scope; it is not a claim that the task picker assigned this experiment. An overlap refresh on 2026-10-18 covered 348 open PRs and 2,454 discussions, plus local records; this search does not certify novelty. + +## Reproduce the bounded public checks + +From the repository root, with Python 3.12 and NumPy 2.5.4 installed: + +```sh +python3 -B scripts/research_package.py --package research/staged-release-retiming-t530 --check-only +python3 -B scripts/research_package.py --package research/staged-release-retiming-t530 +``` + +The publication run passed all five stages in about 24.2 seconds, with no package writes; see [PUBLIC-VALIDATION.json](PUBLIC-VALIDATION.json). This is bounded local verification, not hosted CI. + +The second command invokes `verify.py`, which creates a fresh temporary output directory outside the package and performs the following checks. Each component can also be run separately using its README. + +| Component | Freshly checked by the bounded command | Retained evidence / limit | +| --- | --- | --- | +| [local-audit](local-audit/README.md) | Minimal commuting/frame proof, both complete free-operator words, 632 arbitrary input columns, both orientations, 91 zero buffers and negative controls | Complete native receipts are authenticated, not rerun here | +| [owner-audit](owner-audit/README.md) | Reconstruct 1,946,160 literal roles; independently check ownership, windows, families, chronological prefixes, capacities and full invoice; five rejection controls | Native frame tables are authenticated inputs | +| [numerics](numerics/README.md) | Two rational root engines; 63 strict transfer inequalities, 17 rejection controls and independent balance derivation | Arithmetic alone does not prove the physical circuit | +| [packing-cap](packing-cap/README.md) | All 2,551 fixed-inventory patterns, exact dual and ceiling interval | A scoped relaxation bound, not a higher achieved κ | +| [full-admission](full-admission/README.md) | Public-file integrity and cross-bound recorded-summary checks | Does not rerun or reauthenticate the omitted complete runtime archive | + +The registered dependency closure includes the 13 pinned main files actually used by the bounded owner replay. Self-contained components authenticate their vendored inputs. The longer full replay has a separately pinned closure in `full-admission/MAIN-INPUTS.json`; it is not the bounded CI command. + +## Full scientific replay and recorded results + +The original scientific run freshly checked both changed native providers and completed all seven admission stages with exit code 0. Terminal statuses were `PASS_RELEASE` and `PASS_REPLICA_ORDER_FILL_DERIVATIVE_COMPLETE_RELEASE`. The stages took approximately 23.31, 47.11, 4.60, 483.59, 0.11, 0.02 and 661.05 seconds (about 20.3 minutes total, excluding the earlier native checks). Two unchanged native chains and the retained parent chain were authenticated and reused. The newly checked native results were reused within the admission run through authenticated caches. + +The complete run checks 4,770 calls, 1,946,160 roles, 474,880 live registers and 475,389 physical registers. Its global prefix bound is 1,479 bits; 1,512 reserve bits are required, within the 2,048-bit paid payload. The outer release independently replays 19 exact obligations. The release also reports 139 admission, 12 BIT, 15 controller, 8 independent-owner, 6 geometry and 8 reconstruction rejection controls. See the component receipts for their exact scope rather than interpreting every PASS as independent proof of the whole theorem. + +The public reproduction wrapper reconstructs the same **654-file source manifest**: + +```text +fb47533a401d1d13719be8b9aab91fe5313931ca62d40dba336eab6a96275aa0 +``` + +Its materialization path was tested. The seven scientific stages were executed separately on that identical manifest; the newly packaged all-in-one wrapper has not been rerun end-to-end. [full-admission/README.md](full-admission/README.md) gives exact installation, materialization and complete replay commands. Expect a long run outside generic CI, with enough RAM and disk for regenerated runtime files. + +To keep the public contribution small, it omits regenerated source/runtime/cache archives and the large generated literal fill. Actual non-main dependencies needed for reconstruction are vendored with pins and notices. Public command metadata replaces this session's private execution prefix with `$RESEARCH_WORKSPACE`; original-to-public SHA256 maps make those adapters explicit. The original full release receipt SHA256 was `80e1f422359d7c553493c1e0f2a1b4c4de230f8eb74690e1471a14d65169d110`. A normalized public summary is a publication derivative, not that original byte-level receipt chain. Reproduction regenerates the full chain; the quick summary checker makes only the narrower claims stated above. + +## Remaining assumptions + +All inherited all-size dispatch/compiler and recursive rounding arguments remain hypotheses. So do common-label and mutable-source realization, whole-call hosting, SCALAR/COPY/CLEAR and zero-allocation contracts, uniform coefficient/stock bounds, bootstrap, precision, tape/recovery, and the analytic/BIT H1–H5 premises. The finite symbolic and integer checks certify their stated finite instances and implications; they do not discharge those general premises. No formal-kernel proof or independent human review is claimed. The supplier-only endpoint `0.001727405299371541` in an inherited intermediate receipt is a different layer; the final source-bound modern outer certificate uses the κ displayed above. + +## Open next questions + +1. **Compose the retimed suppliers with PR3633's T488 allocation.** This may close some of the remaining fixed-inventory gap. First bind these exact words into its pinned release, regenerate all ownership/invoice artifacts, and rerun native/controller/outer admission. Blocker: this composition has not been tested; do not quote its predicted endpoint as achieved. +2. **Find another legal operator/order or helper-inventory change.** The present fixed-inventory relaxed root lies in `(0.001730418899766071163804, 0.001730418899766071163805)`, only about `2.4507952e-8` above the actual T530 root. First enumerate further adjacent commuting opportunities and derive their complete frame itineraries. Blocker: scalar savings alone do not change the paid profile. +3. **Discharge an inherited all-size obligation.** An improved finite certificate remains conditional. First isolate one compiler/common-label or rounded-precision implication and provide an independently checkable general proof. Blocker: current finite native and arithmetic checks are not that general proof. diff --git a/research/staged-release-retiming-t530/SOURCES.json b/research/staged-release-retiming-t530/SOURCES.json new file mode 100644 index 0000000000..e7ac22c3cc --- /dev/null +++ b/research/staged-release-retiming-t530/SOURCES.json @@ -0,0 +1,96 @@ +{ + "schema_version": 1, + "base_commit": "20ecf2891d80b5acf18d980b2164fb44ea7faa90", + "files": [ + { + "path": "certificates/selected-result.json", + "usage": "provenance", + "git_blob": "b1fea0c94436b236cc2b7d41a7be032811b94c81", + "sha256": "bb2eaa58647b353f88d0aec2eafb9d30df1be53589231b23e12ceef3e4bad129" + }, + { + "path": "docs/research/agent-task-catalog.json", + "usage": "provenance", + "git_blob": "67f085acd86acd7d4e03922d9cf4b26bca66fed5", + "sha256": "47b42433f5a85809a3aadd29c2c339da2c6ed728e4f7762df6b88bccb7874cf0" + }, + { + "path": "research/coupled-carrier-cap740/cap_check.py", + "usage": "input", + "git_blob": "8e06e8fadd03e943564322f2a75196d9007b5b47", + "sha256": "c2a2ea7df9ef2f7c7ae2739435f4ac44f2c912d8e18fc9278c717958f258ee38" + }, + { + "path": "research/coupled-carrier-cap740/common.py", + "usage": "input", + "git_blob": "deb060b34f6bd0e7a41d02cef6e01b13b99444a1", + "sha256": "8786495cbf808d950be1c42e42d0198e950e44167af80063d25fd186aafea534" + }, + { + "path": "research/coupled-carrier-cap740/vendor/PR3133-CAP.json", + "usage": "input", + "git_blob": "804edbf26529d259e473ec5c79b7755370001cdc", + "sha256": "e32f3ecd5e6594935583f80f643cf1930e8bc017e3c541025c335395a15cf19c" + }, + { + "path": "research/coupled-carrier-cap740/vendor/PR3133-CREDITS.md", + "usage": "input", + "git_blob": "24f00912d4ec829c3c8d2a8d086aa135664a124c", + "sha256": "1d9d8f56d8899f55878e4cb2c4e052b22506444016a51c2e678773505f5189e6" + }, + { + "path": "research/coupled-carrier-cap740/vendor/PR3133-FILL.json.gz", + "usage": "input", + "git_blob": "92b49b42b8f381d686a9fb8057e74e4b7548cd5c", + "sha256": "68b8bae90144248774b1920cd27f9519caa3dc427704d8a9da6d4c491d912fc4" + }, + { + "path": "research/coupled-carrier-cap740/vendor/PR3133-NOTICE", + "usage": "input", + "git_blob": "89c20926ea7f803718f751d95989d5a269908efd", + "sha256": "c9731c9cca25ede32c2a1b3aef6d5b249973cb2ed5fb2494407bdca598763661" + }, + { + "path": "research/coupled-carrier-cap740/vendor/PR3133-PROVIDERS.json", + "usage": "input", + "git_blob": "0b2343675099d0a9fe90da6e1f1e53f50235567e", + "sha256": "52eb0d85caa7b2d4a93acdf5011f52b793f61ddca86235fb03cd9a09397ad4cd" + }, + { + "path": "research/coupled-carrier-cap740/vendor/lift.py", + "usage": "input", + "git_blob": "717067dfce61c530205e8dad7ab3e76376f2c179", + "sha256": "ae6c1fee78fbdec26976ca74ca89f6aab2528d763c596f6573132cb54d57cd3c" + }, + { + "path": "research/rank7-joint-endframes/allocation/DISPATCH.json", + "usage": "input", + "git_blob": "9544fee4e6ee1f202cee22bfaeaf229ee3b2515e", + "sha256": "65e435bd68e97243c003677271b88485a29d4d0fae2dff1354100404a145e74c" + }, + { + "path": "research/rank7-joint-endframes/allocation/ORDER.json", + "usage": "input", + "git_blob": "7409c4df1092241729739596c7648bda504e6aad", + "sha256": "519d1d5dbb997a219fcfcad34c0b03e7838bef24199784d7e964fa10090f66e1" + }, + { + "path": "research/rank7-joint-endframes/allocation/vendor/PLAN.json.gz", + "usage": "input", + "git_blob": "7a1db55a4d53ee99280be4f3ab7d29f7b2033adf", + "sha256": "d566cfb87b71639d4138e1f89b543e2dd6a7772070226a2a14c799a6835bf21e" + }, + { + "path": "research/rank7-joint-endframes/allocation/vendor/TEMPLATE.json.gz", + "usage": "input", + "git_blob": "114808c32b1799da53524bdc25cea67efb60009e", + "sha256": "21297b20f1f2dc76eb9dd8124416068c3cb096bab9df17fa4da19bc68dfe082e" + }, + { + "path": "research/rank7-joint-endframes/allocation/vendor/independent_owners.py", + "usage": "input", + "git_blob": "16013201b19054f7e45398ecf10af74c9c6a9114", + "sha256": "77a848729159e271ba64f403dfd59dddb13044b17b2950fa56700f442e2fe461" + } + ] +} diff --git a/research/staged-release-retiming-t530/TASK.json b/research/staged-release-retiming-t530/TASK.json new file mode 100644 index 0000000000..12b15c5bf8 --- /dev/null +++ b/research/staged-release-retiming-t530/TASK.json @@ -0,0 +1,71 @@ +{ + "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": "refined", + "actual_scope": "Retiming two commuting release pairs in both PR3605 suppliers, deriving the changed complete T530 paid profile and conditional outer endpoint, and publishing reproducible evidence.", + "scope_change_reason": "Retrospective nearest-card classification of explicit user-directed research, not a task-picker assignment. The known staged suppliers replace the card example; the actual bottleneck is a legal frame-itinerary change rather than scalar-count reduction.", + "bottleneck_link": "The direct 1-to-4 frame jumps replace two H1+H2 pairs by two H3 children, strictly lowering the moment while preserving allocation interfaces.", + "stop_rule": "Stop this scoped contribution after exact local proof, full source-bound T530 release, independent arithmetic/owner checks, reproducible publication and explicit unresolved assumptions; do not infer untested compositions.", + "outcome": "completed", + "evidence": "PROOF.md; local-audit/; owner-audit/; numerics/; packing-cap/; full-admission/. The finite conditional construction is complete; all-size premises and independent review remain open.", + "author": "roger-sato", + "ai_assistance": "Substantial OpenAI Codex assistance for search, exact proof, code, independent agent cross-checks, integration and documentation; no independent human review claimed.", + "open_questions": [ + { + "question": "Compose with PR3633 T488 ownership.", + "why_it_matters": "May close the remaining fixed-inventory gap.", + "first_step": "Bind these exact words into its pinned source and regenerate full admission.", + "blocked_by": "Composition and complete release have not been tested." + }, + { + "question": "Find another legal word/order or inventory change.", + "why_it_matters": "The current fixed-inventory relaxation leaves only about 2.45e-8 root headroom.", + "first_step": "Derive complete frame itineraries for further commuting candidates.", + "blocked_by": "Scalar savings alone do not establish a paid-profile gain." + }, + { + "question": "Discharge an inherited all-size obligation.", + "why_it_matters": "The achieved finite certificate remains conditional.", + "first_step": "Isolate and prove a compiler/common-label or precision implication.", + "blocked_by": "Finite replays do not constitute a general proof." + } + ] +} diff --git a/research/staged-release-retiming-t530/VERIFY.json b/research/staged-release-retiming-t530/VERIFY.json new file mode 100644 index 0000000000..1b875e41d5 --- /dev/null +++ b/research/staged-release-retiming-t530/VERIFY.json @@ -0,0 +1,34 @@ +{ + "schema_version": 1, + "status": "ready", + "python": "3.12", + "requirements": [ + "numpy==2.5.4" + ], + "inputs": [ + "research/coupled-carrier-cap740/cap_check.py", + "research/coupled-carrier-cap740/common.py", + "research/coupled-carrier-cap740/vendor/PR3133-CAP.json", + "research/coupled-carrier-cap740/vendor/PR3133-CREDITS.md", + "research/coupled-carrier-cap740/vendor/PR3133-FILL.json.gz", + "research/coupled-carrier-cap740/vendor/PR3133-NOTICE", + "research/coupled-carrier-cap740/vendor/PR3133-PROVIDERS.json", + "research/coupled-carrier-cap740/vendor/lift.py", + "research/rank7-joint-endframes/allocation/DISPATCH.json", + "research/rank7-joint-endframes/allocation/ORDER.json", + "research/rank7-joint-endframes/allocation/vendor/PLAN.json.gz", + "research/rank7-joint-endframes/allocation/vendor/TEMPLATE.json.gz", + "research/rank7-joint-endframes/allocation/vendor/independent_owners.py" + ], + "commands": [ + { + "argv": [ + "{python}", + "-B", + "{package}/verify.py" + ], + "timeout_seconds": 300, + "checks": "Fresh local operator/frame proof and controls, literal owner reconstruction/audit, two exact moment engines and transfer, all2551 packing patterns, plus narrow recorded-summary consistency; not a full native/admission replay." + } + ] +} diff --git a/research/staged-release-retiming-t530/full-admission/ARCHIVE-OMISSIONS.json b/research/staged-release-retiming-t530/full-admission/ARCHIVE-OMISSIONS.json new file mode 100644 index 0000000000..86a5b83189 --- /dev/null +++ b/research/staged-release-retiming-t530/full-admission/ARCHIVE-OMISSIONS.json @@ -0,0 +1,17 @@ +{ + "archives": { + "admitted-package.tar.gz": { + "bytes": 80312588, + "original_sha256": "f241147afc11ddb69b35ca331b473490d73d99ff5f32b24e2bcc64a19e0faa9a" + }, + "derived-source.tar.gz": { + "bytes": 30592850, + "original_sha256": "bb0c77c2b31412affe09217636188d11741a8470692517b01a9cca0200dab8fc" + }, + "native-cache.tar.gz": { + "bytes": 1833263, + "original_sha256": "33a48e1004ee2376920e9f28db14fe3b26afb296a2226667f7b992fa8fefd8a4" + } + }, + "scope": "Original generated archives intentionally omitted from this public derivative; hashes are historical provenance, not proof of public payload availability. All scientific gates remain in the separate full replay recipe." +} diff --git a/research/staged-release-retiming-t530/full-admission/LICENSE b/research/staged-release-retiming-t530/full-admission/LICENSE new file mode 100644 index 0000000000..261eeb9e9f --- /dev/null +++ b/research/staged-release-retiming-t530/full-admission/LICENSE @@ -0,0 +1,201 @@ + Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + + APPENDIX: How to apply the Apache License to your work. + + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "[]" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. + + Copyright [yyyy] [name of copyright owner] + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. diff --git a/research/staged-release-retiming-t530/full-admission/MAIN-INPUTS.json b/research/staged-release-retiming-t530/full-admission/MAIN-INPUTS.json new file mode 100644 index 0000000000..688aa927f7 --- /dev/null +++ b/research/staged-release-retiming-t530/full-admission/MAIN-INPUTS.json @@ -0,0 +1,546 @@ +{ + "base_commit": "20ecf2891d80b5acf18d980b2164fb44ea7faa90", + "scope": "Frozen ancestor bytes exported explicitly by reproduce.py; no unmerged PR Git objects or network access required.", + "sha256": { + "LICENSE": "c71d239df91726fc519c6eb72d318ec65820627232b2f796219e87dcf35d0ab4", + "research/adaptive-kernel-demotion/inputs/PR589-EXPECTED.json": "b9f0e5ca038abe837b0007c8fe006f366a6f02009244ac57705a8a200e2301f4", + "research/adaptive-kernel-demotion/local/vendor/clifford/clifford_exact.py": "2982ead07721e83358dc67c6f49c2b4c16a236a6bebdfd72f58221be1f5d0962", + "research/anticipatory-dirty-borrowing/NOTICE.md": "f1d45d886926915531e3a59968abf0a4c974d7038f869848e71bd3a21b834422", + "research/anticipatory-dirty-borrowing/operators.py": "b37b67a04681c776dafcdc6c9af0e8a2dbfa9893b02e0fa2d77ccc9182a87988", + "research/anticipatory-dirty-borrowing/replay.py": "0f9a47cdaeed0e22938c63251c232d6f23aeee2b62b0b1223cd4473c5428bcf7", + "research/aphase-residue-composition/.gitattributes": "705fd4d6451a31d36b3df7de96f83f30ac976c9b4a6d1e51671d8e2f33e2d0da", + "research/aphase-residue-composition/data/DISPATCH.json": "2d178ebfbf3147d1f844897c779d151e04a0b9f480cbf57b76add4a24b8858ee", + "research/aphase-residue-composition/data/ORDER.json": "30856f042860e5b5c613357b236ff643f107d7d70e2c64eb5fcaaa09bf81a90d", + "research/aphase-residue-composition/evidence/full/candidate/release/verify/GEOMETRY-CONTROLS.json": "13a50b2f2448931ca302a55e5839c082f651331f20402448fe6ff29d1eb2f481", + "research/aphase-residue-composition/evidence/full/native/native-cache/7b0e9fbda32749aabc7e156d9fe09bceb0624a178628fe69e5dfea783462f905/ledgers.log": "2f40f12c67d436dde2ea415ea3e033ec60a9d43cc71427dcc1bf987962da34d7", + "research/aphase-residue-composition/evidence/full/native/native-cache/7b0e9fbda32749aabc7e156d9fe09bceb0624a178628fe69e5dfea783462f905/local-replay.log": "dd643a58258431c3b07d3b06d9060c49677fa23b4fafc9f10988ed1f6867bd9a", + "research/aphase-residue-composition/evidence/full/native/native-cache/7b0e9fbda32749aabc7e156d9fe09bceb0624a178628fe69e5dfea783462f905/local/CANONICAL-WORD.json.gz": "e38e2136e5a4a75bb843735a59158543eff04bd06384d73752b220d6938af73d", + "research/aphase-residue-composition/evidence/full/native/native-cache/7b0e9fbda32749aabc7e156d9fe09bceb0624a178628fe69e5dfea783462f905/local/CLIFFORD-RECIPES.json": "cf410b60c9e3d9e7f99d94b5b28c4e3ae61c4b32892df4e03257b60fe5a37b02", + "research/aphase-residue-composition/evidence/full/native/native-cache/7b0e9fbda32749aabc7e156d9fe09bceb0624a178628fe69e5dfea783462f905/local/FULL-WORD.json.gz": "7b0e9fbda32749aabc7e156d9fe09bceb0624a178628fe69e5dfea783462f905", + "research/aphase-residue-composition/evidence/full/native/native-cache/7b0e9fbda32749aabc7e156d9fe09bceb0624a178628fe69e5dfea783462f905/local/INDEPENDENT-LOCAL-REPLAY.json": "39874d664110d1ee85da901e2cd56e7cd0f27e0153813d4608c98122a90815da", + "research/aphase-residue-composition/evidence/full/native/native-cache/7b0e9fbda32749aabc7e156d9fe09bceb0624a178628fe69e5dfea783462f905/local/LOCAL-CHECKS.json": "ef01cb5b6d1779518282c69a20d1dbcdbf57cb89ba616e2101bb209b37d80286", + "research/aphase-residue-composition/evidence/full/native/native-cache/7b0e9fbda32749aabc7e156d9fe09bceb0624a178628fe69e5dfea783462f905/local/LOCAL-PROGRAMS.json.gz": "26c2fd119125bfca1ae655bb8a57df064da250370e60a85e1e8e8c4649e6a904", + "research/aphase-residue-composition/evidence/full/native/native-cache/7b0e9fbda32749aabc7e156d9fe09bceb0624a178628fe69e5dfea783462f905/local/RESIDUAL-ADAPTERS.json": "0102fa3b62b095c14a34d5af95cc321db38e5f5e03a4f226828e8ebf6fdbe20b", + "research/aphase-residue-composition/evidence/full/native/native-cache/7b0e9fbda32749aabc7e156d9fe09bceb0624a178628fe69e5dfea783462f905/local/WRAPPER-CHECKS.json": "84a5bc26df5fb70dc12852a868962bcdfad3b85d85408edfd1f343e898a78c0e", + "research/aphase-residue-composition/evidence/full/native/native-cache/7b0e9fbda32749aabc7e156d9fe09bceb0624a178628fe69e5dfea783462f905/wrappers.log": "74b13cf8570ca2f32ce0018575b1b73e95af77a28e59d09556fec59260bdbba5", + "research/aphase-residue-composition/evidence/full/native/native-cache/e8e6e78ff7422275c38324499e1f33fb2ecd30de9503aef2b8f1ee80d8c4df8e/local/CANONICAL-WORD.json.gz": "f69c0ca2c217eab87a231b67e548cd6491286314b1215e19f0b1d7463afd5e91", + "research/aphase-residue-composition/evidence/full/native/native-cache/e8e6e78ff7422275c38324499e1f33fb2ecd30de9503aef2b8f1ee80d8c4df8e/local/CLIFFORD-RECIPES.json": "f1b5a509e39293f5d7ffea7b269fd9e5443e625a9286a022caa1fd4b62af8063", + "research/aphase-residue-composition/evidence/full/native/native-cache/e8e6e78ff7422275c38324499e1f33fb2ecd30de9503aef2b8f1ee80d8c4df8e/local/FULL-WORD.json.gz": "e8e6e78ff7422275c38324499e1f33fb2ecd30de9503aef2b8f1ee80d8c4df8e", + "research/aphase-residue-composition/evidence/full/native/native-cache/e8e6e78ff7422275c38324499e1f33fb2ecd30de9503aef2b8f1ee80d8c4df8e/local/INDEPENDENT-LOCAL-REPLAY.json": "70b4b787a5a4529452a58e9ac48826e848748a35b95a9b20c5358f4355705058", + "research/aphase-residue-composition/evidence/full/native/native-cache/e8e6e78ff7422275c38324499e1f33fb2ecd30de9503aef2b8f1ee80d8c4df8e/local/LOCAL-CHECKS.json": "e52e7feece9cb22e83c1d687c0f98731f8d50b7e8c863732ec662c89453fbcd4", + "research/aphase-residue-composition/evidence/full/native/native-cache/e8e6e78ff7422275c38324499e1f33fb2ecd30de9503aef2b8f1ee80d8c4df8e/local/LOCAL-PROGRAMS.json.gz": "81d4aefacaa27f2f215e7d35559d5a079ca521f4ca2eb9a9c6a6bd7062179bff", + "research/aphase-residue-composition/evidence/full/native/native-cache/e8e6e78ff7422275c38324499e1f33fb2ecd30de9503aef2b8f1ee80d8c4df8e/local/RESIDUAL-ADAPTERS.json": "89e5779ba4fcc1b1a76bed05c9b36600bc1dc3c6efd7e623865692ec715c30c5", + "research/aphase-residue-composition/evidence/full/native/native-cache/e8e6e78ff7422275c38324499e1f33fb2ecd30de9503aef2b8f1ee80d8c4df8e/local/WRAPPER-CHECKS.json": "fc7e24778302326fdacfd08dd3d5e63483cf4539cd5022a6c77f016752fac1a3", + "research/aphase-residue-composition/independent/provider/GLOBAL-TEMPLATE.json.gz": "1d31424c4e27e26a35a9932ca778e43f1f3577589275422cc642aa68b31112db", + "research/aphase-residue-composition/independent/source/PR2827-SOURCE-NOTICE": "ee0c73ca35877aad0e0b6adc560a3881cb82276dba4cf2d4fc58cd19e57cc420", + "research/aphase-residue-composition/independent/source/PR2833-NOTICE": "a91b93a731f116ae55b3644c88232b4d996e58bb810e2559dec013f9788f5e4b", + "research/atlas-frontier-applications/vendor/pr2848/sources/PR2833-DISPATCH.json": "fd8132ec8957b908ee6d871216848f18bafc6bd9304acd6185519ee26d97b1ca", + "research/atlas-frontier-applications/vendor/pr2848/sources/PR2833-FILL.json.gz": "0cb7522e071ff064ada2efec169e23a2fe7d3daf928eec6ba752b166cffb3468", + "research/atlas-frontier-applications/vendor/pr2848/sources/PR2833-ORDER.json": "aa7c53c188c90fd74421a804f4c6fb13aa1187c06dbac51fa147830a40e00667", + "research/atlas-frontier-applications/vendor/pr2848/sources/PR2833-OUTER-CLAIM.json": "6f2c4195f0226c5a7f9ba604bc038cfd4100ba3caeeac8ed2defb6fb00632b70", + "research/atlas-frontier-applications/vendor/pr2848/sources/PR2833-PLAN.json": "163431bf8d3bc0d9b894994b1a3cfa7947367b2243b3c0b3a97d740195a1cb08", + "research/atlas-frontier-applications/vendor/pr2848/sources/PR2833-T37-TEMPLATE.json.gz": "21297b20f1f2dc76eb9dd8124416068c3cb096bab9df17fa4da19bc68dfe082e", + "research/atlas-frontier-applications/vendor/pr2848/sources/PR2833-WORD-base.json.gz": "dda9878455b3a3bec64ca16b1ac7789bbf5ffb603d5713b8df8644485e85b1b7", + "research/atlas-frontier-applications/vendor/pr2848/sources/PR2833-WORD-extra.json.gz": "bbe6bcba59e45e827a8e932ee4b23650d56ed4a0b8e0875c14f23c36b9e47eac", + "research/atlas-frontier-applications/vendor/pr2848/vendor/pr2839/lift_parent.py": "9a1edd7d4ab4a2f2ac8d15b42b7e40f93653d65026bac59e4c1ce80b486bd60e", + "research/atlas-frontier-applications/vendor/pr2848/vendor/pr2839/reconstruct_replica.py": "5472811c24aef3852dc7e189dff5060076a6c0b25bfde928da50dcfe9b5bdc15", + "research/atlas-frontier-applications/vendor/pr2848/vendor/pr2839/replica_parent.py": "48bdbf28f59d80edb266803ec61bf5e22e8fb5e5a0e2b88004b6039147589bd4", + "research/audit-helper-endpoint-indices/inputs/BASE-WORD.json.gz": "eeb6a236ed0ea8873b8800947d0cd19c36a6fcfdf857fc42913cb45cd984f219", + "research/audit-helper-endpoint-indices/inputs/EXTRA-WORD.json.gz": "cd417b904408c221d9840d08faff8af040cc4207f9804284f2f5375d21298a62", + "research/capped-fusion-t74-k554/ADMISSION-DERIVATION.patch": "7021000d75635fc5806af821640c02f9d7cbbbe1cf314dacfcc743fc6875fdd8", + "research/capped-fusion-t74-k554/CONSTRUCTION.json": "1cdadc74fef4cddeb2bae5e32fff7bc27456740150440ae8fda8822f569c2492", + "research/capped-fusion-t74-k554/NOTICE": "3918a42010a435782de0fe8c38fab8f7df5d48a375ecf603c2bad1b818a16d6f", + "research/capped-fusion-t74-k554/PRICE.json": "c5ec535fd9edbdec7b64edd5a8b862edb1a7f173d411dacb279172659573e16a", + "research/capped-fusion-t74-k554/SOURCE-PIN-REFINEMENT.json": "8c0bad79978decd6f8aba0932c0a94c7f61c64bf9ce5a19a36f67cc1390bf74f", + "research/capped-fusion-t74-k554/SOURCE-PIN.json": "66faac1fd4e79bb6d9fc774fd8ba63522ad3309456be1c81405794b284c55c83", + "research/capped-fusion-t74-k554/audit_fast.py": "26950da76589b13cd9c452fdee1b0c354806977f881299bd94073f00e4646fcd", + "research/capped-fusion-t74-k554/audit_mixed.py": "7466461cc15cbb12135d94f2d904d4e90e78cbf4755d0293ab9bd55e3568d4b0", + "research/capped-fusion-t74-k554/code/bind_providers_portable.py": "1d39bcc7b63ac158e021454beaae897d123e174360573762aecade3cd43193f6", + "research/capped-fusion-t74-k554/code/bit_supplier_controls.py": "e6d33fb61a570c3f50669412acc467a3fd06ef0b806da6a75bc296c6ba2142a5", + "research/capped-fusion-t74-k554/code/exact_coarse.py": "5fd03ee160a8bb02a00927cb144359fbcf8b0ec323ae0662778dd1f655b4a216", + "research/capped-fusion-t74-k554/code/fine_cache.py": "89282a83ab102893a4fc1e663ad2137d891d81e843b1c9ea140d13e58b7c7dbd", + "research/capped-fusion-t74-k554/code/freeze_spec.py": "e9132a9d195c66123f2747a17f7ef404b4d1e3ef6263ab4c28c983a052cf10bd", + "research/capped-fusion-t74-k554/code/generated_identity.py": "c8af22719c0f3097a991a3f6ccac8f090afd2faba554745733d9ea88f2c25708", + "research/capped-fusion-t74-k554/code/oracle_check.py": "4836046db4bec939515a5a272559f92192b56612b98f635910fd81ea754ce2e1", + "research/capped-fusion-t74-k554/code/prepare_global.py": "8c0dae301a8f34b77a5a462f840952d08ed120576212adf5051bc09bcad874dc", + "research/capped-fusion-t74-k554/code/restore_parent.py": "69b7b25ff85e9b8160e233c1d415cc6a0272019e5c486dcec14cb6c349e7024d", + "research/capped-fusion-t74-k554/code/witness.py": "08ca58abff11bdfba721dc56ab8acf06ec1b7c48a8699a0955cf35324680aca7", + "research/capped-fusion-t74-k554/construction/leaver/PIVOT-SWAP-k8.json": "3ef7acf0cf67442a532f25b53d5fbeda76d3a84524118df8e003ca69b5cac0bb", + "research/capped-fusion-t74-k554/evidence/ADMISSION-CONTROLS.json": "5cdefeff2516a67c4dd60e609019b3e2e38eb3d43142df2d3c7ed9a6822d5050", + "research/capped-fusion-t74-k554/evidence/ASSEMBLY.json": "5d9eb1ce551386024b5b6894836f81ed03a83d2e0c0bd0e02e3f6410a596bb2c", + "research/capped-fusion-t74-k554/evidence/BIT-CONTROLS.json": "d74d9d2ba363c3709e9a3b33abf6d14abd6b9c68d950b35b7669d8e6edefa59e", + "research/capped-fusion-t74-k554/evidence/FULL-ADMISSION.json": "cda48de718d060b8ca329f1254f4f999a5a5bade5cecabb265f0a9bef1135089", + "research/capped-fusion-t74-k554/evidence/OUTER-DISCOVERY.json": "413ef3e9eb1c3ff680cff1e600dc7160afda228e0b6b021c1a4e4a37ee486cc1", + "research/capped-fusion-t74-k554/evidence/REGRESSION37-CONTROLS.json": "0196ae228d583f2bac3c42d3576a8d378fe622592e377c4c1921b5ae81351854", + "research/capped-fusion-t74-k554/evidence/pr1377/CLAIM.json": "cd089b08077e0151b9ed917a5c33aa7aa6b0de790bd9567442531b48729da8d3", + "research/capped-fusion-t74-k554/evidence/pr1377/PROOF-NOTE.md": "dafd8286b1c9224ed6f50bf71bc34b77918323b936ea7427a4b71c3b644b2264", + "research/capped-fusion-t74-k554/evidence/pr1377/RELEASE.json": "a4fa2ca0f79a11dcdc3227ad16a408d4d22d83b7401c894cb0e31eb2c9c5f7df", + "research/capped-fusion-t74-k554/freeze_spec.py": "0f5c8ad43180a633a2cbbd11f7832729039402c68f593679552c43a1693d69fa", + "research/capped-fusion-t74-k554/geometry_controls.py": "7edb4732b34e5814b27650a55c938626cb50d68f06397744dd4fe451437e90e0", + "research/capped-fusion-t74-k554/inputs/DISPATCH.json": "b7b971df9dce435556145df307e2bb5138d87e5aa933f1fe61fcc5b5163301c4", + "research/capped-fusion-t74-k554/inputs/OWNERS.json.gz": "3a56f578b2db5647cf6cb811bc6263c7a802ae3e31e9e672596d43185e4e5c9f", + "research/capped-fusion-t74-k554/inputs/SPEC.json": "2daedf579c8abf30ceed79fe739bdd7659fce4c514de3894a028933143265d98", + "research/capped-fusion-t74-k554/new/CHAIN.json": "f18804a71bef7005e892b0b7baac818d5362fff685fe5b5aadfe8de6e442446d", + "research/capped-fusion-t74-k554/new/EDITS-1.json": "dffa640c04d71111d3e4bdd7f5a991450ba07049a1d434edeef84791c0cc2d05", + "research/capped-fusion-t74-k554/new/EDITS.json": "d5f9a0444dddcccd35c0217f60dbd6863486241629a747c3bbe4140b3d55eea1", + "research/capped-fusion-t74-k554/new/pivotcheck.py": "6eb1752f077df108c908974413fc71abc751356b07c6e650e75d2075f1a51391", + "research/capped-fusion-t74-k554/new/rebuild.py": "7391a7228d6b5afc2f88afd5d5a987565d78a100386c1f03b8696bcde2e8ef3e", + "research/capped-fusion-t74-k554/new/rebuild_chain.py": "3a5739f94f0fea1aa267e7d12e1c986210e483c841a8855e11020128a017510f", + "research/capped-fusion-t74-k554/new/steps/0/extra.json.gz": "17cc6c177c89eb264514e1efb3685ab9a621f3952a8f393a6a5eb28cf77e2884", + "research/capped-fusion-t74-k554/new/steps/0/gauge44.json.gz": "0740b6f33927b9e60c9a7f35e7fcb2fd9ac6e2d3982112428b302a6966a18c73", + "research/capped-fusion-t74-k554/outer/RECT-BOUNDARY.md": "17ece1cc1eb4a02df4d8433e3612231768633e6674d315acbcf880f36e30bdc7", + "research/capped-fusion-t74-k554/outer/check_fine_padding.py": "a0ae691251cc50ba20b7f23f89fffaed802d62f9192a441131476914a5bdfae8", + "research/capped-fusion-t74-k554/outer/independent_check.py": "a5a0361539ec7cae9eb6c0371f857919335a1720040f22af291aa3e34fc864c7", + "research/capped-fusion-t74-k554/outer/replay_evidence.py": "d3bdcfc8ce29865b3a76d64d99b5177e73fe994a2eb915f35fa233c5ab81df65", + "research/capped-fusion-t74-k554/outer/sched_review.py": "f440a57f1f46119ee8c2934c8f0d618ca1c85c73cda8cfb8453c2aa1b9fc40fb", + "research/capped-fusion-t74-k554/outer/sched_test.py": "f96d09b5990931e3df8cea291520bf17c424215748cd9ec068214c58309a21c8", + "research/capped-fusion-t74-k554/replay.py": "3ec4330ede0db3c6daa453b0366817be9435c85c8c3213a0c35c442c96c1a955", + "research/capped-fusion-t74-k554/vendor/build_parent.py": "82e274d0c7a94f9bf0468dd37f0505d0c42017559ebb4ba8c079a1f4e403d91e", + "research/capped-fusion-t74-k554/vendor/pr1297/CLAIM.json": "bc9e90a475333b957a8c4eae8b950988caea89e20e9b44a919e83415fb76b1b8", + "research/capped-fusion-t74-k554/vendor/pr1297/COMPOSITION.json": "6fb74e73fd298b356402eb2fbcd625463b2fa540a6be4ef2d6335ddfa31d70f6", + "research/capped-fusion-t74-k554/vendor/pr1297/CONSTRUCTION.json": "fb5f74f59c89b93c63ec47e32e2c9264658e115d1f21eed3eceefec7dc7a0cde", + "research/capped-fusion-t74-k554/vendor/pr1297/CONTROL-SITES-base.json": "b41361f5a2f6ab3d223c146269c8027a0537f1a6e3c963f28cf1ebbe05c5d7e2", + "research/capped-fusion-t74-k554/vendor/pr1297/CONTROL-SITES-extra.json": "f1aada769389ec410b41bc9e2082826bb916b8332c915ee9e07045135c30393b", + "research/capped-fusion-t74-k554/vendor/pr1297/DEPENDENCIES.json": "9c9fff3ac059da4d4e2f13e655afb9e42ada1a57987f5b47b68dda4b64797966", + "research/capped-fusion-t74-k554/vendor/pr1297/EXACT-RELATIONS.json": "6864f378d917d0ecfd8cd53cc26303217ebb48f47f2987bbc01cf1e2c9a28093", + "research/capped-fusion-t74-k554/vendor/pr1297/INDEPENDENT-DERIVATION.patch": "6b3af098ec1c9e2360a366933eb7fbf0e16ebb37d43809d26b275e66fb5ee779", + "research/capped-fusion-t74-k554/vendor/pr1297/KERNEL-CONTROLS-base.json": "cbe755333f469a1f01258b65f2b273763212dba6642edabfb58f7490f326abda", + "research/capped-fusion-t74-k554/vendor/pr1297/KERNEL-CONTROLS-extra.json": "cf255deb866ecaefca4b6ecb72f105d6b08dc8ea907a8381d45aedc39b2022cf", + "research/capped-fusion-t74-k554/vendor/pr1297/MANIFEST.json": "e0eefc96567fbb45e19e6de0ca295381dbe0e686c08ddc783639b065c7c791d4", + "research/capped-fusion-t74-k554/vendor/pr1297/MAPPED-RECIPE.json": "09aca649da97a37116262827cbd3ebe0addcd2b1a33c08e8347f3daf3394176a", + "research/capped-fusion-t74-k554/vendor/pr1297/NATIVE-VALIDATION.json": "755b7087e0ae964c538e9378311e07dba2867c16b568d1bf6ae9051657f9f5cb", + "research/capped-fusion-t74-k554/vendor/pr1297/NOTICE": "b352129a07fc8693f57c77cbb0ea92230b2fa77439f86c9f35b828213f9c42db", + "research/capped-fusion-t74-k554/vendor/pr1297/PRICE.json": "e19f9f9e70e4fda2bc4a39fae93ea44555945cdaea59728864c5a44dcc5522e6", + "research/capped-fusion-t74-k554/vendor/pr1297/PROFILE.json": "d9bbe0d73ba005749615915a2d884819a6b141e3402d9e7f87f4592a2d27af99", + "research/capped-fusion-t74-k554/vendor/pr1297/README.md": "102ac7f080c1799aaedd5345ffb3631845215e8ab770e2af34750c25f667686d", + "research/capped-fusion-t74-k554/vendor/pr1297/RECIPE-base.json.gz": "0f2db2c658e9732fdd1aeb7bbbb5c786d6045de8a2575b7654b9e6fddc71b03d", + "research/capped-fusion-t74-k554/vendor/pr1297/RECIPE-extra.json.gz": "9e6f58570b0a8f9e8271bfbc73a339fce42f1cf28bf14d4db93f246b8f63a3c9", + "research/capped-fusion-t74-k554/vendor/pr1297/SEARCH-RESULT.json": "7cdacadcbbf83b81f9f91668fcc707f8a238c6025f35a8bdc36758619c2591c4", + "research/capped-fusion-t74-k554/vendor/pr1297/SOURCE-PIN.json": "e93f303f4de383757e50d612ada5e379533d46737a32281aa6879fb4b6138e09", + "research/capped-fusion-t74-k554/vendor/pr1297/UPSTREAM-NOTICE.md": "b97fb4731e84aef736c58a9c126334eb5b8d3a057a8d9d45b4ffff24af65c38b", + "research/capped-fusion-t74-k554/vendor/pr1297/VALIDATION.json": "1008f637a22f954ee774920a8362931ca7cfed63ca146e725768c0f39803c0a5", + "research/capped-fusion-t74-k554/vendor/pr1297/build_word.py": "ff08af2851b4813c113ef63113566cbd79625e9310611292913d51be554b5aa9", + "research/capped-fusion-t74-k554/vendor/pr1297/construct.py": "71aff454291d4a35068c43dbb65c00ff511f48e91ab7cdada462833f04ac73e3", + "research/capped-fusion-t74-k554/vendor/pr1297/controls.py": "935cf39ed6601eb6ac411b7b1a4adf5d4238589cad9fd5969d7dca967ace4c4b", + "research/capped-fusion-t74-k554/vendor/pr1297/independent_core.py": "d1dcd5593a05cf647b485db38891984f829abea5f95c6cc91e37d554bf163d48", + "research/capped-fusion-t74-k554/vendor/pr1297/inputs/base.json.gz": "b87c706d14a7e1972514ee901002a930908073811ef38761def31c8e36351916", + "research/capped-fusion-t74-k554/vendor/pr1297/inputs/extra.json.gz": "ded6903e00deb9e158fa700b03ccc9b8bfaae6c8bad8ca4842f0ad9b963234ab", + "research/capped-fusion-t74-k554/vendor/pr1297/kernel543_controls.py": "ac16d605e773197e3664643d40b36c15a7130a45e95e36bfe7b42d939644367c", + "research/capped-fusion-t74-k554/vendor/pr1297/kernel_controls.py": "436e3f3d9974da7c1968ef99fdde5ad203a61544d8195493e3150eb25869f4dc", + "research/capped-fusion-t74-k554/vendor/pr1297/premise/inputs/CODED-CELLS-k8.json": "7347f814850a838bd617bc7a55c307cec2b72becde2f12ea3e2e1af344b43563", + "research/capped-fusion-t74-k554/vendor/pr1297/premise/inputs/TRI-LEAVER-k8.json": "b22e6ecf76104de66844bd617c4ca80f5546ba0966a50e5e9aa0ffea4976cb30", + "research/capped-fusion-t74-k554/vendor/pr1297/premise/premise_check.py": "28a7f881a988b29b8ed3c927dd142ac3d4ee273dedab3a65bb02c01a64eb2639", + "research/capped-fusion-t74-k554/vendor/pr1297/premise/verify_1049.py": "a1736324c6db161733d8e11f608defd87b7f97cacd611203d22499e4c7de5545", + "research/capped-fusion-t74-k554/vendor/pr1297/replay.py": "d3ea7c2e74ff6df9d14969f994eaa85f825372cee92dafb77bec4767edb242e7", + "research/capped-fusion-t74-k554/vendor/pr1297/search_relations.py": "58f3bd092cb8592a070d7879918ff318a658a6fa02bfad7b5b8f4cb0fe16691c", + "research/capped-fusion-t74-k554/vendor/pr1297/upstream-layout.tar.gz": "a0cc229bb0fc9ab8ee5c14d5de87b3de31d1fcb793e99192c9cdc63781e794a0", + "research/capped-fusion-t74-k554/vendor/pr1297/vendor/pr1193/CLAIM.json": "b9db2fbfb004b505ad535e4763915275dc5908feaefef32e65863fa65de061ff", + "research/capped-fusion-t74-k554/vendor/pr1297/vendor/pr1193/DEPENDENCY-PINS.json": "c9330aa6a4226c804060499429cb450820d7142ab17696eb47408b04b410b5bc", + "research/capped-fusion-t74-k554/vendor/pr1297/vendor/pr1193/MANIFEST.json": "4837d070679d9e70218c7cfa2d3e70d7d742a5b74dc66d224840b1a3a4ac4a31", + "research/capped-fusion-t74-k554/vendor/pr1297/vendor/pr1193/NOTICE.md": "c7a17a0a35dc249f8ebcc550b3791e214aa65872eab8a6458c5167dd7b948e5b", + "research/capped-fusion-t74-k554/vendor/pr1297/vendor/pr1193/PROOF.md": "b2a38120ddb75e90764d0b81913d60b46cddac4d943cb731bd9c7134f1c236d1", + "research/capped-fusion-t74-k554/vendor/pr1297/vendor/pr1193/README.md": "cdcf62624912150ce4e6e05356c27299251eef4cfc130e4f209839cdabc05e08", + "research/capped-fusion-t74-k554/vendor/pr1297/vendor/pr1193/SOURCE-PINS.json": "08eed0d6822a1c17053161929591e7ac36b9f91f8fd61190183a6d975948db85", + "research/capped-fusion-t74-k554/vendor/pr1297/vendor/pr1193/audit.py": "1118d483b6abbe7036390c0a1053bcfec2038dbac273fd1bac92a68f38e6d7da", + "research/capped-fusion-t74-k554/vendor/pr1297/vendor/pr1193/build_word.py": "effb72aecfff9958fe078ee89e0d37b85d601eddb19fec4520d7ee6e936edfae", + "research/capped-fusion-t74-k554/vendor/pr1297/vendor/pr1193/common.py": "274274df31f8ef2a47b801d1f30ec226f94bce674fe15586d814ca754f6b7785", + "research/capped-fusion-t74-k554/vendor/pr1297/vendor/pr1193/construct.py": "3dd333b50f4bd1d86956a6df4a334ed746d75d0a9e03dfadbb6724b4356e0cd6", + "research/capped-fusion-t74-k554/vendor/pr1297/vendor/pr1193/controller.py": "d93ed519a0f2316b87b66f44c5ea615f0768a263dbd800815b536d8b7c86b8b7", + "research/capped-fusion-t74-k554/vendor/pr1297/vendor/pr1193/controls.py": "574c55a01cfc34f5b9688cdec5646160cf22b403decee36d18b11f1b07e71f21", + "research/capped-fusion-t74-k554/vendor/pr1297/vendor/pr1193/data/FLOW.json.gz": "e8e6dfa66e083ff8f3617a8441b5b2d766c3c9d9ac62ddc37d99edc24051f79e", + "research/capped-fusion-t74-k554/vendor/pr1297/vendor/pr1193/data/FOUR-RECIPE.json": "384b32c5b0e9b3baa1c7232db884809596d30fc55553094245f7b739b1a43484", + "research/capped-fusion-t74-k554/vendor/pr1297/vendor/pr1193/data/FOUR-WORD.json.gz": "7d09ee1b8b9881313e5fb1f623c0961d59b0c6352a019bc9164a6cad8c58e27f", + "research/capped-fusion-t74-k554/vendor/pr1297/vendor/pr1193/data/MIX.json": "dd86bbb792a5c9f0d7507d55bd2f8392c66716023934b03b24f48ca737204eea", + "research/capped-fusion-t74-k554/vendor/pr1297/vendor/pr1193/data/ORDER.json": "7757df3b54ca5e84c6dba9563b10bc6215c5e289313392b5a4b493179a245c29", + "research/capped-fusion-t74-k554/vendor/pr1297/vendor/pr1193/data/PLAN.json.gz": "1f1085beb84b516b9a96ceaedc6c3de1c58941fd00b6e70f0d0c686b6546ff79", + "research/capped-fusion-t74-k554/vendor/pr1297/vendor/pr1193/data/SPEC.json": "82b263990afdc5efdc1dfe38ae16d7815004dff8d70f85c28fd8286c31f688bb", + "research/capped-fusion-t74-k554/vendor/pr1297/vendor/pr1193/evidence/ANCESTRY.json": "cd880b2d1c2fb8d9050458bd13f228385c417a95e4d1985607d9f4bb60b5c109", + "research/capped-fusion-t74-k554/vendor/pr1297/vendor/pr1193/evidence/ENTRANCE-CONTROLS.json": "7b101dd97c1025667fb3615930a9d6cd2ec443169d263a3bc1191b80fc712a1f", + "research/capped-fusion-t74-k554/vendor/pr1297/vendor/pr1193/evidence/FLOW-CONTROLS.json": "43fe7e94bd72607d502ed947ac1463405be18728eb0b8faabd7ba63ab1d28ab4", + "research/capped-fusion-t74-k554/vendor/pr1297/vendor/pr1193/evidence/INDEPENDENT-OWNERS.json": "4c295ff53f51631e1720b0dc2ea895c34861435fa92112ee52439e4569de968a", + "research/capped-fusion-t74-k554/vendor/pr1297/vendor/pr1193/evidence/PARENT-CHECK.json": "2b729fd666ffe4e34a355223b57f74ba460fb171b19c84f260378dd109f0b9a0", + "research/capped-fusion-t74-k554/vendor/pr1297/vendor/pr1193/evidence/PRICE.json": "a1dac219b019f8d40d5b434b0e0c25b0d1f097fe5ae13eae45c76869aec4758b", + "research/capped-fusion-t74-k554/vendor/pr1297/vendor/pr1193/evidence/RAW-demote3.json": "02150d4cb1b2f4763b5c5c20ce979c740cbdfc1066e021a8aa5d407de5c4b9d3", + "research/capped-fusion-t74-k554/vendor/pr1297/vendor/pr1193/evidence/RAW-demote4.json": "7adf0070125b2c61e04d46c5f1cbf57af079eb733799bbfcc3fe9b0551d964b1", + "research/capped-fusion-t74-k554/vendor/pr1297/vendor/pr1193/evidence/REPLAY-SOURCE.json": "a5a290aa8c75fffa45c9ad2e3441d5051d3adaf7934f4d0311875fb4d8f023cf", + "research/capped-fusion-t74-k554/vendor/pr1297/vendor/pr1193/evidence/RESULT.json": "62aca8286cbb021d2535d81494f7ba7a3aec20898fd7c40a895a461bbd303ac4", + "research/capped-fusion-t74-k554/vendor/pr1297/vendor/pr1193/evidence/STAGES.json": "0dce559b2a8f371f369a05ae25ca5dd6a48019b5685b0097f001a23bd849429d", + "research/capped-fusion-t74-k554/vendor/pr1297/vendor/pr1193/evidence/WORD-RECIPE.json": "b6750c8123c205b63786fb825da26a819592f71736a82009809ae1cf96173a5c", + "research/capped-fusion-t74-k554/vendor/pr1297/vendor/pr1193/local_controls.py": "fe3d13491fa7523eedb8d24577ffe4bbd6c36a87b4a7d1178e5795d223bed4b8", + "research/capped-fusion-t74-k554/vendor/pr1297/vendor/pr1193/native.py": "1fb596fbafdb19140f483cd34db2994c571e3b962e33b8ea9b3ddc486e37def6", + "research/capped-fusion-t74-k554/vendor/pr1297/vendor/pr1193/package.py": "cde0b2d66125649ee84440fc0a67f0d91f900fc838fbda069b579422289ea3be", + "research/capped-fusion-t74-k554/vendor/pr1297/vendor/pr1193/prepare.py": "9fe454a5f857ff73c70a5b276bc9e289422b051a4cbbbb51123a91bb2200e6d8", + "research/capped-fusion-t74-k554/vendor/pr1297/vendor/pr1193/price.py": "d45042f4c1fea352349377b43def363cf75a742546a1d5c790ad30da91791803", + "research/capped-fusion-t74-k554/vendor/pr1297/vendor/pr1193/vendor/pr1148/JOINT-WORD.json.gz": "a0622d86259c4163e58cf0677ce575b6039a8ae4c95aa6d8b82a8163cbd42718", + "research/capped-fusion-t74-k554/vendor/pr1297/vendor/pr1193/vendor/pr1148/NOTICE.md": "afbd38d6c8a232ea566c296424a86420f204e6cfaac565c0a147340bda3d3da6", + "research/capped-fusion-t74-k554/vendor/pr1297/vendor/pr1193/vendor/pr1148/PLAN.json.gz": "e963ed64b9970858902b9388bcf1c5f9cc704859ad021ce8bda465a4dcef8310", + "research/capped-fusion-t74-k554/vendor/pr1297/vendor/pr1193/vendor/pr1148/SPEC.json": "55bdb68d5d126c6be0e0acc419bd62301a978afd514f9834ed1e08b1aa4f563e", + "research/capped-fusion-t74-k554/vendor/pr1297/vendor/pr1193/vendor/pr1148/k8-coordinated-owners-NOTICE.md": "442756fc1c5ecfd7b7b7694b53b1ecc70aa525004cd80f7d748ccd7270555189", + "research/capped-fusion-t74-k554/vendor/pr1297/vendor/pr1193/vendor/pr1148/k8-eight-ends-NOTICE.md": "820fa13161f857c221f2c4099dd2985c7ff72249dc7a0221bc00fd0c1b9760e5", + "research/capped-fusion-t74-k554/vendor/pr1297/vendor/pr1193/vendor/pr1148/k8-eight-ends-t16-NOTICE.md": "a9e85b59dde61fbff0b006923b441cbd1419e24fa9802426785bca667437fdc0", + "research/capped-fusion-t74-k554/vendor/pr1297/vendor/pr1193/vendor/pr1148/k8-three-demotions-NOTICE.md": "a0fe85fb2207f0e6831a96deaeefb65afa379c1377a29f0b586f1db4bb4b2137", + "research/capped-fusion-t74-k554/vendor/pr1297/vendor/pr1193/verify.py": "e5c952989344a65b7e63fa112dda4d464979814205644a8ec34e407a0d96be29", + "research/capped-fusion-t74-k554/vendor/pr1297/verify.py": "358ad8dfd967f4fd69a0cc298eae3508ad8b57b1e419ebaa0d621e199f534345", + "research/capped-fusion-t74-k554/vendor/pr1297/x54_controls.py": "82f91b81be9173dca546345dbdaddfc71e6d21e626fb84a8b4d1b4ba0d673814", + "research/capped-fusion-t74-k554/vendor/pr1673/capped-phase-fusion/ALGEBRAIC-STABILITY-INDEPENDENT.md": "7873e7d9a99fdc9de3ee224b9925d3e277e9773d7f5f8c2d0f1c19b0e52bc87f", + "research/capped-fusion-t74-k554/vendor/pr1673/capped-phase-fusion/BILATERAL-LDU.md": "0d65e66d227464dda1a19f781ae0a0be671cbfd347c41e37ec954f3d629d8a77", + "research/capped-fusion-t74-k554/vendor/pr1673/capped-phase-fusion/CAPPED-GAUGE-AUDIT.md": "1030a34922709ab8d3434a4c57a4a58934ae268c237fb598cb415697da411c9f", + "research/capped-fusion-t74-k554/vendor/pr1673/capped-phase-fusion/CAPPED-INTERIORS.md": "983c5cab2d2398f2192a8aec07daecb655f2de136e12a37f75672a14d27172ba", + "research/capped-fusion-t74-k554/vendor/pr1673/capped-phase-fusion/CAPPED-OUTER-ARITHMETIC.json": "22caac9ec2ecf4d5743b7eb946b633911fbac55a714399556e87e2eae0457dec", + "research/capped-fusion-t74-k554/vendor/pr1673/capped-phase-fusion/CAPPED-SIGNOFF.md": "70e9175ebde200f8b016236adc88c4a1c4858945e7c3e5c453a8b6a5f79a263a", + "research/capped-fusion-t74-k554/vendor/pr1673/capped-phase-fusion/FINAL-PACKAGE-REVIEW.json": "3457385de52d8e86853d96026a70aef2e8dece516db9eea020d8774e01d076a8", + "research/capped-fusion-t74-k554/vendor/pr1673/capped-phase-fusion/FORWARD-SMALL-A-AUDIT.md": "e37aaa30b15671a1dff00676b14572213efaaac99df202dbba5e09f57af487c0", + "research/capped-fusion-t74-k554/vendor/pr1673/capped-phase-fusion/HALO-THEOREM.md": "cb9e1da38400b658f9209e465b4e5896fadd17dc66afa862f38bae8d8c1f2058", + "research/capped-fusion-t74-k554/vendor/pr1673/capped-phase-fusion/INDEPENDENT-FINAL-REVIEW.json": "6b98e5222aa109a35be8b4fc9ec19669daebcc06d542ecec0a9c820da7930501", + "research/capped-fusion-t74-k554/vendor/pr1673/capped-phase-fusion/LOG-A-PHASE-SCHUR-AUDIT.md": "e05d6b8596c80b6e8676569a0ff464a29fa704c3304143f58914f47cdf38b272", + "research/capped-fusion-t74-k554/vendor/pr1673/capped-phase-fusion/MANIFEST-UPDATE.json": "32c58bcab8e19ef895660331c13d31b5fae7d0c95f7cda4147870f29d8299f6d", + "research/capped-fusion-t74-k554/vendor/pr1673/capped-phase-fusion/MANIFEST.json": "9af581d640e9c69d513256cf69babb0717287642134cfc807cedcd79966c1706", + "research/capped-fusion-t74-k554/vendor/pr1673/capped-phase-fusion/MATRIX-COROLLARY-ARITHMETIC.json": "c6efc4d2f6d17159cefebf5c2dd6099a6327fe0911c5dd87623cad96c7d6c56a", + "research/capped-fusion-t74-k554/vendor/pr1673/capped-phase-fusion/MATRIX-COROLLARY-REVIEW.json": "5cd5e97f93a9b3e439bfeffb52139d7bb1730de96ad13b59b7e1b20fdca6a3f6", + "research/capped-fusion-t74-k554/vendor/pr1673/capped-phase-fusion/MATRIX-COROLLARY.md": "2d7fb1088e58bb86e574277733e082f135362215a69add71d9090213d32c9221", + "research/capped-fusion-t74-k554/vendor/pr1673/capped-phase-fusion/MATRIX-LAYOUT-CONTROLS.json": "f8bd8729cb8438188e90fb9149f598b825461c97b4ed290584ca4367f812a48a", + "research/capped-fusion-t74-k554/vendor/pr1673/capped-phase-fusion/MATRIX-LAYOUT-SIGNOFF.md": "4c8c62f723232e842dc3bbdcc4defcc8ff1aeb86ba9f694661899dc6783b13c4", + "research/capped-fusion-t74-k554/vendor/pr1673/capped-phase-fusion/MATRIX-SOURCE-CONSTRUCTIONS.json": "114c1d8fb70592455a80c73d8a1bc6bfc9aca4e7395a420b6331d5474b4d1917", + "research/capped-fusion-t74-k554/vendor/pr1673/capped-phase-fusion/MATRIX-SOURCE-COVERAGE.json": "fdc6849f97999a6cf99cdaa50591d24f78d6fb0bc580315f205452e5906b35cc", + "research/capped-fusion-t74-k554/vendor/pr1673/capped-phase-fusion/MATRIX-TRANSFER-MANIFEST.json": "35d98d7579a16dae36530b4e5f4d0b8f925a069daa3f6fe1ea5276916167e0c2", + "research/capped-fusion-t74-k554/vendor/pr1673/capped-phase-fusion/NATIVE-RECEIPT-CAPSULE.json": "a04d6bba3d15c11a219536b66a23012797484ae106ec1952ecd7b76f077ddb01", + "research/capped-fusion-t74-k554/vendor/pr1673/capped-phase-fusion/OUTER-ARITHMETIC.json": "050c61d90236c593fd0827d7edc297e05604884e4ec093659aee46a9ee336020", + "research/capped-fusion-t74-k554/vendor/pr1673/capped-phase-fusion/OUTER-AUDIT.md": "94799bfa2794eb867d6ba68593c3e92988ade083e74d895e8d07ae3b8d0670dc", + "research/capped-fusion-t74-k554/vendor/pr1673/capped-phase-fusion/PACKAGE-MANIFEST.json": "298f1eaf79b5d5d57cb96fb3abb422174b78c31c14491a878f6176431d731d04", + "research/capped-fusion-t74-k554/vendor/pr1673/capped-phase-fusion/PHASE-LAYOUT-AUDIT.md": "54aafc7afd09fe1a5312e69fad09c87422690543ab75c6ae35f6cbcc26b3eb8a", + "research/capped-fusion-t74-k554/vendor/pr1673/capped-phase-fusion/PROOF-AND-COVERAGE.md": "db7509d754bb7fc3381419e0fed2674f22a9d57d34e8420fd5afa3c688fde9aa", + "research/capped-fusion-t74-k554/vendor/pr1673/capped-phase-fusion/PUBLICATION-CHECKS.json": "6e2fb68e6768c3aa4224aacb4900263586fc8114815a51df40f3f9fdf6124217", + "research/capped-fusion-t74-k554/vendor/pr1673/capped-phase-fusion/PUBLICATION-SOURCES.json": "6082583794168b1c2320187214b86c93a5a6e76fbbddfcb3bdbb8c5bd34c0586", + "research/capped-fusion-t74-k554/vendor/pr1673/capped-phase-fusion/README.md": "91af88b8fc53a22e1e968908f0e449cdfe2154c83f0dddb8a504e661c0c6965c", + "research/capped-fusion-t74-k554/vendor/pr1673/capped-phase-fusion/REVIEW-RECEIPT.json": "97b20e50d3722fcde3831124a107df6c15c0ffdbb9e057b7867f41aaa2481800", + "research/capped-fusion-t74-k554/vendor/pr1673/capped-phase-fusion/ROOT-EXACT-REPLAY.json": "d36114abe9d7a83c327f49f5ea153c6dcada4a7421f5e74a9a5ceb392cecb994", + "research/capped-fusion-t74-k554/vendor/pr1673/capped-phase-fusion/ROOT-MATRIX-EXACT-REPLAY.json": "d6bd4fcb8a528655181b4aa3fd1bad7e6647a4ca5aa76ee7f2cdd800b698b225", + "research/capped-fusion-t74-k554/vendor/pr1673/capped-phase-fusion/SHALLOW-TOEPLITZ.md": "b384b93f3fb4a8c97da2e617ebc14d55cebb0a739070e7f8dbb66f63e24e9310", + "research/capped-fusion-t74-k554/vendor/pr1673/capped-phase-fusion/SOURCES.json": "14ce6fdc7c83e18ccf4fee19ff51062726c960ca44462a45af60dd686167d456", + "research/capped-fusion-t74-k554/vendor/pr1673/capped-phase-fusion/SUPPLIER-SUPPORT-AUDIT.md": "bd5b06eca043c5c871227264f6a954473c55cd16ec85bb420ff538fb8ec1d8d6", + "research/capped-fusion-t74-k554/vendor/pr1673/capped-phase-fusion/SUPPORT-ADVERSARIAL-AUDIT.md": "b1290f8720bf075ea2ad58d6070f3e1fc95c0155f8e33b165bc13439bbb9222d", + "research/capped-fusion-t74-k554/vendor/pr1673/capped-phase-fusion/SUPPORT-ROUTER.md": "6ddb322e11883c1177ba6cd1a77d23a1dac827d7290b32eaf642457b1d762a54", + "research/capped-fusion-t74-k554/vendor/pr1673/capped-phase-fusion/TASK.json": "47b82ef23e20991010fae838ad4da9bdac3f947a8fea916a028fd6260f95f5f8", + "research/capped-fusion-t74-k554/vendor/pr1673/capped-phase-fusion/TENSOR-COMPILER.md": "4d3b8466598a864a234b978e25976648d4e761840aad9153dd18d73d3dfe4d15", + "research/capped-fusion-t74-k554/vendor/pr1673/capped-phase-fusion/VERIFIER-NEGATIVE-CONTROLS.json": "eeb887cdc0c76426c75ddbfc3d4af7ccbbe19d17962c6ad7a1549dafe8dabb5a", + "research/capped-fusion-t74-k554/vendor/pr1673/capped-phase-fusion/VERIFY.json": "cb50aa523a0863a457181ca815e69a1b3b4d91ed1006a79263f4a8f18457c669", + "research/capped-fusion-t74-k554/vendor/pr1673/capped-phase-fusion/check_capped_outer.py": "b4555c77de7a3ed4abc708a8d93363ef7c9a914be1091f80ab3ddea83f71230a", + "research/capped-fusion-t74-k554/vendor/pr1673/capped-phase-fusion/check_matrix_corollary.py": "30db2d8e0f40fcc5c91e25f74cdc54e46aa4a0353c725345f9bcf5744e0b617f", + "research/capped-fusion-t74-k554/vendor/pr1673/capped-phase-fusion/evidence/gaussian_fast_ultra/BILATERAL-CONTROLS.json": "eb3ba38d18bac4aceaffba39ef48dbb55bd15e6abcb68cdf66920d9d13ec00ab", + "research/capped-fusion-t74-k554/vendor/pr1673/capped-phase-fusion/evidence/gaussian_fast_ultra/CAPPED-GAUGE-CONTROLS.json": "ae8f0eb121a2f4da5c3f982ee6e7f45dab7b18368cadb5d2060602b0393b7120", + "research/capped-fusion-t74-k554/vendor/pr1673/capped-phase-fusion/evidence/gaussian_fast_ultra/CYCLIC-SCAN-CONTROLS.json": "4c37249f12b4cb4df847d179df8f378fbf1f42917e9fa703b2d847146f29b95c", + "research/capped-fusion-t74-k554/vendor/pr1673/capped-phase-fusion/evidence/gaussian_fast_ultra/DYADIC-INTERIOR-CONTROLS.json": "afbaee9f56f6a66fd9421bba7dfa8c3610c12bd447b01d0e9d79f97d1216aa90", + "research/capped-fusion-t74-k554/vendor/pr1673/capped-phase-fusion/evidence/gaussian_fast_ultra/FORWARD-CELL-CONTROLS.json": "4417a518ba3b6833f06b4f5e33d4f73ea74100b9110cf20e8d1c2070f1833fcc", + "research/capped-fusion-t74-k554/vendor/pr1673/capped-phase-fusion/evidence/gaussian_fast_ultra/LOG-A-SCHUR-CONTROLS.json": "046191420a24d8b2c063c190af5e954c85e39357902988c4df79f5abcdf1596d", + "research/capped-fusion-t74-k554/vendor/pr1673/capped-phase-fusion/evidence/gaussian_fast_ultra/LOWER-CONTROLS.json": "323cb4acae960a6fa05527df5ede9d48e274883272b8ddb5151ebcee6dd26e52", + "research/capped-fusion-t74-k554/vendor/pr1673/capped-phase-fusion/evidence/gaussian_fast_ultra/LOWER-FACTOR.md": "dbc7eff783695e0f50fec57b0f7ca4212d51428eea04fa2ae5e0a9178fa69b30", + "research/capped-fusion-t74-k554/vendor/pr1673/capped-phase-fusion/evidence/gaussian_fast_ultra/README.md": "8fb5321b514af9260c44e150125205fe564efd073c456214f76bbdb358279cf0", + "research/capped-fusion-t74-k554/vendor/pr1673/capped-phase-fusion/evidence/gaussian_fast_ultra/UPPER-DATA-ALGORITHM.md": "46b98b9c013dc5a94c9f17fd85acd7c1896c8e93ad2ee4a7c34f583895f1daf0", + "research/capped-fusion-t74-k554/vendor/pr1673/capped-phase-fusion/evidence/gaussian_fast_ultra/UPPER-DATA-CONTROLS.json": "c9e6fd7f338f2cb78a0ed15ee944fde63549ae3d8522ab0874d184f3e252db76", + "research/capped-fusion-t74-k554/vendor/pr1673/capped-phase-fusion/evidence/gaussian_fast_ultra/UPPER-LIFTING.md": "69535a48416a5435ea2a5ef4ecfe70fde30c32c4043bfc56f1ae2d7f49cd34bd", + "research/capped-fusion-t74-k554/vendor/pr1673/capped-phase-fusion/evidence/gaussian_fast_ultra/UPPER-MERGE-CONTROLS.json": "c5729bdb36237c0691fba56d149019f78d94e996749532d907a84c35ef01319d", + "research/capped-fusion-t74-k554/vendor/pr1673/capped-phase-fusion/evidence/gaussian_fast_ultra/check_bilateral.py": "8d5c79bd4f4c96de5c1fa91553b19e3a62419333b414fc84dec894a4b729d5e0", + "research/capped-fusion-t74-k554/vendor/pr1673/capped-phase-fusion/evidence/gaussian_fast_ultra/check_capped_gauges.py": "121279bef47dd490bf29fc72ddbce547176cdaf1154af67dc8b96d7baa8cfc6f", + "research/capped-fusion-t74-k554/vendor/pr1673/capped-phase-fusion/evidence/gaussian_fast_ultra/check_cyclic_scan.py": "d25156f852cb95f013e0ee74b319fc8c20d6a7a53fa851543244d5af7898ee61", + "research/capped-fusion-t74-k554/vendor/pr1673/capped-phase-fusion/evidence/gaussian_fast_ultra/check_dyadic_interiors.py": "a39617147870719a0296eef77101c90df8fbe716841cb9ed823f36b94254c3e1", + "research/capped-fusion-t74-k554/vendor/pr1673/capped-phase-fusion/evidence/gaussian_fast_ultra/check_forward_cell.py": "082a0e46c175f6e59fe1f8c168ca56bc444c71a602c9b7318c0834aae1f2de90", + "research/capped-fusion-t74-k554/vendor/pr1673/capped-phase-fusion/evidence/gaussian_fast_ultra/check_log_a_schur.py": "a0f1116ce27ecbff18de7089ce1f56714ed7966dfa0105b20419d408feb7ca41", + "research/capped-fusion-t74-k554/vendor/pr1673/capped-phase-fusion/evidence/gaussian_fast_ultra/check_lower.py": "027c77d8ce33c3d5e3c436234668f11bafc3de8658b9c3d03d455eb0e4d71f95", + "research/capped-fusion-t74-k554/vendor/pr1673/capped-phase-fusion/evidence/gaussian_fast_ultra/check_upper_data.py": "de4f9df64cf31e94adb9a5d04b38d53d823d864f51632c49c7c80c6a46b5224d", + "research/capped-fusion-t74-k554/vendor/pr1673/capped-phase-fusion/evidence/gaussian_fast_ultra/check_upper_merge.py": "95c9908134905e3ebdd030375e36a942c886cfc59edde3c6a419f36da6754780", + "research/capped-fusion-t74-k554/vendor/pr1673/capped-phase-fusion/evidence/halo_layout_ultra/EMBEDDING-CONTROLS.json": "d0182e172f16b55ec64a5edfabb10816e416348ef2db15449f3ed4b47f3fec1f", + "research/capped-fusion-t74-k554/vendor/pr1673/capped-phase-fusion/evidence/halo_layout_ultra/HALO-CONTROLS.json": "ae370f7d7421f2f96e101a4b9d8082110507c47211220fd6ead065c2366aa828", + "research/capped-fusion-t74-k554/vendor/pr1673/capped-phase-fusion/evidence/halo_layout_ultra/MANIFEST.json": "37946d7691b90d39906d93581839bdf8ae2cf899d459e5520c39e782766e9327", + "research/capped-fusion-t74-k554/vendor/pr1673/capped-phase-fusion/evidence/halo_layout_ultra/PARAMETER-CHECK.json": "e38cdfc13f1959186d888383458c9030c4bd3c8c3915aea4743d55637d2f8d76", + "research/capped-fusion-t74-k554/vendor/pr1673/capped-phase-fusion/evidence/halo_layout_ultra/RAGGED-CONTROLS.json": "c3688f65565486b585727374abfbe478f7544aa61381bd73cc6ffa168b4221b6", + "research/capped-fusion-t74-k554/vendor/pr1673/capped-phase-fusion/evidence/halo_layout_ultra/RAGGED-PERIODS.md": "c6e4dfe7f58dac7c5a513ffb3a9ab4801ab0717efae5c1e764e570335402ff25", + "research/capped-fusion-t74-k554/vendor/pr1673/capped-phase-fusion/evidence/halo_layout_ultra/README.md": "575a3acfc18a0e05ffe04a8563318a2770ce32cd7bf3a5e6123ce2de39a1cd4c", + "research/capped-fusion-t74-k554/vendor/pr1673/capped-phase-fusion/evidence/halo_layout_ultra/RECTANGULAR-EMBEDDING.md": "e64447bff7e7717802ee049290faaf29e45db3e36a6f7fcec109184478f15f26", + "research/capped-fusion-t74-k554/vendor/pr1673/capped-phase-fusion/evidence/halo_layout_ultra/SPARSE-SHEAR-CONTROLS.json": "d3b9763f7ef6a3a5752c6c11a8a4d5f465646ad75b178a1c1b3363540fcc4871", + "research/capped-fusion-t74-k554/vendor/pr1673/capped-phase-fusion/evidence/halo_layout_ultra/check_embedding.py": "597cb5304498456575c99d46a7fb503e04db28d5a7f57857b102b50f703b7464", + "research/capped-fusion-t74-k554/vendor/pr1673/capped-phase-fusion/evidence/halo_layout_ultra/check_halo.py": "0a3257cbb8f37b6cc9bb44019cb114ea2ae9b28738a416bff4bc712d1306e1b7", + "research/capped-fusion-t74-k554/vendor/pr1673/capped-phase-fusion/evidence/halo_layout_ultra/check_ragged.py": "54b761cfe3404d524af3a2abdf09bcea8dfb5cca6199c0c182cee310e3ca8c78", + "research/capped-fusion-t74-k554/vendor/pr1673/capped-phase-fusion/evidence/halo_layout_ultra/check_sparse_shear.py": "6e22c989e6bae92c4cd209c9336aad4359956cf370bdbd5f6b70609144598121", + "research/capped-fusion-t74-k554/vendor/pr1673/capped-phase-fusion/evidence/independent_fusion_review_ultra/CORE-SOURCES.json": "2546f47dacc47c2d63dc5bb9cc52ef86c5e02ee159c4fb6e00dfac3f8f34d89c", + "research/capped-fusion-t74-k554/vendor/pr1673/capped-phase-fusion/evidence/independent_fusion_review_ultra/core_review.md": "13f2df4d5b240f9b89ca0ae44bba198c935532098ff4c1161631fcbd86b3e8b1", + "research/capped-fusion-t74-k554/vendor/pr1673/capped-phase-fusion/evidence/independent_fusion_review_ultra/gaussian_layout_review.md": "ebd7188970f55b5979b1b1a13f874a31ed0ee6c82bee329e7ad0b2a38c42c430", + "research/capped-fusion-t74-k554/vendor/pr1673/capped-phase-fusion/evidence/independent_fusion_review_ultra/layout_subreview.md": "637e4698a9fb02978ebc4032d8939ce0db9528e89e908c94d63b9f0d2a41f64a", + "research/capped-fusion-t74-k554/vendor/pr1673/capped-phase-fusion/evidence/independent_fusion_review_ultra/union_subreview.md": "738b35a04d6871cd73b14b4165ae69a1feb3a103eb46e064a64a22c4c7426856", + "research/capped-fusion-t74-k554/vendor/pr1673/capped-phase-fusion/evidence/inplace_algebra_ultra/CIRCUIT-REPLAY.json": "2ce5cf9ef9461e5897374ad389c26af66aeee85e8f514a9da4ed3bb2028cb1da", + "research/capped-fusion-t74-k554/vendor/pr1673/capped-phase-fusion/evidence/inplace_algebra_ultra/EXACT-ALGEBRA.json": "694898bfb1afcb3b8b8ef951634ac8919decdde0904350b355d254601ae3dc12", + "research/capped-fusion-t74-k554/vendor/pr1673/capped-phase-fusion/evidence/inplace_algebra_ultra/MANIFEST.json": "3b018dc660c6add775c12f75b9e8f5281825aeebc3888a508833ce6106c1229b", + "research/capped-fusion-t74-k554/vendor/pr1673/capped-phase-fusion/evidence/inplace_algebra_ultra/READING-COVERAGE.json": "756e52726b161eea27e27f1d519b05d4fb0ebf67ef9a67b33947194d5d02b709", + "research/capped-fusion-t74-k554/vendor/pr1673/capped-phase-fusion/evidence/inplace_algebra_ultra/SOURCES.json": "fb3771f66771250aa9f4406ae9e7eb176f9cdef03976cbc9558440c674a4a94a", + "research/capped-fusion-t74-k554/vendor/pr1673/capped-phase-fusion/evidence/inplace_algebra_ultra/SUPPLIER-AUDIT-SOURCES.json": "d0c274d6edd6193b09d28e45e7cbfe9236fb35474d35ea3af0664ba36f9e006a", + "research/capped-fusion-t74-k554/vendor/pr1673/capped-phase-fusion/evidence/inplace_algebra_ultra/SUPPLIER-CAPACITY-CONTROLS.json": "6922b7d7a936d53846569ad3be53fe4f3c63d6cfe794f9279fdc6a1fe411ef0c", + "research/capped-fusion-t74-k554/vendor/pr1673/capped-phase-fusion/evidence/inplace_algebra_ultra/TENSOR-COMPILER-CONTROLS.json": "db8a5c0dc2be956d83bc7667177252a4968e0ffaee8352e6a5dba5ab983d7ada", + "research/capped-fusion-t74-k554/vendor/pr1673/capped-phase-fusion/evidence/inplace_algebra_ultra/check_circuits.py": "06d1861bfe8af543908e26557ffda7e451ff176bceb9bacfaf0f04f234b336d5", + "research/capped-fusion-t74-k554/vendor/pr1673/capped-phase-fusion/evidence/inplace_algebra_ultra/check_exact_algebra.py": "5ff7f25c55b370a1d0cda6c84ab9cdf2c7b0de3266d3f2e7a43280a6491074ab", + "research/capped-fusion-t74-k554/vendor/pr1673/capped-phase-fusion/evidence/inplace_algebra_ultra/check_supplier_capacity.py": "035ed96b39414eadec46e8de4bf3811b785862fd313deb044f42e17cf2ad3f78", + "research/capped-fusion-t74-k554/vendor/pr1673/capped-phase-fusion/evidence/inplace_algebra_ultra/check_tensor_compiler.py": "dc4b1f1884489215a2c2d0e8978a241e99e6c8c9f1d2fa2460c73d2c7d4ba30a", + "research/capped-fusion-t74-k554/vendor/pr1673/capped-phase-fusion/evidence/matrix_boundary_ultra/check_source_constructions.py": "9d387098403c0355be8e93158df02bae5a435b2366bd28efdf0b127e470c8c1c", + "research/capped-fusion-t74-k554/vendor/pr1673/capped-phase-fusion/evidence/phase_assembly_ultra/README.md": "17c393075292b364899cb7c451cebbc9b20834f9fac934ce3740aba360c27246", + "research/capped-fusion-t74-k554/vendor/pr1673/capped-phase-fusion/evidence/phase_assembly_ultra/check_outer.py": "6a0c5f8956323615df8bc4b12996832471c0ae607d05429c9d70ad1b50568f10", + "research/capped-fusion-t74-k554/vendor/pr1673/capped-phase-fusion/evidence/phase_layout_audit_ultra/CAPPED-LAYOUT-CONTROLS.json": "e6951790238b4998c632c95aa329ee2cd2527a5d74a2f28bd15249fec6d2419a", + "research/capped-fusion-t74-k554/vendor/pr1673/capped-phase-fusion/evidence/phase_layout_audit_ultra/MANIFEST.json": "c98559147bb498ac78af998eed63ab6661af934fa1a0df6844176b1811753fb9", + "research/capped-fusion-t74-k554/vendor/pr1673/capped-phase-fusion/evidence/phase_layout_audit_ultra/PARAMETERS.json": "9f72cfffa34844764ca65a6b4431cc5c779141751df746019db9d3ad8f1dee92", + "research/capped-fusion-t74-k554/vendor/pr1673/capped-phase-fusion/evidence/phase_layout_audit_ultra/Q-EMBEDDING-CONTROLS.json": "24ead3534482397c00c23ad3dbbd4e930e02290e00c97765353d8783c6575c7d", + "research/capped-fusion-t74-k554/vendor/pr1673/capped-phase-fusion/evidence/phase_layout_audit_ultra/README.md": "0ec721f76dfa943e808afd3c2cc39ee69f1a6e5f4f77ba3c7c1373ad60db25af", + "research/capped-fusion-t74-k554/vendor/pr1673/capped-phase-fusion/evidence/phase_layout_audit_ultra/UNION-CONTROLS.json": "6c5262144215cc603bbc3bee93a9a6d9d2318d0177a59115fe560762998498f9", + "research/capped-fusion-t74-k554/vendor/pr1673/capped-phase-fusion/evidence/phase_layout_audit_ultra/check_capped_layout.py": "267d93ab5114ec160f88a6e65fd34c9f0696a686c36ba2dd194d6b70fa32a6bd", + "research/capped-fusion-t74-k554/vendor/pr1673/capped-phase-fusion/evidence/phase_layout_audit_ultra/check_q_embedding.py": "ac858a14bbaf37e0e412a7ada282cd1586632f52b8a979733e775f50130969b6", + "research/capped-fusion-t74-k554/vendor/pr1673/capped-phase-fusion/evidence/phase_layout_audit_ultra/check_union.py": "74608380d72567edcd4470c8d226b15848f9d3a4e5d77d652bdd8963480ab9ce", + "research/capped-fusion-t74-k554/vendor/pr1673/capped-phase-fusion/evidence/radical_reduction_ultra/CONTROLS.json": "12d9207e887fda73159a9e2e4776003ca6f905fc3dc45d77ced588a1c9f80cb2", + "research/capped-fusion-t74-k554/vendor/pr1673/capped-phase-fusion/evidence/radical_reduction_ultra/ERASURE-ROUNDING-CONTROL.json": "cceb2ade8ce5e18be3871f771955e38258f5eb4e39790c016aab96d8cf0488ef", + "research/capped-fusion-t74-k554/vendor/pr1673/capped-phase-fusion/evidence/radical_reduction_ultra/FIXED-A-LDU-CONTROLS.json": "d6bda457fff01e04b6565d84c7bdbac870569a2ba7ef18a1fc8db11b738faf38", + "research/capped-fusion-t74-k554/vendor/pr1673/capped-phase-fusion/evidence/radical_reduction_ultra/FIXED-A-PERIODIC-NORM-AUDIT.md": "21027a569588922c491b2c5b4f31e01ddb784f1f20cdf48b7d482d0e85b66bdb", + "research/capped-fusion-t74-k554/vendor/pr1673/capped-phase-fusion/evidence/radical_reduction_ultra/HOLES-AND-Q-LDU.md": "c6a032ed495325806ddf491c5c85bc822a7fdd613aff906a7be553960d0f85a3", + "research/capped-fusion-t74-k554/vendor/pr1673/capped-phase-fusion/evidence/radical_reduction_ultra/HOLES-CONTROLS.json": "3f7e98ce524d5fb2ba2f911a350081340215e806ae945abf15a2fa07988ca2f8", + "research/capped-fusion-t74-k554/vendor/pr1673/capped-phase-fusion/evidence/radical_reduction_ultra/LEDGER.json": "87eab0eb334ddc16e50cedbcab56320d2ff056c3dc87d7a5191171bb5a4c206e", + "research/capped-fusion-t74-k554/vendor/pr1673/capped-phase-fusion/evidence/radical_reduction_ultra/NEAREST-NEIGHBOR-CONTROLS.json": "b85eca6098847e7b2f77b49a6c8c35e33cf790bc5dd01b95e1334daef9af47f4", + "research/capped-fusion-t74-k554/vendor/pr1673/capped-phase-fusion/evidence/radical_reduction_ultra/NEAREST-NEIGHBOR-NORM.md": "7955383d50fc59b5c4c4d839c7e4d630add6208a3a233d7372a80309085ac6b2", + "research/capped-fusion-t74-k554/vendor/pr1673/capped-phase-fusion/evidence/radical_reduction_ultra/PARTIAL-FUSION.md": "811a3a0c88a90708add5b12fb0a05c25623f0af155010d5dcacd56021c55cba5", + "research/capped-fusion-t74-k554/vendor/pr1673/capped-phase-fusion/evidence/radical_reduction_ultra/POSITIVE-TREE-CONTROLS.json": "7b31811402ddda4668fe8375f6c90a6047511d50836dbb7cfc7ffcf24fe19a11", + "research/capped-fusion-t74-k554/vendor/pr1673/capped-phase-fusion/evidence/radical_reduction_ultra/Q-LDU-CONTROLS.json": "370a07aa1a56c656ec1f44d7651dfbe999ad0c19dede9036257cc2f29dc39452", + "research/capped-fusion-t74-k554/vendor/pr1673/capped-phase-fusion/evidence/radical_reduction_ultra/README.md": "4d65ea3c8b6a0d5faef819a58c8b8277681d11bed54686e9a7f78de29736e68e", + "research/capped-fusion-t74-k554/vendor/pr1673/capped-phase-fusion/evidence/radical_reduction_ultra/REFINED-PHASE-FUSION.md": "b4367eac012624f803b3d2e3a72339e050a0071bbec37e6d33b2cf322bd70bc5", + "research/capped-fusion-t74-k554/vendor/pr1673/capped-phase-fusion/evidence/radical_reduction_ultra/STABLE-POSITIVE-TREE.md": "ec2f8a1c4273b81217545d2710bcffdd09b5c9ba9349e887b5f7bf6f5bddfdc7", + "research/capped-fusion-t74-k554/vendor/pr1673/capped-phase-fusion/evidence/radical_reduction_ultra/SYLVESTER-CONTROLS.json": "198af9f58c2950f17d8b1861ba4566bb2f6a0108a889a56db328fe67f8faa1a2", + "research/capped-fusion-t74-k554/vendor/pr1673/capped-phase-fusion/evidence/radical_reduction_ultra/TASK.md": "5eef77fb23f26f5bfb5dc8e376ed25e769924f2b6420ebfc8671e3b2a2f1f611", + "research/capped-fusion-t74-k554/vendor/pr1673/capped-phase-fusion/evidence/radical_reduction_ultra/check_constructions.py": "91387c9bd763a5c55c22a9907947bd07b6002f739aa6feedf6d3a02adea1e316", + "research/capped-fusion-t74-k554/vendor/pr1673/capped-phase-fusion/evidence/radical_reduction_ultra/check_erasure_rounding.py": "486efd4692665a548b94b79877abb76ad13157268f05c270c4e75d8f97700795", + "research/capped-fusion-t74-k554/vendor/pr1673/capped-phase-fusion/evidence/radical_reduction_ultra/check_fixed_a_ldu.py": "15134147317a7d789c9ea0ebd71db5ff11e59a20ef140f681d87478977734cd0", + "research/capped-fusion-t74-k554/vendor/pr1673/capped-phase-fusion/evidence/radical_reduction_ultra/check_holes.py": "99c5dc4601ea88b553f52e235d36fba0aeb867e7fcd54130cdb3eb115a9bb0d8", + "research/capped-fusion-t74-k554/vendor/pr1673/capped-phase-fusion/evidence/radical_reduction_ultra/check_ledger.py": "254342c05949e5cefe4f507a35487e0a1ffb7137a60d2b97831d5ad55d7d7ce5", + "research/capped-fusion-t74-k554/vendor/pr1673/capped-phase-fusion/evidence/radical_reduction_ultra/check_nearest_neighbor.py": "21bf2be683cefa7a760bf1e1bdaa647f57bf47ab86b13fd7a74e8d650f492913", + "research/capped-fusion-t74-k554/vendor/pr1673/capped-phase-fusion/evidence/radical_reduction_ultra/check_positive_tree.py": "46db2ce9122ff57bb4eeaa723db1f351891e671a7eaa7bf4fb61f85dafee9e37", + "research/capped-fusion-t74-k554/vendor/pr1673/capped-phase-fusion/evidence/radical_reduction_ultra/check_q_ldu.py": "ec2589ca9abe71d674ba9ccf81f289b1526f56f3001c48d22977accb1be3e4dc", + "research/capped-fusion-t74-k554/vendor/pr1673/capped-phase-fusion/evidence/radical_reduction_ultra/check_sylvester_factor.py": "60b21fda4ff451582087d30222a072eb1a214d531277e92883eaf28221aafced", + "research/capped-fusion-t74-k554/vendor/pr1673/capped-phase-fusion/frontier_fusion/FRONTIER-FUSION-ARITHMETIC.json": "82656563e7c8725f95c4aea7e273805a3d3faf34c495a330f1c91a036765414a", + "research/capped-fusion-t74-k554/vendor/pr1673/capped-phase-fusion/frontier_fusion/INDEPENDENT-SUBSTITUTION-RECEIPT.json": "49a8450289f1c1730c7d11d7c1506ad4af26fe9a1f76341f808a3025123e9519", + "research/capped-fusion-t74-k554/vendor/pr1673/capped-phase-fusion/frontier_fusion/INDEPENDENT-SUBSTITUTION-REVIEW.md": "b48d3e14083829db81336b639a6cfc698ac0dccc76fa2606d11b4be7a968ddeb", + "research/capped-fusion-t74-k554/vendor/pr1673/capped-phase-fusion/frontier_fusion/NATIVE-ADMISSION-BINDING.json": "ec4e89e0513958c1d553736cd06eedbc5f2aca61b40f92aeade3eb882bf588bc", + "research/capped-fusion-t74-k554/vendor/pr1673/capped-phase-fusion/frontier_fusion/REPRODUCE.txt": "76808b685f1623813658f5b596a4b8191a07e7c0810550f6fada7fb4a4992913", + "research/capped-fusion-t74-k554/vendor/pr1673/capped-phase-fusion/frontier_fusion/T74-APPENDIX.tex": "d053a6b69de2ff4005ee52eb3b673de606326aa0f0e290354675f9f08f915b99", + "research/capped-fusion-t74-k554/vendor/pr1673/capped-phase-fusion/frontier_fusion/bind_native_admission.py": "166541ca2b7f3066f4c2421e5a9f1886d58e1fdd7677904976261ab2c82b32cb", + "research/capped-fusion-t74-k554/vendor/pr1673/capped-phase-fusion/frontier_fusion/check_frontier_fusion.py": "02f7f9ebf29487331171954c7ceb37ff5315e2f28a9d56096ebbf9fb865c70ab", + "research/capped-fusion-t74-k554/vendor/pr1673/capped-phase-fusion/frontier_fusion/independent_substitution_check.py": "579bbde41e90792818c2726b38dcab26cf5a2695d3348731e814175146b0a737", + "research/capped-fusion-t74-k554/vendor/pr1673/capped-phase-fusion/gaussian_fixed_width_note.tex": "6f3edb7b238f2b6af4f3e2d98dee90fe6f4ba063a5ccd120422e45c941712aab", + "research/capped-fusion-t74-k554/vendor/pr1673/capped-phase-fusion/make_native_capsule.py": "8f342ca212b8d601a11f704042c577c1b088e0079bda04b3065467c2f3c36ea0", + "research/capped-fusion-t74-k554/vendor/pr1673/capped-phase-fusion/phase_fusion_note.tex": "b5957f38c98a68f2584a42cedf91d753180dab438129fdf749b441074f00d4e1", + "research/capped-fusion-t74-k554/vendor/pr1673/capped-phase-fusion/target002_upstream/full-1661-verification/RESULT.json": "11c57817a4d43a489010a13af7621d37eeedc398308c036e63a2a97119443861", + "research/capped-fusion-t74-k554/vendor/pr1673/capped-phase-fusion/target002_upstream/full-1661-verification/STAGES.json": "c2edb01a61c03e04bf48e605422ff83c1d304e4d586268959d4ea24b743640fb", + "research/capped-fusion-t74-k554/vendor/pr1673/capped-phase-fusion/target002_upstream/pr1661/research/gmx-t74-p566-ep400/CLAIM.json": "70aacd45f9e6fac8675687cf50da32e0ad4e479d9a5c28f2afd1550311ae8849", + "research/capped-fusion-t74-k554/vendor/pr1673/capped-phase-fusion/target002_upstream/pr1661/research/gmx-t74-p566-ep400/MANIFEST.json": "d90d49eaa68e48c6992a07972e736ef4b9cd80274361cbbc1ec980d43f29ad7f", + "research/capped-fusion-t74-k554/vendor/pr1673/capped-phase-fusion/target002_upstream/pr1661/research/gmx-t74-p566-ep400/new/SPEC.json": "d6b6a2140f3a61ae8cfdd8b51a1131934d63d2dd8573c1b13eb2b9528f3c3db8", + "research/capped-fusion-t74-k554/vendor/pr1673/capped-phase-fusion/verify.py": "93ef0f46e132485da6194587199b8f039e25b1b9f099f93bbdaeac5c0d66de7f", + "research/capped-fusion-t74-k554/vendor/pr1786/FINE-PRIME-PADDING.md": "47d1b1b4df28aadda3cd6bdeb1fbc47290595e9208cd09c1a1f338520d33fdce", + "research/capped-fusion-t74-k554/vendor/pr1786/NOTICE.md": "dcc1adb2461aa93ca62b6a912dbd8b215599e6af8053dfbacb7423b544dd659a", + "research/capped-fusion-t74-k554/verify_manifest.py": "723d726dbbe5b65a49caecae0f1aab664a1413fb639abfd3e826a5a538e14e5b", + "research/clifford-state-performance/fast_state.py": "2fe087ba4558bd21ca49945dbedaa4047e4170e8fd4e2280701bb2f0481811b5", + "research/complex-routing-leaf-fusion/vendor/pr2751/inputs/WORD-base.json.gz": "ae8b6b4d62a9da29331062fae1bd68b0341edf83152f5a5ef50c5109ba578f9a", + "research/complex-routing-leaf-fusion/vendor/pr2751/inputs/WORD-extra.json.gz": "1bb44a73d5841afb954b49ae94dba2e0c536b1eea9436ae5d89de87d8a04e127", + "research/complex-t37-ends7-owners/vendor/pr1107/research/gauge44-ends7-t16/construction/ends7/fastpath/NOTICE.md": "3da80a5155c625bff907a42a82c65bfcf92854d2c960bcea4537c19c99efd4f2", + "research/complex-t37-ends7-owners/vendor/pr1107/research/gauge44-ends7-t16/construction/ends7/fastpath/PROOF.md": "d73e4522602404caba8e7f247005a45c8a8cd26ffd2a70d65f4f9556a391d053", + "research/complex-t37-ends7-owners/vendor/pr1107/research/gauge44-ends7-t16/construction/ends7/fastpath/sparse_state.py": "e91210ecd5085cf9add872f40bb434806838da488e12152c63c86e51fb5a7a37", + "research/coupled-cap-independent/vendor/PROVIDERS.json": "52eb0d85caa7b2d4a93acdf5011f52b793f61ddca86235fb03cd9a09397ad4cd", + "research/coupled-carrier-cap740/cap_check.py": "c2a2ea7df9ef2f7c7ae2739435f4ac44f2c912d8e18fc9278c717958f258ee38", + "research/coupled-carrier-cap740/common.py": "8786495cbf808d950be1c42e42d0198e950e44167af80063d25fd186aafea534", + "research/coupled-carrier-cap740/vendor/PR3133-CAP.json": "e32f3ecd5e6594935583f80f643cf1930e8bc017e3c541025c335395a15cf19c", + "research/coupled-carrier-cap740/vendor/PR3133-CREDITS.md": "1d9d8f56d8899f55878e4cb2c4e052b22506444016a51c2e678773505f5189e6", + "research/coupled-carrier-cap740/vendor/PR3133-FILL.json.gz": "68b8bae90144248774b1920cd27f9519caa3dc427704d8a9da6d4c491d912fc4", + "research/coupled-carrier-cap740/vendor/PR3133-NOTICE": "c9731c9cca25ede32c2a1b3aef6d5b249973cb2ed5fb2494407bdca598763661", + "research/coupled-carrier-cap740/vendor/PR3133-PROVIDERS.json": "52eb0d85caa7b2d4a93acdf5011f52b793f61ddca86235fb03cd9a09397ad4cd", + "research/coupled-carrier-cap740/vendor/lift.py": "ae6c1fee78fbdec26976ca74ca89f6aab2528d763c596f6573132cb54d57cd3c", + "research/coupled-carrier-cap740/words/base.json.gz": "300a9b8ad1d554f0e6f84f43f3f5fd870a5b4e5f81ad856900b6e8999684892e", + "research/coupled-carrier-cap740/words/extra.json.gz": "495d030f1e03b90e954dad3043994f03293d41b9ed220a3beaef849df435d3f0", + "research/coupled-carrier-independent-audit/inputs/EDITS.json": "47831d52490e3a3b8ed0569ff644582ea23f60e2ef900c2301d04c60bd73f5d4", + "research/coupled-carrier-independent-audit/inputs/PARENT-base.json.gz": "abaf67bfcb257528658c906b612f57025617592bd7889828f92b97a5f4f4300d", + "research/coupled-carrier-independent-audit/inputs/PARENT-extra.json.gz": "e0eaf64c4d5d324693d43889bce1b9e53e8da00402105c8c978fd102f208bed7", + "research/gmx-t74-borrow43-gridmax/EXACT-ARITHMETIC-DERIVATION.json": "c0d40deaa495a7365e91aa5d9e6a846f91e0cb6daff98bb3b7f2acef84d64ec4", + "research/gmx-t74-borrow43-gridmax/code/fine_mercator.py": "6cf29658b5c1618de4aae8bd49d6d890be06d57ead1ad0f2d41bc8d25cc578d3", + "research/gmx-t74-borrow43-gridmax/code/fine_moment.py": "bdfc492be6a663b219d76beff444db14bd67bb53c7c8ec4086ab0f56e48323c0", + "research/gmx-t74-borrow43-gridmax/code/lemmag_checks.py": "cc753c5953e58f5900ce580ece8f814a352d672bcee6d4566c7dd52647912393", + "research/gmx-t74-borrow43-gridmax/lift_parent.py": "525ca25a4530cee9e645a9e9078227f91f48c3d43d218583f2bb1cf9bded8a6e", + "research/gmx-t74-borrow43-gridmax/new/borrow/audit_local.diff": "202f6f2032552eba069b9ec7e33b729d4af2ffc20974a9e82e444d906d7137b4", + "research/gmx-t74-borrow43-gridmax/new/borrow/borrow_controls.py": "07fbbf8e2f06df063dc9d88e5e4f721222a9fcf30b983bf9127cd5aa4b611627", + "research/gmx-t74-borrow43-gridmax/new/borrow/inputs/blocks.json": "ddfac1dae1fe7cc0a91e7c7205c6d9d0c07c682880aa34eed83bf4ad7384da9f", + "research/gmx-t74-borrow43-gridmax/new/borrow/inputs/extra.canonical.json.gz": "d7e48dcbafa236a2e1e41f7958244211506f7c7630fe6a2d43d2bdf17b7ae015", + "research/gmx-t74-borrow43-gridmax/new/borrow/inputs/gauge44.canonical.json.gz": "65c6d17ffee2eacf27bff438f37fc549c9ed0c909cbc7a52976cc75cf2d15b91", + "research/gmx-t74-borrow43-gridmax/new/code/borrow/bw_adapters.py": "c5907050a9a7fa36d4fcba3ad4fe440d1bec2063360c095013891785ba65c3ce", + "research/gmx-t74-borrow43-gridmax/new/code/borrow/bw_audit_local.py": "6bc8a07942a027a52ede46521f6b5dab755643eb693efc7dcb829496050fde09", + "research/gmx-t74-borrow43-gridmax/new/code/borrow/bw_check_recipes.py": "d600b959a0ac462dc28deb8c0d5d8f9e0c76d7f7d7b6f92a296c5ef9e0a1de19", + "research/gmx-t74-borrow43-gridmax/new/code/borrow/bw_emit.py": "99b59a6fa3feda86785e4225157dcb1a6169d256cec4f5e0acc9cea7a701df76", + "research/gmx-t74-borrow43-gridmax/new/code/borrow/bw_gauss.py": "0884b14d6d77cde419a3c773ad9b21d0d18de1e6e20e6b6d5add458ed32ba4cb", + "research/gmx-t74-borrow43-gridmax/new/code/borrow/bw_phases.py": "9d1a620e26715f4c42fd0347ecc14ef5a4a9031867869b64e8bae4d8526a821e", + "research/gmx-t74-borrow43-gridmax/new/code/borrow/bw_tamper.py": "eab4b026965b9796eee92239660e1fb1fa629f6d9db44bc27b13911a018a6ee9", + "research/gmx-t74-borrow43-gridmax/new/rebind.py": "faf283eb4edd2e6a1ccb40b3cb3ba30ae54338eaf5ea0a10d84d11d7939502af", + "research/gmx-t74-borrow43-gridmax/new/run_native_borrow.py": "8ec7db430f4f4771c06bdcfc31736193614f6ec209d57b63d4e2b75f17fb3ac8", + "research/gmx-t74-borrow43-gridmax/new/unpin_spec.py": "03901dbb881fa608b6540a0541b26311dd4bab23bd8768e9ed48b8b355e1b36b", + "research/gmx-t74-borrow43-gridmax/outer/PROOF-GRID-MAX.md": "19dc50ad398993d156f9366fc752321a88a7337dc016c00b0d5a53eceff93cf6", + "research/gmx-t74-borrow43-gridmax/outer/RETUNED-SLACKS.md": "d87beb3869fb60143c2c3872d7c427ee16174aa51b5e6f42689312fbd40d3d42", + "research/gmx-t74-borrow43-handoff/PARENT-LIFT-RECEIPT.json": "787db0b6f847cb03ff9b71246aba6e702ad3ab8e2fbbcb7dff9f51b8a8a783e8", + "research/gmx-t74-borrow43-handoff/SPEC.json": "81676590c26018aa95082e3252f394ac99c61c0c4e5578f59501401700e38033", + "research/gmx-t74-borrow43-handoff/audit_mixed.py": "2286f00e462ff28abbb3f396095463482a1e063213b9526a7225275980c77eaf", + "research/gmx-t74-borrow43-handoff/code/assemble.py": "f25e1e870df5d5a16a1e367b3df8843cb01644ab4b75895d7939af81e4fcb833", + "research/gmx-t74-borrow43-handoff/code/assembly_controls.py": "d7675ff0b0994b29541d37eaa3010c5f39bb1447700c9f8e750522bf8c951f56", + "research/gmx-t74-borrow43-handoff/code/audit_allcold.py": "fa3488b62efdf8a0c37de0ca0caba587b4b036c5f068e002eb04c71c12b9e9b4", + "research/gmx-t74-borrow43-handoff/code/emit_allcold.py": "549603ca6d28b163a43b2dfaaaa788161c73d7952ab9190289407caca5418c71", + "research/gmx-t74-borrow43-handoff/code/invoice_allcold.py": "bb213d0af12218ff7c9c572717e522d8bbeeb2856b87a253f4a7f44e0fd71f15", + "research/gmx-t74-borrow43-handoff/code/lemmag_stage.py": "5158e1e95e46b3119de9f4add7d849c8ad2d2dd92b17a79b0f93b86e7d4e6049", + "research/gmx-t74-borrow43-handoff/code/pyc_guard.py": "1def35bd093a7b3893c1cf410301d875435a2a7a096b42f49ecb060ed2a61f0e", + "research/gmx-t74-borrow43-handoff/evidence/INDEPENDENT.json": "7150546e840e859268c40c11c2c79ba4fd646fc632fced68e3c19355b292fa61", + "research/gmx-t74-borrow43-handoff/freeze_spec.py": "1d965b7a329b98008fcc67e73d03dcf6e75f0f33c2858a39f1182bb3d0ed0ea1", + "research/gmx-t74-borrow43-handoff/independent_core.py": "02502a217fe8c9e10229075b50745518beac512c48db20e64c3e06514a4da5b5", + "research/gmx-t74-borrow43-handoff/new/borrow-fill/search/agg.py": "267a66287336b72731b897508073dae1a7c85fa72cd86093a7340ddfc12af04c", + "research/gmx-t74-borrow43-handoff/new/borrow-fill/search/base74.py": "acc99c57730fe50f88538e4061e7165a7f278ed7499728c24b0522d479be8b8c", + "research/gmx-t74-borrow43-handoff/new/borrow-fill/search/ceil74.py": "99df541abe458fb6154755d9c67066b2ba0430b06f879a7b5a43e30618f4c1d7", + "research/gmx-t74-borrow43-handoff/new/borrow-fill/search/evac.py": "7c6ce4e8aa9833a9d451c5d4b891bbd1927315bcbf112d3c15845f0ede2d9dc3", + "research/gmx-t74-borrow43-handoff/new/borrow-fill/search/fillbase.py": "4fc6fa920d8703ccec860bee0e1187a0a8b1e37b245789256f7a4d01ae8a2b00", + "research/gmx-t74-borrow43-handoff/new/borrow-fill/search/inv.py": "eec279ea8e8d9d1dccc2733a88129351678c73fb51f06a4604a9c1da1d771387", + "research/gmx-t74-borrow43-handoff/new/borrow-fill/search/lattice.py": "8f2ee194fa4992d1f45394b09b5151ec699b28e4c950b9d40b826f33cbb635ba", + "research/gmx-t74-borrow43-handoff/new/borrow-fill/search/lnstime.py": "3a1ff558f10b0b935389137627359f875ca484717ffa3ced7de8d8b588836755", + "research/gmx-t74-borrow43-handoff/new/borrow/alias1_controls.py": "f4cc82312af891ea48956d9953a061196a8c3b113ef6d81e5848fe95745147b2", + "research/gmx-t74-borrow43-handoff/new/borrow/alias_build.py": "40b97536c8347733eaae24a3c4a13f5d21711e983106454777837be487959f1b", + "research/gmx-t74-borrow43-handoff/new/borrow/alias_enumerate.py": "7324f2569e6b76981d8c964a16ff9a3bc9e770e41b9cc6ec1c9defe8e662c153", + "research/gmx-t74-borrow43-handoff/new/borrow/audit_local.py": "a38940094f7d19cd6376aafdd4734fa68eabc9aff4c98c3c4a3e9540328b1c90", + "research/gmx-t74-borrow43-handoff/new/borrow/build_word.py": "40047409dd9f9c406bb37a2ed0b4c8159797e0e4a114d525a368355418128707", + "research/gmx-t74-borrow43-handoff/new/borrow/emit_word.py": "a057ed0c81fbb07dabf38247e0ce0cec6c5fbfa31d8bf1b38838bd3758e41f87", + "research/gmx-t74-borrow43-handoff/new/borrow/guard_cut_centres.py": "5df204597697756808e6c959f5bba81cf35a2f0e7a0f1f75748dca1814373b72", + "research/gmx-t74-borrow43-handoff/new/borrow/guard_helper_indices.py": "d93aeb2d51d77ca93ecbf9e566d9000bb436c279e2a25b699a867e9697f782fd", + "research/gmx-t74-borrow43-handoff/new/borrow/inputs/alias1_43base.json": "2c5b5491da4b3e8a8356fd42a12a8fc8b2c9b4b0b20c4adc4e273ba217230e11", + "research/gmx-t74-borrow43-handoff/new/borrow/inputs/alias1_43extra.json": "0a54f41f886bf4f61fa620c65725373be905524ce906e5e95d501890de783179", + "research/gmx-t74-borrow43-handoff/new/borrow/inputs/alias8_43base.json": "3b91dd5a0d1b297a48e278b45903e073c5cefb23f22921f6a738bcbbf21e521f", + "research/gmx-t74-borrow43-handoff/new/borrow/inputs/alias8_43extra.json": "3ab265a33750a229a9201c2baff45ad91f1bef556879306d2fb743f5290cab31", + "research/gmx-t74-borrow43-handoff/new/borrow/inputs/dirtentry_43base.json": "a067f7138f23eed6434286e7bd53548c86a7eef58c654374b778b4f424e9ffef", + "research/gmx-t74-borrow43-handoff/new/borrow/inputs/dirtentry_43extra.json": "8280fafb4642389ae91989e870ece7c9f2bffa38c9b52f2424b8abf489ba71f8", + "research/gmx-t74-borrow43-handoff/new/borrow/inputs/entrance_43base.json": "1b3c09f9558c50e7f299aa10fb21dcbd1b5ff397794838d8629c80d4c7a565f5", + "research/gmx-t74-borrow43-handoff/new/borrow/inputs/entrance_43extra.json": "e57ec67fa0a3fca63bf9e4bb9edf4e6be48db0bd7c9e092cddad29b26b897463", + "research/gmx-t74-borrow43-handoff/new/borrow/inputs/handoff_43base.json": "5ae3062bcce666c8c3a3a650e345adf15c22a2800fa0e17d79ad6e8b97208a2f", + "research/gmx-t74-borrow43-handoff/new/borrow/inputs/handoff_43extra.json": "4238a7c5093a4347fe69adf4f76e507d2f43c4e727d91b2c4705039e1cbaa06a", + "research/gmx-t74-borrow43-handoff/new/borrow/inputs/kernel_43base.json": "7f06b4b08a49192a27e8f4132ad0c93521dad90f97ca985a173944ba02c5442b", + "research/gmx-t74-borrow43-handoff/new/borrow/inputs/kernel_43extra.json": "ef95eae03915f0222bcd486959c6dfe307a9a0a856702420fa35491abfae4c84", + "research/gmx-t74-borrow43-handoff/new/borrow/inputs/lowfour_43base.json": "a8df0a2acf85e96febb35d24ae047c370d179095b46142bae968f06348bf1c18", + "research/gmx-t74-borrow43-handoff/new/borrow/inputs/lowfour_43extra.json": "9dbfb49fb3c04a0652dcae9a962d973489679f5d1ee2baf4e65c58d2e8ef578c", + "research/gmx-t74-borrow43-handoff/new/borrow/inputs/prelife_43base.json": "ec43328c198094c0e8b37cf93de0210d2ba0397ed20dcaec1f1d121ffa5cdb69", + "research/gmx-t74-borrow43-handoff/new/borrow/inputs/prelife_43extra.json": "a7fc8362edaf33de314bebc400bcda6a6cc345ac6ca86220e1f53ae43cbc8600", + "research/gmx-t74-borrow43-handoff/new/borrow/inputs/refit563_43base.json": "4ba6d0fe6f5f03095821f1080f1cceb97204a3189ab0e48092e1cbccb1d7ceae", + "research/gmx-t74-borrow43-handoff/new/borrow/inputs/refit_43base.json": "19a97e80b0ee3146e0244e6bc36bd365d89e9c1cd0f885c4e06be4193606a323", + "research/gmx-t74-borrow43-handoff/new/borrow/inputs/refit_43extra.json": "1349d54f704847fdcd4a00e323cdc9e1118fac7fedb0c7573e9b2b3f0169a7eb", + "research/gmx-t74-borrow43-handoff/new/borrow/inputs/retired7_43base.json": "74daf5826d9191be4613a61447f4dc12789190fb49a3219f6a9df63075cac1e1", + "research/gmx-t74-borrow43-handoff/new/borrow/inputs/retired7_43extra.json": "25d9774b512da78f042287ce1de91c79c8658d06488b8fe94e548cbdd036f034", + "research/gmx-t74-borrow43-handoff/new/borrow/inputs/twelve_43base.json": "ee268c45a9c768a6a4cecf401cd4446cebb042e67d69e5fb6d078934d5a49498", + "research/gmx-t74-borrow43-handoff/new/borrow/inputs/twelve_43extra.json": "4ff1d00714d0dfacf95b89778f6c1abb113877f8c9880c01a06d0f30998756ee", + "research/gmx-t74-borrow43-handoff/new/borrow/inputs/witness_43_base.json": "65ee52604e2e49a30c1e978b7ce829482a694a20a8744f37b9bf40dad1ff3a2e", + "research/gmx-t74-borrow43-handoff/new/borrow/inputs/witness_43_extra.json": "19c652db80d5215c958c63b5d6f2de96d9cf34a0e4d56dab5c13e556c57f7467", + "research/gmx-t74-borrow43-handoff/new/borrow/lowfour_controls.py": "b1484a0ab1ad5f87a71b8e48ee8c5ba7604835acfe2b841b6f13cbd12f32e344", + "research/gmx-t74-borrow43-handoff/new/borrow/prelife/results/gap-base.json.gz": "cf596232260cadcc02bf1020c2e138a31e9482140c4ee2bdf6a0a32797a1187c", + "research/gmx-t74-borrow43-handoff/new/borrow/prelife/results/prelo-base.json": "9d6fa7827d991281a647043a4675c001964bf5bfa4045e54ce0e192ab74a19c9", + "research/gmx-t74-borrow43-handoff/new/borrow/prelife/results/tryE-base.json": "aeb3e8e7442ff104806ab39e8fcbe366fdcda95b64909c107d255c379ad579fb", + "research/gmx-t74-borrow43-handoff/new/borrow/prelife/search/chains.py": "588d6cdb2312febfee5f3d576295f2edff53ca74c14d21ed9bffed3312dfa32c", + "research/gmx-t74-borrow43-handoff/new/borrow/prelife/search/edit.py": "8e5eea35d0bb83aa60bd066ae9ddf3f4b0ad46cf9ac9d31d8fc5777f49013713", + "research/gmx-t74-borrow43-handoff/new/borrow/prelife/search/fm.py": "36174e2b7e012726964282af926fdf541332556bcc548af5b41502cdb8b198e2", + "research/gmx-t74-borrow43-handoff/new/borrow/prelife/search/gapbound.py": "a0fa0fbd079a456bf5f9b75352eb68c4b7e2febad0c99e66b7553bdc744772c8", + "research/gmx-t74-borrow43-handoff/new/borrow/prelife/search/mk1.py": "4bab66a4e1514a067572c7854731a4fbd29681300e95a4384fdb68e0eb140575", + "research/gmx-t74-borrow43-handoff/new/borrow/prelife/search/prelife2.py": "db1fc5eea7bd70066188d7c7f52cf4be8991e61b821d3fe4b779ee30c7f3c9eb", + "research/gmx-t74-borrow43-handoff/new/borrow/prelife/search/prelo.py": "157dc45b5fcc421d26507d6d7fca6d4caeff6c73efcd679fd28e906f600ea886", + "research/gmx-t74-borrow43-handoff/new/borrow/prelife/search/propbound.py": "735cd4d1a6a43c96f397eb5ae2972e86ab71c2c232e6d14ac6cbf1eb7f638c1c", + "research/gmx-t74-borrow43-handoff/new/borrow/prelife/search/repair2.py": "410ddd6f9b3e14be6b9247cc5792d1a893175e843a0c21bf667e71a6e3a9710f", + "research/gmx-t74-borrow43-handoff/new/borrow/prelife/search/tryE.py": "130a859c0ad20623943b25800dd2f1d0355cf03b8520fc493ec870baa010b2ae", + "research/gmx-t74-borrow43-handoff/new/borrow/prelife/search/wordmodel.py": "215e678d3f3711b4291f9da5d7937cdbb0b091390bba089e6949b8c42a29f6f4", + "research/gmx-t74-borrow43-handoff/new/borrow/prelife_controls.py": "c24398bdc407aaf6713201100d27ba851233525a9dfd747b641d99e1cde66cba", + "research/gmx-t74-borrow43-handoff/new/borrow/receipts/AUDIT-43base-pinned.json": "8dc6daa8929c1137c1e37fa5a1bf869afafe94c3e65ed2705ea9f41f2dc8cee8", + "research/gmx-t74-borrow43-handoff/new/borrow/receipts/AUDIT-43base-prekernel.json": "fb6f40a1d117bd304cc0757ac21915bd8558e8d3f31b8709129f395033fc534e", + "research/gmx-t74-borrow43-handoff/new/borrow/receipts/AUDIT-43base.json": "07b8a4836fe2659d0d46957ed0973ba3334f6752b5c1235d03b961a107fb95d5", + "research/gmx-t74-borrow43-handoff/new/borrow/receipts/AUDIT-43extra-pinned.json": "4176a6190fb1a224d45797064cde2aa758970bce7c1ed2a009ecb2fc7839d26e", + "research/gmx-t74-borrow43-handoff/new/borrow/receipts/AUDIT-43extra-prekernel.json": "09041e49888a1360b7ddee29d54d82836a875ecb6547c7ad1eb92427e7f3b384", + "research/gmx-t74-borrow43-handoff/new/borrow/receipts/AUDIT-43extra.json": "a01ae6847449ddb88c56fa8e44d10bc0b005f1b24daa283d38ba00089d8f89f2", + "research/gmx-t74-borrow43-handoff/new/borrow/receipts/CONTROLS-43base.json": "02b73bfbf72c63926ebb244bbd6bf87a03201ee1487e2c15292ad52684fb4d69", + "research/gmx-t74-borrow43-handoff/new/borrow/receipts/CONTROLS-43extra.json": "f8b93901ef5b4810bb39a7b5ccdc62497612c2efba67920a8d6119ae8a898126", + "research/gmx-t74-borrow43-handoff/new/borrow/receipts/CONTROLS-KERNEL-43base.json": "2b40a169ede95155b5ffe276589b911d9704ef904cfaac41bf41b24140d40907", + "research/gmx-t74-borrow43-handoff/new/borrow/receipts/CONTROLS-LOWFOUR-43base.json": "e0e3e01afefb69952da0063b3e6daaa032a4d1dd71d1d68cbcb7f3530a6ecb38", + "research/gmx-t74-borrow43-handoff/new/borrow/refit/results/pairs-base.json": "8178d2a34be82601f2361afbc63b37294255a435b243e65295bf7b641edfc4a3", + "research/gmx-t74-borrow43-handoff/new/borrow/refit/results/pairs-extra.json": "3a64b6ace504a5d410a4cfd87ae2fc04576df61883ce56e3f7eb38d4b26df8af", + "research/gmx-t74-borrow43-handoff/new/borrow/refit/search/bounds.py": "690986e69e3125723b12255cc5aa135fceec93894d589eb196ab7fa5da37e9fb", + "research/gmx-t74-borrow43-handoff/new/borrow/refit/search/eval1.py": "0547e606468ad4670512ea83fb3d6e7f39fda9b66537fdf791ad22a3bf4aeeee", + "research/gmx-t74-borrow43-handoff/new/borrow/refit/search/mkcand.py": "c5b437f6a991de674bd781d610d98a43d9f84179beb1187340354e55f42ceaa4", + "research/gmx-t74-borrow43-handoff/new/borrow/refit/search/pairs.py": "7922404bf942eff2dda0125b78ff1234bfdfda5101ff428b11f8a5ed73ce4882", + "research/gmx-t74-borrow43-handoff/new/borrow/refit/search/refit.py": "c036d0d4cc91360e583a7ed01d6c69c17a69f16c5838062c2b9de83a616d2e23", + "research/gmx-t74-borrow43-handoff/new/borrow/refit/search/why.py": "209a95a62a95c06138f0b5af2d1dd1f9c60c403c4da294d39663928c2312425e", + "research/gmx-t74-borrow43-handoff/new/borrow/word_patch.py": "9b3287f189c4f29c1a8bdb1ba01fdcfe14a57d87b50fa4f2f646fb2346ab01ce", + "research/gmx-t74-borrow43-handoff/new/code/borrow/NOTICE-PR2226.md": "6b6730303818f6edc2a253eb4d05471eee58f28b5815fb250c32ae376f774c8a", + "research/gmx-t74-borrow43-handoff/new/code/borrow/bw_transport.py": "9818e08b819310b40f1441b89be8c4369584a5b3fa5dfe9b86b1df9a7f5d6a76", + "research/gmx-t74-borrow43-handoff/new/fastnative/.gitattributes": "92e5734dbb86fb8958622e6dcea5895601800a24b0722ef86220322449a44ff8", + "research/gmx-t74-borrow43-handoff/new/fastnative/EXPECTED.json": "8d45fba81564631f9f8614e637b9fbe69dc911b4e2f0b77f0a7071f39cfd7ca8", + "research/gmx-t74-borrow43-handoff/new/fastnative/FRESHNESS.json": "92abf8c25be59ff71a90781f38c5db2f9176c623df046a6d0e2327fd0235cb6c", + "research/gmx-t74-borrow43-handoff/new/fastnative/PINS.json": "f619e8e1c163078fb70c6fc3b98a498a671b8c02927b91d6cc253af2a775b6c9", + "research/gmx-t74-borrow43-handoff/new/fastnative/README.md": "6a2026383804606cd7981e087192b3488c674f2d9443ec218dcb2e85d06406dc", + "research/gmx-t74-borrow43-handoff/new/fastnative/SOURCE-PROVENANCE.json": "8daf4fc7c75db99d34641152682208ce6c974f50d509960d0f4fa021f862abee", + "research/gmx-t74-borrow43-handoff/new/fastnative/SOURCES.json": "3599ed28c8d8a9ce096bc13507b066d09e3968587781748b2bc72f634618331b", + "research/gmx-t74-borrow43-handoff/new/fastnative/TASK.json": "8159b49d5c73dd887d432a4680dc947f63e7158a01a66d7736ff7138e8149732", + "research/gmx-t74-borrow43-handoff/new/fastnative/VERIFY.json": "e46542b70296c039b5bea0c0aa9cfd4e95e1df8859e67885ed3403bea9da7b32", + "research/gmx-t74-borrow43-handoff/new/fastnative/benchmark.py": "3e544453c89310281d745a37e861cbd79065b1740d90f1ec883fc200b189a557", + "research/gmx-t74-borrow43-handoff/new/fastnative/common.py": "8f04e08b99a370fa82115fc46fbb3af4ab44f4facd47de07b01e1a2499a94914", + "research/gmx-t74-borrow43-handoff/new/fastnative/compare.py": "ebf877a6f47ef1fd2b797fd6077bd45d132d8cb56ab7553044bae3d86e238e45", + "research/gmx-t74-borrow43-handoff/new/fastnative/controls.py": "03131f4dc6a1830f10e35fb837ada456f060ca510994d250c5c2666a6342c23a", + "research/gmx-t74-borrow43-handoff/new/fastnative/evidence/BENCHMARK.json": "9b192c5697514c7b36b709d0e5506915425ca61f24af0210e2508d7b1bdb295f", + "research/gmx-t74-borrow43-handoff/new/fastnative/evidence/COVERAGE.json": "8bead250cc97614528d9448dfd29529bf08605daa5e8007e701038ab317e00f6", + "research/gmx-t74-borrow43-handoff/new/fastnative/evidence/REGISTERED.log": "78a49def69d0465f4318b9e24613246ba5fb6de19441e54b88fb50dfe823f149", + "research/gmx-t74-borrow43-handoff/new/fastnative/evidence/VALIDATION.json": "d265ce16251effd6b5d3b7429f31f98cd385fe79f659cfa24a2820bc17ac70dd", + "research/gmx-t74-borrow43-handoff/new/fastnative/requirements.txt": "a23aaf94250a9f53031a592980142245a848e2372b6c6c3093e8260b129265b8", + "research/gmx-t74-borrow43-handoff/new/fastnative/run_native.py": "a7bfe110fe5098f6ef8bde3c43ecf15e8d1e06149abf7321a4c945383dcc2627", + "research/gmx-t74-borrow43-handoff/new/fastnative/stage.py": "3cce27dd5a359ebc4dc70d4aab994aee52bc0a12e59db7da3f902257f876cffe", + "research/gmx-t74-borrow43-handoff/new/fastnative/vendor/native/new/code/borrow/bw_audit_local.py": "08d5864d9b77902fc5ab5a062a8ea843fe1e572243b8c580abb0a421b2e46d07", + "research/gmx-t74-borrow43-handoff/new/fastnative/verify.py": "6dbdc56ca6cfde987869e12990a495d7eded78dd1887fb3fdf2d196060220fcc", + "research/gmx-t74-borrow43-handoff/outer/CLASSICAL-BOUNDARY.md": "6647d5a71d9f6c3f628ac71a7be2e63bcb0cac9618cd4fee7493dcc4ef02529a", + "research/gmx-t74-borrow43-handoff/outer/FINE-PADDING-COMPOSITION.md": "d20d8e5f84a9e33cc9996f875be06c24c74ea53874cc76564953785ff29c5c6c", + "research/gmx-t74-borrow43-handoff/outer/GAUGEFREE-INTERIORS.md": "ebeb7fa53dca671e45b3a3dedf4603607d19461bbeb977445bf5e17bbdb25db8", + "research/gmx-t74-borrow43-handoff/outer/STRUCTURED-BOUNDARY.md": "ceef915be6462a8ad81449eefb86bf4d97db6ac41c87660e9dd7cfd2c2bc1efa", + "research/gmx-t74-borrow43-handoff/outer/UNION-SCHEDULE.md": "bc8e9cf7c178bb39b092ab5aafc4eeb523e72b1f69639bfcb9f27d0f74109357", + "research/gmx-t74-borrow43-handoff/outer/check_gaugefree.py": "f8d49739d3f5819a62f9862a624dab7bebb019f3d8ab949524cb9bbf58d3ef66", + "research/gmx-t74-borrow43-handoff/outer/check_ledger.py": "9e12909c73d3b3a31a45d801ae76c034510d6306400412e474df79bc4f1dc67e", + "research/gmx-t74-borrow43-handoff/outer/run_outer.py": "9d5dc0a7ea38973ce52a1cda02d311c235bc7c39c4d20921d5811cab1a57ef8c", + "research/gmx-t74-borrow43-handoff/outer/struct_check.py": "f1df92bb6247034a22e141dcb39c1e8b6b9df6eb9791493be25a3911f7add8d4", + "research/gmx-t74-borrow43-handoff/reconstruct.py": "1f1145b4c5aab399c69ee5f90b735367bd0bd01a8f0970dce443d22c1e03d9aa", + "research/gmx-t74-borrow43-handoff/requirements.txt": "255a2ee4a60637759d4d5c89448c55849153e81ec1d1383555c6697784d9dc97", + "research/helper408-rank7-pairing/sources/PINS.json": "d67d70971d36ccd8faa4e0edfd65852e0a41888997fc6a3937e725b573ea0e6a", + "research/helper408-rank7-pairing/sources/data/PARENT-base.json.gz": "c20a470aec0f3e61833cb41fe190639eb358f58017143d2336c55c80fba265eb", + "research/helper408-rank7-pairing/sources/data/PARENT-extra.json.gz": "db34e39876241087b581ed9374c53e9cd393e3e86ef6103bfb54f3077c3d2761", + "research/helper408-rank7-pairing/sources/data/TRANSFORM.json": "1d38f0369fce0b892d202ce2e5fd7ea95d9a95d3f80734b672cddd5cb93ce8ca", + "research/helper408-rank7-pairing/sources/data/WORD-base.json.gz": "3657ad53ebe5f156f307a903479e919f2fe812811ce5d5f15e72c3aaf68dfde3", + "research/helper408-rank7-pairing/sources/data/WORD-extra.json.gz": "b975492ff4cbec0d619cdf2da34f55ce3b20c8a541132e4339cc6c8ae3b2e487", + "research/normal45-a-retiming-boundary/vendor/preload_move.py": "c8fda4674644fcd5cbf39b6645ce148a21daa90a998b678cbe51f970b78b0044", + "research/normal45-owner-cost-bridge/inputs/PARENT-base.json.gz": "fec3c120db1a35022944628d34b56a36f2456248c274c2eaba1a325cdc690ce8", + "research/normal45-owner-cost-bridge/inputs/PARENT-extra.json.gz": "e4d0c617df85bf8a824ff68310ca3373dc017c1ebf9ea733056a3ee4a784b36f", + "research/paired-extension-normal45/structure.py": "83f63b6d9a1a543ecfa2c98d479dbe4e7a1c3caf6fd1c3566123308efbc32e96", + "research/paired-helper-extension/PINS.json": "3d49ca62f3242444db52a21b9de10f18293757842f64a2b3189ad8f4e61fad36", + "research/paired-helper-extension/data/TRANSFORM-299.json": "781585f68449c30f63e40ee4bf58d1fa194e4faf8cf4394505437fc15137ba34", + "research/paired-helper-extension/data/TRANSFORM-304.json": "024515c6e47d952dfaf307fcefda9f2106049ccc28875ae620d95241fdec72ed", + "research/paired-helper-extension/data/TRANSFORM-320.json": "0e4c0216221ab21c4bf48a11eab34ff6cc245014d664dc1523cfae9d437dc00d", + "research/paired-helper-extension/data/TRANSFORM-331.json": "355bcfd60ffcb672f66882e66bae1b046d1bfb979f725b411b034f811dfb68bb", + "research/paired-helper-extension/data/TRANSFORM-412.json": "54328a8436d7abed6433da5e4384a36ad95b266070479b496e0e96416a5f5a79", + "research/paired-helper-extension/data/TRANSFORM-424.json": "42747fa1332af1ca0827edebfff7490ee761f84f662527f593e975a502400dbc", + "research/paired-helper-extension/data/TRANSFORM-428.json": "89e8fbd5a5d1d64d386cdc38f257cae18d8e7428e868f618ed1f0be5a22aba3e", + "research/paired-helper-extension/data/TRANSFORM-499.json": "f86eef40cd96b45c67755903eae6a86432e2aeb6d53812621222db7c062d88f6", + "research/paired-helper-extension/data/TRANSFORM-511.json": "48e0749f1c82594841c88923a38b0308ed777639631a4c3f2414500617f2e34b", + "research/paired-helper-extension/producer.py": "c60546ca68a905d237401b2a255ccb60e17285b004211d523b5d8fd57b758f5a", + "research/paired-helper-extension/verify.py": "5fb7984329ce7213294c8f76a3151f06759005456940968b4cc84712933321ee", + "research/paired-swap-normal45/CLAIM.json": "656a4c93411b078753783513e2e71b1722a56e7b70120264a38118811982fa77", + "research/rank7-coupled-586-588-carrier-fold/edits/declared_edits.py": "4871287e859c6451b53adbd602eb209ad62acc7f3c6eb88106be3010044ef82b", + "research/rank7-coupled-586-588-carrier-fold/edits/edits_review.py": "2fca291cc254f61ed3528de2b95e59e54c578d7fbdec0e5c0c330350d4fbda32", + "research/rank7-joint-endframes/allocation/DISPATCH.json": "65e435bd68e97243c003677271b88485a29d4d0fae2dff1354100404a145e74c", + "research/rank7-joint-endframes/allocation/ORDER.json": "519d1d5dbb997a219fcfcad34c0b03e7838bef24199784d7e964fa10090f66e1", + "research/rank7-joint-endframes/allocation/vendor/PLAN.json.gz": "d566cfb87b71639d4138e1f89b543e2dd6a7772070226a2a14c799a6835bf21e", + "research/rank7-joint-endframes/allocation/vendor/TEMPLATE.json.gz": "21297b20f1f2dc76eb9dd8124416068c3cb096bab9df17fa4da19bc68dfe082e", + "research/rank7-joint-endframes/allocation/vendor/independent_owners.py": "77a848729159e271ba64f403dfd59dddb13044b17b2950fa56700f442e2fe461", + "research/shared-kernel-packing/vendor/pr2857/review_four_groups.py": "5b323e50fb5a10ac088472b3e085b54d7d2ae3a29f8552ff44b788a984eb97d1", + "research/shared-kernel-packing/vendor/pr2857/shared_kernel.py": "b3241527e6c136dc4b54975ef401c49d452bd6159fb99030accaf095c8fbd3ed", + "research/shared-kernel-packing/vendor/pr2857/words/WORD-base.json.gz": "001b14314d8db873d4d80826d4af9c40a3e5a1fecde743e5a26391bdf673f458", + "research/shared-kernel-packing/vendor/pr2857/words/WORD-extra.json.gz": "bc5bfe51178f0c3312d28318412ec490463c896ceed0660b9c443fcb76496546", + "research/t8-rank7-two-swaps/MATERIALIZE.json": "54b4e3d38bf16b81d87827275325dfe0bf0b5cb6f7e4ce7543a1061c6ad89122", + "research/t8-rank7-two-swaps/derived-overlay.tar.gz": "053de667b534bef38f71f0c86f39647c3af501a3f940bb3e3e797d4373ee2144", + "research/t8-rank7-two-swaps/materialize.py": "b2a9e121c18abcf6a07024ef8938c1c461d15bb23756819ed78f28b18a759185", + "research/two-sided-helper-extraction/extract.py": "e9f530fd9a2d72c86a65ae1dea147a61d072969deded314973b5f31de90c91ac", + "research/two-sided-helper-extraction/verify.py": "9cebf9f20ae8d1d66cc066507a92456b719714fd83b7223e5352a507c4b2903f" + } +} diff --git a/research/staged-release-retiming-t530/full-admission/NOTICE b/research/staged-release-retiming-t530/full-admission/NOTICE new file mode 100644 index 0000000000..59d8e0cf31 --- /dev/null +++ b/research/staged-release-retiming-t530/full-admission/NOTICE @@ -0,0 +1,415 @@ +A sharper exponent for integer multiplication +Copyright 2026 Douglas Colkitt + +This project includes unmodified source files from OpenAI's manuscript +"Integer multiplication below n log n" and its accompanying repository: +https://github.com/openai/math +Commit: adc7f1241b42e322a6451854ab7e4b4c146bf78a + +The original manuscript identifies OpenAI as its author. Its Apache-2.0 +license is retained at upstream/LICENSE. The exact source URLs and hashes +are recorded in upstream/manifest.json. Proposed modifications are supplied +as separate files under patches/; upstream source files remain unchanged. + +The original local research note, scripts, certificates, patches, and +documentation were prepared by Douglas Colkitt with assistance from OpenAI +Codex. The community release incorporates work by the contributors identified +in the notices below; it is not solely Douglas Colkitt's work. +This project is not an official OpenAI release or an OpenAI endorsement. + +Related contributions (not imported in this checkpoint): +Zhihao Chen (jacklightChen), PR #7, supplied an earlier ternary five-subset +motif, finite-alphabet transfer and a different compressed producer: +https://github.com/CrocSwap/integer-mult-bounds/pull/7 +The present checkpoint claims no priority for that motif. Related compressed +complex-network work was submitted by eumemic in PR #3: +https://github.com/CrocSwap/integer-mult-bounds/pull/3 +The pending contributions and their stronger bounds require their own review; +this notice does not represent adoption or verification of their claims. + +Additional community work, including parallel and superseded submissions, is +acknowledged in CONTRIBUTORS.md, with pinned submission metadata in +docs/research/contribution-snapshot.json. These acknowledgements do not imply +joint authorship of the checkpoint, incorporation of pending code, or verification +of submitted mathematical claims. Original source-specific notices remain in force. + +Community release (accepted by conditional maintainer audit): +The following original contributor notices apply to the imported PR #39 chain. +The preceding non-import statements describe the preserved 2^-30 checkpoint. + +Ternary five-subset construction and common-four-point resynthesis +Copyright 2026 Zhihao Chen (jacklightChen) + +This is Zhihao Chen's first submission of this specific construction to this +repository. Research, proof development, code and verification were prepared +with substantial assistance from GPT-6 Astra (OpenAI Codex), as identified by +the contributor. This is not independent review or an OpenAI endorsement. +Future research building on this contribution should explicitly acknowledge +Zhihao Chen (jacklightChen), cite the accompanying note and pull request, and +retain the preceding contributors' attribution. This notice records research +provenance; the repository's Apache-2.0 license remains unchanged. + +Dependencies retained from eumemic's Claude-assisted PRs #3 and #5: +https://github.com/CrocSwap/integer-mult-bounds/pull/3 +https://github.com/CrocSwap/integer-mult-bounds/pull/5 +PR #5 commit: d3d370c34937503bd3fa63c83d505a05e8e50893 +These include complex_circuit.py, complex_network.py, fast_gaussian.py, +their generators, construction notes and certificates. The Gaussian input +scaling proof is corrected in this derivative; see the modification notice below. +Aligned pairing also appears in Bortlesboat's PR #2. Retained totals and bank +sharing appear in dleen's PR #4 and cheaper retained centers in eumemic's PR #6. +Their results and ideas are credited separately from this new construction. + +Bulk recursion and controlled tensor basis, 8 October 2026 +Copyright 2026 icekylinx + +The new projector batching, controlled simultaneous basis, mixed-width tape +recursions, whole-residual complex recursion, and dependency-path precision +guard in the batched-23 proof package are contributed by icekylinx, developed +with substantial OpenAI GPT-6 Astra assistance. Review corrections and +repository integration were prepared with OpenAI Codex assistance. They build on the retained +PR #7 finite producers and the preceding contributions credited above. +The new package retains the repository's Apache-2.0 license and the original +authors' attribution. It is not an official OpenAI release or endorsement. + +Modification notice, 8 October 2026 (icekylinx): the retained fast Gaussian +proof now bounds shifted approximation error by F=2^ceil(1.14 alpha^2). +The P=34p precision budget and asymptotic exponent are unchanged. New batching +checks are integrated into make verify. Existing attribution and licenses +are retained. + +Partial-swap extension, 8 October 2026 +Copyright 2026 icekylinx + +The partial-swap framing, binary retained-total triple construction, +dependency-preserving positive labels and carrier reuse, unequal (25,23,57) +common basis, improved complex batching, and exact assembly are contributed +by icekylinx with substantial OpenAI GPT-6 Astra and Codex assistance. +This extension directly inherits PR #10, commit +62691e395a0458ce089a1c7b5d89e74291e95e29. The portable producer adapters +modify the retained paired-exclusion and shared-point implementations credited +above. The original licenses, attribution, and Gaussian correction are retained. + +Endpoint-gauge extension, 8 October 2026 +Copyright 2026 icekylinx + +The complementary auxiliary endpoint gauges, (32,30,40) controlled basis, +general nondegenerate binary phase residuals, retained-center complex producer, +updated path guard and exact assembly are contributed by icekylinx with +substantial OpenAI GPT-6 Astra and Codex assistance. This extension inherits +f2ab41aebad47861caf6316282c1793e5513845e and its PR #10 ancestry. New portable +adapters retain the paired-exclusion and shared-point contributions credited +above. Original licenses, notices and the Gaussian correction are retained. + +Structured-basis and semantic-bulk extension, 8 October 2026 +Copyright 2026 icekylinx + +The selected (32,30,36) bit construction, A1/A5 block refinements, fixed +middle-axis I+J profiles with bounded-minor CRT certificates, mixed dyadic +complex centers, complete data-front batching and circuit-specific assembly +are contributed by icekylinx with substantial OpenAI GPT-6 Astra and Codex +assistance. The immediate parent is ed90fd940279c336ebc45968631bdebfb087b505. + +The semantic/bulk compatibility argument, literal scalar charge, product row +stock and parameterization adapt Zhihao Chen (jacklightChen)'s PR #23, +commit 661ebabc1076c9f525d7ce4967c876b203fa9827. Translated complex endpoints +are adopted from the same contributor's PR #21, +commit 5ba6cf0bfb68f2be8d15610e7972207c50254d6a, following eumemic's source-frame +work and the earlier nested-basis contributions. + +Completed-child semantic precision, arbitrary-coordinate routing, phase-cell +Gaussian inversion and bulk tape transfer are credited to the RaD project +(hipotures), commit 45d9b60355872041f9275f77c057514def0d45bc, exposed through +PR #20 at 4f8d6c8272b5ff307a0da51df545ec3cd96a8b6e. Their selected proof +sources retain their separate CC0 license and original NOTICE under +references/semantic-bulk/rad20. The PR #23 source retains its recorded OpenAI +Codex assistance; RaD retains its recorded Codex and GPT-6.1-Sol Ultra +assistance. These are source attributions, not claims about this session's +runtime model. Related contributions by Rohan Arun and Aurel Prosz remain +acknowledged in the imported notices. No exclusive priority or additional +license condition is asserted. + +Copied retained-center extension, 8 October 2026 +Copyright 2026 icekylinx + +The copied retained-center schedule in both orientations, its complex-phase +transfer, the Wm-N+L rank budget, and the selected (25,23)/(28,28) composition +are contributed by icekylinx with substantial OpenAI GPT-6 Astra and Codex +assistance. This extension inherits PR #32 at +0ef3aeb61f55cc0b321ce6a0ef00acee25cefe52 and the preceding PR #10/#18/#24 work. + +The two-stage topology and paid copied-stream endpoint correction are due +to Aurel Prosz (Paureel), c82d09eb4781b68435e3fa3eb6beea72fa900fab, +through Zhihao Chen (jacklightChen)'s PR #29 unequal-axis composition, +9d963275075fa98f1da821e27757b238dafd6b3c. That source also credits Swapnil +Jain's two-stage development at ae405eb474d1486b2d8aef90139869f927f4836a. + +The contiguous corner method, incidence factorization and exact partition +certificates are due to Rohan Arun (PR #31), method commit +02f68f95369c39955c5ffcfddbd75cd83e26b305. The selected (25,23) certificate +specializes Dominik Scholz's parameterization (PR #33), +a499a345c040aa15b68e984a0904eadc485c7a7e. Their source notices and proof +snapshots are preserved in references/copied-centers. Historical OpenAI +Codex, GPT-6 Astra and Anthropic Claude Opus 5.5 assistance is credited to +the respective imported sources. Existing PR #21/#23 and RaD attribution, +licenses and the Gaussian correction remain in force. + +Copied centers with reversed (23,25) data corners, 2026-10-08 +Rohan Arun with substantial OpenAI Codex assistance supplies the composition, +exact dimension23 controls and cost/assembly integration. James Chang's PR34 +supplies the reversed boundary family; icekylinx's PR36 supplies copied retained +centers and the selected complex graph. The balanced assembly remains attributed +to RaD/hipotures and its PR34 specialization. Retain Dominik Scholz PR33, Rohan +Arun PR31, Zhihao Chen PR29/21/23, Paureel/Aurel Prosz, Swapnil Jain, icekylinx, +eumemic, Douglas Colkitt, OpenAI and all earlier notices and hypotheses. +This is not a claim of formal verification, new foundational rank identities, +global optimality or measured runtime speedup. + +Fixed middle basis with copied reversed corners (2026-10-08): +Rohan Arun, with substantial OpenAI Codex assistance. Composition and +simultaneous-basis proof retain icekylinx PR32/36, James Chang PR34, +Dominik Scholz PR35/38, Zhihao Chen, Paureel, Swapnil Jain, RaD/hipotures, +eumemic and all preceding attribution and licenses. See research/copied-fixed-reversed. + +Changed-graph composition with copied centers and fixed bases, 8 October 2026 +Prepared with OpenAI Codex assistance. +The new composition uses icekylinx PR36 copied centers and PR32 fixed-I+J +projectors/profiler, Dominik Scholz PR35 two fixed factors and CRT argument, +Zhihao Chen (jacklightChen) PR29/23 interfaces, Aurel Prosz (Paureel) and +Swapnil Jain's two-stage development, Rohan Arun PR25/31 corner methods, +Dominik Scholz PR33/38 dimension/composition work; James Chang (jamesyc) +PR34 reversed geometry and balanced transfer; Rohan Arun PR37/39/40 +reversed integration, modular data tests and both-fixed baseline; +RaD (hipotures) PR41 changed scalar DAGs, alternating point order and +independent role compiler; RaD balanced routing/bulk interfaces, and all +retained predecessors. +Complete attribution and the conditional proof boundary are recorded in +research/copied-fixed/PROOF.md; imported originals and source pins are retained. +Original Apache-2.0 and CC0 notices remain applicable. + +Community follow-up integration (PRs #49, #45 and #26), 8 October 2026: +Rohan Arun contributes weighted carrier matching and climbed summand/leave-one-out +orders (PRs #44/#47/#49), with Anthropic Claude assistance. The final construction +composes Chafik Boukhalfa's changed-graph checks, exact rational data recovery and +reordered exclusion sums (PRs #43/#46/#48, OpenAI Codex assistance) with RaD / +hipotures's alternating pair order and independent physical role compiler (#41). +All predecessor attribution and conditional proof interfaces remain in force. + +Alejandro Zarzuelo Urdiales contributes Gaussian parity and canonical arithmetic +proofs, finite tensor execution, profile precision accounting and mixed-center +reference checks (#45), with substantial OpenAI Codex assistance. See +research/gaussian-parity-synthesis/PROVENANCE.md for his full attribution. +Ryan S / princezuda contributes historical Lean certificate arithmetic, algebraic +frame/movement/guard lemmas and independent paired-circuit checks (#26). Original +source notices and historical snapshots are preserved. Neither formal package +claims a full formal proof of the multiplication algorithm or a new kappa. + +Joint frame compilation of skip-prefix strips + +The local compiler and exact finite witnesses were prepared by eumemic with +substantial OpenAI Codex assistance. Avi Eisenberg / ikeboy with Anthropic +Claude assistance supplied the unmodified PR #53 skip-prefix producer. +The pinned PR #48 pipeline is Chafik Boukhalfa's contribution, incorporating +Rohan Arun, RaD / hipotures, icekylinx, Dominik Scholz, James Chang, +Zhihao Chen, Aurel Prosz / Paureel, Swapnil Jain, eumemic, Douglas Colkitt, +OpenAI, David Harvey, Joris van der Hoeven and the earlier contributors +credited in the retained sources. See references/frame-compiler/pr48/NOTICE +and references/frame-compiler/pr53/NOTICE for their original attribution. +No authorship or review by those predecessors is claimed for this compiler. + +Joint dual-skip/frame-compiler composition (2026-10-08) +--------------------------------------------------- +Rohan Gupta / gupt1156 with Anthropic Claude assistance: PR55 dual-skip +scalar graph; original LICENSE and NOTICE are retained under +references/frame-compiler/pr55. eumemic with substantial OpenAI Codex +assistance: PR57 joint reversible frame compiler, serialized physical-word +replay and profile reconstruction. Chafik Boukhalfa with OpenAI Codex +assistance: this composition, independent integration and exact certificate. +Avi Eisenberg / ikeboy, Rohan Arun, RaD / hipotures, icekylinx, and all +predecessor authors retain the notices above and in pinned source files. +No original copyright or Apache-2.0 notice is removed. + +Ranked reclamation after the PR58 joint-dual composition (2026-10-08) +---------------------------------------------------------------- +Chafik Boukhalfa with OpenAI Codex assistance: prioritize retired physical +slots by descending current frame rank, retaining slot ID as the tie-breaker; +complete replay, exact profiles, comparison and adversarial controls. +The dedicated joint_dual_reclaim_compiler.py is derived from eumemic's PR57 +compiler. Its original shared compiler remains byte-identical. The PR55 +producer and all preceding attribution remain unchanged. The complete PR58 +comparison certificate and its original source/proof provenance are retained +under references/frame-compiler/pr58. + +Skip-prefix strip producer, 8 October 2026 +By Avi Eisenberg (ikeboy), with Anthropic Claude (Claude Opus 5.5) +assistance. The skip-prefix leave-one-out strip layout in +research/skip-strips/skip_graph.py is new. Everything else reuses Chafik +Boukhalfa's PR #43/#46/#48 research/copied-fixed pipeline, its verification +code, exact data recovery and support-order sorting, together with: +- Rohan Arun's PR #44 weighted carrier matching optimizer; +- RaD (hipotures) PR #41 alternating point order; +- every predecessor credited above. +Complete attribution and the conditional proof boundary are recorded in +research/skip-strips/PROOF.md. Original Apache-2.0 and CC0 notices remain +applicable. + +Local split-pair skip-prefix research continuation (2026-10-08) +Prepared with substantial OpenAI Codex assistance at the user's request. +New contribution: singleton/pair recursive partition refinement, finite summand +order and moment search, and verified composition with inherited paid clones. +Avi Eisenberg/ikeboy with Anthropic Claude assistance: PR53 skip-prefix strips. +Chafik Boukhalfa with OpenAI Codex assistance: PR54 original-envelope clone +specialization and PR43/46/48 checking interfaces. RaD/hipotures: PR51 +whole-chain/source-partition cloning and earlier producer/interfaces. +Rohan Arun: PR44 weighted matching and earlier fixed/reversed work, with all +stated historical AI assistance. All predecessor notices remain applicable. + +Original-envelope whole-chain clones on skip-prefix strips (research/skip-clones): +Chafik Boukhalfa, prepared with OpenAI Codex assistance. The complete-chain +source-partition clone operation is adapted from RaD / hipotures, PR #51, +with original envelopes retained here. The scalar base is Avi Eisenberg's +PR #53 skip-prefix layout, prepared with Anthropic Claude assistance. +All credited PR #43/#46/#48, PR #44 and earlier code/proof notices remain +in force. This extension is provided under the repository's Apache-2.0 terms. + +Community review checkpoint #50–#61, 8 October 2026 +Maintainer integration and independent arithmetic: Douglas Colkitt, with OpenAI Codex. +Avi Eisenberg / ikeboy: skip-prefix strip framework (#53), with Anthropic Claude. +Rohan Gupta / gupt1156: parallel order search (#50, stated Antigravity assistance) +and dual-suffix strips (#55, Anthropic Claude assistance). +Eumemic: equal-frame joint compilation and paid signal reclamation (#57), with Codex. +Chafik Boukhalfa: original-envelope paid clones (#54), composition (#58) and ranked +reclamation (#60), with Codex. Rohan Arun: order search (#52) and positive-frame +composition (#56), with Anthropic Claude and stated Codex validation assistance. +RaD / hipotures: enlarged frames, source partitions and paid whole-chain clones +(#51), with Codex. Rohan Garg / rohangar1: singleton/pair recursion and paid-clone +composition (#59), with Codex. Alejandro Zarzuelo Urdiales: exact parameter +refinement, scoped Lean arithmetic, matrix/parity and search tools (#61), with +his disclosed multi-tool and Codex assistance. +Parallel #50/#52 records are reviewed and credited without replacing the earlier +climbed-48 implementation; their exact commit history is retained. The separate +#51 witness is retained as research; its source-graph/negative-basis data proof +has not received the same full replay as #56's consumed compiler machinery. +See docs/research/community-round2-review.md for precise validation boundaries. +All earlier licenses, contributions and notices remain applicable. + +Interval strips and core-aware pair assembly + +The interval leave-one-out strips and the core-aware group-pair assembly in +research/pair-assembly were prepared by Avi Eisenberg / ikeboy with Anthropic +Claude assistance. They build on PR #53's skip-prefix pipeline and its +inherited PR #48 sources. The stacked witness in research/pair-assembly/frame +uses eumemic's PR #57 joint frame compiler unchanged; its driver and verifier +are adaptations of PR #57's skip_frame_compiler.py, skip_frame_compose.py and +verify_skip_frame.py. Original notices are retained. + +Stopped product-ring extension, 9 October 2026 +Copyright 2026 icekylinx + +The opposite-bank generic projector factorization, componentwise atom-ring +adapters, stopped recurrence and outer ordinary-interchange conversion, +aligned pair-star producer with rational centers, exact denominator-21 +grid and selected (23,23)/(24,24) composition are contributed by icekylinx +with substantial OpenAI GPT-6 Astra and Codex assistance. This extension +builds on merged PR #36, 11817ccacb564bb7f98789c20dc11d3fece207e3, and is +integrated on upstream main 56b66d58297deca1d7dd130247d720e960f77a37. + +The retained ordinary leaf uses the preceding projector, corner and +copied-center proofs. The selected two-stage topology retains Aurel Prosz +(Paureel), Swapnil Jain and Zhihao Chen's credits; the semantic assembly +retains PR #21/#23 and RaD's attribution. Paired producers, carrier matching, +original source notices and each imported license remain unchanged. + +Partial-gauge extension, 9 October 2026 +Copyright 2026 icekylinx + +The pair-first cube assembly, compatible backward frame enlargement, +partial source-gauge schedule and stopped whole-projector composition are +contributed by icekylinx with substantial OpenAI GPT-6 Astra and Codex +assistance, extending PR #104 at 948ce1510df750f4c18b96bdaef436a86f8bf834. + +The physical deferred bit word, reflected event accounting, fan-order +clarification and signed two-stage endpoint are adopted from Zhihao Chen +(jacklightChen), PR #97, e15350b66e4bf796153a68c240a6cc1b788abe3e, with +Codex assistance. Its deferred readouts, V leaves, lifted frames and frozen +witness originate in Swapnil Jain's 741e7aa078392553815df7926ee17ac5e25a8c38, +with the original Claude disclosure retained. Cyclic interval and core-aware +pair primitives build on Avi Eisenberg (ikeboy), PR #62, +ad0f25ff7b23cff7f08ad237c2254e6ecf74257e, with Anthropic Claude assistance. +Prior two-stage, copied-center, ordinary-leaf, semantic/bulk, routing and +precision credits remain in force. Imported source notices and licenses +are preserved under references/partial-gauge/; see SOURCES.json. + +Three-stage cover extension, 9 October 2026 +Copyright 2026 icekylinx + +The arbitrary-subspace Clifford frame theorem, three-stage Cayley geometry, +weighted q-adic GL cover, unit-lower weighted compiler, charged local-ring +fallback, uniform batching, internal row borrowing and exact composition +are contributed by icekylinx with substantial OpenAI GPT-6 Astra assistance. This +repository integration uses Codex assistance and extends +PR #115, cf60442983c153a3a0f5272ea4713f99eba13c86. + +The selected local complex DAG and support/label replay are adopted from +Copyright 2026 eumemic, PR #117, cbb05ce504d571546d9b7794c186a613c659c3bf, +with its original Apache-2.0 terms and Claude assistance disclosure. +The unchanged bit physical word retains Zhihao Chen (jacklightChen), +PR #97, and Swapnil Jain's underlying witness and assistance notices. +The prior opposite-bank, stopped ordinary-leaf, copied-center, topology, +semantic/bulk, precision and analytic credits remain applicable. +Original source notices and license bytes are preserved in +references/three-stage-cover/pr117/ and references/partial-gauge/. + +Paired-cube and shared-core extension, 9 October 2026 +Copyright 2026 icekylinx + +The paired-coordinate triple-cube identity, signed overlap channels, +original-source involution, coordinate-star centers, concrete frame/carrier +compiler, chronological source gauges, PR97 gauge-subset selection, +orthogonal cross-stage routing and exact supplier/assembly integration +are contributed by icekylinx with substantial OpenAI GPT-6 Astra assistance. +Repository integration uses Codex assistance and extends PR #130 at +6a9970a530119174507904e23592fd59ede19a5d. + +The substantial completed-core workspace-sharing principle is credited to +an664, PR #128, 530588a019b4a74f09180680c9e3961bf649ec89, with its reported +OpenAI Codex assistance. No source code, partition or serialized witness +from that PR is imported. The new routing and paired-motif integration +are described separately and claim no exclusive priority for broad sharing, +paired-coordinate, Fourier or carrier-matching ideas. + +Selected coarse queries restrict the retained eumemic PR #117 positive DAG; +its original Apache-2.0 and Claude assistance notices remain unchanged. +The bit word and original frames retain Zhihao Chen's PR #97 and Swapnil +Jain's frozen witness, notices and historical assistance disclosures. +Earlier generalized Clifford, three-stage, uniform weighted recursion, +ordinary-leaf, semantic/bulk, precision and analytic credits remain in force. +Source-specific license bytes are preserved under references/. + +October 9 recycled-bit integration: +DaysSky (#150), William Porter/hpst3r (#147), Thomas Marchand/Th0rgal (#146), +Rohan Gupta/gupt1156 (#148), James Chang/jamesyc (#124), SovereignSteak (#122). +The original notices and assistance disclosures are retained under research/, +including research/recycled-bit-integration/NOTICE. Andrew Barnes/Bortlesboat +(#101) repairs shared verifiers using rfu08's #64 counterexample. rfu08's +scoped finite and formal-transfer packages are included separately; they do +not establish the full multiplication theorem. Earlier and parallel credits +remain applicable. Douglas Colkitt integrated these with OpenAI Codex assistance. + +SovereignSteak PR151 independently supplies the matching gauge/recycling +composition and the selected 473/10^6 atom refinement; its original package +and assistance disclosure are retained under research/gauge-recycling/. + +October 9 coordinated-frame and completed-entrance-bank integration: +Dugongue PR186, 166a34d75e853e933855f0f7e940fe77c4bb6b8d, builds on +Chafik Boukhalfa/chafreaky's PR181, 7fb2194801e3a10f54772c7f0d5505035a4fc0ad, +and eumemic's PR168 v4, 4a3c769e5c5430e7114c4d3e099ff34664677f17. +The frozen package and prerequisite archive preserve all author, source-license +and assistance notices, including PR175's compiler optimization. DaysSky's +carrier closure, James Chang's terminal substitution and balanced assembly, +geckods' stopping refinements and all preceding framework credits remain. +Rohan Arun's PR185 bootstrap and chafreaky's PR182 bit refinement are reviewed +parallel contributions; their gains are not added to the selected witness. +Douglas Colkitt integrated the package and supplied the bank scheduling +supplement with OpenAI Codex assistance, under Apache-2.0. The all-size +interfaces remain conditional; finite verification is not full formalization. diff --git a/research/staged-release-retiming-t530/full-admission/PUBLIC-PINS.json b/research/staged-release-retiming-t530/full-admission/PUBLIC-PINS.json new file mode 100644 index 0000000000..9b5dac89c1 --- /dev/null +++ b/research/staged-release-retiming-t530/full-admission/PUBLIC-PINS.json @@ -0,0 +1,189 @@ +{ + "schema": "public-retiming-summary-files/1", + "sha256": { + "ARCHIVE-OMISSIONS.json": "ff8f4c3281ade85526959e43bea647b86e0e4c7d2cf93ac3522ae55df9f37331", + "LICENSE": "c71d239df91726fc519c6eb72d318ec65820627232b2f796219e87dcf35d0ab4", + "MAIN-INPUTS.json": "cdf3c11de5b0e43646043330ced860a8c2ae70cb71fd07c7ccb3589415521cda", + "NOTICE": "b49022cb4104d90b182e4c335f670faf45529025b15db77bf0291835083c28bd", + "PUBLIC-PROVENANCE.json": "a811de5291da8cca961d7b0b2b66c544b9c4f60e269c8c0834be2ae1b5ae141d", + "README.md": "29cf9c8b0f1dfb8bcfeca48873baceb08774688d8d1bcd58fde12ecc179d7c2e", + "check_recorded_summary.py": "a8993e8e84491790edede5f7dc467be59c1192d352b60197e0b26d592e9067d8", + "data/RETIME-AUDIT-base.json": "b3a4fefcb1aa16b16ec4a4481da10afa06f8f2a59c2e77ade8eaa6dd48bc8d0e", + "data/RETIME-AUDIT-extra.json": "ddf5b88b7338202a40cc92851c1e95d8fdc0ad97ffc8bc6f680ba162e913fecb", + "data/RETIMED-RECORD-base.json": "9e224473ea00cc5965f8202d7d9e9f29b1069c7e5dde95ae949bdbaa92949fb4", + "data/RETIMED-RECORD-extra.json": "c7b0eb0663dd5d1f7e78105d32e0c2669fc473fb5e730f5fa0fab31e2c0dd13c", + "data/RETIMED644-660-base.json.gz": "6df3356808e29909776be8bc0faf03df983401a267c2d740d1ac2dbcaa278269", + "data/RETIMED644-660-extra.json.gz": "65624efec36b35934b750c1741ba2ad4e6df3cff86e44536b0c016ebddb0fb55", + "data/STAGED644-660-base.json.gz": "735c540b1fe29d0ceeb4d2f304ec941e5f2bd3bc92bafc8cce2b4f9a67a3b653", + "data/STAGED644-660-extra.json.gz": "886338fc32da14f3389a82c8120a1bcf9c5e2f0ec3e9b2d377fdae809e1d977f", + "evidence/ADMISSION-COMMAND.json": "a68b9f12801a87e8da2039966c274a84c7e9882f2e83fde053a965cb80eb772c", + "evidence/ADMISSION-RESULT.json": "51f41f2dc65654492b8fe0c5049a7b81a7a31f56aa3bf7864d90be45b628f231", + "evidence/ADMISSION-STAGES.json": "60441920a466b073f4d1b4ad7a02e7d87bb91f21e3e9136e2a54f46957a40b3e", + "evidence/ASSEMBLY.json": "3ccbf66eab7b067d46da6dc85d4d64dd142cf3598bec5cfe5af209a2528bd7d3", + "evidence/CONTROLLER-AUDIT.json": "50387246e44de8512452460de73ab7ce30bb9391b832e6c6e32751b791e033e8", + "evidence/DERIVATION.json": "d5283f9c59d3a419d29351fa60f9c7514e206a3d9f7ead2ef1c2e7836f87f461", + "evidence/GEOMETRY-CONTROLS.json": "13a50b2f2448931ca302a55e5839c082f651331f20402448fe6ff29d1eb2f481", + "evidence/INHERITED-RUNTIME-PATCHES.json": "35f74730e3f249e5bfc929ef633feaa551fd17d46d682d0125c9cf370580d16b", + "evidence/NATIVE-ENVIRONMENT.json": "8360a3a4beecde7ea72d92248a68c2bd39a7ab91eeaf0282e0f4781348a2b6e8", + "evidence/NATIVE-NATIVE-RECEIPT.json": "2967a2fba90cb9019bcf48092942bb9c7eb1bf0f336e72ca5816c670cd4c3eac", + "evidence/NATIVE-RESULT.json": "d7466460f5d9e53cbc640d8a6b06523ea5337817ca663897c737b0281f9b909f", + "evidence/NATIVE-STAGES.json": "ddbf5a98ad4a61a4aa00d8cc1bef12c82018ed76f8156a373eaee78c8a9246b5", + "evidence/OWNER-AUDIT.json": "14cd76009b3fb862de216aae145ab37656a424a9e180b45e2f8b641ba4772a66", + "evidence/PACKAGE-MANIFEST.json": "6eac9a8c77a4e67c7c0a928117350529b49570fb53f714d591e1d4fe0a90ab94", + "evidence/PARENT-SOURCE-MANIFEST.json": "318ede57c79d10323fb1918f7be4d451d1fcdac01c6456fe9851d51d05d59453", + "evidence/PORTABLE-SOURCE-CHECK.json": "0ed265fc227873b5a7c7e527706d905f4e072b119c8bd09ae5679f9752bcf228", + "evidence/PREFIX-AND-INVOICE.json": "caf49b466dddd0283a017552d5fc8d926ae2cd19db0eb9388cf7e9fd827e4297", + "evidence/PUBLIC-SOURCE-REBUILD-RESULT.json": "fb71b88fb0be33d3467ce6976102313345d11dc4170d1f6f626a8c7249581885", + "evidence/PUBLIC-SUMMARY-CONTROLS.json": "4a31d11b66010d7eabdc63e1327c5884eac7b78f6f2a9aa43984e9328d9e34db", + "evidence/RELEASE-RECEIPT.json": "80e1f422359d7c553493c1e0f2a1b4c4de230f8eb74690e1471a14d65169d110", + "evidence/RETAINED-REUSE-RECEIPT.json": "f90cafe84385533a0eeb96356f385b646f402ff85cd05154c47a81c783023d9d", + "evidence/RETIMING-COMPLETE-RELEASE.json": "346e22c25de55e49ba0bbd8ffef1e9674a630452351ccf2a9166b1ece50f0c7b", + "evidence/SOURCE-MANIFEST.json": "fb47533a401d1d13719be8b9aab91fe5313931ca62d40dba336eab6a96275aa0", + "evidence/STAGE-SCRIPT-BINDINGS.json": "147543c049a083097f75db0923f1994c005a8a47b0e7ff280177fdc62fbbef76", + "evidence/STRICT-STAGES.json": "d4fa62461de5a431fa8485f2bcde5c37fef54b3d2f701271386e7b0c02b50b9d", + "evidence/SUPPLIER-RESULT.json": "9ab7c0a9d457c992c01993f73ebabc4286e692d8184d32a0222eac394fd03bb4", + "evidence/SUPPLIER-STAGES.json": "b3502a6ef790ce02064caaaef863aaa05a132991e293cc85a30e11b9f0c3ad22", + "evidence/logs/discovery.log": "75aa839712643553e5d46922f2aeff7bcebd197910e1098a0c3430010e71fb28", + "evidence/logs/outer-check_ledger.py.log": "dc0e4db2bfa2937532113e1678f8cd5513080c0c691e9ee558085b16682fd115", + "evidence/logs/outer-independent_check.py.log": "7f55339f208e0ed8d7456ae68fa61ba43a79d37f8b0f382405ce05880155f576", + "evidence/logs/owners.log": "48248e5bc879a86b178083e82bf9a6299b1d6a4b73f32177de5f1330509419e6", + "evidence/logs/parent-lift.log": "240f02db618ec1a3a196845cc328eae52361bf838514658d64e744b14d7b986b", + "evidence/logs/rebind.log": "0dc96988ea6182e2d855f17550c8a992cb30b8b97ad7817be23f1033499f9a03", + "evidence/logs/release.log": "fe92fa512cf03cf655b151637520f8bea1774c23967860e532d89587f1486a6a", + "evidence/native-base-RESULT.json": "93667243b4bb7300683f4bb6923f5ed55e7298afdcf10e1dbedca842d77b72bc", + "evidence/native-base.log": "25913a541f8aeb459f5aae9787a235c098422ca492636bf456011cc3d3c8e9a0", + "evidence/native-extra-RESULT.json": "0a575ae9bec7fac0949c9ed2e6727b1364d1d45b77d3f27b839c0b4ee24af4c5", + "evidence/native-extra.log": "e931822e91ee17c7f36855ad033de2f686bf6a55bfd788e3a00958f247159021", + "evidence/native-logs/base/ledgers-bw_emit.py.log": "3c22a15ea4f7a760b7e51d018db25509ecfea353334b14640a348f90cc9dfe8f", + "evidence/native-logs/base/local-replay-bw_audit_local.py.log": "2fac3873f6c1a23bc0393c701003ea73ac06fa077eb049dea0e4e158903ec402", + "evidence/native-logs/base/native-bw_transport.py.log": "bbb99340536118d1192726cd59d9fbced72fb21cbb667c20a3f582f56c61ef69", + "evidence/native-logs/base/phases-bw_check_recipes.py.log": "985f91e7b90482d89b062b43dbe9c3885521fe26e4f8600c3b7757c33d3181ed", + "evidence/native-logs/base/phases-bw_phases.py.log": "69727c9cd4ce5ad938bf1cd7d998a7c4c55e9a9b1c3ab5282cffc9bcb461629c", + "evidence/native-logs/base/wrappers-bw_adapters.py.log": "92065498c6214eb987a9906ad8e018c6459465c91f142268c1fd7cd5d4a13e7d", + "evidence/native-logs/extra/ledgers-bw_emit.py.log": "3c22a15ea4f7a760b7e51d018db25509ecfea353334b14640a348f90cc9dfe8f", + "evidence/native-logs/extra/local-replay-bw_audit_local.py.log": "2fac3873f6c1a23bc0393c701003ea73ac06fa077eb049dea0e4e158903ec402", + "evidence/native-logs/extra/native-bw_transport.py.log": "f5e71dfe851dfad5e1763ac0c1b30f3100d503495ee5e69ad6f1306bd36ed549", + "evidence/native-logs/extra/phases-bw_check_recipes.py.log": "985f91e7b90482d89b062b43dbe9c3885521fe26e4f8600c3b7757c33d3181ed", + "evidence/native-logs/extra/phases-bw_phases.py.log": "2983aede642c67bfb19f1716eda3014e99c78b437b61a73db345df17542e8acf", + "evidence/native-logs/extra/wrappers-bw_adapters.py.log": "92065498c6214eb987a9906ad8e018c6459465c91f142268c1fd7cd5d4a13e7d", + "evidence/native-summary/65624efec36b35934b750c1741ba2ad4e6df3cff86e44536b0c016ebddb0fb55/CACHE.json": "fa872a8bf10ed47da15bc7a383f32ecf1935c49b22ac182b29b578e2f376aa2c", + "evidence/native-summary/65624efec36b35934b750c1741ba2ad4e6df3cff86e44536b0c016ebddb0fb55/STEPS.json": "5a1eed0c759c403b4b69d83abe6ce37787e5f9386a8c1028d816f8126607c6df", + "evidence/native-summary/65624efec36b35934b750c1741ba2ad4e6df3cff86e44536b0c016ebddb0fb55/local/INDEPENDENT-LOCAL-REPLAY.json": "8d9013f5060502270b63cb7a6078ab18bf1242a3bb74af7126e3e5b93e3be037", + "evidence/native-summary/65624efec36b35934b750c1741ba2ad4e6df3cff86e44536b0c016ebddb0fb55/local/LOCAL-CHECKS.json": "11743473efa1822069303b49c62b1853af4236f46ef54b4778a27e2e70d79d06", + "evidence/native-summary/6df3356808e29909776be8bc0faf03df983401a267c2d740d1ac2dbcaa278269/CACHE.json": "1b4d790152a34d2dea86043377b9979a7f9b0dc0989c065b7b4abb84d15b1a9e", + "evidence/native-summary/6df3356808e29909776be8bc0faf03df983401a267c2d740d1ac2dbcaa278269/STEPS.json": "59930bc84ab798dec32c846a79431eff30f36673917261d9049eb6645c50bc39", + "evidence/native-summary/6df3356808e29909776be8bc0faf03df983401a267c2d740d1ac2dbcaa278269/local/INDEPENDENT-LOCAL-REPLAY.json": "f99d4c50632d1cff239ac6f54e4040bc9a7ac66500de9d032c8e9fc5ec42a458", + "evidence/native-summary/6df3356808e29909776be8bc0faf03df983401a267c2d740d1ac2dbcaa278269/local/LOCAL-CHECKS.json": "11743473efa1822069303b49c62b1853af4236f46ef54b4778a27e2e70d79d06", + "evidence/native-summary/7b0e9fbda32749aabc7e156d9fe09bceb0624a178628fe69e5dfea783462f905/CACHE.json": "3ed6859152f2594352bea363ce8d297f93dc138a5748b2a55523e89d2eef3776", + "evidence/native-summary/7b0e9fbda32749aabc7e156d9fe09bceb0624a178628fe69e5dfea783462f905/STEPS.json": "02a8f2021aa8406277656a086d875a2d50cea569e5179c27d2bcaed92d9826ff", + "evidence/native-summary/7b0e9fbda32749aabc7e156d9fe09bceb0624a178628fe69e5dfea783462f905/local/INDEPENDENT-LOCAL-REPLAY.json": "39874d664110d1ee85da901e2cd56e7cd0f27e0153813d4608c98122a90815da", + "evidence/native-summary/7b0e9fbda32749aabc7e156d9fe09bceb0624a178628fe69e5dfea783462f905/local/LOCAL-CHECKS.json": "ef01cb5b6d1779518282c69a20d1dbcdbf57cb89ba616e2101bb209b37d80286", + "evidence/native-summary/_receipts/e0eefc96567fbb45e19e6de0ca295381dbe0e686c08ddc783639b065c7c791d4/RECEIPT.json": "bc1bc13637846b3807119ae55dd006c8076815f355c93e0a1f57c1dce3ebeb3e", + "evidence/native-summary/_receipts/e0eefc96567fbb45e19e6de0ca295381dbe0e686c08ddc783639b065c7c791d4/RESULT.json": "845e82a755ac46ea2f62b79700f7af6037616408a8359e615c24d351713c8c12", + "evidence/native-summary/_receipts/e0eefc96567fbb45e19e6de0ca295381dbe0e686c08ddc783639b065c7c791d4/STAGES.json": "b0d0263a87e95da1dc03e552c878ba4da4494184d1560ecc66e4dd93d7129a0b", + "evidence/native-summary/e8e6e78ff7422275c38324499e1f33fb2ecd30de9503aef2b8f1ee80d8c4df8e/CACHE.json": "2ab0c916ce58b97c3bca6b2d0369168f3626f06c7cf566dec0ead919ba7d7940", + "evidence/native-summary/e8e6e78ff7422275c38324499e1f33fb2ecd30de9503aef2b8f1ee80d8c4df8e/STEPS.json": "ae00b2906950db818416e47984cb08ecbf55ba836d68e5fce7bfb94926a91bc5", + "evidence/native-summary/e8e6e78ff7422275c38324499e1f33fb2ecd30de9503aef2b8f1ee80d8c4df8e/local/INDEPENDENT-LOCAL-REPLAY.json": "70b4b787a5a4529452a58e9ac48826e848748a35b95a9b20c5358f4355705058", + "evidence/native-summary/e8e6e78ff7422275c38324499e1f33fb2ecd30de9503aef2b8f1ee80d8c4df8e/local/LOCAL-CHECKS.json": "e52e7feece9cb22e83c1d687c0f98731f8d50b7e8c863732ec662c89453fbcd4", + "evidence/portable-STAGES.json": "0ed265fc227873b5a7c7e527706d905f4e072b119c8bd09ae5679f9752bcf228", + "evidence/portable-new-retiming-review.log": "d85d4eb71eb02b45de85515eb424fbc993b3c315083fad2b939bfd66d2de2203", + "evidence/portable-preserved-staged-review.log": "de2fa433a259e21f69f10db63667ba6034e0cd35f102a989208e865d042c31c8", + "evidence/release-logs/outer.log": "670f60ee3ecc7e2d7fc4b23b468d4cdb8cfab9edaf252cd2410c1cabcb0318dc", + "evidence/release-logs/verify.log": "d240f4323dd046a88332536c2100cb9495b12ee01c6f3aa2678ae09b181cb0e1", + "evidence/retained-parent-CLAIM.json": "bc9e90a475333b957a8c4eae8b950988caea89e20e9b44a919e83415fb76b1b8", + "evidence/runtime-summary/CLAIM.json": "2048826e64891fc8e0b4d2f7a70edebacab4b62b31b0609eb8330299f892d014", + "evidence/runtime-summary/new/SPEC.json": "cf8d85cf2c447522cf95afb01fe03a40b6a53567156ab36c485a17ad44f82922", + "evidence/runtime-summary/outer/B.json": "1c28c50d56e4935886eb33ee20ccf7af7b6e1458e09debbf6f1f3d28bea6560d", + "evidence/runtime-summary/outer/LEDGER.json": "14ed690fd607d9e7fc29b1d290593acc5c3961be449c469a2a5db500006e1a6d", + "evidence/runtime-summary/outer/OUTER-CLAIM.json": "512d8c62a12e669040cf849c4b9774af297c585208a0ce0d86e517dc29fc46cd", + "evidence/stage-scripts/discovery.py": "4f5c0926b70edb5aef3af0f8a8d9fa8119fa7af6603df1721c0dc31760b08254", + "evidence/stage-scripts/outer-check_ledger.py.py": "1dd56009986eb14dd6603c9193c7ad71dd45c7d005bf71c9cd3f916e66f54d98", + "evidence/stage-scripts/outer-independent_check.py.py": "a5a0361539ec7cae9eb6c0371f857919335a1720040f22af291aa3e34fc864c7", + "evidence/stage-scripts/owners.py": "5472811c24aef3852dc7e189dff5060076a6c0b25bfde928da50dcfe9b5bdc15", + "evidence/stage-scripts/parent-lift.py": "9a1edd7d4ab4a2f2ac8d15b42b7e40f93653d65026bac59e4c1ce80b486bd60e", + "evidence/stage-scripts/rebind.py": "52f8b4cec2dab69cbe590e1fd0f7a68e1b35de5a540bd22fd2adfce07a92b46b", + "evidence/stage-scripts/release.py": "6cfefe80c02a6c0f243f50ca9e146e1ab1440b84a033d8a71d42be5a5fa27f6b", + "evidence/strict-logs/admission.log": "1cee8d732e126c670f531018d65955c23828a7cc0af8d6ac4bb0f6672962a540", + "evidence/strict-logs/assembly.log": "8381985bf9120e38a0891e6b3495248a74ac7db3a5c204c6c4b983569dea75cd", + "evidence/strict-logs/audit.log": "50387246e44de8512452460de73ab7ce30bb9391b832e6c6e32751b791e033e8", + "evidence/strict-logs/bind.log": "71f679ce5a123fb58397fd6852ba64ce3832fd20e81a096bfda9a1cf3237237a", + "evidence/strict-logs/bit.log": "d54d260bf95bd8ae4ab8846314082b93b2e3d8f427eb35376691f2ce543a6b67", + "evidence/strict-logs/emit.log": "62318c4d7144194d8c5f2f52f2cedb7876e68057a3d6967f3d26019a04a6a3e7", + "evidence/strict-logs/independent.log": "d2c176fb1b9778e4fb8b98b6272d5f713d676ea3fed84da20213eca036bb58fe", + "evidence/strict-logs/invoice.log": "f85ae311904331b375004ec8c233d1c963bd82f0f48d33dc312319f9e68c4e67", + "evidence/supplier-logs/audit-local-566-base.log": "7e1ff2fecf2df3cacdd5335b67aa302368be2a736d6d484ddfd56d2c28586ae9", + "evidence/supplier-logs/audit-local-566-extra.log": "823a6d7d6b4b333babdd75c27c342c4ae526d2529e7b6f6d2bb9ef1713a8bb67", + "evidence/supplier-logs/declared-edit-review.log": "9812aa8d08d4251d390eb0cea1e5731dc59d22e09e0c914823c77d3e2e233e13", + "evidence/supplier-logs/fine-engine-oracle.log": "ea6df7be568d6461ac54e0d56754797de0f70f2f1ecc335114791445b75795d3", + "evidence/supplier-logs/geometry-controls.log": "0a3ecf05cfa2bebb61fffd2fbb4b244c03d742069e2705d02512699bbf4b01f9", + "evidence/supplier-logs/lemmag-labels.log": "91fafdc76824e278546bb51465cf84d60a3513df3f2e8ab9854919c416cd3469", + "evidence/supplier-logs/lift-parent.log": "240f02db618ec1a3a196845cc328eae52361bf838514658d64e744b14d7b986b", + "evidence/supplier-logs/paired-extension-review.log": "22f1c329665ba83cc5fc58eb882369f1817b2708ee3391b57341ff0a59a77170", + "evidence/supplier-logs/preload-move-independent-review.log": "c456d3e39c09e960ceebf80251d5e808fa9299991471fd86f4093d9bc4dd3eda", + "evidence/supplier-logs/rebind-566.log": "0dc96988ea6182e2d855f17550c8a992cb30b8b97ad7817be23f1033499f9a03", + "evidence/supplier-logs/rebuild-borrow-words.log": "5b1c1f9e3bcbaab31d134fd7a5a1e3629dc8a225bd67ddf94a664f0a52595363", + "evidence/supplier-logs/rebuild-words-566.log": "dcbcbeda80423df29ef008bfac58409378f1fd0a3b9b23fc31ab9f03659dd86f", + "evidence/supplier-logs/reconstruct-owners.log": "48248e5bc879a86b178083e82bf9a6299b1d6a4b73f32177de5f1330509419e6", + "evidence/supplier-logs/shared-kernel-independent-review.log": "3dc6eb8940cf8a4b993f80129c98b6c4846ad346ccf773a78af225cff3339cc3", + "evidence/supplier-logs/staged-release-retime-review.log": "d85d4eb71eb02b45de85515eb424fbc993b3c315083fad2b939bfd66d2de2203", + "evidence/supplier-logs/staged3605-review.log": "de2fa433a259e21f69f10db63667ba6034e0cd35f102a989208e865d042c31c8", + "evidence/supplier-logs/strict-t74.log": "e5efcef5cb683fd3be94fbdb0d25fb65bc805b0b2d1417eadf3495f464b5370d", + "evidence/supplier-logs/two-sided-helper408-review.log": "6b6be35dc5a9105d9f7fbca2b37952b3865b14ccf6ff1fbba75664241c7fafd8", + "reproduce.py": "9ec43247d2b3af6e4fce61173a4e59aa13b845792776289995cb108285f8aede", + "scripts/admit_extension.py": "5934268bdf39b4b84a754c5fafa2d18023610066e511056dcb17cdefa6f82c3e", + "scripts/admit_extension.py.patch": "dc62088611a384d97a2a47d84e307600269c5ec94f7c86fbc046b8af5de8491c", + "scripts/integrate.py": "2129f62e2b78b1a674f78045c3acf0b1d8c8f59812147829e02d60d7913f9926", + "scripts/prepare_extension_native.py": "17830b10181e45cba62678e4344e256d674fe847af978434978ec1fc5249e045", + "scripts/prepare_extension_native.py.patch": "33c13181f980082231260a3f9e80a0287538165ea227042bc77e8ec6a0e8d82d", + "test_recorded_summary.py": "73dc3b2f16991e5fb3dd11b65b20b8c649ec63a6572796dc7274fa273f3b49d6", + "vendor/PR3626-FETCH-PINS.json": "b0c055a4c03038e87ff65b9e6c0ebc7713b841a8692718f1ff725d91cb108d79", + "vendor/PR3626-INPUTS.json": "afb9c990b5020a31da8e43794c876d3c2288b75decb54d52a9382da18317eb39", + "vendor/staged-width-t530/CLAIM.json": "9f27717c3ddbf5eb7b9773e1b2887ff3899d354019139d916c9b8004aee2e097", + "vendor/staged-width-t530/CREDITS.md": "dfca50b8d12ccb9ebf7c574bc9a30c57c4329da259bf171e4530437a747da501", + "vendor/staged-width-t530/EXPECTED.json": "9a3ddab54912652881f1488c3572988a81cc127e8fa1d01bc615842314f737e3", + "vendor/staged-width-t530/FRONTIER.json": "8f2f80438593e7efaa6bb57c881a40cedbd7b5665b4ae12c6cf215d217c98397", + "vendor/staged-width-t530/PROOF.md": "485f4b2adce3761ac664032898c3a90ce83186c423df6f1eef499fe76b5ce768", + "vendor/staged-width-t530/README.md": "c5f6d11e3783d09a60c0cf28996e94fc84e543717873aadcbaa3076720a778cb", + "vendor/staged-width-t530/owners/ARTIFACTS.json": "46dbca32c5b0f4fa565a39b89b6c22a8bcb3a1500a88a39816f286b7fd72b57e", + "vendor/staged-width-t530/owners/CANDIDATE.json": "7755b8e7aed8dbfbe89fe64fdfebee04ad84de3c6c9020b3535eb04fdabccec1", + "vendor/staged-width-t530/owners/DEPENDENCIES.json": "785cebd02d407dc6442cfb0604d9b232d93dd049fd319fc5f0ceacb314715272", + "vendor/staged-width-t530/owners/DISPATCH37.json": "4f78935b2ef1f6c08c9c16433d54015def1eccd767443b496a77ea8823690df6", + "vendor/staged-width-t530/owners/EXPECTED.json": "4fac5fcc90e20405c0ad176d7466cbd52eb947c02fd34fe35fea18eaf372d79a", + "vendor/staged-width-t530/owners/INPUT-PINS.json": "9b4b64a1e7d596f6ca8c4be8c2592544bce15a91dee988a31e89f0acb66cff7e", + "vendor/staged-width-t530/owners/ORDER37.json": "94803d190b2b0506d9645e980b57cdbc3e98221f3b615292df8a94f1b174c984", + "vendor/staged-width-t530/owners/PROVIDERS.json": "d96f2798024ab83edbb8848b62c425992aec182f1f24ef46bb8286dd390618c2", + "vendor/staged-width-t530/owners/README.txt": "7b9e8d85c1d0edfc265dc321a32752d76f1c94fa76dd7a931fff9066f57bd3a6", + "vendor/staged-width-t530/owners/SOURCE-PINS.json": "7dec42af587af3b7ae66d4fdf3d0c6157f9c85eb744edec66fa266f294378e5e", + "vendor/staged-width-t530/owners/T16-DISPATCH.json": "282960b7163bc305675b64d1d0faee9f71b18848748326418a013626944c6488", + "vendor/staged-width-t530/owners/T16-ORDER.json": "9b2106c84aed23a7c3c8b99e21d3e96c66b12f92980a42ab2f6dbbe7831ef7c4", + "vendor/staged-width-t530/owners/T16-PROVENANCE.json": "ebc9d5d23d5a698b795deee783c991910d2027cdb2e2f7561854df4189a63621", + "vendor/staged-width-t530/owners/UPSTREAM-PROOF.md": "11113405347bb8a85a85c6d5b516ff3dcdb15e01d4b16f825ba4eb314a1be5cd", + "vendor/staged-width-t530/owners/UPSTREAM-SOURCE-CREDITS.md": "1d9d8f56d8899f55878e4cb2c4e052b22506444016a51c2e678773505f5189e6", + "vendor/staged-width-t530/owners/UPSTREAM-SOURCE-NOTICE": "c9731c9cca25ede32c2a1b3aef6d5b249973cb2ed5fb2494407bdca598763661", + "vendor/staged-width-t530/owners/independent_literal.py": "36d7f4e3a611fd6b5983222887beb9a37a18bfac0d999ac5c00e3e191d1c5cc4", + "vendor/staged-width-t530/owners/integral_network.py": "97cce7cdaeea2c415b7959d3bdbf34d272e3b541f6e7dc9b87c134a2c2620740", + "vendor/staged-width-t530/owners/portable_expand.py": "3a0ded73b3b8c6e945f28626c65c2160b540df5c3e86db5a48eb5639c5731f4c", + "vendor/staged-width-t530/owners/source_context.py": "9967d6f5c0ca5f8437f76e3130c39aea3ff53e3d1ffa04a54d17db5f44f69f4c", + "vendor/staged-width-t530/owners/test_owner_guards.py": "fecbf1518c4594c64276847f92d5980443c6b5562345e97354305d5c31530bb0", + "vendor/staged-width-t530/owners/verify_candidate.py": "efce5f7b1cbc3f8d0807312da5248209d1b2dd9d6043656a7d2e58b58887214b", + "vendor/staged-width-t530/owners/verify_owner.py": "8d1a3c2a7beb0f18e2beaa3df455a721ea6129343ec52031d18e58fbde5081cb", + "vendor/staged-width-t530/replay.py": "c74d9169279bd795c84a605e375afbba1988abfc78933293b296f59bd70f013f", + "vendor/staged-width-t530/source_builder.py": "0cb5f62d517ac35c44922abc338cd41356b3e08dc7c6d6d9f64a43a9a541378f", + "vendor/staged-width-t530/supplier3605/ARTIFACTS.json": "867bd848d04505518463eb06b1905e70ccc9256bb73312d3cd1dc57623bb319b", + "vendor/staged-width-t530/supplier3605/PROOF.md": "525b010f3a895bdb11313f9938ad1b742df64bcee0b5671399230b1ded541baf", + "vendor/staged-width-t530/supplier3605/README.md": "c1956badbcd92f2f88dcea833facc39eefb7eef8f220fb7b1941b4c552109d89", + "vendor/staged-width-t530/supplier3605/SOURCES.json": "005bf38ae679a9fb3ad1ee94b8c35bdfec58451ef58e0a87b0c7b68ef4fc51d5", + "vendor/staged-width-t530/supplier3605/STAGED-PAIR-RECORD-base.json.gz": "a6ae4188be998990ecb176fef5929e8e1dfce3726e372c0da2a290fe8ea73532", + "vendor/staged-width-t530/supplier3605/STAGED-PAIR-RECORD-extra.json.gz": "33a39d46d4d19bdeb6f0b6abb38cc80c68219e1ae10dd7e1acaccedc14b47236", + "vendor/staged-width-t530/supplier3605/STAGED644-660-base.json.gz": "735c540b1fe29d0ceeb4d2f304ec941e5f2bd3bc92bafc8cce2b4f9a67a3b653", + "vendor/staged-width-t530/supplier3605/STAGED644-660-extra.json.gz": "886338fc32da14f3389a82c8120a1bcf9c5e2f0ec3e9b2d377fdae809e1d977f", + "vendor/staged-width-t530/supplier3605/TASK.json": "b85158fedf4734ff028703353ac6e9929ddea6a8e7c845c8341c2428d628717a", + "vendor/staged-width-t530/supplier3605/VALIDATION.json": "fa3803654e230cd50bc9fb874ec80e16dd838adebf13cd0cb174f18bc12fa04a", + "vendor/staged-width-t530/supplier3605/VERIFY.json": "21320da6b638366ccd42824e4b5865608f497cf2ba7323fffedb77f0a368c96a", + "vendor/staged-width-t530/supplier3605/check_residual.py": "e34b06ae725f062d15ad83cbd3ef2f91d3d78c380ccc93c8d2deba1c9e354c70", + "vendor/staged-width-t530/supplier3605/check_scope.py": "f8eefd425a0d570167e14febcacfbb38a6bb29d820d808be426180cf31b5a947", + "vendor/staged-width-t530/supplier3605/staged_pair.py": "25fc9b025dbb90358032013303adea650a5f19937fd3edf30b6c6fd023e2d747", + "vendor/staged-width-t530/supplier3605/verify.py": "0ef49b725fc132cd5fc26a9a81028739896232d938bae22cef132384c7cbab13", + "vendor/staged-width-t530/templates/prepare_extension_native.py": "0cdb4b8b8b565e3dc4a312d4174c86d7d1aebc531430cb726658c8feb0c3bcf4" + } +} diff --git a/research/staged-release-retiming-t530/full-admission/PUBLIC-PROVENANCE.json b/research/staged-release-retiming-t530/full-admission/PUBLIC-PROVENANCE.json new file mode 100644 index 0000000000..24778bf607 --- /dev/null +++ b/research/staged-release-retiming-t530/full-admission/PUBLIC-PROVENANCE.json @@ -0,0 +1,877 @@ +{ + "files": { + "LICENSE": { + "normalization": "none", + "original_sha256": "c71d239df91726fc519c6eb72d318ec65820627232b2f796219e87dcf35d0ab4", + "public_sha256": "c71d239df91726fc519c6eb72d318ec65820627232b2f796219e87dcf35d0ab4" + }, + "NOTICE": { + "normalization": "none", + "original_sha256": "b49022cb4104d90b182e4c335f670faf45529025b15db77bf0291835083c28bd", + "public_sha256": "b49022cb4104d90b182e4c335f670faf45529025b15db77bf0291835083c28bd" + }, + "data/RETIME-AUDIT-base.json": { + "normalization": "none", + "original_sha256": "b3a4fefcb1aa16b16ec4a4481da10afa06f8f2a59c2e77ade8eaa6dd48bc8d0e", + "public_sha256": "b3a4fefcb1aa16b16ec4a4481da10afa06f8f2a59c2e77ade8eaa6dd48bc8d0e" + }, + "data/RETIME-AUDIT-extra.json": { + "normalization": "none", + "original_sha256": "ddf5b88b7338202a40cc92851c1e95d8fdc0ad97ffc8bc6f680ba162e913fecb", + "public_sha256": "ddf5b88b7338202a40cc92851c1e95d8fdc0ad97ffc8bc6f680ba162e913fecb" + }, + "data/RETIMED-RECORD-base.json": { + "normalization": "none", + "original_sha256": "9e224473ea00cc5965f8202d7d9e9f29b1069c7e5dde95ae949bdbaa92949fb4", + "public_sha256": "9e224473ea00cc5965f8202d7d9e9f29b1069c7e5dde95ae949bdbaa92949fb4" + }, + "data/RETIMED-RECORD-extra.json": { + "normalization": "none", + "original_sha256": "c7b0eb0663dd5d1f7e78105d32e0c2669fc473fb5e730f5fa0fab31e2c0dd13c", + "public_sha256": "c7b0eb0663dd5d1f7e78105d32e0c2669fc473fb5e730f5fa0fab31e2c0dd13c" + }, + "data/RETIMED644-660-base.json.gz": { + "normalization": "none", + "original_sha256": "6df3356808e29909776be8bc0faf03df983401a267c2d740d1ac2dbcaa278269", + "public_sha256": "6df3356808e29909776be8bc0faf03df983401a267c2d740d1ac2dbcaa278269" + }, + "data/RETIMED644-660-extra.json.gz": { + "normalization": "none", + "original_sha256": "65624efec36b35934b750c1741ba2ad4e6df3cff86e44536b0c016ebddb0fb55", + "public_sha256": "65624efec36b35934b750c1741ba2ad4e6df3cff86e44536b0c016ebddb0fb55" + }, + "data/STAGED644-660-base.json.gz": { + "normalization": "none", + "original_sha256": "735c540b1fe29d0ceeb4d2f304ec941e5f2bd3bc92bafc8cce2b4f9a67a3b653", + "public_sha256": "735c540b1fe29d0ceeb4d2f304ec941e5f2bd3bc92bafc8cce2b4f9a67a3b653" + }, + "data/STAGED644-660-extra.json.gz": { + "normalization": "none", + "original_sha256": "886338fc32da14f3389a82c8120a1bcf9c5e2f0ec3e9b2d377fdae809e1d977f", + "public_sha256": "886338fc32da14f3389a82c8120a1bcf9c5e2f0ec3e9b2d377fdae809e1d977f" + }, + "evidence/ADMISSION-COMMAND.json": { + "normalization": "workspace-prefix-to-token", + "original_sha256": "e0d861370c5d938e84c99b203647a33c93b804923c8e58763caf1bbf691481ec", + "public_sha256": "a68b9f12801a87e8da2039966c274a84c7e9882f2e83fde053a965cb80eb772c" + }, + "evidence/ADMISSION-RESULT.json": { + "normalization": "workspace-prefix-to-token", + "original_sha256": "9e1b232ad063d26bd097063d0ec12319382a943be9a541fd29a2501d4abf41bd", + "public_sha256": "51f41f2dc65654492b8fe0c5049a7b81a7a31f56aa3bf7864d90be45b628f231" + }, + "evidence/ADMISSION-STAGES.json": { + "normalization": "workspace-prefix-to-token", + "original_sha256": "ffeabb8e70b691d256bec729e1ad6988280debc30599707b208ce7c158838c6b", + "public_sha256": "60441920a466b073f4d1b4ad7a02e7d87bb91f21e3e9136e2a54f46957a40b3e" + }, + "evidence/ASSEMBLY.json": { + "normalization": "none", + "original_sha256": "3ccbf66eab7b067d46da6dc85d4d64dd142cf3598bec5cfe5af209a2528bd7d3", + "public_sha256": "3ccbf66eab7b067d46da6dc85d4d64dd142cf3598bec5cfe5af209a2528bd7d3" + }, + "evidence/CONTROLLER-AUDIT.json": { + "normalization": "none", + "original_sha256": "50387246e44de8512452460de73ab7ce30bb9391b832e6c6e32751b791e033e8", + "public_sha256": "50387246e44de8512452460de73ab7ce30bb9391b832e6c6e32751b791e033e8" + }, + "evidence/DERIVATION.json": { + "normalization": "none", + "original_sha256": "d5283f9c59d3a419d29351fa60f9c7514e206a3d9f7ead2ef1c2e7836f87f461", + "public_sha256": "d5283f9c59d3a419d29351fa60f9c7514e206a3d9f7ead2ef1c2e7836f87f461" + }, + "evidence/GEOMETRY-CONTROLS.json": { + "normalization": "none", + "original_sha256": "13a50b2f2448931ca302a55e5839c082f651331f20402448fe6ff29d1eb2f481", + "public_sha256": "13a50b2f2448931ca302a55e5839c082f651331f20402448fe6ff29d1eb2f481" + }, + "evidence/INHERITED-RUNTIME-PATCHES.json": { + "normalization": "none", + "original_sha256": "35f74730e3f249e5bfc929ef633feaa551fd17d46d682d0125c9cf370580d16b", + "public_sha256": "35f74730e3f249e5bfc929ef633feaa551fd17d46d682d0125c9cf370580d16b" + }, + "evidence/NATIVE-ENVIRONMENT.json": { + "normalization": "workspace-prefix-to-token", + "original_sha256": "e1da43941225174bf36cea80422e47d774cd26ccb80142d9f706822fe7bde783", + "public_sha256": "8360a3a4beecde7ea72d92248a68c2bd39a7ab91eeaf0282e0f4781348a2b6e8" + }, + "evidence/NATIVE-NATIVE-RECEIPT.json": { + "normalization": "none", + "original_sha256": "2967a2fba90cb9019bcf48092942bb9c7eb1bf0f336e72ca5816c670cd4c3eac", + "public_sha256": "2967a2fba90cb9019bcf48092942bb9c7eb1bf0f336e72ca5816c670cd4c3eac" + }, + "evidence/NATIVE-RESULT.json": { + "normalization": "workspace-prefix-to-token", + "original_sha256": "d5fbf10f5647b8862cada4f0368f840655e567c81fbac9d01ef8df798a04f9d5", + "public_sha256": "d7466460f5d9e53cbc640d8a6b06523ea5337817ca663897c737b0281f9b909f" + }, + "evidence/NATIVE-STAGES.json": { + "normalization": "workspace-prefix-to-token", + "original_sha256": "5b27e3a3913a028df2a3941fcbed8aecac5c9228fe47f51da27fced8a29afac1", + "public_sha256": "ddbf5a98ad4a61a4aa00d8cc1bef12c82018ed76f8156a373eaee78c8a9246b5" + }, + "evidence/OWNER-AUDIT.json": { + "normalization": "none", + "original_sha256": "14cd76009b3fb862de216aae145ab37656a424a9e180b45e2f8b641ba4772a66", + "public_sha256": "14cd76009b3fb862de216aae145ab37656a424a9e180b45e2f8b641ba4772a66" + }, + "evidence/PACKAGE-MANIFEST.json": { + "normalization": "none", + "original_sha256": "6eac9a8c77a4e67c7c0a928117350529b49570fb53f714d591e1d4fe0a90ab94", + "public_sha256": "6eac9a8c77a4e67c7c0a928117350529b49570fb53f714d591e1d4fe0a90ab94" + }, + "evidence/PARENT-SOURCE-MANIFEST.json": { + "normalization": "none", + "original_sha256": "318ede57c79d10323fb1918f7be4d451d1fcdac01c6456fe9851d51d05d59453", + "public_sha256": "318ede57c79d10323fb1918f7be4d451d1fcdac01c6456fe9851d51d05d59453" + }, + "evidence/PORTABLE-SOURCE-CHECK.json": { + "normalization": "workspace-prefix-to-token", + "original_sha256": "807ad458b8ab570cc28652b0b957125da059f04b41508f7831a235c83f340dc9", + "public_sha256": "0ed265fc227873b5a7c7e527706d905f4e072b119c8bd09ae5679f9752bcf228" + }, + "evidence/PREFIX-AND-INVOICE.json": { + "normalization": "none", + "original_sha256": "caf49b466dddd0283a017552d5fc8d926ae2cd19db0eb9388cf7e9fd827e4297", + "public_sha256": "caf49b466dddd0283a017552d5fc8d926ae2cd19db0eb9388cf7e9fd827e4297" + }, + "evidence/RELEASE-RECEIPT.json": { + "normalization": "none", + "original_sha256": "80e1f422359d7c553493c1e0f2a1b4c4de230f8eb74690e1471a14d65169d110", + "public_sha256": "80e1f422359d7c553493c1e0f2a1b4c4de230f8eb74690e1471a14d65169d110" + }, + "evidence/RETAINED-REUSE-RECEIPT.json": { + "normalization": "none", + "original_sha256": "f90cafe84385533a0eeb96356f385b646f402ff85cd05154c47a81c783023d9d", + "public_sha256": "f90cafe84385533a0eeb96356f385b646f402ff85cd05154c47a81c783023d9d" + }, + "evidence/RETIMING-COMPLETE-RELEASE.json": { + "normalization": "none", + "original_sha256": "346e22c25de55e49ba0bbd8ffef1e9674a630452351ccf2a9166b1ece50f0c7b", + "public_sha256": "346e22c25de55e49ba0bbd8ffef1e9674a630452351ccf2a9166b1ece50f0c7b" + }, + "evidence/SOURCE-MANIFEST.json": { + "normalization": "none", + "original_sha256": "fb47533a401d1d13719be8b9aab91fe5313931ca62d40dba336eab6a96275aa0", + "public_sha256": "fb47533a401d1d13719be8b9aab91fe5313931ca62d40dba336eab6a96275aa0" + }, + "evidence/STAGE-SCRIPT-BINDINGS.json": { + "normalization": "none", + "original_sha256": "147543c049a083097f75db0923f1994c005a8a47b0e7ff280177fdc62fbbef76", + "public_sha256": "147543c049a083097f75db0923f1994c005a8a47b0e7ff280177fdc62fbbef76" + }, + "evidence/STRICT-STAGES.json": { + "normalization": "none", + "original_sha256": "d4fa62461de5a431fa8485f2bcde5c37fef54b3d2f701271386e7b0c02b50b9d", + "public_sha256": "d4fa62461de5a431fa8485f2bcde5c37fef54b3d2f701271386e7b0c02b50b9d" + }, + "evidence/SUPPLIER-RESULT.json": { + "normalization": "none", + "original_sha256": "9ab7c0a9d457c992c01993f73ebabc4286e692d8184d32a0222eac394fd03bb4", + "public_sha256": "9ab7c0a9d457c992c01993f73ebabc4286e692d8184d32a0222eac394fd03bb4" + }, + "evidence/SUPPLIER-STAGES.json": { + "normalization": "none", + "original_sha256": "b3502a6ef790ce02064caaaef863aaa05a132991e293cc85a30e11b9f0c3ad22", + "public_sha256": "b3502a6ef790ce02064caaaef863aaa05a132991e293cc85a30e11b9f0c3ad22" + }, + "evidence/logs/discovery.log": { + "normalization": "none", + "original_sha256": "75aa839712643553e5d46922f2aeff7bcebd197910e1098a0c3430010e71fb28", + "public_sha256": "75aa839712643553e5d46922f2aeff7bcebd197910e1098a0c3430010e71fb28" + }, + "evidence/logs/outer-check_ledger.py.log": { + "normalization": "none", + "original_sha256": "dc0e4db2bfa2937532113e1678f8cd5513080c0c691e9ee558085b16682fd115", + "public_sha256": "dc0e4db2bfa2937532113e1678f8cd5513080c0c691e9ee558085b16682fd115" + }, + "evidence/logs/outer-independent_check.py.log": { + "normalization": "none", + "original_sha256": "7f55339f208e0ed8d7456ae68fa61ba43a79d37f8b0f382405ce05880155f576", + "public_sha256": "7f55339f208e0ed8d7456ae68fa61ba43a79d37f8b0f382405ce05880155f576" + }, + "evidence/logs/owners.log": { + "normalization": "none", + "original_sha256": "48248e5bc879a86b178083e82bf9a6299b1d6a4b73f32177de5f1330509419e6", + "public_sha256": "48248e5bc879a86b178083e82bf9a6299b1d6a4b73f32177de5f1330509419e6" + }, + "evidence/logs/parent-lift.log": { + "normalization": "none", + "original_sha256": "240f02db618ec1a3a196845cc328eae52361bf838514658d64e744b14d7b986b", + "public_sha256": "240f02db618ec1a3a196845cc328eae52361bf838514658d64e744b14d7b986b" + }, + "evidence/logs/rebind.log": { + "normalization": "none", + "original_sha256": "0dc96988ea6182e2d855f17550c8a992cb30b8b97ad7817be23f1033499f9a03", + "public_sha256": "0dc96988ea6182e2d855f17550c8a992cb30b8b97ad7817be23f1033499f9a03" + }, + "evidence/logs/release.log": { + "normalization": "none", + "original_sha256": "fe92fa512cf03cf655b151637520f8bea1774c23967860e532d89587f1486a6a", + "public_sha256": "fe92fa512cf03cf655b151637520f8bea1774c23967860e532d89587f1486a6a" + }, + "evidence/native-base-RESULT.json": { + "normalization": "none", + "original_sha256": "93667243b4bb7300683f4bb6923f5ed55e7298afdcf10e1dbedca842d77b72bc", + "public_sha256": "93667243b4bb7300683f4bb6923f5ed55e7298afdcf10e1dbedca842d77b72bc" + }, + "evidence/native-base.log": { + "normalization": "none", + "original_sha256": "25913a541f8aeb459f5aae9787a235c098422ca492636bf456011cc3d3c8e9a0", + "public_sha256": "25913a541f8aeb459f5aae9787a235c098422ca492636bf456011cc3d3c8e9a0" + }, + "evidence/native-extra-RESULT.json": { + "normalization": "none", + "original_sha256": "0a575ae9bec7fac0949c9ed2e6727b1364d1d45b77d3f27b839c0b4ee24af4c5", + "public_sha256": "0a575ae9bec7fac0949c9ed2e6727b1364d1d45b77d3f27b839c0b4ee24af4c5" + }, + "evidence/native-extra.log": { + "normalization": "none", + "original_sha256": "e931822e91ee17c7f36855ad033de2f686bf6a55bfd788e3a00958f247159021", + "public_sha256": "e931822e91ee17c7f36855ad033de2f686bf6a55bfd788e3a00958f247159021" + }, + "evidence/native-logs/base/ledgers-bw_emit.py.log": { + "normalization": "none", + "original_sha256": "3c22a15ea4f7a760b7e51d018db25509ecfea353334b14640a348f90cc9dfe8f", + "public_sha256": "3c22a15ea4f7a760b7e51d018db25509ecfea353334b14640a348f90cc9dfe8f" + }, + "evidence/native-logs/base/local-replay-bw_audit_local.py.log": { + "normalization": "none", + "original_sha256": "2fac3873f6c1a23bc0393c701003ea73ac06fa077eb049dea0e4e158903ec402", + "public_sha256": "2fac3873f6c1a23bc0393c701003ea73ac06fa077eb049dea0e4e158903ec402" + }, + "evidence/native-logs/base/native-bw_transport.py.log": { + "normalization": "none", + "original_sha256": "bbb99340536118d1192726cd59d9fbced72fb21cbb667c20a3f582f56c61ef69", + "public_sha256": "bbb99340536118d1192726cd59d9fbced72fb21cbb667c20a3f582f56c61ef69" + }, + "evidence/native-logs/base/phases-bw_check_recipes.py.log": { + "normalization": "none", + "original_sha256": "985f91e7b90482d89b062b43dbe9c3885521fe26e4f8600c3b7757c33d3181ed", + "public_sha256": "985f91e7b90482d89b062b43dbe9c3885521fe26e4f8600c3b7757c33d3181ed" + }, + "evidence/native-logs/base/phases-bw_phases.py.log": { + "normalization": "none", + "original_sha256": "69727c9cd4ce5ad938bf1cd7d998a7c4c55e9a9b1c3ab5282cffc9bcb461629c", + "public_sha256": "69727c9cd4ce5ad938bf1cd7d998a7c4c55e9a9b1c3ab5282cffc9bcb461629c" + }, + "evidence/native-logs/base/wrappers-bw_adapters.py.log": { + "normalization": "none", + "original_sha256": "92065498c6214eb987a9906ad8e018c6459465c91f142268c1fd7cd5d4a13e7d", + "public_sha256": "92065498c6214eb987a9906ad8e018c6459465c91f142268c1fd7cd5d4a13e7d" + }, + "evidence/native-logs/extra/ledgers-bw_emit.py.log": { + "normalization": "none", + "original_sha256": "3c22a15ea4f7a760b7e51d018db25509ecfea353334b14640a348f90cc9dfe8f", + "public_sha256": "3c22a15ea4f7a760b7e51d018db25509ecfea353334b14640a348f90cc9dfe8f" + }, + "evidence/native-logs/extra/local-replay-bw_audit_local.py.log": { + "normalization": "none", + "original_sha256": "2fac3873f6c1a23bc0393c701003ea73ac06fa077eb049dea0e4e158903ec402", + "public_sha256": "2fac3873f6c1a23bc0393c701003ea73ac06fa077eb049dea0e4e158903ec402" + }, + "evidence/native-logs/extra/native-bw_transport.py.log": { + "normalization": "none", + "original_sha256": "f5e71dfe851dfad5e1763ac0c1b30f3100d503495ee5e69ad6f1306bd36ed549", + "public_sha256": "f5e71dfe851dfad5e1763ac0c1b30f3100d503495ee5e69ad6f1306bd36ed549" + }, + "evidence/native-logs/extra/phases-bw_check_recipes.py.log": { + "normalization": "none", + "original_sha256": "985f91e7b90482d89b062b43dbe9c3885521fe26e4f8600c3b7757c33d3181ed", + "public_sha256": "985f91e7b90482d89b062b43dbe9c3885521fe26e4f8600c3b7757c33d3181ed" + }, + "evidence/native-logs/extra/phases-bw_phases.py.log": { + "normalization": "none", + "original_sha256": "2983aede642c67bfb19f1716eda3014e99c78b437b61a73db345df17542e8acf", + "public_sha256": "2983aede642c67bfb19f1716eda3014e99c78b437b61a73db345df17542e8acf" + }, + "evidence/native-logs/extra/wrappers-bw_adapters.py.log": { + "normalization": "none", + "original_sha256": "92065498c6214eb987a9906ad8e018c6459465c91f142268c1fd7cd5d4a13e7d", + "public_sha256": "92065498c6214eb987a9906ad8e018c6459465c91f142268c1fd7cd5d4a13e7d" + }, + "evidence/native-summary/65624efec36b35934b750c1741ba2ad4e6df3cff86e44536b0c016ebddb0fb55/CACHE.json": { + "normalization": "none", + "original_sha256": "fa872a8bf10ed47da15bc7a383f32ecf1935c49b22ac182b29b578e2f376aa2c", + "public_sha256": "fa872a8bf10ed47da15bc7a383f32ecf1935c49b22ac182b29b578e2f376aa2c" + }, + "evidence/native-summary/65624efec36b35934b750c1741ba2ad4e6df3cff86e44536b0c016ebddb0fb55/STEPS.json": { + "normalization": "none", + "original_sha256": "5a1eed0c759c403b4b69d83abe6ce37787e5f9386a8c1028d816f8126607c6df", + "public_sha256": "5a1eed0c759c403b4b69d83abe6ce37787e5f9386a8c1028d816f8126607c6df" + }, + "evidence/native-summary/65624efec36b35934b750c1741ba2ad4e6df3cff86e44536b0c016ebddb0fb55/local/INDEPENDENT-LOCAL-REPLAY.json": { + "normalization": "none", + "original_sha256": "8d9013f5060502270b63cb7a6078ab18bf1242a3bb74af7126e3e5b93e3be037", + "public_sha256": "8d9013f5060502270b63cb7a6078ab18bf1242a3bb74af7126e3e5b93e3be037" + }, + "evidence/native-summary/65624efec36b35934b750c1741ba2ad4e6df3cff86e44536b0c016ebddb0fb55/local/LOCAL-CHECKS.json": { + "normalization": "none", + "original_sha256": "11743473efa1822069303b49c62b1853af4236f46ef54b4778a27e2e70d79d06", + "public_sha256": "11743473efa1822069303b49c62b1853af4236f46ef54b4778a27e2e70d79d06" + }, + "evidence/native-summary/6df3356808e29909776be8bc0faf03df983401a267c2d740d1ac2dbcaa278269/CACHE.json": { + "normalization": "none", + "original_sha256": "1b4d790152a34d2dea86043377b9979a7f9b0dc0989c065b7b4abb84d15b1a9e", + "public_sha256": "1b4d790152a34d2dea86043377b9979a7f9b0dc0989c065b7b4abb84d15b1a9e" + }, + "evidence/native-summary/6df3356808e29909776be8bc0faf03df983401a267c2d740d1ac2dbcaa278269/STEPS.json": { + "normalization": "none", + "original_sha256": "59930bc84ab798dec32c846a79431eff30f36673917261d9049eb6645c50bc39", + "public_sha256": "59930bc84ab798dec32c846a79431eff30f36673917261d9049eb6645c50bc39" + }, + "evidence/native-summary/6df3356808e29909776be8bc0faf03df983401a267c2d740d1ac2dbcaa278269/local/INDEPENDENT-LOCAL-REPLAY.json": { + "normalization": "none", + "original_sha256": "f99d4c50632d1cff239ac6f54e4040bc9a7ac66500de9d032c8e9fc5ec42a458", + "public_sha256": "f99d4c50632d1cff239ac6f54e4040bc9a7ac66500de9d032c8e9fc5ec42a458" + }, + "evidence/native-summary/6df3356808e29909776be8bc0faf03df983401a267c2d740d1ac2dbcaa278269/local/LOCAL-CHECKS.json": { + "normalization": "none", + "original_sha256": "11743473efa1822069303b49c62b1853af4236f46ef54b4778a27e2e70d79d06", + "public_sha256": "11743473efa1822069303b49c62b1853af4236f46ef54b4778a27e2e70d79d06" + }, + "evidence/native-summary/7b0e9fbda32749aabc7e156d9fe09bceb0624a178628fe69e5dfea783462f905/CACHE.json": { + "normalization": "none", + "original_sha256": "3ed6859152f2594352bea363ce8d297f93dc138a5748b2a55523e89d2eef3776", + "public_sha256": "3ed6859152f2594352bea363ce8d297f93dc138a5748b2a55523e89d2eef3776" + }, + "evidence/native-summary/7b0e9fbda32749aabc7e156d9fe09bceb0624a178628fe69e5dfea783462f905/STEPS.json": { + "normalization": "none", + "original_sha256": "02a8f2021aa8406277656a086d875a2d50cea569e5179c27d2bcaed92d9826ff", + "public_sha256": "02a8f2021aa8406277656a086d875a2d50cea569e5179c27d2bcaed92d9826ff" + }, + "evidence/native-summary/7b0e9fbda32749aabc7e156d9fe09bceb0624a178628fe69e5dfea783462f905/local/INDEPENDENT-LOCAL-REPLAY.json": { + "normalization": "none", + "original_sha256": "39874d664110d1ee85da901e2cd56e7cd0f27e0153813d4608c98122a90815da", + "public_sha256": "39874d664110d1ee85da901e2cd56e7cd0f27e0153813d4608c98122a90815da" + }, + "evidence/native-summary/7b0e9fbda32749aabc7e156d9fe09bceb0624a178628fe69e5dfea783462f905/local/LOCAL-CHECKS.json": { + "normalization": "none", + "original_sha256": "ef01cb5b6d1779518282c69a20d1dbcdbf57cb89ba616e2101bb209b37d80286", + "public_sha256": "ef01cb5b6d1779518282c69a20d1dbcdbf57cb89ba616e2101bb209b37d80286" + }, + "evidence/native-summary/_receipts/e0eefc96567fbb45e19e6de0ca295381dbe0e686c08ddc783639b065c7c791d4/RECEIPT.json": { + "normalization": "none", + "original_sha256": "bc1bc13637846b3807119ae55dd006c8076815f355c93e0a1f57c1dce3ebeb3e", + "public_sha256": "bc1bc13637846b3807119ae55dd006c8076815f355c93e0a1f57c1dce3ebeb3e" + }, + "evidence/native-summary/_receipts/e0eefc96567fbb45e19e6de0ca295381dbe0e686c08ddc783639b065c7c791d4/RESULT.json": { + "normalization": "none", + "original_sha256": "845e82a755ac46ea2f62b79700f7af6037616408a8359e615c24d351713c8c12", + "public_sha256": "845e82a755ac46ea2f62b79700f7af6037616408a8359e615c24d351713c8c12" + }, + "evidence/native-summary/_receipts/e0eefc96567fbb45e19e6de0ca295381dbe0e686c08ddc783639b065c7c791d4/STAGES.json": { + "normalization": "none", + "original_sha256": "b0d0263a87e95da1dc03e552c878ba4da4494184d1560ecc66e4dd93d7129a0b", + "public_sha256": "b0d0263a87e95da1dc03e552c878ba4da4494184d1560ecc66e4dd93d7129a0b" + }, + "evidence/native-summary/e8e6e78ff7422275c38324499e1f33fb2ecd30de9503aef2b8f1ee80d8c4df8e/CACHE.json": { + "normalization": "none", + "original_sha256": "2ab0c916ce58b97c3bca6b2d0369168f3626f06c7cf566dec0ead919ba7d7940", + "public_sha256": "2ab0c916ce58b97c3bca6b2d0369168f3626f06c7cf566dec0ead919ba7d7940" + }, + "evidence/native-summary/e8e6e78ff7422275c38324499e1f33fb2ecd30de9503aef2b8f1ee80d8c4df8e/STEPS.json": { + "normalization": "none", + "original_sha256": "ae00b2906950db818416e47984cb08ecbf55ba836d68e5fce7bfb94926a91bc5", + "public_sha256": "ae00b2906950db818416e47984cb08ecbf55ba836d68e5fce7bfb94926a91bc5" + }, + "evidence/native-summary/e8e6e78ff7422275c38324499e1f33fb2ecd30de9503aef2b8f1ee80d8c4df8e/local/INDEPENDENT-LOCAL-REPLAY.json": { + "normalization": "none", + "original_sha256": "70b4b787a5a4529452a58e9ac48826e848748a35b95a9b20c5358f4355705058", + "public_sha256": "70b4b787a5a4529452a58e9ac48826e848748a35b95a9b20c5358f4355705058" + }, + "evidence/native-summary/e8e6e78ff7422275c38324499e1f33fb2ecd30de9503aef2b8f1ee80d8c4df8e/local/LOCAL-CHECKS.json": { + "normalization": "none", + "original_sha256": "e52e7feece9cb22e83c1d687c0f98731f8d50b7e8c863732ec662c89453fbcd4", + "public_sha256": "e52e7feece9cb22e83c1d687c0f98731f8d50b7e8c863732ec662c89453fbcd4" + }, + "evidence/portable-STAGES.json": { + "normalization": "workspace-prefix-to-token", + "original_sha256": "807ad458b8ab570cc28652b0b957125da059f04b41508f7831a235c83f340dc9", + "public_sha256": "0ed265fc227873b5a7c7e527706d905f4e072b119c8bd09ae5679f9752bcf228" + }, + "evidence/portable-new-retiming-review.log": { + "normalization": "none", + "original_sha256": "d85d4eb71eb02b45de85515eb424fbc993b3c315083fad2b939bfd66d2de2203", + "public_sha256": "d85d4eb71eb02b45de85515eb424fbc993b3c315083fad2b939bfd66d2de2203" + }, + "evidence/portable-preserved-staged-review.log": { + "normalization": "none", + "original_sha256": "de2fa433a259e21f69f10db63667ba6034e0cd35f102a989208e865d042c31c8", + "public_sha256": "de2fa433a259e21f69f10db63667ba6034e0cd35f102a989208e865d042c31c8" + }, + "evidence/release-logs/outer.log": { + "normalization": "none", + "original_sha256": "670f60ee3ecc7e2d7fc4b23b468d4cdb8cfab9edaf252cd2410c1cabcb0318dc", + "public_sha256": "670f60ee3ecc7e2d7fc4b23b468d4cdb8cfab9edaf252cd2410c1cabcb0318dc" + }, + "evidence/release-logs/verify.log": { + "normalization": "none", + "original_sha256": "d240f4323dd046a88332536c2100cb9495b12ee01c6f3aa2678ae09b181cb0e1", + "public_sha256": "d240f4323dd046a88332536c2100cb9495b12ee01c6f3aa2678ae09b181cb0e1" + }, + "evidence/retained-parent-CLAIM.json": { + "normalization": "none", + "original_sha256": "bc9e90a475333b957a8c4eae8b950988caea89e20e9b44a919e83415fb76b1b8", + "public_sha256": "bc9e90a475333b957a8c4eae8b950988caea89e20e9b44a919e83415fb76b1b8" + }, + "evidence/runtime-summary/CLAIM.json": { + "normalization": "none", + "original_sha256": "2048826e64891fc8e0b4d2f7a70edebacab4b62b31b0609eb8330299f892d014", + "public_sha256": "2048826e64891fc8e0b4d2f7a70edebacab4b62b31b0609eb8330299f892d014" + }, + "evidence/runtime-summary/new/SPEC.json": { + "normalization": "none", + "original_sha256": "cf8d85cf2c447522cf95afb01fe03a40b6a53567156ab36c485a17ad44f82922", + "public_sha256": "cf8d85cf2c447522cf95afb01fe03a40b6a53567156ab36c485a17ad44f82922" + }, + "evidence/runtime-summary/outer/B.json": { + "normalization": "none", + "original_sha256": "1c28c50d56e4935886eb33ee20ccf7af7b6e1458e09debbf6f1f3d28bea6560d", + "public_sha256": "1c28c50d56e4935886eb33ee20ccf7af7b6e1458e09debbf6f1f3d28bea6560d" + }, + "evidence/runtime-summary/outer/LEDGER.json": { + "normalization": "none", + "original_sha256": "14ed690fd607d9e7fc29b1d290593acc5c3961be449c469a2a5db500006e1a6d", + "public_sha256": "14ed690fd607d9e7fc29b1d290593acc5c3961be449c469a2a5db500006e1a6d" + }, + "evidence/runtime-summary/outer/OUTER-CLAIM.json": { + "normalization": "none", + "original_sha256": "512d8c62a12e669040cf849c4b9774af297c585208a0ce0d86e517dc29fc46cd", + "public_sha256": "512d8c62a12e669040cf849c4b9774af297c585208a0ce0d86e517dc29fc46cd" + }, + "evidence/stage-scripts/discovery.py": { + "normalization": "none", + "original_sha256": "4f5c0926b70edb5aef3af0f8a8d9fa8119fa7af6603df1721c0dc31760b08254", + "public_sha256": "4f5c0926b70edb5aef3af0f8a8d9fa8119fa7af6603df1721c0dc31760b08254" + }, + "evidence/stage-scripts/outer-check_ledger.py.py": { + "normalization": "none", + "original_sha256": "1dd56009986eb14dd6603c9193c7ad71dd45c7d005bf71c9cd3f916e66f54d98", + "public_sha256": "1dd56009986eb14dd6603c9193c7ad71dd45c7d005bf71c9cd3f916e66f54d98" + }, + "evidence/stage-scripts/outer-independent_check.py.py": { + "normalization": "none", + "original_sha256": "a5a0361539ec7cae9eb6c0371f857919335a1720040f22af291aa3e34fc864c7", + "public_sha256": "a5a0361539ec7cae9eb6c0371f857919335a1720040f22af291aa3e34fc864c7" + }, + "evidence/stage-scripts/owners.py": { + "normalization": "none", + "original_sha256": "5472811c24aef3852dc7e189dff5060076a6c0b25bfde928da50dcfe9b5bdc15", + "public_sha256": "5472811c24aef3852dc7e189dff5060076a6c0b25bfde928da50dcfe9b5bdc15" + }, + "evidence/stage-scripts/parent-lift.py": { + "normalization": "none", + "original_sha256": "9a1edd7d4ab4a2f2ac8d15b42b7e40f93653d65026bac59e4c1ce80b486bd60e", + "public_sha256": "9a1edd7d4ab4a2f2ac8d15b42b7e40f93653d65026bac59e4c1ce80b486bd60e" + }, + "evidence/stage-scripts/rebind.py": { + "normalization": "none", + "original_sha256": "52f8b4cec2dab69cbe590e1fd0f7a68e1b35de5a540bd22fd2adfce07a92b46b", + "public_sha256": "52f8b4cec2dab69cbe590e1fd0f7a68e1b35de5a540bd22fd2adfce07a92b46b" + }, + "evidence/stage-scripts/release.py": { + "normalization": "none", + "original_sha256": "6cfefe80c02a6c0f243f50ca9e146e1ab1440b84a033d8a71d42be5a5fa27f6b", + "public_sha256": "6cfefe80c02a6c0f243f50ca9e146e1ab1440b84a033d8a71d42be5a5fa27f6b" + }, + "evidence/strict-logs/admission.log": { + "normalization": "none", + "original_sha256": "1cee8d732e126c670f531018d65955c23828a7cc0af8d6ac4bb0f6672962a540", + "public_sha256": "1cee8d732e126c670f531018d65955c23828a7cc0af8d6ac4bb0f6672962a540" + }, + "evidence/strict-logs/assembly.log": { + "normalization": "none", + "original_sha256": "8381985bf9120e38a0891e6b3495248a74ac7db3a5c204c6c4b983569dea75cd", + "public_sha256": "8381985bf9120e38a0891e6b3495248a74ac7db3a5c204c6c4b983569dea75cd" + }, + "evidence/strict-logs/audit.log": { + "normalization": "none", + "original_sha256": "50387246e44de8512452460de73ab7ce30bb9391b832e6c6e32751b791e033e8", + "public_sha256": "50387246e44de8512452460de73ab7ce30bb9391b832e6c6e32751b791e033e8" + }, + "evidence/strict-logs/bind.log": { + "normalization": "none", + "original_sha256": "71f679ce5a123fb58397fd6852ba64ce3832fd20e81a096bfda9a1cf3237237a", + "public_sha256": "71f679ce5a123fb58397fd6852ba64ce3832fd20e81a096bfda9a1cf3237237a" + }, + "evidence/strict-logs/bit.log": { + "normalization": "none", + "original_sha256": "d54d260bf95bd8ae4ab8846314082b93b2e3d8f427eb35376691f2ce543a6b67", + "public_sha256": "d54d260bf95bd8ae4ab8846314082b93b2e3d8f427eb35376691f2ce543a6b67" + }, + "evidence/strict-logs/emit.log": { + "normalization": "none", + "original_sha256": "62318c4d7144194d8c5f2f52f2cedb7876e68057a3d6967f3d26019a04a6a3e7", + "public_sha256": "62318c4d7144194d8c5f2f52f2cedb7876e68057a3d6967f3d26019a04a6a3e7" + }, + "evidence/strict-logs/independent.log": { + "normalization": "none", + "original_sha256": "d2c176fb1b9778e4fb8b98b6272d5f713d676ea3fed84da20213eca036bb58fe", + "public_sha256": "d2c176fb1b9778e4fb8b98b6272d5f713d676ea3fed84da20213eca036bb58fe" + }, + "evidence/strict-logs/invoice.log": { + "normalization": "none", + "original_sha256": "f85ae311904331b375004ec8c233d1c963bd82f0f48d33dc312319f9e68c4e67", + "public_sha256": "f85ae311904331b375004ec8c233d1c963bd82f0f48d33dc312319f9e68c4e67" + }, + "evidence/supplier-logs/audit-local-566-base.log": { + "normalization": "none", + "original_sha256": "7e1ff2fecf2df3cacdd5335b67aa302368be2a736d6d484ddfd56d2c28586ae9", + "public_sha256": "7e1ff2fecf2df3cacdd5335b67aa302368be2a736d6d484ddfd56d2c28586ae9" + }, + "evidence/supplier-logs/audit-local-566-extra.log": { + "normalization": "none", + "original_sha256": "823a6d7d6b4b333babdd75c27c342c4ae526d2529e7b6f6d2bb9ef1713a8bb67", + "public_sha256": "823a6d7d6b4b333babdd75c27c342c4ae526d2529e7b6f6d2bb9ef1713a8bb67" + }, + "evidence/supplier-logs/declared-edit-review.log": { + "normalization": "none", + "original_sha256": "9812aa8d08d4251d390eb0cea1e5731dc59d22e09e0c914823c77d3e2e233e13", + "public_sha256": "9812aa8d08d4251d390eb0cea1e5731dc59d22e09e0c914823c77d3e2e233e13" + }, + "evidence/supplier-logs/fine-engine-oracle.log": { + "normalization": "none", + "original_sha256": "ea6df7be568d6461ac54e0d56754797de0f70f2f1ecc335114791445b75795d3", + "public_sha256": "ea6df7be568d6461ac54e0d56754797de0f70f2f1ecc335114791445b75795d3" + }, + "evidence/supplier-logs/geometry-controls.log": { + "normalization": "none", + "original_sha256": "0a3ecf05cfa2bebb61fffd2fbb4b244c03d742069e2705d02512699bbf4b01f9", + "public_sha256": "0a3ecf05cfa2bebb61fffd2fbb4b244c03d742069e2705d02512699bbf4b01f9" + }, + "evidence/supplier-logs/lemmag-labels.log": { + "normalization": "none", + "original_sha256": "91fafdc76824e278546bb51465cf84d60a3513df3f2e8ab9854919c416cd3469", + "public_sha256": "91fafdc76824e278546bb51465cf84d60a3513df3f2e8ab9854919c416cd3469" + }, + "evidence/supplier-logs/lift-parent.log": { + "normalization": "none", + "original_sha256": "240f02db618ec1a3a196845cc328eae52361bf838514658d64e744b14d7b986b", + "public_sha256": "240f02db618ec1a3a196845cc328eae52361bf838514658d64e744b14d7b986b" + }, + "evidence/supplier-logs/paired-extension-review.log": { + "normalization": "none", + "original_sha256": "22f1c329665ba83cc5fc58eb882369f1817b2708ee3391b57341ff0a59a77170", + "public_sha256": "22f1c329665ba83cc5fc58eb882369f1817b2708ee3391b57341ff0a59a77170" + }, + "evidence/supplier-logs/preload-move-independent-review.log": { + "normalization": "none", + "original_sha256": "c456d3e39c09e960ceebf80251d5e808fa9299991471fd86f4093d9bc4dd3eda", + "public_sha256": "c456d3e39c09e960ceebf80251d5e808fa9299991471fd86f4093d9bc4dd3eda" + }, + "evidence/supplier-logs/rebind-566.log": { + "normalization": "none", + "original_sha256": "0dc96988ea6182e2d855f17550c8a992cb30b8b97ad7817be23f1033499f9a03", + "public_sha256": "0dc96988ea6182e2d855f17550c8a992cb30b8b97ad7817be23f1033499f9a03" + }, + "evidence/supplier-logs/rebuild-borrow-words.log": { + "normalization": "workspace-prefix-to-token", + "original_sha256": "fa5a01866b83b3b3741b23761f6818eac15ae0341421b91cd07544497c9b8a8b", + "public_sha256": "5b1c1f9e3bcbaab31d134fd7a5a1e3629dc8a225bd67ddf94a664f0a52595363" + }, + "evidence/supplier-logs/rebuild-words-566.log": { + "normalization": "none", + "original_sha256": "dcbcbeda80423df29ef008bfac58409378f1fd0a3b9b23fc31ab9f03659dd86f", + "public_sha256": "dcbcbeda80423df29ef008bfac58409378f1fd0a3b9b23fc31ab9f03659dd86f" + }, + "evidence/supplier-logs/reconstruct-owners.log": { + "normalization": "none", + "original_sha256": "48248e5bc879a86b178083e82bf9a6299b1d6a4b73f32177de5f1330509419e6", + "public_sha256": "48248e5bc879a86b178083e82bf9a6299b1d6a4b73f32177de5f1330509419e6" + }, + "evidence/supplier-logs/shared-kernel-independent-review.log": { + "normalization": "none", + "original_sha256": "3dc6eb8940cf8a4b993f80129c98b6c4846ad346ccf773a78af225cff3339cc3", + "public_sha256": "3dc6eb8940cf8a4b993f80129c98b6c4846ad346ccf773a78af225cff3339cc3" + }, + "evidence/supplier-logs/staged-release-retime-review.log": { + "normalization": "none", + "original_sha256": "d85d4eb71eb02b45de85515eb424fbc993b3c315083fad2b939bfd66d2de2203", + "public_sha256": "d85d4eb71eb02b45de85515eb424fbc993b3c315083fad2b939bfd66d2de2203" + }, + "evidence/supplier-logs/staged3605-review.log": { + "normalization": "none", + "original_sha256": "de2fa433a259e21f69f10db63667ba6034e0cd35f102a989208e865d042c31c8", + "public_sha256": "de2fa433a259e21f69f10db63667ba6034e0cd35f102a989208e865d042c31c8" + }, + "evidence/supplier-logs/strict-t74.log": { + "normalization": "none", + "original_sha256": "e5efcef5cb683fd3be94fbdb0d25fb65bc805b0b2d1417eadf3495f464b5370d", + "public_sha256": "e5efcef5cb683fd3be94fbdb0d25fb65bc805b0b2d1417eadf3495f464b5370d" + }, + "evidence/supplier-logs/two-sided-helper408-review.log": { + "normalization": "none", + "original_sha256": "6b6be35dc5a9105d9f7fbca2b37952b3865b14ccf6ff1fbba75664241c7fafd8", + "public_sha256": "6b6be35dc5a9105d9f7fbca2b37952b3865b14ccf6ff1fbba75664241c7fafd8" + }, + "scripts/admit_extension.py": { + "normalization": "none", + "original_sha256": "5934268bdf39b4b84a754c5fafa2d18023610066e511056dcb17cdefa6f82c3e", + "public_sha256": "5934268bdf39b4b84a754c5fafa2d18023610066e511056dcb17cdefa6f82c3e" + }, + "scripts/admit_extension.py.patch": { + "normalization": "none", + "original_sha256": "dc62088611a384d97a2a47d84e307600269c5ec94f7c86fbc046b8af5de8491c", + "public_sha256": "dc62088611a384d97a2a47d84e307600269c5ec94f7c86fbc046b8af5de8491c" + }, + "scripts/integrate.py": { + "normalization": "none", + "original_sha256": "2129f62e2b78b1a674f78045c3acf0b1d8c8f59812147829e02d60d7913f9926", + "public_sha256": "2129f62e2b78b1a674f78045c3acf0b1d8c8f59812147829e02d60d7913f9926" + }, + "scripts/prepare_extension_native.py": { + "normalization": "none", + "original_sha256": "17830b10181e45cba62678e4344e256d674fe847af978434978ec1fc5249e045", + "public_sha256": "17830b10181e45cba62678e4344e256d674fe847af978434978ec1fc5249e045" + }, + "scripts/prepare_extension_native.py.patch": { + "normalization": "none", + "original_sha256": "33c13181f980082231260a3f9e80a0287538165ea227042bc77e8ec6a0e8d82d", + "public_sha256": "33c13181f980082231260a3f9e80a0287538165ea227042bc77e8ec6a0e8d82d" + }, + "vendor/PR3626-FETCH-PINS.json": { + "normalization": "none", + "original_sha256": "b0c055a4c03038e87ff65b9e6c0ebc7713b841a8692718f1ff725d91cb108d79", + "public_sha256": "b0c055a4c03038e87ff65b9e6c0ebc7713b841a8692718f1ff725d91cb108d79" + }, + "vendor/staged-width-t530/CLAIM.json": { + "normalization": "none", + "original_sha256": "9f27717c3ddbf5eb7b9773e1b2887ff3899d354019139d916c9b8004aee2e097", + "public_sha256": "9f27717c3ddbf5eb7b9773e1b2887ff3899d354019139d916c9b8004aee2e097" + }, + "vendor/staged-width-t530/CREDITS.md": { + "normalization": "none", + "original_sha256": "dfca50b8d12ccb9ebf7c574bc9a30c57c4329da259bf171e4530437a747da501", + "public_sha256": "dfca50b8d12ccb9ebf7c574bc9a30c57c4329da259bf171e4530437a747da501" + }, + "vendor/staged-width-t530/EXPECTED.json": { + "normalization": "none", + "original_sha256": "9a3ddab54912652881f1488c3572988a81cc127e8fa1d01bc615842314f737e3", + "public_sha256": "9a3ddab54912652881f1488c3572988a81cc127e8fa1d01bc615842314f737e3" + }, + "vendor/staged-width-t530/FRONTIER.json": { + "normalization": "none", + "original_sha256": "8f2f80438593e7efaa6bb57c881a40cedbd7b5665b4ae12c6cf215d217c98397", + "public_sha256": "8f2f80438593e7efaa6bb57c881a40cedbd7b5665b4ae12c6cf215d217c98397" + }, + "vendor/staged-width-t530/PROOF.md": { + "normalization": "none", + "original_sha256": "485f4b2adce3761ac664032898c3a90ce83186c423df6f1eef499fe76b5ce768", + "public_sha256": "485f4b2adce3761ac664032898c3a90ce83186c423df6f1eef499fe76b5ce768" + }, + "vendor/staged-width-t530/README.md": { + "normalization": "none", + "original_sha256": "c5f6d11e3783d09a60c0cf28996e94fc84e543717873aadcbaa3076720a778cb", + "public_sha256": "c5f6d11e3783d09a60c0cf28996e94fc84e543717873aadcbaa3076720a778cb" + }, + "vendor/staged-width-t530/owners/ARTIFACTS.json": { + "normalization": "none", + "original_sha256": "46dbca32c5b0f4fa565a39b89b6c22a8bcb3a1500a88a39816f286b7fd72b57e", + "public_sha256": "46dbca32c5b0f4fa565a39b89b6c22a8bcb3a1500a88a39816f286b7fd72b57e" + }, + "vendor/staged-width-t530/owners/CANDIDATE.json": { + "normalization": "none", + "original_sha256": "7755b8e7aed8dbfbe89fe64fdfebee04ad84de3c6c9020b3535eb04fdabccec1", + "public_sha256": "7755b8e7aed8dbfbe89fe64fdfebee04ad84de3c6c9020b3535eb04fdabccec1" + }, + "vendor/staged-width-t530/owners/DEPENDENCIES.json": { + "normalization": "none", + "original_sha256": "785cebd02d407dc6442cfb0604d9b232d93dd049fd319fc5f0ceacb314715272", + "public_sha256": "785cebd02d407dc6442cfb0604d9b232d93dd049fd319fc5f0ceacb314715272" + }, + "vendor/staged-width-t530/owners/DISPATCH37.json": { + "normalization": "none", + "original_sha256": "4f78935b2ef1f6c08c9c16433d54015def1eccd767443b496a77ea8823690df6", + "public_sha256": "4f78935b2ef1f6c08c9c16433d54015def1eccd767443b496a77ea8823690df6" + }, + "vendor/staged-width-t530/owners/EXPECTED.json": { + "normalization": "none", + "original_sha256": "4fac5fcc90e20405c0ad176d7466cbd52eb947c02fd34fe35fea18eaf372d79a", + "public_sha256": "4fac5fcc90e20405c0ad176d7466cbd52eb947c02fd34fe35fea18eaf372d79a" + }, + "vendor/staged-width-t530/owners/INPUT-PINS.json": { + "normalization": "none", + "original_sha256": "9b4b64a1e7d596f6ca8c4be8c2592544bce15a91dee988a31e89f0acb66cff7e", + "public_sha256": "9b4b64a1e7d596f6ca8c4be8c2592544bce15a91dee988a31e89f0acb66cff7e" + }, + "vendor/staged-width-t530/owners/ORDER37.json": { + "normalization": "none", + "original_sha256": "94803d190b2b0506d9645e980b57cdbc3e98221f3b615292df8a94f1b174c984", + "public_sha256": "94803d190b2b0506d9645e980b57cdbc3e98221f3b615292df8a94f1b174c984" + }, + "vendor/staged-width-t530/owners/PROVIDERS.json": { + "normalization": "none", + "original_sha256": "d96f2798024ab83edbb8848b62c425992aec182f1f24ef46bb8286dd390618c2", + "public_sha256": "d96f2798024ab83edbb8848b62c425992aec182f1f24ef46bb8286dd390618c2" + }, + "vendor/staged-width-t530/owners/README.txt": { + "normalization": "none", + "original_sha256": "7b9e8d85c1d0edfc265dc321a32752d76f1c94fa76dd7a931fff9066f57bd3a6", + "public_sha256": "7b9e8d85c1d0edfc265dc321a32752d76f1c94fa76dd7a931fff9066f57bd3a6" + }, + "vendor/staged-width-t530/owners/SOURCE-PINS.json": { + "normalization": "none", + "original_sha256": "7dec42af587af3b7ae66d4fdf3d0c6157f9c85eb744edec66fa266f294378e5e", + "public_sha256": "7dec42af587af3b7ae66d4fdf3d0c6157f9c85eb744edec66fa266f294378e5e" + }, + "vendor/staged-width-t530/owners/T16-DISPATCH.json": { + "normalization": "none", + "original_sha256": "282960b7163bc305675b64d1d0faee9f71b18848748326418a013626944c6488", + "public_sha256": "282960b7163bc305675b64d1d0faee9f71b18848748326418a013626944c6488" + }, + "vendor/staged-width-t530/owners/T16-ORDER.json": { + "normalization": "none", + "original_sha256": "9b2106c84aed23a7c3c8b99e21d3e96c66b12f92980a42ab2f6dbbe7831ef7c4", + "public_sha256": "9b2106c84aed23a7c3c8b99e21d3e96c66b12f92980a42ab2f6dbbe7831ef7c4" + }, + "vendor/staged-width-t530/owners/T16-PROVENANCE.json": { + "normalization": "none", + "original_sha256": "ebc9d5d23d5a698b795deee783c991910d2027cdb2e2f7561854df4189a63621", + "public_sha256": "ebc9d5d23d5a698b795deee783c991910d2027cdb2e2f7561854df4189a63621" + }, + "vendor/staged-width-t530/owners/UPSTREAM-PROOF.md": { + "normalization": "none", + "original_sha256": "11113405347bb8a85a85c6d5b516ff3dcdb15e01d4b16f825ba4eb314a1be5cd", + "public_sha256": "11113405347bb8a85a85c6d5b516ff3dcdb15e01d4b16f825ba4eb314a1be5cd" + }, + "vendor/staged-width-t530/owners/UPSTREAM-SOURCE-CREDITS.md": { + "normalization": "none", + "original_sha256": "1d9d8f56d8899f55878e4cb2c4e052b22506444016a51c2e678773505f5189e6", + "public_sha256": "1d9d8f56d8899f55878e4cb2c4e052b22506444016a51c2e678773505f5189e6" + }, + "vendor/staged-width-t530/owners/UPSTREAM-SOURCE-NOTICE": { + "normalization": "none", + "original_sha256": "c9731c9cca25ede32c2a1b3aef6d5b249973cb2ed5fb2494407bdca598763661", + "public_sha256": "c9731c9cca25ede32c2a1b3aef6d5b249973cb2ed5fb2494407bdca598763661" + }, + "vendor/staged-width-t530/owners/independent_literal.py": { + "normalization": "none", + "original_sha256": "36d7f4e3a611fd6b5983222887beb9a37a18bfac0d999ac5c00e3e191d1c5cc4", + "public_sha256": "36d7f4e3a611fd6b5983222887beb9a37a18bfac0d999ac5c00e3e191d1c5cc4" + }, + "vendor/staged-width-t530/owners/integral_network.py": { + "normalization": "none", + "original_sha256": "97cce7cdaeea2c415b7959d3bdbf34d272e3b541f6e7dc9b87c134a2c2620740", + "public_sha256": "97cce7cdaeea2c415b7959d3bdbf34d272e3b541f6e7dc9b87c134a2c2620740" + }, + "vendor/staged-width-t530/owners/portable_expand.py": { + "normalization": "none", + "original_sha256": "3a0ded73b3b8c6e945f28626c65c2160b540df5c3e86db5a48eb5639c5731f4c", + "public_sha256": "3a0ded73b3b8c6e945f28626c65c2160b540df5c3e86db5a48eb5639c5731f4c" + }, + "vendor/staged-width-t530/owners/source_context.py": { + "normalization": "none", + "original_sha256": "9967d6f5c0ca5f8437f76e3130c39aea3ff53e3d1ffa04a54d17db5f44f69f4c", + "public_sha256": "9967d6f5c0ca5f8437f76e3130c39aea3ff53e3d1ffa04a54d17db5f44f69f4c" + }, + "vendor/staged-width-t530/owners/test_owner_guards.py": { + "normalization": "none", + "original_sha256": "fecbf1518c4594c64276847f92d5980443c6b5562345e97354305d5c31530bb0", + "public_sha256": "fecbf1518c4594c64276847f92d5980443c6b5562345e97354305d5c31530bb0" + }, + "vendor/staged-width-t530/owners/verify_candidate.py": { + "normalization": "none", + "original_sha256": "efce5f7b1cbc3f8d0807312da5248209d1b2dd9d6043656a7d2e58b58887214b", + "public_sha256": "efce5f7b1cbc3f8d0807312da5248209d1b2dd9d6043656a7d2e58b58887214b" + }, + "vendor/staged-width-t530/owners/verify_owner.py": { + "normalization": "none", + "original_sha256": "8d1a3c2a7beb0f18e2beaa3df455a721ea6129343ec52031d18e58fbde5081cb", + "public_sha256": "8d1a3c2a7beb0f18e2beaa3df455a721ea6129343ec52031d18e58fbde5081cb" + }, + "vendor/staged-width-t530/replay.py": { + "normalization": "none", + "original_sha256": "c74d9169279bd795c84a605e375afbba1988abfc78933293b296f59bd70f013f", + "public_sha256": "c74d9169279bd795c84a605e375afbba1988abfc78933293b296f59bd70f013f" + }, + "vendor/staged-width-t530/source_builder.py": { + "normalization": "none", + "original_sha256": "0cb5f62d517ac35c44922abc338cd41356b3e08dc7c6d6d9f64a43a9a541378f", + "public_sha256": "0cb5f62d517ac35c44922abc338cd41356b3e08dc7c6d6d9f64a43a9a541378f" + }, + "vendor/staged-width-t530/supplier3605/ARTIFACTS.json": { + "normalization": "none", + "original_sha256": "867bd848d04505518463eb06b1905e70ccc9256bb73312d3cd1dc57623bb319b", + "public_sha256": "867bd848d04505518463eb06b1905e70ccc9256bb73312d3cd1dc57623bb319b" + }, + "vendor/staged-width-t530/supplier3605/PROOF.md": { + "normalization": "none", + "original_sha256": "525b010f3a895bdb11313f9938ad1b742df64bcee0b5671399230b1ded541baf", + "public_sha256": "525b010f3a895bdb11313f9938ad1b742df64bcee0b5671399230b1ded541baf" + }, + "vendor/staged-width-t530/supplier3605/README.md": { + "normalization": "none", + "original_sha256": "c1956badbcd92f2f88dcea833facc39eefb7eef8f220fb7b1941b4c552109d89", + "public_sha256": "c1956badbcd92f2f88dcea833facc39eefb7eef8f220fb7b1941b4c552109d89" + }, + "vendor/staged-width-t530/supplier3605/SOURCES.json": { + "normalization": "none", + "original_sha256": "005bf38ae679a9fb3ad1ee94b8c35bdfec58451ef58e0a87b0c7b68ef4fc51d5", + "public_sha256": "005bf38ae679a9fb3ad1ee94b8c35bdfec58451ef58e0a87b0c7b68ef4fc51d5" + }, + "vendor/staged-width-t530/supplier3605/STAGED-PAIR-RECORD-base.json.gz": { + "normalization": "none", + "original_sha256": "a6ae4188be998990ecb176fef5929e8e1dfce3726e372c0da2a290fe8ea73532", + "public_sha256": "a6ae4188be998990ecb176fef5929e8e1dfce3726e372c0da2a290fe8ea73532" + }, + "vendor/staged-width-t530/supplier3605/STAGED-PAIR-RECORD-extra.json.gz": { + "normalization": "none", + "original_sha256": "33a39d46d4d19bdeb6f0b6abb38cc80c68219e1ae10dd7e1acaccedc14b47236", + "public_sha256": "33a39d46d4d19bdeb6f0b6abb38cc80c68219e1ae10dd7e1acaccedc14b47236" + }, + "vendor/staged-width-t530/supplier3605/STAGED644-660-base.json.gz": { + "normalization": "none", + "original_sha256": "735c540b1fe29d0ceeb4d2f304ec941e5f2bd3bc92bafc8cce2b4f9a67a3b653", + "public_sha256": "735c540b1fe29d0ceeb4d2f304ec941e5f2bd3bc92bafc8cce2b4f9a67a3b653" + }, + "vendor/staged-width-t530/supplier3605/STAGED644-660-extra.json.gz": { + "normalization": "none", + "original_sha256": "886338fc32da14f3389a82c8120a1bcf9c5e2f0ec3e9b2d377fdae809e1d977f", + "public_sha256": "886338fc32da14f3389a82c8120a1bcf9c5e2f0ec3e9b2d377fdae809e1d977f" + }, + "vendor/staged-width-t530/supplier3605/TASK.json": { + "normalization": "none", + "original_sha256": "b85158fedf4734ff028703353ac6e9929ddea6a8e7c845c8341c2428d628717a", + "public_sha256": "b85158fedf4734ff028703353ac6e9929ddea6a8e7c845c8341c2428d628717a" + }, + "vendor/staged-width-t530/supplier3605/VALIDATION.json": { + "normalization": "none", + "original_sha256": "fa3803654e230cd50bc9fb874ec80e16dd838adebf13cd0cb174f18bc12fa04a", + "public_sha256": "fa3803654e230cd50bc9fb874ec80e16dd838adebf13cd0cb174f18bc12fa04a" + }, + "vendor/staged-width-t530/supplier3605/VERIFY.json": { + "normalization": "none", + "original_sha256": "21320da6b638366ccd42824e4b5865608f497cf2ba7323fffedb77f0a368c96a", + "public_sha256": "21320da6b638366ccd42824e4b5865608f497cf2ba7323fffedb77f0a368c96a" + }, + "vendor/staged-width-t530/supplier3605/check_residual.py": { + "normalization": "none", + "original_sha256": "e34b06ae725f062d15ad83cbd3ef2f91d3d78c380ccc93c8d2deba1c9e354c70", + "public_sha256": "e34b06ae725f062d15ad83cbd3ef2f91d3d78c380ccc93c8d2deba1c9e354c70" + }, + "vendor/staged-width-t530/supplier3605/check_scope.py": { + "normalization": "none", + "original_sha256": "f8eefd425a0d570167e14febcacfbb38a6bb29d820d808be426180cf31b5a947", + "public_sha256": "f8eefd425a0d570167e14febcacfbb38a6bb29d820d808be426180cf31b5a947" + }, + "vendor/staged-width-t530/supplier3605/staged_pair.py": { + "normalization": "none", + "original_sha256": "25fc9b025dbb90358032013303adea650a5f19937fd3edf30b6c6fd023e2d747", + "public_sha256": "25fc9b025dbb90358032013303adea650a5f19937fd3edf30b6c6fd023e2d747" + }, + "vendor/staged-width-t530/supplier3605/verify.py": { + "normalization": "none", + "original_sha256": "0ef49b725fc132cd5fc26a9a81028739896232d938bae22cef132384c7cbab13", + "public_sha256": "0ef49b725fc132cd5fc26a9a81028739896232d938bae22cef132384c7cbab13" + }, + "vendor/staged-width-t530/templates/prepare_extension_native.py": { + "normalization": "none", + "original_sha256": "0cdb4b8b8b565e3dc4a312d4174c86d7d1aebc531430cb726658c8feb0c3bcf4", + "public_sha256": "0cdb4b8b8b565e3dc4a312d4174c86d7d1aebc531430cb726658c8feb0c3bcf4" + } + }, + "original_prefix_sha256": "6f277c0e8378adc3906f83130da63c731e4c4e0045b891dbfba8968da7971d7f", + "rule": "Only this session workspace absolute prefix is replaced with $RESEARCH_WORKSPACE in execution metadata. Upstream source bytes, source manifests, changed words and mathematical fields are unchanged. Original hashes are historical claims from the retained local capsule; this public derivative does not supply all original bytes or the complete runtime/native archives.", + "schema": "public-normalized-recorded-summary/1" +} diff --git a/research/staged-release-retiming-t530/full-admission/README.md b/research/staged-release-retiming-t530/full-admission/README.md new file mode 100644 index 0000000000..753b1043bc --- /dev/null +++ b/research/staged-release-retiming-t530/full-admission/README.md @@ -0,0 +1,98 @@ +# Source reconstruction and recorded full-admission summary + +The original local run completed fresh native replay for both changed providers +and all seven source-bound admission stages. The terminal statuses were +`PASS_REPLICA_ORDER_FILL_DERIVATIVE_COMPLETE_RELEASE` and `PASS_RELEASE`. +The conditional modern outer value was exactly +`0.001730394391813963415120 - 10^-46 - 10^-70`. +The inherited all-size assumptions remain; see the package's main proof. + +This is a lean public derivative of that evidence. It deliberately omits the +complete generated source, runtime and native-cache archives. Their original +hashes and sizes are recorded in `ARCHIVE-OMISSIONS.json`. Source and runtime +manifests, selected native/runtime metadata, all seven stage summaries and +relevant logs are retained. No archive payload is authenticated by the public +summary check. + +## Public summary check + +```sh +python3 -B research/staged-release-retiming-t530/full-admission/check_recorded_summary.py +``` + +This standard-library check verifies public file hashes and internal recorded +status, exact κ/profile, native-versus-retained-reuse, seven-stage, physical and +prefix references. It returns `PASS_PUBLIC_RECORDED_SUMMARY_BINDINGS`. It is +not the private capsule's complete archive checker and does not rerun native, +owner, controller or outer computations. + +`python3 -B research/staged-release-retiming-t530/full-admission/test_recorded_summary.py` +checks four repinned malformed summaries: missing fresh native stages, missing +providers, empty finite-invoice predicates and a changed certified endpoint. +Each is rejected at its corresponding content predicate. + +Our workspace prefix in execution metadata is replaced with +`$RESEARCH_WORKSPACE`. `PUBLIC-PROVENANCE.json` records original SHA256, public +SHA256 and the normalization rule for each retained evidence file. Original hash +references are compared as recorded historical metadata, never falsely to the +normalized bytes. The original unnormalized bytes are not all supplied here. +Upstream source bytes, source manifests, words and mathematical fields are +unchanged. The original local capsule was left untouched. + +`evidence/DERIVATION.json` preserves the historical PREPARED construction status. +It predates the completed native and full admission receipts. The older +supplier-only κ `0.001727405299371541` is a different layer: the original final +release binds the modern outer κ to the same supplier complex endpoint/profile. + +## Fresh source reconstruction + +From a full Git checkout containing canonical main +`20ecf2891d80b5acf18d980b2164fb44ea7faa90`: + +```sh +python3.12 -B research/staged-release-retiming-t530/full-admission/reproduce.py \ + --repo . --work /tmp/fresh-retiming-source --materialize-only +``` + +This path was actually run from the public layout. It exports exactly the 540 +ancestor paths in `MAIN-INPUTS.json`, checks every SHA256, materializes the +predecessor with its unchanged authenticated materializer, appends the retiming +stage and runs the old and new reconstruction reviews. It reproduces all 654 +source files and source manifest +`fb47533a401d1d13719be8b9aab91fe5313931ca62d40dba336eab6a96275aa0`. +`evidence/PUBLIC-SOURCE-REBUILD-RESULT.json` records that fresh check. +The checkout HEAD may be newer than the ancestor. No network or unmerged PR +Git objects are needed: the required PR3626 bytes at +`659fd5e7064d9466b668d7188cbb013b333a415a` are vendored with exact input pins. +Only its consumed source/owner closure is retained, with contributor notices. + +## Complete scientific replay + +Omit `--materialize-only` to run fresh changed native providers, reconstruct +all 1,946,160 literal owner roles and execute the complete original admission. +Use Python 3.12 with numpy 2.5.4, scipy 1.18.1, sympy 1.14.0, mpmath 1.3.0, +gmpy2 2.3.2 and psutil 7.2.2. Assertions must be enabled. All output goes to a +fresh external work directory. The recorded full driver took about 20.3 minutes, +plus native generation. The unchanged retained parent and two retained native +chains are authenticated and reused; this is not a fresh retained bootstrap. + +The complete scientific driver ran successfully before publication, using this +same 654-file source. The public wrapper's materialize-only path was tested; +its full end-to-end wrapper has not been rerun. The public summary checker is +intentionally a smaller claim. Runtime source patches and exact native/admission +driver copies are retained for inspection; no scientific gate was removed. + +## Open next questions + +- Independently run the public full wrapper from a clean environment. This + checks environment and export portability beyond the tested source rebuild; + first provision the stated dependencies and run in a fresh directory. It + requires time for the full pipeline and remains a separate review action. +- Evaluate the retiming with another chronological allocation only after its + full owner/controller/prefix invoice is available. Start by comparing helper + interfaces and exact local profiles; no untested composition is claimed. + +The source and credit lineage includes Ross Richardson/PR3605, +hexapode/PR3626, dcharb78/PR3133, Jeremy Diviney/PR3148, +Marius-Paul Dumitrean/PR2979 and all retained notices. The new retiming and +integration used substantial OpenAI Codex assistance. Apache-2.0 applies. diff --git a/research/staged-release-retiming-t530/full-admission/check_recorded_summary.py b/research/staged-release-retiming-t530/full-admission/check_recorded_summary.py new file mode 100644 index 0000000000..b3a6ed0b43 --- /dev/null +++ b/research/staged-release-retiming-t530/full-admission/check_recorded_summary.py @@ -0,0 +1,211 @@ +#!/usr/bin/env python3 +"""Check the PUBLIC NORMALIZED RECORDED SUMMARY with standard-library code. + +This intentionally has a narrower scope than the private archive checker. It +checks public-file integrity, declared original/public normalization hashes and +internal recorded status/profile/receipt references. The original full source, +runtime and native archives are not supplied or authenticated by this check. +Original hashes are historical metadata, NOT hashes of the normalized bytes. +Run reproduce.py --materialize-only for fresh source reconstruction; omit that +flag for the separate complete scientific replay with inherited assumptions. +""" +from pathlib import Path, PurePosixPath +from fractions import Fraction as Q +import argparse +import hashlib +import json + +SOURCE = 'fb47533a401d1d13719be8b9aab91fe5313931ca62d40dba336eab6a96275aa0' +PROFILE = {'1':11747920,'2':3453480,'3':1112042,'4':486540,'5':103690,'8':38160,'48':202828} +LOCAL = {'1':2437,'2':724,'3':226,'4':102,'5':20,'8':8} +C = Q('0.001730394391813963415120') +K = C-Q(1,10**46)-Q(1,10**70) +STAGES = ['owners','parent-lift','rebind','discovery','outer-check_ledger.py','outer-independent_check.py','release'] +PARENT = 'e0eefc96567fbb45e19e6de0ca295381dbe0e686c08ddc783639b065c7c791d4' +RETAINED = {'base':'e8e6e78ff7422275c38324499e1f33fb2ecd30de9503aef2b8f1ee80d8c4df8e','extra':'7b0e9fbda32749aabc7e156d9fe09bceb0624a178628fe69e5dfea783462f905'} +NATIVE_STAGES = ['native','ledgers','local-replay','wrappers','phases'] +WORDS = {'base':'6df3356808e29909776be8bc0faf03df983401a267c2d740d1ac2dbcaa278269','extra':'65624efec36b35934b750c1741ba2ad4e6df3cff86e44536b0c016ebddb0fb55'} + +def need(value, label): + if not value: + raise ValueError(label) + +def digest(data): + return hashlib.sha256(data).hexdigest() + +def file_sha(path): + h=hashlib.sha256() + with path.open('rb') as f: + for b in iter(lambda:f.read(1024*1024),b''): + h.update(b) + return h.hexdigest() + +def jread(path): + return json.loads(path.read_text()) + +def check(root): + pins=jread(root/'PUBLIC-PINS.json') + need(pins['schema']=='public-retiming-summary-files/1','public pin schema') + actual={p.relative_to(root).as_posix() for p in root.rglob('*') if p.is_file() and p.name not in {'PUBLIC-PINS.json','PUBLIC-CHECK-RESULT.json'}} + need(set(pins['sha256'])==actual,'complete public summary file inventory') + for name,h in pins['sha256'].items(): + p=PurePosixPath(name) + need(not p.is_absolute() and '..' not in p.parts,'unsafe evidence path') + need(file_sha(root/name)==h,'recorded file hash: '+name) + provenance=jread(root/'PUBLIC-PROVENANCE.json') + need(provenance['schema']=='public-normalized-recorded-summary/1','normalization provenance schema') + for name,record in provenance['files'].items(): + need(file_sha(root/name)==record['public_sha256'],'public normalization digest '+name) + need(record['normalization'] in ('none','workspace-prefix-to-token'),'documented normalization rule') + if record['normalization']=='none': + need(record['original_sha256']==record['public_sha256'],'unchanged bytes really unchanged') + def recorded_sha(path): + # This is an ORIGINAL HASH DECLARATION. It does not authenticate unavailable raw bytes. + name=path.relative_to(root).as_posix() + return provenance['files'][name]['original_sha256'] if name in provenance['files'] else file_sha(path) + def metadata(prefix,expected,names): + data={} + for name in names: + path=root/'evidence'/prefix/name + need(recorded_sha(path)==expected[name],'selected original metadata digest '+name) + data[name]=path.read_bytes() + return data + ev=root/'evidence' + rebuilt=jread(ev/'PUBLIC-SOURCE-REBUILD-RESULT.json') + need(rebuilt['status']=='PASS_PUBLIC_SOURCE_REBUILD_654_FILES' and rebuilt['source_manifest_sha256']==SOURCE and rebuilt['source_files']==654,'recorded public source rebuild') + need(rebuilt['main_commit']=='20ecf2891d80b5acf18d980b2164fb44ea7faa90' and rebuilt['exported_inputs']==540,'recorded pinned main export') + need([s['name'] for s in rebuilt['stages']]==['original-materialization','retiming-source','preserved-staged-review','new-retiming-review'] and all(s['exit_code']==0 for s in rebuilt['stages']),'recorded public source rebuild gates') + manifest=jread(ev/'SOURCE-MANIFEST.json') + need(recorded_sha(ev/'SOURCE-MANIFEST.json')==SOURCE and len(manifest)==654,'frozen source manifest') + need(recorded_sha(ev/'retained-parent-CLAIM.json')==manifest['vendor/pr1297/CLAIM.json'],'selected retained source claim') + source={'vendor/pr1297/CLAIM.json':(ev/'retained-parent-CLAIM.json').read_bytes()} + nr=jread(ev/'NATIVE-NATIVE-RECEIPT.json') + need(nr['status']=='PASS_COMPOSED_FRESH_NATIVE_PROVIDERS_AND_AUTHENTICATED_CACHE','native receipt status') + need(set(nr['providers'])=={'base','extra'},'exact fresh provider set') + need(nr['manifest_sha256']==SOURCE and nr['fresh_current_provider_count']==2,'two fresh changed providers') + need(nr['reused_retained_native_count']==2 and nr['reused_retained_parent'] is True and nr['fresh_retained_parent'] is False,'explicit retained reuse') + nr_result=jread(ev/'NATIVE-RESULT.json') + need(nr_result['status']=='PASS_TWO_FRESH_SHARED_KERNEL_NATIVE_CHAINS_AUTHENTICATED_PARENT_REUSE','native preparation completion') + need(nr_result['native_receipt_sha256']==recorded_sha(ev/'NATIVE-NATIVE-RECEIPT.json'),'native receipt chain') + need(nr_result['source_manifest_sha256']==SOURCE,'native source chain') + need(nr_result['environment_sha256']==recorded_sha(ev/'NATIVE-ENVIRONMENT.json'),'native environment chain') + need(nr_result['preparer_sha256']==recorded_sha(root/'scripts/prepare_extension_native.py'),'actual native preparer binding') + need(nr_result['stages']==jread(ev/'NATIVE-STAGES.json'),'native stage identity') + need([s['name'] for s in nr_result['stages']]==['fresh-current-base','fresh-current-extra'],'exact two fresh native stages') + old_receipt=jread(ev/'RETAINED-REUSE-RECEIPT.json') + need(nr['retained_reuse_receipt_sha256']==recorded_sha(ev/'RETAINED-REUSE-RECEIPT.json'),'actual retained reuse receipt') + parent_dir='_receipts/'+PARENT+'/' + names=[parent_dir+n for n in ['RECEIPT.json','RESULT.json','STAGES.json']] + for word in RETAINED.values(): + names.extend([word+'/STEPS.json',word+'/CACHE.json']) + for kind,word in WORDS.items(): + need(nr['providers'][kind]['word_sha256']==word,'changed word binding') + names.extend([word+'/STEPS.json',word+'/local/LOCAL-CHECKS.json',word+'/local/INDEPENDENT-LOCAL-REPLAY.json']) + native=metadata('native-summary',nr['cache_files'],names) + pr=json.loads(native[parent_dir+'RECEIPT.json']) + need(digest(native[parent_dir+'RECEIPT.json'])==nr['retained_parent_receipt_sha256']==old_receipt['retained_parent_receipt_sha256'],'retained parent receipt chain') + need(pr['schema']=='parent-receipt/1' and pr['vendor_manifest_sha256']==PARENT==manifest['vendor/pr1297/MANIFEST.json'],'retained parent manifest') + need(pr['claim_sha256']==manifest['vendor/pr1297/CLAIM.json'] and pr['words']==RETAINED,'retained parent claim and words') + need(set(pr['files'])=={'RESULT.json','STAGES.json'},'retained parent receipt file set') + for name,h in pr['files'].items(): + need(digest(native[parent_dir+name])==h,'retained parent result file binding') + parent_result=json.loads(native[parent_dir+'RESULT.json']) + parent_stages=json.loads(native[parent_dir+'STAGES.json']) + need(parent_result['status']=='PASS_GLOBAL_MIXED_X54_FUSIONS_NATIVE_AND_STRICT_ADMISSION','retained parent complete status') + need(parent_result['base_native_reuse'] is True and parent_result['extra_native_reuse'] is True,'retained parent reuse explicit') + need(parent_result['kappa']==json.loads(source['vendor/pr1297/CLAIM.json'])['kappa'],'retained parent exact kappa') + need(parent_result['stages']==parent_stages and len(parent_stages)==16 and all(s['exit_code']==0 for s in parent_stages),'retained parent sixteen stages') + for kind,word in RETAINED.items(): + need(word==manifest['vendor/pr1297/'+('gauge44-word.json.gz' if kind=='base' else 'extra-word.json.gz')],'retained literal word source') + st=json.loads(native[word+'/STEPS.json']) + need([x['step'] for x in st]==NATIVE_STAGES and all(x['exit_code']==0 for x in st),'retained native five stages') + cj=json.loads(native[word+'/CACHE.json']) + subset={k.removeprefix(word+'/'):h for k,h in nr['cache_files'].items() if k.startswith(word+'/') and k!=word+'/CACHE.json'} + need(cj['word_sha256']==word and cj['files']==subset,'complete retained native cache') + for name,h in nr['cache_files'].items(): + if name.startswith(parent_dir) or any(name.startswith(w+'/') for w in RETAINED.values()): + need(old_receipt['cache_files'][name]==h,'retained cache exact inherited bytes') + for s in nr_result['stages']: + need(s['exit_code']==0,'fresh native exit status') + kind=s['name'].split('-')[-1] + need(s['log_sha256']==recorded_sha(ev/('native-'+kind+'.log')),'fresh native log chain') + need(s['result_sha256']==recorded_sha(ev/('native-'+kind+'-RESULT.json')),'fresh native result chain') + need(s['script_sha256']==manifest['new/fastnative/run_native.py'],'fresh native actual script source') + fresh=jread(ev/('native-'+kind+'-RESULT.json')) + need(fresh['status']=='PASS_COMPLETE_T74_NATIVE_REPLAY' and fresh['word_sha256']==WORDS[kind],'fresh native status and word') + need([q['step'] for q in fresh['steps']]==NATIVE_STAGES and all(q['exit_code']==0 for q in fresh['steps']),'fresh native full five-stage receipt') + for kind,word in WORDS.items(): + need(nr['providers'][kind]['complete_native_files']=={k.removeprefix(word+'/'):h for k,h in nr['cache_files'].items() if k.startswith(word+'/') and k!=word+'/CACHE.json'},'complete fresh provider cache binding') + st=json.loads(native[word+'/STEPS.json']) + need([x['step'] for x in st]==NATIVE_STAGES and all(x['exit_code']==0 for x in st),'five native gates') + checks=json.loads(native[word+'/local/LOCAL-CHECKS.json']) + for orientation in ['forward','backward']: + row=checks[orientation] + need(row['paid_profile']==LOCAL and row['all_columns']==632 and row['zero_buffers_returned_to_zero']==91,'native profile/columns/buffers') + result=jread(ev/'ADMISSION-RESULT.json') + need(result['status']=='PASS_REPLICA_ORDER_FILL_DERIVATIVE_COMPLETE_RELEASE','complete admission status') + need(result['source_manifest_sha256']==SOURCE and result['source_file_count']==654,'admission source binding') + need(result['native_receipt_sha256']==recorded_sha(ev/'NATIVE-NATIVE-RECEIPT.json'),'admission native binding') + need(result['profile']==PROFILE and result['replicas']==530 and result['actual_expected_helpers']==408,'admission profile/dimensions') + need(Q(result['complex_lower'])==C and Q(result['kappa'])==Q(result['kappa_decimal'])==K,'exact certified endpoint') + need(K>Q('0.001730071864705779882540'),'strict improvement over PR3626 before its margins') + stages=jread(ev/'ADMISSION-STAGES.json') + need(stages==result['stages'] and [x['name'] for x in stages]==STAGES,'seven-stage receipt chain') + bindings=jread(ev/'STAGE-SCRIPT-BINDINGS.json') + for s in stages: + need(s['exit_code']==0,'admission stage exit status') + need(s['log_sha256']==recorded_sha(ev/'logs'/(s['name']+'.log')),'admission log binding '+s['name']) + need(s['script_sha256']==recorded_sha(root/bindings[s['name']]),'admission script binding '+s['name']) + package_manifest=jread(ev/'PACKAGE-MANIFEST.json') + package_hash=recorded_sha(ev/'PACKAGE-MANIFEST.json') + need(result['package_manifest_sha256']==package_hash,'final package manifest chain') + stage_sources={'owners':'reconstruct.py','parent-lift':'lift_parent.py','rebind':'new/rebind.py','discovery':'replay.py','outer-check_ledger.py':'outer/check_ledger.py','outer-independent_check.py':'outer/independent_check.py','release':'verify_release.py'} + for stage in stages: + need(stage['script_sha256']==package_manifest[stage_sources[stage['name']]],'execution script in admitted package') + selected=['CLAIM.json','outer/LEDGER.json','outer/B.json','outer/OUTER-CLAIM.json','new/SPEC.json'] + packed=metadata('runtime-summary',package_manifest,selected) + spec=json.loads(packed['new/SPEC.json']) + need(spec['expected']['global_profile']==PROFILE and Q(spec['expected']['complex_lower'])==C,'frozen final specification') + ledger=json.loads(packed['outer/LEDGER.json']) + need(Q(ledger['rows']['struct_boundary_radix_union']['kappa']['rational'])==K,'modern ledger headline chain') + outer_claim=json.loads(packed['outer/OUTER-CLAIM.json']) + b=json.loads(packed['outer/B.json']) + need(Q(outer_claim['kappa'])==Q(outer_claim['kappa_rational'])==K,'outer claim headline') + need(b['profile']==PROFILE and b['live']==474880 and Q(b['b'])9Ab~4(;s*|H~CzAoOLb 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

W1{2#&I4JvENAC0(zcgG^tq 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 V>ytT*LV(=pZ%O=Me@JD+{{j4OYux|< literal 0 HcmV?d00001 diff --git a/research/staged-release-retiming-t530/full-admission/data/RETIMED644-660-extra.json.gz b/research/staged-release-retiming-t530/full-admission/data/RETIMED644-660-extra.json.gz new file mode 100644 index 0000000000000000000000000000000000000000..f3c580b06506e8888fe766c9a1e0bb1a748d7b74 GIT binary patch literal 72574 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

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

I 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

JNHqTNY7rUGb}6YzxTWQYCAF>)_#b8=T;O9( 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 literal 0 HcmV?d00001 diff --git a/research/staged-release-retiming-t530/full-admission/data/STAGED644-660-extra.json.gz b/research/staged-release-retiming-t530/full-admission/data/STAGED644-660-extra.json.gz new file mode 100644 index 0000000000000000000000000000000000000000..78e7b2bb0653c8dcc0133980a19dd9d97ebdb67e GIT binary patch literal 72568 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

c^2e-a+VPhAq3>{xXm(b1#L+ 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\nassert m==73 and W==896*T and W==BJ['live']" + ] + ] + }, + { + "after_sha256": "ebaf637f1f818dac9c0fce0ee3f18df300873105818cea29a8ae9e8b737b5c7d", + "before_sha256": "08ca58abff11bdfba721dc56ab8acf06ec1b7c48a8699a0955cf35324680aca7", + "path": "code/witness.py", + "replacements": [ + [ + " with open(os.environ['WITNESS_RECORD'],'a')as f:f.write(json.dumps([key,got],default=str)+chr(10))", + " import time as _wr_time\n _wr_path=Path(os.environ['WITNESS_RECORD'])\n _wr_lock=_wr_path.with_name(_wr_path.name+'.append.lock')\n _wr_deadline=_wr_time.monotonic()+60\n _wr_fd=None\n while _wr_fd is None:\n try:_wr_fd=os.open(_wr_lock,os.O_CREAT|os.O_EXCL|os.O_WRONLY)\n except FileExistsError:\n if _wr_time.monotonic()>=_wr_deadline:raise TimeoutError('discovery record lock timeout; existing lock preserved')\n _wr_time.sleep(.005)\n try:\n with _wr_path.open('a',encoding='utf-8',newline='\\n')as _wr_out:\n _wr_out.write(json.dumps([key,got],default=str)+chr(10))\n _wr_out.flush()\n finally:\n os.close(_wr_fd)\n _wr_lock.unlink()" + ] + ] + }, + { + "after_sha256": "770d23cb1ac78b485ccc1a26f5d3e2fed7345940f77011579ae90ada4f5cacb1", + "before_sha256": "4b44d5e72e9d677076edc2d20569cdd30f0e21849afd88874d74dfa7d1c767e0", + "path": "verify.py", + "replacements": [ + [ + "run('lift-parent',P/'lift_parent.py','--owners',work/'rebuilt-owners','--out',work/'rebuilt-parent')", + "run('lift-parent',P/'lift_parent.py','--package',P,'--owners',work/'rebuilt-owners','--out',work/'rebuilt-parent')" + ] + ] + }, + { + "after_sha256": "0d8cc021d2401d047aaec79060ec2ea28ba06f12eca8dbf4c60c78bb31975c4e", + "before_sha256": "ebaf637f1f818dac9c0fce0ee3f18df300873105818cea29a8ae9e8b737b5c7d", + "path": "code/witness.py", + "replacements": [ + [ + "PAYLOAD==1<<(192+(GEO['dimension']+1)//2+2*CALLS+4).bit_length()", + "PAYLOAD==1<<(128+(GEO['dimension']+1)//2+18+1330+1+4).bit_length()" + ] + ] + }, + { + "after_sha256": "c5106e0d7a97382677fa228fbade989262347968a0e54acfcf6712aa37e02f47", + "before_sha256": "bb213d0af12218ff7c9c572717e522d8bbeeb2856b87a253f4a7f44e0fd71f15", + "path": "code/invoice_allcold.py", + "replacements": [ + [ + " required_prefix=localbits+input_l2_bits+call_count+bridge_sweeps+4", + " from blocknorm_certificate import certify\n blocknorm=certify(template, {pid:base/'providers'/pid for pid in template['local_providers']})\n assert blocknorm['status'] == 'PASS_TENSOR_BLOCK_NORM_CERTIFICATE'\n assert localbits <= 128, 'actual native scalar/Horner prefix exceeds charged local reserve'\n required_prefix=localbits+input_l2_bits+blocknorm['max_active_depth']+blocknorm['stock_l2_bits']+1+4" + ] + ] + }, + { + "after_sha256": "0d522b09c7fe6a5e62fe80c28f3eefe733557a82d77c6212e5d4b91ffb7e3421", + "before_sha256": "02502a217fe8c9e10229075b50745518beac512c48db20e64c3e06514a4da5b5", + "path": "independent_core.py", + "replacements": [ + [ + " payload = 1 << (192 + (M+1)//2 + 2*len(c['order']) + 4).bit_length()", + " require(localbits <= 128, 'measured native prefix exceeds local reserve')\n payload = 1 << (128 + (M+1)//2 + 18 + 1330 + 1 + 4).bit_length()" + ] + ] + }, + { + "after_sha256": "d598a2ac1e2e8eaee14a8c285e0277a7ae44ca6a15bd2b5cfc67fb40844fb387", + "before_sha256": "c5106e0d7a97382677fa228fbade989262347968a0e54acfcf6712aa37e02f47", + "path": "code/invoice_allcold.py", + "replacements": [ + [ + " complete_invocation_sweeps=call_count,bridge_sweeps=bridge_sweeps,row_prefix_extra=2*payload,", + " complete_invocation_sweeps=call_count,bridge_sweeps=bridge_sweeps,row_prefix_extra=2*payload,blocknorm=blocknorm," + ], + [ + " primitive_arithmetic_margin_bits=4,controller_audit_sha256=", + " tensor_block_norm=blocknorm,partial_cover_margin_bits=1,physical_stock_l2_bits=blocknorm['stock_l2_bits'],primitive_arithmetic_margin_bits=4,controller_audit_sha256=" + ], + [ + "Sum every actual invocation and bridge sweep and take the maximum local scalar/Horner prefix over both orientations of the fixed provider.", + "All invocations and bridge sweeps remain charged. Bound completed-boundary energy by at most eighteen active steps per owner replica, using exact tensor-isomorphic whole-family helper unitaries. Add the full group-indexed physical-stock sup-to-l2 factor and one partial-cover margin, then the maximum local scalar/Horner prefix." + ] + ] + }, + { + "after_sha256": "e051aaa166e01263780d5ae03699690670b597fed6593af4c37a7e978825eb85", + "before_sha256": "0d522b09c7fe6a5e62fe80c28f3eefe733557a82d77c6212e5d4b91ffb7e3421", + "path": "independent_core.py", + "replacements": [ + [ + " prefix = localbits + (M + 1) // 2 + len(c['order']) + c['bridges'] + 4", + " bn=c['blocknorm']\n require(bn['status']=='PASS_TENSOR_BLOCK_NORM_CERTIFICATE' and bn['max_active_depth']==18 and bn['stock_l2_bits']<=1330, 'independent tensor block certificate')\n prefix = localbits + (M + 1) // 2 + bn['max_active_depth'] + bn['stock_l2_bits'] + 1 + 4" + ], + [ + "prefix_formula=dict(local_scalar=localbits, input_l2=(M + 1) // 2, invocations=len(c['order']), bridges=c['bridges'], margin=4)", + "prefix_formula=dict(local_scalar=localbits, input_l2=(M + 1) // 2, invocations=len(c['order']), bridges=c['bridges'], active_block_depth=18,stock_l2=bn['stock_l2_bits'],partial_cover=1,margin=4),blocknorm=bn" + ] + ] + }, + { + "after_sha256": "393323f150d0bb686419804d51cf43d0f58450d2a1e7929725acdd26fdbb3640", + "before_sha256": "2286f00e462ff28abbb3f396095463482a1e063213b9526a7225275980c77eaf", + "path": "audit_mixed.py", + "replacements": [ + [ + "pending=A.check_pending_axes(ctx);receipt=A.check_roles(ctx,roles)", + "import blocknorm_certificate as BN;ctx['blocknorm']=BN.certify_context(ctx,roles,dirs,source_parent=parent);pending=A.check_pending_axes(ctx);receipt=A.check_roles(ctx,roles)" + ] + ] + }, + { + "after_sha256": "0542dde915af8902324db2f59136da078d5256bfaa8f1510f3e59336be7e2680", + "before_sha256": "f25e1e870df5d5a16a1e367b3df8843cb01644ab4b75895d7939af81e4fcb833", + "path": "code/assemble.py", + "replacements": [ + [ + " assert invoice['global_prefix_bits']==max(z['prefix_bits']for p in invoice['providers'].values()for z in p['local'].values())+37+CALLS+CALLS+4", + " bn=invoice['blocknorm']\n assert bn['status']=='PASS_TENSOR_BLOCK_NORM_CERTIFICATE' and bn['replicas']==REPLICAS\n assert bn['max_active_depth']==bn['boundary_depth_bits']==18 and bn['active_calls_per_block']==bn['bridges_per_block']==9\n assert bn['block_width_families']==896 and bn['physical_families']==invoice['physical'] and bn['live_families']==invoice['live']\n assert bn['partial_cover_bits']==1 and bn['input_l2_bits']==37 and bn['local_reserve_bits']==128 and bn['retained_payload_bits']==PAYLOAD\n localbits=max(z['prefix_bits']for p in invoice['providers'].values()for z in p['local'].values())\n assert bn['local_actual_prefix_bits']==localbits and localbits<=128\n assert invoice['global_prefix_bits']==bn['actual_prefix_bits']==localbits+37+18+bn['stock_l2_bits']+1+4\n assert bn['required_reserve_bits']==128+37+18+bn['stock_l2_bits']+1+40\nassert m==73 and W==896*T and W==BJ['live']" + ] + ] + }, + { + "after_sha256": "ebaf637f1f818dac9c0fce0ee3f18df300873105818cea29a8ae9e8b737b5c7d", + "before_sha256": "08ca58abff11bdfba721dc56ab8acf06ec1b7c48a8699a0955cf35324680aca7", + "path": "code/witness.py", + "replacements": [ + [ + " with open(os.environ['WITNESS_RECORD'],'a')as f:f.write(json.dumps([key,got],default=str)+chr(10))", + " import time as _wr_time\n _wr_path=Path(os.environ['WITNESS_RECORD'])\n _wr_lock=_wr_path.with_name(_wr_path.name+'.append.lock')\n _wr_deadline=_wr_time.monotonic()+60\n _wr_fd=None\n while _wr_fd is None:\n try:_wr_fd=os.open(_wr_lock,os.O_CREAT|os.O_EXCL|os.O_WRONLY)\n except FileExistsError:\n if _wr_time.monotonic()>=_wr_deadline:raise TimeoutError('discovery record lock timeout; existing lock preserved')\n _wr_time.sleep(.005)\n try:\n with _wr_path.open('a',encoding='utf-8',newline='\\n')as _wr_out:\n _wr_out.write(json.dumps([key,got],default=str)+chr(10))\n _wr_out.flush()\n finally:\n os.close(_wr_fd)\n _wr_lock.unlink()" + ] + ] + }, + { + "after_sha256": "770d23cb1ac78b485ccc1a26f5d3e2fed7345940f77011579ae90ada4f5cacb1", + "before_sha256": "4b44d5e72e9d677076edc2d20569cdd30f0e21849afd88874d74dfa7d1c767e0", + "path": "verify.py", + "replacements": [ + [ + "run('lift-parent',P/'lift_parent.py','--owners',work/'rebuilt-owners','--out',work/'rebuilt-parent')", + "run('lift-parent',P/'lift_parent.py','--package',P,'--owners',work/'rebuilt-owners','--out',work/'rebuilt-parent')" + ] + ] + }, + { + "after_sha256": "0d8cc021d2401d047aaec79060ec2ea28ba06f12eca8dbf4c60c78bb31975c4e", + "before_sha256": "ebaf637f1f818dac9c0fce0ee3f18df300873105818cea29a8ae9e8b737b5c7d", + "path": "code/witness.py", + "replacements": [ + [ + "PAYLOAD==1<<(192+(GEO['dimension']+1)//2+2*CALLS+4).bit_length()", + "PAYLOAD==1<<(128+(GEO['dimension']+1)//2+18+1330+1+4).bit_length()" + ] + ] + }, + { + "after_sha256": "c5106e0d7a97382677fa228fbade989262347968a0e54acfcf6712aa37e02f47", + "before_sha256": "bb213d0af12218ff7c9c572717e522d8bbeeb2856b87a253f4a7f44e0fd71f15", + "path": "code/invoice_allcold.py", + "replacements": [ + [ + " required_prefix=localbits+input_l2_bits+call_count+bridge_sweeps+4", + " from blocknorm_certificate import certify\n blocknorm=certify(template, {pid:base/'providers'/pid for pid in template['local_providers']})\n assert blocknorm['status'] == 'PASS_TENSOR_BLOCK_NORM_CERTIFICATE'\n assert localbits <= 128, 'actual native scalar/Horner prefix exceeds charged local reserve'\n required_prefix=localbits+input_l2_bits+blocknorm['max_active_depth']+blocknorm['stock_l2_bits']+1+4" + ] + ] + }, + { + "after_sha256": "0d522b09c7fe6a5e62fe80c28f3eefe733557a82d77c6212e5d4b91ffb7e3421", + "before_sha256": "02502a217fe8c9e10229075b50745518beac512c48db20e64c3e06514a4da5b5", + "path": "independent_core.py", + "replacements": [ + [ + " payload = 1 << (192 + (M+1)//2 + 2*len(c['order']) + 4).bit_length()", + " require(localbits <= 128, 'measured native prefix exceeds local reserve')\n payload = 1 << (128 + (M+1)//2 + 18 + 1330 + 1 + 4).bit_length()" + ] + ] + }, + { + "after_sha256": "d598a2ac1e2e8eaee14a8c285e0277a7ae44ca6a15bd2b5cfc67fb40844fb387", + "before_sha256": "c5106e0d7a97382677fa228fbade989262347968a0e54acfcf6712aa37e02f47", + "path": "code/invoice_allcold.py", + "replacements": [ + [ + " complete_invocation_sweeps=call_count,bridge_sweeps=bridge_sweeps,row_prefix_extra=2*payload,", + " complete_invocation_sweeps=call_count,bridge_sweeps=bridge_sweeps,row_prefix_extra=2*payload,blocknorm=blocknorm," + ], + [ + " primitive_arithmetic_margin_bits=4,controller_audit_sha256=", + " tensor_block_norm=blocknorm,partial_cover_margin_bits=1,physical_stock_l2_bits=blocknorm['stock_l2_bits'],primitive_arithmetic_margin_bits=4,controller_audit_sha256=" + ], + [ + "Sum every actual invocation and bridge sweep and take the maximum local scalar/Horner prefix over both orientations of the fixed provider.", + "All invocations and bridge sweeps remain charged. Bound completed-boundary energy by at most eighteen active steps per owner replica, using exact tensor-isomorphic whole-family helper unitaries. Add the full group-indexed physical-stock sup-to-l2 factor and one partial-cover margin, then the maximum local scalar/Horner prefix." + ] + ] + }, + { + "after_sha256": "e051aaa166e01263780d5ae03699690670b597fed6593af4c37a7e978825eb85", + "before_sha256": "0d522b09c7fe6a5e62fe80c28f3eefe733557a82d77c6212e5d4b91ffb7e3421", + "path": "independent_core.py", + "replacements": [ + [ + " prefix = localbits + (M + 1) // 2 + len(c['order']) + c['bridges'] + 4", + " bn=c['blocknorm']\n require(bn['status']=='PASS_TENSOR_BLOCK_NORM_CERTIFICATE' and bn['max_active_depth']==18 and bn['stock_l2_bits']<=1330, 'independent tensor block certificate')\n prefix = localbits + (M + 1) // 2 + bn['max_active_depth'] + bn['stock_l2_bits'] + 1 + 4" + ], + [ + "prefix_formula=dict(local_scalar=localbits, input_l2=(M + 1) // 2, invocations=len(c['order']), bridges=c['bridges'], margin=4)", + "prefix_formula=dict(local_scalar=localbits, input_l2=(M + 1) // 2, invocations=len(c['order']), bridges=c['bridges'], active_block_depth=18,stock_l2=bn['stock_l2_bits'],partial_cover=1,margin=4),blocknorm=bn" + ] + ] + }, + { + "after_sha256": "393323f150d0bb686419804d51cf43d0f58450d2a1e7929725acdd26fdbb3640", + "before_sha256": "2286f00e462ff28abbb3f396095463482a1e063213b9526a7225275980c77eaf", + "path": "audit_mixed.py", + "replacements": [ + [ + "pending=A.check_pending_axes(ctx);receipt=A.check_roles(ctx,roles)", + "import blocknorm_certificate as BN;ctx['blocknorm']=BN.certify_context(ctx,roles,dirs,source_parent=parent);pending=A.check_pending_axes(ctx);receipt=A.check_roles(ctx,roles)" + ] + ] + }, + { + "after_sha256": "0542dde915af8902324db2f59136da078d5256bfaa8f1510f3e59336be7e2680", + "before_sha256": "f25e1e870df5d5a16a1e367b3df8843cb01644ab4b75895d7939af81e4fcb833", + "path": "code/assemble.py", + "replacements": [ + [ + " assert invoice['global_prefix_bits']==max(z['prefix_bits']for p in invoice['providers'].values()for z in p['local'].values())+37+CALLS+CALLS+4", + " bn=invoice['blocknorm']\n assert bn['status']=='PASS_TENSOR_BLOCK_NORM_CERTIFICATE' and bn['replicas']==REPLICAS\n assert bn['max_active_depth']==bn['boundary_depth_bits']==18 and bn['active_calls_per_block']==bn['bridges_per_block']==9\n assert bn['block_width_families']==896 and bn['physical_families']==invoice['physical'] and bn['live_families']==invoice['live']\n assert bn['partial_cover_bits']==1 and bn['input_l2_bits']==37 and bn['local_reserve_bits']==128 and bn['retained_payload_bits']==PAYLOAD\n localbits=max(z['prefix_bits']for p in invoice['providers'].values()for z in p['local'].values())\n assert bn['local_actual_prefix_bits']==localbits and localbits<=128\n assert invoice['global_prefix_bits']==bn['actual_prefix_bits']==localbits+37+18+bn['stock_l2_bits']+1+4\n assert bn['required_reserve_bits']==128+37+18+bn['stock_l2_bits']+1+4 0. +DIG=spec['outer_refinement']['endpoint_digits'] # the supplier endpoint is certified to 10^-DIG (accept at the endpoint, reject at endpoint + 10^-DIG); every slack sits 10 digits below +# Fixed-grid maximum (PR2180 / PR2161, dataisfire; proof PROOF-GRID-MAX.md): the free gaps shrink together to R0 = 10^-(DIG+80); grid, backoff and certified endpoint are unchanged. +R0=Q(1,10**(DIG+80)); ZETA=R0/100; SLACK=R0; GAP=R0; STOP=R0/10**6 +FLOOR=10**(DIG+46); BACKOFF=Q(1,10**(DIG+22)); B_GAP=R0 +# Fine prime padding: theta is between 1/(4p^2) and 1/(2p^2-1). +# Online chirp guard beta+2*xi-2<1; coefficient setup uses O(p^2 log p) bits. +# epsilon = 1 - DELTA_E is a FREE parameter (outer/FINE-PADDING-COMPOSITION.md sec. 2): every row is strictly satisfied for every DELTA_E > r0 = 10^-(DIG+80); beta = 1 - 3 DELTA_E lies in the admissible window +# [1 - DELTA_E (1 + 1/q), 1 - 2 DELTA_E). DELTA_E = (1025/1024) r0 keeps the gamma spare power 1-eps-r0 = r0/1024 > 0 and puts C - eps*q below 1/FLOOR (PROOF-GRID-MAX.md). +DELTA_E=Q(1025,1024)*R0 +EPS=1-DELTA_E +BETA=1-3*DELTA_E +THETA_POWER=Q(2) +HALO_POWER=48 +CORE_POWER=128 +STRASSEN_TAU=Q(45,16) +KAPPA_1828=Q('0.0016797549561255445213356709939207025769983114385025802954603275201627999999999999999999999999979966404900867489109573286580121585') # exact kappa of rohanarun's PR1828 (slack refinement of PR1800 at 1e-96), from its body +KAPPA_1839=Q('0.0016797549561255445213356709939207025769983114385025802954603275201628645482603256388263049999999997996640490086748910957328658012158594') # exact kappa of PR1839 (previous package: 1e-90 endpoint) +KAPPA_1875=Q('0.0016797549561255445213356709939207025769983114385025802954603275201628645482603256388263056561328446322744513169085862209720704481201654121427713006366929567157349625273906229277148454180995537563371124755588139767841405530386745578819565618798006892541712197674874836946756930569827889227573192555649999999997996640490086748910957328658012158594') # exact kappa of rohanarun's PR1875 (1e-300 endpoint), from its body +KAPPA_1876=Q('0.001679754956125544521335670993920702576998311438502580295460327520162864548260325638826305656132844632274451316908586220972070448120165412142771300636692956715734962527390622927714845418099553756337112475558813976784140553038674557881956561879800689254171219767487483694675693056982788922757319255565606685566411725238449650999339827075715283714270157705762309226038611771955655377501414652136546310799999999999999999997996640490086748910957328658012158594846') # exact kappa of rohanarun's PR1876 (1e-400 endpoint), from its body +KAPPA_1897=Q('0.001679754956125544521335670993920702576998311438502580295460327520162864548260325638826305656132844632274451316908586220972070448120165412142771300636692956715734962527390622927714845418099553756337112475558813976784140553038674557881956561879800689254171219767487483694675693056982788922757319255565606685566411725238449650999339827075715283714270157705762309226038611771955655377501414652136546310881185746917580802513640545967852810801680966856133978576162943792322682482152988532923811998938861379689883167389728443314312230815059559906903773756886872476136837071871203030423643505345473735135533') # exact kappa of M6LI's PR1897 (1e-500 grid), from its body +KAPPA_1786=Q('0.0016797547881500489087805478664999999999999999999999999999999998000000199999') # exact kappa of chafreaky's PR1786 ledger (EXPECTED-BALANCE.json), headline 0.001679754788150048 +KAPPA_PKG5=Q('0.001677992607205282520732088774830808372222877897034109604209719298829805473412451530867883424937597') # previous package (rectangular k=2, tau_eff=2.2500351) +KAPPA_PKG4=Q('0.0016778199023144364336310551358776001013829401215770658599799349282716974076737897457922714197448847') # previous package (radix union schedule, square boundary tau=2.372864) +KAPPA_1712=Q('0.0016776417313433545642517275958639984231708545722735432722117400060454625429077941422798526440584702') # pkg of PR1712 (Le Gall tau=12/5, old union row) +KAPPA_1699=Q('0.001677641731343354564251058287063644749065568493') # exact kappa of PR1699's ledger (Chafik Boukhalfa), same supplier profile +certified_complex=Q(spec['expected']['complex_lower']) +bit=Q('0.001733427039589844234749') +# Keep short independently checkable decimals strictly inside both endpoints. +b=certified_complex-B_GAP # strictly inside the certified supplier endpoint; B.json carries the same exact value +assert b==Q(BJ['b']) +q=b-GAP +a=(q+b)/2 +online=Q(spec['expected']['kappa']) +old=Q('0.001673360105405778') +assert b0 +assert m==73 and W==896*T and W==BJ['live'] +EXPECTED_PROFILE={int(k):v for k,v in BJ['profile'].items()} +assert profile==EXPECTED_PROFILE + +GB=int((DIG+130)*3.3220)+16 # enclosure grid 2^-GB, about 50 digits below the slacks +ONE=1<=2:x/=2;k+=1 + lo,hi=unit_log(x) + return down(lo+k*ln2[0]),up(hi+k*ln2[1]) +def exp(x): + assert 0<=x>GB)//j;th=_cd(-((-th*xu)>>GB),j);sl+=tl;sh+=th + tn=_cd(-((-th*xu)>>GB),EN) # x^EN/EN! (rounded up); the tail is at most twice this + return Q(int(sl),ONE),Q(int(sh+2*tn+2),ONE) +def moment(endpoint): + lo=hi=Q(0) + for r,n in profile.items(): + l,h=log(Q(m,r)); weight=Q(n*r,m*W) + lo+=weight*exp(endpoint*l)[0] + hi+=weight*exp(endpoint*h)[1] + return down(lo),up(hi) + +native=moment(b) +assert native[1]<1 +b_up=Q(BJ['b_above_endpoint']) +assert b_up>certified_complex and moment(b_up)[0]>1 # a larger test endpoint is rejected + +def ledger(kind, *, q_=q, zeta=ZETA, slack=SLACK, + old_scan=False, full_gauge=False, full_key=False, old_union=False, old_theta=False, old_linear=False, old_tag=False, + eps_=EPS, beta_=BETA, tau_eff=STRASSEN_TAU, halo_power=HALO_POWER, core_power=CORE_POWER): + r=R0; stop=STOP + # Existing explicit Strassen format, 7^16<2^45; c=3/32. + # Union: radix-distributed schedule (outer/UNION-SCHEDULE.md, new in this package): row exponent eps+1/2-xi. The boundary row binds with main; the Gaussian row has slack at this explicit point. + c=(3-tau_eff)/2 + eps=eps_; beta=beta_ + xi=eps*(1+q_)-c+slack + saving=eps*q_ + # Deliberate strict gap (BACKOFF) after decimal truncation to the FLOOR grid. + kappa=Q((saving*FLOOR).__floor__(),FLOOR)-BACKOFF + # kappa is derived, not silently asserted to equal an expected decimal. + tau=1-a; sigma=1-b + internal=tau+(1-stop)*max(sigma-tau,Q(0)) + leaf=sigma+stop*(1-sigma) + lam=1-(q_+a)/2 + key=beta+1-eps + margins={ + 'main_transform':saving, + 'global_coordinate_router':a, + 'fused_gaussian':1-eps+q_*beta, + 'group_bit_router':1-eps+a*beta, + 'group_scans':1-eps+beta, + 'boundary_algebraic_matrix':c+xi-eps, + 'sparse_union_movement':xi+Q(1,2)-eps, + 'polynomial_products':eps, + 'microbox_face_corrections':1-(eps+beta+halo_power-core_power+2), + } + if old_union:margins['old_g_factor_union_row']=1-eps-beta-Q(1,2)+xi + if old_scan:margins['old_per_axis_scan']=1-eps + if full_key:margins['unnecessary_full_key_sort']=margins['sparse_union_movement']-key + checks={ + 'actual_bit_above_effective':bit-a, + 'complex_above_effective':b-a, + 'q_positive':q_, 'complex_endpoint':b-q_, + 'q_below_effective':a-q_, 'stop_positive':stop, + 'stop_below_one':1-stop, + 'leaf_saving_above_effective':(1-stop)*b-a, + 'q_below_internal':1-internal-q_, 'q_below_leaf':1-leaf-q_, + 'lambda_above_tau':lam-tau, 'lambda_above_sigma':lam-sigma, + 'lambda_above_internal':lam-internal, + 'lambda_prime_above_lambda':1-q_-lam, + 'lambda_prime_above_leaf':1-q_-leaf, + 'epsilon_positive':eps,'epsilon_below_one':1-eps, + 'cap_above_band':xi-Q(1,2),'cap_below_cell':eps-xi, + 'group_positive':beta,'group_below_dimension':eps-beta, + 'support_router_span':1-beta, + 'group_gauge_power_slack':1-(2*xi-THETA_POWER)-r-beta, + 'actual_logarithmic_group_guard':1-(2*xi-THETA_POWER)-beta, + 'global_gamma_power_slack':1-eps-r, + 'actual_logarithmic_gamma_guard':1-eps, + 'alpha_logarithm_absorption':r, + 'group_key_fits_record':1-key, + 'membership_arithmetic_fits_record':1-beta-2*(1-eps), + 'microbox_halo_volume':core_power-halo_power-beta, + 'positive_layout_slack':slack, + 'short_record_fallback':eps-a, + 'improvement_over_online_final':kappa-online, + 'improvement_over_previous_local_final':kappa-old, + 'complex_below_one_over_32':Q(1,32)-b, + } + checks['strassen_integer_power_gap']=Q(2**tau_eff.numerator-7**tau_eff.denominator) + checks['theta_positive_polynomial_power']=THETA_POWER + checks['cap_below_phase_cell_power']=THETA_POWER-xi + checks['halo_covers_generic_inverse_radius']=Q(halo_power-43) + checks['union_tag_work_per_visit_fits_record']=1-beta + checks['union_header_fits_record']=1-beta + checks['source_axis_superpolynomial']=1-eps + checks['improvement_over_pr1786']=kappa-KAPPA_1786 + checks['improvement_over_pr1828']=kappa-KAPPA_1828 + checks['improvement_over_pr1839']=kappa-KAPPA_1839 + checks['improvement_over_pr1875']=kappa-KAPPA_1875 + checks['improvement_over_pr1876']=kappa-KAPPA_1876 + checks['improvement_over_pr1897']=kappa-KAPPA_1897 + checks['improvement_over_pr1758']=kappa-Q('0.001679745508802299051546533685199973672313473419790800679752457380932784242972585600630181672224983') + checks['improvement_over_pr1699']=kappa-KAPPA_1699 + checks['improvement_over_pr1712']=kappa-KAPPA_1712 + checks['improvement_over_previous_package']=kappa-KAPPA_PKG4 + checks['improvement_over_pkg_k2']=kappa-KAPPA_PKG5 + if full_gauge:checks['unrecentered_group_gauge']=1-THETA_POWER-r-beta + if old_theta:checks['old_theta_chirp_guard']=1-(2*xi-eps)-r-beta + if old_linear:checks['old_linear_guard']=1-xi-r-beta + if old_tag:checks['old_union_tag_2beta']=1-2*beta + # Main-binding family invariant (PR2180): the Gaussian saving stays above the main saving. The fixed kappa grid (FLOOR) is coarser than the free gaps, + # so the *_above_kappa rows alone would no longer exclude a beta outside the main-binding window; this row is delta*(1-2q) > 0. + checks['gaussian_above_main']=margins['fused_gaussian']-saving + checks.update({n+'_above_kappa':v-kappa for n,v in margins.items()}) + assert margins['boundary_algebraic_matrix']==saving+slack + assert margins['sparse_union_movement']==saving+slack+(tau_eff-2)/2 + return {'kind':kind,'kappa':kappa,'epsilon':eps,'xi':xi,'beta':beta, + 'q':q_,'a':a,'r0':r,'zeta':zeta,'slack':slack, + 'margins':margins,'strict_checks':checks} + +def encode(x): + if isinstance(x,Q): + with localcontext() as c: + c.prec=DIG+200 + return {'rational':str(x),'decimal':str(Decimal(x.numerator)/Decimal(x.denominator))} + if isinstance(x,dict):return {str(k):encode(v) for k,v in x.items()} + if isinstance(x,(list,tuple)):return [encode(v) for v in x] + return x + +rows={};controls={} +for kind in ['struct_boundary_radix_union']: + row=ledger(kind) + assert all(v>0 for v in row['strict_checks'].values()) + assert min(row['margins'].values())==row['margins']['main_transform'] + # fixed-grid maximum: C*FLOOR is an integer and 0 < C - eps*q < 1/FLOOR, so floor(FLOOR*eps*q)/FLOOR = C - 1/FLOOR exactly and kappa attains the grid/backoff ceiling + assert (certified_complex*FLOOR).denominator==1 and 0= 1/(4 p^THETA_POWER)), an exponential factor <= p^2 eventually, +# alpha^5 polylogarithmic; a further half power is allowed for the polylogarithmic and bounded-constant factors of the augmented matrices. The umbrella must exceed that budget. +UMBRELLA_POWER=10 +def umbrella_margin(theta_power):return UMBRELLA_POWER-(2*theta_power+2+Q(1,2)) +assert umbrella_margin(THETA_POWER)>0 and umbrella_margin(Q(15,4))<=0 # control: the umbrella would fail silently for THETA_POWER >= 3.75 +HALO_UMBRELLA={'umbrella_power':UMBRELLA_POWER,'theta_power':THETA_POWER,'exponent_budget':2*THETA_POWER+2+Q(1,2),'margin':umbrella_margin(THETA_POWER),'fails_from_theta_power':Q(15,4)} +out={'status':'PASS_FINE_PRIME_PADDING_EXACT_ARITHMETIC', + 'scope':'Conditional fine-prime padding composition. Fresh native admission is required by verify.py. The cited prime theorem, written gauge-free theorem and inherited all-size interfaces are not proved by this arithmetic. No independent human review is claimed.', + 'geometry_changes':{'theta_power':THETA_POWER,'halo_power':HALO_POWER,'core_power':CORE_POWER,'matrix_exponent':STRASSEN_TAU}, + 'halo_umbrella':HALO_UMBRELLA,'complex_lower_short':b,'complex_lower_pinned':certified_complex, + 'native_moment':native,'profile':profile,'m':m,'W':W, + 'online_final_kappa':online,'rows':rows,'rejecting_controls':controls, + 'pr1673_kappa':Q('0.001677160151714381'),'improvement_over_pr1673':rows['struct_boundary_radix_union']['kappa']-Q('0.001677160151714381'), + 'source_sha256':{p.relative_to(WORK).as_posix():hashlib.sha256(p.read_bytes()).hexdigest() for p in [SPEC,CLAIM]}} +(HERE/'LEDGER.json').write_text(json.dumps(encode(out),indent=2)+'\n') +print(out['status']) +for name,row in rows.items(): + print(name,'FINAL KAPPA',encode(row['kappa'])['decimal'], + 'positive checks',len(row['strict_checks']), + 'gain over online',encode(row['kappa']-online)['decimal']) diff --git a/research/staged-release-retiming-t530/full-admission/evidence/stage-scripts/outer-independent_check.py.py b/research/staged-release-retiming-t530/full-admission/evidence/stage-scripts/outer-independent_check.py.py new file mode 100644 index 0000000000..b838c430ef --- /dev/null +++ b/research/staged-release-retiming-t530/full-admission/evidence/stage-scripts/outer-independent_check.py.py @@ -0,0 +1,60 @@ +"""Independent balance-equation check (PR1673, adapted: this package's supplier b and SPEC), not an execution of the ledger in check_ledger.py.""" +from fractions import Fraction as F +from pathlib import Path +from decimal import Decimal,localcontext +import json,hashlib,sys +sys.set_int_max_str_digits(0) +D=Path(__file__).resolve().parent;W=D.parent +src=W/'new/SPEC.json' +BJ=json.loads((D/'B.json').read_text()) +spec=json.loads(src.read_text());pinned=F(spec['expected']['complex_lower']) +DIG=spec['outer_refinement']['endpoint_digits'];T=10**(DIG+80) # all free slacks are 10^-(DIG+80) or below (fixed-grid-maximum point, PR2180 / PR2161 dataisfire) +b=F(BJ['b']);q=b-F(1,T);eff=(q+b)/2;actual_bit=F('0.001733427039589844234749') +r=F(1,T);z=F(1,T*100);s=F(1,T) +assert 0eff +rows={} +# FINE-PRIME PADDING (outer/FINE-PADDING-COMPOSITION.md): explicit point epsilon=1-delta, beta=1-3 delta, delta=(1025/1024)*10^-(DIG+80), Strassen boundary tau=45/16 (7^16<2^45), c=3/32, +# theta in (1/(4p^2),1/(2p^2-1)], chirp guard beta+2xi-2<1, halo power 48, core power 128. Derived here WITHOUT the ledger code; the structured boundary is not used. +delta=F(1025,1024*T);E=1-delta;B=1-3*delta +assert 7**16<2**45;tau=F(45,16);c=(3-tau)/2;assert c==F(3,32) +nu=2;halo=48;core=128 +X=E+E*q+s-c # boundary saving c+X-E = E q + s +assert c+X-E==E*q+s +# the Gaussian row has slack: 1-E+qB-Eq = delta(1-2q) +assert 1-E+q*B-E*q==delta*(1-2*q)>0 +# admissible beta window for this epsilon: Gaussian row needs beta >= 1-delta(1+1/q); membership needs beta < 1-2 delta +assert 1-delta*(1+1/q)<=B<1-2*delta +assert F(1,2)z>0 and 1-E-r>0 and core-halo-B>0 and halo>43 +assert 1-B>0 and 1-B-2*(1-E)==delta>0 +costs={'transform':1-E*q,'global_router':1-eff,'gaussian':E-q*B,'group_router':E-eff*B,'group_scans':E-B,'boundary':E-X+(tau-1)/2,'sparse_union':E+F(1,2)-X,'polynomials':1-E,'microfaces':E+B+halo-core+2} +K=F((E*q*10**(DIG+46)).__floor__(),10**(DIG+46))-F(1,10**(DIG+22)) +assert max(costs.values())==costs['transform'] and all(v<1-K for v in costs.values()) +# earlier packages' guards fail at this point (they are rejecting controls in the ledger): linear guard 1-X-r-B<0, old theta chirp guard 1-(2X-E)-r-B<0, 2B<1 test fails +assert 1-X-r-B<0 and 1-(2*X-E)-r-B<0 and 1-2*B<0 +assert K>F('0.0016797547881500489087805478664999999999999999999999999999999998000000199999') # PR1786 exact kappa +assert K>F('0.0016797549561255445213356709939207025769983114385025802954603275201627999999999999999999999999979966404900867489109573286580121585') # PR1828 exact kappa +assert K>F('0.0016797549561255445213356709939207025769983114385025802954603275201628645482603256388263049999999997996640490086748910957328658012158594') # PR1839 exact kappa +assert K>F('0.0016797549561255445213356709939207025769983114385025802954603275201628645482603256388263056561328446322744513169085862209720704481201654121427713006366929567157349625273906229277148454180995537563371124755588139767841405530386745578819565618798006892541712197674874836946756930569827889227573192555649999999997996640490086748910957328658012158594') # PR1875 exact kappa +assert K>F('0.001679754956125544521335670993920702576998311438502580295460327520162864548260325638826305656132844632274451316908586220972070448120165412142771300636692956715734962527390622927714845418099553756337112475558813976784140553038674557881956561879800689254171219767487483694675693056982788922757319255565606685566411725238449650999339827075715283714270157705762309226038611771955655377501414652136546310799999999999999999997996640490086748910957328658012158594846') # PR1876 exact kappa +assert K>F('0.001679754956125544521335670993920702576998311438502580295460327520162864548260325638826305656132844632274451316908586220972070448120165412142771300636692956715734962527390622927714845418099553756337112475558813976784140553038674557881956561879800689254171219767487483694675693056982788922757319255565606685566411725238449650999339827075715283714270157705762309226038611771955655377501414652136546310881185746917580802513640545967852810801680966856133978576162943792322682482152988532923811998938861379689883167389728443314312230815059559906903773756886872476136837071871203030423643505345473735135533') # PR1897 exact kappa +assert K>F('0.001679745508802299051546533685199973672313473419790800679752457380932784242972585600630181672224983') # PR1758 +assert K r0 (beta = 1-3 delta); only kappa moves, kappa = (1-delta) q - O(1e-76) +# fixed-grid maximum: saving < C and C*FLOOR integral give K <= C-1/FLOOR-BACKOFF; this point attains it (0 < C-E*q < 1/FLOOR) +FL=10**(DIG+46);assert (pinned*FL).denominator==1 and 00 and 1-dd*(1+1/q)<=Bd<1-2*dd and 1-Ed+q*Bd-Ed*q>0 and Ed-Bd>0 and 1-Bd-2*(1-Ed)>0 + assert F(1,2)0 and core-halo-Bd>0 + assert 1-Ed+eff*Bd>Ed*q and eff>Ed*q and 1-Ed+Bd>Ed*q and Ed>Ed*q and 1-(Ed+Bd+halo-core+2)>Ed*q + sweep.append((str(dd),str(float(q-Ed*q)))) +assert 1-F(1,T)<=1-r # delta=r0 itself is rejected by 1-eps-r0>0 +assert not (1-(1-r)-r>0) +rows['struct_boundary_radix_union']={'epsilon':str(E),'cap':str(X),'beta':str(B),'kappa':str(K),'margin_above_kappa':str(E*q-K),'checked_cost_powers':len(costs),'gap_to_q':str(q-K),'epsilon_free_sweep_delta_gap_to_q':sweep} +report={'status':'PASS_INDEPENDENT_BALANCE_DERIVATION','source_sha256':hashlib.sha256(src.read_bytes()).hexdigest(),'b':str(b),'rows':rows,'scope':'Independent balance derivation and margin comparisons for this package\'s supplier endpoint; the supplier native admission is bound by verify_release.py; inherited all-size assumptions remain.'} +(D/'INDEPENDENT.json').write_text(json.dumps(report,indent=2)+'\n') +print(json.dumps(report,indent=2)) diff --git a/research/staged-release-retiming-t530/full-admission/evidence/stage-scripts/owners.py b/research/staged-release-retiming-t530/full-admission/evidence/stage-scripts/owners.py new file mode 100644 index 0000000000..f00410bb45 --- /dev/null +++ b/research/staged-release-retiming-t530/full-admission/evidence/stage-scripts/owners.py @@ -0,0 +1,66 @@ +# SPDX-License-Identifier: Apache-2.0 +# Derived from Jeremy Kothe / Philippe Van Velzen / Tekalign owner verifier. +# Parameter extension with substantial OpenAI Codex assistance. +"""Borrow-word owner witness: literal verification of the shipped exact fill (new/borrow-fill/FILL.json.gz) and emission of +OWNERS/ORDER/DISPATCH/PROFILE/RESULT for lift_parent.py. The helper count per call is R' = 480-k and the per-call widths come from +new/BORROW-PROVIDERS.json; the same windows, bins and distinct-family rules as the pinned PR1297 owner construction are checked +literally (no window, bin, helper or family rule is relaxed). Idle remainders are whatever the exact bins leave (ranks priced +exactly by the profile). The fill itself is found offline by new/borrow-fill/solve_fill.py (not rerun here) and only verified. +""" +import argparse,collections,gzip,importlib.util,json +from pathlib import Path +assert __debug__, 'Assertions are required' +F=Path(__file__).resolve().parent +ap=argparse.ArgumentParser();ap.add_argument('--out',type=Path,required=True);args=ap.parse_args();P=args.out.resolve();P.mkdir(parents=True,exist_ok=False) +def read(p): + b=p.read_bytes();return json.loads(gzip.decompress(b) if p.suffix=='.gz' else b) +def dump(p,x): + b=json.dumps(x,sort_keys=True,separators=(',',':')).encode();z=bytearray(gzip.compress(b,mtime=0));z[9]=255;p.write_bytes(bytes(z) if p.suffix=='.gz' else b) +plan=read(F/'inputs/PLAN.json');parent=read(F/'inputs/GLOBAL-TEMPLATE.json.gz');T=plan['T'] +OF=F/'new/borrow-fill/ORDER.json' +assert OF.exists(), 'explicit candidate order required' +if OF.exists(): # a free complete invocation order (666 calls; windows are recomputed from it below) with its explicit dispatch + order=read(OF);dispatch={(s,r):pid for s,r,pid in read(F/'new/borrow-fill/DISPATCH.json')} + Tnew=1+max(r for s,r in order) + assert type(Tnew) is int and Tnew>0 + assert len(order)==9*Tnew and sorted(map(tuple,order))==[(s,r) for s in range(9) for r in range(Tnew)],'order must cover every actual source replica and stage exactly once' + assert set(dispatch)==set(map(tuple,order)),'complete provider dispatch' +else: + order=[[s,r+T*g] for s,r in plan['order'] for g in range(2)] + dispatch={(s,r+T*g):pid for s,r,pid in read(F/'inputs/DISPATCH.json') for g in range(2)} +source=F/'vendor/build_parent.py';sp=importlib.util.spec_from_file_location('windows',source);mod=importlib.util.module_from_spec(sp);sp.loader.exec_module(mod);windows,schedule=mod.actual_windows(parent,order) +prov=read(F/'new/BORROW-PROVIDERS.json');widths={p:d['widths'] for p,d in prov.items()};paid={p:{int(k):v for k,v in d['actual_paid_profile'].items()} for p,d in prov.items()} +R=len(next(iter(widths.values())));assert all(len(w)==R for w in widths.values()) and set(widths)==set(dispatch.values()) +fill=read(F/'new/borrow-fill/FILL.json.gz');assert fill['columns']==['time','helper','owner_replica','child','port','offset'] +for s_,r_,p_ in fill['dispatch_overrides']:dispatch[s_,r_]=p_ # the single gauge44->extra provider upgrade of the pinned fill +pairs,sides=plan['pairs'],plan['sides'] +at={tuple(x):i for i,x in enumerate(order)} +roles=[] +for time,helper,rep,child,port,offset in fill['rows']: + stage,replica=order[time];w=widths[dispatch[stage,replica]][helper] + roles.append(dict(stage=stage,replica=replica,time=time,helper=helper,width=w,owner_replica=rep,child=child,port=port,offset=offset,copy=112*rep+port,family=rep*896+(2*pairs[str(child)]+sides[str(child)])*112+port)) +assert len(roles)==len(order)*R,(len(roles),len(order)*R) +helpers=collections.defaultdict(set);fams=collections.defaultdict(set);used=collections.defaultdict(set) +for z in roles: + call=(z['stage'],z['replica']);rep,child,port=z['owner_replica'],z['child'],z['port'] + cap,allowed=windows[f'{rep},{child}'] + assert z['time'] in allowed and 0<=port<112 and 0<=z['helper']=0 and z['offset']+z['width']<=cap and not used[rep,child,port]&cells + used[rep,child,port]|=cells +assert set(helpers)==set(map(tuple,order)) and all(s==set(range(R)) for s in helpers.values()) +idle=collections.Counter() +for key,(cap,times) in windows.items(): + r,ch=map(int,key.split(',')) + for port in range(112): + c=used[r,ch,port];assert c==set(range(len(c))),'gap in pending prefix' + if cap-len(c):idle[cap-len(c)]+=1 +H=collections.Counter(idle) +for sr in order: + for r,n in paid[dispatch[tuple(sr)]].items():H[int(r)]+=n +assert 73*(896*Tnew)-sum(r*n for r,n in H.items())==320*Tnew,'rank-mass deficit' +roles.sort(key=lambda r:(r['time'],r['helper'])) +dump(P/'OWNERS.json.gz',roles);dump(P/'ORDER.json',order);dump(P/'DISPATCH.json',[[s,r,dispatch[s,r]] for s,r in order]);dump(P/'PROFILE.json',dict(sorted(H.items()))) +dump(P/'RESULT.json',dict(status='PASS_EXACT_BORROW_WORD_REPLICA_OWNER_FILL',roles=len(roles),helpers_per_call=R,dispatch=dict(collections.Counter(dispatch.values())),idle=dict(sorted(idle.items())),scope='Literal strict windows, bin capacities, per-call helper widths and distinct physical families verified for the shipped fill; local programs are the borrow words; full parent binding, finite invoice and global admission run separately.')) +print('PASS_OWNER_VERIFY',dict(idle),dict(sorted(H.items())),flush=True) diff --git a/research/staged-release-retiming-t530/full-admission/evidence/stage-scripts/parent-lift.py b/research/staged-release-retiming-t530/full-admission/evidence/stage-scripts/parent-lift.py new file mode 100644 index 0000000000..fc0375d424 --- /dev/null +++ b/research/staged-release-retiming-t530/full-admission/evidence/stage-scripts/parent-lift.py @@ -0,0 +1,96 @@ +#!/usr/bin/env python3 +# SPDX-License-Identifier: Apache-2.0 +"""Construct a literal arbitrary-T source parent, PLAN and SPEC from exact owners. + +CLI: --package IMMUTABLE_SOURCE --owners RECONSTRUCTOR_OUTPUT --out FRESH_DIR. +Source lineage and arbitrary-group argument are in replica_parent.py / PARENT-LIFT.md. +This adapter mutates neither the source package nor owner input directory. +""" +import argparse, ast, collections, copy, importlib.util, json, sys +from pathlib import Path +sys.dont_write_bytecode=True +import replica_parent as P +assert __debug__, 'Assertions required' + +def main(): + ap=argparse.ArgumentParser(description=__doc__) + ap.add_argument('--package',type=Path,required=True);ap.add_argument('--owners',type=Path,required=True);ap.add_argument('--out',type=Path,required=True) + a=ap.parse_args();base=a.package.resolve();owners=a.owners.resolve();out=a.out.resolve() + P.require(not out.exists(),'fresh output required') + source_names=['inputs/PLAN.json','inputs/SPEC.json','inputs/GLOBAL-TEMPLATE.json.gz','new/BORROW-PROVIDERS.json','vendor/build_parent.py'] + input_names=['ORDER.json','OWNERS.json.gz','DISPATCH.json','PROFILE.json','RESULT.json'] + input_hash={str(base/n):P.sha(base/n)for n in source_names}|{str(owners/n):P.sha(owners/n)for n in input_names} + P.SOURCE=base/'inputs/GLOBAL-TEMPLATE.json.gz' + plan=P.read(base/'inputs/PLAN.json');spec=P.read(base/'inputs/SPEC.json');providers=P.read(base/'new/BORROW-PROVIDERS.json') + order=P.read(owners/'ORDER.json');dispatch_rows=P.read(owners/'DISPATCH.json');roles=P.read(owners/'OWNERS.json.gz');profile=P.read(owners/'PROFILE.json') + T=1+max(r for st,r in order);P.require(T>0,'positive T');P.require(len(order)==9*T,'complete new invocation count') + parent=P.build(T);geometry=P.check(parent,parent['replica_lift']['groups']) + sp=importlib.util.spec_from_file_location('retained_physical_source_windows',base/'vendor/build_parent.py');mod=importlib.util.module_from_spec(sp);sp.loader.exec_module(mod) + windows,schedule=mod.actual_windows(parent,order) + independent=P.expand_schedule(parent,order);P.require(schedule==independent,'independent literal source-event expansion') + dispatch={(s,r):pid for s,r,pid in dispatch_rows} + P.require(len(dispatch_rows)==len(order) and set(dispatch)==set(map(tuple,order)),'dispatch bijection') + P.require(set(dispatch.values())<=set(providers),'known provider') + for pid,d in providers.items(): + P.require(pid in plan['provider_registry'],'provider in retained registry') + plan['provider_registry'][pid].update(widths=d['widths'],actual_paid_profile={str(k):v for k,v in sorted({int(k):v for k,v in d['actual_paid_profile'].items()}.items())}) + widths={pid:d['widths']for pid,d in providers.items()};R=len(next(iter(widths.values()))) + P.require(all(len(w)==R for w in widths.values()),'same helper count') + pairs,sides=plan['pairs'],plan['sides'];helper_seen=collections.defaultdict(set);family_seen=collections.defaultdict(set);used=collections.defaultdict(set) + for z in roles: + tm=z['time'];P.require(0<=tmlen(cells):idle[cap-len(cells)]+=1 + paid=collections.Counter(idle) + for st,r in order:paid.update({int(k):v for k,v in providers[dispatch[st,r]]['actual_paid_profile'].items()}) + P.require(dict(paid)=={int(k):v for k,v in profile.items()},'entire actual paid profile') + P.require(73*896*T-sum(k*v for k,v in paid.items())==320*T,'full rank mass and deficit') + stage_template={c['stage']:c for c in plan['provider_calls']} + plan['provider_calls']=[];plan['per_call_widths']=[] + for tm,(st,r)in enumerate(order): + pid=dispatch[st,r];desc=plan['provider_registry'][pid];z=copy.deepcopy(stage_template[st]);orientation='forward'if st%2==0 else'backward' + P.require(z['orientation']==orientation,'source stage orientation') + z.update(replica=r,time=tm,provider=pid,local_program_sha256=desc['orientation_program_sha256'][orientation]);plan['provider_calls'].append(z) + plan['per_call_widths'].append(dict(stage=st,replica=r,time=tm,widths=desc['widths'])) + plan.update(T=T,live=896*T,deficit=320*T,order=order,windows=windows,profile=profile,assignment_sha256=P.sha(owners/'OWNERS.json.gz'),assignment_content_sha256=P.identity(roles),status=f'EXPLICIT_T{T}_STRICT_WINDOW_OWNER_FILL',mode=f'mixed-t{T}-exact-fill',solver_status='Literal fixed owner witness independently rechecked; no solver runs in adapter') + plan['replica_lift']=dict(replicas=T,parent_template_content_sha256=P.identity(parent),owners_file_sha256=P.sha(owners/'OWNERS.json.gz'),schedule_content_sha256=P.identity(schedule),source_replicas=37,groups=parent['replica_lift']['groups'],phase_recipe_unchanged=True) + # Discovery computes geometry/numerical expectations, but the descriptive + # reporting denominator is source metadata and must survive the reset. + preserved_expected={'gain_baseline_kappa':spec['expected']['gain_baseline_kappa']} + spec.update(name=f'mixed-t{T}-exact-fill',call_order=order,dispatch=dispatch_rows,providers={},expected=preserved_expected) + assembly_ast=ast.parse((base/'code/assemble.py').read_text(encoding='utf-8')) + read_expected={node.slice.value for node in ast.walk(assembly_ast) if isinstance(node,ast.Subscript) and isinstance(node.value,ast.Name) and node.value.id=='X' and isinstance(node.slice,ast.Constant) and isinstance(node.slice.value,str)} + discovery_computed={'complex_lower','conservative_complex_lower'} + P.require(read_expected-discovery_computed<=set(preserved_expected),'all noncomputed assembly X metadata retained') + # Fresh discovery/freezing and outer admission supply all expected values. + spec['geometry']=dict(replicas=T,stages=plan['L'],pairs=plan['K'],dimension=plan['M'],charged_prefix_bits=1<<(128+37+18+1330+1+4).bit_length(),parent_live=parent['live'],parent_physical=parent['physical'],parent_idle=geometry['parent_idle'],parent_helpers=504) + out.mkdir(parents=True) + for name,obj in [('GLOBAL-TEMPLATE.json.gz',parent),('OWNERS.json.gz',roles),('DISPATCH.json',dispatch_rows),('PROFILE.json',profile),('ORDER.json',order),('CONSTRUCTION.json',P.read(owners/'RESULT.json'))]:P.write_new(out/name,obj) + # Bind canonical output owner serialization while preserving exact role semantics. + output_owner=out/'OWNERS.json.gz' + P.require(P.read(output_owner)==roles,'serialized owner semantics') + # Canonical gzip may differ from emitter gzip. Bind the actual output file everywhere. + plan['assignment_sha256']=P.sha(output_owner);plan['replica_lift']['owners_file_sha256']=P.sha(output_owner) + P.write_new(out/'PLAN.json',plan) + spec['data']={'plan_sha256':P.sha(out/'PLAN.json'),'owners_sha256':P.sha(output_owner)} + P.write_new(out/'SPEC.json',spec) + receipt=dict(status='PASS_LITERAL_GENERAL_T_PARENT_PLAN_SPEC',geometry=spec['geometry'],groups=parent['replica_lift']['groups'],input_sha256=input_hash,template_content_sha256=P.identity(parent),new_sha256=P.sha(out/'GLOBAL-TEMPLATE.json.gz'),source_sha256=P.SOURCE_SHA,roles=len(roles),helpers_per_call=R,source_events_per_replica=30,global_tail=[30,31],schedule_content_sha256=P.identity(schedule),profile=dict(sorted(paid.items())),idle=dict(sorted(idle.items())),private_work_shared=514,source_programs_phase_recipes_unchanged=True,discovery_X_metadata=sorted(read_expected-discovery_computed),discovery_computed_X_keys=sorted(read_expected&discovery_computed),phase_scope='Reuses root fresh hash-bound native/phase admission; this adapter checks literal source geometry and complete paid owner profile.',scripts={Path(__file__).name:P.sha(__file__),Path(P.__file__).name:P.sha(P.__file__)}) + P.write_new(out/'PARENT-LIFT-RECEIPT.json',receipt) + for path,h in input_hash.items():P.require(P.sha(path)==h,'input unchanged after lift') + print('PASS_LITERAL_GENERAL_T_PARENT_PLAN_SPEC',json.dumps(spec['geometry'],sort_keys=True),flush=True) +if __name__=='__main__':main() diff --git a/research/staged-release-retiming-t530/full-admission/evidence/stage-scripts/rebind.py b/research/staged-release-retiming-t530/full-admission/evidence/stage-scripts/rebind.py new file mode 100644 index 0000000000..b0d04e911d --- /dev/null +++ b/research/staged-release-retiming-t530/full-admission/evidence/stage-scripts/rebind.py @@ -0,0 +1,59 @@ +"""rebind.py: rebind PR1319's T74 data (PLAN/SPEC) to new native provider directories with UNCHANGED interfaces (ports, +centres, widths), for discovery -> unpin -> freeze -> strict replay. Updates only provider-derived fields: +provider_registry..{actual_paid_profile, artifact_semantic_sha256, artifact_sha256, orientation_program_sha256}, +provider_calls[*].local_program_sha256, PLAN.profile (recomputed from the dispatch and the new local paid profiles plus the +unchanged idle remainder), and SPEC.data.plan_sha256 / SPEC.expected.global_profile. +usage: rebind.py PR1319_PKG_DIR GAUGE44_LOCAL EXTRA_LOCAL OUT_DATA_DIR (also writes PROFILE.json with the new global profile)""" +import collections, gzip, hashlib, json, shutil, sys +from pathlib import Path +pkg, loc_g, loc_e, out = map(Path, sys.argv[1:5]); sys.path.insert(0, str(pkg / 'code')) +from generated_identity import artifact_identities +def rd(p): return json.loads(gzip.decompress(p.read_bytes()) if p.suffix == '.gz' else p.read_bytes()) +def sha(p): return hashlib.sha256(p.read_bytes()).hexdigest() +out.mkdir(parents=True, exist_ok=False) +for n in ['PLAN.json', 'PROFILE.json', 'OWNERS.json.gz', 'DISPATCH.json', 'CONSTRUCTION.json', 'GLOBAL-TEMPLATE.json.gz']: shutil.copy2(pkg / n, out / n) +plan = rd(pkg / 'PLAN.json'); spec = rd(pkg / 'new/SPEC.json'); old_profile = dict(plan['profile']) # SPEC base = the frozen outer-refinement new/SPEC.json (rebound fields only are rewritten) +locs = {'gauge44': loc_g, 'extra': loc_e}; counts = collections.Counter(c['provider'] for c in plan['provider_calls']); changes = {} +for pid, d in locs.items(): + desc = plan['provider_registry'][pid]; word = rd(d / 'CANONICAL-WORD.json.gz'); checks = rd(d / 'LOCAL-CHECKS.json') + assert word['ports'] == desc['ports'] and word['centers'] == desc['centers'], pid + widths = [len(word['frames'][word['final'][r]]) - len(word['frames'][word['start'][r]]) for r in range(2 * 112, 2 * 112 + word['R'])] + if widths != desc['widths']: # width-changing rebind (borrowed words): helper count/widths come from the native word + assert len(widths) == word['R'], pid + desc['widths'] = widths + for c in plan['per_call_widths']: + if plan['provider_calls'][c['time']]['provider'] == pid: c['widths'] = widths + new = dict(actual_paid_profile={str(k): v for k, v in sorted({int(k): v for k, v in checks['forward']['paid_profile'].items()}.items())}, + artifact_semantic_sha256=artifact_identities(d), + artifact_sha256={name: sha(d / name) for name in desc['artifact_sha256']}, + orientation_program_sha256={o: checks[o]['sha256'] for o in ('backward', 'forward')}) + changes[pid] = {k: (desc.get(k), v) for k, v in new.items() if desc.get(k) != v} + desc.update(new) + for c in plan['provider_calls']: + if c['provider'] == pid: c['local_program_sha256'] = checks[c['orientation']]['sha256'] +prof = collections.Counter() +for pid, n in counts.items(): + for r, v in plan['provider_registry'][pid]['actual_paid_profile'].items(): prof[int(r)] += n * v +idle = {int(r): v for r, v in rd(pkg / 'CONSTRUCTION.json')['idle'].items()} # exact idle ranks of the shipped owner fill +for r, v in idle.items(): prof[r] += v +new_profile = {str(k): v for k, v in sorted(prof.items())} +# sanity: the recomputation reproduces the OLD profile from the OLD local profiles +oldp = collections.Counter() +for pid, n in counts.items(): + for r, v in rd(pkg / 'PLAN.json')['provider_registry'][pid]['actual_paid_profile'].items(): oldp[int(r)] += n * v +for r, v in idle.items(): oldp[r] += v +assert {str(k): v for k, v in oldp.items()} == {k: v for k, v in old_profile.items()}, 'profile recomputation rule mismatch' +plan['profile'] = new_profile +(out / 'PROFILE.json').write_text(json.dumps(new_profile, separators=(',', ':')) + '\n') +(out / 'PLAN.json').write_text(json.dumps(plan, indent=2) + '\n') +spec['data']['plan_sha256'] = sha(out / 'PLAN.json'); spec['data']['owners_sha256'] = sha(pkg / 'OWNERS.json.gz'); spec['expected']['global_profile'] = new_profile +roles = rd(pkg / 'OWNERS.json.gz'); R = len(next(iter(plan['provider_registry'].values()))['widths']) +spec['expected'].update(idle_remainder_profile={str(k): v for k, v in sorted(idle.items())}, idle_remainders=sum(idle.values()), hosted_residuals=len(roles), + cross_replica_helper_roles=sum(z['replica'] != z['owner_replica'] for z in roles), physical=spec['expected']['live'] + 8 + R + 2 + max(len(rd(d / 'CANONICAL-WORD.json.gz').get('zero_buffers', [])) for d in locs.values())) +for pid, desc in plan['provider_registry'].items(): spec['providers'].setdefault(pid, {})['inventory'] = {str(k): v for k, v in sorted(collections.Counter(desc['widths']).items())} +piv = {x['pivot'] for x in rd(pkg / spec['pivot_swap']['recipe'])['swaps']} # same expectation as code/witness.py spot_widths() +assert all(desc['widths'][h] == (9 if 2 * 112 + h in piv else 8) for desc in plan['provider_registry'].values() for h in spec['width_spot_helpers']), 'spot helper width pins' +(out / 'SPEC.json').write_text(json.dumps(spec, indent=2) + '\n') +json.dump(dict(provider_counts=counts, old_profile=old_profile, new_profile=new_profile, changed_fields={p: sorted(c) for p, c in changes.items()}, + new_paid={p: plan['provider_registry'][p]['actual_paid_profile'] for p in locs}), open(out / 'REBIND.json', 'w'), indent=1, sort_keys=True) +print('provider counts', dict(counts), '| new profile', new_profile, '| changed', {p: sorted(c) for p, c in changes.items()}) diff --git a/research/staged-release-retiming-t530/full-admission/evidence/stage-scripts/release.py b/research/staged-release-retiming-t530/full-admission/evidence/stage-scripts/release.py new file mode 100644 index 0000000000..19403b539c --- /dev/null +++ b/research/staged-release-retiming-t530/full-admission/evidence/stage-scripts/release.py @@ -0,0 +1,203 @@ +"""Release proof: PR1673 capped phase-cell fusion outer on this package's T74 supplier (PR1661 stack + pivot-554 kernel). + +Runs (1) the supplier's own unchanged verify.py (native replays reused from --native-cache when present), concurrently with +(2) outer/check_ledger.py + outer/independent_check.py (the 45-inequality ledger, 5 rejecting controls, endpoint rejection and the +independent balance derivation, regenerated in a temporary copy and compared byte-for-byte with the committed LEDGER.json / +INDEPENDENT.json) and outer/replay_evidence.py (PR1673's 19 supplier-independent exact evidence replays); +then binds the supplier's strict ASSEMBLY (complex endpoint, bit endpoint, profile) to the ledger inputs. +The receipt kappa is the ledger's kappa with the radix-distributed sparse-union schedule (new in pkg4, outer/UNION-SCHEDULE.md) and structured boundary solves (new in this package, outer/STRUCTURED-BOUNDARY.md: displacement-rank generator representations of the boundary blocks, O(r W log W) per right-hand-side column, tau_eff = 2 + 1e-64 in that earlier package; not used here); the unproven omega_C <= 9/4 premise is not used. +""" +import argparse, hashlib, json, os, shutil, subprocess, sys, tempfile, time +from fractions import Fraction +from pathlib import Path + +PACKAGE = Path(__file__).resolve().parent +os.environ['PYTHONINTMAXSTRDIGITS'] = '0' # the pinned endpoints, kappas and ledger values are decimal/rational strings of thousands of digits +sys.set_int_max_str_digits(0) + + +def digest(p): + return hashlib.sha256(p.read_bytes()).hexdigest() + + +def main(): + ap = argparse.ArgumentParser(description=__doc__) + ap.add_argument('--main', type=Path, required=True) + ap.add_argument('--work', type=Path, required=True) + ap.add_argument('--native-cache', type=Path) + ap.add_argument('--jobs', type=int, default=4) + a = ap.parse_args() + if sys.flags.optimize: + raise SystemExit('Full proof requires assertions enabled') + work = a.work.resolve() + work.mkdir(parents=True, exist_ok=False) + msha = digest(PACKAGE / 'MANIFEST.json') + t = time.monotonic() + opts = ['--audit-shards', str(max(1, a.jobs))] + (['--native-cache', str(a.native_cache.resolve())] if a.native_cache else []) + reused = {} + if a.native_cache: + for key, name in (('base', 'gauge44-word'), ('extra', 'extra-word')): + entry = a.native_cache.resolve() / digest(PACKAGE / 'vendor/pr1297' / (name + '.json.gz')) + if (entry / 'CACHE.json').is_file() and (entry / 'local/FULL-WORD.json.gz').is_file() and (entry / 'STEPS.json').is_file(): + opts += ['--%s-native-from' % key, str(entry)] + reused[key] = entry.name + if len(reused) == 2: + opts += ['--parent-receipt-cache', str(a.native_cache.resolve() / '_receipts')] + # Stale-bytecode isolation (PR2788, jeremydiviney): no .pyc/__pycache__ may exist in the package, and every child interpreter uses a fresh pycache prefix. + sys.path.insert(0, str(PACKAGE / 'code')) + import pyc_guard + pyc_guard.guard(PACKAGE) + pyc_guard.selftest() + os.environ['PYTHONPYCACHEPREFIX'] = str(work / 'pycache-prefix') + env = dict(os.environ, PYTHONDONTWRITEBYTECODE='1') + outer_log = (work / 'outer.log').open('w', encoding='utf-8') + outer_proc = subprocess.Popen([sys.executable, '-B', str(PACKAGE / 'outer/run_outer.py'), str(work / 'outer-tmp')], + stdin=subprocess.DEVNULL, stdout=outer_log, stderr=subprocess.STDOUT, env=env) + with (work / 'verify.log').open('w', encoding='utf-8') as out: + r = subprocess.run([sys.executable, '-B', str(PACKAGE / 'verify.py'), '--work', str(work / 'verify')] + opts, + stdin=subprocess.DEVNULL, stdout=out, stderr=subprocess.STDOUT) + if outer_proc.wait(): + raise SystemExit('outer checks failed: ' + (work / 'outer.log').read_text(encoding='utf-8', errors='replace')[-1500:]) + if r.returncode: + lines = (work / 'verify.log').read_text(encoding='utf-8', errors='replace').strip().splitlines() + raise SystemExit(f'verify failed rc={r.returncode}: {lines[-1] if lines else ""}') + res = json.loads((work / 'verify/RESULT.json').read_text(encoding='utf-8')) + claim = json.loads((PACKAGE / 'CLAIM.json').read_text(encoding='utf-8')) + if not res['status'].startswith('PASS_'): + raise SystemExit('package verify status ' + res['status']) + if Fraction(res['kappa_decimal']) != Fraction(claim['kappa_decimal']): + raise SystemExit(f"verified kappa {res['kappa_decimal']} != CLAIM {claim['kappa_decimal']}") + # ---- bind the supplier admission to the outer ledger inputs + asm = json.loads((work / 'verify/strict/ASSEMBLY.json').read_text(encoding='utf-8')) + spec = json.loads((PACKAGE / 'new/SPEC.json').read_text(encoding='utf-8')) + ledger = json.loads((PACKAGE / 'outer/LEDGER.json').read_text(encoding='utf-8')) + bj = json.loads((PACKAGE / 'outer/B.json').read_text(encoding='utf-8')) + if asm['status'] != 'PASS_GAUGE44_NATIVE_EXACT_GLOBAL_ASSEMBLY' or len(asm['outer']) != 47: + raise SystemExit('supplier strict assembly did not pass') + if Fraction(asm['complex_lower']) != Fraction(spec['expected']['complex_lower']) or not Fraction(bj['b']) < Fraction(asm['complex_lower']) < Fraction(bj['b_above_endpoint']): + raise SystemExit('ledger endpoint b is not bracketed by the admitted supplier complex endpoint') + if {int(k): v for k, v in asm['complex_profile'].items()} != {int(k): v for k, v in bj['profile'].items()} or Fraction(asm['bit_lower']) != Fraction('0.001733427039589844234749'): + raise SystemExit('ledger profile / bit endpoint differ from the admitted supplier assembly') + kappa_decimal = ledger['rows']['struct_boundary_radix_union']['kappa']['decimal'] + if Fraction(kappa_decimal) != Fraction(ledger['rows']['struct_boundary_radix_union']['kappa']['rational']) or Fraction(kappa_decimal) != Fraction(json.loads((PACKAGE / 'outer/OUTER-CLAIM.json').read_text(encoding='utf-8'))['kappa']): + raise SystemExit('ledger kappa != OUTER-CLAIM') + if Fraction(kappa_decimal) <= Fraction('0.001677160151714381'): + raise SystemExit('ledger kappa does not exceed PR1673') + if Fraction(kappa_decimal) <= Fraction('0.001677641731343354564251058287063644749065568493'): + raise SystemExit('ledger kappa does not exceed PR1699') + if Fraction(kappa_decimal) <= Fraction('0.0016783441717365385237811729563143950958709031230206606381509868512618172844657807114390339553440364'): + raise SystemExit('ledger kappa does not exceed the previous package (structured boundary, linear guard)') + if Fraction(kappa_decimal) <= Fraction('0.0016797547881500489087805478664999999999999999999999999999999998000000199999'): + raise SystemExit('ledger kappa does not exceed PR1786') + if Fraction(kappa_decimal) <= Fraction('0.0016797549561255445213356709939207025769983114385025802954603275201627999999999999999999999999979966404900867489109573286580121585'): + raise SystemExit('ledger kappa does not exceed PR1828') + if Fraction(kappa_decimal) <= Fraction('0.0016797549561255445213356709939207025769983114385025802954603275201628645482603256388263049999999997996640490086748910957328658012158594'): + raise SystemExit('ledger kappa does not exceed PR1839') + if Fraction(kappa_decimal) <= Fraction('0.0016797549561255445213356709939207025769983114385025802954603275201628645482603256388263056561328446322744513169085862209720704481201654121427713006366929567157349625273906229277148454180995537563371124755588139767841405530386745578819565618798006892541712197674874836946756930569827889227573192555649999999997996640490086748910957328658012158594'): + raise SystemExit('ledger kappa does not exceed PR1875') + if Fraction(kappa_decimal) <= Fraction('0.001679754956125544521335670993920702576998311438502580295460327520162864548260325638826305656132844632274451316908586220972070448120165412142771300636692956715734962527390622927714845418099553756337112475558813976784140553038674557881956561879800689254171219767487483694675693056982788922757319255565606685566411725238449650999339827075715283714270157705762309226038611771955655377501414652136546310799999999999999999997996640490086748910957328658012158594846'): + raise SystemExit('ledger kappa does not exceed PR1876') + if Fraction(kappa_decimal) <= Fraction('0.001679754956125544521335670993920702576998311438502580295460327520162864548260325638826305656132844632274451316908586220972070448120165412142771300636692956715734962527390622927714845418099553756337112475558813976784140553038674557881956561879800689254171219767487483694675693056982788922757319255565606685566411725238449650999339827075715283714270157705762309226038611771955655377501414652136546310881185746917580802513640545967852810801680966856133978576162943792322682482152988532923811998938861379689883167389728443314312230815059559906903773756886872476136837071871203030423643505345473735135533'): + raise SystemExit('ledger kappa does not exceed PR1897') + if Fraction(kappa_decimal) <= Fraction('0.001679745508802299051546533685199973672313473419790800679752457380932784242972585600630181672224983'): + raise SystemExit('ledger kappa does not exceed the previous package (gauge-free interiors, PR1758)') + if Fraction(kappa_decimal) <= Fraction('0.0016781238306335473083421558390362687182218966358657650331660405387910568682486186577879457360762643'): + raise SystemExit('ledger kappa does not exceed the previous package (rectangular k=5)') + if Fraction(kappa_decimal) <= Fraction('0.001677992607205282520732088774830808372222877897034109604209719298829805473412451530867883424937597'): + raise SystemExit('ledger kappa does not exceed the previous package (rectangular k=2)') + if Fraction(kappa_decimal) <= Fraction('0.0016778199023144364336310551358776001013829401215770658599799349282716974076737897457922714197448847'): + raise SystemExit('ledger kappa does not exceed the previous package (square boundary tau=2.372864)') + if Fraction(kappa_decimal) <= Fraction('0.0016776417313433545642517275958639984231708545722735432722117400060454625429077941422798526440584702'): + raise SystemExit('ledger kappa does not exceed the previous package (old union row)') + # PR2269 (this package's own 90-digit-endpoint predecessor): exact outer kappa + if Fraction(kappa_decimal) <= Fraction('0.0016962471390584742207696225394800943861284603706821716607210815258272261945561178592716719999999997996607505720883051558460754921039811'): + raise SystemExit('ledger kappa does not exceed PR2269') + # PR2265: its published 43-digit kappa + if Fraction(kappa_decimal) <= Fraction('0.0016834125885426074623303197403999369605037'): + raise SystemExit('ledger kappa does not exceed PR2265') + # the previous 1e-3000 fixed-grid-maximum package without the frame refit + if Fraction(kappa_decimal) <= Fraction('0.0016962471390584742207696225394800943861284603706821716607210815258272261945561178592716725376787146850319387830720495673160906619586385985253004200974538949035715460651846040948044242351804037917972203668759131442974306926788095523055348682603080830926543046109524019284266202449358819248039824128659652256009597225750921338791772522346327260842638280758491285261012177101751247814588199922615754428296427117543521452060897258700168878706575252152477061988688277049228862038051831802155042557172623266376692067754074066018861739445031053058532975745010650260626662153102779311231323276136828410015626012654950781671416272174286060026260461657234237896123847927833525865765270919579650629143257756554312491072906153370276441896408260328764564124330642285119147808930086141569295621851854218252564733837316294676373092948766021104018820867623171046683661092297248291577095250274060655173297958878033621645679452722665435213096247941313869533587196421382302143322934628990123191000788388609573672644835019755994246318060035281060223322645388928947169626138581457300875151159820924963147410503862327253442337658663568159699004958107894981576832335403664692406006933059590031689949815905089106171767594599700984735621368930563780702038882727505392721719386114334646038558353670081177427424360521812807826505397161210251724237709062744724805616548559632816270489581394531990712494078787486793971491473790864233960278289765655920963414849196322659136809511659945219008433168014265025447420166561704034530316921458618874915620099025502502618035097461895895223764605753492664274479247941026938492542179778796317704962018292021909919861292918602366755911657954379368017800183443534262330089328250652960096418423703035464940084343778512813829329581029347226356616738501436617600538369671094908540693286250261760877248005905559065855049093770979808303937056962048941085753495270703319891930887209058318724823718437728926974429367073432624131997567987115993164528269149849858078521203142762866174513268973487116932558183863464998283664642818679918224691979365372184748788493010550047368581279373073912036778334443492857927577286206252250817438195734298252518895370754124356495069959100552751704357607410115438146261739773032451457910141843649185347442684032256783823682283095281962476486777479624246578178585460914644633119591516245821764820377869654594359836428035991519960602392276985209925181526794428648224235182876264483709972370910406024724235806573365230168960701547640481777654852632561016384940077669718531691663918817962517445077811778410121692781099290921788135421040816814884933097268321380716162541362023853790195929790454122099814729604396862433157569138302781321102658775072569805525878616035680869031990224830742282562628026822259745461025473632267405693042132745262647696903701549047243949928334048586480294363233950866830966312211937319379776455575978516623582930772197819418024026409253019530180915180162077226543806380451730024060862435857727097812643685954248405246979875007274554000293999879999999999999999999998999999999999999999999999'): + raise SystemExit('ledger kappa does not exceed the previous package without the frame refit') + # the frame-refit package (PR2288) without the pivot-518 and 506 kernel(s) + if Fraction(kappa_decimal) <= Fraction('0.0016963109504150503355459722948928372280921721968724561762220421147644145761482885984967571578775454795315558417113412813231694622783490900348662681729592231903560853351255426786420763663178655003281505857286229869637466044243361588921779343716397967014438707898921127328975611256954437224641356898964339750713275612215896309041743033060768412139515368921536567057807207970466805003234862027817806690888390640784312394449662495210379111189000631731969913840405376781346897986214021741117422083725271871234401300183440304871341727820180574990353647279025142496867177789206624424997571530449519473352459498702658190828360923979498460128294798369917738404595397076263670723799359146613908833280073309651683729500428984791690934381229160893705326133037686127780198339018446754315723841737409963499522556148454109950498516960459062732145158464860520078222748772968666075308688060102095614219976567632142437588956251046223730866088862642016182480104196556736296484779283894121049643477734969019861544809837984636249407062760727016150066849286523322382074826026591803191556133160894153871744448522032246500691186272893727169459533826781329045410280180988227028953413948959627749435199294031602259974218679241756389094310293571776392665275440060128416069298336060934137683594749721875539100961984531705428740926745070478347051156564464735857576131568055392439349070688880983269683785203701743772494006377580873498989793098269416860245163673122355107078009192943296623200063923837978979726391155585227314506166287746919098802987376988749553428565117960680127117162859295585227836619358244831230559141562987941014958985682702824249440221289383909203561727045338247733043391763320670727494268068194378574627275095092953256732444212010516159194168180734821980726368427670070083408548719514533875518211958369469443610189017971552955689302325989684135168369391344574216178885288117746332765863840834323243319512183818941784295388396142410597918436552038064272557102280593496223131576927738593912346466653541945307822699814228743982825778594943895299684477718445989153104502257728995186791911138506213294032637402557360080474323425209358316182406158317687799224345569293433266156429509667100484719547899661170517984309861756776927699226774589333862417619615368800621280904731717007166601114931265538945746290456987826198646807505442125838746726438952084536942026710073899593382686159240597649780928138606355205051150505411617909421597379489564148134928926452171026914761461651993691541524538533834516264821822447885276530775319313163077520187620131998416989866100917322207904174653603539624514404731819512306251114049648504295075390277206769978284985627399920781440314570024036501328001706131508141398741768215146098232034243920786833682457710615638883903735636031855214906341242985023985190321962818946356673366984195534290058577773793515114601500926048296812708989110472867763853176364841468154926700424141264878832861923854082418142072303154196136904410704478768982906491915123250789901966397050583475894251697949999999999999999999998999999999999999999999999'): + raise SystemExit('ledger kappa does not exceed PR2288') + # PR2309 (Dugongue), the leader when this package was produced: exact outer kappa from its OUTER-CLAIM.json + if Fraction(kappa_decimal) <= Fraction('0.00169651512427273361603599999999979966069697504545327679280000000004'): + raise SystemExit('ledger kappa does not exceed PR2309') + # the previous package of this series (PR2302: same borrowed words without the width exchange) + if Fraction(kappa_decimal) <= Fraction('0.0016963957667360813401512017553615279117657068999363362106179646359054125313327703641011221779442459539871339461089219553691969977981401822760624794359560302229082314375995113942636590530620500782018194470671677119219839790494868307385847339452290887998700500411938799170674858093003286928048347274196039389000026290158196870872057257166500256835682013163283959997146169413950711966027087759767643419344712853576886783980615153279853404871016920071981553436279223622600525528471894700346011238233160868742145859860232058840791090764650133979481731323862930667518610044720573929298900532647950009058229587419786329958635690641780883137293844634272967192129687625408058060979531066936687993586039456039983556398478876965232482500625906736777109730724363281837955848614134083855809276505907144514733003845909331244045116980160376226985173142007628755093785143804942105479013303454321654201006831063585897430195472621578837899364607899809076894338902922137189579253839575904800502610823779130735405603222473104747840629391300795787215163295589140558844477425029302996689344654557359518706574870692938432544394742080506599997481540301232455817253619818598089752894860335888890891880609355298270585656725967316985275280947993338075572101492385630908482865327189235020782479107222108858033635848484476216327745019864086458153496328944574382125376897016725855331581938687114469271253756940030142844034371034587111817349355531104318277478257775334736701581945229498694136616722992028634631701247483684781250376596144385321278165606853375118819053849117338897262268427648262083455985839725633062313154695107759038550706454041941335604443412998733314092411840156288419954892739877843363834586046209819538672727213101410080383088045149018402130819728297511733105868594243532422336753902918788806466274681744246646231919140342567931214862038137091588934018251621114223684759626831339521740017781252613474170420781940878405217534505039416191481935402640036986540158535291068418753431261769460339726043941330310230377899497156447379116998376192778609260328368073641708331187025338628941230659019886492604497357183156893789943392609707575190186729444486788239744694366996859954082129202977358652316001835628949595287583151561304797052473367226958069794800493678276862560358912337464359182323531306401167100839378883760333513912116046596297577086537173884239225402145910324209403865332661419916572372514397914176245034825502665354589686225181030312038801291955465396008078308395064856427920952835111772605746736316974495455631547761742048841271657420320301289128193817983624681549963224888472167699611833879336569131555833595853052201499353493629265799166715221065545501398338697081697219199223693278872441290995511120223269123632695643837629348428447025464796370314880913595117416482942440311412104992815244674930680260974933325676734432766624185506445208555388434881647973303483680217436986110622497014745484207497834185076498923378325028164419862694022665993974610131397860814963409376069481211236799567291945371869999999999999999999998999999999999999999999999'): + raise SystemExit('ledger kappa does not exceed the previous package without the width exchange') + # PR2530 (zxv): exact kappa from its CLAIM.json kappa_decimal + if Fraction(kappa_decimal) <= Fraction('0.0017137379215475043467519999999999999999999998999999999999999999999999'): + raise SystemExit('ledger kappa does not exceed PR2530') + # our previous package (PR2530 words with the evacuated fill, no swap): exact kappa + if Fraction(kappa_decimal) <= Fraction('0.0017138793200090178277393159658224882741850018276313377388777989344499779848036755735428839404883345081602076596915372935445163549257843677134573070543785050332601116981993891257639919589050864224223081575002103470378121326336831573484387001971572673042430972264354343382445827018882480440150722134038654543514447040832086957753875948539795365986241603529249689022001469858539534077287984416852359032562142401296793489217750140041453361184825029008761489635682924036629010469046401692181463930065388198942359871821152988851590217230520445064090958372121169090974065699524460063735965152873157133691147904439546166602128335035227799311591048209869927896976392833606241651343837175036609754247898480938989923023026340729844763056096052891175627877787262609452046399579466119092866313036535335682776806467648155922323786896091802483647985050566213804836809233317388799083677377866787383160162429778257908983024618109489694227409456421456553821912409696075009897306969145639343554354294862224440345868807439480436522182454940263568552784110654861453895664733986933358400123432858311482018590531702871810773114656503043158537780455279474868026048789004691174934486731419756746078311076528526320047247891238854597833295812499048350762168712006615674155474538738266039000865183914404795542264510066849653250910062386485914981385408502826475933413003183371865127611213925081091620176820895595774203463534988723189732383296420699228344003259363802319950945737703013570881767452324590219600387226386787048764627579542456462764844609489763920522188359153280015992268875949796304927401654770271220367238478108613075320623080494495855320771028930323871101017186861279132677049043646070329989481696629395030949354561093038394667780737914876393297052666585239534669737633956610661828075015769008377319021277895520032135021829427065947060170567563924839546050173598426499186711026203297983373628996988586527888359978799700950685830527637466469741991953945143829950743519568663923237325147079615749220203441333884492689989831739159556848913207186854641193990869836716532585341620797475557979337046510007188184034485707803071651275961652448954489297978320254470661983316896742078889495926093977121191215505667552123475407376054942432134130965183580749237595795249612033007995019964320077937956267567317383001969322296889609589300659039114771172708530832143967950515442779669349644619739545138073128324507431264059303279325718069826798637589643803270292223723298849691999630063205858147500767567267152827749768037494607466986996767341068595192611238975735415563540363309761253620740101360043545213109647086260932301614471027335524945466703881224630958399194747296073610167994149180303313893618957485405280582230721498163633952081089076890135405434297265673746101998657294284004782174978381087995631064709016813402351965928946324429653664710622253413105177832288302918850616410129494149251215937071973528625923760868330603512797460185151283124933050024548482871563020543139117414365613534429413233278250150299395695308669999999999999999999998999999999999999999999999'): + raise SystemExit('ledger kappa does not exceed the previous package (no swap)') + # PR2571 (rohanarun): exact kappa_decimal from its research/source-partner-repack/CLAIM.json + if Fraction(kappa_decimal) <= Fraction('0.0017137844912361143131449999999999999999999998999999999999999999999999'): + raise SystemExit('ledger kappa does not exceed PR2571') + # PR2436 (tekuuu): exact kappa + if Fraction(kappa_decimal) <= Fraction('0.001699160892139825160028'): + raise SystemExit('ledger kappa does not exceed PR2436') + # PR2435 (our previous package): exact kappa + if Fraction(kappa_decimal) <= Fraction('0.0016985113436976293290517338141877446308055110967045933112789142962230829468162898341951791806612097103089373234971683843352747786930041151727362819565230218349121075974166971824969591011217978263772357971645637990906671947907264145608572312831884027994294129916401260085150019209771313354764916248453595083165495324143523894449450691307086112491644144865158608055855884464187565801019555715970196050475190435909515154211111746650599567224499059795061082684332558375704345494867609328212726505329205932635761431749934820741127389044354860113766948092316247723704125119645275990197876854879992017397555143192287544724913630217464784503656948990786068598407873145289054550742625443908707733418270092545559085087575922813686919128943056715534713410017028659255187727620917187403119881890253391323975990386407713427526885644658486243444047073202627454384564726751561652433479720829616046376359016291378111084223539218953623912571977915965711868344311448096041639498896249066806011480337926979336386922535296303752711889978569232419801794934322834391758343224495751526935421536033765421920712479882326684183343175192506299338548272335365486251925033343467210567293885905433780822999898604806238618868381030618734960564543625151176983437948634467084422228827374831795369936288472513373544493094900054747070753455699633326414320913460348479500983823174310013199097862135411812726539849723398231855832967776337718672217880238071981788235029509052279747189188681017572483164064571080246530954181586740864619167589362678617045511756037366397896287535580824234872210152899236988326941025506999808922548377766309470729712387648163405540888355093150391393147762868679282467450248868441271263534493578828020033697285447763448133926166569487422405222986476700516751666801177807240657564339291923875269516741832922888995392021815208206000349549288250522070993210698907902608614026748746226358646184865889780191165888384651919903384475762221811266201306458084323514041511509641989786115752760407119009860442439632421403230395972475348378156789079511896489813648834249547691849265251849667444226323872984574855719511144598417008957627888727054559888291831917098918028329850588422718093434809471730512569958638862082155535047678827813738782160371366678147328051204025977598523823201157893310362964269992621082595013887883317116160638083051854550265075133554450400672096216801889893843542349827136660836690734577713840538485494706157608832285361332402523141110775007848457158586364555932568759681602669482751949814440768908964969207479429539605772323917098643373158579016561519795798882730005614360958024497845667634552553552983588304002856198810822137614346744361151657633282342263919735927514970826742259413534781096542529517187951831272379701715213763298528196318890985268220654521387901862300533678359917037097369847001136323652610917811136723698294245291973870628779153244079459318485933533570876673919779617623307381536963771175021281784418966086504076951993546379032710653964402197313385999437909265508362772441799999999999999999999998999999999999999999999999'): + raise SystemExit('ledger kappa does not exceed PR2435') + # PR2374 (our previous package): exact kappa + if Fraction(kappa_decimal) <= Fraction('0.0016971949509017704265940818773095411997829254474375229705809997635438062942204765954562383974077821671831369565342135210662806080984189437744311691170166878200706637656120224415299737717701337307539464110268836203281111987753159498203954701705205852698182995035958027658044607115822574508666985181699711923175134847560718669920281030992600965545441954035328408493723703194682661214225479411060097662633754661550995525106462258180812881394912204830656550720788554855150041136725936752258040654282493873524814048951275613529361946942930756606941674074477881485086387253593916040344556969145236818327248309098647296974311830069674219033678569504586581135358848081070141238752991674150396577553602390245098256623610206219873018910702970683481898704791312128544927797796263798965928185946464208453538038074130191248384897942236565804073051820886237792115045300205866675310844866731650898744658240052151403474629612369248407339925817250755774230849162429893816537967019801563891871154347775301101452039034203590012030571830828102063480584807251100111533885801953898940545829732671930912393072557857172603412452229175719796953206694288737814097206799032728139418329449617047277996553941167768501692770450270903073953001977679531560526318261641545560089674289210949739800895987320710205405144779108114410801410863004777930712359085672774857562943038447218083992439662882844810916772482599422378373397511127617771820574570321893388248531869294501515231655597646378900151261952601403678797872447106754637862547429677096069631147251860052756420659326128494026586838106695013238864030608401406156607559989211808454412638637175211030555454020488650023294167520672980980396370514923547443975614840890626840642981934129785156305249800680496635934963165026962087272991982852425076410102938295280642112519009725151518793502417899440161288959425552435156339988887994241563680501591034798080807680420907177078719219475936443453591733013776785983706296335551856437598080747432920929336409488151175919768679340727810125057537659035408133643666970582481765189938136267947101008867469846414911701653627941553461882443557617407944704412052768481182211920226323727462445103056307935153715081554046115943894672966439801441223675986168815297036589266986545180924888304377614106150893981516595103244696808698485755403663575692962132048959618919396672463657258697165154476184606747977244468238112487890243300215295911516769877096033023277755679579119616362363771146906851312883551325577910752948791145027867851031285296278290624616792326245346316955108929449453650392187829083153563766593182662271262370655984316122305681275693367071550045835867673591141005622801963302635483892372821569656326071183032535073704098039743172546777387752768217496897183134894138727088377616522650102507208838965437331059647644187138589104298496147389776807118532428525203523839384398259710922706840602678791436521874179119410390463568320091540786380546514858693482059552649347514416855482639636114585292794893763151788378014165475136659461413021709999999999999999999998999999999999999999999999'): + raise SystemExit('ledger kappa does not exceed PR2374') + # PR2363 (mason-hale): exact claimed kappa + if Fraction(kappa_decimal) <= Fraction('0.001697147064845350'): + raise SystemExit('ledger kappa does not exceed PR2363') + # PR2322 (Vlado Vojdanovski): stated kappa 0.001697060296258836 (1697060296258836/10^18) and the upper bracket of its native endpoint + if Fraction(kappa_decimal) <= Fraction('0.0016970602962588368950279736213908681183'): + raise SystemExit('ledger kappa does not exceed PR2322') + # PR2588: exact kappa + if Fraction(kappa_decimal) <= Fraction('0.0017142520392602451425351562259099656664344954373283308057225381981747562918061584999947561271124347686149558922108259494962534008930178575454133344862965601444172448331817152909766535112350708396928034441496871589713722575642506593412194794093575215326475625862439862175485535192485846059948632157105700869610795316500696247041824549885043526850412669441427740223730510517106191036541515810277226760681285811597004525917025031294007539732680314931686823171332211823282945239145205539721434651612050340581904232072561787095451293647899747540565463039808817184375271124592995766320237487820150010351277952099669162323267814619484819200315019911819091959999102657515505743819070010860672786565869109554832488031261334627499859493067849719077384885683033508260673984426700487660141214070225024894125232965845799661985539549847752461342172075646358338997453999288053000870497362760554381696697559133522856331801156646764525400539905340083758377929219827625380610057781487820821153448475385456799775382491514332736278655517522245329247263904596950776220980841805647952361535073719003157669640166693563466336815584519569810166511233264775205298632073076591451322372399999932369033904582035223410891524967205366234071383787219133164546315393239183818212307692995348435520398110005153430241887453343698646683271418734060091347040390456896142756143404386772216380704460366762755346337789906988466769974334711756339583937072621281296515518137951279458035968043755162367096330489177199370336093741395702690118092853200339791089791539032324817414888688781047182611324584582279916507607603683633460063962260109142936483039472011289743848580404445260351106444824458226423661897715297239393027939493242320955426198133601143645144070064073639933353974680604733068250031880911548549706199846207296069928696737309533371014168058754951811832295923513035374099881688243096526277292236890002388720709719158033023774073285846627771534726540103118668507295515605586205236016558176536393654414873191837922077367280957373153021556794154858562911961622539935196645728280666794496793070971823976465041173986748576532128413546720628060291475675470318602031900109561615265527973645747625798002311701903276616609332536708138849321371734306833508405333500117302670393361198251737269272732630795992200554211220244271419343563457390640311082668614170624080072295459234096049682185671202285453274140611688611730629671522699192434380356216674162550908702958080720859592831370976796243013789725750621736728357882717905941026190676496976765717982858759328564664729815198515864807758674700087456768561551484526092627733646122071138836057111007614820893117430832928217406368343840328483713773591907538062309195075401781133054022005465946906253474970706352348849924590842041842207238838697575396324108643421972631975393020597662234530109461046990303616133913438500827840442653674795648233352671879634300064195664716077491094816328554594096949401066084188934653885251272157233742246081515816462277045893076727873354607812239505000220820255049999999999999999999998999999999999999999999999'): + raise SystemExit('ledger kappa does not exceed PR2588') + # PR2575: exact kappa + if Fraction(kappa_decimal) <= Fraction('0.0017138793200090178277393159658224882741850018276313377388777989344499779848036755735428839404883345081602076596915372935445163549257843677134573070543785050332601116981993891257639919589050864224223081575002103470378121326336831573484387001971572673042430972264354343382445827018882480440150722134038654543514447040832086957753875948539795365986241603529249689022001469858539534077287984416852359032562142401296793489217750140041453361184825029008761489635682924036629010469046401692181463930065388198942359871821152988851590217230520445064090958372121169090974065699524460063735965152873157133691147904439546166602128335035227799311591048209869927896976392833606241651343837175036609754247898480938989923023026340729844763056096052891175627877787262609452046399579466119092866313036535335682776806467648155922323786896091802483647985050566213804836809233317388799083677377866787383160162429778257908983024618109489694227409456421456553821912409696075009897306969145639343554354294862224440345868807439480436522182454940263568552784110654861453895664733986933358400123432858311482018590531702871810773114656503043158537780455279474868026048789004691174934486731419756746078311076528526320047247891238854597833295812499048350762168712006615674155474538738266039000865183914404795542264510066849653250910062386485914981385408502826475933413003183371865127611213925081091620176820895595774203463534988723189732383296420699228344003259363802319950945737703013570881767452324590219600387226386787048764627579542456462764844609489763920522188359153280015992268875949796304927401654770271220367238478108613075320623080494495855320771028930323871101017186861279132677049043646070329989481696629395030949354561093038394667780737914876393297052666585239534669737633956610661828075015769008377319021277895520032135021829427065947060170567563924839546050173598426499186711026203297983373628996988586527888359978799700950685830527637466469741991953945143829950743519568663923237325147079615749220203441333884492689989831739159556848913207186854641193990869836716532585341620797475557979337046510007188184034485707803071651275961652448954489297978320254470661983316896742078889495926093977121191215505667552123475407376054942432134130965183580749237595795249612033007995019964320077937956267567317383001969322296889609589300659039114771172708530832143967950515442779669349644619739545138073128324507431264059303279325718069826798637589643803270292223723298849691999630063205858147500767567267152827749768037494607466986996767341068595192611238975735415563540363309761253620740101360043545213109647086260932301614471027335524945466703881224630958399194747296073610167994149180303313893618957485405280582230721498163633952081089076890135405434297265673746101998657294284004782174978381087995631064709016813402351965928946324429653664710622253413105177832288302918850616410129494149251215937071973528625923760868330603512797460185151283124933050024548482871563020543139117414365613534429413233278250150299395695308669999999999999999999998999999999999999999999999'): + raise SystemExit('ledger kappa does not exceed PR2575') + # PR2751: exact kappa_decimal from its claim + if Fraction(kappa_decimal) <= Fraction('0.0017171415863484263381089999999999999999999998999999999999999999999999'): + raise SystemExit('ledger kappa does not exceed PR2751') + # PR2766: exact kappa_decimal from its claim + if Fraction(kappa_decimal) <= Fraction('0.0017172569734670023082699999999999999999999998999999999999999999999999'): + raise SystemExit('ledger kappa does not exceed PR2766') + # PR2767: exact kappa_decimal from its claim + if Fraction(kappa_decimal) <= Fraction('0.0017172569734670023082709447969069152126118769780965028281008777096022519916744024507755781541393565107541777345616367652506197068005633337706659261256966375316821124413350346601705176280553912235149970753181426298001293678362122690855686275720239412792316093597276141944155457489339446224311536862711549926054504931270560356314999015644110485022254405640527426463064952462185589768355732358008424134781124147412002557999341130922954560743011637806547436549181955782473753496979703362588896807515818466546937711049279980942794048991491326287505803399514341852820837943067785939680385921588672688420201433278727269345703864690376991542653902864701881652568311532870078191785893592410790571289085509481502003170258982906991486560315611931860697467696290292055253082068400551006212099824229936930413663128901131121759917302246165771388714185911541104549988804338712295071202096399100335791126922173037775327463059771433440926266880163896249389966745756271553563709591781001439768394342152913377499665536820868707787226505884376108228421715755450623096661691184454221995927505823408578749208545463740410015863275806178269842001719301762674785169518465683571440572993799589490631487105886295095493149586094319859314875095378861401422556789940186941047005736880403188010645106677026296918442629431903843644855362525736842630354486796094857852734997386028457768569824115555112581868166739336167277381787859006062432028767244521059628397246359398320786429319939420672411083838467729316208932075333803830898035322664949004091568509869438186415465161733566756555736356233923851918780823353640473134174987172652099048421354257100239255942629158502164301318171598492065833037847549681946684768605491450323194076412999983215955509460578326463064191168457600338240713840193411472575547950797115245206022145794895788468041089449169787357317266308048623204566140235628233017090878916323527128156264726328354041412616033952419944700431126936863322584716859502347695311920748466005526768515925854102406706307520896865670601578650767111842955685088409462542848610347972939615154323284480230135034841876444061631325858729157683020840589884429004551623552818746676680914576485067803186939296066606405395766033283905684054983159064863223300983125666776604195695852034071159764621179219686754472092896427897404874394357914200560727383691925322278679456774883229095577135736844500900384756502718708923562610023580899942766723533449198010932258174758894762374984951419979309148647906675840732792544402297243181446952503231023897790927353688424025440209475595384587082902426402767980019136142593982138839226181846487690619361976037727824614860473865262796331567734540250992369604076843182445798287538318092729802017130103545991079143478304625081199840311512857747798081094366427632011938791580334466991754850298586038018016640436196908298039209188887977906075656186932051633274060946735331678245512576959516444591775914847982031747835727960828045213036341689251316473265483110696205040246018249882524641792097396874190897482609999999999999999999998999999999999999999999999'): + raise SystemExit('ledger kappa does not exceed PR2767') + # PR2802: exact kappa_decimal from its claim + if Fraction(kappa_decimal) <= Fraction('0.0017177949841186346638269999999999999999999998999999999999999999999999'): + raise SystemExit('ledger kappa does not exceed PR2802') + # PR2818: exact kappa_decimal from its claim + if Fraction(kappa_decimal) <= Fraction('0.0017177949841186346638272299184281789040885843854623122009009272567619811451693128959233927619586069928722704582863584186086707310535394138626926710629820889033848049602292064935012319711733257433358230465812920895415475031660711346220961679911613825710704958000867504103971494992119087046562042876559213675515203237127088112088427885595141419686934510191208342840674573423182801330783403919437936058720919920108906265959816656455048496316720030774333519468932548694829399230373287537901102420346759524477101633385635510471780962236695200107186884715759473934852366750305844187213730888432237688884656783638517088815127041335422566053263046139117681735490283197323428036941873466898492867640174140203754253880380259133474587978567954061014535280911008076768807932789614315183546684808185874225108148730976091221047166772451654879788745793565162071625194022849877585436190136375921694139193740542335276060128357375558021449083900197016043788433227393073509549863324724556568148945510979578864605531361362729378133297430330915121749734288536944575539972520172159321070805847754311668480251773562441089008186316121880554425502110019758570839986239397554065839346381095524688851679911464103650074950984202579105230295548942225016711755740249390145623141818375010326796806534460989476041815626555830186783586397114318234459795840553998725845598598978382204059158067583964913964319658478679381552684575892831928104465845573357348966658397831187818481438394060569135266969917549451866054730281756994407408227206605351959243923844123308865651371682863192475317598176868811945604104660414533095486319889696688286612291332068492568471207782946972113284118690391186110032262967227248040037701209405392407896239329317407783117646126175897625603072767796314981489983368571140491137098030268691445121838711653887757337262240831742275738818465378080971065296829519361544581075154111402963174974941320886809257462198157026865873404637363591400136805811943866860507723438884239219572763817004492760951420675536206600179461818149841610014254585066042148880756169807599598879187009536438634900647877351551166768977025347563607013874015470790684615655514936424824255857694225231305352973328782500843387842037123324908784232857216083686795953816640969656805552868895140417028319084583621515426004154642617336021199242329428213161651612282007325789961367126884210336939174936137086973193085518026673436544345546381318884153511592449392486335079136623514220762610196754287420133726755777914823957170518604805139157563099172723331320942628842675870487772293883797094764987398989876042310158848431983084786115690815673186904154155972472570165803789288603236223277216867991331902648275745106999611914327707526655658766726312099222797771523435376183565614807764068904026405037419957025998847632186742539714637437306587086296371308889655921863155787187634483878254934950732428117907330107260791871692212963442401733062211167387870358203867505050996702552158757356247175280572779093767235204928189098610970605273560236102506430609999999999999999999998999999999999999999999999'): + raise SystemExit('ledger kappa does not exceed PR2818') + # PR2824: exact kappa_decimal from its claim + if Fraction(kappa_decimal) <= Fraction('0.0017177951600320121074069999999999999999999998999999999999999999999999'): + raise SystemExit('ledger kappa does not exceed PR2824') + # PR2696: exact kappa_decimal from its claim + if Fraction(kappa_decimal) <= Fraction('0.001715599770234969498857'): + raise SystemExit('ledger kappa does not exceed PR2696') + # PR2733: exact kappa_decimal from its claim + if Fraction(kappa_decimal) <= Fraction('0.0017161404259974415161889999999999999999999998999999999999999999999999'): + raise SystemExit('ledger kappa does not exceed PR2733') + _c = Fraction(spec['expected']['complex_lower']) + if Fraction(kappa_decimal) != _c - Fraction(1, 10 ** (spec['outer_refinement']['endpoint_digits'] + 46)) - Fraction(1, 10 ** (spec['outer_refinement']['endpoint_digits'] + 22)): + raise SystemExit('ledger kappa is not the fixed-grid maximum C - 1/F - B') + if digest(PACKAGE / 'MANIFEST.json') != msha: + raise SystemExit('Package manifest changed during verification') + proof = ("Supplier: the package's own unchanged `verify.py` (retained PR1297 provider and parent admission, owner reconstruction, " + "parent lift, strict T74 admission, geometry controls): " + f"`{res['status']}`, native reuse {reused or 'none (fresh replays)'}; its complex endpoint " + f"{asm['complex_lower'][:30]}... brackets the ledger's b = {bj['b']}. Outer (PR1673 capped phase-cell fusion): " + "regenerated exact ledger (63 strict inequalities: the 62 retained rows plus the explicit main-binding row gaussian_above_main, the fixed-grid maximum kappa = C - 1/F - B asserted, 17 rejecting controls incl. the old g-factor union row, the old linear and old-theta chirp guards, the old 2*beta tag test, epsilon at 1 or at the r0 slack and beta outside its window, larger endpoint rejected by the native moment), " + "independent balance derivation, the exact union-schedule simulation, the (retained, not used for kappa) structured-boundary displacement-rank check, the gauge-free identity/symbol/circuit checks, PR1786's finite prime/underflow controls and 19 exact evidence replays all pass. " + f"Conditional kappa {kappa_decimal} (union schedule outer/UNION-SCHEDULE.md; explicit Strassen boundary tau=45/16 (the structured boundary of outer/STRUCTURED-BOUNDARY.md is not used); gauge-free interiors outer/GAUGEFREE-INTERIORS.md; fine source-prime padding PR1786 at the free point epsilon=1-(1025/1024)e-{spec['outer_refinement']['endpoint_digits']+80}, outer/FINE-PADDING-COMPOSITION.md; fixed-grid maximum of PR2180/PR2161 (dataisfire), outer/PROOF-GRID-MAX.md; exact-integer coarse exponential PR2168/PR2184 (dataisfire) at the one {spec['outer_refinement']['endpoint_digits']}-digit rejection call).") + (work / 'RELEASE-RECEIPT.json').write_text(json.dumps(dict( + status='PASS_RELEASE', kappa_decimal=kappa_decimal, manifest_sha256=msha, proof=proof, + seconds=round(time.monotonic() - t, 2)), indent=2) + '\n', encoding='utf-8') + print('PASS_RELEASE', kappa_decimal, flush=True) + + +if __name__ == '__main__': + main() diff --git a/research/staged-release-retiming-t530/full-admission/evidence/strict-logs/admission.log b/research/staged-release-retiming-t530/full-admission/evidence/strict-logs/admission.log new file mode 100644 index 0000000000..050ce02918 --- /dev/null +++ b/research/staged-release-retiming-t530/full-admission/evidence/strict-logs/admission.log @@ -0,0 +1 @@ +PASS_EXACT_MIXED_048_ALLCOLD_NATIVE_ASSEMBLY_ADMISSION_NEGATIVE_CONTROLS 139 diff --git a/research/staged-release-retiming-t530/full-admission/evidence/strict-logs/assembly.log b/research/staged-release-retiming-t530/full-admission/evidence/strict-logs/assembly.log new file mode 100644 index 0000000000..e9602b3333 --- /dev/null +++ b/research/staged-release-retiming-t530/full-admission/evidence/strict-logs/assembly.log @@ -0,0 +1 @@ +PASS_GAUGE44_NATIVE_EXACT_GLOBAL_ASSEMBLY 0.001727405299371541 diff --git a/research/staged-release-retiming-t530/full-admission/evidence/strict-logs/audit.log b/research/staged-release-retiming-t530/full-admission/evidence/strict-logs/audit.log new file mode 100644 index 0000000000..dcdb880deb --- /dev/null +++ b/research/staged-release-retiming-t530/full-admission/evidence/strict-logs/audit.log @@ -0,0 +1,104 @@ +{ + "status": "PASS_INDEPENDENT_ASYNC_WHOLE_OWNER_CONTROLLER_PHASES_AND_SPECTATORS", + "template_sha256": "6182ee1ccf2232c9cb4cad3a5b101a576de02c7e8d68289f166d786d962c8cc5", + "complex_template_sha256": "6182ee1ccf2232c9cb4cad3a5b101a576de02c7e8d68289f166d786d962c8cc5", + "complex_live": 474880, + "complex_profile": { + "1": 11747920, + "2": 3453480, + "3": 1112042, + "4": 486540, + "5": 103690, + "8": 38160, + "48": 202828 + }, + "complex_hosted_residuals": 1946160, + "physical": 475389, + "rank_mass": 34496640, + "deficit": 169600, + "entering_helper_roles": 930150, + "cross_replica_helper_roles": 1921602, + "one_owner_per_complete_invocation": true, + "helper_busy_family_window_checks": 1946160, + "complete_invocations": 4770, + "actual_orthogonal_73column_maps": 8735, + "actual_sigma_stream_sha256": "bb7c0bd44c6bad0f40217963c7095402865e3b5c7dc3aabf6cab610449de15fd", + "all_actual_residual_and_spectator_charts": true, + "idle_remainders": 368570, + "mutations_rejected": [ + "alias two whole owners", + "helper on active data family", + "owner in private namespace", + "wrong residual width", + "wrong spectator coordinate", + "omit idle remainder", + "omit private zero buffers", + "private buffer aliases data", + "pooled slots exchange invocation time (equal widths)", + "pooled slot time shifted", + "understate physical reserve", + "extra: wrong provider at its invocation", + "extra: stale per-call local program hash", + "extra: stale serialized provider program", + "extra: unbound residual adapter hash", + "extra: wrong per-call residual width", + "extra: wrong sweep provider", + "extra: entering helper width silently restored to nine", + "gauge44: wrong provider at its invocation", + "gauge44: stale per-call local program hash", + "gauge44: stale serialized provider program", + "gauge44: unbound residual adapter hash", + "gauge44: wrong per-call residual width", + "gauge44: wrong sweep provider", + "gauge44: entering helper width silently restored to nine" + ], + "mutation_controls_run": true, + "provider_phase_semantic_sha256": { + "extra": "098348d85c8edc579110244f887a7d79af48c4a11bfd4eeacd71993492b7e03a", + "gauge44": "13e8df8b34f2821967845d6d4a383d9b05186df693af0fe09df1410685a7429c" + }, + "provider_artifact_semantic_sha256": { + "extra": { + "CANONICAL-WORD.json.gz": "1a0bf1ab1ba8c04a403b4adc4e6ad8600f7a694ae6cb8e80a44b70dd00cfb7b8", + "LOCAL-PROGRAMS.json.gz": "3a56a06b63794f96904168d00792521c9475a6155e88bf5228bea35256d547e3", + "LOCAL-CHECKS.json": "f8c9fc2e524c404ed6bd33a51c571f72ce6ba0a40a2d8957f6197b1b952b653c", + "INDEPENDENT-LOCAL-REPLAY.json": "6461afcce77f511a1435e4cddae859f4a04967f9b8d8e56d0aeaa6b6b6ffcc97", + "CLIFFORD-RECIPES.json": "c406b59021d2560f5405da13fd58e31620445ec3c89c221cc428a98260ccb47c", + "CLIFFORD-REVIEW.json": "098348d85c8edc579110244f887a7d79af48c4a11bfd4eeacd71993492b7e03a", + "RESIDUAL-ADAPTERS.json": "efd0ef1043c1766e1a6c3bc21772b0dd6fab86dbeda0cb1bf90a9bc4716a2433" + }, + "gauge44": { + "CANONICAL-WORD.json.gz": "73e81ff9dfc99013f8c74600fbbc30028566446cc4ab801d16dcafa1686286cd", + "LOCAL-PROGRAMS.json.gz": "3a56a06b63794f96904168d00792521c9475a6155e88bf5228bea35256d547e3", + "LOCAL-CHECKS.json": "f8c9fc2e524c404ed6bd33a51c571f72ce6ba0a40a2d8957f6197b1b952b653c", + "INDEPENDENT-LOCAL-REPLAY.json": "866c6cc9231da41f9663a1a60da05b014cc0a974da1b036b4a3db1eb15c47956", + "CLIFFORD-RECIPES.json": "2bfff13b291f8112d6e0dd1129db57849da11aba9fc01de5f070fb80bd77857b", + "CLIFFORD-REVIEW.json": "13e8df8b34f2821967845d6d4a383d9b05186df693af0fe09df1410685a7429c", + "RESIDUAL-ADAPTERS.json": "376f0c06dec209fdbe66c3261c36f9ebde2a6dc2735637573ccae03e104c06a9" + } + }, + "widths_by_provider": { + "extra": { + "4": 26, + "5": 2, + "6": 18, + "7": 52, + "8": 97, + "9": 213 + }, + "gauge44": { + "4": 26, + "5": 2, + "6": 18, + "7": 52, + "8": 97, + "9": 213 + } + }, + "provider_counts": { + "extra": 2090, + "gauge44": 2680 + }, + "all_provider_program_phase_and_wrapper_bindings": true, + "scope": "Independent exact asynchronous chronology, per-replica phase projection, owner/chart/paid-profile audit. Uses per-invocation local providers bound by exact scalar, phase and residual-wrapper receipts; all-size compilation and complete coefficient invoice are separate inherited obligations." +} diff --git a/research/staged-release-retiming-t530/full-admission/evidence/strict-logs/bind.log b/research/staged-release-retiming-t530/full-admission/evidence/strict-logs/bind.log new file mode 100644 index 0000000000..a964929571 --- /dev/null +++ b/research/staged-release-retiming-t530/full-admission/evidence/strict-logs/bind.log @@ -0,0 +1 @@ +PASS_FROZEN_048_ALLCOLD_DISPATCH_FRESH_PROVIDER_BINDING diff --git a/research/staged-release-retiming-t530/full-admission/evidence/strict-logs/bit.log b/research/staged-release-retiming-t530/full-admission/evidence/strict-logs/bit.log new file mode 100644 index 0000000000..434ec86a59 --- /dev/null +++ b/research/staged-release-retiming-t530/full-admission/evidence/strict-logs/bit.log @@ -0,0 +1 @@ +PASS_PR589_BIT_SUPPLIER_DERIVED_DEFICIT_NEGATIVE_CONTROLS 12 diff --git a/research/staged-release-retiming-t530/full-admission/evidence/strict-logs/emit.log b/research/staged-release-retiming-t530/full-admission/evidence/strict-logs/emit.log new file mode 100644 index 0000000000..3ffa92edef --- /dev/null +++ b/research/staged-release-retiming-t530/full-admission/evidence/strict-logs/emit.log @@ -0,0 +1,58 @@ +{ + "status": "EMITTED_MIXED_PROVIDER_ASYNCHRONOUS_WHOLE_OWNER_COMPLEX_TEMPLATE", + "template_sha256": "6182ee1ccf2232c9cb4cad3a5b101a576de02c7e8d68289f166d786d962c8cc5", + "parent_template_sha256": "7027694928df0a4490d6ddc768c268924809f16d0ef91e961071d95a0b18806e", + "live": 474880, + "physical": 475389, + "global_profile": { + "1": 11747920, + "2": 3453480, + "3": 1112042, + "4": 486540, + "5": 103690, + "8": 38160, + "48": 202828 + }, + "rank_mass": 34496640, + "deficit": 169600, + "maxchild": 48, + "hosted_residuals": 1946160, + "banks_per_stage": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0 + ], + "entering_helper_roles": 930150, + "unique_actual_73column_sigmas": 8735, + "sigma_stream_sha256": "bb7c0bd44c6bad0f40217963c7095402865e3b5c7dc3aabf6cab610449de15fd", + "cross_replica_helper_roles": 1921602, + "asynchronous_order_sha256": "a264fb429d0a6740aa12ec71aed0abfdbeb74be3d02035db87f66223001da1f0", + "source_artifacts": { + "work/complex-nine-native/DATA-PHASES.json": "c5916ff312678f12aba403847643fbbc29f643acec60bdf836fa56cd3e8251fa", + "providers/extra/CANONICAL-WORD.json.gz": "f30605f35030460f18b053dbd6031e862bf3c6661141d481d54ffdc1e8d1ad01", + "providers/extra/LOCAL-PROGRAMS.json.gz": "1d67fa36c04eaaa6458ef87752d6312a3c58a2b41cedc7b5a32c2e36ae24db61", + "providers/extra/LOCAL-CHECKS.json": "11743473efa1822069303b49c62b1853af4236f46ef54b4778a27e2e70d79d06", + "providers/extra/INDEPENDENT-LOCAL-REPLAY.json": "8d9013f5060502270b63cb7a6078ab18bf1242a3bb74af7126e3e5b93e3be037", + "providers/extra/RESIDUAL-ADAPTERS.json": "c4ddd4db13db5ed6b3672f8ddd0dc3a2bfff50068779b51489c6f002972f6163", + "providers/extra/CLIFFORD-RECIPES.json": "c406b59021d2560f5405da13fd58e31620445ec3c89c221cc428a98260ccb47c", + "providers/extra/CLIFFORD-REVIEW.json": "47c9e73a4ed4924bed7485039e7e081e7d64fd601dba2b505079eea347713303", + "providers/gauge44/CANONICAL-WORD.json.gz": "ba1e3767f52c849c49d7d3852b879d9562265f1f51d15ca40421c51cae0aae6a", + "providers/gauge44/LOCAL-PROGRAMS.json.gz": "1d67fa36c04eaaa6458ef87752d6312a3c58a2b41cedc7b5a32c2e36ae24db61", + "providers/gauge44/LOCAL-CHECKS.json": "11743473efa1822069303b49c62b1853af4236f46ef54b4778a27e2e70d79d06", + "providers/gauge44/INDEPENDENT-LOCAL-REPLAY.json": "f99d4c50632d1cff239ac6f54e4040bc9a7ac66500de9d032c8e9fc5ec42a458", + "providers/gauge44/RESIDUAL-ADAPTERS.json": "a19e744f741bf917a72d63aab09cf7e10f5566091458568747b97f7bf0ea945a", + "providers/gauge44/CLIFFORD-RECIPES.json": "2bfff13b291f8112d6e0dd1129db57849da11aba9fc01de5f070fb80bd77857b", + "providers/gauge44/CLIFFORD-REVIEW.json": "e57e200c991adc30002c8f9829e3594f2b11b9f7481909d55746412e4b048a85" + }, + "provider_counts": { + "extra": 2090, + "gauge44": 2680 + }, + "scope": "Two actual verified plain/width-seven providers dispatched per complete invocation; independent controller/spectator/normalization and complete finite invoice admission required." +} diff --git a/research/staged-release-retiming-t530/full-admission/evidence/strict-logs/independent.log b/research/staged-release-retiming-t530/full-admission/evidence/strict-logs/independent.log new file mode 100644 index 0000000000..17d16f0b71 --- /dev/null +++ b/research/staged-release-retiming-t530/full-admission/evidence/strict-logs/independent.log @@ -0,0 +1 @@ +PASS_INDEPENDENT_MIXED_OWNER 8 diff --git a/research/staged-release-retiming-t530/full-admission/evidence/strict-logs/invoice.log b/research/staged-release-retiming-t530/full-admission/evidence/strict-logs/invoice.log new file mode 100644 index 0000000000..e8957fab70 --- /dev/null +++ b/research/staged-release-retiming-t530/full-admission/evidence/strict-logs/invoice.log @@ -0,0 +1,36 @@ +{ + "status": "PASS_INDEPENDENT_MIXED_ASYNC_SCALAR_PREFIX_AND_FINITE_INVOICE", + "provider_counts": { + "extra": 2090, + "gauge44": 2680 + }, + "selected_real_component_primitives": 756184920, + "selected_coefficient_work_primitive_count": 369781000, + "global_prefix_bits": 1479, + "finite": { + "physical_stock_bits": 2647, + "router_bits": 8002, + "literal_bits": 35294, + "physical_row_coefficient": 19551, + "retained_row_coefficient": 20161, + "required_C0_bits": 200012, + "halving_integer_inequality": [ + 5329, + 4608 + ], + "G_exponent": 30000, + "E_exponent": 100000, + "C0_exponent": 210000 + }, + "strict_checks": { + "local_primitive_bound": true, + "logical": true, + "router": true, + "literal": true, + "mass": true, + "precision": true, + "tape": true, + "row": true, + "halving": true + } +} diff --git a/research/staged-release-retiming-t530/full-admission/evidence/supplier-logs/audit-local-566-base.log b/research/staged-release-retiming-t530/full-admission/evidence/supplier-logs/audit-local-566-base.log new file mode 100644 index 0000000000..fb768c8fac --- /dev/null +++ b/research/staged-release-retiming-t530/full-admission/evidence/supplier-logs/audit-local-566-base.log @@ -0,0 +1,139 @@ +endpoint forward PASS +endpoint dual PASS +{ + "status": "PASS_INDEPENDENT_EXACT_FORWARD_AND_DUAL_ENDPOINT_FRAMES_ENTRANCES_CONES", + "input_file": "gauge44-word-566.json.gz", + "content_sha256": "ba9ee703e656b998ee9389309321a18ae6838a8f8eb77ccc402a345096df2112", + "compressed_sha256": "eeb6a236ed0ea8873b8800947d0cd19c36a6fcfdf857fc42913cb45cd984f219", + "parent_center_interface": { + "parent_path": "research/community-k492-audit/pr622/replay/baseline558/complex-global/base/split-centres/CANONICAL-WORD.json.gz", + "parent_file_sha256": "66d3c3c70983224650643a0a05a21ac6c6959f84d0f4528650601016f5a76844", + "transport_tau": 43, + "ordered_frame_bases_match": true, + "all_ports_match": true, + "transported_centers": [ + 92, + 57, + 81, + 224, + 11, + 240, + 9, + 256 + ], + "source_centers": [ + 92, + 57, + 81, + 11, + 9 + ], + "ordered_frame_bases": [ + [ + 256, + 128, + 64, + 34, + 16, + 10, + 4, + 1 + ], + [ + 256, + 128, + 64, + 32, + 16, + 8, + 5, + 3 + ], + [ + 256, + 128, + 64, + 32, + 17, + 9, + 4, + 2 + ], + [ + 256, + 128, + 64, + 36, + 20, + 8, + 2, + 1 + ], + [ + 256, + 128, + 66, + 32, + 18, + 8, + 4, + 1 + ], + [ + 256, + 128, + 65, + 33, + 17, + 9, + 5, + 3 + ], + [ + 256, + 128, + 65, + 33, + 16, + 8, + 4, + 2 + ], + [ + 256, + 128, + 68, + 32, + 16, + 12, + 2, + 1 + ] + ] + }, + "v": 112, + "h": 9, + "R": 480, + "entering": 192, + "lowends": 78, + "coldends": 48, + "compensation_gates": 7208, + "local_profile": { + "1": 2348, + "2": 500, + "3": 416, + "4": 130, + "5": 82, + "8": 8 + }, + "width_inventory": { + "4": 44, + "5": 44, + "7": 38, + "8": 114, + "9": 240 + }, + "checked_columns": 704, + "elapsed_seconds": 0.4200849999906495, + "scope": "Exact rational full scalar map in both orientations; all literal native frame chains, center levels, dyadic units, entrance-zero response, wrapper exclusion and final helper row/column cones. No global owner admission or exponent repricing." +} diff --git a/research/staged-release-retiming-t530/full-admission/evidence/supplier-logs/audit-local-566-extra.log b/research/staged-release-retiming-t530/full-admission/evidence/supplier-logs/audit-local-566-extra.log new file mode 100644 index 0000000000..0e6f78a757 --- /dev/null +++ b/research/staged-release-retiming-t530/full-admission/evidence/supplier-logs/audit-local-566-extra.log @@ -0,0 +1,139 @@ +endpoint forward PASS +endpoint dual PASS +{ + "status": "PASS_INDEPENDENT_EXACT_FORWARD_AND_DUAL_ENDPOINT_FRAMES_ENTRANCES_CONES", + "input_file": "extra-word-566.json.gz", + "content_sha256": "848815627392ea8995577fb2023077f461405231fcaf934aad6b9e5a8a0da4eb", + "compressed_sha256": "cd417b904408c221d9840d08faff8af040cc4207f9804284f2f5375d21298a62", + "parent_center_interface": { + "parent_path": "research/community-k492-audit/pr622/replay/baseline558/complex-global/base/split-centres/CANONICAL-WORD.json.gz", + "parent_file_sha256": "66d3c3c70983224650643a0a05a21ac6c6959f84d0f4528650601016f5a76844", + "transport_tau": 43, + "ordered_frame_bases_match": true, + "all_ports_match": true, + "transported_centers": [ + 92, + 57, + 81, + 224, + 11, + 240, + 9, + 256 + ], + "source_centers": [ + 92, + 57, + 81, + 11, + 9 + ], + "ordered_frame_bases": [ + [ + 256, + 128, + 64, + 34, + 16, + 10, + 4, + 1 + ], + [ + 256, + 128, + 64, + 32, + 16, + 8, + 5, + 3 + ], + [ + 256, + 128, + 64, + 32, + 17, + 9, + 4, + 2 + ], + [ + 256, + 128, + 64, + 36, + 20, + 8, + 2, + 1 + ], + [ + 256, + 128, + 66, + 32, + 18, + 8, + 4, + 1 + ], + [ + 256, + 128, + 65, + 33, + 17, + 9, + 5, + 3 + ], + [ + 256, + 128, + 65, + 33, + 16, + 8, + 4, + 2 + ], + [ + 256, + 128, + 68, + 32, + 16, + 12, + 2, + 1 + ] + ] + }, + "v": 112, + "h": 9, + "R": 480, + "entering": 192, + "lowends": 78, + "coldends": 48, + "compensation_gates": 7208, + "local_profile": { + "1": 2340, + "2": 508, + "3": 420, + "4": 126, + "5": 82, + "8": 8 + }, + "width_inventory": { + "4": 40, + "5": 48, + "7": 38, + "8": 114, + "9": 240 + }, + "checked_columns": 704, + "elapsed_seconds": 0.4299599169753492, + "scope": "Exact rational full scalar map in both orientations; all literal native frame chains, center levels, dyadic units, entrance-zero response, wrapper exclusion and final helper row/column cones. No global owner admission or exponent repricing." +} diff --git a/research/staged-release-retiming-t530/full-admission/evidence/supplier-logs/declared-edit-review.log b/research/staged-release-retiming-t530/full-admission/evidence/supplier-logs/declared-edit-review.log new file mode 100644 index 0000000000..8165a02a2e --- /dev/null +++ b/research/staged-release-retiming-t530/full-admission/evidence/supplier-logs/declared-edit-review.log @@ -0,0 +1 @@ +PASS_INDEPENDENT_EDIT_REVIEW {'base': 21, 'extra': 21} diff --git a/research/staged-release-retiming-t530/full-admission/evidence/supplier-logs/fine-engine-oracle.log b/research/staged-release-retiming-t530/full-admission/evidence/supplier-logs/fine-engine-oracle.log new file mode 100644 index 0000000000..2382f2e57a --- /dev/null +++ b/research/staged-release-retiming-t530/full-admission/evidence/supplier-logs/fine-engine-oracle.log @@ -0,0 +1 @@ +PASS_FINE_ENGINE_LOG_ORACLE inputs=76 enclosures=152 diff --git a/research/staged-release-retiming-t530/full-admission/evidence/supplier-logs/geometry-controls.log b/research/staged-release-retiming-t530/full-admission/evidence/supplier-logs/geometry-controls.log new file mode 100644 index 0000000000..64497d9505 --- /dev/null +++ b/research/staged-release-retiming-t530/full-admission/evidence/supplier-logs/geometry-controls.log @@ -0,0 +1 @@ +PASS_GEOMETRY_CONTROLS 6 diff --git a/research/staged-release-retiming-t530/full-admission/evidence/supplier-logs/lemmag-labels.log b/research/staged-release-retiming-t530/full-admission/evidence/supplier-logs/lemmag-labels.log new file mode 100644 index 0000000000..700d3f05e7 --- /dev/null +++ b/research/staged-release-retiming-t530/full-admission/evidence/supplier-logs/lemmag-labels.log @@ -0,0 +1 @@ +PASS_LEMMAG_LABELS dirs=4 mutants_rejected=12 borrow_mutants_rejected=14 diff --git a/research/staged-release-retiming-t530/full-admission/evidence/supplier-logs/lift-parent.log b/research/staged-release-retiming-t530/full-admission/evidence/supplier-logs/lift-parent.log new file mode 100644 index 0000000000..eb77de6c68 --- /dev/null +++ b/research/staged-release-retiming-t530/full-admission/evidence/supplier-logs/lift-parent.log @@ -0,0 +1 @@ +PASS_LITERAL_GENERAL_T_PARENT_PLAN_SPEC {"charged_prefix_bits": 2048, "dimension": 73, "pairs": 4, "parent_helpers": 504, "parent_idle": 1068480, "parent_live": 778792, "parent_physical": 779306, "replicas": 530, "stages": 9} diff --git a/research/staged-release-retiming-t530/full-admission/evidence/supplier-logs/paired-extension-review.log b/research/staged-release-retiming-t530/full-admission/evidence/supplier-logs/paired-extension-review.log new file mode 100644 index 0000000000..17541315b5 --- /dev/null +++ b/research/staged-release-retiming-t530/full-admission/evidence/supplier-logs/paired-extension-review.log @@ -0,0 +1,161 @@ +warps 72 PASS static K_G checks +frames/profile PASS +warps 72 PASS static K_G checks +frames/profile PASS +warps 72 PASS static K_G checks +frames/profile PASS +warps 72 PASS static K_G checks +frames/profile PASS +warps 72 PASS static K_G checks +frames/profile PASS +warps 72 PASS static K_G checks +frames/profile PASS +warps 72 PASS static K_G checks +frames/profile PASS +warps 72 PASS static K_G checks +frames/profile PASS +warps 72 PASS static K_G checks +frames/profile PASS +warps 72 PASS static K_G checks +frames/profile PASS +warps 72 PASS static K_G checks +frames/profile PASS +warps 72 PASS static K_G checks +frames/profile PASS +warps 72 PASS static K_G checks +frames/profile PASS +warps 72 PASS static K_G checks +frames/profile PASS +warps 72 PASS static K_G checks +frames/profile PASS +warps 72 PASS static K_G checks +frames/profile PASS +warps 72 PASS static K_G checks +frames/profile PASS +warps 72 PASS static K_G checks +frames/profile PASS +warps 72 PASS static K_G checks +frames/profile PASS +free-algebra forward PASS 632 independent inputs +free-algebra dual PASS 632 independent inputs +{ + "status": "PASS_INDEPENDENT_EXACT_BORROWING_WORD", + "input_file": "WORD-base.json.gz", + "content_sha256": "a602bc8494a336e8fbc9fac5e22d71e7394e86ca762f92083496c8ba448f5d94", + "compressed_sha256": "fec3c120db1a35022944628d34b56a36f2456248c274c2eaba1a325cdc690ce8", + "v": 112, + "h": 9, + "R": 480, + "removed_helpers": 72, + "independent_inputs": 632, + "warps": 72, + "corrections": 36, + "restored_cold": 82, + "zero_buffers": 82, + "entering": 134, + "local_profile": { + "1": 2416, + "2": 640, + "3": 280, + "4": 110, + "5": 26, + "8": 8 + }, + "local_mass": 5170, + "width_inventory": { + "4": 26, + "5": 2, + "7": 62, + "8": 96, + "9": 222 + }, + "orientations": { + "forward": "PASS", + "dual": "PASS" + }, + "base": null, + "checked_columns": 632, + "elapsed_seconds": 0.3913867920055054, + "scope": "Exact free-operator-algebra replay (every remaining input is an independent column): K_G warps with G invertible, G(from)=to, symplectic form fixing L_0/L_FULL and sending L_from to L_to (rank 0), literal frame chain with warps, relaxed fixed initial compensation, derived inverse-reverse cleanup at FULL with inverse warps and private zero buffers. No Clifford phase/Gaussian product, no owner admission, no repricing." +} +warps 72 PASS static K_G checks +frames/profile PASS +warps 72 PASS static K_G checks +frames/profile PASS +warps 72 PASS static K_G checks +frames/profile PASS +warps 72 PASS static K_G checks +frames/profile PASS +warps 72 PASS static K_G checks +frames/profile PASS +warps 72 PASS static K_G checks +frames/profile PASS +warps 72 PASS static K_G checks +frames/profile PASS +warps 72 PASS static K_G checks +frames/profile PASS +warps 72 PASS static K_G checks +frames/profile PASS +warps 72 PASS static K_G checks +frames/profile PASS +warps 72 PASS static K_G checks +frames/profile PASS +warps 72 PASS static K_G checks +frames/profile PASS +warps 72 PASS static K_G checks +frames/profile PASS +warps 72 PASS static K_G checks +frames/profile PASS +warps 72 PASS static K_G checks +frames/profile PASS +warps 72 PASS static K_G checks +frames/profile PASS +warps 72 PASS static K_G checks +frames/profile PASS +warps 72 PASS static K_G checks +frames/profile PASS +warps 72 PASS static K_G checks +frames/profile PASS +free-algebra forward PASS 632 independent inputs +free-algebra dual PASS 632 independent inputs +{ + "status": "PASS_INDEPENDENT_EXACT_BORROWING_WORD", + "input_file": "WORD-extra.json.gz", + "content_sha256": "a3aeb900e97822b1aaf39a0c274b2dc5ec840f5d1f0e5cf14aae19b9d32ad39b", + "compressed_sha256": "e4d0c617df85bf8a824ff68310ca3373dc017c1ebf9ea733056a3ee4a784b36f", + "v": 112, + "h": 9, + "R": 480, + "removed_helpers": 72, + "independent_inputs": 632, + "warps": 72, + "corrections": 36, + "restored_cold": 82, + "zero_buffers": 82, + "entering": 134, + "local_profile": { + "1": 2416, + "2": 640, + "3": 280, + "4": 110, + "5": 26, + "8": 8 + }, + "local_mass": 5170, + "width_inventory": { + "4": 26, + "5": 2, + "7": 62, + "8": 96, + "9": 222 + }, + "orientations": { + "forward": "PASS", + "dual": "PASS" + }, + "base": null, + "checked_columns": 632, + "elapsed_seconds": 0.3832818329683505, + "scope": "Exact free-operator-algebra replay (every remaining input is an independent column): K_G warps with G invertible, G(from)=to, symplectic form fixing L_0/L_FULL and sending L_from to L_to (rank 0), literal frame chain with warps, relaxed fixed initial compensation, derived inverse-reverse cleanup at FULL with inverse warps and private zero buffers. No Clifford phase/Gaussian product, no owner admission, no repricing." +} +PASS_NINE_ADDITIONAL_PAIRED_EXTRACTIONS diff --git a/research/staged-release-retiming-t530/full-admission/evidence/supplier-logs/preload-move-independent-review.log b/research/staged-release-retiming-t530/full-admission/evidence/supplier-logs/preload-move-independent-review.log new file mode 100644 index 0000000000..c2e61ca85e --- /dev/null +++ b/research/staged-release-retiming-t530/full-admission/evidence/supplier-logs/preload-move-independent-review.log @@ -0,0 +1,111 @@ +{ + "status": "PASS_INDEPENDENT_PRELOAD_MOVE_REVIEW", + "variants": { + "base": { + "inserted_A_gates": 14, + "controls": [ + [ + "dropped_quartet_helper_entry", + "RuntimeError: paid profile mismatch {1: 2402, 2: 643, 3: 262, 4: 128, 5: 26, 8: 8}" + ], + [ + "dropped_entry_delivery", + "RuntimeError: paid profile mismatch {1: 2403, 2: 642, 3: 261, 4: 129, 5: 26, 8: 8}" + ], + [ + "flipped_sign", + "RuntimeError: target map failed 24" + ], + [ + "flipped_partner_sign", + "RuntimeError: target map failed 24" + ], + [ + "missing_carrier_raise", + "RuntimeError: frame not monotone (499, (42,), (415, 84, 44))" + ], + [ + "missing_carrier_raise_second", + "RuntimeError: frame not monotone (510, (42,), (276, 138, 85))" + ], + [ + "preload_gate_moved_back", + "RuntimeError: frame not monotone (457, (42,), ())" + ], + [ + "preload_gate_moved_back_second", + "RuntimeError: frame not monotone (458, (42,), ())" + ], + [ + "preload_undo_removed", + "RuntimeError: target map failed 24" + ], + [ + "wrong_start_extra", + "RuntimeError: frame not monotone (457, (75,), (42,))" + ], + [ + "wrong_compensation_sign", + "RuntimeError: target map failed 22" + ], + [ + "stale_cleanup", + "RuntimeError: explicit cleanup differs from derived inverse-reverse at FULL" + ] + ] + }, + "extra": { + "inserted_A_gates": 14, + "controls": [ + [ + "dropped_quartet_helper_entry", + "RuntimeError: paid profile mismatch {1: 2402, 2: 643, 3: 262, 4: 128, 5: 26, 8: 8}" + ], + [ + "dropped_entry_delivery", + "RuntimeError: paid profile mismatch {1: 2403, 2: 642, 3: 261, 4: 129, 5: 26, 8: 8}" + ], + [ + "flipped_sign", + "RuntimeError: target map failed 24" + ], + [ + "flipped_partner_sign", + "RuntimeError: target map failed 24" + ], + [ + "missing_carrier_raise", + "RuntimeError: frame not monotone (499, (42,), (415, 84, 44))" + ], + [ + "missing_carrier_raise_second", + "RuntimeError: frame not monotone (510, (42,), (276, 138, 85))" + ], + [ + "preload_gate_moved_back", + "RuntimeError: frame not monotone (457, (42,), ())" + ], + [ + "preload_gate_moved_back_second", + "RuntimeError: frame not monotone (458, (42,), ())" + ], + [ + "preload_undo_removed", + "RuntimeError: target map failed 24" + ], + [ + "wrong_start_extra", + "RuntimeError: frame not monotone (457, (75,), (42,))" + ], + [ + "wrong_compensation_sign", + "RuntimeError: target map failed 22" + ], + [ + "stale_cleanup", + "RuntimeError: explicit cleanup differs from derived inverse-reverse at FULL" + ] + ] + } + } +} diff --git a/research/staged-release-retiming-t530/full-admission/evidence/supplier-logs/rebind-566.log b/research/staged-release-retiming-t530/full-admission/evidence/supplier-logs/rebind-566.log new file mode 100644 index 0000000000..2353b22176 --- /dev/null +++ b/research/staged-release-retiming-t530/full-admission/evidence/supplier-logs/rebind-566.log @@ -0,0 +1 @@ +provider counts {'extra': 2090, 'gauge44': 2680} | new profile {'1': 11747920, '2': 3453480, '3': 1112042, '4': 486540, '5': 103690, '8': 38160, '48': 202828} | changed {'gauge44': ['artifact_semantic_sha256', 'artifact_sha256', 'orientation_program_sha256'], 'extra': ['artifact_semantic_sha256', 'artifact_sha256', 'orientation_program_sha256']} diff --git a/research/staged-release-retiming-t530/full-admission/evidence/supplier-logs/rebuild-borrow-words.log b/research/staged-release-retiming-t530/full-admission/evidence/supplier-logs/rebuild-borrow-words.log new file mode 100644 index 0000000000..0c391921a3 --- /dev/null +++ b/research/staged-release-retiming-t530/full-admission/evidence/supplier-logs/rebuild-borrow-words.log @@ -0,0 +1,19 @@ +wrote $RESEARCH_WORKSPACE/work/joint-analysis/full-derivative/admission/release/verify/tmp/tmpjw97iepl/w.json.gz 1901 4504 42 78 +TARGET-OFFSETS base declared by patch input 12 missing/extra/changed rejected True True True +TWELVE-CONTROLS base {'twelve_gate_sign_flipped_rejected': True, 'twelve_gate_coefficient_doubled_rejected': True, 'twelve_gate_dropped_rejected': True, 'twelve_warp_dropped_rejected': True, 'twelve_target_frame_changed_rejected': True} +RETIRED7-CONTROLS base {'retired7_gate_sign_flipped_rejected': True, 'retired7_gate_coefficient_doubled_rejected': True, 'retired7_gate_dropped_rejected': True, 'retired7_warp_dropped_rejected': True, 'retired7_target_frame_changed_rejected': True} +DIRTENTRY-CONTROLS base {'dirtentry_injection_dropped_rejected': True, 'dirtentry_injection_sign_flipped_rejected': True, 'dirtentry_injection_wrong_time_rejected': True, 'dirtentry_removal_missing_rejected': True} +CUT-CENTRE-GUARD base cut gates 176 violations 0 negative control rejected True +HELPER-INDEX-GUARD base helper_final keys 91 violations 0 negative control (key -1) rejected True +ENTRANCE-WIDTH-BINDING base raised 26 bound True dim1 tamper rejected True +gauge44 {'rebuild_plus_patches_equals_shipped': True, 'patches': ['refit', 'kernel', 'handoff', 'entrance', 'lowfour', 'alias8', 'prelife', 'refit563', 'alias1', 'twelve', 'retired7', 'dirtentry', 'shared-four-kernel', 'preload-move', 'two-sided-helper408', 'nine-additional-paired-extractions', 'rank7-joint-endframes', 'declared-edit-list', 'staged3605', 'staged-release-retime'], 'kernel_edit_exact': True, 'prior_state_audit_rc': [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], 'audit_rc': 0, 'target_offsets_declared': True, 'target_offset_missing_rejected': True, 'target_offset_extra_rejected': True, 'target_offset_changed_rejected': True, 'controls_rc': 0, 'lowfour_controls_rc': 0, 'prelife_controls_ok': True, 'refit563_undone_rejected_by_warp_frame_mismatch': True, 'alias1_controls_rc': 0, 'twelve_gate_sign_flipped_rejected': True, 'twelve_gate_coefficient_doubled_rejected': True, 'twelve_gate_dropped_rejected': True, 'twelve_warp_dropped_rejected': True, 'twelve_target_frame_changed_rejected': True, 'retired7_gate_sign_flipped_rejected': True, 'retired7_gate_coefficient_doubled_rejected': True, 'retired7_gate_dropped_rejected': True, 'retired7_warp_dropped_rejected': True, 'retired7_target_frame_changed_rejected': True, 'dirtentry_injection_dropped_rejected': True, 'dirtentry_injection_sign_flipped_rejected': True, 'dirtentry_injection_wrong_time_rejected': True, 'dirtentry_removal_missing_rejected': True, 'kernel_controls_rejected': {'kernel_sign_flipped': True, 'kernel_read_dropped': True, 'kernel_coefficient_doubled': True, 'kernel_read_moved_to_neighbour_register': True, 'alias8_sign_flipped': True, 'alias8_coefficient_doubled': True, 'alias8_warp_dropped': True, 'entrance_start_frame_dropped': True, 'entrance_start_frame_widened': True, 'handoff_sign_flipped': True, 'handoff_coefficient_doubled': True}, 'refit_tamper_rejected': True, 'cut_centre_guard_violations': 0, 'cut_centre_guard_negative_control_rejected': True, 'helper_index_guard_violations': 0, 'helper_index_guard_negative_control_rejected': True, 'entrance_widths_bound_to_providers': True, 'dim1_delivery_rejected': True, 'raised_buffers': 26} +wrote $RESEARCH_WORKSPACE/work/joint-analysis/full-derivative/admission/release/verify/tmp/tmpq_u635rq/w.json.gz 1901 4504 42 78 +TARGET-OFFSETS extra declared by patch input 12 missing/extra/changed rejected True True True +TWELVE-CONTROLS extra {'twelve_gate_sign_flipped_rejected': True, 'twelve_gate_coefficient_doubled_rejected': True, 'twelve_gate_dropped_rejected': True, 'twelve_warp_dropped_rejected': True, 'twelve_target_frame_changed_rejected': True} +RETIRED7-CONTROLS extra {'retired7_gate_sign_flipped_rejected': True, 'retired7_gate_coefficient_doubled_rejected': True, 'retired7_gate_dropped_rejected': True, 'retired7_warp_dropped_rejected': True, 'retired7_target_frame_changed_rejected': True} +DIRTENTRY-CONTROLS extra {'dirtentry_injection_dropped_rejected': True, 'dirtentry_injection_sign_flipped_rejected': True, 'dirtentry_injection_wrong_time_rejected': True, 'dirtentry_removal_missing_rejected': True} +CUT-CENTRE-GUARD extra cut gates 176 violations 0 negative control rejected True +HELPER-INDEX-GUARD extra helper_final keys 91 violations 0 negative control (key -1) rejected True +ENTRANCE-WIDTH-BINDING extra raised 26 bound True dim1 tamper rejected True +extra {'rebuild_plus_patches_equals_shipped': True, 'patches': ['refit', 'kernel', 'handoff', 'entrance', 'lowfour', 'alias8', 'prelife', 'refit563', 'alias1', 'twelve', 'retired7', 'dirtentry', 'shared-four-kernel', 'preload-move', 'two-sided-helper408', 'nine-additional-paired-extractions', 'rank7-joint-endframes', 'declared-edit-list', 'staged3605', 'staged-release-retime'], 'kernel_edit_exact': True, 'prior_state_audit_rc': [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], 'audit_rc': 0, 'target_offsets_declared': True, 'target_offset_missing_rejected': True, 'target_offset_extra_rejected': True, 'target_offset_changed_rejected': True, 'controls_rc': 0, 'lowfour_controls_rc': 0, 'prelife_controls_ok': True, 'refit563_undone_rejected_by_warp_frame_mismatch': True, 'alias1_controls_rc': 0, 'twelve_gate_sign_flipped_rejected': True, 'twelve_gate_coefficient_doubled_rejected': True, 'twelve_gate_dropped_rejected': True, 'twelve_warp_dropped_rejected': True, 'twelve_target_frame_changed_rejected': True, 'retired7_gate_sign_flipped_rejected': True, 'retired7_gate_coefficient_doubled_rejected': True, 'retired7_gate_dropped_rejected': True, 'retired7_warp_dropped_rejected': True, 'retired7_target_frame_changed_rejected': True, 'dirtentry_injection_dropped_rejected': True, 'dirtentry_injection_sign_flipped_rejected': True, 'dirtentry_injection_wrong_time_rejected': True, 'dirtentry_removal_missing_rejected': True, 'kernel_controls_rejected': {'kernel_sign_flipped': True, 'kernel_read_dropped': True, 'kernel_coefficient_doubled': True, 'kernel_read_moved_to_neighbour_register': True, 'alias8_sign_flipped': True, 'alias8_coefficient_doubled': True, 'alias8_warp_dropped': True, 'entrance_start_frame_dropped': True, 'entrance_start_frame_widened': True, 'handoff_sign_flipped': True, 'handoff_coefficient_doubled': True}, 'refit_tamper_rejected': True, 'cut_centre_guard_violations': 0, 'cut_centre_guard_negative_control_rejected': True, 'helper_index_guard_violations': 0, 'helper_index_guard_negative_control_rejected': True, 'entrance_widths_bound_to_providers': True, 'dim1_delivery_rejected': True, 'raised_buffers': 26} +PASS_REBUILD_BORROW diff --git a/research/staged-release-retiming-t530/full-admission/evidence/supplier-logs/rebuild-words-566.log b/research/staged-release-retiming-t530/full-admission/evidence/supplier-logs/rebuild-words-566.log new file mode 100644 index 0000000000..c8d49c118f --- /dev/null +++ b/research/staged-release-retiming-t530/full-admission/evidence/supplier-logs/rebuild-words-566.log @@ -0,0 +1,4 @@ +step 0 gauge44 PASS {'scalar_program_matches': True, 'interfaces_identical': True, 'b_tail_map_rows': 522, 'b_tail_map_rows_differing': 0, 'remaining_cleanup_identical': True, 'pivot': 566, 'pivot_writes': [872, 1935], 'inserted_reads_where_pivot_is_initial': True, 'exact': True, 'inserted_read_signs': {'0': 1, '1': 1, '2': 1, '3': 1, '51': 1, '229': 1, '526': 1, '1936': 1}, 'inserted_reads_see_signed_identity': True, 'inserted_read_q_rows': {'0': {'566': '1'}, '1': {'566': '1'}, '2': {'566': '1'}, '3': {'566': '1'}, '51': {'566': '1'}, '229': {'566': '1'}, '526': {'566': '1'}, '1936': {'566': '1'}}, 'inserted_read_effective_coefficients': {'0': '1', '1': '-1', '2': '-1', '3': '-2', '51': '1', '229': '2', '526': '-1', '1936': '1'}, 'pass': True, 'tamper_controls_all_fail': True, 'tamper_controls': {'all_new_gates_sign_flipped': True, 'tail_gates_sign_flipped': True, 'gate0_coefficient_x2': True, 'gate1_coefficient_x2': True, 'gate2_coefficient_x2': True, 'gate3_coefficient_x2': True, 'gate4_coefficient_x2': True, 'gate5_coefficient_x2': True, 'gate6_coefficient_x2': True, 'gate7_coefficient_x2': True}} +step 0 extra PASS {'scalar_program_matches': True, 'interfaces_identical': True, 'b_tail_map_rows': 522, 'b_tail_map_rows_differing': 0, 'remaining_cleanup_identical': True, 'pivot': 566, 'pivot_writes': [872, 1935], 'inserted_reads_where_pivot_is_initial': True, 'exact': True, 'inserted_read_signs': {'0': 1, '1': 1, '2': 1, '3': 1, '51': 1, '229': 1, '526': 1, '1936': 1}, 'inserted_reads_see_signed_identity': True, 'inserted_read_q_rows': {'0': {'566': '1'}, '1': {'566': '1'}, '2': {'566': '1'}, '3': {'566': '1'}, '51': {'566': '1'}, '229': {'566': '1'}, '526': {'566': '1'}, '1936': {'566': '1'}}, 'inserted_read_effective_coefficients': {'0': '1', '1': '-1', '2': '-1', '3': '-2', '51': '1', '229': '2', '526': '-1', '1936': '1'}, 'pass': True, 'tamper_controls_all_fail': True, 'tamper_controls': {'all_new_gates_sign_flipped': True, 'tail_gates_sign_flipped': True, 'gate0_coefficient_x2': True, 'gate1_coefficient_x2': True, 'gate2_coefficient_x2': True, 'gate3_coefficient_x2': True, 'gate4_coefficient_x2': True, 'gate5_coefficient_x2': True, 'gate6_coefficient_x2': True, 'gate7_coefficient_x2': True}} +step 1 gauge44 PASS {'scalar_program_matches': True, 'interfaces_identical': True, 'b_tail_map_rows': 522, 'b_tail_map_rows_differing': 0, 'remaining_cleanup_identical': True, 'pivot': 554, 'pivot_writes': [857, 1935, 1936], 'inserted_reads_where_pivot_is_initial': False, 'exact': True, 'inserted_read_signs': {'1': 1, '2': 1, '519': 1, '1937': -1}, 'inserted_reads_see_signed_identity': True, 'inserted_read_q_rows': {'1': {'554': '1'}, '2': {'554': '1'}, '519': {'554': '1'}, '1937': {'554': '-1'}}, 'inserted_read_effective_coefficients': {'1': '1', '2': '-1', '519': '-1', '1937': '1'}, 'pass': True, 'tamper_controls_all_fail': True, 'tamper_controls': {'all_new_gates_sign_flipped': True, 'tail_gates_sign_flipped': True, 'gate0_coefficient_x2': True, 'gate1_coefficient_x2': True, 'gate2_coefficient_x2': True, 'gate3_coefficient_x2': True, 'gate4_coefficient_x2': True}} +step 1 extra PASS {'scalar_program_matches': True, 'interfaces_identical': True, 'b_tail_map_rows': 522, 'b_tail_map_rows_differing': 0, 'remaining_cleanup_identical': True, 'pivot': 554, 'pivot_writes': [857, 1935, 1936], 'inserted_reads_where_pivot_is_initial': False, 'exact': True, 'inserted_read_signs': {'1': 1, '2': 1, '519': 1, '1937': -1}, 'inserted_reads_see_signed_identity': True, 'inserted_read_q_rows': {'1': {'554': '1'}, '2': {'554': '1'}, '519': {'554': '1'}, '1937': {'554': '-1'}}, 'inserted_read_effective_coefficients': {'1': '1', '2': '-1', '519': '-1', '1937': '1'}, 'pass': True, 'tamper_controls_all_fail': True, 'tamper_controls': {'all_new_gates_sign_flipped': True, 'tail_gates_sign_flipped': True, 'gate0_coefficient_x2': True, 'gate1_coefficient_x2': True, 'gate2_coefficient_x2': True, 'gate3_coefficient_x2': True, 'gate4_coefficient_x2': True}} diff --git a/research/staged-release-retiming-t530/full-admission/evidence/supplier-logs/reconstruct-owners.log b/research/staged-release-retiming-t530/full-admission/evidence/supplier-logs/reconstruct-owners.log new file mode 100644 index 0000000000..1d705970dc --- /dev/null +++ b/research/staged-release-retiming-t530/full-admission/evidence/supplier-logs/reconstruct-owners.log @@ -0,0 +1 @@ +PASS_OWNER_VERIFY {1: 123430, 5: 8290, 48: 202828, 3: 34022} {1: 11747920, 2: 3453480, 3: 1112042, 4: 486540, 5: 103690, 8: 38160, 48: 202828} diff --git a/research/staged-release-retiming-t530/full-admission/evidence/supplier-logs/shared-kernel-independent-review.log b/research/staged-release-retiming-t530/full-admission/evidence/supplier-logs/shared-kernel-independent-review.log new file mode 100644 index 0000000000..17f3b684a4 --- /dev/null +++ b/research/staged-release-retiming-t530/full-admission/evidence/supplier-logs/shared-kernel-independent-review.log @@ -0,0 +1,131 @@ +{ + "status": "PASS_INDEPENDENT_FOUR_GROUP_REVIEW", + "variants": { + "base": { + "inserted_A_gates": 20, + "compensation_removed": 28, + "compensation_added": 28, + "controls": [ + { + "name": "wrong_kernel_sign", + "cleanup_rederived": true, + "expected_failure_kind": "endpoint", + "frames_profile_pass": true, + "rejected_for": "RuntimeError: target map failed 3" + }, + { + "name": "drop_primary_A_injection", + "cleanup_rederived": true, + "expected_failure_kind": "endpoint", + "frames_profile_pass": true, + "rejected_for": "RuntimeError: target map failed 14" + }, + { + "name": "missing_raw_dirt_reconstruction", + "cleanup_rederived": true, + "expected_failure_kind": "endpoint", + "frames_profile_pass": true, + "rejected_for": "RuntimeError: target map failed 14" + }, + { + "name": "missing_compensation_regeneration", + "cleanup_rederived": true, + "expected_failure_kind": "endpoint", + "frames_profile_pass": true, + "rejected_for": "RuntimeError: target map failed 3" + }, + { + "name": "wrong_compensation_sign", + "cleanup_rederived": true, + "expected_failure_kind": "endpoint", + "frames_profile_pass": true, + "rejected_for": "RuntimeError: target map failed 14" + }, + { + "name": "wrong_start_extra", + "cleanup_rederived": true, + "expected_failure_kind": "frame", + "frames_profile_pass": false, + "rejected_for": "RuntimeError: frame not monotone (478, (75,), (25,))" + }, + { + "name": "suppressed_compensation_without_transport", + "cleanup_rederived": true, + "expected_failure_kind": "endpoint", + "frames_profile_pass": true, + "rejected_for": "RuntimeError: target map failed 3" + }, + { + "name": "stale_cleanup", + "cleanup_rederived": false, + "expected_failure_kind": "cleanup", + "frames_profile_pass": false, + "rejected_for": "RuntimeError: explicit cleanup differs from derived inverse-reverse at FULL" + } + ] + }, + "extra": { + "inserted_A_gates": 20, + "compensation_removed": 28, + "compensation_added": 28, + "controls": [ + { + "name": "wrong_kernel_sign", + "cleanup_rederived": true, + "expected_failure_kind": "endpoint", + "frames_profile_pass": true, + "rejected_for": "RuntimeError: target map failed 3" + }, + { + "name": "drop_primary_A_injection", + "cleanup_rederived": true, + "expected_failure_kind": "endpoint", + "frames_profile_pass": true, + "rejected_for": "RuntimeError: target map failed 14" + }, + { + "name": "missing_raw_dirt_reconstruction", + "cleanup_rederived": true, + "expected_failure_kind": "endpoint", + "frames_profile_pass": true, + "rejected_for": "RuntimeError: target map failed 14" + }, + { + "name": "missing_compensation_regeneration", + "cleanup_rederived": true, + "expected_failure_kind": "endpoint", + "frames_profile_pass": true, + "rejected_for": "RuntimeError: target map failed 3" + }, + { + "name": "wrong_compensation_sign", + "cleanup_rederived": true, + "expected_failure_kind": "endpoint", + "frames_profile_pass": true, + "rejected_for": "RuntimeError: target map failed 14" + }, + { + "name": "wrong_start_extra", + "cleanup_rederived": true, + "expected_failure_kind": "frame", + "frames_profile_pass": false, + "rejected_for": "RuntimeError: frame not monotone (478, (75,), (25,))" + }, + { + "name": "suppressed_compensation_without_transport", + "cleanup_rederived": true, + "expected_failure_kind": "endpoint", + "frames_profile_pass": true, + "rejected_for": "RuntimeError: target map failed 3" + }, + { + "name": "stale_cleanup", + "cleanup_rederived": false, + "expected_failure_kind": "cleanup", + "frames_profile_pass": false, + "rejected_for": "RuntimeError: explicit cleanup differs from derived inverse-reverse at FULL" + } + ] + } + } +} diff --git a/research/staged-release-retiming-t530/full-admission/evidence/supplier-logs/staged-release-retime-review.log b/research/staged-release-retiming-t530/full-admission/evidence/supplier-logs/staged-release-retime-review.log new file mode 100644 index 0000000000..fee9c15366 --- /dev/null +++ b/research/staged-release-retiming-t530/full-admission/evidence/supplier-logs/staged-release-retime-review.log @@ -0,0 +1 @@ +PASS_RELEASE_RETIME_RECONSTRUCTION_EIGHT_CONTROLS diff --git a/research/staged-release-retiming-t530/full-admission/evidence/supplier-logs/staged3605-review.log b/research/staged-release-retiming-t530/full-admission/evidence/supplier-logs/staged3605-review.log new file mode 100644 index 0000000000..53377eefde --- /dev/null +++ b/research/staged-release-retiming-t530/full-admission/evidence/supplier-logs/staged3605-review.log @@ -0,0 +1 @@ +PASS_STAGED3605_RECONSTRUCTION_AND_CONTROL diff --git a/research/staged-release-retiming-t530/full-admission/evidence/supplier-logs/strict-t74.log b/research/staged-release-retiming-t530/full-admission/evidence/supplier-logs/strict-t74.log new file mode 100644 index 0000000000..672cf5f9da --- /dev/null +++ b/research/staged-release-retiming-t530/full-admission/evidence/supplier-logs/strict-t74.log @@ -0,0 +1,9 @@ +PASS bind +PASS emit +PASS audit +PASS invoice +PASS assembly +PASS admission +PASS bit +PASS independent +PASS_STRICT_MIXED_T74_EXACT_FILL 0.001727405299371541 diff --git a/research/staged-release-retiming-t530/full-admission/evidence/supplier-logs/two-sided-helper408-review.log b/research/staged-release-retiming-t530/full-admission/evidence/supplier-logs/two-sided-helper408-review.log new file mode 100644 index 0000000000..2ab6795863 --- /dev/null +++ b/research/staged-release-retiming-t530/full-admission/evidence/supplier-logs/two-sided-helper408-review.log @@ -0,0 +1,183 @@ +warps 72 PASS static K_G checks +frames/profile PASS +free-algebra forward PASS 632 independent inputs +free-algebra dual PASS 632 independent inputs +{ + "status": "PASS_INDEPENDENT_EXACT_BORROWING_WORD", + "input_file": "PARENT-base.json.gz", + "content_sha256": "ec3577859eee4b99ec5b3b382307444201094dd6151898b45d1adb35ad965f35", + "compressed_sha256": "c20a470aec0f3e61833cb41fe190639eb358f58017143d2336c55c80fba265eb", + "v": 112, + "h": 9, + "R": 480, + "removed_helpers": 72, + "independent_inputs": 632, + "warps": 72, + "corrections": 36, + "restored_cold": 72, + "zero_buffers": 72, + "entering": 134, + "local_profile": { + "1": 2404, + "2": 642, + "3": 262, + "4": 128, + "5": 26, + "8": 8 + }, + "local_mass": 5180, + "width_inventory": { + "4": 26, + "5": 2, + "7": 62, + "8": 86, + "9": 232 + }, + "orientations": { + "forward": "PASS", + "dual": "PASS" + }, + "base": null, + "checked_columns": 632, + "elapsed_seconds": 0.42587362497579306, + "scope": "Exact free-operator-algebra replay (every remaining input is an independent column): K_G warps with G invertible, G(from)=to, symplectic form fixing L_0/L_FULL and sending L_from to L_to (rank 0), literal frame chain with warps, relaxed fixed initial compensation, derived inverse-reverse cleanup at FULL with inverse warps and private zero buffers. No Clifford phase/Gaussian product, no owner admission, no repricing." +} +warps 72 PASS static K_G checks +frames/profile PASS +free-algebra forward PASS 632 independent inputs +free-algebra dual PASS 632 independent inputs +{ + "status": "PASS_INDEPENDENT_EXACT_BORROWING_WORD", + "input_file": "WORD-base.json.gz", + "content_sha256": "8d7f24d329db696be203e84c459f220f8de061fcc8681b5ab74a7a902d01bcd3", + "compressed_sha256": "3657ad53ebe5f156f307a903479e919f2fe812811ce5d5f15e72c3aaf68dfde3", + "v": 112, + "h": 9, + "R": 480, + "removed_helpers": 72, + "independent_inputs": 632, + "warps": 72, + "corrections": 36, + "restored_cold": 73, + "zero_buffers": 73, + "entering": 134, + "local_profile": { + "1": 2407, + "2": 640, + "3": 262, + "4": 128, + "5": 26, + "8": 8 + }, + "local_mass": 5179, + "width_inventory": { + "4": 26, + "5": 2, + "7": 62, + "8": 87, + "9": 231 + }, + "orientations": { + "forward": "PASS", + "dual": "PASS" + }, + "base": null, + "checked_columns": 632, + "elapsed_seconds": 0.3932563749840483, + "scope": "Exact free-operator-algebra replay (every remaining input is an independent column): K_G warps with G invertible, G(from)=to, symplectic form fixing L_0/L_FULL and sending L_from to L_to (rank 0), literal frame chain with warps, relaxed fixed initial compensation, derived inverse-reverse cleanup at FULL with inverse warps and private zero buffers. No Clifford phase/Gaussian product, no owner admission, no repricing." +} +warps 72 PASS static K_G checks +frames/profile PASS +free-algebra forward PASS 632 independent inputs +free-algebra dual PASS 632 independent inputs +{ + "status": "PASS_INDEPENDENT_EXACT_BORROWING_WORD", + "input_file": "PARENT-extra.json.gz", + "content_sha256": "c47e5c1444190bea1eea4821365e0ac70e74d74c558152a37e89632d36310937", + "compressed_sha256": "db34e39876241087b581ed9374c53e9cd393e3e86ef6103bfb54f3077c3d2761", + "v": 112, + "h": 9, + "R": 480, + "removed_helpers": 72, + "independent_inputs": 632, + "warps": 72, + "corrections": 36, + "restored_cold": 72, + "zero_buffers": 72, + "entering": 134, + "local_profile": { + "1": 2404, + "2": 642, + "3": 262, + "4": 128, + "5": 26, + "8": 8 + }, + "local_mass": 5180, + "width_inventory": { + "4": 26, + "5": 2, + "7": 62, + "8": 86, + "9": 232 + }, + "orientations": { + "forward": "PASS", + "dual": "PASS" + }, + "base": null, + "checked_columns": 632, + "elapsed_seconds": 0.34683650004444644, + "scope": "Exact free-operator-algebra replay (every remaining input is an independent column): K_G warps with G invertible, G(from)=to, symplectic form fixing L_0/L_FULL and sending L_from to L_to (rank 0), literal frame chain with warps, relaxed fixed initial compensation, derived inverse-reverse cleanup at FULL with inverse warps and private zero buffers. No Clifford phase/Gaussian product, no owner admission, no repricing." +} +warps 72 PASS static K_G checks +frames/profile PASS +free-algebra forward PASS 632 independent inputs +free-algebra dual PASS 632 independent inputs +{ + "status": "PASS_INDEPENDENT_EXACT_BORROWING_WORD", + "input_file": "WORD-extra.json.gz", + "content_sha256": "97ac8c367548702f2510b450c251248944bb2c81e0e74b10cca250d3f2e957c1", + "compressed_sha256": "b975492ff4cbec0d619cdf2da34f55ce3b20c8a541132e4339cc6c8ae3b2e487", + "v": 112, + "h": 9, + "R": 480, + "removed_helpers": 72, + "independent_inputs": 632, + "warps": 72, + "corrections": 36, + "restored_cold": 73, + "zero_buffers": 73, + "entering": 134, + "local_profile": { + "1": 2407, + "2": 640, + "3": 262, + "4": 128, + "5": 26, + "8": 8 + }, + "local_mass": 5179, + "width_inventory": { + "4": 26, + "5": 2, + "7": 62, + "8": 87, + "9": 231 + }, + "orientations": { + "forward": "PASS", + "dual": "PASS" + }, + "base": null, + "checked_columns": 632, + "elapsed_seconds": 0.36775654199300334, + "scope": "Exact free-operator-algebra replay (every remaining input is an independent column): K_G warps with G invertible, G(from)=to, symplectic form fixing L_0/L_FULL and sending L_from to L_to (rank 0), literal frame chain with warps, relaxed fixed initial compensation, derived inverse-reverse cleanup at FULL with inverse warps and private zero buffers. No Clifford phase/Gaussian product, no owner admission, no repricing." +} +warps 72 PASS static K_G checks +frames/profile PASS +warps 72 PASS static K_G checks +frames/profile PASS +warps 72 PASS static K_G checks +warps 72 PASS static K_G checks +PASS_TWO_SIDED_HELPER408_LOCAL_CONSTRUCTION {"wrong_input_scale": "target map failed 3", "wrong_output_cancellation": "restored cold input still read by 408", "stale_compensation": "pre-wrapper touch of residual helper", "omit_new_private_buffer": "explicit cleanup differs from derived inverse-reverse at FULL"} diff --git a/research/staged-release-retiming-t530/full-admission/reproduce.py b/research/staged-release-retiming-t530/full-admission/reproduce.py new file mode 100644 index 0000000000..634a3e10dc --- /dev/null +++ b/research/staged-release-retiming-t530/full-admission/reproduce.py @@ -0,0 +1,78 @@ +#!/usr/bin/env python3 +# SPDX-License-Identifier: Apache-2.0 +# Source-bound retiming derivative; substantial OpenAI Codex assistance. +"""Rebuild exact sources, or run the separate complete scientific replay. + +This separate replay is not the registered bounded summary check. Pass +--materialize-only for fresh source reconstruction alone. The complete replay +retains all original scientific gates and reuses authenticated parent evidence. +""" +import argparse,gzip,hashlib,io,json,os,subprocess,sys,tarfile,time +from pathlib import Path,PurePosixPath +from fractions import Fraction as Q +H=Path(__file__).resolve().parent +MAIN='20ecf2891d80b5acf18d980b2164fb44ea7faa90' +MANIFEST='fb47533a401d1d13719be8b9aab91fe5313931ca62d40dba336eab6a96275aa0' +def need(ok,message): + if not ok:raise ValueError(message) +def sha(p):return hashlib.sha256(p.read_bytes()).hexdigest() +def read(p):return json.loads(gzip.decompress(p.read_bytes()) if p.suffix=='.gz' else p.read_bytes()) +def export_main(repo,out): + pins=read(H/'MAIN-INPUTS.json');need(pins['base_commit']==MAIN,'frozen main commit') + env=dict(os.environ,GIT_NO_REPLACE_OBJECTS='1') + subprocess.run(['git','-C',str(repo),'cat-file','-e',MAIN+'^{commit}'],env=env,check=True,stdout=subprocess.DEVNULL) + names=sorted(pins['sha256']);raw=subprocess.run(['git','-C',str(repo),'archive','--format=tar',MAIN,'--',*names],env=env,check=True,capture_output=True).stdout + out.mkdir();seen=set() + with tarfile.open(fileobj=io.BytesIO(raw),mode='r:') as tar: + for m in tar: + p=PurePosixPath(m.name) + need(not p.is_absolute() and '..' not in p.parts and '\\' not in m.name,'unsafe Git archive path') + if m.isdir():continue + need(m.isfile() and m.name in pins['sha256'] and m.name not in seen,'exact regular-file export set') + stream=tar.extractfile(m);need(stream is not None,'export bytes');body=stream.read() + need(hashlib.sha256(body).hexdigest()==pins['sha256'][m.name],'frozen input hash '+m.name) + q=out/m.name;q.parent.mkdir(parents=True,exist_ok=True);q.write_bytes(body);seen.add(m.name) + need(seen==set(names),'complete pinned main export') + return len(seen) +def main(): + a=argparse.ArgumentParser(description=__doc__);a.add_argument('--repo',type=Path,default=H.parents[2]);a.add_argument('--work',type=Path,required=True);a.add_argument('--allocation',type=Path);a.add_argument('--materialize-only',action='store_true');x=a.parse_args() + need(__debug__ and not sys.flags.optimize,'assertions must be enabled for inherited scientific code') + repo=x.repo.resolve();work=x.work.resolve();need(not work.exists() and not work.is_relative_to(H),'fresh external work directory');work.mkdir(parents=True) + pins=read(H/'vendor/PR3626-INPUTS.json');need(pins['head']=='659fd5e7064d9466b668d7188cbb013b333a415a','PR3626 exact source head') + original=read(H/'vendor/PR3626-FETCH-PINS.json');need(original['head']==pins['head'],'original fetch provenance') + for path,digest in pins['sha256'].items(): + need(original['sha256'][path]==digest,'published dependency hash') + local=H/'vendor/staged-width-t530'/Path(path).relative_to('research/staged-width-t530');need(sha(local)==digest,'PR3626 input '+path) + frozen=work/'main-files';exported=export_main(repo,frozen) + t530=H/'vendor/staged-width-t530';t8=frozen/'research/t8-rank7-two-swaps';stages=[] + env=dict(os.environ,PYTHONDONTWRITEBYTECODE='1',PYTHONPYCACHEPREFIX=str(work/'pycache'),PYTHONINTMAXSTRDIGITS='0',OPENBLAS_NUM_THREADS='1',OMP_NUM_THREADS='1') + for key in ['PYTHONPATH','PYTHONOPTIMIZE','WITNESS_SPEC','WITNESS_RECORD','WITNESS_DISCOVER']:env.pop(key,None) + def run(label,args,extra_env=None): + start=time.monotonic();cmd=[sys.executable,'-B',*map(str,args)] + with (work/(label+'.log')).open('w') as f:r=subprocess.run(cmd,env=env if extra_env is None else dict(env,**extra_env),stdout=f,stderr=subprocess.STDOUT) + stages.append({'name':label,'command':cmd,'exit_code':r.returncode,'seconds':time.monotonic()-start,'log_sha256':sha(work/(label+'.log'))});(work/'STAGES.json').write_text(json.dumps(stages,indent=2));need(r.returncode==0,label+': inspect its work log') + print('PASS',label,flush=True) + prepared=work/'prepared';retimed=work/'retimed' + run('original-materialization',[t530/'replay.py','--t8-package',t8,'--main-files',frozen,'--work',prepared,'--materialize-only']) + run('retiming-source',[H/'scripts/integrate.py','--parent',prepared/'changed','--out',retimed]) + need(sha(retimed/'source/MANIFEST.json')==MANIFEST,'same frozen654 source') + manifest=read(retimed/'source/MANIFEST.json');need(len(manifest)==654 and all(sha(retimed/'source'/p)==h for p,h in manifest.items()),'complete source payload hashes') + run('preserved-staged-review',[retimed/'source/new/borrow/review_staged3605.py']) + run('new-retiming-review',[retimed/'source/new/borrow/review_release_retime.py']) + summary={'status':'PASS_PUBLIC_SOURCE_REBUILD_654_FILES','source_manifest_sha256':MANIFEST,'source_files':654,'main_commit':MAIN,'exported_inputs':exported,'stages':[{'name':s['name'],'exit_code':s['exit_code'],'log_sha256':s['log_sha256']} for s in stages],'scope':'Fresh exact source reconstruction and reconstruction controls only; no fresh native/controller/outer admission.'} + (work/'SOURCE-REBUILD-RESULT.json').write_text(json.dumps(summary,sort_keys=True,indent=2)+'\n') + if x.materialize_only:print('PASS_PUBLIC_SOURCE_REBUILD_654_FILES');return + old=prepared/'predecessor' + run('fresh-native',[retimed/'prepare_extension_native.py','--source',retimed/'source','--retained-cache',old/'native-cache','--retained-receipt',old/'NATIVE-RECEIPT.json','--out',retimed/'native','--jobs','1']) + allocation=x.allocation.resolve() if x.allocation else work/'allocation' + if x.allocation is None:run('literal-owners',[t530/'owners/portable_expand.py','--out',allocation],{'OWNER_SOURCE_REPO':str(frozen)}) + fill=read(allocation/'FILL.json.gz');need(fill['columns']==['time','helper','owner_replica','child','port','offset'] and len(fill['rows'])==1946160,'complete literal allocation') + need(not fill.get('dispatch_overrides',[]),'no dispatch override');fill['dispatch_overrides']=[];legacy=work/'FILL-legacy.json.gz';legacy.write_bytes(gzip.compress(json.dumps(fill,separators=(',',':')).encode(),mtime=0)) + cmd=[retimed/'admit_extension.py'];vals={'source':retimed/'source','fill':legacy,'order':allocation/'ORDER.json','dispatch':allocation/'DISPATCH.json','native-cache':retimed/'native/native-cache','native-receipt':retimed/'native/NATIVE-RECEIPT.json','work':retimed/'admission','replica-helper-dir':old/'helpers','reconstructor':old/'helpers/reconstruct_replica.py','comparison-claim':old/'PR2969-CLAIM.json','blocknorm-checker':old/'adapters/extension_blocknorm.py'} + for k,v in vals.items():cmd+=['--'+k,v] + cmd+=['--source-profile','staged3605','--comparison-profile','pr2969','--jobs','1'];run('full-admission',cmd) + r=read(retimed/'admission/RESULT.json');need(r['status']=='PASS_REPLICA_ORDER_FILL_DERIVATIVE_COMPLETE_RELEASE','complete scientific release') + need(Q(r['kappa'])==Q('.001730394391813963415120')-Q(1,10**46)-Q(1,10**70),'exact conditional modern headline') + need(Q(r['kappa'])>Q('.001730071864705779882540')-Q(1,10**46)-Q(1,10**70),'strict improvement over PR3626') + (work/'RESULT.json').write_text(json.dumps({'status':'PASS_RETIMER_T530_COMPLETE_CONDITIONAL_RELEASE','kappa':r['kappa'],'source_manifest_sha256':MANIFEST,'stages':stages},indent=2));print('PASS_RETIMER_T530_COMPLETE_CONDITIONAL_RELEASE',r['kappa']) +if __name__=='__main__':main() diff --git a/research/staged-release-retiming-t530/full-admission/scripts/admit_extension.py b/research/staged-release-retiming-t530/full-admission/scripts/admit_extension.py new file mode 100644 index 0000000000..281bd42f88 --- /dev/null +++ b/research/staged-release-retiming-t530/full-admission/scripts/admit_extension.py @@ -0,0 +1,419 @@ +#!/usr/bin/env python3 +# SPDX-License-Identifier: Apache-2.0 +# Tekalign (@tekuuu), with substantial OpenAI Codex assistance. +"""Prepare and fully admit a changed-replica literal order/fill derivative. + +PR2833 extension by Yiyang Lu with OpenAI Codex assistance: add the exact +immutable dirt-entry source profile and exact full outer-claim comparisons to +PR2833 and the newer PR2843 T124 allocation. All +inherited native, owner, invoice, block-norm, controls and release checks retained. + +Research runtime only: native providers must already have passed freshly and +are authenticated by --native-receipt. --prepare-only stops before discovery. +Default complete admission preserves the original verify.py and release stages. +Source inputs and the native cache are read-only; all output uses fresh --work. +""" +import argparse +from fractions import Fraction as Q +import gzip +import hashlib +import json +import os +from pathlib import Path +import shutil +import subprocess +import sys +import tarfile +import time + +SOURCE_COMMIT = 'local-joint12-refit393' +SOURCE_MANIFEST = '1e75eabffe1ce311cc3bddc05e76118cbdedfc806200a906c57fbc5a5dd213eb' +PARENT_MANIFEST = 'e0eefc96567fbb45e19e6de0ca295381dbe0e686c08ddc783639b065c7c791d4' +PRECISION = dict(endpoint_digits=24, grid_digits=18, margin_digits=28, bootstrap_steps=12) +COMPARISON_SHA = '252b7bbdbef293f643633ff95ba7d1eabbe83e1eebcd1cb06f51834256bde1f3' +COMPARISON_HEAD = 'e8b771ba132fe632796b28c1742a8d096c04519f' +NATIVE_STAGES = ['native', 'ledgers', 'local-replay', 'wrappers', 'phases'] +# Supported immutable source versions; CLI selection never accepts arbitrary hashes. +SOURCE_PROFILES = { + 'staged3605': dict(commit='local-staged644-660-two-release-retimings',manifest='fb47533a401d1d13719be8b9aab91fe5313931ca62d40dba336eab6a96275aa0',helpers=408,source_file_count=654,upstream_head='ac92a027c78b0c9bb0ada739b26959afda489d0e'), + 'shared-four': dict(commit='shared-four-kernel-pr2833', manifest='54dc42f25c1d8b85adcf593c4bf6c0f83f7351388af857812790b8a0b4c3d869', helpers=408, source_file_count=547, upstream_head='e9307b48d7d1b690939935ecef0f8e524e6d92f4'), + 'preload-move': dict(commit='preload-move-pr2857', manifest='4da246899e2c509dd8c6e5af34905c6124ca17671b188e11ac37e36adf449504', helpers=408, source_file_count=553, upstream_head='e9307b48d7d1b690939935ecef0f8e524e6d92f4'), + 'pr2833': dict(commit='pr2833-dirtentry', manifest='c8ec4d1b7be08d2ad30730a07392ad9cb6d0222f2c35bef43c9a80a39b16e41f', helpers=408, source_file_count=541, upstream_head='e9307b48d7d1b690939935ecef0f8e524e6d92f4'), + 'pr2766': dict(commit='local-joint12-refit393', manifest='1e75eabffe1ce311cc3bddc05e76118cbdedfc806200a906c57fbc5a5dd213eb', helpers=415, source_file_count=491, upstream_head='e6df920cd0110e4b629e2ad84eddcb539001e174'), + 'pr2802': dict(commit='local-joint12-pr2733', manifest='9c72b4301057a6c204c40bb6584eb74b779e06618bcd98d706d726c3e2c92451', helpers=408, source_file_count=506, upstream_head='17b2ee6ef3cf1468e78a6267f0ecbc9a0e6f60dd'), +} +COMPARISONS = { + 'pr2908': dict(pr=2908,head='51309592971e3b5be935599eed2a95404dc7781e',sha256='2406680a07b43a69b0f12f8462cc43f3616f3c8cb0a46bc767541b45945cd2bf',field='kappa'), + 'pr2917': dict(pr=2917,head='224bd5e56041c40078ff6b5fa7393733a215de5c',sha256='e6c836c0178661a53a69cd91f29d83585e876f2511ff40c6b6204cd270fbdeac',field='kappa'), + 'pr2966': dict(pr=2966,head='e62d3eb9005117d82a9babcfa937ecc53237c490',sha256='4d4c4800bf3bcb36d09021313b2712aebd4aa0830c74dda30991daf6851c220a',field='kappa'), + 'pr2969': dict(pr=2969,head='e2ca469b08385d3d5e29a918d66dbefaf889e9f3',sha256='656a4c93411b078753783513e2e71b1722a56e7b70120264a38118811982fa77',field='kappa'), + 'pr2894': dict(pr=2894,head='18d03c447886895ef9abf888398178e0428533ca',sha256='29cd4aa92059a561437d7670b574c51ae4e1cfeaaf6feb6cc318d915869e6d30',field='kappa'), + 'pr2857': dict(pr=2857, head='0b2e2537b368a0cade07ce3f71452ea018ebe394', sha256='c2a04b639c86f462caef654a29817545c57b8e5ba809e37d4d476d3577f5cd6f', field='kappa'), + 'pr2848': dict(pr=2848, head='c50d12e4720cd1fef2b5a65e337e37de9731879a', sha256='aceb1394b3e8f3abcc9b1a0dc82756ab937ffbefc2f37305a229a00ccc5137e9', field='kappa'), + 'pr2843': dict(pr=2843, head='47a7227c044cd0cabb1432a06c61dd5d60c07f5a', sha256='0adc0edfade0260c65e79867b6c8b96f58dfe29d38aa30cfb8f3d5e9c7e828d9', field='kappa'), + 'pr2833': dict(pr=2833, head='e9307b48d7d1b690939935ecef0f8e524e6d92f4', sha256='6f2c4195f0226c5a7f9ba604bc038cfd4100ba3caeeac8ed2defb6fb00632b70', field='kappa_rational'), + 'pr2767': dict(pr=2767, head='e8b771ba132fe632796b28c1742a8d096c04519f', sha256='252b7bbdbef293f643633ff95ba7d1eabbe83e1eebcd1cb06f51834256bde1f3', field='kappa_rational'), + 'pr2802': dict(pr=2802, head='17b2ee6ef3cf1468e78a6267f0ecbc9a0e6f60dd', sha256='a2fcbc8a3ad3095ecbd310a26c02e9d11c28e4d105669a08bbdfb39d7704db51', field='kappa'), +} + + + +# Discovery records are shared by parallel mutation-audit processes on Windows. +# Only discovery bookkeeping changes; strict pin comparison below it is untouched. +DISCOVERY_APPEND_OLD = " with open(os.environ['WITNESS_RECORD'],'a')as f:f.write(json.dumps([key,got],default=str)+chr(10))" +DISCOVERY_APPEND_NEW = r''' import time as _wr_time + _wr_path=Path(os.environ['WITNESS_RECORD']) + _wr_lock=_wr_path.with_name(_wr_path.name+'.append.lock') + _wr_deadline=_wr_time.monotonic()+60 + _wr_fd=None + while _wr_fd is None: + try:_wr_fd=os.open(_wr_lock,os.O_CREAT|os.O_EXCL|os.O_WRONLY) + except FileExistsError: + if _wr_time.monotonic()>=_wr_deadline:raise TimeoutError('discovery record lock timeout; existing lock preserved') + _wr_time.sleep(.005) + try: + with _wr_path.open('a',encoding='utf-8',newline='\n')as _wr_out: + _wr_out.write(json.dumps([key,got],default=str)+chr(10)) + _wr_out.flush() + finally: + os.close(_wr_fd) + _wr_lock.unlink()''' + + +def need(ok, why): + if not ok: + raise RuntimeError(why) + + +def sha(path): + return hashlib.sha256(path.read_bytes()).hexdigest() + + +def read(path): + body = path.read_bytes() + return json.loads(gzip.decompress(body) if path.suffix == '.gz' else body) + + +def write(path, value): + # All output targets belong to this fresh work tree; never unlink an open lock. + lock = path.with_name(path.name + '.lock') + descriptor = os.open(lock, os.O_CREAT | os.O_EXCL | os.O_WRONLY) + try: + os.write(descriptor, str(os.getpid()).encode()) + os.close(descriptor) + descriptor = None + path.write_text(json.dumps(value, sort_keys=True, indent=2) + '\n', encoding='utf-8', newline='\n') + finally: + if descriptor is not None: + os.close(descriptor) + lock.unlink() + + +def tree(root, exclude=()): + result = {} + for path in sorted(root.rglob('*')): + need(not path.is_symlink(), 'unbound symlink: ' + str(path)) + name = path.relative_to(root).as_posix() + if path.is_file() and name not in exclude: + result[name] = sha(path) + return result + + +def main(): + ap = argparse.ArgumentParser(description=__doc__) + for name in ('source', 'fill', 'order', 'dispatch', 'native-cache', 'native-receipt', 'work', 'replica-helper-dir', 'reconstructor', 'comparison-claim', 'blocknorm-checker'): + ap.add_argument('--' + name, type=Path, required=True) + ap.add_argument('--jobs', type=int, default=4) + ap.add_argument('--prepare-only', action='store_true') + ap.add_argument('--source-profile', choices=['staged3605'], default='staged3605') + ap.add_argument('--comparison-profile', choices=['pr2908','pr2917','pr2966','pr2969'], default='pr2908') + a = ap.parse_args() + global SOURCE_COMMIT, SOURCE_MANIFEST, COMPARISON_SHA, COMPARISON_HEAD + source_profile = SOURCE_PROFILES[a.source_profile] + comparison = COMPARISONS[a.comparison_profile] + SOURCE_COMMIT, SOURCE_MANIFEST = source_profile['commit'], source_profile['manifest'] + COMPARISON_SHA, COMPARISON_HEAD = comparison['sha256'], comparison['head'] + expected_helpers, comparison_pr = source_profile['helpers'], comparison['pr'] + need(not sys.flags.optimize and a.jobs > 0, 'enabled assertions and positive jobs required') + source, cache, work = a.source.resolve(), a.native_cache.resolve(), a.work.resolve() + need(not work.exists() and not work.is_relative_to(source) and not work.is_relative_to(cache), + 'fresh external work required') + need(sha(source / 'MANIFEST.json') == SOURCE_MANIFEST, 'COMPOSED manifest pin') + source_files = read(source / 'MANIFEST.json') + need(len(source_files) == source_profile['source_file_count'] and tree(source, ('MANIFEST.json',)) == source_files, + 'complete COMPOSED source inventory and hashes') + helper_dir = a.replica_helper_dir.resolve() + helper_paths = [helper_dir / n for n in ('lift_parent.py', 'replica_parent.py')] + [a.reconstructor.resolve()] + external_hashes = {str(p): sha(p) for p in helper_paths + [a.fill.resolve(), a.order.resolve(), a.dispatch.resolve(), a.comparison_claim.resolve(), a.blocknorm_checker.resolve()]} + need(sha(a.comparison_claim) == COMPARISON_SHA, 'exact pinned frontier headline comparison') + comparison_claim = read(a.comparison_claim) + need('headline_kappa_source' not in comparison_claim and comparison['field'] in comparison_claim, + 'comparison must be full headline outer claim, not supplier-only CLAIM') + previous = Q(comparison_claim[comparison['field']]) + need(previous == Q(comparison_claim['kappa']), 'comparison rational/decimal equality') + order_input = read(a.order) + need(order_input and all(isinstance(x,list) and len(x)==2 and all(type(v)is int for v in x) for x in order_input), 'literal integer call order') + T = 1 + max(r for st,r in order_input) + need(T > 0 and len(order_input)==9*T and set(map(tuple,order_input))=={(st,r) for st in range(9) for r in range(T)}, 'complete new replica coverage') + need(all([st for st,r in order_input if r==rep]==list(range(9)) for rep in range(T)), 'source stage projection') + dispatch_input = read(a.dispatch) + need(len(dispatch_input)==9*T and {(st,r) for st,r,pid in dispatch_input}==set(map(tuple,order_input)), 'complete explicit dispatch') + native_receipt = read(a.native_receipt) + need(native_receipt['status'] == 'PASS_COMPOSED_FRESH_NATIVE_PROVIDERS_AND_AUTHENTICATED_CACHE' + and native_receipt['source_commit'] == SOURCE_COMMIT + and native_receipt['manifest_sha256'] == SOURCE_MANIFEST, 'native receipt source binding') + need(tree(cache) == native_receipt['cache_files'], 'complete native/parent cache hashes') + old = source / 'vendor/pr1297' + need(sha(old / 'MANIFEST.json') == PARENT_MANIFEST, 'retained parent pin') + parent_receipt = cache / '_receipts' / PARENT_MANIFEST / 'RECEIPT.json' + need(sha(parent_receipt) == native_receipt['retained_parent_receipt_sha256'], 'parent receipt pin') + pr = read(parent_receipt) + need(pr['vendor_manifest_sha256'] == PARENT_MANIFEST and pr['claim_sha256'] == sha(old / 'CLAIM.json'), + 'parent receipt claim binding') + for name, digest in pr['files'].items(): + need(sha(parent_receipt.parent / name) == digest, 'parent receipt file') + parent_result = read(parent_receipt.parent / 'RESULT.json') + need(parent_result['status'] == 'PASS_GLOBAL_MIXED_X54_FUSIONS_NATIVE_AND_STRICT_ADMISSION' + and parent_result['kappa'] == read(old / 'CLAIM.json')['kappa'], 'retained parent completed admission') + natives = {} + for tag in ('base', 'extra'): + word = source / ('new/borrow/words/BORROW-WORD-43' + tag + '.json.gz') + entry = cache / sha(word) + binding = native_receipt['providers'][tag] + need(binding['word_sha256'] == sha(word) + and tree(entry, ('CACHE.json',)) == binding['complete_native_files'], 'native full-tree binding') + need(read(entry / 'local/FULL-WORD.json.gz') == read(word), 'native complete word') + stages = read(entry / 'STEPS.json') + need([s['step'] for s in stages] == NATIVE_STAGES and all(s['exit_code'] == 0 for s in stages), + 'native five-stage coverage') + checks = read(entry / 'local/LOCAL-CHECKS.json') + need(all(checks[o]['paid_profile'] == read(word)['report']['local_profile'] for o in ('forward', 'backward')), + 'native actual paid profiles') + natives[tag] = entry + work.mkdir(parents=True) + package = work / 'package' + shutil.copytree(source, package) + # Only the fresh external clone changes. Immutable source/cache inventories remain pinned. + for hp in helper_paths[:2]: + shutil.copy2(hp, package / hp.name) + need(sha(package / hp.name)==external_hashes[str(hp)], 'helper copy hash') + shutil.copy2(a.blocknorm_checker, package / 'blocknorm_certificate.py') + shutil.copy2(a.blocknorm_checker, package / 'code/blocknorm_certificate.py') + need(sha(package / 'blocknorm_certificate.py') == external_hashes[str(a.blocknorm_checker.resolve())], 'block-norm checker exact source binding') + shutil.copy2(a.reconstructor, package / 'reconstruct.py') + need(sha(package / 'reconstruct.py')==external_hashes[str(a.reconstructor.resolve())], 'reconstructor copy hash') + # The original subprocesses also write generated hash-bound source. Windows + # callers use a process-scoped LF adapter; no system configuration is changed. + lf_probe = work / '.lf-preflight.txt' + lf_probe.write_text('LF\n', encoding='utf-8') + need(lf_probe.read_bytes()==b'LF\n', 'process-scoped LF output required on Windows') + lf_probe.unlink() + env = dict(os.environ, PYTHONDONTWRITEBYTECODE='1', PYTHONUTF8='1', PYTHONINTMAXSTRDIGITS='0', + OPENBLAS_NUM_THREADS='1', OMP_NUM_THREADS='1', AUDIT_FAST_SHARDS=str(a.jobs)) + for name in ('PYTHONOPTIMIZE', 'WITNESS_SPEC', 'WITNESS_DISCOVER', 'WITNESS_RECORD'): + env.pop(name, None) + stages, patches = [], [] + + def run(name, script, *args): + start = time.monotonic() + command = [sys.executable, '-B', str(script), *map(str, args)] + log = work / (name + '.log') + with log.open('w') as output: + result = subprocess.run(command, env=env, cwd=work, stdin=subprocess.DEVNULL, + stdout=output, stderr=subprocess.STDOUT) + stages.append(dict(name=name, exit_code=result.returncode, seconds=time.monotonic() - start, + script_sha256=sha(script), log_sha256=sha(log), command=command)) + write(work / 'STAGES.json', stages) + need(result.returncode == 0, 'failed ' + name + '; see ' + str(log)) + print('PASS', name, flush=True) + + def patch(name, replacements): + path = package / name + before = sha(path) + body = path.read_text() + for old_text, new_text in replacements: + need(body.count(old_text) == 1, 'exact patch preimage: ' + name + ': ' + old_text[:80]) + body = body.replace(old_text, new_text) + path.write_text(body) + patches.append(dict(path=name, before_sha256=before, after_sha256=sha(path), replacements=replacements)) + + # PR2530's already checked correction: restored zero buffers occupy physical + # rows. COMPOSED's shipped SPEC includes them; its rebound SPEC omitted them. + patch('new/rebind.py', [ + ("physical=spec['expected']['live'] + 8 + R + 2)", + "physical=spec['expected']['live'] + 8 + R + 2 + max(len(rd(d / 'CANONICAL-WORD.json.gz').get('zero_buffers', [])) for d in locs.values()))")]) + # At T37 the historical fixed333 mutant is a no-op. Preserve the + # undercharge test by subtracting one from both actual charges, and + # require every geometry mutant to differ before the unchanged assembly. + patch('geometry_controls.py', [ + (" i['complete_invocation_sweeps']=i['bridge_sweeps']=333", + " i['complete_invocation_sweeps']-=1;i['bridge_sweeps']-=1"), + (" o,i=copy.deepcopy(owner),copy.deepcopy(invoice);fn(o,i);oh=digest(o);i['owner_audit_sha256']=oh", + " o,i=copy.deepcopy(owner),copy.deepcopy(invoice);fn(o,i);assert (o,i)!=(owner,invoice), 'geometry mutant must change actual receipts';oh=digest(o);i['owner_audit_sha256']=oh")]) + # Preserve the exact fixed-grid-maximum equality while deriving precision + # from the same SPEC read by both independent outer arithmetic checkers. + patch('verify_release.py', [ + ('Fraction(1, 10 ** 3046) - Fraction(1, 10 ** 3022)', + "Fraction(1, 10 ** (spec['outer_refinement']['endpoint_digits'] + 46)) - Fraction(1, 10 ** (spec['outer_refinement']['endpoint_digits'] + 22))"), + ('epsilon=1-(1025/1024)e-3080', "epsilon=1-(1025/1024)e-{spec['outer_refinement']['endpoint_digits']+80}"), + ('at the one 3000-digit rejection call', "at the one {spec['outer_refinement']['endpoint_digits']}-digit rejection call")]) + # Keep the native dimension and paid moment ledger fixed; bind replica + # width to both the checked source geometry and the independent B invoice. + patch('outer/check_ledger.py', [ + ('assert (m,W)==(73,66304)', + "T=spec['geometry']['replicas']\nassert type(T) is int and T>0\nassert m==73 and W==896*T and W==BJ['live']")]) + patch('code/witness.py', [(DISCOVERY_APPEND_OLD, DISCOVERY_APPEND_NEW)]) + patch('verify.py', [ + ("run('lift-parent',P/'lift_parent.py','--owners',work/'rebuilt-owners','--out',work/'rebuilt-parent')", + "run('lift-parent',P/'lift_parent.py','--package',P,'--owners',work/'rebuilt-owners','--out',work/'rebuilt-parent')")]) + # A sharper local reserve is certified against actual scalar/Horner + # prefixes of BOTH orientations and BOTH providers. All sweep and physical + # row charges remain unchanged; this never omits an invocation or bridge. + patch('code/witness.py', [ + ("PAYLOAD==1<<(192+(GEO['dimension']+1)//2+2*CALLS+4).bit_length()", + "PAYLOAD==1<<(128+(GEO['dimension']+1)//2+18+1330+1+4).bit_length()")]) + patch('code/invoice_allcold.py', [ + (" required_prefix=localbits+input_l2_bits+call_count+bridge_sweeps+4", + " from blocknorm_certificate import certify\n blocknorm=certify(template, {pid:base/'providers'/pid for pid in template['local_providers']})\n assert blocknorm['status'] == 'PASS_TENSOR_BLOCK_NORM_CERTIFICATE'\n assert localbits <= 128, 'actual native scalar/Horner prefix exceeds charged local reserve'\n required_prefix=localbits+input_l2_bits+blocknorm['max_active_depth']+blocknorm['stock_l2_bits']+1+4")]) + patch('independent_core.py', [ + (" payload = 1 << (192 + (M+1)//2 + 2*len(c['order']) + 4).bit_length()", + " require(localbits <= 128, 'measured native prefix exceeds local reserve')\n payload = 1 << (128 + (M+1)//2 + 18 + 1330 + 1 + 4).bit_length()")]) + patch('code/invoice_allcold.py', [ + (" complete_invocation_sweeps=call_count,bridge_sweeps=bridge_sweeps,row_prefix_extra=2*payload,", + " complete_invocation_sweeps=call_count,bridge_sweeps=bridge_sweeps,row_prefix_extra=2*payload,blocknorm=blocknorm,"), + (" primitive_arithmetic_margin_bits=4,controller_audit_sha256=", " tensor_block_norm=blocknorm,partial_cover_margin_bits=1,physical_stock_l2_bits=blocknorm['stock_l2_bits'],primitive_arithmetic_margin_bits=4,controller_audit_sha256="), + ("Sum every actual invocation and bridge sweep and take the maximum local scalar/Horner prefix over both orientations of the fixed provider.", + "All invocations and bridge sweeps remain charged. Bound completed-boundary energy by at most eighteen active steps per owner replica, using exact tensor-isomorphic whole-family helper unitaries. Add the full group-indexed physical-stock sup-to-l2 factor and one partial-cover margin, then the maximum local scalar/Horner prefix.")]) + patch('independent_core.py', [ + (" prefix = localbits + (M + 1) // 2 + len(c['order']) + c['bridges'] + 4", + " bn=c['blocknorm']\n require(bn['status']=='PASS_TENSOR_BLOCK_NORM_CERTIFICATE' and bn['max_active_depth']==18 and bn['stock_l2_bits']<=1330, 'independent tensor block certificate')\n prefix = localbits + (M + 1) // 2 + bn['max_active_depth'] + bn['stock_l2_bits'] + 1 + 4"), + ("prefix_formula=dict(local_scalar=localbits, input_l2=(M + 1) // 2, invocations=len(c['order']), bridges=c['bridges'], margin=4)", + "prefix_formula=dict(local_scalar=localbits, input_l2=(M + 1) // 2, invocations=len(c['order']), bridges=c['bridges'], active_block_depth=18,stock_l2=bn['stock_l2_bits'],partial_cover=1,margin=4),blocknorm=bn")]) + patch('audit_mixed.py', [ + ("pending=A.check_pending_axes(ctx);receipt=A.check_roles(ctx,roles)", + "import blocknorm_certificate as BN;ctx['blocknorm']=BN.certify_context(ctx,roles,dirs,source_parent=parent);pending=A.check_pending_axes(ctx);receipt=A.check_roles(ctx,roles)")]) + patch('code/assemble.py', [ + (" assert invoice['global_prefix_bits']==max(z['prefix_bits']for p in invoice['providers'].values()for z in p['local'].values())+37+CALLS+CALLS+4", + " bn=invoice['blocknorm']\n assert bn['status']=='PASS_TENSOR_BLOCK_NORM_CERTIFICATE' and bn['replicas']==REPLICAS\n assert bn['max_active_depth']==bn['boundary_depth_bits']==18 and bn['active_calls_per_block']==bn['bridges_per_block']==9\n assert bn['block_width_families']==896 and bn['physical_families']==invoice['physical'] and bn['live_families']==invoice['live']\n assert bn['partial_cover_bits']==1 and bn['input_l2_bits']==37 and bn['local_reserve_bits']==128 and bn['retained_payload_bits']==PAYLOAD\n localbits=max(z['prefix_bits']for p in invoice['providers'].values()for z in p['local'].values())\n assert bn['local_actual_prefix_bits']==localbits and localbits<=128\n assert invoice['global_prefix_bits']==bn['actual_prefix_bits']==localbits+37+18+bn['stock_l2_bits']+1+4\n assert bn['required_reserve_bits']==128+37+18+bn['stock_l2_bits']+1+4 previous, + 'candidate must strictly improve full exact pinned frontier headline before full release') + outer_claim = read(source / 'outer/OUTER-CLAIM.json') + outer_claim.update(kappa=row['decimal'], kappa_rational=row['rational'], + baseline_head=COMPARISON_HEAD, baseline_kappa=str(previous), gain=str(kappa-previous), + b='certified complex_lower - 1e-104 (outer/B.json)', + retuned_slacks='Endpoint precision24; free gaps follow outer/check_ledger.py from the frozen SPEC.', + fixed_grid_maximum='kappa=C-10^-70-10^-46 exactly; same fixed-grid-maximum proof at precision24.') + write(package / 'outer/OUTER-CLAIM.json', outer_claim) + (package / 'provenance').mkdir(exist_ok=True) + shutil.copy2(a.comparison_claim, package / ('provenance/PR' + str(comparison_pr) + '-HEADLINE-CLAIM.json')) + write(package / 'MANIFEST.json', tree(package, ('MANIFEST.json',))) + run('release', package / 'verify_release.py', '--main', source.parents[1], '--work', work / 'release', + '--native-cache', cache, '--jobs', a.jobs) + receipt = read(work / 'release/RELEASE-RECEIPT.json') + need(receipt['status'] == 'PASS_RELEASE' and Q(receipt['kappa_decimal']) == kappa + and receipt['manifest_sha256'] == sha(package / 'MANIFEST.json'), 'complete release binding') + need(sha(source / 'MANIFEST.json') == SOURCE_MANIFEST + and tree(source, ('MANIFEST.json',)) == source_files and tree(cache) == native_receipt['cache_files'], + 'read-only source/cache inputs changed') + need(all(sha(Path(p))==h for p,h in external_hashes.items()), 'external candidate/helper inputs changed during admission') + result.update(status='PASS_REPLICA_ORDER_FILL_DERIVATIVE_COMPLETE_RELEASE', + complex_lower=str(C), kappa=str(kappa), kappa_decimal=row['decimal'], + gain=str(kappa-previous), release_receipt_sha256=sha(work / 'release/RELEASE-RECEIPT.json'), + package_manifest_sha256=sha(package / 'MANIFEST.json'), stages=stages, + scope='Conditional finite construction and modern outer arithmetic. Exact inherited theorem obligations remain. Both native providers explicitly reused from authenticated fresh five-stage runs.') + write(work / 'RESULT.json', result) + print(result['status'], row['decimal'], flush=True) + + +if __name__ == '__main__': + main() diff --git a/research/staged-release-retiming-t530/full-admission/scripts/admit_extension.py.patch b/research/staged-release-retiming-t530/full-admission/scripts/admit_extension.py.patch new file mode 100644 index 0000000000..7cca891119 --- /dev/null +++ b/research/staged-release-retiming-t530/full-admission/scripts/admit_extension.py.patch @@ -0,0 +1,11 @@ +--- PR3626/admit_extension.py ++++ retimed/admit_extension.py +@@ -35,7 +35,7 @@ + NATIVE_STAGES = ['native', 'ledgers', 'local-replay', 'wrappers', 'phases'] + # Supported immutable source versions; CLI selection never accepts arbitrary hashes. + SOURCE_PROFILES = { +- 'staged3605': dict(commit='pr3605-ac92a027c78b0c9bb0ada739b26959afda489d0e',manifest='318ede57c79d10323fb1918f7be4d451d1fcdac01c6456fe9851d51d05d59453',helpers=408,source_file_count=648,upstream_head='ac92a027c78b0c9bb0ada739b26959afda489d0e'), ++ 'staged3605': dict(commit='local-staged644-660-two-release-retimings',manifest='fb47533a401d1d13719be8b9aab91fe5313931ca62d40dba336eab6a96275aa0',helpers=408,source_file_count=654,upstream_head='ac92a027c78b0c9bb0ada739b26959afda489d0e'), + 'shared-four': dict(commit='shared-four-kernel-pr2833', manifest='54dc42f25c1d8b85adcf593c4bf6c0f83f7351388af857812790b8a0b4c3d869', helpers=408, source_file_count=547, upstream_head='e9307b48d7d1b690939935ecef0f8e524e6d92f4'), + 'preload-move': dict(commit='preload-move-pr2857', manifest='4da246899e2c509dd8c6e5af34905c6124ca17671b188e11ac37e36adf449504', helpers=408, source_file_count=553, upstream_head='e9307b48d7d1b690939935ecef0f8e524e6d92f4'), + 'pr2833': dict(commit='pr2833-dirtentry', manifest='c8ec4d1b7be08d2ad30730a07392ad9cb6d0222f2c35bef43c9a80a39b16e41f', helpers=408, source_file_count=541, upstream_head='e9307b48d7d1b690939935ecef0f8e524e6d92f4'), diff --git a/research/staged-release-retiming-t530/full-admission/scripts/integrate.py b/research/staged-release-retiming-t530/full-admission/scripts/integrate.py new file mode 100644 index 0000000000..4a29f851a7 --- /dev/null +++ b/research/staged-release-retiming-t530/full-admission/scripts/integrate.py @@ -0,0 +1,87 @@ +import copy,gzip,hashlib,json,shutil,sys +from pathlib import Path +import argparse +ap=argparse.ArgumentParser();ap.add_argument('--parent',type=Path,required=True);ap.add_argument('--out',type=Path,required=True);ap.add_argument('--data',type=Path,default=Path(__file__).resolve().parents[1]/'data');a=ap.parse_args() +H=a.data.resolve();P=a.parent.resolve();OUT=a.out.resolve();OUT.mkdir(exist_ok=False) +S=OUT/'source';shutil.copytree(P/'source',S);D=S/'new/borrow' +def sha(p):return hashlib.sha256(p.read_bytes()).hexdigest() +def rd(p):return json.loads(gzip.decompress(p.read_bytes()) if p.suffix=='.gz' else p.read_bytes()) +def save(p,x):p.write_text(json.dumps(x,sort_keys=True,indent=2)+'\n') +def tree(p):return {f.relative_to(p).as_posix():sha(f) for f in sorted(p.rglob('*')) if f.is_file() and f!=p/'MANIFEST.json'} +def rep(s,a,b):assert s.count(a)==1,(a,s.count(a));return s.replace(a,b) +oldmanifest=sha(P/'source/MANIFEST.json');assert oldmanifest=='318ede57c79d10323fb1918f7be4d451d1fcdac01c6456fe9851d51d05d59453';assert tree(P/'source')==rd(P/'source/MANIFEST.json') +(D/'release-retime').mkdir() +code='''# SPDX-License-Identifier: Apache-2.0 +# New staged release retiming with substantial OpenAI Codex assistance. +# Builds on Ross Richardson PR3605 and all retained supplier attribution. +import copy,hashlib,json +import preload_move as pm + +def canon(w):return hashlib.sha256(json.dumps(w,sort_keys=True,separators=(',',':')).encode()).hexdigest() +def apply(parent,record): + if canon(parent)!=record['source_canonical_sha256']:raise ValueError('retime source canonical hash') + x=copy.deepcopy(parent) + if [e['index'] for e in record['edits']]!=[591,641]:raise ValueError('exact retiming addresses') + for e in record['edits']: + i=e['index'];old=e['old'];new=e['new'] + if x['B'][i:i+2]!=old:raise ValueError('retime source gate preimage') + if old[0][0]!=old[1][0]!='add':raise ValueError('ADD release') + if old[0][1]==old[1][1] or old[0][2]!=old[1][2]:raise ValueError('commuting distinct targets common source') + if new[0]!=old[1] or new[1][:-1]!=old[0][:-1]:raise ValueError('literal commuting permutation') + if any(i= D_g-(R-1)n_g` follows from the same inequality. A bin of degree R +delivers one unit, all other bins deliver at most one, and each width delivers +exactly I_w. Integral capacities and lower bounds give an integral feasible +flow after the standard circulation reduction. The implemented augmenting-path +algorithm produces this integral flow directly. Removing its selected roles +preserves all three invariants with R replaced by R-1. Repeating constructs S +actual calls, each with every required width count, at most one role from a bin, +and at most n_g roles from each group. + +This argument is an all-parameter written realization lemma under its stated +integer-flow and pattern-size hypotheses. Feasibility of this particular +aggregate witness is finite computation, not an all-parameter packing theorem. + +## Physical owners and endpoint availability + +For a group, the physical stock is exactly S copies of its n_g source bins. +A bin containing any role at macro-time hi requires an owner-copy index at +least the largest call-copy index among those endpoint roles. Other bins have +no lower requirement on their owner-copy index. + +For each j, the number of bins requiring owner index greater than j is at most +the number of endpoint roles assigned to actual call-copy indices greater than +j. The preceding decomposition bounds that number by `(S-1-j)n_g`, exactly the +number of physical bins in those owner copies. These nested Hall inequalities +justify sorting bins by decreasing requirement and assigning the physical +owner copies in decreasing order, with n_g bins per owner copy. The construction +checks every resulting requirement separately. Original owner, child and port +labels are retained when allocating each copy's n_g bins. + +The literal chronology is +`(stage,r) at macro-time t -> (stage,r+37*j) at time S*t+j`. +Provider dispatch is copied along that embedding. If a source window has +noninitial lower endpoint lo, every admitted macro-time satisfies t>=lo+1; +therefore `S*t+j > S*lo+k` for every owner-copy k. For an upper endpoint, +t 33` gates skipping `{22, 40, 54, 63}`, and `R2_E7` at `restore[190:203]`, `13 -> 15` gates skipping `{5, 73}`) on PR #2979's words that serve as the direct starting words for `B_586_438` and `B_588_440`. +- **New here (dcharb78, with AI assistance)**: the two coupled `B` + `restore` dying-helper carrier folds (`B_586_438` and `B_588_440`, `6` hunks / `6 -> 5` gates each) and `helper_final` lowerings on entering helpers `586` ($E_{30} \to V_{30,76,82}$) and `588` ($E_{30} \to V_{30,97,127}$) shifting the helper width inventory from `{4:26, 5:2, 6:16, 7:52, 8:99, 9:213}` to `{4:26, 5:2, 6:18, 7:50, 8:99, 9:213}` (`+665` net profit per helper, `+1,330` joint), the literal `T74_optimal_idle39` allocation (`allocation/FILL.json.gz`), the 21-control per-word edit review (`edits/edits_review.py`) and 100-control four-stage replay (`verify.py`), and the re-derived paid profile, cap certificate (`certificates/RELAX-CAP.json`), and complete fresh-native admission and release receipts. PR #2979 (mdumitrean), PR #3015 (jeremykothe2), and PR #3042 (dcharb78) are credited first. diff --git a/research/staged-release-retiming-t530/full-admission/vendor/staged-width-t530/owners/UPSTREAM-SOURCE-NOTICE b/research/staged-release-retiming-t530/full-admission/vendor/staged-width-t530/owners/UPSTREAM-SOURCE-NOTICE new file mode 100644 index 0000000000..89c20926ea --- /dev/null +++ b/research/staged-release-retiming-t530/full-admission/vendor/staged-width-t530/owners/UPSTREAM-SOURCE-NOTICE @@ -0,0 +1,28 @@ +research/rank7-joint-endframes +Copyright 2026 Marius-Paul Dumitrean. Licensed under the Apache License, Version 2.0. +Prepared with substantial AI assistance (Anthropic Claude, via Claude Code). + +This package retains, byte-identical, Apache-2.0 files from: PR #2942 (Marius-Paul Dumitrean, head +a027b0f6fdb0ab2b42ba10fc31b53960166bf2bf, research/paired-extension-normal45): data/PARENT-base.json.gz and +data/PARENT-extra.json.gz (its data/WORD-*.json.gz), comparators/PR2942-CLAIM.json and tools/wordedit.py; PR #2917 +(Mason Hale, head 224bd5e56041c40078ff6b5fa7393733a215de5c, research/paired-helper-extension): structure.py (Jeremy +Diviney's PR2908 two-sided certificate checker), vendor/audit_local.py (PR2833's independent exact auditor, icekylinx +attribution), vendor/preload_move.py (Jeremy Kothe's PR2894 frame accounting and cleanup), allocation/ORDER.json, +allocation/DISPATCH.json and allocation/vendor/ (independent_owners.py: Tekalign's independent owner checker as vendored +by PR2839/PR2917; PLAN.json.gz, TEMPLATE.json.gz); PR #2957 (Jeremy Kothe, head b74b25f3ccc84c16e1a801d73b2f47e5ea764c78, +research/paired-extension-cap-fill-swaps): vendor/declared_rewrites.py (the pure applier of the fourteen declared +rewrites) and comparators/PR2957-CLAIM.json; PR #2966 (Jeremy Kothe, head e62d3eb9005117d82a9babcfa937ecc53237c490, +research/paired-extension-normal45-rewrites): comparators/PR2966-CLAIM.json; PR #2969 (Dugongue, head +e2ca469b08385d3d5e29a918d66dbefaf889e9f3, research/paired-swap-normal45): allocation/baseline/ (its CLAIM.json and its +allocation ORDER.json and PROFILE.json); and PR #2930 (head 81f3b5d12977eba09e06fbff729167d59faabe90): tools/relax.py, +tools/root.py, tools/relax_exact.py. +data/REWRITES-2957.json is Jeremy Kothe's PR2957 rewrite list, re-addressed to this package's stage-2 word with exact +preimages (every entry keeps a credit field). producer.py follows PR2917's producer.py (Mason Hale) for its paired steps; +verify.py, check_allocation.py, check_cap.py, run_registered.py and reproduce.py adapt our PR2942 versions of PR2917's and +PR2930's; tools/audit_allocation_moment.py is PR2917's exact moment auditor with only its authenticated baseline changed (to +the PR2969 headline); tools/derive_adapters.py generalizes PR2917's adapter derivation (PR2908, Jeremy Diviney); +tools/build_overlay.py follows the overlay conventions of PR2908's and PR2917's builders. construction/allocation/ retains +the flow model of PR2857/PR2843 (Yiyang Lu, Marius-Paul Dumitrean) as adapted for this allocation. All original notices of +the exported predecessor packages remain in force. + +Derived work (Apache-2.0): this package (`research/rank7-restore-carrier-skips`) builds on PR #2979 (Marius-Paul Dumitrean, head be191346, research/rank7-joint-endframes) and PR #3015 (Jeremy Kothe, jeremykothe2, research/rank7-joint-endframes-restore-edit), retained byte-identical except for the files named in README.md, plus two declared restore edit blocks (`R1_E42` and `R2_E7` in `edits/EDITS.json` and `edits/FINAL-WORD-*.json.gz`) and their re-derived certificates and complete fresh-native admission and release receipts by dcharb78, with AI assistance. PR #2979's own evidence is kept under evidence/pr2979/. diff --git a/research/staged-release-retiming-t530/full-admission/vendor/staged-width-t530/owners/independent_literal.py b/research/staged-release-retiming-t530/full-admission/vendor/staged-width-t530/owners/independent_literal.py new file mode 100644 index 0000000000..32755776c1 --- /dev/null +++ b/research/staged-release-retiming-t530/full-admission/vendor/staged-width-t530/owners/independent_literal.py @@ -0,0 +1,128 @@ +# SPDX-License-Identifier: Apache-2.0 +# Adapted from PR3605; retained attribution in UPSTREAM-SOURCE-CREDITS.md. +import sys +if not __debug__ or sys.flags.optimize: + raise RuntimeError("Enabled assertions required before owner replay") +"""Path-adapted copy of the parent independent owner audit. +Original SHA256 1001cb1c8b4ee1f93c23b58b094565ec1b3931eee0ea091a23504696e380be9e. +Filesystem/source authentication and output paths adapted; mathematical predicates retained. +""" +"""Independent vectorized audit of the literal staged-pair owner journal. + +No optimizer, producer, inherited owner checker or reconstructor is imported. +Uses the source execution template and the actual checked native frame tables. +""" +from pathlib import Path +from collections import Counter +import gzip,hashlib,json,os,sys +import numpy as np +R=Path(__file__).resolve().parent +if not __debug__:raise SystemExit('unoptimized Python required') +for _key in ('OWNER_SOURCE_REPO','OWNER_LITERAL_DIR','OWNER_NATIVE_DIR','OWNER_AUDIT_OUTPUT'): + if not os.environ.get(_key):raise SystemExit('missing '+_key) +A=Path(os.environ['OWNER_LITERAL_DIR']).resolve() +NATIVE=Path(os.environ['OWNER_NATIVE_DIR']).resolve() +S=Path(os.environ['OWNER_SOURCE_REPO']).resolve()/'research/rank7-joint-endframes/allocation/vendor' +def need(v,m): + if not v:raise ValueError(m) +def sha(p):return hashlib.sha256(p.read_bytes()).hexdigest() +def read(p): + b=p.read_bytes();return json.loads(gzip.decompress(b) if p.suffix=='.gz' else b) +def rank(v): + piv={} + for q in v: + while q: + h=q.bit_length() + if h in piv:q^=piv[h] + else:piv[h]=q;break + return len(piv) +for rel,digest in read(R/'ARTIFACTS.json').items(): + f=R/rel;need(f.is_file() and not f.is_symlink() and sha(f)==digest,'frozen audit artifact '+rel) +paths=[A/n for n in ('FILL.json.gz','ORDER.json','DISPATCH.json','PROFILE.json')]+[S/'PLAN.json.gz',S/'TEMPLATE.json.gz'] +paths += [NATIVE/f'checked-{p}/CANONICAL-WORD.json.gz' for p in ('base','extra')] +source_pins=read(R/'SOURCE-PINS.json') +repo=Path(os.environ['OWNER_SOURCE_REPO']).resolve() +for rel,digest in source_pins['repo_files'].items():need(sha(repo/rel)==digest,'retained source pin '+rel) +for tag in ('base','extra'):need(sha(NATIVE/f'checked-{tag}/CANONICAL-WORD.json.gz')==source_pins['native_canonical'][tag]['canonical_sha256'],'actual native canonical pin') +pins={str(p):sha(p) for p in paths} +expected=read(R/'EXPECTED.json');need(hashlib.sha256(gzip.decompress(paths[0].read_bytes())).hexdigest()==expected['payload_sha256'],'freshT530payload') +baseorder=read(R/'ORDER37.json')+[[s,r+37]for s,r in read(R/'T16-ORDER.json')] +need(read(paths[1])==[[s,r+53*cp]for s,r in baseorder for cp in range(10)],'exactmixedsourceclock') +basedispatch={(s,r):p for s,r,p in read(R/'DISPATCH37.json')};basedispatch.update({(s,r+37):p for s,r,p in read(R/'T16-DISPATCH.json')}) +need(read(paths[2])==[[s,r+53*cp,basedispatch[s,r]]for s,r in baseorder for cp in range(10)],'exactsourceproviderdispatch') +order=read(paths[1]);dispatch=read(paths[2]);profile={int(k):v for k,v in read(paths[3]).items()};plan=read(paths[4]);template=read(paths[5]) +T=530;N=9*T +need(len(order)==N and len(set(map(tuple,order)))==N,'call coverage') +clock={tuple(call):t for t,call in enumerate(order)} +need(set(clock)=={(s,r) for s in range(9) for r in range(T)},'exact source calls') +need(all([clock[s,r] for s in range(9)]==sorted(clock[s,r] for s in range(9)) for r in range(T)),'per-replica order') +D={(s,r):p for s,r,p in dispatch};need(len(dispatch)==N and set(D)==set(clock),'dispatch coverage') +need(Counter(D.values())=={'extra': 2090, 'gauge44': 2680},'provider count') +# Reconstruct source windows per replica from the actual source event sequence. +children={x['child']:x['rank'] for x in template['idle_children']};K=max(children)+1 +cap=np.zeros((T,K),dtype=np.int64);lo=np.full((T,K),N,dtype=np.int64);hi=np.full((T,K),-2,dtype=np.int64) +local_pair={x['stage']:x['pair'] for x in template['recipe'] if x['kind']=='local'} +for r in range(T): + touched={};t=None + for ev in template['execution_schedule']: + kind=ev['kind'] + if kind in ('bank_padding_cover_sweep','translate_every_live_family'):continue + if kind=='local_cover_sweep': + t=clock[ev['stage'],r];touched[local_pair[ev['stage']]]=t + elif kind=='bridge': + need(t is not None,'bridge source');touched[ev['src']]=t;touched[ev['dst']]=t + elif kind=='idle_cover_sweep': + need(t is not None,'idle source') + for c in ev['child_indices']: + if c in children: + need(cap[r,c]==0,'unique source child');cap[r,c]=children[c];lo[r,c]=touched.get(ev['pair'],-1);hi[r,c]=t + else:need(kind in ('terminal_Y_translations','terminal'),'known source event') +need(np.all(cap[:,list(children)]>0),'all source windows') +fam=np.full(K,-1,np.int64) +for c in children:fam[c]=2*plan['pairs'][str(c)]+plan['sides'][str(c)] +widths={};L=None +for tag,pid in [('base','gauge44'),('extra','extra')]: + w=read(NATIVE/f'checked-{tag}/CANONICAL-WORD.json.gz') + need(w['R']==408 and len(w['zero_buffers'])==91,'native helper stock') + widths[pid]=np.array([rank(w['frames'][w['final'][224+h]])-rank(w['frames'][w['start'][224+h]]) for h in range(408)],dtype=np.int64) + need(Counter(widths[pid])=={4:26,5:2,6:18,7:52,8:97,9:213},'actual native widths') + loc={int(k):v for k,v in w['local_profile'].items()} + need(L is None or L==loc,'common actual native bill');L=loc +need(L=={1:2439,2:726,3:224,4:102,5:20,8:8},'new local bill') +bycall=np.stack([widths[D[tuple(call)]] for call in order]) +j=read(A/'FILL.json.gz');need(j['columns']==['time','helper','owner_replica','child','port','offset'] and j['dispatch_overrides']==[],'journal schema') +need(all(len(row)==6 and all(type(v) is int for v in row) for row in j['rows']),'literal integer roles') +rows=np.array(j['rows'],dtype=np.int64);del j +need(rows.shape==(N*408,6),'literal role shape') +need(np.array_equal(rows[:,0],np.repeat(np.arange(N),408)) and np.array_equal(rows[:,1],np.tile(np.arange(408),N)),'complete literal ordered helper identities') +t,h,o,c,p,z=rows.T +need(np.all((o>=0)&(o=0)&(c=0)&(p<112)),'owner bounds') +need(np.all(cap[o,c]>0),'declared source child') +need(np.all((lo[o,c]=0)&(z+w<=cap[o,c])),'actual widths and capacity') +binid=(o*K+c)*112+p +idx=np.lexsort((t,binid));bins=binid[idx];ws=w[idx];starts=np.r_[True,bins[1:]!=bins[:-1]] +cs=np.cumsum(ws,dtype=np.int64)-ws;baseline=np.maximum.accumulate(np.where(starts,cs,0));expected=cs-baseline +need(np.array_equal(z[idx],expected),'every chronological pending mask is a compact prefix') +used=np.zeros(T*K*112,np.int64);np.add.at(used,binid,w) +allcap=np.repeat(cap.reshape(-1),112);valid=allcap>0 +need(np.all(used[~valid]==0) and np.all(used<=allcap),'full used-bin mass') +idle=Counter(map(int,(allcap-used)[valid]));idle.pop(0,None) +H=Counter({r:n*N for r,n in L.items()});H.update(idle) +need(dict(H)==profile and sum(r*n for r,n in H.items())==65088*T,'independent complete histogram') +# Small semantic predicates test each independent gate on actual changed inputs. +controls=[] +def reject(name,test): + need(not test(), 'control accepted '+name);controls.append(name) +reject('duplicate helper',lambda: np.array_equal(np.r_[rows[0,1],rows[:-1,1]],np.tile(np.arange(408),N))) +reject('strict lower endpoint used as available',lambda: bool(lo[o[0],c[0]]=0 + i=len(self.to);self.to.extend((v,u));self.cap.extend((int(capacity),0));self.adj[u].append(i);self.adj[v].append(i+1);return i + def maxflow(self,s,t,limit): + total=0;n=len(self.adj) + while total0:net.add(ss,n,b);target+=b + elif b<0:net.add(n,tt,-b) + got=net.maxflow(ss,tt,target) + assert got==target,('copy circulation',copy,got,target,dict(dg),dict(db)) + selected=[];wc=Counter();gc=Counter();bc=set() + for key,e in handles.items(): + n=net.cap[e^1] + assert n in (0,1) + if n: + b,w=key;i=bucket[key].pop();selected.append(i);wc[w]+=1;g=int(bin_group[b]);gc[g]+=1 + assert b not in bc;bc.add(b);db[b]-=1;dg[g]-=1;copies[i]=copy + assert len(selected)==408 and wc==Counter(dict(zip(W,INV))) + assert all(n<=group_n[g] for g,n in gc.items()) + assert max(db.values(),default=0)<=R-1 and all(n<=(R-1)*group_n[g] for g,n in dg.items()) + stats['flows']+=1;stats['max_nodes']=max(stats['max_nodes'],tt+1);stats['max_edges']=max(stats['max_edges'],len(net.to)//2) + return copies,stats diff --git a/research/staged-release-retiming-t530/full-admission/vendor/staged-width-t530/owners/portable_expand.py b/research/staged-release-retiming-t530/full-admission/vendor/staged-width-t530/owners/portable_expand.py new file mode 100644 index 0000000000..431654fe59 --- /dev/null +++ b/research/staged-release-retiming-t530/full-admission/vendor/staged-width-t530/owners/portable_expand.py @@ -0,0 +1,126 @@ +# SPDX-License-Identifier: Apache-2.0 +# Adapted from PR3605; retained attribution in UPSTREAM-SOURCE-CREDITS.md. +import sys +if not __debug__ or sys.flags.optimize: + raise RuntimeError("Enabled assertions required before owner replay") +"""Reconstruct the S10 mixedT53 literal owners by deterministic integral networks. +No optimization is run. Requires explicit OWNER_SOURCE_REPO. Expected payload is the fresh independently audited T530 output, never a predecessor owner receipt. +This optional reconstruction takes several minutes and does not run admission. +""" +from pathlib import Path +from array import array +from collections import Counter,defaultdict +import argparse,gzip,hashlib,json,time +import importlib.util +def module(name,file): + spec=importlib.util.spec_from_file_location(name,Path(__file__).resolve().parent/file);m=importlib.util.module_from_spec(spec);spec.loader.exec_module(m);return m +_candidate=module('t530_candidate','verify_candidate.py');candidate_check=_candidate.check;v=_candidate.v +common=v.common;HERE=Path(__file__).resolve().parent;W=v.W;INV=v.INV;LOCAL=v.LOCAL;P=v.P +def check(cert):return candidate_check(cert,'concatenated') +copy_colors=module('t530_network','integral_network.py').copy_colors + +def authenticate(): + pins=common.read(HERE/'INPUT-PINS.json') + for rel,digest in pins.items(): + if common.sha(HERE/rel)!=digest:raise ValueError('changedbuilderinput '+rel) + return pins + +class Rows: + def __init__(self,calls,task_width,task_bin,owner,child,port,order,dispatch,providers): + self.calls,self.width,self.bin,self.owner,self.child,self.port=calls,task_width,task_bin,owner,child,port + self.order,self.dispatch,self.providers=order,dispatch,providers + def __len__(self):return len(self.calls)*408 + def __iter__(self): + offset=array('B',[0])*len(self.owner) + for t,tasks in enumerate(self.calls): + pool=defaultdict(list);pid=self.dispatch[tuple(self.order[t])] + for h,w in enumerate(self.providers[pid]['widths']):pool[w].append(h) + call=[] + for i in sorted(tasks,key=lambda i:(self.width[i],i)): + w=self.width[i];h=pool[w].pop();b=self.bin[i];call.append((h,b,w)) + assert not any(pool.values()) + for h,b,w in sorted(call): + z=offset[b];offset[b]+=w + yield [t,h,self.owner[b],self.child[b],self.port[b],z] + +def write_fill(path,rows): + payload=hashlib.sha256();prefix=json.dumps({'columns':['time','helper','owner_replica','child','port','offset'],'dispatch_overrides':[]},sort_keys=True,separators=(',',':'))[:-1]+',"rows":[' + with path.open('wb') as raw,gzip.GzipFile(filename='',mode='wb',fileobj=raw,compresslevel=1,mtime=0) as out: + data=prefix.encode();out.write(data);payload.update(data) + for j,row in enumerate(rows): + data=((',' if j else '')+json.dumps(row,separators=(',',':'))).encode();out.write(data);payload.update(data) + data=b']}\n';out.write(data);payload.update(data) + return dict(rows=len(rows),sha256=common.sha(path),payload_sha256=payload.hexdigest()) + +def main(): + ap=argparse.ArgumentParser();ap.add_argument('--out',type=Path,required=True);ap.add_argument('--owner-check',action='store_true');a=ap.parse_args() + pins=authenticate();cert=common.read(HERE/'CANDIDATE.json');primal=check(cert);S=cert['S'];G=cert['groups'];T=53*S + assert T<65536 and S<=128 and len(G)<65536 and 477*S*408<2**32 + c=common.context();order45=cert['order'];win=c.owner.windows(c.template,order45,53);groups=defaultdict(list) + for (o,ch),(cap,lo,hi) in win.items(): + for p in range(112):groups[cap,lo,hi].append((o,ch,p)) + groupkeys=sorted(groups);assert [[*g,len(groups[g])] for g in groupkeys]==G + # Source child windows sharing a physical family are pairwise disjoint. + fw=defaultdict(list) + for (o,ch),(cap,lo,hi) in win.items():fw[o,c.families[ch]].append((lo,hi)) + for intervals in fw.values(): + for j,(lo,hi) in enumerate(intervals):assert all(max(lo,l)>=min(hi,h) for l,h in intervals[j+1:]) + xg=defaultdict(list);zg=defaultdict(list) + for gi,q,n in cert['x']:xg[gi].append((q,n)) + for gi,t,w,n in cert['z']:zg[gi].append((t,w,n)) + task_width=array('B');task_bin=array('I');bin_group=array('H');required=array('b');macro=[array('I') for _ in range(477)];bin_ranges=[] + for gi,g in enumerate(G): + bstart=len(bin_group);available=defaultdict(lambda:array('I')) + for q,n in sorted(xg[gi]): + widths=[w for w,k in zip(W,q) for _ in range(k)] + for _ in range(n): + b=len(bin_group);bin_group.append(gi);required.append(-1) + for w in widths: + i=len(task_width);task_width.append(w);task_bin.append(b);available[w].append(i) + cursor=Counter() + for t,w,n in sorted(zg[gi]): + ids=available[w][cursor[w]:cursor[w]+n];assert len(ids)==n;macro[t].extend(ids);cursor[w]+=n + assert all(cursor[w]==len(ids) for w,ids in available.items()) + assert len(bin_group)-bstart==g[3]*S;bin_ranges.append((bstart,len(bin_group))) + assert len(task_width)==477*S*408 + actual=[array('I') for _ in range(477*S)];group_n={gi:g[3] for gi,g in enumerate(G)};stats=Counter();t0=time.monotonic() + for t,indices in enumerate(macro): + colors,stat=copy_colors(sorted(indices),task_bin,task_width,bin_group,group_n,S) + for i,cp in colors.items(): + actual[S*t+cp].append(i);b=task_bin[i];gi=bin_group[b] + if t==G[gi][2]:required[b]=max(required[b],cp) + stats['flows']+=stat['flows'];stats['max_nodes']=max(stats['max_nodes'],stat['max_nodes']);stats['max_edges']=max(stats['max_edges'],stat['max_edges']) + if t%40==0:print('PORTABLE_CALL_DECOMPOSITION',t,'seconds',round(time.monotonic()-t0,2),flush=True) + assert all(len(call)==408 for call in actual) + owners=array('H',[0])*len(bin_group);children=array('H',[0])*len(bin_group);ports=array('B',[0])*len(bin_group) + for gi,(lo,hi) in enumerate(bin_ranges): + base=groups[groupkeys[gi]];m=len(base) + for j,b in enumerate(sorted(range(lo,hi),key=lambda b:(required[b],b),reverse=True)): + cp=S-1-j//m;o,ch,p=base[j%m];assert cp>=required[b] + owners[b]=o+53*cp;children[b]=ch;ports[b]=p + order=[[s,r+53*cp] for s,r in order45 for cp in range(S)];t8dispatch={(s,r):pid for s,r,pid in common.read(HERE/'T16-DISPATCH.json')};dispatch={(s,r+53*cp):(c.dispatch[s,r] if r<37 else t8dispatch[s,r-37]) for s,r in order45 for cp in range(S)} + providers=common.read(HERE/'PROVIDERS.json') + for provider in providers.values():provider['actual_paid_profile']={int(k):v for k,v in provider['actual_paid_profile'].items()} + for pid,provider in providers.items(): + assert provider['widths']==[w-int(h in (389,397)) for h,w in enumerate(c.providers[pid]['widths'])] + assert provider['actual_paid_profile']==LOCAL + a.out.mkdir(parents=True,exist_ok=False) + for name,obj in [('ORDER.json',order),('DISPATCH.json',[[s,r,dispatch[s,r]] for s,r in order]),('PROFILE.json',cert['profile']),('PROVIDERS.json',common.read(HERE/'PROVIDERS.json'))]: + # The source profile file uses indented sorted-rank formatting. + if name=='PROFILE.json':data=json.dumps({int(k):v for k,v in sorted(cert['profile'].items(),key=lambda kv:int(kv[0]))},indent=2)+'\n' + else:data=json.dumps(obj,separators=(',',':'))+'\n' + (a.out/name).write_text(data) + assert common.sha(a.out/name)==common.read(HERE/'EXPECTED.json')['literal_files'][name],('changedliteralinput',name) + rows=Rows(actual,task_width,task_bin,owners,children,ports,order,dispatch,providers);made=write_fill(a.out/'FILL.json.gz',rows) + expected=common.read(HERE/'EXPECTED.json') + # Container bytes are provenance only: zlib streams may vary across runtimes. + assert made['rows']==477*S*408==expected['rows'] and made['payload_sha256']==expected['payload_sha256'] + assert primal['profile']=={int(k):v for k,v in cert['profile'].items()} + report=dict(status='PASS_STANDARD_LIBRARY_SEMANTIC_LITERAL_REPLAY',replicas=T,calls=477*S,roles=len(rows),physical=896*T+509,materialized=made,decomposition=dict(stats),primal=primal,fresh_retained_owner_check=False,scope='Fresh mixedT53S10 exact integer networks and literal generation. No predecessor owner receipt is reused as candidate proof. Fresh independent literal audit and full release required.') + if a.owner_check: + fill={'columns':['time','helper','owner_replica','child','port','offset'],'dispatch_overrides':[],'rows':rows} + result,_,_=c.owner.check(T,order,fill,dispatch,cert['profile'],c.plan,c.template,providers);report['fresh_retained_owner_check']=True;report['owner_check']=result + (a.out/'PORTABLE-REPLAY.json').write_text(json.dumps(report,indent=2,sort_keys=True)+'\n') + print('PORTABLE_REPLAY_PASS',json.dumps(made),flush=True) + +if __name__=='__main__':main() diff --git a/research/staged-release-retiming-t530/full-admission/vendor/staged-width-t530/owners/source_context.py b/research/staged-release-retiming-t530/full-admission/vendor/staged-width-t530/owners/source_context.py new file mode 100644 index 0000000000..9731888ac7 --- /dev/null +++ b/research/staged-release-retiming-t530/full-admission/vendor/staged-width-t530/owners/source_context.py @@ -0,0 +1,32 @@ +# SPDX-License-Identifier: Apache-2.0 +# Adapted from PR3605; retained attribution in UPSTREAM-SOURCE-CREDITS.md. +import sys +if not __debug__ or sys.flags.optimize: + raise RuntimeError("Enabled assertions required before owner replay") +"""Solver-independent integer primal check of the new aggregate owner flow. + +Standard library only. Source geometry is read from the attributed frozen source +template through its retained window routine; literal copied owners are checked +separately. This certifies one finite primal, not LP optimality. +""" +from pathlib import Path +from collections import Counter,defaultdict +import sys,json,gzip,hashlib,os +if not __debug__: + raise SystemExit('unoptimized Python required by retained owner engines') +HERE=Path(__file__).resolve().parent +if not os.environ.get('OWNER_SOURCE_REPO'): + raise SystemExit('OWNER_SOURCE_REPO must identify the declared source checkout or export') +ROOT=Path(os.environ['OWNER_SOURCE_REPO']).resolve() +P=ROOT/'research/coupled-carrier-cap740' +# Authenticate every imported predecessor before executing any of its code. +_pins=json.loads((HERE/'SOURCE-PINS.json').read_text()) +for _rel,_digest in _pins['repo_files'].items(): + _path=ROOT/_rel + if not _path.is_file() or _path.is_symlink() or hashlib.sha256(_path.read_bytes()).hexdigest()!=_digest: + raise ValueError('stale retained source '+_rel) +import types +common=types.ModuleType('staged_owner_retained_common');common.__file__=str(P/'common.py') +exec(compile((P/'common.py').read_bytes(),common.__file__,'exec'),common.__dict__) +W=(4,5,6,7,8,9);INV=Counter(dict(zip(W,(26,2,18,52,97,213)))) +LOCAL={1:2439,2:726,3:224,4:102,5:20,8:8} diff --git a/research/staged-release-retiming-t530/full-admission/vendor/staged-width-t530/owners/test_owner_guards.py b/research/staged-release-retiming-t530/full-admission/vendor/staged-width-t530/owners/test_owner_guards.py new file mode 100644 index 0000000000..fbe816a2ac --- /dev/null +++ b/research/staged-release-retiming-t530/full-admission/vendor/staged-width-t530/owners/test_owner_guards.py @@ -0,0 +1,22 @@ +# SPDX-License-Identifier: Apache-2.0 +import pathlib,json,copy,subprocess,sys,tempfile,shutil,importlib.util +P=pathlib.Path(__file__).resolve().parent +def need(x,m): + if not x:raise ValueError(m) +def main(): + count=0 + with tempfile.TemporaryDirectory()as t: + d=pathlib.Path(t);out=d/'must-not-exist' + for name in ('verify_owner.py','verify_candidate.py','portable_expand.py','independent_literal.py','integral_network.py','source_context.py'): + r=subprocess.run([sys.executable,'-I','-O','-B',str(P/name),'--out',str(out)],capture_output=True,text=True) + need(r.returncode and 'Enabled assertions required'in r.stderr and not out.exists(),'optimized gate '+name);count+=1 + q=d/'corrupt';shutil.copytree(P,q);(q/'CANDIDATE.json').write_bytes((q/'CANDIDATE.json').read_bytes()+b'x') + r=subprocess.run([sys.executable,'-I','-B',str(q/'verify_owner.py')],capture_output=True,text=True);need(r.returncode and 'frozen owner artifact'in r.stderr,'certificate corruption');count+=1 + spec=importlib.util.spec_from_file_location('check_controls',P/'verify_candidate.py');v=importlib.util.module_from_spec(spec);spec.loader.exec_module(v);x=json.loads((P/'CANDIDATE.json').read_text());v.check(x,'concatenated') + for field,value in [('order',x['order'][::-1]),('groups',[]),('inventory',{}),('profile',{})]: + d=copy.deepcopy(x);d[field]=value + try:v.check(d,'concatenated') + except ValueError:count+=1 + else:raise ValueError('accepted semantic corruption '+field) + print('PASS_OWNER_GUARDS',count) +if __name__=='__main__':main() diff --git a/research/staged-release-retiming-t530/full-admission/vendor/staged-width-t530/owners/verify_candidate.py b/research/staged-release-retiming-t530/full-admission/vendor/staged-width-t530/owners/verify_candidate.py new file mode 100644 index 0000000000..ac74cbc4b8 --- /dev/null +++ b/research/staged-release-retiming-t530/full-admission/vendor/staged-width-t530/owners/verify_candidate.py @@ -0,0 +1,45 @@ +import sys +if not __debug__ or sys.flags.optimize:raise RuntimeError('Enabled assertions required before owner replay') +from pathlib import Path +from collections import Counter,defaultdict +import json,os,importlib.util,hashlib,argparse +P=Path(__file__).resolve().parent +if not os.environ.get('OWNER_SOURCE_REPO'):raise ValueError('explicitOWNER_SOURCE_REPOrequired') +s=importlib.util.spec_from_file_location('actual_owner',P/'source_context.py');v=importlib.util.module_from_spec(s);s.loader.exec_module(v) +def need(x,m): + if not x:raise ValueError(m) +def check(d,kind): + # Regenerate expectedclock from authenticated actualinputstreams, not candidate fields. + import gzip + pins=json.loads((P/'INPUT-PINS.json').read_text()) + for rel,sha in pins.items():need(hashlib.sha256((P/rel).read_bytes()).hexdigest()==sha,'inputpin') + a=json.loads((P/'ORDER37.json').read_text());b=[[i,j+37]for i,j in json.loads((P/'T16-ORDER.json').read_text())] + if kind=='concatenated':order=a+b + else: + from fractions import Fraction as F + order=[z[2]for z in sorted([(F(2*i+1,666),0,z)for i,z in enumerate(a)]+[(F(2*i+1,288),1,z)for i,z in enumerate(b)])] + need(d['order']==order,'actualsourceclock'); + providers=json.loads((P/'PROVIDERS.json').read_text());pins=json.loads((P/'ARTIFACTS.json').read_text());need(hashlib.sha256((P/'PROVIDERS.json').read_bytes()).hexdigest()==pins['PROVIDERS.json'],'providerpin') + for provider in providers.values(): + need(Counter(provider['widths'])==v.INV,'providerwidths');need({int(k):n for k,n in provider['actual_paid_profile'].items()}==v.LOCAL,'providerlocal') + c=v.common.context();win=c.owner.windows(c.template,order,53);g=Counter();fw=defaultdict(list) + for (o,ch),(cap,lo,hi)in win.items():g[cap,lo,hi]+=112;fw[o,c.families[ch]].append((lo,hi)) + need(all(all(max(lo,l)>=min(hi,h)for l,h in rows[i+1:])for rows in fw.values()for i,(lo,hi)in enumerate(rows)),'disjointfamilywindows') + G=[[*k,n]for k,n in sorted(g.items())];need(d['groups']==G,'actualgroups');S=d['S'];need(type(S)is int and S>0,'positiveintegralS');need(d['widths']==list(v.W),'widths');need({int(k):n for k,n in d['inventory'].items()}==dict(v.INV),'actualinventory') + xb=Counter();xw=Counter();idle=Counter();seen=set() + for gi,q,n in d['x']: + need(type(gi)is int and 0<=gi=0 for z in q)and type(n)is int and n>0,'patternintegers');need((gi,tuple(q))not in seen,'duplicatepattern');seen.add((gi,tuple(q))) + used=sum(w*z for w,z in zip(v.W,q));need(used<=G[gi][0]and sum(q)<=S,'patterncapacity');xb[gi]+=n + for w,z in zip(v.W,q):xw[gi,w]+=z*n + if used0,'flowintegers');need((gi,t,w)not in seen,'duplicateflow');seen.add((gi,t,w));need(G[gi][1]FRONTIER,'must beat published T450, not merely inherited2969 comparison' + (work/'RESULT.json').write_text(json.dumps({'status':'PASS_STAGED_WIDTH_T530_COMPLETE_RELEASE','kappa':result['kappa'],'baselineT450':str(FRONTIER),'gainT450':str(Fraction(result['kappa'])-FRONTIER),'release_receipt_sha256':sha(work/'admission/release/RELEASE-RECEIPT.json'),'stages':stages},indent=2)+'\n');print('PASS_STAGED_WIDTH_T530_COMPLETE_RELEASE') +if __name__=='__main__':main() diff --git a/research/staged-release-retiming-t530/full-admission/vendor/staged-width-t530/source_builder.py b/research/staged-release-retiming-t530/full-admission/vendor/staged-width-t530/source_builder.py new file mode 100644 index 0000000000..664fc66d18 --- /dev/null +++ b/research/staged-release-retiming-t530/full-admission/vendor/staged-width-t530/source_builder.py @@ -0,0 +1,90 @@ +# SPDX-License-Identifier: Apache-2.0 +# Source derivation with substantial OpenAI Codex assistance; inherited authors retained. +"""Private source derivation and strict driver binding. Never runs heavy admission. +Appends PR3605 to authenticated PR3133 source; preserves inherited validators. +""" +import argparse,json,gzip,hashlib,shutil,sys,importlib.util +from pathlib import Path +if not __debug__ or sys.flags.optimize: + raise RuntimeError('Assertions must be enabled for scientific replay') +P=Path(__file__).parent +OLD='fa3e2d855ac5298ecc849e596d79dcef7a72668a276b6524585bc0cd616ce474' +COMMIT='pr3605-ac92a027c78b0c9bb0ada739b26959afda489d0e' +DRIVER_PINS={'prepare_extension_native.py': '0cdb4b8b8b565e3dc4a312d4174c86d7d1aebc531430cb726658c8feb0c3bcf4', 'admit_extension.py': '6ddd449abfc2910e4c91f4ed93e14d65b84e6c1d2a082f3c089ad06f64d1d6ce'} +def sha(p):return hashlib.sha256(p.read_bytes()).hexdigest() +def read(p):return json.loads(gzip.decompress(p.read_bytes())if p.suffix=='.gz'else p.read_bytes()) +def save(p,x):p.write_text(json.dumps(x,sort_keys=True,indent=2)+'\n') +def tree(p): + assert not any(x.is_symlink()for x in p.rglob('*')) + return {x.relative_to(p).as_posix():sha(x)for x in sorted(p.rglob('*'))if x.is_file()and x!=p/'MANIFEST.json'} +def replace(s,a,b):assert s.count(a)==1,(a,s.count(a));return s.replace(a,b) +def rank(rows): + piv={} + for x in rows: + assert type(x)is int and x>=0 + while x: + k=x.bit_length()-1 + if k not in piv:piv[k]=x;break + x^=piv[k] + return len(piv) +def main(out,src,pkg,drivers,retained_cache,retained_receipt): + global PKG + PKG=pkg + assert all(sha(drivers/n)==h for n,h in DRIVER_PINS.items()),"driver source pin" + assert not out.exists();assert sha(src/'MANIFEST.json')==OLD and tree(src)==read(src/'MANIFEST.json') + # Frozen package artifacts are independently pinned in upstream ARTIFACTS. + assert sha(PKG/'ARTIFACTS.json')=='867bd848d04505518463eb06b1905e70ccc9256bb73312d3cd1dc57623bb319b', 'frozen supplier artifact index' + assert sha(PKG/'staged_pair.py')=='25fc9b025dbb90358032013303adea650a5f19937fd3edf30b6c6fd023e2d747', 'supplier code before import' + for name,h in read(PKG/'ARTIFACTS.json').items():assert sha(PKG/name)==h + out.mkdir();dst=out/'source';shutil.copytree(src,dst);d=dst/'new/borrow';(d/'staged3605').mkdir() + shutil.copy2(PKG/'staged_pair.py',d/'staged_pair.py') + spec=importlib.util.spec_from_file_location('staged3605',PKG/'staged_pair.py');m=importlib.util.module_from_spec(spec);spec.loader.exec_module(m) + providers=read(dst/'new/BORROW-PROVIDERS.json') + for tag,pid in [('base','gauge44'),('extra','extra')]: + q=d/f'words/BORROW-WORD-43{tag}.json.gz';parent=read(q);record=read(PKG/f'STAGED-PAIR-RECORD-{tag}.json.gz');word=read(PKG/f'STAGED644-660-{tag}.json.gz') + assert m.apply(parent,record)==word + shutil.copy2(q,d/f'inputs/PRE3605-{tag}.json.gz');shutil.copy2(PKG/f'STAGED-PAIR-RECORD-{tag}.json.gz',d/f'staged3605/RECORD-{tag}.json.gz');shutil.copy2(PKG/f'STAGED644-660-{tag}.json.gz',q) + providers[pid]['widths']=[rank(word['helper_final'].get(str(h),[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 literal 0 HcmV?d00001 diff --git a/research/staged-release-retiming-t530/full-admission/vendor/staged-width-t530/supplier3605/STAGED644-660-extra.json.gz b/research/staged-release-retiming-t530/full-admission/vendor/staged-width-t530/supplier3605/STAGED644-660-extra.json.gz new file mode 100644 index 0000000000000000000000000000000000000000..78e7b2bb0653c8dcc0133980a19dd9d97ebdb67e GIT binary patch literal 72568 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

c^2e-a+VPhAq3>{xXm(b1#L+ z@i`Oqr{)|KT3{dMShqewZ;XHUoE>()32X<8R{H`cn-9FxaTXSOW}CbQ z6d;PO!JSRI+C1mOuhjct}^&}M9(c#ia z=d(SowIeE>{Kl%XRaR%zcSf3f@Dgnbt!zgIVm#Wyi*V~H6sY1yC;zzS{pOE0F`;_C z2dDm5B{3^gtE!#VjuHPb#sFl{j)*n*+t=3YzlqWRfaVj+D3C!ND_*VlbZM=f+_}}# z*L0yXV)+l}?_SZE^r%fQy#Q%Wz6P|PjQO|}BeOPb9j9*VW5rZf$tOCneJ`w@TeNDHL92e$S z6IUMdW%Tq3J`&&6Fzbw2Q#JH4TebTvh);W~B|^&NgBq=j&fyyDg!ZhK_E^@oimTP3 zOY+_{fzC;Sd#cV{tQD6Md8F$Se(InPM`>9Y9>NLEOm7YvOmKzCe7?`)kVE7s(5^}D z1$(8bRt|WF`&QG03~%|%+2nxcN!WXetm}!80^&-aCPT6JjX_0*UBjJ-x!3;`{ln^z z))RH?4EfX-kN!^|<llctRlijGA~m-w#!71g4|LUYbTvNOa3Vf@j4NVhI-6K zvf%W*b?Wa9nu3FjR{GG$Kb*Ji6?MMCx=>5HG?~?Jc(OkH_++gNmAo-v(-c!5Y$>FA zQ(%{FG3tG`Io>~UVx+HqsHbfixUMgxO6L|xtd9HDn+OSpppNfyL?!_zHX|C{%ewLW^G&6ci(3p{@=M*ueXol%Et4iG-5n5=wg8Zk;qUeFr8iz_3i+Qn% z`lAZRvMbEsU>G7A8aQk zWxch8_p|gV5gv`qy}rbfo_S9_yY6!P|9SZCneUSS^YE*A2gd%7hoATV^6>RKpOUWr zkB2Y6&VKtpB`>FgIK*CM$7w|Q~4ae2OR36LfP>Uh=)#Q#Uf zBmPgv=brB;Z;Vg6*sz-$v;sbC$%(6Q)Fac<5 zY;O{eCYIzHN5}`FpyRA)=Rs*6L32nSC7cQ55Ay^dlF z7oXoCycAQh0y~K^pI!_p=a;{1Q=DveOL4jC2fYEU!oPXG%rHLl>cMJuq-9sD`f%SP zw(UHg!t#&z&tG*2g@_ii%pMI;oN6>Mi9^@PRhKMU?ZlkfAGL9U|AlLl3Q9m(ZCN<& zK)A!@Zy|~qY*;M@q4kOuxpm>|p%yNwSYC^ucJ!MTx$$Mq>}1*A?#aKkcYnGfnJDvYoG)YbF3g@PSY&~`ssEAH^@R!<5q<#Q5N&(ltCE)QGk;9jY|m5 z$ltgF>3KFTn6_QP%|7cNxgwrZBbA)jcs9Y7=%Th&7%U!P3)mljb00{A)>-=Mp0s1x zsGr};LRM=%Z6SAgT#YXJe<%*VIdh}a;ac9LbQIbRKqE%$OqR}_1955eA1*2X!=*u4 zZ#Ch)Phd`|88-!RxODM7ZsT!-XKWAh(COmv=JXEJ(9U9UJWa{wel!{9WjDVOmGmtU zIp!T>0tCtwl&^A z5VfYX_tgiHq<50q^lj6&_b%6s*MaM&J=ETO9}n~GQnPapw^j#c5<=E!?u;7Xq~2gE z-_-4Ce&}1p43aZ#=_bOdUPyzikoIAPDwVB10Zacvi>6&Q;_7syD^eEX77XqERltt( zYg6ax>1#cYoCOX{$Uha&>#shuZr-nx;rb$f_WFMssiN7KBV^KZF|w$9D=LNGoChX{ z;{EyMf^z=i3#32OAJnN#KH%ogSX=f78Im}qsTnU1EYP>Ag1BVP_^1sRpC3}^e@k4N z@y1*bcHNo-pRg$?$CQpnVtRBkl7=VgW1?NK?p1^ynhY68$jO2xs05X|@GG)1;wIrm zZMPOHZ#h)?_wxr|>aGcQ9u=0#ZL<^By)Eh9n$809vD<@M6*B^COYnpEd=z}ufJ7fj zP*d*d=~3$(H`)GOp2d6?YUb~lg{z+uFd}`r(Fx0vq(4MbnY3^4t|`(DKi?_+e9^rT zcb+;3Wz1f*)eF(G;fOkC{g3|*c0#{5FHL+&qX`{zT4yi-asPx78Te}eJ}zpqwffZk zLtt;=*?iBS^Gl+v`=Hh>=0v?t@fHh;*&6uYhHLsX3$v$Y-2Lbmi5ADA90fKLBj_^I zG#U%5d0d6zwzT?sj7N`<;0N{}59At_G5EE>dA&)-g6S$k-`QYG#m`nvz@ptQWLjJ>sjh0GLU? zg1gn>RHU!ackdz@s(Cef!aO?Y)jG(xMXRpb*00wnjR5+PW93w9wf+LDdAg4+Z}{bT z#mYsTE8iBrZ*!urvn;qpR$V3`D7CE6Q$Fug`m0kkEY5CxUSbbk3I)6aKD&$*0d6m@ zNZ&N9eM8MWh4u_CEtWy-%X~$+kP;BCFm{s1h)c6aoU8S7Nc;6EOh%4%=$&N<8 zdd?x?6Q^hZcqGT&W3{u{na@RsUy5KdjkCFcJr)gFdF*@)_mVEp%)d9#KUcvakjTL38P?K!vv{ucejt#KI=bcZF(%91-Tek^=cFY|;MRXr`PHwf{G4jA1^>zWP5u{go?+%yQ`8=IUOr9^Ut~@}=KbL5BzgGH zV_MS`xhV|kd;)q*;=U%oJ|(2^il!+=?vdQi)w4LZEN4S=Db&TY$-@Q*=ru(uMeEeA+KPAD zSpn$AFA8fs4bEgSJTIC`9^MRD*BZ_fXxbE3Y3ru|D`&17ZTALUJl2#Y2b%XR{*F@3 z^6(lsnSL=0ifL7U4#1)}`Td=a>*F|li|=;`>pgvJI12JRNa`=vM4lIemlZ+DrfG}! zxZVkEiELsy&m?ZmMjuZu(^!-=X_V33Bl-~kkoSnv+a}AN|H8R3Q*`wqzdztEeHE3I z)6>-dmipeak`5D>hI-_O_@*7>^n-4P+vaY|qT^lGYL{IT1{cPG>dHwGU5p+oVP3#^ zLy=QlB5lu1@ip^KCUbMHHMUptq>Lp^zPNW~%8tavgxsac8y+<({T;HN(W}@Sb+rrX zI<8Us1f(FBYbtA&92PgaT$`H(r!!&jEwTRH{Kat0@oqosCQp z!M)66&1g0{6`AZO6inTs1wRQ7={MBBFEISMSYB>}xv>*z_CKLo9|%wEmcNJmv|3Eo z9h5^MJ&+URM3?^2(Esv!gTz|&y3M!cdEpOV>?G9xuhTmfIq5=%GzeN5VtZvNmVXxw zUZ72qnN(UCDd|F`A-PR7frAx}Y^-r58fbDafdw0o^+#_`+Q9D+#n-W%PV-t zuq*_+LciO_hJ{d+uQQX21gWdp^fMxIA@d^y=KL*#{y6Ov`6aVR8ifQMjJ9Ms?!Nk9 zh`y0W6~6p>LM`@kbaKGK^lMJ#h=vwqK&-mH!ueV(#qtJ!{5=s&Nr&$@b`{?IDI2XJ z>L;hzosD%`FP9QI)BLS}qTgH^DZpJlI&{GexTtXNvXbknVD_sQ8yuO?KFpvvWU52? zFLV4$7!#n*W=PI+5P&jOWFdzV;2AHy@`Kt1LGJI%&=iYWNKu#3!RoWl;buZR^(ZRP z=FcmglcGC%Lj8+d?j@)lKL}1_ODlqb8`n4as-}n|>f44O4C>+fKoAEJAR`m%L^N*Y@o#{uAU%kO2B~0zx z?%`qBXv)$*m-X{x1MkK&rn8W`Ypc9yqp#r^oH1Va&XVc%rTI*5*1&DQ%^M+q&61 zl|91TY@EslVwjIt`FNF&SNV9YJ7|;%ig$O+KOX8AKSj^bVv^F?HIlg#lDP~LgV`iY71s=$1Hy#q6fXtV<&Y?=bqaK zqHBVu4@!z@r=+}Zh$7FqPFwovY+6)XJ>Bc`aaDEx`H?oABGtwnt`?v1WxOjuh|sFm zcnTJeEz`2>d@C6vnx_AKb$weG6`|$4azzbIm|9jueP+ubL6Mj7R#2@F22ZbDQBTx@{t0Q z5w$lLM{()bm$nX2I)~izG`-XB>vG%US~5WtNP1Z<)<^u@*etyg;Oe|4%M)fxABMLo z3hgaL3x;3xeX~ymb5GYj-`D8mxAtg1k;@KWc97~VVbNdyDYEV{lKAdAL)osk@U<*x!t(3*7yheKjika(R|bt{zs0)L z_VeOXdQto4D*EEO1^szCR_+mNZo|}5`l(TQYmzrT+KZXAy-{B}G~}OGFDQnXx(82X z+q4hTA4;Sb1N9de?OB%ZYR3L8zPah7Js!%};@U0CDApgk(%9}6x_rp+fvY*}^sAKo z@zS~G?ZzdK;tS3-&mcb~Php!WP2XPfw{6WRF0C@{r&L1DP2agdw<1J$t_8F0gelWP z{(|=|wioUAGg3Q4a4E^*J4&&sp8L|u_(Ml(uR)xW--T>zn;UQUUQ*V&Y@VLI9K^Z4 zs>xcMuvErp0qoKCgk+3TB>QsZY@y4a<+(?LnmA?s5VG4&bi|0JZT0>=jcCX*ySuBG zW-n1@B1+UUbD|`r8N{(`w(r@H)hk46!^s(P^l~Uj{^fCR<3~EbnuHQ&tX0^R6UgWu z=1JH`?3sK2&{CRT?_J&H4qU5PD9r4dAGR%tqgmUiR$MgKH)^FrQ%?PP6hl9KXwQ+5 zn63CFJxDJk@~wI*7grr+qH?HRxoj(6jv*DiZq6O8iNlJXz1j+QS&B#*kYgWO?^~(Y zJT*n>2DW8+=KE)nyH`Nf?=X}ncX#4Tif!qr+=W1fMVB<(Xv40nL^)Y|84QV}Y&*Cr zWn`nv(&$Le&^LQgDY8;`UUi!;B^h|aRmV-hnLN$xb! zocb^d)U#e+Gz^*RwUn_Nb||<^ZCSz5usPN|IITOnLJ*-XEL;+EAhnzc*O}!zhsZ320gZ#9&kN@U zs~A^$ky0~Pnf549q0eqve} zrW{7;rjpYlGUI9Gkkf)xYfssSx(g6}edSy27HqH8dOyTrqmQqCtB@WWeK*V-w|({K zeRVeXMlTK7_9L^jd2>ypR<~PhMCmLV+wLd`n>Ts|6ceIa@y3Lr))O{CFCb0JTN8#9 zGzweFD-H!4r?M+u72{i^k#l)Vz}r;%h1QS#8g?zdK&m|So_8E^;z)OLh8tr1`*HJO zqpD4aXcr*&Hgt_{@QcHK!H@m*+Qwqs1o72)aES}-yxAyh`LOCBklfMbV_XhDaq8ftLij(X3TZ8Ey^V4hPk|)Z9g{3g@npXhd1&k zJ?~{D*`?{Q~ltl{_lkB(;2wP_L061siHs8th%ITa&Cr|!itZ~i@Rv!!e?%^h&O z$urUx!n^THVlyN(H)xk!gVvqb_%>?|>Dr-V3Yg5-Xttj)WEiK=bV#pb9>ViZFZ6DL zU(}B`AuL{Eq;Ba?Jm%C%I4emt@skM3{hs`uS{ty93quyL1Ob>%jOFuE$=v_{># zx3BD`L{DBVJi!rhkRXRwEBLqg3G{f5xeAuk=7ILLrcC>cxd&XgSTX!?OhUe6-AQ?K zmtwwSyV>27m5jQ6E~4UoS(iTTpD3`DzAYn{1(frRtI4!>8{F#{N3ZA?1>LM!Rf?l6 zg8E9Sp&vSww`u9*Uj^b|r4TCEUMBi@aCKbV&a{(nnq!sr<$bF-&8JoBTRD3oM?)s# zhg`kO^bt2|Odg|2$L1|;XSp?WP$hj^lP0$F(U*R&wxSd0Fik|AglwouJFuR;X8Yjf zd?KJ0jGK2GVDnBlA+6ZFW82tq%n|0_`^H4^BDCRg!Ks+B*0T|M7cwbe?|tn)V!V;66yt4kN#(gGqYYR;6*P zLDt@DC|s+Jx1-aUXfD1!ibzlpG_;5EqxDLfcxkgmf#~*AmnzZh77bm7 zUJo1O+V6rZ{kwD5QQp?~<=l0|pf1ZsE(=L<-7O3y!T~nhEh+(YE0XMRu_oG zxziYj6_U<=rBBhkyEW2W;E9Onag#CqfHgu0M&Zylh0%e=1xxANNN0<357oT(3upIQ_5B?nlZ^D*kF$CEwS_xlNdEhql{d}^M|B@X!UbD9)+ zXny?u%}Yeq$e)*PL5!0vUE3LF%bVXNQ>`4W)9-ttl#Jzg?<7px29@M)#~-h^y(vaE z=E+dgn+WHdr-rh^oVy8jqPlYfj~M68!bO4bMxg;6UTjI{7%L- zlX@8gU$}6b2DJK~t|`XY^4rBy6ZqoUsVqcZ$8)zZ%i+uKg1K z=y{-_0;kbW;*2zO$tR9uG0}9Fd4QGDHKKM82^trLf>L@frpWsz$<+%a?_H3WroD6H zG>Yej>XFYkN+)ld#Cmf^ZNQDUXJi9(k>!n=szT;9k86UoTP^cN8%Jqz>lSjpyJ=N| zbJs-R$B&9S9)zbKE9wGhDQ4#Qp|9Rmd%6{>DxA>ti^j7Ao_E><73>|_xMocC_m8ln zBqaPfyrAy-xk9nN)P)dv4h#*Dj_omOqmNI~&89f?V#J%HP7hb?+&*1kYjMzvKnh4% z=53om`*6|0%cVHg=IByZyR?PO<=UIL;@%re@@f#}o4YqENj}bTD0U15x>jy*CbWb9axMGq8_YF(d) z=yy+W&F!2!CMgPn%g~D*r5Fj^(GT$401a>)MG!)gH47O8MI5flO(R3Ix4*$R>6|au zS1GAG(F-Xlp~m*v?P(;S0=F&atK69amsjX1C~M1iO++s#C`}=cQV0tAxhRZc2nzb; z-i~sNg3=EzLX44sg2>gm@ZIKf$UX{mudr2deja@-J)RPV?BJY7Jmuk>!}mk`lwe`I z93lBV{g&fj`KHh5$FEMjN&ZZk$=%{1<rB_kw); z>1%H{{tnqacv(a1&u>w~{*Us{>X{F{ju^P9sK1WL1r2h`{i_k6z~%16fr;N2j(zT* zYQ7B<3FTjLls^8EGAJku=Kplrx z)r5Bj{wehD#=;Bl>!8)9!tme+mr`!O;+60w;&@T_Aio(y=KitDfRYU7Aou)JDitD* zgO}$YhnVG9N?{zjdol>w$ztAY;Cp!H#`u!HGu@S9ip}}CdcbfKnv9BGxtXfa_dh`- zPMVShJ>JJ$>)dj7DmW0{lz_9oQXr~)&@t&PJ-~9?Np8CM(%8|q#O0})09ELJ-@UVU zY|>2?8K&tQ!*s1Xyicw?Gt|#bouV+refmsOrIys!wcvM5=8`RMZU0-}wBXnw8ab<* z1h8{~movOSYCJE+jE!;8idM*le^7Q_#+bMuhwTKXQIUf84;)mD3ugSQO@EBP6)t=o z7x8!>JJ0n1E*j$+3ng^r1Gu1rthG>vvIsO?ikoUg*cLNs`4SYN9};tBw{jB>-i}1D zsaJYi`K+jX@D`7t6?;B%-leMAo6h0(#AzztU~``Y@cuY&$NY%Sx45>@N?&av{|5bf z7au@#oK5wn9vJqh{F1so+oCA zn9>3NJ)7NeL(~ZhFU>!a-I-ZKb{|cr_s6pPy5GHz9499osEthJxEu6CgPik`MT7i4 z)v(>7$YzVRG*8S8njwHm@y!-@q7jqhlWrm zWOPBiMCn-slC@^1MQm+`>vn39EqF(Ta^ z5z+qZ3cgv3N5<-sIL)r=ENmjZ(&a`_&@nx3ytF953`kAO`L8C~c`l zW60M<52&0BiNsJJSRJVB8yK;bTOQ|b=HPnWP(43=rQ1UL3w0+4*~hzgoB|-u|8!;u z@f6$3J3C!arjz4|f_I$ClhCpmTCJ{1cxMt1YnjU&m=i@=o`m9IrJ!9{SH9(4_0EaX za)3(kcGGP#x}Xrkdjh*}DS&VU-BO@PY^TZy;}#@VXlFX|#e9E)oLf&un|a^YT)VyC z)EXT{-cm(R@+V+>tu5iLRP-c(BJn64?JWXDFJLl}+?~<;NpID+9N)d(&>Y0<{w+f)$XR8u3LoeHQ$GMU6p%#prA~$V!L$bKMos*J2pGi zFZG-l)bAiI2RCJvQ(wk?rsojn$dO&(a0isu%r|oJ>@>l7hRbqxS8ngECL*NyXVR(?}`$cAM>k&%i~Y-=sq9iSO+I#oPdy0 zL_+t(4y~Gv0 zXpE=588dD}6xF_-Gr19WQQk|>`3>5R@fC`hyfImR+u(`G4pCW(jDcvRhzvP?!LN@s zzLBq?4>W5)kWe;fjTQrxA*o#EP%oyWSs~-NkdmH?dy@;hJLtm?4J7!U$iHcfDh-_r z-LYe4-#WP(QT#$=-)ygy)Ggs_!R-T)>k{3T?98#}X7+t+cjWXS89&n3&VO2zjHNPR z6D6a;eJ}iIVKSEfy*I0c$!PG}vZKezcsE`)aWYa?OuI-KJ--)XO+}!Ko**bh&*yz0 zvabtMY0lSyEt!QKGyjF?>=!p(>TrJGwkM+B+rwT-{@f|Re`)CKuV88s&d8P6{3gOl zQqA|sW~MZ}^IbCBgO*UNM>sjrqGc6p5l&8xl39^}DXDDAjD*6`t=Br39AxD1RO(5} zmV^%JH7KPtLVVJ(W0Tfw?3RT2lw&7r+4Ct|rC767iZ#cE&!&;9KkZ)dDgsRcwcEjq z2sBAG-);mEXwQUp8-b=yO!>7a0!<_LX4&cyXwtlUD<Xi{Cvp;sc%Plj53)<(;N z%e(wDPK!F)%MbH~^!u60pSJyu;@}(u0#JJf@GR%cAy_3NHQDUhaV!$Tj*l-GeqQDFkTR% zUm<+E`LX;7BF@R?==TSj!*9a5{_6uh*6D2>QW({zv*v~(GR1;`Qo!mB0hI|AW6}xo z-Nc4TSTc!Bv0)N+%5dq}@JLH3@=dYq$y7Z?lV&O*qe<1OuIRrAc_uq|zX(wermGW( zEe)8wK7r}Nd#OqPImq*^j&ls#&%XxIE2JSbzuW~_#$*e*;7-GRpyznrOUc zTOH(r?2f#MXUNUi{FDJ8t&-!Zv>Etq*bkOJC$mNooH}A4%wA-2c)? zCg5ZG@Jkg8e#7kr`17pgix%hR=UK~l zDeUt1S$Y8XeV?oS{3w4)r3Y-kkkQ*X?bmd@vE2O#uw)tCo~8Xn=KHAgQvSEH|B~ki zGKvg-Y3*dPJjdBJ)q} zG^Q@g`!Dk^?ZKl;LEwjW&xBIV^Y83*qyMebLG@do-==$#v?s}LIS_>+zQuZUHZAsp zNhq6qL&Bxj*L*TlZ20U*xaworDaF2JCp130M&ewo5u^{WJhEUTr0Yv1YDo|@mi=@V+?+8$ z4=is;_sDz_GHf)?PgNwH=DN6UmFC^ef$SVTkVV69pDC362m#)gJDyP|US(9YfU0~PPv^(%B zmrWbAV{9c+)odZUPx}7!rzHzfW@|b3xk8q`qS@yPae>U!E^~!wtitKmxk8q2^!ZJ$ zkmD;uVUsIFOGbBHzh&VJuOFNrXmVc{0Fv;nqBRL|N*hj8I%r1|^IHRCA#gT(Ry&$} zcBQ@+ynHxztai=NZ%+9`S{MCjn?GcA(M{lDKO}Y0$ok?wBz5sU{kX~La{LT%+U0bS z>chFq=_0L#bDPt}cORRF3IQc8g)K?y-Ydrx#OHlfN@Mdb`;a8>Nt}C29jmgwwT@Lj zJCYE(!mPSdj5{{{*)&4^>F+ZtDR)#}KW#JaxR7StCfu3+s;QcA$CW(tKHsi%_dl2U zc2t%rmk;@Nq%%8RYlm%`z@?Mt0tWXB24TF~?!A0>G=;g=xuLUC25+@+VUr<-M_CEo zV^OW%@?83yFT~H1*3r)LUc3`8s-*UVjJzC=ByA6*4sQpSw-}G8^&H*eFHMTI#&MzeP6zg`6c2PjF>4zK2`sKE&v*96S2(QJD)pi_!Cull-Q6E- zP!~0rw`$8ySBcA;&I6W3dLTdh6;4?L!-JB-mhQlG5Bv1xGUQWPbdxL?!JltI$s)s) zA=2Mmf9A_`bA6z^BWF{&*4w9?eGrBV3&6@AZZ0or=rUC>^V33kc2@LgI~8E=8?GVs zSqcilxbZRTg3C42rFUP_V1~Zd)0|Znxp;HE%HpfUGi9{ma{VK%n+BK4boyQgMeP>t z2=ZWux~TNS@c5gXsxHeJ+E&y{AWO(oT>(x_74My=FjpTn{3xvh6Je^)d%r6t!v4_% zd!cF!S>73|B^kznI$MS5CS|LUI#80!auLcoKS9lPx#g9`X52#%%<$!u!3JIK3bl^n zc2D>84tCON30%0f(}2ALllPbojne+0Q$ajojaRM|k^5INuNm>SI2Py_>I+-7J5(U3 zFOQ?k==++)YaQ8>3!5R&N>gYoMd5>p-4UTI5J=h4AtZ5Qu$ChfPY@Qag*I4J4pY5A zDqqo+rl^GGCLGH<&<&tCOUdicRK}t!&D6>HES2MHqWOJJWZE$dzxB{d-&9JmyL@Ij zwghA_96XHuNJUt6(eNFeVawv*(u$(MMS9H&@XkfJ7F{?!mw(X_KgHCdlBTlFW)WFdipr;`GNXF5ze2>g`&8@*Pav1hUrc2C|n9gK-vd7%S$KaAK?qqWBdnJVwzC2Tsd zQUFB<`~q(=pPquIx5D3w5gKhXMFS>-zx}+J3tm3et~|lcRPQlXA#FM^axQqy4&42^ z`~GEjCQEMjGH1TGa^X`{i|DL9w-LiOKLXg#q4_~kKohNq?J24tv>!`=<%KGumHx7lN`FaVFMoat zaq$h?$ucEv8;w&lOu4D#4FK3jpvW1~nY<0Nwd1bSkGtZ;A2=-cDI`Y;A7@aV)hV~v zS#wr$Ye|vd7IWz$nCMiRm|WDJlC*6nljg@^szu5OqDl5sbdLA*wy!jdXsZOt_U{Pv zlu`t`C!W8B{rF*|unS{0CB$9{_RYkU5^!Ay^C_B0WXbHJvu#co%|qom=xR!w!>&LH z3?2eyh_)GHlp@r#o@|)npXR+My^1UnnLVfSQSYR8-`k9%1=OnBkvCJ{tFY#M?SNzPohX3ZR~;CTCrN z$I;+|5?M}8N!!l24lEQ7opCuY-3l+Mh+vsqcu7?R3nFn)1cJ6}sGaA7V^NrXc9Y6j z6nM4-V?mYDS{*SFBoX%oiL85>Wl2lFAgZ+Bcv-Lz@K?|C>}s05zonY#{vc7EV5bL2 z`KMGw+mh<#Z@)-{6P%U!odpox^7BcB-%&6i1rX4Zf*~zdFu73wQDWLvSU48)l%4J2 zm4p6tAU8VgtY1?!5hioEOBtH^`~iM}Cb|I6AMoeuG7xWm0WSS(zq=o-?}~_F{=s?* zdJt784*X!9=KW+wq!u2a>4*6Dz27U-9W3 za4CfLdpp0K68bG}E4L@TAe~CatOt#h6B$O*Cq2QUIFOX!4prPgAfrcIhF?SP>#ykH z6?${71aU&fw5;Hfc9|yOfe@<1=UW}Io|5q!Fq8{c&`PZ_e;EZ72C-GbdLgf6jp%Y)vxMwR-QL={gn)IQIe1-qWKOD=&H96AZ! zz$>(eyS{1|gA2G~W(-U{1{V~2a0BUDT~;p~S`XLag(B_zfmp4pJ7!r>XTu z{Z^!$L^P9nXcCmgb%`1tsfdK1xeM!Bmx@c&Ri<%L<-py`H8u3!zGEK>^Qr z7w{CXQbnc~T0^9);F%OFnC&6NZ}z~YU}gGMU$;n<5{>f}7EH`(il@4TpR=FLLXOD| zm$!ax``MDOdrmJwTx9W-(Q`~od0jJYJ2p=Nbccn2o|xkarB8PJkhcyoR>i%ZF~6pE59KP)J-CtB^&@eVEB z&EX@i-;q-4n)ONjg<2+M&=tPuKc?JK1yvViaI{qw9nuSk?yk7%ccg~PU0TgBWJ(R) z35dD-SrhkSNpCjbzbIo{Hq?};tBSD+wDTnm@z?h3(vM@spy)~iPkX%WF9A(W(4N*SYy!Bxw)sbele zOmugxV!tD0El2xR%V7{=D>5C5<&fZd$mdfv+3zS>$MO8CV>)!5AFbjpf1PA{4Sp|^ z_Pf@1tA?)bJq)=Q5+df1b;GT209TGxIH>X-IZJ)^Yr*=>{?9s{-Q>#}#L}4$w=;VnBl5#-BO(!Nb_5L~#&QfUC z1@8LvGX3N&Haa_Hmjt?juM!7>_q#TQTAD%0UTe;H+??8%YpZRA(za!nOjot>(UFxffZsRyLy4#FCEoqhTl^_F1TrNJ9Q^j^SQ;(sI-sdq$1+G5w@{2UBFKU|@lZ%znnibipqAGG}%x_oc%9YKK($wyrj z!yp~U@Kwi_-vaU7Qw}yOZyeB1=5IxW|A)P|+p%ZY4LjfET(1U7qCWi;!Q2MH;KZ{h zc90w!wu8*$r$|+;{#exB{B`~fcw=(W7p+CHD2k#;NhE&{RKp1KCm#G>B;g_;7Wt^v zB%Xy9?tRoRwvdg8uhBI=tVT$FE>!V;I_jlT%ZB~+jMmc>*$Vc4EJ%?z1uhgSzZ<>3 z2WlLC2DkhHhn3tJCAZJdWig(Nc;(sS{Z->1K-Nc}QRa5L$c%}D6(ac@Du3+6LF3y# zC$-zcY6NKe6u0wxL7>Tw#A+~Xb=5@qlr3<#;MD2;oNJ+N7hE;amsr?M=&sd~$zNVT zZa6&NOXMufc~hQ6uPZ2~4d*Y9OtXQ1i6M4jEt6r}zY6CQN*9N zTCvK7>8ml}11CEnNbWVhtETa4V3yXBA|ceUnJYmQ4-U!L75SUJ4o;Oacls|FjB2W4;@ zK?ZC6BKZ_Q|M{BkQ;~{h;F}1L*Zij~Z{P60+Q?z?W&~Z@-=Q|Bf;stj@}=Lgfh7G7G$v2 z-g+-g_2Gp2wFZ}hmG`KQ--XrG6{U|aXg7HqG}T5;C75nQ>wtYOlJ)sKvV5et8u*v2 zk}j;K$+wzM9FA82WZ+Y^d>E&|$ zg4vy71)JmR3$Tqew8tDVa+SMQ6fwkItI_z$X8l;-@AD$EI*9daM#s&9EAQnW|1cSi z*8Mo54AvrX9}1_vKbk2oZ{QWIjF%fP7gkfol&|+v`>Zj|kO%YJ6sz@Cy&$Hq(Hsg^ zMskCgUL!y1$5MD-{Ee5uk73ANf8+HDp;pC6?Uft-<-Mqam6@GaKHYg+Dj$pT{Q;Ae z;?%+v%g3^N?eqPy-VS~wc~$)LoctGHVzA^KMec|YZQ+l#m3>@gB;dcl#;wslrNzP=`LHE{|HnCLcCngZXzhF zi5O(CMvv#=Z2L}eLxszqQ~Li7aQ;v+@eflrS-jVbCYjO_i|>U8KV%MnEw!j%xmPF4 z_$#dCuIlwQcUAV1N~=DY$#}j`WiQl zAkA8QQgZTgMZe_kRyaATn=9H$^gZ4yTmB)R^^)jwe(T>84XtmQM+>Wdj^hwl~bLzK6Jpu;(hX>fPbK%!ehM zo-XFEvZ-+WC7#NMRf4@U3Xfpp@9U|`hQC@z^=Zd`%G~XhQkD0U;@^igi8xYFB$UUa z{sD{s)8jAy`LF-_+h6|fFaP2H%98Ti|NO`Q=imO}?YIB$@BiVifBP@Lz5Vll`yc=M z_V@qv55N7(Z-4u@xBvQ2|M<6mYpMO^@t40p|Nre@{_p?yU;g^vfBV zY0g8XwRt!%u9jW&^+ojab>7P}rh6ElO{@f`br&%8lk*=hA2K)9$z{@*SX3iPFeV^RU$0~UF zi_yQ6ULHS2c?}a@&6owy>2T8QZE3MGuRnnP;-ca%KSw&?%xTI`J%24x^kVQMEH41L z!lq+Hhq}OpfG@8z1g?+I5$={A2z7Xdv@+tZP?QIq!W`6lw1W_m(BzbgrZP_UDI-(g zkHm#AhqacruhcYQ%5z+*PS7dk@$Uh-LFYIr8IzI$DPm1Qp`CKX={Bi-OTQTTGnaZ? zbuQFkwZUPQpF+MgP;h$YsbyPyd&>qLwpLC9EG~mV)OWh&u#R1b0U2eN(#QdB@l~_7 zoE+S8ruuU6S*da5tu7^DM+o(ER>}`eN_>F!wj_?ZA7BRQY{v|Y(@4|j8$s6T+twaN zuAmLrQBmaAgez)BH=!gx=?%@gLMMXy0KmXlv@yobRt+c5zaIIwr;^Pir2FkpHuL&m zFvtBHgO#H(_&68Sap<$-19ph}bJ>dh);Rr|4nJpxzC?FSL!SkVHtTPVb|}CKJ2@H` z2ZgN#fddOt`F==zvJ_Sd0tfC!(Ewb1IvMpL?3v}hNP}nTuWD4WQ@dj2o+ZcWQ4cjW zM34DbF?x)gl_4ZXjy`N{VXIZ6F;fDgO_pXQieB^-QPZM_HNy#83ebe7gFuj2yr~BF=OAFJpWC)zWr|X7t#y5CN zQWIXqMo;{VQei{Z!>!L3@;9J?R^H(tIpxw>sE2@yhb(sSfWU!x>Sds0)`47{EGl8=;C5mlCVM%Q!)m=~@Hw-H3$@UN7<~#3PK}f1)SU=FG+H(P0B~TE zRYFSS_;~qu!9}mWT|VM=Q|Wbe2v4xWDoJm|hrB+Ke()2-t<~Jg!0%CTa2B4l(iHN; zv_qDJcJB0{>|WptTEa;N+q}ONS^T3f4BNela!;vt@&(-v5>f8Ex}h8VYyTj+D5dyu zp}|t+l@bxu6P9Q@%g~-G5Y#GsC8V0c2Xb&FJk_IZHgC~0gS2|QkrSlV?eUYJ0Ebjd zKOSI@HP~xch_dw{Y|W#ez7`M*J<0&^mIEh|l{3`4kJF>kw*}0YrVvUQsMD?$X8=KZ z_5|Ry+EYpiXkUH8egM^Fb`kP*+tn-9;ddAD5KO|&pw05ulJUzR?x^ z6-VE$K(rwG6%H3hf83FIG4xk_U>tq9VikkvSHxueDl1*Vo3Z6|g^4Pn3H zY2&IOt-#)x#9xuU;e%&cLC!&;Sy9g6NtG+&JBWS7oyXDVD+E4>eg)#k7gW7+0tC-8 zR%U`Y`f?>n2%=x98p5~!SAL18#9xUk!a{lF+lZ>lE0afjLCq_vND%!>Z4yV{uOur$ z^efRzT-(em&W9YAZ&~fzT z%1j+Ze;c!Vf0sm`>+>& zrTPz^PON1AVYxZ3!UsXAU*#9Vw6B^G(JRNR5=0pJaaF|#n%%25M_A^sk|J-P>puO? znp%}YqH!bbSvsY}$XPX9qUf*MGja5*uuYiybl2DkqF<$cqH#n0t~pdNUl&uOdw0$4dFGOBF+ZmB$LBKkiapLG-I;SdK=Ew7Y;=iJfwXaOfSC7qW15%*s8KpdQVl&p2` z7 zPUAU#q@|z@T=Z5w5syD8R?ynOrJefI@!JIjt(9cGQ0n8WR_oz_OLoy?oA`yPf{GBq zJgvhSzhs})y2O{&*$}^SR8XnlgkBFC;s?13DkuY&F2gW-1+C;L_he*^>l_8mg!ktf zsqwcf3Myb(iH3H?6|#a#i|hMgg*L)ZOB6mX^ZGO@{)kN<+k&VljSf1%S*0cTjla`6 zB|iSLL_wub^mq_GdDGJ}@`f!>^dN9l^uSLac?wXjz1&G^Q}iWfC#w6-G#q}H}i1l#vREi-`W1PfbO{Q}Qc8O7tT$_y}`k<6NgA{uz?di1Fee+zioh4A$04jXp6Z4`cQDGI{B$Z>h<%VSU(5-T_-Q7qDaX(rL!k)M-^0U{#lS zmthMJR^o|Z=0Fd;)gu5|X6zAu0<-{V&DjsspwW_RczIehKrPW1__-3gK`?+ZrN$MZ zR^zG?4jhOxM5~h39G;mtVy(_rW1y=hSPm*ptv?aOtAaFxpeG3<`sSRxlh*g_gBh2)0RcLOh_fCzJ++wg+DYgc+muAo?L0C2UB>Ki*5VzS= za}8$z&-NR9hpzz{1>{M#2n!Ivp&=6moE>WnL;+9b_2oEvB(0CxM?p{V(?o#*xaX)#KUJd?0p%38Rw^`r@KrhFG zWR}#>icC~|vGSI2@L})p$#8WB0QDraLa9gSv&}D{hJc@ZAz>#*O}r|RMYRy{5sk6A zZY&hI)i7h^K+{y?Nra5_5coy8GQGrHTa&I5#H&N>(P#<*H{mN;DKL~y!wuZsX%vf0 zLe6oAYour>OCgqwy2If8hX$LJI#{F+D5znPIN?|pi>zrWoSkmP9Zf_HNDyd|IPpNA z#hdm>WU!4<6MrbW274gM$rWghBM5$3CpN9Y)2mhHFNXGHpaiiV%Ije4iUwT7Uml1> zP{iT$qk-H3vcgN^=+hk>lcIq`1<@mS{7Q<3_LR!TTjK?OEba+J4rv@y3nfIpck2_l zAMuDVL6ldCYXFUr3WZ?ZFC)~>m~qMh&&9wQ)2P3tF?CusW6jlNca95{6aY9nc-cevF8X1?#Oq9H%{j?e`?55lVnpayB*+MH#=J)5MgB4iM#bl?;h9`vIgRZY}5>me@J$IVB}_ zgQpK|W8RaNx|HDaycDmWpf4gpwZnL9xTfYM)q2xJL0}qcNFwSq@{xqdX|!ZUrPL1# z!;1&8O^d6G!w(CTBjeRM0OXVSM+?U!=(Ei*p$33!@Fuy@G-~43q=lY#MomYOQ^;k5 zk#jI|;)g#b1rpP9#&ij4I%SEJAneHwk!ZXliP6(oN)&Y0DvDs#NK+D$SS{finf?4A zHQO|PRO1-q@P`E^lJS;!9)2aC#G5Ml2z{{`2Gk(%BN~f)A26K2t;K_y!9WuOKcYd( z_d%NaLUAUNYY!v6Fw#q0f2njy4vz99TaIXaDG7{JwE>oqM$&?tvK0yp$k7{Na7eEC z1V|!keZfs$2WZ-{A#Awun=B(AJkVOP#sGb@`9;(K@QebVl^T^EFjfSfQIxk0woJzQ zG7)o1RK0aj+hNl-iWA(6li=>|?oMfOcWH4N+_hMc;_mKR+}#~o+@(Pa6#00b_q^XZ zXC{;U@te$Ka$kGxwY&H3ioCiiNncp(?|O_!CF zq)1TeiF(x15ztlJqJnwM5I-tRX)^~&O_%Vj;?mx>%|jBXC_FddD_pgqfpZo9mbjSi zms{JGv!||stxKP6;j<8I^9YqfGMBTd7#Stm@=vX3h9AAI%zq|N&{KIisdSAPkch+CDf|TQ=+{?u1E%3-!+`}Kn9^v zA}}iuYb_4N_~9|Ll_K&i=fJ&4Ox}#&rX~cWXNZwdQg2W6iA{mEznFYScGRDlp9c%ro(tG zAkFJStjlFDNg-j8y`dvJhN-^dkyr!)?d0SfmBMdw+U^kI-Z@Mn%f63oN9q?p#|)&I z)7(qiKM?&=T!$0TVTDL0p(n%m#k0-2-B|=v&CdT|ErS(g$jj=%T+_ZGL3vvIB z)08hT##%*9r(+NcLuM=N2u!ON^6A+WCSpv(w=b)ORp7(?ofY!y9Bho;!yf$XrqA{^ zS2Ye<5&W&mIayU6C;nl^PL8SK~*z(e#v9QuXpyn!oQC^0UITjQ=V#?V=a#yWwA{6l&| zX+E;$;6m94L6!bXq=urTp}7*UZ@CAES+46*8@V@t!{Qb}?F#u9(?tFOSQK5X-eji9 zqDY3@fQ{Kt?&CM(3REKG8DJ6=5 z<@&&0kMcV@OC^SS1(9o&3P{Xy4N>f{l3e>SlONqc=U;$h;6DRdH?nar>Po_&Vq&F{ zche`R6H-#<8Ff`<=vK?EP5=n|-Onj}p#Csq5H{3#oGldPHOG%}%-V&2`$Npi4==$! z-aybMLXD4K6kCBndw2nJfA(ULrYlej-@yTssW~atWxqpBsBw;EN722U|90F1|JMGF z%po8K?1kes=$Q34pN?x$=J#7hXTsm1dyv*>61O15pwg^J&vsZw_dWF(%55{Tpw<{h z80MKYD=t$Rd$U4WUN-?1rO1;mAPl;H3#jBlq`Plgrb_|m+kRia1o(Yl30q2ztR}w- za~0)L-@(&w8a{(vZu7>xia6{lusJ_c_$XrkFY7HF$^KEQ5T2D_i9qu^+CKXd;XV~8 zarD%o8Q0&@KQCgDMzvn7h|Vs$@>iPbEp~d5bn6lPzW-VdRsx!}PnYCZ+ZoIPByB6v zS=JCSI@OeW5P$0FEgC~{^9S!)xdpOk7%x8nx8b=QL&x$GO#H_}ChYx*r4-VYw2U;z z0*F4>)3HLe)>h0P5iQLyo>&8jF5uCq?<{$QZVsEUz%wQ}Xjfe!C1Sjx*5Ltutoy6e z{AeYaPm)~D!73^J?PTHPYZ{GYmzW`9ExwKL93cXGz#n@RV!HFn^9O#KaMy;yDkIuJQZ^L%53!; z%#pdEzV-cpQhda()Xb#5zG>o~H4R-2-c^L~MU3UT15=fQ;-%Z?TJkx-(Q0*XtbV1; zq-_;@)cK;W32szbeHFv4M;;dr32Er=hvrBERPJhq_PFqpgtise>BVIDz9bQ{p>ca! zBrFQjGHhjV(Ag7qQ?LB9n6#POCT{hGq?EHxB5a;01!w%J;4A`Cw34MY^LmY6qZBo+B9%6VDE(3`&wZA5&;07C%&J>n zKR=0v;@+z2yeB2uj;8}H75-&o%a^@nV(TGMhn_tj~EnG=kN@~5G zWHfQ^(S%{QlT34^T;C`!V6WlFwVjVYWs(hZ@k0QwlV1Q)e|P&vI~R{^OFf%8(M5qf zD5>zlKaQ_v`fiD_EoQ#zW*f&tupG7(Dyy0*Q?N7-KPcs}8wn<^u2Qt>ANzJELQkPs zMM5d2f&qkiACub*8=}d>{FUq(mIdPG*{eLefCs}5iTGtSoXfp&6M!$W+;=18vxk-= zN2ighsO(5~5!64dguHT@N3|Y(0vAT4W>G&xT<&2;%Bb^;Nm{(hm8}3NkPx0;*0Y(7 zy*x;{_j^#!P$M{}S2SYcFNI^qIE3f~WgjT2c(TJNTYi%Kp`lGDAMOQabkd33wez&~ zgbNi&S7x)CZ%B-Z78(FguDvD=}}505rr4w)!T>=XFtowVmJbaf8^9xQxp3PTA`!wbpu|6R z00mKAzevsth$ujC{Bpwc6e~iJ+j?fvV=PzZ?dt)LrbPf)WJ*C)jJRUV5=Wf23_*Y) zQQLT#=? zY^91!jzgMiAAQmAq*=Vf5Uo^UpVSBCA2DVA;<^{GF&s$AlqiTGE!iSdRz~&psN2UW z(MZ3MeMw94p1=OlUxjYt$FKHzbPTNKWnqb!1tAq15+oMWW2Z$f54aY6<#VF^6LbGC zMI!5jM;gGGhN<8i+rL%C@+esZ<1A-KSaob-Z{U{S@QfH6=%T#%oDRuHKsU-dbZ_o6g=oOpT0|hhtwg_5O#lF!^0!!t0)vUctF456?v}uU$ghD-=7U6yqXni{io=up;2aj6aIq08 z*X1pQzn^J5Z#`MbHUG2=moSw@MpChmAX&jLU>{6bc*~%$1sVa;Vg*pJ9s&hg7wPjr zGvM#t#C{!4ptl?^3G#AcXBfb&cvQSii6)8!(>(4X{1p>{Cfgtl!}hg`8AKCX=Cw$K z0-eSolM?GJ{p0rpY3UD{3}ppD7m!#rrZp-Yuz3k(r&-1^<Dh8VEpU}@2-|qBXuA%qc@W-q9s}hbH<;0(dIL+Mw6qG8g-)< zImjKT4pCrJLAMbHuxyxbo!?JBlcf_OO2m%wH~s$Rsodg5-}Xpbup8AYy-V6IK+|IO zb(1etD&4fkTEbWAe=+ffa2bt(-_G1SrJuv(7ShMd*D(|aoaS;eq?qIcm0|50)B9+{ zV&TUAxNDJ&U}wo)>hpd-3ZvV{1Uin*D`|>6a{Q-G8 zV*0r?ISCSR`Yy5IYIIPcif%C3Msyg?ngoJB3i<{uTK1;~c`9ghO}Zl%o+S*VNl%a) z8p;>!CQZ9Nc28qYO6Ba&3jypY;@2R7lg=LYOt+(gD)S}dJofArQD!2ejdkj8-R?5*wfJPoIWI-j}o5v3})QVA6aM&}Lh_eAyVk{gI z?%X70?(vSKXw<$?nz zsbz1v{kCZYo`i!J#UC*zO{9&9FF@-V1v7+qrXD&iCctA@tLQV%Msm!iR7gYs;a)nU z8|X7#QTUGT-a^N+37H6DzBmh(v(E#)u}bRhXz0cM#peGX6OdkdM~<$S&@XA2UrDv{ zMReEfIn+}QZaX{?KuMFwgxfVl?=^eMugllk>7?i_qV6deY#|VzSYPQ#5?WbhMqW=P z*de}R^lyLR?sP)Ng`|t;c9v;AYkgtfI!3fT zClzn)r}&49igZRqr5l|1t&g)Z6}4IcYH2^z>E6uF6>b(Cm*9fq9J~^k0_3fbVa7VP zxrd+Ok<&gk{gz5*&5!_kxfC_|N_X@+17jccCJ||AHJKNa8tyAbYUSQ&C`gbk(MAqo zxkvlDzHm8flhafF^)&aQ@qrB?EaG+ClD4O-Ck-8BQ~K~H-z@wbq@{CW>1)Nt!|3LT zkHm&mH?i?SFAsTYQzI{Y#zf-B#%GkK5{=wJWb&lGnIfnefBlfj7SjnRv+UfX4*B3ebZjTf9YT>%$q10;_n%1bi}6?-x#RD_Hm6{TdLk@^ z*@t18Jk=QN<~AV;+i7URK~PJ*z_S)Bh-4&h?^|5J>!RYqQ-&jtKh8ieIm6 zHzflfc@%XoVoX>Y@j?#bUq{VCCnbH21U2#cg&|D!-aMvfshnxJNnRX7tRV#Tc&33y z_797x53EXACgJ`+!cNw}Y4tP#(=qaGK;xAmKB~%Lu#?9#a{)y53 z1lrS+7%&b-7Oq4qVL{A0W+TqSqSnQvi{YY@#bMbm0@v!H5quspEmuClq@77yNt@dT zNC0|**c9hPlS>+rB)~9lrjv`g0<4pCP4=j52=GBBAmK{Fom~>SBY4iQo|cIVi9!_r zlO#Qq$pqnbpy{wqyMR5b_hpTGdJc>@w-ikTHVcN1Kc$7&qLOqqaH-Y6)gAqjui43Y%9aqkeR1!$`SfU z{VcNwj@yw>(lz97=ikqb8ZCL?U99-KOG$g0`}!}$c3!yZF<{x?`%0EK;)#Ax2MpAO zYK@~eZI1eSm@jVqLxQLua%*p&XQe?Z;eDGXrexXN!NHLn!?HNp*yz31p}J}=+50gE zFrx<4^E6%c7$)A<-l~i&gI`H^!4jLEP2FYp)C-wP$u(;^gFa_(Zm{b?=Uy_8Kz5inwAH=F%IQhZak2)w`dvdb^}27{e# zaTdEdQEc(3We%cxSF&~}OOe-yccCt~z*LO(ug{IO4d0d$A+$Ivo~_=c>+jvTESuMO zzq#->a95=yEZWY8fc0#5vjBrs4V84r4@K>Y8nb;1+-#}2EirTslc)iB!{&`GtKaV6 z=u?Di-MyPJHFWGoVtdVUT4d@lQzv8ylO6KLQ!!u3U=e0XTk(f7-n=oo4<*ZiwS}!5 zG&BR-duEaJWeFhyFHvBsg^o_nYLcGgdK9|<%N-VDcJ44!9Uxf~de;>01rc8VKL!v_ zq63^B&?5Y%6h4-SVS&>d&MpcGwLJ>OYeYw&rCB)iFGon8U50#S!@#qH`CYveM*X+IWY!Ab(@iM}K zWU;|QO2N?Uw7i_pvEoYP9=z^~zJR9x;9QomcxFVxBL!wf(S zO)-tx!i14u^qlMefr*S9>2ojrQ(+eJyw8}B25}7ZJG)sv=fg2$xt9-&KM&HInYo)T z+Z>_V_R~3zja_H(p1Iv>t}YqD=o}cA)(-t`_f>ONOv@>wz~K77t|kH911+Ffx(u0I ziq>G0HxfVhaGdYPHvTVK%-(-+G76{|;irTBVjjw{XHVu!Zan`#Byu%UW%ggJMEyTl znZqA!{#E_E-1B*v0 zokLzV5Z2Qp?Z`w#<_ckn?dn9-=r=Bwrif%S8V)k7|0qg@(X8B8w+}asjNXUE5jM6d)_ZdPE?QBS{3``|EBnPbfxqYO9+YUsIA0_9-9`d-}dKqoKLpe3mq<1<={$`Dj01;=57Y?eR zoBg2^G$aRM*Q6nZY0#k4#P3+4gic?QmtA~@Sb;C40frQ_*cO-EV+Jl?3&|-mAx%g} zauK+01fNa^uMh;W7k6P#@DPJasRG9Ji1rX+bYJu+{L3waJuBqAjgw>le}9m z-h9d*VoN)r_U=0QcD5K-vt+bFLzsh=m~PmssW4XTv%7}_;DbmY$Db&`7H<3^a)JL9 z9h)F3Fm7Z5-4OdBqI}A1E)2n1DAY@op4%H05zP|js1HcpdM9%PREIyB z*^|Vl6%mahdJ<_q#7~49O1-Y>to^hfbHvpMUU51e`Eya{_*30|K*d%ZbOz&8SF}sb z#pV>nu=uiTuEf%$a(!@0^}&`6mp62F>#Ir@$>GglSM$b2@mJn4wYWj9R|P@}kfHy{ zOqN6aI2mP4@!-trsPCuP?4+ zL@`W@rgtXEGCP6R)Qy~6BE*$m{R~4ON1-kP5Del49pdSe@bt+kr_i#)oA|1DTS{08lUu8 z{~<%z%?=0vTQ|YT(G6OA!Sxh^Detr<U zwMi7H=SelmPG1|%wJEoV#Wp$_8ew9^Rr;atFS0ibR6>17oe{K(6)9FMZ&utD7~XIL zOpgD1di$TlRta#NsEzctdXWO!yo8BotwqnWsn{1$jTaXPt8GKs#i$NSeU@;rY+?Tc zjJ8#5%1g(#;Bu4BD75JyRBS46{&DWd%)Nprv4s6g>>pvt{ok_a&`};P{rcejxt>cn z$B^Tm&J+5{x@@C8iT(?UE6or7ebPkk0Jzo;{CKo-Fo1D$FT3)pby1lGY4c+KU8vS! z2&g5^Qr7bSS%$_IDreJ2$;wunTel35I2@yEC932EjaUhYmccsQrXEkfZ6G>)hJb8v3v zhMhvD{E1qXM#5pzEVWvn-V$L|MjqK&B41hkCx$@w@p}nZ*f9(1tlu+oFw3#1#t}y* zO8#lzk?pFGxNAY8g313jFYow7TfS83fx}~Q1l>ZM61jl`Pr=?eUnp&xg)8n^QE=4V zATQ?}3ws?~?zJe37#|f#Po9Y{d8@v=ms50#*7Ogh?vdkq>^!BfS9p%N<#77ppv{$Y8OrD@mvLj0-1kaQgHYv`LIj?_tx#6RLoG1$={_sE6XfZ zgIEyH+>)&Q3dgjyne%-T^zbMOW>Y*F&D-=(zPZA5M{>a3a#Vu4nDg`niG;fs-v0Oq z==q;rfIo~PsIy-06L`|savUZ)G{~S^kk6Q-wF4U#94!@~OLsLfCjPg;n+bwG37@wx zzs&?SAf?|J#M=bm&Ha@)X1v-LO4N-~M$b!+L`+&Uz|CbOAT`Y~@qtfJH2=rWPNRnE zsux)4;Z-?F5a$$dY%RhTHTlcra(^a^CJW9$VTxDo!IEof`(BLuqfsMBG@IV7<+{q& zAaMX4T)x&4fMSz_zijPr^6*D`m=b z4IF>~N(^;?7Uq1UN*Uz>^$<19!06U58%eo7mxQAq^c>vin1g>+vbxQ-U4E?wtsy~7 zb`@G+5pp8OIg;#l6=gGN+8uRc= zWs~+~ZImEx5*5E8%wxCvtu^~3)LtF2cc}dy1{GQGtw0pIWBwYHq&#InCeAvJrFd-i zd2?N3P0Btm&eOnO(*x&PgTQ2$p}NdGrT5iEZJApz+{aT;R_|4i<_ zi%?v@{0(wAd48m%jISvA;mDl`8CZ&=AMiXCG}5gidn>Y&Z83XuXxSGQm;YBQ8km)<%<)7|AOxDhZ zlr)8BZ)`l?73bw9DXHXODJyy&M~*Z`a4YDJf5l*Pmv`SX>EpVAbW_qrr{SXf3h!oa z2vl8ect%7U3C1MmNBElBJ&nY)OmA2`4~_*wAgMvGZ2lFeujYHgOQCgsbPzwXvQ9aK zGxl$`QR2la%2%JLvTsz-ga^4xlqgwSEf`iQhUC!(xShOFBpV^5jK6pSw2QP+KebZ% z#|?i$2b&ONu*+l*r`W$;$z!6riYG9yBlZ2Jhm?KZJ`CUpTjE-n_TXThL%5Ws|K|Pd zSwVk>o4fYWUVqa~;9Xoo5XfCt6>-mk`A$FdM9j6*Hn>ImeZ6w{_^a$6tgIkKZfW8s zs_Q1bi%mWvUQa@G2sxtIE_cPO#0&_z#{tXNF)d(Q#dT8tx#cRCo|+W=DGlJx zh72FEdN3#PUh@E;KTq`{GDMlf#Npln}ZX_lNf*`@;WBS-GXjKbZ~ z*%eZ;NyR7=q;Y*CsGg#P!3Y7xIx4&h6Lp?2w4sn*HNJ_D)Ql_LF*W!5{BT#}$ z*(5L`5!X#4(8A-fWb!K32TWsIHw2H6=C%c>B|bGob5&s$P7z2`!DuTbENdZIoFhJs z#{5R(HA#Z`PfOzhSKees3|F3gIV>_bPQVe%^Q^z+?7=8zniZ0*&vrrd_f8?0li&b1 zzMWfZX6U!Q@ZjS=vh`|( zjJ`)3r@$aI%?}+juuuo3v1x_m33K7Kc5HBfighq0RLK+OmmJQ+`bnhdYI*9Up(+%r zU{SN%go&w%V5SUL~br&s6X46PE1iLrih_FDx3nx$_N(G5eR*{B;srY-ptT zQI5n;kOUXhI*>bnlb}3pld_PF$R+$t~M_)$HP; zsino89ysWI9{gtoi0`{&A=#W$3b1nui?}Grq#wgFA%hZq4ODQ$@|wQwU4c)d77=8b{|CuKfiA zplP@jhHCJTV!QlbYyeXs&n?`q(~C%m2^ZXqo2f+h2S`#70XM|y*&sN?t!S}73?FmuAQ6Gl9RxG&x<~E<#h1*tS?wppFuDy zu?G^rt;jkS9~nU9?R_E8(J=8U3w)2L)J=v9cR06IIxXltj2pV2NTjR_v!DyuYq3qT zVjFRDm;II?At^SC;~7O$f)z0Y`AN=9xpQ%nir&B1JFBB%N#LQJ*?`C=o&FEEE8KwjRKyi5-h zS9^)-hzaTqno4~VY{W%&q6e?CF?)w28~f<8|K#Z96=3Nog_*nmO|_?{2)J z7z=3zL}-SV!G3;k4e^FE>0Qh*a6OSR%7KCem-~Ua>o=wIq;R!Yel4epf`U9k=whhG zba4FkBt<1d<-~x^I(ok4!D0Kq9D!gtRgr(?n((ezB)l+Pr%zzxN_`R(dAoXJG~R#`rX zW#~_jgbB)CjD#TTb=s;&6$H$y#UOFbJ5YwJ!X){b@y&-$+F^G~KlJUpY6(t^n&Ua! z+-hg01N4#X12nwpPV4CS2gatHUAZ$ipG}AN0-y2ivoZJ8(ThkzA4Y=j1$b9SO_$6q zGHs>Ee_VVQ137nKHmDj_BA(~P27N8u^r4VJE+6sm$!|8WkkIJOhZQmGtHjgskr!H6;?b@FWYa>1#yag#d~SXS*c z9l@{@rwMyEvSQ9Cwy|fgL+bPS_5VF?F47z9(ZbFLe4FyXYdM$O8QRaIS8|<;zt@?$ zaMi+Qdh}C$R}CZW4Yp-C)<^|#6(B!7!TWgV#goAxjgo+fSA-HhK=J%*}&t2m@O8R?^X@K_RD1vXP(LfkgCH~9owW2e6O zfF@ilN2f7W7a&pGoLpMy*#aYQo=Fq>XR~+Gz_PLdF5fw1Au>s`%)!oHH{WU)=wNTY zEhgX3)N}QIva=g_AQ)BrXE@1dJ?BHr=GVo1sU^3{L>00-$<0hm;k0%X1`;!hdX(3^ z-=nn2<*g`78==2#pOGqTBD)(8R*9b+IK!QChl5sonl@zm<-&y#P7@)s<;V&i=D~O~ z#}>g7y~402c;Cx%BePuI^U8uVaSH@FWMU*D0=K5nmjWPEi-;W-Y`&cy+nfXC^{?;> zMlI7PkPnzpW$mS};Z~YjFf4OfSg-i8*j8Oq1SHVyMuiniz{GHp#>Y^aDgc3&p^k`e=DgAqiM3xFdPAw&dZ5q2UB_(*V6H3qAp`FtX{9Q>|KJP3GK51#52ww` z3n}pceWY`bE9T`pT&9d)-~E_Xynb+zS{T5_d0W-e($+FAlbYtt0S2SgE=xhSJ6k#EJK;H_*{%AHx&ouRDXmdcgu1E96*lRZHrARm zT4*hHH)VV0=-X2Csh_$dvd+87lQ2A&cbeV0FZR(9_UQn&R=byo!5zusyEehgb`GPt zpg){Nw7WpG^}R(?>X1+0WBp7EFs=VJ7zy>^p#P82w}l1i{IAh_{9mI#|79bM8P{jC z?_Y?SbebF5T}O5=x0xj)%p<3X_CGd%wvA-3sxNOJ#~Q*ru}y?s+ZZYY2n{g#vGcv` z^D2+wZ?#g_l{HSxITkrw0aQDJ%VYv_Mp);KJ0>1`CSF`vQQGLYF>lXNHW}y1W0(me zEPrg@j(5vH|BvN!L5Go;>3u~^n%@DCh%X<27MIXuFI%uE(prGa-^$x_t+{)cnOFlg zbI@Io4#CQ*OVQNkDpoK>PKf~ja6lwTs1l8P{gCU*@gE4(+ztgKflZ^}+v!FNEv^`+wP5X_d&jxT=v`H; z@`eF?1`##2$tE==V&{=z%u_1+Re^4G@NNyZ}_#eXu3$Y9k`sMYXj5{VB6N2Mv31Gx< z1PG?at^X#zsHIu>`ESFk@7Szp5D4-i zqOOloSepe&im1G-?P*Cu$h52Z5y(&)zujl#)FbeT%xKi^bPIH2gST{Zyz9qn7Pm7_vdDge-q@?`{-r1hbN zvfEPs9JO)imhe}ztyPi~!aN9^#uI|#dF?ya5%2WG2uNw<1Jj%lVjYQB>|qU@t+)Go z^Bs)`duUrM7LhkO#^Zf={krN#s`?En&Jv>JDI$8*Kt;XMm{OWQtwGXZ1ec%$`Bs&E z6VZX(Lv(FU-K5Wu42ucVDc5Ifkp+(yy6XNfwPMf)^sO4j@Wwip9;JgCsfqYbFrHZi zHI-u}zGSHif-f%AYAI5J8E2MS@SO*Ipt#F&25X$fd5Gem=T0PvHa%i~*ftJmFj8jR z-u^U>IP52li+A_b7Ip+^sg0Zmh#WUYNQ3#$b-LrmQUm#1q ztTH6pr#$*Q0hDkv6Ou(;)FeP+OpRLEwOh&b8dXaE13_;+ip+%3=W{%?pX)(o5wkZp z?tA{uT?*3~C1ax?p3qn#=;K0Y632(aT@ix3$Gzh}ygz0??pq8tXO>4?N!SNq?;xyx zi6(lcicp}-U|4v8AEVtlWc=aS*6@K)KVtA1BVd~`E!|En%EX_w7{)NA7+->Xym(b1 zLQdFy-7HViBw97nqXAz?&kQA0ZCD)2hQE(LcpN2cs~j1*1bppvLy_2njlHK5@7BTM z`|W^{fEnv~+%zD;~aY0SuJ(7iw7l-jN-4f^4%!(Q8dDTZgNLM70!@(0sqhJp4z zXyuZG{?U9m@;;gLP$$3c=KlR{_#dX%R{k3NsNFlKEvtLdWzh*sH)8gB*g#z|U^v{k ztl^;3y~rdE6s7(dI|G7VkGnWfTc`66_H7gm6M+pcvD5nL2`8#5H97ZAr1xk?F+fe9^Cr)`%!pZA{R_ zu}MoV?sNoiMowr)TbvA+G-OhPh8u5e65r%Icd1@#t4Z7|qviffSU%Ptz{`BUW)JO_ zbgU=#VqYZeMl0FKU+9SX5bjf;AsK228m!5BZG)9TFIP-KfRZ)hvOKSsG*dp@df{0ojNaT}<*pWl)RlI-nWuxyT4okBFMSszI7viF8!a*KY4z zLy}o3_qqBi@~V+qnerj%XzUg;C-rAk6Uk?Q>qN*M3D%$c6yPfdb+Gej%MNstO=?!V z_eaPf62Mbwj|`wrbdsh!uQwLIiuya$pCdyy`ldG_dI>`bz7q^OO>d-*M$z(pE#3RtBK6BgNWq-#LJ&r<1?0v?LP{Xy7l zQ!nEe3&uLOM7$E$W8dG@>l z4J5*a;c+e$Sw*39Tl8_%lu-yaa_?<%H*5yVyll`gGvN1lv)gy&95RKMy)rlJEN`=E zH%vJ=i4@B9pM!=+vHI>%GRYIcvK!F63$FQuAV#%=ko9YY$}{YNeJ1Loz>1%=)07aV{I$Ttici>@;i9++vL;iwuUuk+Up$FVIB%LyU$69V1`^Gi$FWw^e&{<>AX!VzYu3I9?u z+-Hs2_upq0KhUlk8U4dMBNX^R!=Cf68w^gZbHZ&||4IT?H)=@IjuZ`d$KUdg*mC*GPv zxja69b_hIzv)7_}aED;&t`RfCzGur=g_i$Sh^~MeN=hKF>y!eYR6{Tb#DrR_Q!)!c z&$1f6y?3@dH}OS;#RNs;O5UIJC7&IaCh9kZC$jU%3xKoR^1C?tHPYL-HTZkmk;|^p ziAk{)e?0Y&59Z2PnuTT~el+9zN$h!Z*CDc&%Egf?-Z7lRw~V@qwD7F7Zx6)DXCA{B zFC8J9Q`<6?F@9Za3EE~4?*FLqzGVt&xtkT?M8{7!Y6&Qlk#fF z_0)E3BhyxAj_pxh0Su7CN)=Gy2&21@PB*@-`P2x%J~T$CCGr zFg;7;1F_dBrK6=JPg-3S8Cg7spObgbN^FDaZ-YYmfaLvXWP#T?9;VdOTx-Y;JnQ)q z(FpyGIO9sLnY@r1SSbiA>^-cKrnLxbyChh^98|2XN<+-TJ?20H z@GSw3!impHGND|5Ru5Mgbh#uIaECXq=9DEhiB77>9jJ z2p@*#bJ$DDDhx=s#SKY|iXEav)vCS^B1KX`NCJwdSe&4i%m_S)J>RNcG%(UM8j z)*2%+-Nt5dWTXB+h08U-5GNFWi5L6ZAlRK9m?v1|*_}x7RpTA|-HV^OFn5q1aezks zvq7!|!NlIjmsrlujb2TRq`et!^yM4~)k7PZ5&7;3DWUIk_RW%613wa<6CejuFRv%J z@2u?X7Yf*A8Ryx100vt7jTI&bv+eV;8uIK!G$21q zj5meMV!8ty=T&6PM4cZHM4p4N2>K}R(b0cMYveapO8am;w3Up~iVEuYQjfO*jhSBF z4_h~$0ak=eg4G#@AWrwImFj2OCyCQ0_+neB{84pv+q{+KtM~g41n_BHW)DYhmmHEQ zm|kmLc>_j<%$G-7GNaN=WQ#BDY#s1X*ReA+^}XM2|AGq`tvW&Oom_D{>P$VQs^8J&Cxbi{e5OcS6fnN# zx9>j<$z<=!6wP1anY_RCt&sN(UH|4yJxAR6Ah$M=NJQA<@o&4uLGF6cy85MVhj;=j zqWO$^${XG>MkhV)K-j%>*ouP|+;1Xq_#zFGdJA*NpGe<21HXiSxLegio7F-a|DV@p zwF0A-+{^pSM;a3}{G;jU=ixCEezNRMXWP`)T*=z)yp~Nk8$IIBVdgNHb6D6HUuB)R znddNjNnuTRow&jC(UB|PzM#LDLUCi^y*@ZiOGI<;`L?i$hZ^@G4*p~Xhf{R=7(rt{ z-vnEg;Z{n8DYf$GMi=J~rsNr?iT!P#Jvz>0MlvB5Bo8|3?mT8|M>-v3`6+Cb2L4On9^O5INUbU3k`8 zyu_OmY8kpGEImBtw*qBQdQ^}N-7_9nfM=QN;r@i*H1Jne->WTp0eZd|dG+?H9x4;`ylCjTL9+2&+ z^x&bmy-nIXfas>U>v2%w@0vP|LM4LrlBLfw8KpA zu1BAr#ix~AY@jtZxl3H*asF~basyiRW%T3~T@2_LF#Nkw-FIu!)af#sq?-&qKuYc| zpZ|u_7ssDOG&etYc#80NiYiAeYJuM6t3p=y=;Y4K+(I`)?x#|APJOXK#J>?mpZu~Y zSw%0+{`^j66MbFJ^0iw@^!_cMBtCzRYWJJrFzZE?D!}&$`ib*zZ2flA#O=n!%X$CY zXTL%~=Y5l%li1@IX*F>}SMTf0@87Ky<^L8Bz^adwi2fWrqIu0j_ZK34GCYCl>bh=j zcdT1Y7Px3`vvn*vv@SUezcKzlJbiam6VLayiWKQcClo1y6hkL8gEWyYBE5Hz-XjE% z-kXscihvXW>AebpAiXIyKnMuZgCKZc|?9SeKp8MR{oqI(T>h_&= z(A~;c3^Z2QlL4JCyR=2gj$@RoX!azkV#3^|o~}z$wVEV9BW~4M6VE@-+UaZz2+QHE zm1!Tp!KR;Ywg6_k&o;vhG7{oy-*g2S2v~L=KQ}MMgafDs7!6uOP8LJk3J-=ofxyf` zaqo;+;sU9GDzP+7?w+M@vt!{2fI}C`G3nYPtTMBA>Ta$;ta$)rFw?4?La2!)%y(s4 z9%ub$-XM(8y%X54+9lJ<+OORK%K9O#7J12?SL1e(4kreS(7!i2V>z?Cg8jRm>>k1A z)2$RaA(2B-C6}GC%ZD2#Ri1VW?FV3Z)+Xd&md!J?@bpxG++93*+$w9lFk{P8*Ij&} zh1qSHyrrG^!A!{bkC5<#TQCarX9*-*>UkeaAF}-E$YFL>UP9CDG6uF{1j1WL2_|-S z_2_J#K#>_78|(QpDVbALDvz}%TvQ6ax8PQ6XJ?E5JC1#6sROu8GNyHMA7iq7y0AZF zCvH;f*f9PR+NLiF8VS7|S#8BW6B4t)Vqng+;1!rLRl7Fs^y$csa8t4z`h6gW=GxRu z`RIx_Zu}Of<_&i`OA~6(?%`c%<0vrRydoUSYG(@VEUE5`*SazxCy(>vW4)L$ zzu7ul@1A6|>7C7l%6J9T{f@T><$I>kdASL)55~oN(C7A z;)mL~f~)fx(wBTi6`Q)90EyosvE}u z2NdQu=~2XhuL6xMJKdIsYP#DF636!8l&Vr1CajlxWg*o+a;zjb*Fl~=xuazvmj^z$ zA1{}hJbSKgUp9B4=GqV3Bb{(q2W2N34&6m;k=t*6cRZv(V%98EwXb3dB|VowYwmz+ z_sCv%Y->kfBVY?@I;8XMF=-#NQX0CI}H)tEF`^kt0-K&*%t~uailC) zs3=8s2UsDq=CX`JR;17?gt|Q{zmhFS0o`T%@;7H4eY2ng@R9GT7oR83+HWDijhWPC zEAH~V*+gm_@9?3%f8nvZHZoENU>1Fs+VP)!({$6Wz9&V?L`(lZ^QX>l9iG&A#(28k z(nI|?pqD&4VFG3Urki;a!v?Pt9KY7jZ)q~DJl02b+SD!#!*>bZykbCs}}2H;bGWmDPj(HyP6(b zPsHFYzuB*OT1w(B_is1pDHO?w?aPHY`J~pEmT!Ozl$zrpt`ax@S`OnAwH+CM?|Ot59{hEp@JW?0xaP z9-N8es_huI#^a*3?V z8IW^KY8g8ix+3!R^2GG!!Zmg+&z$G!)tVcCL86fGtLL{^g&(OqKYHErfRK|uP!b22 z4Ef@1%;eho=xzo0PjW@dPOC1*IOb$@Jb^e&0!HgL0szsbEabEKH!dT<1Z}30#QFvtrz_8~*J~!FT zg3TokhO_3&IVmBN;4@1pXDIlL;uyiPw@|k-_W>t2wnO~y)x6r`w@9-1DJmNHWnMiZ3DV6G?vj_6oBe(~A6*P|y z*TjR$)JF=)N)uJqgI`!UY%;Q89l8i@mgw#FATn!QTb07P6Zc+t?1cueX=$usi#%~t zAhDl#yD`yQTjF+N1?Sdt`r_%-VHQ6R@o<0mK>^e#1`?A473RYyb+TLoq|lOA4K7Xu z9#>wy9UrZatr#GX*NaVoo{HPaEG7(ri%%34?ka!1y}H}lec{}(CST*IMrgRUyEyPq z8eMibe~T>>6KT}@4!0qUXZUvVC*b+Sf73JgyTSG47UvoOhf}RcP5r#FKY8G`;#qL3 z)ydMr&3%$ z@#ri~$1a@^^&Wrnd=s*kH|+*wbq(~i&U4%_Ik#Bs@pi}$Sp25x-z$K)c`IY?tiQTq zw5rpHdkNJTiAnss&;&X!`N{E06P%g(Upxp7Vg3z9bWGM2fQ(1Vx-S+wb?rIuURCOd zYf9Y&8F9obupz7n>^jD0o#sz}xiWCX>!RJj`eh2UnkIo({CM+>P^;pQH@(^0*tMb! z<|*54-Nwh6Cii335+Azbd95{-qCoFD0Dh>AbNK61QhhJBW-ISjd+pSYqboq>FklE; zaA?q)Smv<=Pj$puJ^i1zm${a6;LzcoaYA^O33o6hik?arC&C z)s<2}1BN{Tjx8;Uy_}5{95*lSbP7AK6dw1a_ky9=9jVmu*8spi!YaZJkyFpSi_-dj zIwX5js}rWK9VVOk;(RH@HdCh%kPp6bO>dWJ%7>pMx67<$-#!~TCE$^lxWKOa{)zHo zMga1cDUG(J{&h#q=T$F;)a|xV^>({qD_;A7t41aXkAM*E(8koR%a^&6;d9rH9O~!% zJK)D5I6R=T-$td3ztQ>!pB)mrvC#?4Zh5r4Uie5By@Q1hdYa4@{ILXVEElN%pYd)@GF{52GN7&+hMvi7MKbWjU#Ap@IZTWpM7@$7opQ`F;G zafH8(H)r)UX?juzfIjBiq{&SmCy$Ckz`ie{dB@lNY2PLhuo?dd$1)HeV03Su1$E!I zb-(bt#J~FICmcgf`?06Z<0Z_kc+zhO&)WS^;>7QM;)WzxvvvVzcJ$To)-D%-4nUH% z!YFxc&xPAs+G3|%Wxb-f)Q{BU_eprXitEn?%J_;m`a;l-(mj91Qb?AzaZ)#Z|-1hOGb-2+0-?oG!RFr?K}O3 zqw}kTw{TLIW8u@4p_LGgpz{YD;LLS>>FapFtQz>HJsUx2RrMUT7q`_L<(;d41`k19 zVBt6GfDhxHw6zw7ovsTR$)1hxL}sqDI4yn8>a$&pq-v5meyv!t|$&_lwFwyo{XfDc{jV3=hb6idHr2ZUmEg8^% zx7LN=P}k+a!}p|p`NP$C=8faAx(hgP+40jjW7c76@0B@zx&9JcPagIO;e^5R1>rCX zWx6A$4t^dBVzG&iCb{F27c;rN!%|_ezXU#3YWNE;8jQsQxvq6C&@X_`!yT=2@`5h8 ze?2%6an3M=G-CyLdgEBesp8y1pMQ=;eVksvCD_^Zr6eyg_Ym%>DM%??PP?*u_^zd` zE|+z8IwOh3U&7DEPm_0ACmUP>)tVU=7H~dx8>7j|!XT*f995EAsP$*QzCT5`r$*t0 za5m_rTw7T3u8k=EU=}}x*m7=n;=&3SuY)yf--*uzxh*Y6Z~e9Gyjb*lCe#9!nh*83 zg4xx2s^y0DZAXAOx~{C)z-Q^#j#g4gKe&?*vs5D0!HL7y`W^5W=h@U!>^F;t^ZjtR z^2hP!oaG*xdxL8rb;!!uWl`I8*5Gdcx%L%yIU|&+cYg`i9E@z3mq%^+n2*L5og)f+dzcN@k}5qn%kYLrsU192<#V_1 zGsAz0jFg2mvc?F9m2_I=gGGH2jqRL{9&tJF_I$kEE;Y@*4{ei*Av-Jq5&rJiO(k<& z4R&6Y{IOTBbiR>eF<7dlbBJ%k(#|)Rw%Gm7;jznZmBQ_@q?W!7j_29m+&Myn@z|$! z;r=HfP$9gHY}EpriwBN(?%-tqNGJ|HzHNU}-XY1c^skIXEdp8`Nh50Fh&&Q8rlqvM;G`tpB=ea2hyD6*y?4lOxiPVf5q}@15FFDBNzRv_CnG1 zr(Wl8nL#;jnY>whv%Rg`i+ok8pkB#D^P_PK@y$yogE3-RFtAZE?D7 z9=z@JD$lLrE4O{{ zpLNYqY`Yv4p2-+%c6_}%2pY79Tp6h1pZ;4XMoUleUyXwgwg4<#+1WLmz1!biS=YHwv% zTy^lF>1*20+6P^nhm!B-pgln>vfq_?5KY!J0 zR%#|6aAQpE*qbH?eQ@K$eD#~!!QL+X;9sQ|1b7k=yGfnfKWSw+uWI&~YSIo~Ytk*e z48UQZx}!l=CGG)YF#pmBD2S(5SZJ+tnUtn1j4n&>CZnq z;b_<_PaI`~y!&D&v+9|ru*4Enc=3vNu(S4@+4h{|oe89ACcaB%IF^c7`_J}Lb@6U5 z`N`7wOYbFj&A=shv+B@;sQO_;>FfJYb{y(cA^1YmRp!B-)bH_3w@|jJX%yMaG?aE0 zA$D^ngfGO?+RMI_I$qSBh!^@FR`lW(jQPO!3-?#FM;=Cc+tg{hWC*J9Vk75pV6mig-V@mU>v`hZeu~p# z+lqp6=#Blu-o^Zh(uR&OlEs_r-h#KUUn95ZW|oHb)SIlFr*ns@Vtng1qb+)*7z>&7 zLnzMIsUxmc19JmBO|^%j>0j+pn5_P$VBLH1QP@KJ6@Yhdazx%9YJQ8Jd!-&k$;B zFx`-Ihvvk!E}Eb9CJ*cyJBD72#7ss_;}Z!!5I0`0OEP;8X>ky(WMV3kFXZyGZdk}z z{l%8w@;rmYb!4WIc4JE!(qmUi$;)A@K{`C7qE zbEDLlQHw)Z@{^3&FvWGrz*dutYx!%&bzj&6KM%3+32nD^)aQHt-@n{u?-B)dj8{JI z-r9xDfRuOPoL@$Krl<-}^=`H()(pxa2foUir_+-ZmpfuJnXU8tx&>cHcNFxoxi_A? zfq(WhZ3L|s!|tM+;nWa(s`ChdJ4C=I{w&QBrS9gMT>CLLwow&y;j=Q5n$NsA+T+&D zueWx?^bejBckO?JQ-MRUyQvkI#%_i;eCO?8bAV z{_gpOv)QT8A^k5@*FYh>{O@d-sRAgRv+*)m|L=L(ZtpkWWe|2y&9kzk!zc`xc^EN| z7qstnTNi(Pu$p*#TZ@?}HTr=1KJ)MKyx#j0hg4Ha$F=uT-PA0EiW=ICWn~&qGJc3V z|L#qNvDXIQ$Qh->7PD1(F$Hzf5-iCtxbr`s0Ln?WNWX@=V82N~tXZz3QU@Xj8%fNk z_-6S`kD0QGsI-*HwIYdmLlYm?)46rn*|T)bd~bYT}Gr_Ci| zuFyvTPVSX6yy>ApbDlL0HLqVvW*bV&dgXUV8RSsbi(C|e?X>TNtF>yiW|--6LJ?V~9k~^w!c)WCDl%YTXa= zLL}OVRUBLbYN-EG(YE;}5`iod3ew$jHeZYYjidhXf7G1@iM1K;1BTi-+5d)Ts>%BK ze7DOJMSWL|X3;EBV2}K;-mT8F!gNSZ6_cN+6}9(5C+IWON#9^vG&3fpGh+6_UHegw z7#L!X++4|lii~RfG}q!}JCEj5@aK}wmM2T#s|uBFItlO|m`;hEmGPjt5BbHegO?&w zL0B=HAW!M|dESB8Z-gOs?q{Fx+Vu656DJA2Q@#wTcyY|>93$G33Rm$oh-;*P+GT6g zqI9mDBOJ==j2nQ9(U3aGL-`F*|GuX9D;Q*j3D|#9Mu;opMDF!-iYj{pl7bakYK7P% zc$1Fl{tW-|#Xj;Mc@sO|$#4rEGSMsUhn5MkMyd@CwIl@^I;qkN7=D3`%}Rx@{ZP>M zufb3^?Gif58dpgfqjI`AG*V99#QN=P^>DHNo*@8K@+DHOb0|xE7x@v=_Q}Tm1(#d# z-|D(QhSL(f&}AZ)1+9+)&@rl~Yi3BnhE8k_dX93sNXaixq|Do`4Ao}PXp_-E<_(mH zJSb4#AF|dHPTS*_&yE6kI{y8H(W-l89yM&5`%P|^iu3TE6QkUVZwb1OhNUtP#vv-} zq3m=^E+;=K_ivA&4>&c3=nuEUBT|dZy}yeCJSfUv&p!|6qiBCqWY2ZM^6XBH)+)<~ z))Ys#>USrC=96|RaEsbP;&|QY}xu$PbQq~o0JZR(getnER z;u$l@h!ISX6wVzX3s8f`SHdb2 zQI?-eQ))*35cjtjukUf_(uDZCM3h%?N@lceE7+ivwHN33s#6JjF~U4f=5(D(&FhpJ z14bVuQNO;op+$>&>BGs`w+$aS(2A_Hu<^S1cH$K$T$oDM0X3i6P=-LU0}SVPN`R3jM2!o`4r7|O zy7!GCi0OMYV;=wwpPlyxWZ5QkI;G?`qTRh9!Ex$pXjT2MZhr3E{XOU-vZh##QMK55kS8YaE;*>qyq5X!K{_z8`HcbOOM-Rv zKaD?kYm`)fP8%(RHy6~Sk3=9K`SP%-JfrRKkipZKtluASzlA)MhGho5c)`p;;>y!>4IL@kVvgDfj!O)*@AEPuGEedlgL#N!9RGCo zlb?j+EGFh!a(H81Te`Q)3f|`$N&FidQ5)Z#5J^kiqZI8tHxM~5NNOdQx?hE_jWa3S z)ujh{SAzZXf@Tz;D&$FLx%veE(ZHV<>%WrwM*)PjHRWQ&zEoQ+$&yW6SY9t1;q5uE zxs~X!=qWMMnJ97AYCDg6PAjmgpfTzJQ_c1H?TAb@C|Ln#Tt*I;p<~^U?!`bz6d7-5?axqebX zPKOhy5^?zjWA6Jv(|J&UC zyUgSz%&A)3JEjH#Cvk6w_ln;2nFBeuUkJ{eTE*YB4DAhTbgeeduDDT~jR^my6=D3xtkQLcE`AHLXXcU!445 zo>mV_o!#qbOayW_V~cg+{ff!b;{F7^Ma{H~+Pz~50bl>~#?$qeY`*mGqwRil+U3nZ z)iakKOQQT~z4eSC#pCU^yme>&`*Rj2j&EQX)$6hbF@qw;GB6jkz?u&=#uijW{R&-@Pr_UGq8exU&*L`a0f!S79sgjO=bSAI>8#Gfrn={Vg z)o`Eq<6F&rA+t~fEtXZLlQT#6NsNJq_-*UCyr%1T-S(AMqrGhryyP}f_PO-cX1_i% z{fa#PzcC$eEEd72qJK9SoWhtr%r;nC1-DPhONBQImQw4k6AXjXVkETBBkyRzhMrv?lHuo;srGZ^%+NzQhSt(<7XWP!#w19Ko)rwInOOp4tRmJLbh2mFI zUXHraEl5nYCP0XdWD?POUtAp|)IfH)d6|@e*{IMhVIr7Gsa!yM*HLj>rKlgZT!>*03QYB}??Xhz#<8c54Ejel-aeoK}prUpqHb{=U!slJGztS~9hC zNqu62n!eJ0`$`IVf6|!@$uB6XtOyLNi+C4x74wlfcdkLDwDl71y$da|798IixI2sd z|1Dn14^rM~P4SVRDUR~(y%p`^C4fn^k}aK3#UHLq-kAHL+x}V9TdLsbpZrsj&CEA_rS?q!>;#3 z;{wAIefIiv5rlooHl6+377-Tag(R5#;b5m7YnPhI1tx~MTm)&nZw_*X_p^yIBjrZ% zx-Bh4@se6Hxi6G4#gNJnyx29|@fo|aU#&^X2D@<`WFDycmi)s!oM>>G$Ur56-bJ?O zca-(dT1K+`=v4+C5N9!j7H6INyv=<~>_~DS8jy>&&iom@UhQpj%vmYhrs1nYTK52v zO&!QksINGnYLUOkLchL=)Zu(u`7s`si{i8-T)ltzc_KH52BmjF2pZ#l5D?|Wu8!>+ zx3j0U<5|mifpKMZmA@~^9>Jn(@En>fnLLymL(9Y!C{@zP94VRFzuBkF$T`qnJiM>w z<(aMW&@JMzvAhX%@Ql|scw=GW{8c(3gXU1@OA>sr6t#SJgJ@)8lHnzEuz4cUFh2`* zml9uy3XIVkvf#WAieXDMUw1$^RsiR66`_M!eTh7edODh@B;*sBW z8jpEnW*Oi+4I!d&Xv zJ-nfJ{IRFGbB)o`M*Q_-CB%u!7jdBQ5{DFgk=(_8Tfyd+t9O15>Z}!XIcg47gTfPS z=bxxSMA+kTG;bbSAt`n_Y?R!}*lZ2L;tXy$4gba(|K#|;1IsX#YlGkV(cr&Rv6!ia z-`dF}M!YWM02s-rpJA!^yCWesq48!803zC5S|C$KWj2}9t7X*s=hu2MyuyfTBQyUv zLgYIwXAZG*yC?jTqyGb^tfI83nDGVO2#+9aAF^nYMJLNE(DnfRh5Gr6=(4=xPl-0_Z{9F@N>hv@UNO&52#zthex zLfU(jG5~=2h6uPWw3y{k_mZtS-N7STC5TpHLPAMh%8s$)9O$Li`@3&{*nox5pEZMw zjbJfWWK8;_Os|THvmHgV=$WP65&rGGVgn1Nh4wewuk!)RwCiXvZNF~hm6l&j`(zZ^ zAM4J|825aoA$vA`<7X!4_A9XbXOT8%?tV3eUj0>H}ewFpXD@tCyik&whv-p zCZv0>7fM`zu~;a3mK?uC>B$RtY_l5J-(pBlIoTHoLaN9?jwYNYC^a1jRX86*C&qg4 zKrB+2f_Oo|Y|I!H-9|<`V0}StU~!YrQCR|Ux}+PNpqPvEO=MlsMIDA1HiA(Ppgj$f zC(5{KnX26`QzDFJR!XYi9S;DkmCH+!mV~OW;RS9&^Hv2W(&(s3_+&6(-YAXLeVCb&U^Ih$sChZt91$kF(Jh! z-O6qYYA9w;KxN}4@zE8B?V3V-EHz`sZn%U+9F?KZo0v}Pbs}b^z|MNa!}w#oB}l~c z^-nm+!bhXqm6#q8by_yK+S}yP^`!T6HzwL<$i}>QS#v<6mlSwS?ww@AG(`8lU5-t3 z5VFqdobc&O^scGFwxu97C&Pz}@L6w$yoMWF*FD3)in&8n-`Z&z(fCoH`IyX1UMl7T9wy`XWY8lAy?XA*1M^}^Fu5pZk` zJ$w79a3y`eCj+CUt2%$3=jwJHkCl)vnfz9iWuc}dKX6zTg-tKZ_U{Ayk@JCrx*)# z%3GjW!cXRnpUkvX;=G1VTGbPeR&#nO!#mM5L33S(Wai!nfJR*PLCT zxo+Z_K>XTn^)6aAdBlrxQyGoypt2#Ts`&hXmMOS2$2yRK3MiqsWTJ}K9n&nF3AIw5xG7fX7nU*;xIoDot7|q2g*By(@Od88`$W7L9aHt z_4VX=NwKu+>_STSqj#P!XG}8K$HrAtk`Kg)5*rzlOSG0833zyy*4hdfl;jt;fWIvy zz65ek`uiV>0-H`%j?qBc==Bki^CWZuP0a1XKF0@!@*uZa`#~7J?lj#ny++L|7P$PP zXo@J(`zrZ3o!#C=C}kbTlr}Ib8~>OI*-}v|Hm3YMWWdgt+zVBFCqIZ@fFbWGME>E? zCz0dTR~uxNTC8{O9rJ#~pDhq;4<$4?-X9!jWUM@3QUceRMkd?!?ISV3BybTd|(BxIVv)ogp|8SpVa;3AU{wN&c^yl64`HO49^gt&l z$wkp7?D$=D#R;J{&!IVgtx}gLJBnSDNh&6C80N3Vt2tWsCkvlKshBkz0OD>cnD52~QpnQSpK*MfEyHi4hb|+LV)~Kj{Rv9el%>xVZVgquf$MbnLeVKM_nfT8 z(XSVyQ(wX5gLpjzxbeY}ozIY=#pGKO;onDUh8egmK%LQ7R8X^R>zBWgdRzm~)a%#D z`Ae4Tk94i&|gOo0X<@=c11aY+O` z1^w2;BRs7yVyx8%j0#n{9Pk9Pmb^Di^F)P-0mx;~Y{< zqxiBqlt?jnS)QMx5o0_@WjRMxU(L}~&4JM-R?)ZkPW*OOAajWYk*^*F9DRl>QjCiw z;$&xuf;itfwQ!!*Mo&oeiGXII->I+DIB}fHSUI+rh(4AS>&^vUZ2zgDUZAT|UIr*Y z#4fnq+0`k`kN4c3-i{Ws{o0NM#iVPqPS-p#a>*0eNVm&#UT%N>^3YLmne3RHdq6x1 z?Zm`cU~^vqai`6;SB8iy)J!sF=}QnobFO$jf>J$|aHHVAP~-&ZW10A(i%Z+R!j4Ud ztvblAvkBSJ1axluu@$l9nBzlvl}tM+{!W;@u{{XEB`4VPA|ht~?T3hB)gj~@i}H8h zFB?xX0^UW4Asy>SI+)Jy(B9e>S5CNZRwt1;n78GVwfYv7@-YCa?dyhAoU)(swjD$$ zE8jPgc-Soga@)1v zbT-EG;u=%tpJ>BnN=_Une&goKf7`zJcK#|FVo8PhDiT~Jw3^*5lgO7?YrHggc}F3P z@4xi=lez3w)l&IIDZ!6^p?m}wC4BLM{||d?k3c@B8`Y_ZFfd-?TXmxZfapyBJYiknsgLIy})ZN4GBmjZdD_h zRS_vrMQar7fIrG#s>%uR^>0!ia9)~VgS4@vjnX{NF~w7Tm8qNqIV+@zW)9vpAH3n0 z$jyR%vHAyj%d)bwu_aQ&Uq9lR1+Nlk=|(>PCW_~kld^Mh!|u1tV41 zntVD&OZ86>^)iHuXM&<&KrD+0qy?IU6 zYyLRuP+P6nU@BR@4bQ~Ss7Y5sIRJIlIHjuVkoAuR1YIm0$6LD8Rz*el9hPmq83K!f z>UR4&R75lx=yZ8?9c6;-HZ0(aUZd`R8Y~hVq~9h#0BpbH_2Kc3rI~6%)`^bpCi8ya z+29$*#ku_XrObaweD9d^BkNd?56=dL)T2ZEs0#rrS=@5a0?`$(NmpS0x{kVo6GWOG zDcnz(|JT(9ZQ1aijk?+7RsYU0TYO+NU?XzJh!oTH^^Q02jLCJ~q8xxI{?QJE*;?=p zc4#H|=g{qm4eyEZTjpq-{)~p2?@R`6J{I2iY>ZU5{LeTS+Qv4;=9w5-*Y2I$^9f%* zYIiPW*W&hLb$j18LN4{qE5?L=+1OXGy4ax1B_hTEboP3!?Uk-0RS~pK?uFB(*AL!k zDHG$a2C?CZ0;L?fnvcZ@zN?w^ow&ypn~y8#G+zyCzIx!Qje6wjBJj>7f%NH^Wjz^3 zQKnI~h>{Kg5BSl@z_>JzyHQ(SiN8-~K^r3<>>TsR(o=eD2*;}PCmdkwqKeLFcF{)j zLRg#K;<2Rj{Jb#eW(*o=+?F3y2du_C`AuL~XAx63>J@Ia93QYs-Ro}5XV)vG_DefW z4kp(cC1yTBmhW4pm5E+~C(=@$QXh`32v#*vv3|#p zQ1Nm^K>d*8X-HNZ;W3OG(5Z9a`Hr>0hf@8QCCyuBauJ%`9~O_P9ZQ5hXgpx*kM}wt z7gvAw^0(=|hey>m_>{Wjr>Dv1+K$ghy zbewDSDBj=sE%uuQTB$JTcjVo=c)d>#Cb`YC%gOv>(9Hehykpi8YoKZmlB(zm z4^saRiO-;ESVerwp9G^CM|Lp(X@2n2{0{VPe})NBA{A%Pi`)rr?d|lk#Pl-#nk12| z9HIOtA>S_AGINqy3GA`?tW`UD$4 zzDY}pq>LeR!o3}>xqyIjBIK8F?>AC38OdzlR2|WIcV)|ifGiV(@Aqu2{Y77OFg>xb ze+zt}!N^_eTeD^R+%G*t#>oNLP)%p@D#4FObt#?e;HBuq$pKTh+di3tvehGq$UZq= zmP{MQcVr-i# z=dJAR@a@y8$M!R%gY*_B_VX8m9kMCb@Y+z766oWVt}GElL1&fU<29mzscvuFn#h%N zW$(A>H_nqJ56Gl*RM&I%DT@EA&=K6{M~d#RF|J*qJMk>0*}qk+W!MuYtfhH=jKqu{ zuuRfChZ;0*+>jb|-AfO8R0$&bRc%fP|`{pQZ(pQQ=3^-0|{tM;u-LSoi?(w3850}d_xIu8f_9#nN6aJ0|B71`pE{X4(pMY z(wSGLu9RXxOudFHqHnQF&C`GSCa;sD*E${lOq?ZF>LDMjyic~wx*AR;1l6Fxpw9m(XnpGfF8 zkm@69TaGQIn{D3QF->SjZ<;_7Dh8G*T((92Ma+CM%Znd3s z|1gm;_!Y$c9u`4H3Y2Znfwro0-WOo$^hvADFw3A?hvAZrGeG=?tI01nkr;6a zSX(2|(nLPW!O^RxOSc~LCB$A`89InI6%~JUEcU9a!6B1YV(jcKZSp)Ms>Zg&iXL$J zb|avFPd|N7Frn75ze+v*v5E!EWrhTtTVhjeI2bc2D-El(4UfV8!YWITqwl9f4EIGu zxtKbW*Ol)_Zo%7`N{>{-yZAje%Dk=6nEpi>(^n2dQLB5<51{G#*}bkh)jAQZhG@Q1 zS``Q|_s!&#GUAiXJhuUU*s5XDq`(FXH{myzXK8h43}ZLvi_MJ_6o%ohR& z3nCcR%)R5lgjT~Eme%I{;xX+8+8=lNB__(eZCF4xZ@n^XMYO&0`=h0=UX#v`PGIms z$awC8pwYvh5Ctc}E*nyzfT*enz?a;Ge~Y+RQVCQHx`t&5UXmsPht>BXsu3f>tbiVJ ztUzebqdVS@In4J-i85&8MqnAdnQs8SD=Ej{Z1dNtrN}l$ct<&OhO^*e1xdnTm0fph zk1GYf^s=h$^YKF4DGOUYt_$jwS>=hX4pp&#QhAHzdqNYf$sE1IiRUHA{k1-VO>4bH z(2-N0M@ad*JXz4Z=(he}^3MaiS_oe5qqlm7{6!>uY#BAeDOTF!#@`Z?{fpDjRjTmJ?n!~Z#$m5?5F>zlAJg@VlrOv5~4EICax~S6M zHp{}K|By@YC#9KxK`2`Lt{XikIL}m_v>(YxSl+-)kf)pDp9j3QcEWowp~1Yq2v>koyX3b`fqqc zLD=?;g8S~bMn1oK4ON_<`#?@;&>6EOC2CM7AD9AvxO%@wzzo8(OQ=>1tU29<9vE)B zwsvG2pY?mJTs%98n^zhHo|oE|{|hK+p>Z?9b@}F^C%hh=FHl<=GU|Vw=rom`Y{DB! z!0T&gQqjU)dO4nNrQGJK&x{D-P4pQX%YZ31Tpl3SrH@!3*7~;o0qQ;wlF1>#YS7X4 zvoew2m{DJ3AioMO6oz|=&?6ay9nTORCKj-=3kBXC=V&I2c9XX->m_oiFp5CCg zVfAF7?80WF%%7Dc*B?M@|uZnQCe*XB&wC@F3iUMewiM)-Gk;@ zNW6GhSDWb%B_)fdwEIJoWTqOhky~@N1=ISJDBjxW$1o>?U#tI`;rx~RkDOZQ_Jjbh zd;YoVdjVf8`{`{V(8~$RDs676<0Up46y(idHOWZS^S(Xx^LacqiqMT@lDp%+QN(aK3}tZSlH@Ab z0nHspwH-fuh|IdrWL0lN5b_WWv{r_=h)waiqc!g-LS-Ju)v~+Az)i<~Yd<34`!M#z zZbFa9+e*6fHZa--3kF?(B5NZ?AcZBrC*w zVBVYHV^kWvLK?BBJo$(pN6iG#Fk$llJRxY zx{>I163CD1IF#Z0!TcDE-kqqFtD4{wqqZ99e6?!wZYU#V+6HK9yN(?Zr8}n>M3~6S zB{+S;p}whMGy{7-;eUTcC>c1160T@##Dpq#E5aHO;kAqf(p|-jHkm1Xb>2C{7#9-Z zahqE!nt;qRO=hV57(zG zYg4W-7pWKO8O4PSGAo1{ z`D|G2L%M-_Jr}l;Y2u+{MXTc4u|=}`(*LXvgCAuCn7^^@(WW0~G>?BLVXyuA4qxZQ z!4{8#w;M4n=>fzxLsf7e^15ERqGah)S%qf;2l+ISTnc?0T}sxQ@QXQ(AAB8NH4y;| zHtU~}L`#nURH*vz@d}v(D=QS~CD9B8kOP1}l?~TXG3m(?<=Y6h+K@=AF~r0D7upa> zGk*-qRd(Jzq|Z^3aZ7~JqTRjvjsChrTqeNa`V)PTK5SL=hi(jZ!S1zy0<9Q zb7uF)KC@eU-6dD=!ldF-kGx1I&+q~7v^;!z(F-eZ?RCJ;<_kAl1fDsc%4s1bS4KOD zF?xhL7e`II_S8r(F2@&cZUbMoJrh!XI3pT?b=x?R_X;+E5*+2t!Q9Q(GDE^GY>7{7To*eoGz zAVL_Zb*tH-iSZ21n(%SB!VK>0=tjoB zP-8w616C=Qi)e7A=mkh66&fIAO9~XSbO4A@$p<`OOO?oX9FZ7AR9O3C2q%F`YKQ@f zDIAyhA!q@3;ixlEHu&`gQ|8E&tq>i&;66UEl2gsa|GV#b2hu3&?8i*(d&zDjniz`| zqeKx0%6*WmU|Bef?#TGs#t}1|M)zd>FEgO#Q%r#mo4XeizcXV8tpuv$>vdmnra-Aw z$YjnPr^--@-g7^DZpvfBhAF{FO7_Z9ftYF}nXJ9)c-y%Cl8yN4n?a;bqf(vkIf0XT&-IBk53?74e}MH&JWt; z4#`AQKk;&q5{c)`zFweAz#2?MdmhDwkkJG zhDWX})0xPXRxoIVkAa{REC0==IkW|VYWWX(HCu#u)CvoYUuB}{m*Bq_breCwR(y4u zLNKSU;&%{GBmNf_mQadmC{4*17V*mJJBpaf#W|IfoXoRSp}Zzs;F9P24^r1SA^|T@ z0LOBXZdk3hO)#wW1a7u()_PL9F@8z9asRSt|7Nk&BB?2aQ0k1cF~pOSQ2@1*9ojcu zJJ4P~Im6YyVZZ#q?+)ajB-xcW(~Vc>%U1d3L$X;ST)vG@>Jx*oFXB4(=f7TRauf4I zdK7i!{V?F_@wsq5p(>*C{e?6@kvzE<5u+0JnLMr{1&{Q?bZ*_vbb6Cx(dFnHAxtFxSOt$Ov))jda1B?)Qc_wO>pEF(ng`46GEkE4(E?Gz{QHOT=HCxy`7!^to*5*AXRdJ;e4V~vm zzU_uu7}xbDhh26AZAN-RrnNafZOpX25W`zrsp_RNbK}>7t-Tq}g1#PLL8Ed3I~gd1?|q zCxut>ck7?GsxoQf`qW)rZw40^R%KZ0Evj#sm94E$qjrC}sc@~f$wME-s`cE*F%!39 z+oqoByuIBfx7jlG$l^fj-qB@%MjO9e&5bWP^xPbOZ0X}*Ln1!s*y54Qrm0aH;aAc7 z|9E&hdnb4CSB>u?#Gdf_BfUi{lU~~0>V)SIFE-S#{QurB(mrc&Hb*TDS&hc-OJ z{PJo8pPKU2;|v;}&PQs2QrdL&ADVAA*Z5@3cVTX}eFd33Tu{b)kN=_Z#pbdNZp_^O zPSh^-_dQqiQd=QytJsHJi}c%(^M;m$_n`AXC~{0bw=b7T+x?cMh&&8Mes#qv)<%CY z2lj6ATfnj6M8010hKVCq2U-X77>+$NmXou*=-r^e^Nue9l-r^58m!dF&%bRspo=uE zU0JFJA(T@>CP-zA`6h;f6tZQMLLlj(7u1FCgFOJUo7*T=Ap|maUpkjn+Z7;%ow-li zMO2R4$J`0bOOAL@Jai@CBX-a&1 zt?G^v`5gir_CitM0x*-;-@nYFWa1-KrM0LPzfuW95r8*%ae_WF5D|H4EFmlgW8`*g zivsLGpXZOpCPsHEqGJecif!szY!m20%}=yHeI!+yKTozSemjo{_+s~>NvuX)ZI@Dq zGk=r%CtQR$OCG+%|8UNhLYem)*5GOl&kgl2tot;y^pKPL7E$3vGql|RDbgq1EBmbu zCS~a-eeyi_efsd!(-GPU(LgNgrk#T=gAsK05^Xp~yfc-GT+Cj)Y%=f4uKG_J8lC-p z5o-MrFmKEIsbjuHQa55iu;9p=lRM?7nZ}zyr*Z*VoatgeZr(~!HNrq`#dU=E1yV3h zI$tnI;yJ(;yPe)&010sp@=ls3`QqG*m94drDRL)r!+q*P7UXwZ0qt*6(2rBF6Fa*q zPontwVHE}|Zr6Jr&r?5$zz2o*8Q)f_7EeA9xfFbBu*Dl@ZvVPegeV91!HV0yJSpU) zeG|k#Tz+yr9kR#U1LaH%hU^k>^mP1TjD+}{Qn~imvHJ1`a9;>uJ<>TI7~Hl=Mm{P? zkv5n=SGw@qZAauMT+&u+Be=n5(+|sRhIT;(&1|`JqtKnW-0^X=&GC0KG3!e~J<1H> zWPN-F5OM{P^hb`zVC+Y=d%KS+xm!OtZd*L~^WccAE%_%gp-VPWJRCu`)ufu)s13Pk zR@w;Rz4wJy%keiPNgC`t3_K(5GTPMqOdGkhYsCTZE4J!Ka{MO@l{y>VVG@egQQFjv zPYf;DHc*D$l!xHt)cH0XCErUrU6*y*Fx1>MUK?)!`-y+X;Zn^_EJjZVreCIyatn0` zR@Z>E=BdNx?SlLzFQ*2;y4`BII5vsCtE~i9wHSU=p!KV9ATSlHdL_*?&h3906F``_ z)(d`c@lWBml7zpI{p&GKxbD{!@8iS74kPZlsW_LV4;6&#J@E3u4wJ?{O~gq;_9)Y* zYdz;xJ{042LuDirSlxvoD*D({UomL}yAd;Ub`H4r^kq^P9oYx9@0iQ~fw^5RhPyvZ$2gp*L72c& zK#@V;rb)`u3Ul{6TSm0sO}e&vz%oQCSZgZ7-NgSMWZc7C`nlIbnCPg;tcdzXJUj~N zo%A)=2?C00b`(Bh0Ge<0H8#0n^FkZp@=yne$&jX#5g17Qd zumWG%h*OHKbqKw~td~vt=997TL>BMRPI?xtT^Rbk1#$slpDD{;9OLmlKAtMSJM9{@ zpG+wAg1VJZ$6k8M-`+AEHAz7VsddAux|x%_AGvx*d?Me3OMg1GL?%we`O9kUaq<7C zq5<7P!|3yhiA1CZ&zt!MgSkh08LPb~`hVc;xz5)&a~RKD$}iP)^>u3`rXw=M6~QAx zN8}L*2p7)Mnu?ng)`M1Lqw08-WcA*Bm;1;=TR$a&Ha;V5sIc(R2J1=oc!LJ%bg^{E z0HljX&mqg3fL|2_SA8J(S#E#RuW4y-(~oIccy&cCV2;3N6XM3(;nlE}X{hpynWei# zI|PkZ*JI_enob=KrFk(v*ebJag`z+@WO>DHgd$jF!|U;8p6JE}**uchu*k8D-7n0{Sd)uw1VFoY7pW*9i{j$B$giv{)$c~ zqfFHk1XA}#&+a4;aDtUFz~xtgfT?u4njKg6|vTM(W=H42;7_LBF@Il z;rUW_s2|MU1@`Q^F4{K%w5qvP2@e}BNEH{eT4|m7QA=7fwnn13!L%>4D7RN8b%(*> z>1>9fGMsc^@&z8KQV78)Z&?Q!c5;m(wS3t{>N+*LT_b1<{QAzA_)hG4_F+5?-;+Fl zJDvCTUe7yf>LH?2kQ?cfqi>{;3(puHi=i-%LPc?7Set_#{@!BL?~iKjp_A5!5P+cD z*`Ew36uGeTt~~f-h;^z30d?E$%>JHq7+;qj4XgHqmU2Pf>qdaZS4yLbmdxTTJIR}T zIX;ZbrcpaeIl8VW5M&@e_Bb0d1g%bw8U5R{qsw?{bC<;aOSo!mvvRDaFf716aBqk_2Fc_ z5#vO)thk;2)Rw)mmDYofXrBY0e_e>N=TWa%b5I*>2DkK;_9Ur<)qL&0*-yXE!3CG! zK(1DiJ~M7CMHDnBYxOzLFqcxkzK=1rywC7tCdM2bw)Lt8FTUJ(9;GMwfzo@na=P6j z$ch(rCgnWu(qPza>Vrcaryx75k1k*Y_cFYu!f~4JJ`hHG8+RA|K$-)#2HIIy%en-s zsP8-0IuTRZO<9PPqy0aifov*Y zuy;S&NirJma;_qE`!-?d^OGDvLfg|;{Au1{wuG zcZK{b(rA$29*$?#t3Arxs0r;Wb_7QI#eJvWdOt+E+kNdcbi%_r5|Q<{yWx6=;xp4}pUaQJ(gd%$nv!L8WgyMUw5jwT(9 ziSMTU`gcYY-5k-C%kI3B`nsplh4vBbmYLJakv|Okv^^R9Fl-!8Ea3GuFMpKkz9B3| z-6-mcYR;i!LQ__9>UQ?%9MHEF;;Jyh?+aYuchHR%tz+n57$(PZ+o^6g<1W&AGUL8_ zOV2)fQ&zdY&`ik{-U!{c+n61ke zrbThDq?+`W)OE|2>O%O9x}BC^8Lxs3o-^L3LuJi~&)9%wXyUlehXpI)Ha~9teB}i| zzzgfl#=f0ynNsmU(B@--y#-07l;qyS?S+n(SRkW3$^weKGpgqBY55^@)on4F{-ndM zYxJtVzG3tXq|c4Cz^~tv)NLRw1d<1v?l&$6p0CX*s$#>`kXpoLuMaDxI=wL&index:warp[0]-=1 + else:wrong['B'][index][3]*=-1 + wrong['cleanup']=producer.cleanup(wrong);bad,buffers=endpoint(wrong,audit) + require(any(112<=r<224 for r in bad),'semantic target defect was not rejected') + require(not buffers,'control must retain literal clean-buffer restoration') + controls.append({'helper':helper,'defect':kind,'bad_targets':[r for r in bad if 112<=r<224]}) + out=scratch/'native' + run('transport',NATIVE/'bw_transport.py',word_path,out) + run('residual-adapters',NATIVE/'bw_adapters.py',out/'CANONICAL-WORD.json.gz',out/'RESIDUAL-ADAPTERS.json',out/'LEMMA-A.json') + for name in ('bw_emit.py','bw_audit_local.py','bw_phases.py','bw_check_recipes.py'):run(name,NATIVE/name,out) + residual=json.loads(run('changed-width-phase-controls',HERE/'check_residual.py',NATIVE)) + require(residual['status']=='PASS_EXACT_PAIRED_ENTRANCE_FULL_WIDTH7_RESIDUAL','residual controls');authenticate() + print(json.dumps({'status':'PASS_STAGED_PAIR_LOCAL_CONSTRUCTION','provider':tag,'word_sha256':sha(word_path), + 'local_profile':word['report']['local_profile'],'inventory':word['report']['width_inventory'], + 'independent_inputs':632,'private_buffers':91,'orientations':['forward','dual'], + 'controls':controls+residual['controls'],'stages':stages,'elapsed_seconds':time.monotonic()-started, + 'scope':'Finite exact local word, frame invoice and full native chain; no owner allocation or kappa claim.'},sort_keys=True)) +if __name__=='__main__':main() diff --git a/research/staged-release-retiming-t530/full-admission/vendor/staged-width-t530/templates/prepare_extension_native.py b/research/staged-release-retiming-t530/full-admission/vendor/staged-width-t530/templates/prepare_extension_native.py new file mode 100644 index 0000000000..ae11fa01cc --- /dev/null +++ b/research/staged-release-retiming-t530/full-admission/vendor/staged-width-t530/templates/prepare_extension_native.py @@ -0,0 +1,76 @@ +# SPDX-License-Identifier: Apache-2.0 +"""Two fresh changed-word native chains; explicit authenticated parent reuse. +Yiyang (@Lyy-iiis), with substantial OpenAI Codex assistance. +Derived from the PR2839/PR2848 native preparation lineage, retaining validators. +""" +from pathlib import Path +from concurrent.futures import ThreadPoolExecutor +from importlib import metadata +import argparse,hashlib,json,gzip,os,platform,shutil,subprocess,sys,time +sys.dont_write_bytecode=True +SOURCE_SHA='fa3e2d855ac5298ecc849e596d79dcef7a72668a276b6524585bc0cd616ce474' +SOURCE_FILES=642 +SOURCE_COMMIT='rank7-joint-endframes-pr2917' +PARENT_SHA='e0eefc96567fbb45e19e6de0ca295381dbe0e686c08ddc783639b065c7c791d4' +OLD_RECEIPT_SHA='f90cafe84385533a0eeb96356f385b646f402ff85cd05154c47a81c783023d9d' +def need(ok,why): + if not ok:raise ValueError(why) +def sha(p):return hashlib.sha256(p.read_bytes()).hexdigest() +def read(p): + b=p.read_bytes();return json.loads(gzip.decompress(b)if p.suffix=='.gz'else b) +def write(p,v):p.write_text(json.dumps(v,sort_keys=True,indent=2)+'\n') +def tree(p,exclude=()): + out={} + for f in sorted(p.rglob('*')): + need(not f.is_symlink(),'no cache/source symlinks') + if f.is_file()and f.relative_to(p).as_posix()not in exclude:out[f.relative_to(p).as_posix()]=sha(f) + return out + +def main(): + ap=argparse.ArgumentParser() + for n in ['source','retained-cache','retained-receipt','out']:ap.add_argument('--'+n,type=Path,required=True) + ap.add_argument('--jobs',type=int,default=2);a=ap.parse_args();source=a.source.resolve();out=a.out.resolve();oldcache=a.retained_cache.resolve() + need(not sys.flags.optimize and 1<=a.jobs<=2,'assertions enabled and max2 jobs') + need(sha(source/'MANIFEST.json')==SOURCE_SHA and len(read(source/'MANIFEST.json'))==SOURCE_FILES and tree(source,('MANIFEST.json',))==read(source/'MANIFEST.json'),'complete immutable derived source') + need(not list(source.rglob('__pycache__'))and not list(source.rglob('*.pyc')),'source free of bytecode and cache folders') + before=tree(source);oldreceipt=read(a.retained_receipt) + need(sha(a.retained_receipt)==OLD_RECEIPT_SHA and tree(oldcache)==oldreceipt['cache_files'],'complete PR2848 retained native/cache evidence') + old=source/'vendor/pr1297';need(sha(old/'MANIFEST.json')==PARENT_SHA and tree(old,('MANIFEST.json',))==read(old/'MANIFEST.json'),'unchanged retained source') + prdir=oldcache/'_receipts'/PARENT_SHA;need(sha(prdir/'RECEIPT.json')==oldreceipt['retained_parent_receipt_sha256'],'retained parent receipt identity');pr=read(prdir/'RECEIPT.json') + need(pr['vendor_manifest_sha256']==PARENT_SHA and pr['claim_sha256']==sha(old/'CLAIM.json'),'retained parent source claim') + for name,h in pr['files'].items():need(sha(prdir/name)==h,'retained parent result binding') + need(read(prdir/'RESULT.json')['status']=='PASS_GLOBAL_MIXED_X54_FUSIONS_NATIVE_AND_STRICT_ADMISSION' and read(prdir/'RESULT.json')['kappa']==read(old/'CLAIM.json')['kappa'],'retained full parent admission') + pstages=read(prdir/'STAGES.json');need(len(pstages)==16 and all(s['exit_code']==0 for s in pstages),'all16 retained parent stages') + need(not out.exists()and not out.is_relative_to(source)and not out.is_relative_to(oldcache),'fresh external native work');out.mkdir(parents=True);cache=out/'native-cache';cache.mkdir() + steps=['native','ledgers','local-replay','wrappers','phases'] + for tag,name in [('base','gauge44-word.json.gz'),('extra','extra-word.json.gz')]: + word=old/name;key=sha(word);need(pr['words'][tag]==key,'retained word hash');entry=oldcache/key + need(read(entry/'local/FULL-WORD.json.gz')==read(word),'retained complete literal word');st=read(entry/'STEPS.json');need([s['step']for s in st]==steps and all(s['exit_code']==0 for s in st),'retained native five stages') + cj=read(entry/'CACHE.json');need(cj['word_sha256']==key and cj['files']==tree(entry,('CACHE.json',)),'retained full native files') + shutil.copytree(entry,cache/key) + shutil.copytree(prdir,cache/'_receipts'/PARENT_SHA) + versions={} + for name in ['numpy','scipy','sympy','mpmath','psutil','gmpy2']: + try:versions[name]=metadata.version(name) + except metadata.PackageNotFoundError:versions[name]=None + write(out/'ENVIRONMENT.json',dict(python=platform.python_version(),executable=sys.executable,dependency_versions=versions,assertions_enabled=True)) + env=dict(os.environ,PYTHONDONTWRITEBYTECODE='1',PYTHONUTF8='1',PYTHONINTMAXSTRDIGITS='0',OPENBLAS_NUM_THREADS='1',OMP_NUM_THREADS='1') + for k in ['PYTHONOPTIMIZE','WITNESS_SPEC','WITNESS_DISCOVER','WITNESS_RECORD']:env.pop(k,None) + driver=source/'new/fastnative/run_native.py';start=time.monotonic();stages=[];words={t:source/('new/borrow/words/BORROW-WORD-43'+t+'.json.gz')for t in ['base','extra']} + def fresh(tag): + word=words[tag];work=out/('fresh-'+tag);cmd=[sys.executable,'-B',str(driver),str(word),str(work)];log=out/('native-'+tag+'.log');begin=time.monotonic() + with log.open('w')as f:r=subprocess.run(cmd,cwd=out,env=env,stdin=subprocess.DEVNULL,stdout=f,stderr=subprocess.STDOUT) + need(r.returncode==0,'fresh native '+tag+' failed; '+str(log));res=read(work/'RESULT.json');need(res['status']=='PASS_COMPLETE_T74_NATIVE_REPLAY'and res['word_sha256']==sha(word),'fresh native result') + entry=cache/sha(word);shutil.copytree(work/'native',entry);need(read(entry/'local/FULL-WORD.json.gz')==read(word),'fresh complete literal word') + st=read(entry/'STEPS.json');need([s['step']for s in st]==steps and all(s['exit_code']==0 for s in st),'fresh native five stages') + checks=read(entry/'local/LOCAL-CHECKS.json');can=read(entry/'local/CANONICAL-WORD.json.gz') + need(can['R']==408 and len(can['centers'])==8 and len(can['zero_buffers'])==91,'complete physical ABI') + for orientation in ['forward','backward']:need(checks[orientation]['all_columns']==632 and checks[orientation]['paid_profile']==read(word)['report']['local_profile'],'actual all-column native profile') + write(entry/'CACHE.json',dict(word_sha256=sha(word),files=tree(entry))) + rec=dict(name='fresh-current-'+tag,exit_code=0,command=cmd,script_sha256=sha(driver),log_sha256=sha(log),result_sha256=sha(work/'RESULT.json'),seconds=time.monotonic()-begin);print('PASS',rec['name'],flush=True);return rec + with ThreadPoolExecutor(max_workers=a.jobs)as pool:stages=list(pool.map(fresh,['base','extra'])) + need(tree(source)==before and tree(oldcache)==oldreceipt['cache_files']and sha(a.retained_receipt)==OLD_RECEIPT_SHA,'read-only input drift') + rec=dict(status='PASS_COMPOSED_FRESH_NATIVE_PROVIDERS_AND_AUTHENTICATED_CACHE',source_commit=SOURCE_COMMIT,manifest_sha256=SOURCE_SHA,providers={t:dict(word_sha256=sha(w),complete_native_files=tree(cache/sha(w),('CACHE.json',)))for t,w in words.items()},retained_parent_receipt_sha256=sha(cache/'_receipts'/PARENT_SHA/'RECEIPT.json'),cache_files=tree(cache),fresh_current_provider_count=2,fresh_retained_native_count=0,reused_retained_native_count=2,fresh_retained_parent=False,reused_retained_parent=True,retained_reuse_receipt_sha256=OLD_RECEIPT_SHA) + write(out/'NATIVE-RECEIPT.json',rec);write(out/'STAGES.json',stages);write(out/'RESULT.json',dict(status='PASS_TWO_FRESH_SHARED_KERNEL_NATIVE_CHAINS_AUTHENTICATED_PARENT_REUSE',source_manifest_sha256=SOURCE_SHA,native_receipt_sha256=sha(out/'NATIVE-RECEIPT.json'),preparer_sha256=sha(Path(__file__)),environment_sha256=sha(out/'ENVIRONMENT.json'),stages=stages,seconds=time.monotonic()-start,scope='Fresh changed base/extra native chains; two unchanged retained native chains and16-stage parent admission explicitly reused by exact full-tree receipts. No owner/controller/outer admission yet.')) + print('PASS_TWO_FRESH_SHARED_KERNEL_NATIVE_CHAINS_AUTHENTICATED_PARENT_REUSE',flush=True) +if __name__=='__main__':main() diff --git a/research/staged-release-retiming-t530/local-audit/LICENSE b/research/staged-release-retiming-t530/local-audit/LICENSE new file mode 100644 index 0000000000..261eeb9e9f --- /dev/null +++ b/research/staged-release-retiming-t530/local-audit/LICENSE @@ -0,0 +1,201 @@ + Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + + APPENDIX: How to apply the Apache License to your work. + + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "[]" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. + + Copyright [yyyy] [name of copyright owner] + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. diff --git a/research/staged-release-retiming-t530/local-audit/MANIFEST.json b/research/staged-release-retiming-t530/local-audit/MANIFEST.json new file mode 100644 index 0000000000..81e579131c --- /dev/null +++ b/research/staged-release-retiming-t530/local-audit/MANIFEST.json @@ -0,0 +1,34 @@ +{ + "schema_version": 1, + "sha256": { + "LICENSE": "c71d239df91726fc519c6eb72d318ec65820627232b2f796219e87dcf35d0ab4", + "NATIVE-LINEAGE-NOTICE": "ee0c73ca35877aad0e0b6adc560a3881cb82276dba4cf2d4fc58cd19e57cc420", + "PUBLIC-INPUTS.json": "e0fae1c1a7aa365acd4b1815f74bd6d588d7829a385f62136cf99ba3dbb9c412", + "README.md": "5882a6746c61aecbd6ad65dc216082506b86465f3a0c3a036ba48aba2f05d1f5", + "SOURCE-PINS.json": "782e6600e68efdb8b753e965f9e0ed87b7ac213b674ce09db14d7f6437edc3ca", + "check_retiming_independent.py": "1d57113431ec7615fc7e3e876b11ea97ee29af21402f9081d44feeb1dff5d541", + "check_retiming_negative.py": "f1d8737aba2fa0ca2fe21eb5454c8e065aa77023826df54d7397bcb83c4e758d", + "receipts/native-base/COMMANDS.json": "f50dabd902fc59059482c7c5ebd7931e8ec1e35137b070ac85f5a3df813fcdef", + "receipts/native-base/RESULT.json": "24a078ef87248b8c590cc9a64d00956d8275098f7109ea70e4952028e15ff5e7", + "receipts/native-base/native/local/INDEPENDENT-LOCAL-REPLAY.json": "f99d4c50632d1cff239ac6f54e4040bc9a7ac66500de9d032c8e9fc5ec42a458", + "receipts/native-base/native/local/LOCAL-CHECKS.json": "11743473efa1822069303b49c62b1853af4236f46ef54b4778a27e2e70d79d06", + "receipts/native-base/native/local/SCALAR-FRAME-AUDIT.json": "21ce6befe785a2143146121457fe394c0d7a1140118b600e6508d2b7ae0ec192", + "receipts/native-base/native/local/WARP-RECIPE-CHECKS.json": "8a0b738edc8ef4c428346e55d74bca08313df104a61b21dbbfcf9dd82c863079", + "receipts/native-base/native/local/WRAPPER-CHECKS.json": "2b8981d41893a2bbbed38ca78fcca7a0f613e50b062861c8f329bd47fa4d3485", + "receipts/native-extra/COMMANDS.json": "087c701235d3fd702b4d928f43240ca7e792473609cb2cf4e0a8c46223624b47", + "receipts/native-extra/RESULT.json": "d5f100c155e13d8360e016c32efd66df0bfadd0fa52bcb3a1f2b1f9cf9e22b9c", + "receipts/native-extra/native/local/INDEPENDENT-LOCAL-REPLAY.json": "8d9013f5060502270b63cb7a6078ab18bf1242a3bb74af7126e3e5b93e3be037", + "receipts/native-extra/native/local/LOCAL-CHECKS.json": "11743473efa1822069303b49c62b1853af4236f46ef54b4778a27e2e70d79d06", + "receipts/native-extra/native/local/SCALAR-FRAME-AUDIT.json": "60fb2027dffde335e62c1fb6fe8d51a9432b70478224fcbbfa0bfe3b7ade4b69", + "receipts/native-extra/native/local/WARP-RECIPE-CHECKS.json": "cb7e8b1d35dc677737ee514f39b96d7d25e0d5d2b0c1d6a6bcafb4c23c91902d", + "receipts/native-extra/native/local/WRAPPER-CHECKS.json": "2b8981d41893a2bbbed38ca78fcca7a0f613e50b062861c8f329bd47fa4d3485", + "vendor/SOURCE-CREDITS.md": "1d9d8f56d8899f55878e4cb2c4e052b22506444016a51c2e678773505f5189e6", + "vendor/SOURCE-NOTICE": "c9731c9cca25ede32c2a1b3aef6d5b249973cb2ed5fb2494407bdca598763661", + "vendor/audit_local.py": "a38940094f7d19cd6376aafdd4734fa68eabc9aff4c98c3c4a3e9540328b1c90", + "verify.py": "8ed59af3f942cbe2e469434954f74b0d6fedd7b99f09efc2b60e64c2e5a030a7", + "words/RETIMED644-660-base.json.gz": "6df3356808e29909776be8bc0faf03df983401a267c2d740d1ac2dbcaa278269", + "words/RETIMED644-660-extra.json.gz": "65624efec36b35934b750c1741ba2ad4e6df3cff86e44536b0c016ebddb0fb55", + "words/STAGED644-660-base.json.gz": "735c540b1fe29d0ceeb4d2f304ec941e5f2bd3bc92bafc8cce2b4f9a67a3b653", + "words/STAGED644-660-extra.json.gz": "886338fc32da14f3389a82c8120a1bcf9c5e2f0ec3e9b2d377fdae809e1d977f" + } +} diff --git a/research/staged-release-retiming-t530/local-audit/NATIVE-LINEAGE-NOTICE b/research/staged-release-retiming-t530/local-audit/NATIVE-LINEAGE-NOTICE new file mode 100644 index 0000000000..380e979f0e --- /dev/null +++ b/research/staged-release-retiming-t530/local-audit/NATIVE-LINEAGE-NOTICE @@ -0,0 +1,14 @@ +Anticipatory dirty borrowing: PR2226 (Cinna Davis / 1337isnot1337, with substantial OpenAI Codex assistance) is credited first. Its alias rule, changed-reference K_G handoffs, initial compensation and exact free-operator replay (vendored under new/code/borrow/vendor, see new/code/borrow/NOTICE-PR2226.md) are applied here to the T74 pivot-566+554 words; the native lowering, window-exact owner fill and independent audit of the borrow words are new in this package. Bootstrap carried-cutoff repair: PR1956 (Josie Elliston); Lemma G label/adapter checks and X/Y/Z mutants: PR1964 (thakrarsagar), extended here with borrow warp/zero-buffer controls. + +New research prepared by Rohan Arun with substantial OpenAI Codex assistance. Apache-2.0. Parent words and build recipe method derive from Jeremy Kothe PR1274 and Rohan Arun PR1218, with lineage credited in README.md. All inherited mathematical qualifications are retained. +Additional pivot555 and567 composition by Rohan Arun with substantial OpenAI Codex assistance. + +T74 exact-fill owner construction by Rohan Arun with substantial OpenAI Codex assistance. + +PR1377 grid refinement credited to Jeremy Kothe. Outer witness refinement by Rohan Arun with OpenAI Codex assistance; construction unchanged. + +Pivot-566 kernel, words, edits, rebuild.py and rebind.py: PR1625 (mdumitrean). Endpoint/outer-witness stacking, fine_cache.py and oracle stage by jeremykothe2 with oh-my-pi assistance. + +The preceding paragraphs are inherited source notices, not attribution of this derivative. +This joint twelve-source construction, generator, independent replay, hosting composition and package: Tekalign (@tekuuu), with substantial OpenAI Codex assistance. No independent human review claimed. +Credits: Cinna Davis/PR2226 anticipatory dirty borrowing; Tekalign/PR2436 four lifted targets; Jeremy Kothe/PR2462,2588,2673 source pipeline, source-label swap and order/fill; zxv/PR2530 eight aliases; Mason Hale/PR2696 concentrated source-partner assignment and independent local interpreter; Philippe Van Velzen/PR2559,2679 evacuation, six pre-life hosts and refit/alias; themilkman216/PR2621 priority order; Marius-Paul Dumitrean/PR2733 independent concentrated/pre-life composition; Vlado Vojdanovski/PR2322 generator utilities. PR2720's fixed-old-path cut obstruction motivates the changed premise. The retained owner/native/bit/modern outer lineage and their notices remain in the pinned source. New work Apache-2.0. diff --git a/research/staged-release-retiming-t530/local-audit/PUBLIC-INPUTS.json b/research/staged-release-retiming-t530/local-audit/PUBLIC-INPUTS.json new file mode 100644 index 0000000000..6b5c686577 --- /dev/null +++ b/research/staged-release-retiming-t530/local-audit/PUBLIC-INPUTS.json @@ -0,0 +1,5 @@ +{ + "schema_version": 1, + "repository_inputs": [], + "dependency_scope": "Self-contained package-local exact scientific inputs and retained source copies. Python standard library only. No network or external repository bytes are read by the registered direct verifier." +} diff --git a/research/staged-release-retiming-t530/local-audit/PUBLICATION-PROVENANCE.json b/research/staged-release-retiming-t530/local-audit/PUBLICATION-PROVENANCE.json new file mode 100644 index 0000000000..a2105b48d3 --- /dev/null +++ b/research/staged-release-retiming-t530/local-audit/PUBLICATION-PROVENANCE.json @@ -0,0 +1,54 @@ +{ + "schema_version": 1, + "source_capsule": "kappa-release-retiming/local-audit", + "scope": "Explicit publication adapter. Original frozen research capsule left unchanged. Original SHA256 identify private original bytes; public SHA256 identify the adapted files and do not assert original-byte identity. No full native/controller/outer scientific pipeline rerun is implied by publication.", + "path_alias": "$RESEARCH_WORKSPACE replaces this session's private task-workspace or user-root prefix in historical command metadata. It is an informational alias, not an executable path.", + "byte_identical_copied_file_count": 22, + "changed_files": [ + { + "path": "MANIFEST.json", + "original_sha256": "58c75d3dff037b3c70e338f142e306aedfd9657f3eb7172af0a937771b76fe3f", + "public_sha256": "8b39c1608513db2811ea25fecdfc24e7b593c5a4a37ab0e52b70d2af3c009917", + "transformation": "Output routing, documentation or publication integrity metadata adaptation; mathematical input unchanged." + }, + { + "path": "README.md", + "original_sha256": "fddb1d3172961310785e25afed89fea80fe55f7b7bf7cbe92086d5d81e5816de", + "public_sha256": "5882a6746c61aecbd6ad65dc216082506b86465f3a0c3a036ba48aba2f05d1f5", + "transformation": "Output routing, documentation or publication integrity metadata adaptation; mathematical input unchanged." + }, + { + "path": "check_retiming_independent.py", + "original_sha256": "8cbcf940d4bad813a372244c22391b1a3d562db7a923e40767cb2070a1458a42", + "public_sha256": "1d57113431ec7615fc7e3e876b11ea97ee29af21402f9081d44feeb1dff5d541", + "transformation": "Output routing, documentation or publication integrity metadata adaptation; mathematical input unchanged." + }, + { + "path": "check_retiming_negative.py", + "original_sha256": "60a51e2e99e567ab5a9e5a19d7d5f965c68760b348ebf5c3b4257cf31dcb68d8", + "public_sha256": "f1d8737aba2fa0ca2fe21eb5454c8e065aa77023826df54d7397bcb83c4e758d", + "transformation": "Output routing, documentation or publication integrity metadata adaptation; mathematical input unchanged." + }, + { + "path": "receipts/native-base/COMMANDS.json", + "original_sha256": "23e51cd91cb01db7e8913ed001bf8225d2aac2c378311e183941289243403c5e", + "public_sha256": "f50dabd902fc59059482c7c5ebd7931e8ec1e35137b070ac85f5a3df813fcdef", + "transformation": "Only private user/workspace path prefixes replaced with $RESEARCH_WORKSPACE. Original execution command bytes are preserved in the non-public capsule; this file is an explicitly normalized publication derivative." + }, + { + "path": "receipts/native-extra/COMMANDS.json", + "original_sha256": "7b9954b5004d62d564274e5ca3e1cbc22bab53416cca60da7edce62c6052757a", + "public_sha256": "087c701235d3fd702b4d928f43240ca7e792473609cb2cf4e0a8c46223624b47", + "transformation": "Only private user/workspace path prefixes replaced with $RESEARCH_WORKSPACE. Original execution command bytes are preserved in the non-public capsule; this file is an explicitly normalized publication derivative." + }, + { + "path": "verify.py", + "original_sha256": "e91ccf3218e0656aba5890aea009b353c191a101d4628a28fdb30c680880eb43", + "public_sha256": "8ed59af3f942cbe2e469434954f74b0d6fedd7b99f09efc2b60e64c2e5a030a7", + "transformation": "Output routing, documentation or publication integrity metadata adaptation; mathematical input unchanged." + } + ], + "omitted_generated_material": [ + "results/: regenerable local proof receipts, negative-control words and logs; generated afresh outside the package by verify.py" + ] +} diff --git a/research/staged-release-retiming-t530/local-audit/README.md b/research/staged-release-retiming-t530/local-audit/README.md new file mode 100644 index 0000000000..797e3186bc --- /dev/null +++ b/research/staged-release-retiming-t530/local-audit/README.md @@ -0,0 +1,73 @@ +# Independent local audit of the two release retimings + +Run from this directory, or invoke `verify.py` by its absolute path from anywhere: + +```sh +python3 -B verify.py +``` + +Python 3.10 or later and the standard library suffice. No network, repository checkout or third-party packages are needed. All input paths are relative to `__file__`; output is written to a fresh temporary directory, or the external directory supplied with `--out /fresh/output`. The expected final line is `PASS_PORTABLE_LOCAL_RETIMING_AUDIT`. + +The verifier authenticates all packaged inputs, runs the separately written minimal scalar/frame proof, freshly replays both complete free-operator words on all 632 arbitrary input columns in both orientations, checks all 91 private zero buffers, and exercises four semantic rejection controls. It also authenticates retained receipts of two complete native replays performed during this research session. The full native implementation is not bundled or rerun by this command. + +## Exact change and proof + +Parent words: [PR3605](https://github.com/CrocSwap/integer-mult-bounds/pull/3605), pinned at `3efbb5de06a49ffeea6684482f2d3fe48cdca3fb`. In both variants, only B, cleanup and `report.local_profile` change. + +At zero-based B indices 591–592, replace + +```text +640 += 2 * 644 at P +496 -= 2 * 644 at P +``` + +with + +```text +496 -= 2 * 644 at P +640 += 2 * 644 at Q +``` + +Here `P = span(429,30)` and `Q = span(423,65,20,10)`. At indices 641–642, similarly exchange `656 -= 660` and `520 -= 2*660`, raising the delayed first gate to `Q' = span(427,96,24,6)`. + +Each pair contains two rational elementary shears with the same source and different targets. The shears commute exactly. No warp intervenes, and none of the six involved registers has a warp. The delayed donor originally traverses the nested frames `span(30) < P < Q`, of dimensions 1, 2, 4; Q is already the next frame used by donor and pivot. Retiming allows a direct donor jump from dimension 1 to dimension 4. The same argument applies to Q'. Cleanup follows canonical inverse-reverse order at FULL. + +Each block replaces `H₁ + H₂` with `H₃`. The total delta is `−2H₁ − 2H₂ + 2H₃`, yielding profile `{1:2437,2:724,3:226,4:102,5:20,8:8}`. For every `0 < a < 1`, `3^(1−a) < 2^(1−a) + 1`, so the recursive moment strictly decreases. This is a structural improvement, rather than decimal rounding. Rank mass remains 5135. Helper identities, entrance/final frames, interfaces, 408 live helpers, 91 private zero buffers and width inventory `{4:26,5:2,6:18,7:52,8:97,9:213}` all remain unchanged. + +## Native evidence and scope + +`receipts/native-{base,extra}/RESULT.json` records two fresh successful five-stage native runs: native, ledgers, local replay, wrappers and phases, including the separate warp-recipe checker. Their independent replay reports cover all 632 live columns, all 91 zero buffers and all 512 warp columns in both orientations. Exact local prefix bounds are: + +| Orientation | Bound | Bits | +| --- | --- | ---: | +| Forward | `202390250292205836324211411723 / 512` | 89 | +| Backward | `4091250694836343058381993950001 / 128` | 95 | + +Both lie below the inherited 128-bit local reserve and 192-bit charged payload. Native events decrease from 22768 to 22766; scalar macros and primitive counts remain unchanged. Public `COMMANDS.json` files replace this session's private user/workspace prefixes with `$RESEARCH_WORKSPACE`. They are publication derivatives, not the original command bytes. `PUBLICATION-PROVENANCE.json` records the original and public SHA256 for every changed copied file. Scientific native result, source and local replay receipts remain byte-identical. The portable verifier does not execute historical commands. + +To rerun the full native implementation, obtain repository commit `20ecf2891d80b5acf18d980b2164fb44ea7faa90`, use Python 3.12 with NumPy, and substitute actual checkout/capsule paths below. Each destination must not already exist: + +```sh +python3 -B /path/to/repository/research/t74-native-fast/run_native.py /path/to/local-audit/words/RETIMED644-660-base.json.gz /path/to/fresh-native-base +python3 -B /path/to/repository/research/t74-native-fast/run_native.py /path/to/local-audit/words/RETIMED644-660-extra.json.gz /path/to/fresh-native-extra +``` + +The driver SHA is in `SOURCE-PINS.json`; each native result retains its full native source manifest. These independent local native runs used Python 3.12.14 and NumPy 2.3.5. The separate integrated admission used Python 3.12.14 and NumPy 2.5.4. + +This capsule proves the local replacement and its strict moment reduction. It does not rerun the global owner/controller/physical/outer release or establish an unconditional integer-multiplication bound. A higher κ still requires source-bound assembly and transfer checks and the source's declared theorem hypotheses. Pending source claims are not promoted here to the repository's selected reviewed baseline. + +## Negative controls + +The inherited checker rejects: (1) raising the first gate while retaining old order, at frame monotonicity; (2) omitting the frame jump while claiming the new invoice, at paid profile; (3) coefficient 2 to 3 with a consistent inverse, at target map; (4) old literal cleanup, at canonical inverse-reverse ordering. The fourth is structural: the old inverse shears also commute, so their old order remains operator-equivalent. + +Mutation words, logs and JSON results are generated under `/negative/`. The minimal proof additionally rejects coefficient, frame and interface mutations. + +## Provenance and license + +The staged suppliers are Ross Richardson's PR3605 contribution, based on dcharb78's PR3133 lineage. The commuting retiming was found by the joint-circuit agent in this session; the minimal proof and packaging were written separately by the fresh-math review agent. No priority is claimed over predecessor suppliers or their mathematics. + +`vendor/audit_local.py` is an unchanged SHA-pinned copy of `research/rank7-coupled-586-588-carrier-fold/vendor/audit_local.py` at the repository commit above; its notice credits icekylinx with OpenAI GPT-6 Astra assistance. The reused native implementation is credited in `NATIVE-LINEAGE-NOTICE`. Inherited notices and credits remain in `vendor/SOURCE-NOTICE` and `vendor/SOURCE-CREDITS.md`. The retained source and this derivative capsule are Apache-2.0 licensed; see `LICENSE`. + +## Publication adapter + +This directory is a public derivative of the preserved local capsule. Only execution-path metadata, output routing and publication documentation were adapted; source words and inherited checkers remain unchanged. No full native replay was repeated by this adapter. The default command writes outside the package; an explicit `--out` must name a new directory outside it. There are no external repository inputs; see `PUBLIC-INPUTS.json`. diff --git a/research/staged-release-retiming-t530/local-audit/SOURCE-PINS.json b/research/staged-release-retiming-t530/local-audit/SOURCE-PINS.json new file mode 100644 index 0000000000..6a5b0d0219 --- /dev/null +++ b/research/staged-release-retiming-t530/local-audit/SOURCE-PINS.json @@ -0,0 +1,15 @@ +{ + "repository": "https://github.com/CrocSwap/integer-mult-bounds", + "main_commit": "20ecf2891d80b5acf18d980b2164fb44ea7faa90", + "staged_supplier_pr": 3605, + "staged_supplier_commit": "3efbb5de06a49ffeea6684482f2d3fe48cdca3fb", + "independent_checker": { + "path": "research/rank7-coupled-586-588-carrier-fold/vendor/audit_local.py", + "sha256": "a38940094f7d19cd6376aafdd4734fa68eabc9aff4c98c3c4a3e9540328b1c90" + }, + "native_driver": { + "path": "research/t74-native-fast/run_native.py", + "sha256": "a7bfe110fe5098f6ef8bde3c43ecf15e8d1e06149abf7321a4c945383dcc2627" + }, + "description": "Local research derivative of the pinned staged suppliers: two commuting scalar-release retimings. Pending source claims and inherited theorem hypotheses remain conditional." +} diff --git a/research/staged-release-retiming-t530/local-audit/check_retiming_independent.py b/research/staged-release-retiming-t530/local-audit/check_retiming_independent.py new file mode 100644 index 0000000000..9016f3aa14 --- /dev/null +++ b/research/staged-release-retiming-t530/local-audit/check_retiming_independent.py @@ -0,0 +1,140 @@ +#!/usr/bin/env python3 +"""Independent minimal-delta check for the two release reorderings. + +Standard library only. Does not import the search, builder or frame optimizer. +The native receipts are separately freshly produced by the unchanged credited +t74-native-fast verifier; this script binds their exact input and outputs. +""" +from collections import Counter +from copy import deepcopy +from fractions import Fraction +from pathlib import Path +import argparse +import tempfile +import gzip +import hashlib +import json + +HERE=Path(__file__).resolve().parent +WORDS=HERE/'words' +SOURCE={ + 'base':'735c540b1fe29d0ceeb4d2f304ec941e5f2bd3bc92bafc8cce2b4f9a67a3b653', + 'extra':'886338fc32da14f3389a82c8120a1bcf9c5e2f0ec3e9b2d377fdae809e1d977f'} +FULL=[256,128,64,32,16,8,4,2,1] + +def need(ok,why): + if not ok:raise ValueError(why) + +def sha(path):return hashlib.sha256(path.read_bytes()).hexdigest() + +def read(path):return json.loads(gzip.decompress(path.read_bytes()) if path.suffix=='.gz' else path.read_bytes()) + +def span(vectors): + out={0} + for v in vectors:out|={u^v for u in out} + return out + +def gate_product(gates, registers): + rows={r:{r:Fraction(1)} for r in registers} + for g in gates: + need(g[0]=='add' and g[1]!=g[2],'not an elementary shear') + target,source=g[1:3] + for k,v in list(rows[source].items()): + rows[target][k]=rows[target].get(k,Fraction(0))+Fraction(g[3],g[4])*v + if rows[target][k]==0:del rows[target][k] + return rows + +def local_check(old,new): + need(set(old)==set(new),'top-level schema changed') + need([k for k in old if old[k]!=new[k]]==['B','cleanup','report'],'unexpected changed fields') + expected=deepcopy(old) + blocks=[] + for index,donor,pivot,other,frame in ( + (591,640,644,496,[423,65,20,10]), + (641,656,660,520,[427,96,24,6])): + before=old['B'][index:index+2] + after=new['B'][index:index+2] + need(before[0][1:3]==[donor,pivot] and before[1][1:3]==[other,pivot],'wrong source shears') + need(before[0][-1]==before[1][-1]==[429,30],'wrong source frames') + need(after==[before[1],before[0][:-1]+[frame]],'not the literal commuting reordering') + need(all(rec[0]!=index+1 for rec in old['warps']),'warp crossed between shears') + need(not any(rec[1] in (donor,pivot,other) for rec in old['warps']),'changed-register warp') + need(gate_product(before,[donor,pivot,other])==gate_product(after,[donor,pivot,other]),'operator mismatch') + need(span([30]) 33` gates skipping `{22, 40, 54, 63}`, and `R2_E7` at `restore[190:203]`, `13 -> 15` gates skipping `{5, 73}`) on PR #2979's words that serve as the direct starting words for `B_586_438` and `B_588_440`. +- **New here (dcharb78, with AI assistance)**: the two coupled `B` + `restore` dying-helper carrier folds (`B_586_438` and `B_588_440`, `6` hunks / `6 -> 5` gates each) and `helper_final` lowerings on entering helpers `586` ($E_{30} \to V_{30,76,82}$) and `588` ($E_{30} \to V_{30,97,127}$) shifting the helper width inventory from `{4:26, 5:2, 6:16, 7:52, 8:99, 9:213}` to `{4:26, 5:2, 6:18, 7:50, 8:99, 9:213}` (`+665` net profit per helper, `+1,330` joint), the literal `T74_optimal_idle39` allocation (`allocation/FILL.json.gz`), the 21-control per-word edit review (`edits/edits_review.py`) and 100-control four-stage replay (`verify.py`), and the re-derived paid profile, cap certificate (`certificates/RELAX-CAP.json`), and complete fresh-native admission and release receipts. PR #2979 (mdumitrean), PR #3015 (jeremykothe2), and PR #3042 (dcharb78) are credited first. diff --git a/research/staged-release-retiming-t530/local-audit/vendor/SOURCE-NOTICE b/research/staged-release-retiming-t530/local-audit/vendor/SOURCE-NOTICE new file mode 100644 index 0000000000..89c20926ea --- /dev/null +++ b/research/staged-release-retiming-t530/local-audit/vendor/SOURCE-NOTICE @@ -0,0 +1,28 @@ +research/rank7-joint-endframes +Copyright 2026 Marius-Paul Dumitrean. Licensed under the Apache License, Version 2.0. +Prepared with substantial AI assistance (Anthropic Claude, via Claude Code). + +This package retains, byte-identical, Apache-2.0 files from: PR #2942 (Marius-Paul Dumitrean, head +a027b0f6fdb0ab2b42ba10fc31b53960166bf2bf, research/paired-extension-normal45): data/PARENT-base.json.gz and +data/PARENT-extra.json.gz (its data/WORD-*.json.gz), comparators/PR2942-CLAIM.json and tools/wordedit.py; PR #2917 +(Mason Hale, head 224bd5e56041c40078ff6b5fa7393733a215de5c, research/paired-helper-extension): structure.py (Jeremy +Diviney's PR2908 two-sided certificate checker), vendor/audit_local.py (PR2833's independent exact auditor, icekylinx +attribution), vendor/preload_move.py (Jeremy Kothe's PR2894 frame accounting and cleanup), allocation/ORDER.json, +allocation/DISPATCH.json and allocation/vendor/ (independent_owners.py: Tekalign's independent owner checker as vendored +by PR2839/PR2917; PLAN.json.gz, TEMPLATE.json.gz); PR #2957 (Jeremy Kothe, head b74b25f3ccc84c16e1a801d73b2f47e5ea764c78, +research/paired-extension-cap-fill-swaps): vendor/declared_rewrites.py (the pure applier of the fourteen declared +rewrites) and comparators/PR2957-CLAIM.json; PR #2966 (Jeremy Kothe, head e62d3eb9005117d82a9babcfa937ecc53237c490, +research/paired-extension-normal45-rewrites): comparators/PR2966-CLAIM.json; PR #2969 (Dugongue, head +e2ca469b08385d3d5e29a918d66dbefaf889e9f3, research/paired-swap-normal45): allocation/baseline/ (its CLAIM.json and its +allocation ORDER.json and PROFILE.json); and PR #2930 (head 81f3b5d12977eba09e06fbff729167d59faabe90): tools/relax.py, +tools/root.py, tools/relax_exact.py. +data/REWRITES-2957.json is Jeremy Kothe's PR2957 rewrite list, re-addressed to this package's stage-2 word with exact +preimages (every entry keeps a credit field). producer.py follows PR2917's producer.py (Mason Hale) for its paired steps; +verify.py, check_allocation.py, check_cap.py, run_registered.py and reproduce.py adapt our PR2942 versions of PR2917's and +PR2930's; tools/audit_allocation_moment.py is PR2917's exact moment auditor with only its authenticated baseline changed (to +the PR2969 headline); tools/derive_adapters.py generalizes PR2917's adapter derivation (PR2908, Jeremy Diviney); +tools/build_overlay.py follows the overlay conventions of PR2908's and PR2917's builders. construction/allocation/ retains +the flow model of PR2857/PR2843 (Yiyang Lu, Marius-Paul Dumitrean) as adapted for this allocation. All original notices of +the exported predecessor packages remain in force. + +Derived work (Apache-2.0): this package (`research/rank7-restore-carrier-skips`) builds on PR #2979 (Marius-Paul Dumitrean, head be191346, research/rank7-joint-endframes) and PR #3015 (Jeremy Kothe, jeremykothe2, research/rank7-joint-endframes-restore-edit), retained byte-identical except for the files named in README.md, plus two declared restore edit blocks (`R1_E42` and `R2_E7` in `edits/EDITS.json` and `edits/FINAL-WORD-*.json.gz`) and their re-derived certificates and complete fresh-native admission and release receipts by dcharb78, with AI assistance. PR #2979's own evidence is kept under evidence/pr2979/. diff --git a/research/staged-release-retiming-t530/local-audit/vendor/audit_local.py b/research/staged-release-retiming-t530/local-audit/vendor/audit_local.py new file mode 100644 index 0000000000..8224873d04 --- /dev/null +++ b/research/staged-release-retiming-t530/local-audit/vendor/audit_local.py @@ -0,0 +1,501 @@ +"""Independent exact scalar/frame audit of the changed forward supplier. + +This does not import a generator, builder, stored compensation, or price. +All claimed endpoint matrices are derived from the input word's gates. +Optional --main checks the transported boundary against the pinned parent. +Prepared for icekylinx with OpenAI GPT-6 Astra assistance. Apache-2.0. +""" +import argparse,gzip,json,hashlib,time +from pathlib import Path +from fractions import Fraction as F +from collections import Counter + +def require(x,label): + if not x:raise RuntimeError(label) + +def basis(vs): + piv={} + for a in vs: + while a: + bit=a.bit_length()-1 + if bit in piv:a^=piv[bit] + else: + piv[bit]=a;break + for k in sorted(piv): + for j in piv: + if j>k and piv[j]>>k&1:piv[j]^=piv[k] + return tuple(piv[k] for k in sorted(piv,reverse=True)) + +def contained(a,b):return basis(a+b)==b + +def registers(e):return e[1:3] if e[0]=='add' else e[1:2] + +def apply(e,rows,dual=False): + if e[0]=='add': + t,s=e[1:3];q=F(e[3],e[4]);require(t!=s,'self add') + if dual:t,s,q=s,t,-q + dst=rows[t] + for k,x in list(rows[s].items()): + a=dst.get(k,F(0))+q*x + if a:dst[k]=a + else:dst.pop(k,None) + elif e[0]=='scale': + t=e[1];q=F(e[2],e[3]);require(q!=0,'zero scale') + if dual:q=1/q + rows[t]={k:q*x for k,x in rows[t].items()} + else:raise RuntimeError('unknown scalar primitive') + +def invert(e): + r=list(e) + if r[0]=='add':r[3]=-r[3] + else:r[2],r[3]=r[3],r[2] + return r + +def check_parent_interface(word,main): + # Read only the retained boundary data. No builder or local checker is imported. + relative="research/community-k492-audit/pr622/replay/baseline558/complex-global/base/split-centres/CANONICAL-WORD.json.gz" + path=main/relative;raw=path.read_bytes() + require(hashlib.sha256(raw).hexdigest()=="66d3c3c70983224650643a0a05a21ac6c6959f84d0f4528650601016f5a76844",'parent canonical input pin') + parent=json.loads(gzip.decompress(raw)) + tau=lambda x:x^(43 if (x&43).bit_count()%2 else 0) + ports=parent['ports'];v=word['report']['v'] + require(len(ports)==len(set(ports))==v,'parent port count') + require(set(map(tau,word['ports']))==set(ports),'transported source/target ports') + moved={i:ports.index(tau(p)) for i,p in enumerate(word['ports'])} + centers=[moved.get(r,r) for r in word['centers']] + actual=[list(basis([tau(x) for x in frame])) for frame in word['center_frames']] + expected=[parent['frames'][f] for f in parent['center_frames']] + require(len(centers)==len(set(centers))==len(actual)==8,'eight distinct centre carriers') + require(actual==expected and all(len(f)==8 for f in actual),'ordered centre frame interface') + return dict(parent_path=relative,parent_file_sha256=hashlib.sha256(raw).hexdigest(), + transport_tau=43,ordered_frame_bases_match=True,all_ports_match=True, + transported_centers=centers,source_centers=[r for r in centers if r=2*v} + for e in w['precondition']:apply(e,dirt) + compensation=[['add',y,k,-a.numerator,a.denominator,[]] for y in range(v,2*v) for k,a in sorted(dirt[y].items())] + entering=set(map(int,w.get('start_extra',{})));lowends=set(map(int,w.get('helper_final',{}))) + coldends=lowends-entering + require(not any(e[2] in entering for e in compensation),'nonzero entrance response') + require(not any(r in entering|coldends for e in w['precondition']+compensation for r in registers(e)), 'pre-wrapper touch of residual helper') + require(all(e[-1]==[] for e in w['precondition']+compensation),'nonzero frame precondition') + early=w.get('early_cleanup',[]);earlyids={i for i,U in early} + require(len(earlyids)==len(early),'duplicate early cleanup gate') + tail=[w['cleanup'][i][:-1]+[U] for i,U in early] + cleanup=[e for i,e in enumerate(w['cleanup']) if i not in earlyids] + prefix=w['precondition']+compensation+main + program=prefix+tail+cleanup + for dual in (False,True): + actual=ident() + for e in program:apply(e,actual,dual) + expected=ident() + for t in range(v):expected[t if dual else v+t][v+t if dual else t]=F(-1 if dual else 1) + bad=[i for i in range(n) if actual[i]!=expected[i]] + require(not bad,'all-column endpoint failure '+str((dual,bad[:8]))) + print('endpoint', 'dual' if dual else 'forward','PASS',flush=True) + full=basis([1<>=1;i+=1 + return y + +def ginv(cols,h): + # inverse columns over F2 (None if singular), Gauss-Jordan on (G | I) column-wise + piv={}; + for i in range(h): + a=cols[i];b=1<>s&1:a^=piv[s][0];b^=piv[s][1] + if a:return None + pre.append(b) + return pre # pre[t] = G^{-1}(e_t) + +def gtrans(cols,h): + # transpose: column j of G^T = row j of G + return [sum(((cols[i]>>j)&1)< E (used for B-phase warps and for A-phase prelude warps)""" + inv=ginv(cols,h);require(inv is not None,'G not invertible') + require(all(gmul(cols,inv[t])==1<(Gx, (G+G^-T)x + G^-T z) + GiT=gtrans(inv,h) # G^{-T}: columns j = row j of G^{-1} + # G^{-T}(z): via columns GiT + def M(vec): + x=vec&((1<>h + gx=gmul(cols,x);S=gx^gmul(GiT,x) # (G + G^{-T}) x + return gx|((S^gmul(GiT,z))<>h)|((vec&((1<0)-(op<0))*(abs(op)+dsym)) + walg_add(rows[src],row,-c) + return + if e[0]=='warp': + op=e[2];s=(op>0)-(op<0) + if dual:op=s*(abs(op)+dsym) # dual orientation: K_G^{-T} is a distinct free symbol + rows[e[1]]=walg_warp(rows[e[1]],op);return + if e[0]=='add': + t,s=e[1:3];q=F(e[3],e[4]);require(t!=s,'self add') + if dual:t,s,q=s,t,-q + walg_add(rows[t],rows[s],q) + else: + t=e[1];q=F(e[2],e[3]);require(q!=0,'zero scale') + if dual:q=1/q + rows[t]={k:q*x for k,x in rows[t].items()} + +def invert_item(e,full): + if e[0]=='warp':return ['warp',e[1],-e[2]] + r=list(e) + if r[0]=='add':r[3]=-r[3] + else:r[2],r[3]=r[3],r[2] + return r + +def run_borrow(path,out,main,base,w,data,begin): + v,h,R=w['report']['v'],w['report']['h'],w['report']['R'];n=2*v+R + require((v,h)==(112,9),'wrong source geometry') + require(main is None,'--main parent interface is not available for coordinate-changed BORROW-WORD; use --base') + full=basis([1<=2*v,'correction source must be a remaining helper') + require(s not in entering,'correction source has nonzero entrance frame') + require(len(word)>=1 and all(1<=abs(o)<=K for o in word),'correction operator word') + require(c!=0 and c.denominator&(c.denominator-1)==0,'correction coefficient') + # the source is the lender of the operator it is read through + require(all(warps[abs(o)-1][1]==s for o in word),'correction source is not the lender of its operator') + # --- 4. frames: literal chain, monotone, paid profile --------------------------------------- + end=[full]*v+[basis([x for x in range(1,1<0 else list(to_),list(to_) if op_>0 else list(fr_),h) + require(cur[r_]==basis(fr_),'prelude warp frame mismatch '+str((r_,op_))) + cur[r_]=basis(to_) + else: + for q in registers(e):climb(q,e[-1]) + for e in Aord: + for q in registers(e):climb(q,e[-1]) + lev={int(t):basis(U) for t,U in w.get('target_levels',{}).items()} + require(all(cur[v+t]==lev.get(t,()) for t in range(v)),'target centre levels') + for q,U in zip(w['centers'],w['center_frames']): + U=basis(U);require(cur[q]==U,'center frame') + served={lev.get(e[1]-v,()) for e in w['cut'] if e[2]==q} + for T in sorted(served,key=lambda x:-len(x)): + require(contained(T,U),'center path not nested') + if T!=U:paid[len(U)-len(T)]+=1 + U=T + byposition={} + for op,rec in enumerate(warps,1):byposition.setdefault(rec[0],[]).append(op) + B=w['B'];forward=[] # chronological program of the (recorded) non-target word + for e in Aord:forward.append(e) + for p in range(len(B)+1): + for op in byposition.get(p,[]): + _,lender,cols,U,E=warps[op-1] + require(cur[lender]==basis(U),'warp frame mismatch '+str((op,lender,cur[lender],basis(U)))) + cur[lender]=basis(E);forward.append(['warp',lender,op]) + if p9Ab~4(;s*|H~CzAoOLb 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

W1{2#&I4JvENAC0(zcgG^tq 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 V>ytT*LV(=pZ%O=Me@JD+{{j4OYux|< literal 0 HcmV?d00001 diff --git a/research/staged-release-retiming-t530/local-audit/words/RETIMED644-660-extra.json.gz b/research/staged-release-retiming-t530/local-audit/words/RETIMED644-660-extra.json.gz new file mode 100644 index 0000000000000000000000000000000000000000..f3c580b06506e8888fe766c9a1e0bb1a748d7b74 GIT binary patch literal 72574 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

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

I 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

JNHqTNY7rUGb}6YzxTWQYCAF>)_#b8=T;O9( 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 literal 0 HcmV?d00001 diff --git a/research/staged-release-retiming-t530/local-audit/words/STAGED644-660-extra.json.gz b/research/staged-release-retiming-t530/local-audit/words/STAGED644-660-extra.json.gz new file mode 100644 index 0000000000000000000000000000000000000000..78e7b2bb0653c8dcc0133980a19dd9d97ebdb67e GIT binary patch literal 72568 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

c^2e-a+VPhAq3>{xXm(b1#L+ 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 0. +DIG=spec['outer_refinement']['endpoint_digits'] # the supplier endpoint is certified to 10^-DIG (accept at the endpoint, reject at endpoint + 10^-DIG); every slack sits 10 digits below +# Fixed-grid maximum (PR2180 / PR2161, dataisfire; proof PROOF-GRID-MAX.md): the free gaps shrink together to R0 = 10^-(DIG+80); grid, backoff and certified endpoint are unchanged. +R0=Q(1,10**(DIG+80)); ZETA=R0/100; SLACK=R0; GAP=R0; STOP=R0/10**6 +FLOOR=10**(DIG+46); BACKOFF=Q(1,10**(DIG+22)); B_GAP=R0 +# Fine prime padding: theta is between 1/(4p^2) and 1/(2p^2-1). +# Online chirp guard beta+2*xi-2<1; coefficient setup uses O(p^2 log p) bits. +# epsilon = 1 - DELTA_E is a FREE parameter (outer/FINE-PADDING-COMPOSITION.md sec. 2): every row is strictly satisfied for every DELTA_E > r0 = 10^-(DIG+80); beta = 1 - 3 DELTA_E lies in the admissible window +# [1 - DELTA_E (1 + 1/q), 1 - 2 DELTA_E). DELTA_E = (1025/1024) r0 keeps the gamma spare power 1-eps-r0 = r0/1024 > 0 and puts C - eps*q below 1/FLOOR (PROOF-GRID-MAX.md). +DELTA_E=Q(1025,1024)*R0 +EPS=1-DELTA_E +BETA=1-3*DELTA_E +THETA_POWER=Q(2) +HALO_POWER=48 +CORE_POWER=128 +STRASSEN_TAU=Q(45,16) +KAPPA_1828=Q('0.0016797549561255445213356709939207025769983114385025802954603275201627999999999999999999999999979966404900867489109573286580121585') # exact kappa of rohanarun's PR1828 (slack refinement of PR1800 at 1e-96), from its body +KAPPA_1839=Q('0.0016797549561255445213356709939207025769983114385025802954603275201628645482603256388263049999999997996640490086748910957328658012158594') # exact kappa of PR1839 (previous package: 1e-90 endpoint) +KAPPA_1875=Q('0.0016797549561255445213356709939207025769983114385025802954603275201628645482603256388263056561328446322744513169085862209720704481201654121427713006366929567157349625273906229277148454180995537563371124755588139767841405530386745578819565618798006892541712197674874836946756930569827889227573192555649999999997996640490086748910957328658012158594') # exact kappa of rohanarun's PR1875 (1e-300 endpoint), from its body +KAPPA_1876=Q('0.001679754956125544521335670993920702576998311438502580295460327520162864548260325638826305656132844632274451316908586220972070448120165412142771300636692956715734962527390622927714845418099553756337112475558813976784140553038674557881956561879800689254171219767487483694675693056982788922757319255565606685566411725238449650999339827075715283714270157705762309226038611771955655377501414652136546310799999999999999999997996640490086748910957328658012158594846') # exact kappa of rohanarun's PR1876 (1e-400 endpoint), from its body +KAPPA_1897=Q('0.001679754956125544521335670993920702576998311438502580295460327520162864548260325638826305656132844632274451316908586220972070448120165412142771300636692956715734962527390622927714845418099553756337112475558813976784140553038674557881956561879800689254171219767487483694675693056982788922757319255565606685566411725238449650999339827075715283714270157705762309226038611771955655377501414652136546310881185746917580802513640545967852810801680966856133978576162943792322682482152988532923811998938861379689883167389728443314312230815059559906903773756886872476136837071871203030423643505345473735135533') # exact kappa of M6LI's PR1897 (1e-500 grid), from its body +KAPPA_1786=Q('0.0016797547881500489087805478664999999999999999999999999999999998000000199999') # exact kappa of chafreaky's PR1786 ledger (EXPECTED-BALANCE.json), headline 0.001679754788150048 +KAPPA_PKG5=Q('0.001677992607205282520732088774830808372222877897034109604209719298829805473412451530867883424937597') # previous package (rectangular k=2, tau_eff=2.2500351) +KAPPA_PKG4=Q('0.0016778199023144364336310551358776001013829401215770658599799349282716974076737897457922714197448847') # previous package (radix union schedule, square boundary tau=2.372864) +KAPPA_1712=Q('0.0016776417313433545642517275958639984231708545722735432722117400060454625429077941422798526440584702') # pkg of PR1712 (Le Gall tau=12/5, old union row) +KAPPA_1699=Q('0.001677641731343354564251058287063644749065568493') # exact kappa of PR1699's ledger (Chafik Boukhalfa), same supplier profile +certified_complex=Q(spec['expected']['complex_lower']) +bit=Q('0.001733427039589844234749') +# Keep short independently checkable decimals strictly inside both endpoints. +b=certified_complex-B_GAP # strictly inside the certified supplier endpoint; B.json carries the same exact value +assert b==Q(BJ['b']) +q=b-GAP +a=(q+b)/2 +online=Q(spec['expected']['kappa']) +old=Q('0.001673360105405778') +assert b0 +assert m==73 and W==896*T and W==BJ['live'] +EXPECTED_PROFILE={int(k):v for k,v in BJ['profile'].items()} +assert profile==EXPECTED_PROFILE + +GB=int((DIG+130)*3.3220)+16 # enclosure grid 2^-GB, about 50 digits below the slacks +ONE=1<=2:x/=2;k+=1 + lo,hi=unit_log(x) + return down(lo+k*ln2[0]),up(hi+k*ln2[1]) +def exp(x): + assert 0<=x>GB)//j;th=_cd(-((-th*xu)>>GB),j);sl+=tl;sh+=th + tn=_cd(-((-th*xu)>>GB),EN) # x^EN/EN! (rounded up); the tail is at most twice this + return Q(int(sl),ONE),Q(int(sh+2*tn+2),ONE) +def moment(endpoint): + lo=hi=Q(0) + for r,n in profile.items(): + l,h=log(Q(m,r)); weight=Q(n*r,m*W) + lo+=weight*exp(endpoint*l)[0] + hi+=weight*exp(endpoint*h)[1] + return down(lo),up(hi) + +native=moment(b) +assert native[1]<1 +b_up=Q(BJ['b_above_endpoint']) +assert b_up>certified_complex and moment(b_up)[0]>1 # a larger test endpoint is rejected + +def ledger(kind, *, q_=q, zeta=ZETA, slack=SLACK, + old_scan=False, full_gauge=False, full_key=False, old_union=False, old_theta=False, old_linear=False, old_tag=False, + eps_=EPS, beta_=BETA, tau_eff=STRASSEN_TAU, halo_power=HALO_POWER, core_power=CORE_POWER): + r=R0; stop=STOP + # Existing explicit Strassen format, 7^16<2^45; c=3/32. + # Union: radix-distributed schedule (outer/UNION-SCHEDULE.md, new in this package): row exponent eps+1/2-xi. The boundary row binds with main; the Gaussian row has slack at this explicit point. + c=(3-tau_eff)/2 + eps=eps_; beta=beta_ + xi=eps*(1+q_)-c+slack + saving=eps*q_ + # Deliberate strict gap (BACKOFF) after decimal truncation to the FLOOR grid. + kappa=Q((saving*FLOOR).__floor__(),FLOOR)-BACKOFF + # kappa is derived, not silently asserted to equal an expected decimal. + tau=1-a; sigma=1-b + internal=tau+(1-stop)*max(sigma-tau,Q(0)) + leaf=sigma+stop*(1-sigma) + lam=1-(q_+a)/2 + key=beta+1-eps + margins={ + 'main_transform':saving, + 'global_coordinate_router':a, + 'fused_gaussian':1-eps+q_*beta, + 'group_bit_router':1-eps+a*beta, + 'group_scans':1-eps+beta, + 'boundary_algebraic_matrix':c+xi-eps, + 'sparse_union_movement':xi+Q(1,2)-eps, + 'polynomial_products':eps, + 'microbox_face_corrections':1-(eps+beta+halo_power-core_power+2), + } + if old_union:margins['old_g_factor_union_row']=1-eps-beta-Q(1,2)+xi + if old_scan:margins['old_per_axis_scan']=1-eps + if full_key:margins['unnecessary_full_key_sort']=margins['sparse_union_movement']-key + checks={ + 'actual_bit_above_effective':bit-a, + 'complex_above_effective':b-a, + 'q_positive':q_, 'complex_endpoint':b-q_, + 'q_below_effective':a-q_, 'stop_positive':stop, + 'stop_below_one':1-stop, + 'leaf_saving_above_effective':(1-stop)*b-a, + 'q_below_internal':1-internal-q_, 'q_below_leaf':1-leaf-q_, + 'lambda_above_tau':lam-tau, 'lambda_above_sigma':lam-sigma, + 'lambda_above_internal':lam-internal, + 'lambda_prime_above_lambda':1-q_-lam, + 'lambda_prime_above_leaf':1-q_-leaf, + 'epsilon_positive':eps,'epsilon_below_one':1-eps, + 'cap_above_band':xi-Q(1,2),'cap_below_cell':eps-xi, + 'group_positive':beta,'group_below_dimension':eps-beta, + 'support_router_span':1-beta, + 'group_gauge_power_slack':1-(2*xi-THETA_POWER)-r-beta, + 'actual_logarithmic_group_guard':1-(2*xi-THETA_POWER)-beta, + 'global_gamma_power_slack':1-eps-r, + 'actual_logarithmic_gamma_guard':1-eps, + 'alpha_logarithm_absorption':r, + 'group_key_fits_record':1-key, + 'membership_arithmetic_fits_record':1-beta-2*(1-eps), + 'microbox_halo_volume':core_power-halo_power-beta, + 'positive_layout_slack':slack, + 'short_record_fallback':eps-a, + 'improvement_over_online_final':kappa-online, + 'improvement_over_previous_local_final':kappa-old, + 'complex_below_one_over_32':Q(1,32)-b, + } + checks['strassen_integer_power_gap']=Q(2**tau_eff.numerator-7**tau_eff.denominator) + checks['theta_positive_polynomial_power']=THETA_POWER + checks['cap_below_phase_cell_power']=THETA_POWER-xi + checks['halo_covers_generic_inverse_radius']=Q(halo_power-43) + checks['union_tag_work_per_visit_fits_record']=1-beta + checks['union_header_fits_record']=1-beta + checks['source_axis_superpolynomial']=1-eps + checks['improvement_over_pr1786']=kappa-KAPPA_1786 + checks['improvement_over_pr1828']=kappa-KAPPA_1828 + checks['improvement_over_pr1839']=kappa-KAPPA_1839 + checks['improvement_over_pr1875']=kappa-KAPPA_1875 + checks['improvement_over_pr1876']=kappa-KAPPA_1876 + checks['improvement_over_pr1897']=kappa-KAPPA_1897 + checks['improvement_over_pr1758']=kappa-Q('0.001679745508802299051546533685199973672313473419790800679752457380932784242972585600630181672224983') + checks['improvement_over_pr1699']=kappa-KAPPA_1699 + checks['improvement_over_pr1712']=kappa-KAPPA_1712 + checks['improvement_over_previous_package']=kappa-KAPPA_PKG4 + checks['improvement_over_pkg_k2']=kappa-KAPPA_PKG5 + if full_gauge:checks['unrecentered_group_gauge']=1-THETA_POWER-r-beta + if old_theta:checks['old_theta_chirp_guard']=1-(2*xi-eps)-r-beta + if old_linear:checks['old_linear_guard']=1-xi-r-beta + if old_tag:checks['old_union_tag_2beta']=1-2*beta + # Main-binding family invariant (PR2180): the Gaussian saving stays above the main saving. The fixed kappa grid (FLOOR) is coarser than the free gaps, + # so the *_above_kappa rows alone would no longer exclude a beta outside the main-binding window; this row is delta*(1-2q) > 0. + checks['gaussian_above_main']=margins['fused_gaussian']-saving + checks.update({n+'_above_kappa':v-kappa for n,v in margins.items()}) + assert margins['boundary_algebraic_matrix']==saving+slack + assert margins['sparse_union_movement']==saving+slack+(tau_eff-2)/2 + return {'kind':kind,'kappa':kappa,'epsilon':eps,'xi':xi,'beta':beta, + 'q':q_,'a':a,'r0':r,'zeta':zeta,'slack':slack, + 'margins':margins,'strict_checks':checks} + +def encode(x): + if isinstance(x,Q): + with localcontext() as c: + c.prec=DIG+200 + return {'rational':str(x),'decimal':str(Decimal(x.numerator)/Decimal(x.denominator))} + if isinstance(x,dict):return {str(k):encode(v) for k,v in x.items()} + if isinstance(x,(list,tuple)):return [encode(v) for v in x] + return x + +rows={};controls={} +for kind in ['struct_boundary_radix_union']: + row=ledger(kind) + assert all(v>0 for v in row['strict_checks'].values()) + assert min(row['margins'].values())==row['margins']['main_transform'] + # fixed-grid maximum: C*FLOOR is an integer and 0 < C - eps*q < 1/FLOOR, so floor(FLOOR*eps*q)/FLOOR = C - 1/FLOOR exactly and kappa attains the grid/backoff ceiling + assert (certified_complex*FLOOR).denominator==1 and 0= 1/(4 p^THETA_POWER)), an exponential factor <= p^2 eventually, +# alpha^5 polylogarithmic; a further half power is allowed for the polylogarithmic and bounded-constant factors of the augmented matrices. The umbrella must exceed that budget. +UMBRELLA_POWER=10 +def umbrella_margin(theta_power):return UMBRELLA_POWER-(2*theta_power+2+Q(1,2)) +assert umbrella_margin(THETA_POWER)>0 and umbrella_margin(Q(15,4))<=0 # control: the umbrella would fail silently for THETA_POWER >= 3.75 +HALO_UMBRELLA={'umbrella_power':UMBRELLA_POWER,'theta_power':THETA_POWER,'exponent_budget':2*THETA_POWER+2+Q(1,2),'margin':umbrella_margin(THETA_POWER),'fails_from_theta_power':Q(15,4)} +out={'status':'PASS_FINE_PRIME_PADDING_EXACT_ARITHMETIC', + 'scope':'Conditional fine-prime padding composition. Fresh native admission is required by verify.py. The cited prime theorem, written gauge-free theorem and inherited all-size interfaces are not proved by this arithmetic. No independent human review is claimed.', + 'geometry_changes':{'theta_power':THETA_POWER,'halo_power':HALO_POWER,'core_power':CORE_POWER,'matrix_exponent':STRASSEN_TAU}, + 'halo_umbrella':HALO_UMBRELLA,'complex_lower_short':b,'complex_lower_pinned':certified_complex, + 'native_moment':native,'profile':profile,'m':m,'W':W, + 'online_final_kappa':online,'rows':rows,'rejecting_controls':controls, + 'pr1673_kappa':Q('0.001677160151714381'),'improvement_over_pr1673':rows['struct_boundary_radix_union']['kappa']-Q('0.001677160151714381'), + 'source_sha256':{p.relative_to(WORK).as_posix():hashlib.sha256(p.read_bytes()).hexdigest() for p in [SPEC,CLAIM]}} +(HERE/'LEDGER.json').write_text(json.dumps(encode(out),indent=2)+'\n') +print(out['status']) +for name,row in rows.items(): + print(name,'FINAL KAPPA',encode(row['kappa'])['decimal'], + 'positive checks',len(row['strict_checks']), + 'gain over online',encode(row['kappa']-online)['decimal']) diff --git a/research/staged-release-retiming-t530/numerics/recorded/outer/outer/independent_check.py b/research/staged-release-retiming-t530/numerics/recorded/outer/outer/independent_check.py new file mode 100644 index 0000000000..b838c430ef --- /dev/null +++ b/research/staged-release-retiming-t530/numerics/recorded/outer/outer/independent_check.py @@ -0,0 +1,60 @@ +"""Independent balance-equation check (PR1673, adapted: this package's supplier b and SPEC), not an execution of the ledger in check_ledger.py.""" +from fractions import Fraction as F +from pathlib import Path +from decimal import Decimal,localcontext +import json,hashlib,sys +sys.set_int_max_str_digits(0) +D=Path(__file__).resolve().parent;W=D.parent +src=W/'new/SPEC.json' +BJ=json.loads((D/'B.json').read_text()) +spec=json.loads(src.read_text());pinned=F(spec['expected']['complex_lower']) +DIG=spec['outer_refinement']['endpoint_digits'];T=10**(DIG+80) # all free slacks are 10^-(DIG+80) or below (fixed-grid-maximum point, PR2180 / PR2161 dataisfire) +b=F(BJ['b']);q=b-F(1,T);eff=(q+b)/2;actual_bit=F('0.001733427039589844234749') +r=F(1,T);z=F(1,T*100);s=F(1,T) +assert 0eff +rows={} +# FINE-PRIME PADDING (outer/FINE-PADDING-COMPOSITION.md): explicit point epsilon=1-delta, beta=1-3 delta, delta=(1025/1024)*10^-(DIG+80), Strassen boundary tau=45/16 (7^16<2^45), c=3/32, +# theta in (1/(4p^2),1/(2p^2-1)], chirp guard beta+2xi-2<1, halo power 48, core power 128. Derived here WITHOUT the ledger code; the structured boundary is not used. +delta=F(1025,1024*T);E=1-delta;B=1-3*delta +assert 7**16<2**45;tau=F(45,16);c=(3-tau)/2;assert c==F(3,32) +nu=2;halo=48;core=128 +X=E+E*q+s-c # boundary saving c+X-E = E q + s +assert c+X-E==E*q+s +# the Gaussian row has slack: 1-E+qB-Eq = delta(1-2q) +assert 1-E+q*B-E*q==delta*(1-2*q)>0 +# admissible beta window for this epsilon: Gaussian row needs beta >= 1-delta(1+1/q); membership needs beta < 1-2 delta +assert 1-delta*(1+1/q)<=B<1-2*delta +assert F(1,2)z>0 and 1-E-r>0 and core-halo-B>0 and halo>43 +assert 1-B>0 and 1-B-2*(1-E)==delta>0 +costs={'transform':1-E*q,'global_router':1-eff,'gaussian':E-q*B,'group_router':E-eff*B,'group_scans':E-B,'boundary':E-X+(tau-1)/2,'sparse_union':E+F(1,2)-X,'polynomials':1-E,'microfaces':E+B+halo-core+2} +K=F((E*q*10**(DIG+46)).__floor__(),10**(DIG+46))-F(1,10**(DIG+22)) +assert max(costs.values())==costs['transform'] and all(v<1-K for v in costs.values()) +# earlier packages' guards fail at this point (they are rejecting controls in the ledger): linear guard 1-X-r-B<0, old theta chirp guard 1-(2X-E)-r-B<0, 2B<1 test fails +assert 1-X-r-B<0 and 1-(2*X-E)-r-B<0 and 1-2*B<0 +assert K>F('0.0016797547881500489087805478664999999999999999999999999999999998000000199999') # PR1786 exact kappa +assert K>F('0.0016797549561255445213356709939207025769983114385025802954603275201627999999999999999999999999979966404900867489109573286580121585') # PR1828 exact kappa +assert K>F('0.0016797549561255445213356709939207025769983114385025802954603275201628645482603256388263049999999997996640490086748910957328658012158594') # PR1839 exact kappa +assert K>F('0.0016797549561255445213356709939207025769983114385025802954603275201628645482603256388263056561328446322744513169085862209720704481201654121427713006366929567157349625273906229277148454180995537563371124755588139767841405530386745578819565618798006892541712197674874836946756930569827889227573192555649999999997996640490086748910957328658012158594') # PR1875 exact kappa +assert K>F('0.001679754956125544521335670993920702576998311438502580295460327520162864548260325638826305656132844632274451316908586220972070448120165412142771300636692956715734962527390622927714845418099553756337112475558813976784140553038674557881956561879800689254171219767487483694675693056982788922757319255565606685566411725238449650999339827075715283714270157705762309226038611771955655377501414652136546310799999999999999999997996640490086748910957328658012158594846') # PR1876 exact kappa +assert K>F('0.001679754956125544521335670993920702576998311438502580295460327520162864548260325638826305656132844632274451316908586220972070448120165412142771300636692956715734962527390622927714845418099553756337112475558813976784140553038674557881956561879800689254171219767487483694675693056982788922757319255565606685566411725238449650999339827075715283714270157705762309226038611771955655377501414652136546310881185746917580802513640545967852810801680966856133978576162943792322682482152988532923811998938861379689883167389728443314312230815059559906903773756886872476136837071871203030423643505345473735135533') # PR1897 exact kappa +assert K>F('0.001679745508802299051546533685199973672313473419790800679752457380932784242972585600630181672224983') # PR1758 +assert K r0 (beta = 1-3 delta); only kappa moves, kappa = (1-delta) q - O(1e-76) +# fixed-grid maximum: saving < C and C*FLOOR integral give K <= C-1/FLOOR-BACKOFF; this point attains it (0 < C-E*q < 1/FLOOR) +FL=10**(DIG+46);assert (pinned*FL).denominator==1 and 00 and 1-dd*(1+1/q)<=Bd<1-2*dd and 1-Ed+q*Bd-Ed*q>0 and Ed-Bd>0 and 1-Bd-2*(1-Ed)>0 + assert F(1,2)0 and core-halo-Bd>0 + assert 1-Ed+eff*Bd>Ed*q and eff>Ed*q and 1-Ed+Bd>Ed*q and Ed>Ed*q and 1-(Ed+Bd+halo-core+2)>Ed*q + sweep.append((str(dd),str(float(q-Ed*q)))) +assert 1-F(1,T)<=1-r # delta=r0 itself is rejected by 1-eps-r0>0 +assert not (1-(1-r)-r>0) +rows['struct_boundary_radix_union']={'epsilon':str(E),'cap':str(X),'beta':str(B),'kappa':str(K),'margin_above_kappa':str(E*q-K),'checked_cost_powers':len(costs),'gap_to_q':str(q-K),'epsilon_free_sweep_delta_gap_to_q':sweep} +report={'status':'PASS_INDEPENDENT_BALANCE_DERIVATION','source_sha256':hashlib.sha256(src.read_bytes()).hexdigest(),'b':str(b),'rows':rows,'scope':'Independent balance derivation and margin comparisons for this package\'s supplier endpoint; the supplier native admission is bound by verify_release.py; inherited all-size assumptions remain.'} +(D/'INDEPENDENT.json').write_text(json.dumps(report,indent=2)+'\n') +print(json.dumps(report,indent=2)) diff --git a/research/staged-release-retiming-t530/numerics/run.py b/research/staged-release-retiming-t530/numerics/run.py new file mode 100644 index 0000000000..38b0664cba --- /dev/null +++ b/research/staged-release-retiming-t530/numerics/run.py @@ -0,0 +1,16 @@ +#!/usr/bin/env python3 +"""Offline exact moment and transfer check; Python standard library only.""" +from pathlib import Path +import argparse, hashlib, json, subprocess, sys, tempfile +D=Path(__file__).resolve().parent +p=argparse.ArgumentParser();p.add_argument('--out',type=Path);a=p.parse_args() +for name,digest in json.loads((D/'INPUT-SHA256.json').read_text()).items(): + if hashlib.sha256((D/name).read_bytes()).hexdigest()!=digest:raise ValueError('changed capsule input '+name) +out=a.out.resolve() if a.out else Path(tempfile.mkdtemp(prefix='retimed-numerics-')) +if out==D or D in out.parents:raise ValueError('output must be outside package') +if a.out and out.exists():raise ValueError('choose a fresh output directory') +out.mkdir(parents=True,exist_ok=True) +if (out/'MOMENT.json').exists() or (out/'outer').exists():raise ValueError('choose a fresh output directory') +subprocess.run([sys.executable,'-B',str(D/'verify_moment.py'),'--repo',str(D/'vendor-repo'),'--t530',str(D/'t530'),'--words',str(D/'words'),'--out',str(out/'MOMENT.json')],check=True) +subprocess.run([sys.executable,'-B',str(D/'verify_outer.py'),'--repo',str(D/'vendor-repo'),'--t530',str(D/'t530'),'--moment',str(out/'MOMENT.json'),'--out',str(out/'outer')],check=True) +print('Fresh exact arithmetic evidence:',out) diff --git a/research/staged-release-retiming-t530/numerics/t530/CREDITS.md b/research/staged-release-retiming-t530/numerics/t530/CREDITS.md new file mode 100644 index 0000000000..37f2ab02a1 --- /dev/null +++ b/research/staged-release-retiming-t530/numerics/t530/CREDITS.md @@ -0,0 +1,7 @@ +# Credits and provenance + +Ross Richardson’s PR3605 supplies the staged-width operators, T37 lineage and integral-network allocation machinery. Our published T450 contribution PR3624 is the comparison baseline; its T8 chronology is not reused by this candidate. + +The retained T16 chronology originates in PR3413 and is preserved in our PR3457/3465 provider-composition lineage. T16-PROVENANCE.json pins the actual PLAN and reconstruction source. This contribution supplies the combined chronology and newly solved allocation; it does not claim the constituent chronologies or count their prior gains twice. + +Retained machinery preserves its upstream contributor notices and exact sources, including the earlier rank-seven compiler/controller and conditional-release chain. Private optimizer tools are excluded. New material is Apache-2.0, prepared for hexapode with substantial OpenAI Codex assistance. No independent human or formal-kernel acceptance is claimed. diff --git a/research/staged-release-retiming-t530/numerics/t530/EXPECTED.json b/research/staged-release-retiming-t530/numerics/t530/EXPECTED.json new file mode 100644 index 0000000000..0f6d39dbfa --- /dev/null +++ b/research/staged-release-retiming-t530/numerics/t530/EXPECTED.json @@ -0,0 +1,24 @@ +{ + "replicas": 530, + "calls": 4770, + "roles": 1946160, + "physical": 475389, + "profile": { + "1": 11757460, + "2": 3463020, + "3": 1102502, + "4": 486540, + "5": 103690, + "8": 38160, + "48": 202828 + }, + "root_interval": [ + "0.001730071864705779882540", + "0.001730071864705779882541" + ], + "candidate_endpoint": "17300718647057798825399999999999999999999998999999999999999999999999/10000000000000000000000000000000000000000000000000000000000000000000000", + "frontier_pr": 3624, + "frontier_head": "515a7c4490aa32ac3ca5014feb6f7da0d6952863", + "frontier_sha256": "8f2f80438593e7efaa6bb57c881a40cedbd7b5665b4ae12c6cf215d217c98397", + "scope": "Finite profile expectation; complete admission checked separately." +} diff --git a/research/staged-release-retiming-t530/numerics/t530/PROOF.md b/research/staged-release-retiming-t530/numerics/t530/PROOF.md new file mode 100644 index 0000000000..395fe84ea4 --- /dev/null +++ b/research/staged-release-retiming-t530/numerics/t530/PROOF.md @@ -0,0 +1,13 @@ +# T530 construction argument and completed conditional admission + +The two staged-width suppliers and their source-bound native programs are unchanged from PR3605 and our admitted T450 contribution. Concatenate T37 and T16 orders, renumber replicas, preserve each constituent dispatch, and derive windows from the actual source geometry. Initial lower bounds remain globally −1. T16 chronology provenance is pinned to PLAN-3413.json and its reconstruction source; older numerical gains are not added again. + +The aggregate certificate has ten copies, 4,770 calls and 408 roles per call. Integer pattern counts and time flows satisfy every actual window, group count, width quota and group/time degree. Maximum pattern degree six is at most the ten copies. The retained integral lower-bound flow decomposition and copy-color induction therefore apply. A grouped time represents ten successive physical calls. Literal reconstruction and an independent native-frame audit check all 1,946,160 assignments, source-family uniqueness and rank offsets, including five rejection controls. + +The full paid profile is `11757460 H1 + 3463020 H2 + 1102502 H3 + 486540 H4 + 103690 H5 + 38160 H8 + 202828 H48`, where `Hr=r^(1-kappa)`. Its rank mass is `65088*530`. Normalizing by `896*530*73^(1-kappa)` gives a strictly increasing function, since all occupied ranks are less than 73. Exact rational sign enclosures certify the root interval in EXPECTED.json. + +The exact comparison against PR3624 normalizes different replica counts using `450*profile_T530 - 530*profile_T450`. The resulting signed profile is recorded by verify_price.py, has zero rank mass and has strictly negative cost at the predecessor upper root endpoint. The proposed conditional endpoint is the lower root bound minus the inherited margins `10^-46 + 10^-70`; it is checked against the completed source-bound admission in the stored evidence. + +Physical stock is `896*530 + 408 + 8 + 91 + 2 = 475389`, within the original sufficient ceiling. Stock norm exponent 1324 gives reserve `128+37+18+1324+1+4=1512<2048`. Expected actual prefix is 1479. The stored terminal evidence authenticates execution of the physical, arbitrary-dirty endpoint, cleanup, precision and outer ledgers; all passed with these values. The registered evidence check is separate from a fresh full replay. + +All inherited all-size, compiler, uniform-cost, hosting, bootstrap-time, rounding, tape/recovery, analytic and BIT endpoint assumptions remain. Independent agents in one session are not independent human review or formal-kernel verification. Future construction and theoretical questions are listed in README.md. diff --git a/research/staged-release-retiming-t530/numerics/t530/evidence/RESULT.json b/research/staged-release-retiming-t530/numerics/t530/evidence/RESULT.json new file mode 100644 index 0000000000..ef1167f25d --- /dev/null +++ b/research/staged-release-retiming-t530/numerics/t530/evidence/RESULT.json @@ -0,0 +1,382 @@ +{ + "actual_expected_helpers": 408, + "comparison_claim_sha256": "656a4c93411b078753783513e2e71b1722a56e7b70120264a38118811982fa77", + "comparison_head": "e2ca469b08385d3d5e29a918d66dbefaf889e9f3", + "comparison_kappa": "17240352247481048785499999999999999999999998999999999999999999999999/10000000000000000000000000000000000000000000000000000000000000000000000", + "comparison_pr": 2969, + "complex_lower": "86503593235288994127/50000000000000000000000", + "dispatch_sha256": "a758a59b001f3bdda07e6a1a98bc8bd0339461dee5ec6b1909925030a043eddb", + "external_input_sha256": { + "/private/tmp/integer-mult-experiments/adversarial/cap740-preflight/run/adapters/extension_blocknorm.py": "6e6b8683cc87a84e5410c399b1128eb68694f852a3927cb124067f503ed7d7c7", + "/private/tmp/integer-mult-experiments/adversarial/cap740-preflight/run/parent-export/pr2894/vendor/pr2857/vendor/pr2839/lift_parent.py": "9a1edd7d4ab4a2f2ac8d15b42b7e40f93653d65026bac59e4c1ce80b486bd60e", + "/private/tmp/integer-mult-experiments/adversarial/cap740-preflight/run/parent-export/pr2894/vendor/pr2857/vendor/pr2839/reconstruct_replica.py": "5472811c24aef3852dc7e189dff5060076a6c0b25bfde928da50dcfe9b5bdc15", + "/private/tmp/integer-mult-experiments/adversarial/cap740-preflight/run/parent-export/pr2894/vendor/pr2857/vendor/pr2839/replica_parent.py": "48bdbf28f59d80edb266803ec61bf5e22e8fb5e5a0e2b88004b6039147589bd4", + "/private/tmp/integer-mult-experiments/adversarial/cap740-preflight/run/pr2969/CLAIM.json": "656a4c93411b078753783513e2e71b1722a56e7b70120264a38118811982fa77", + "/private/tmp/integer-mult-experiments/overlap-pr3605-latest/T530-literal/DISPATCH.json": "a758a59b001f3bdda07e6a1a98bc8bd0339461dee5ec6b1909925030a043eddb", + "/private/tmp/integer-mult-experiments/overlap-pr3605-latest/T530-literal/FILL.json.gz": "d1cc162ad8ddfaee30643248af2997d6b8b4cc34e141a785f439b1c79fb9484c", + "/private/tmp/integer-mult-experiments/overlap-pr3605-latest/T530-literal/ORDER.json": "599fb079a23b403f9de9e334d7c463f0cad28f9d69d1f99fcbf93abb72e935eb" + }, + "fill_sha256": "d1cc162ad8ddfaee30643248af2997d6b8b4cc34e141a785f439b1c79fb9484c", + "gain": "603663995767500399/100000000000000000000000", + "kappa": "17300718647057798825399999999999999999999998999999999999999999999999/10000000000000000000000000000000000000000000000000000000000000000000000", + "kappa_decimal": "0.0017300718647057798825399999999999999999999998999999999999999999999999", + "native_receipt_sha256": "411b6fc1ac480263a90d36eca58c109687307e9a2d204af3ed4d002f9f8ff629", + "order_sha256": "599fb079a23b403f9de9e334d7c463f0cad28f9d69d1f99fcbf93abb72e935eb", + "package_manifest_sha256": "3e67c387b084f95d6c7bc239981a9c9b4cb3d57666a787e18033f058d70b97b3", + "patches": [ + { + "after_sha256": "52f8b4cec2dab69cbe590e1fd0f7a68e1b35de5a540bd22fd2adfce07a92b46b", + "before_sha256": "faf283eb4edd2e6a1ccb40b3cb3ba30ae54338eaf5ea0a10d84d11d7939502af", + "path": "new/rebind.py", + "replacements": [ + [ + "physical=spec['expected']['live'] + 8 + R + 2)", + "physical=spec['expected']['live'] + 8 + R + 2 + max(len(rd(d / 'CANONICAL-WORD.json.gz').get('zero_buffers', [])) for d in locs.values()))" + ] + ] + }, + { + "after_sha256": "99bef04f24a99088e5c0c9b8f6bbc8386669d8315b8f572d6bbfb932c5d51145", + "before_sha256": "7edb4732b34e5814b27650a55c938626cb50d68f06397744dd4fe451437e90e0", + "path": "geometry_controls.py", + "replacements": [ + [ + " i['complete_invocation_sweeps']=i['bridge_sweeps']=333", + " i['complete_invocation_sweeps']-=1;i['bridge_sweeps']-=1" + ], + [ + " o,i=copy.deepcopy(owner),copy.deepcopy(invoice);fn(o,i);oh=digest(o);i['owner_audit_sha256']=oh", + " o,i=copy.deepcopy(owner),copy.deepcopy(invoice);fn(o,i);assert (o,i)!=(owner,invoice), 'geometry mutant must change actual receipts';oh=digest(o);i['owner_audit_sha256']=oh" + ] + ] + }, + { + "after_sha256": "6cfefe80c02a6c0f243f50ca9e146e1ab1440b84a033d8a71d42be5a5fa27f6b", + "before_sha256": "c43680a2da390f79925547a5ee1919d8a76637cccf98e2c8164b6f667fbc3183", + "path": "verify_release.py", + "replacements": [ + [ + "Fraction(1, 10 ** 3046) - Fraction(1, 10 ** 3022)", + "Fraction(1, 10 ** (spec['outer_refinement']['endpoint_digits'] + 46)) - Fraction(1, 10 ** (spec['outer_refinement']['endpoint_digits'] + 22))" + ], + [ + "epsilon=1-(1025/1024)e-3080", + "epsilon=1-(1025/1024)e-{spec['outer_refinement']['endpoint_digits']+80}" + ], + [ + "at the one 3000-digit rejection call", + "at the one {spec['outer_refinement']['endpoint_digits']}-digit rejection call" + ] + ] + }, + { + "after_sha256": "1dd56009986eb14dd6603c9193c7ad71dd45c7d005bf71c9cd3f916e66f54d98", + "before_sha256": "9e12909c73d3b3a31a45d801ae76c034510d6306400412e474df79bc4f1dc67e", + "path": "outer/check_ledger.py", + "replacements": [ + [ + "assert (m,W)==(73,66304)", + "T=spec['geometry']['replicas']\nassert type(T) is int and T>0\nassert m==73 and W==896*T and W==BJ['live']" + ] + ] + }, + { + "after_sha256": "ebaf637f1f818dac9c0fce0ee3f18df300873105818cea29a8ae9e8b737b5c7d", + "before_sha256": "08ca58abff11bdfba721dc56ab8acf06ec1b7c48a8699a0955cf35324680aca7", + "path": "code/witness.py", + "replacements": [ + [ + " with open(os.environ['WITNESS_RECORD'],'a')as f:f.write(json.dumps([key,got],default=str)+chr(10))", + " import time as _wr_time\n _wr_path=Path(os.environ['WITNESS_RECORD'])\n _wr_lock=_wr_path.with_name(_wr_path.name+'.append.lock')\n _wr_deadline=_wr_time.monotonic()+60\n _wr_fd=None\n while _wr_fd is None:\n try:_wr_fd=os.open(_wr_lock,os.O_CREAT|os.O_EXCL|os.O_WRONLY)\n except FileExistsError:\n if _wr_time.monotonic()>=_wr_deadline:raise TimeoutError('discovery record lock timeout; existing lock preserved')\n _wr_time.sleep(.005)\n try:\n with _wr_path.open('a',encoding='utf-8',newline='\\n')as _wr_out:\n _wr_out.write(json.dumps([key,got],default=str)+chr(10))\n _wr_out.flush()\n finally:\n os.close(_wr_fd)\n _wr_lock.unlink()" + ] + ] + }, + { + "after_sha256": "0bc39b4bc037bde6b1644cc53bcf9394e585e0d8245c48b2cfdb79365e216ffc", + "before_sha256": "8e1c5b5c4291637aa0ed4366792106df3cd7110bdfcc117a3d5da30a8f209862", + "path": "verify.py", + "replacements": [ + [ + "run('lift-parent',P/'lift_parent.py','--owners',work/'rebuilt-owners','--out',work/'rebuilt-parent')", + "run('lift-parent',P/'lift_parent.py','--package',P,'--owners',work/'rebuilt-owners','--out',work/'rebuilt-parent')" + ] + ] + }, + { + "after_sha256": "0d8cc021d2401d047aaec79060ec2ea28ba06f12eca8dbf4c60c78bb31975c4e", + "before_sha256": "ebaf637f1f818dac9c0fce0ee3f18df300873105818cea29a8ae9e8b737b5c7d", + "path": "code/witness.py", + "replacements": [ + [ + "PAYLOAD==1<<(192+(GEO['dimension']+1)//2+2*CALLS+4).bit_length()", + "PAYLOAD==1<<(128+(GEO['dimension']+1)//2+18+1330+1+4).bit_length()" + ] + ] + }, + { + "after_sha256": "c5106e0d7a97382677fa228fbade989262347968a0e54acfcf6712aa37e02f47", + "before_sha256": "bb213d0af12218ff7c9c572717e522d8bbeeb2856b87a253f4a7f44e0fd71f15", + "path": "code/invoice_allcold.py", + "replacements": [ + [ + " required_prefix=localbits+input_l2_bits+call_count+bridge_sweeps+4", + " from blocknorm_certificate import certify\n blocknorm=certify(template, {pid:base/'providers'/pid for pid in template['local_providers']})\n assert blocknorm['status'] == 'PASS_TENSOR_BLOCK_NORM_CERTIFICATE'\n assert localbits <= 128, 'actual native scalar/Horner prefix exceeds charged local reserve'\n required_prefix=localbits+input_l2_bits+blocknorm['max_active_depth']+blocknorm['stock_l2_bits']+1+4" + ] + ] + }, + { + "after_sha256": "0d522b09c7fe6a5e62fe80c28f3eefe733557a82d77c6212e5d4b91ffb7e3421", + "before_sha256": "02502a217fe8c9e10229075b50745518beac512c48db20e64c3e06514a4da5b5", + "path": "independent_core.py", + "replacements": [ + [ + " payload = 1 << (192 + (M+1)//2 + 2*len(c['order']) + 4).bit_length()", + " require(localbits <= 128, 'measured native prefix exceeds local reserve')\n payload = 1 << (128 + (M+1)//2 + 18 + 1330 + 1 + 4).bit_length()" + ] + ] + }, + { + "after_sha256": "d598a2ac1e2e8eaee14a8c285e0277a7ae44ca6a15bd2b5cfc67fb40844fb387", + "before_sha256": "c5106e0d7a97382677fa228fbade989262347968a0e54acfcf6712aa37e02f47", + "path": "code/invoice_allcold.py", + "replacements": [ + [ + " complete_invocation_sweeps=call_count,bridge_sweeps=bridge_sweeps,row_prefix_extra=2*payload,", + " complete_invocation_sweeps=call_count,bridge_sweeps=bridge_sweeps,row_prefix_extra=2*payload,blocknorm=blocknorm," + ], + [ + " primitive_arithmetic_margin_bits=4,controller_audit_sha256=", + " tensor_block_norm=blocknorm,partial_cover_margin_bits=1,physical_stock_l2_bits=blocknorm['stock_l2_bits'],primitive_arithmetic_margin_bits=4,controller_audit_sha256=" + ], + [ + "Sum every actual invocation and bridge sweep and take the maximum local scalar/Horner prefix over both orientations of the fixed provider.", + "All invocations and bridge sweeps remain charged. Bound completed-boundary energy by at most eighteen active steps per owner replica, using exact tensor-isomorphic whole-family helper unitaries. Add the full group-indexed physical-stock sup-to-l2 factor and one partial-cover margin, then the maximum local scalar/Horner prefix." + ] + ] + }, + { + "after_sha256": "e051aaa166e01263780d5ae03699690670b597fed6593af4c37a7e978825eb85", + "before_sha256": "0d522b09c7fe6a5e62fe80c28f3eefe733557a82d77c6212e5d4b91ffb7e3421", + "path": "independent_core.py", + "replacements": [ + [ + " prefix = localbits + (M + 1) // 2 + len(c['order']) + c['bridges'] + 4", + " bn=c['blocknorm']\n require(bn['status']=='PASS_TENSOR_BLOCK_NORM_CERTIFICATE' and bn['max_active_depth']==18 and bn['stock_l2_bits']<=1330, 'independent tensor block certificate')\n prefix = localbits + (M + 1) // 2 + bn['max_active_depth'] + bn['stock_l2_bits'] + 1 + 4" + ], + [ + "prefix_formula=dict(local_scalar=localbits, input_l2=(M + 1) // 2, invocations=len(c['order']), bridges=c['bridges'], margin=4)", + "prefix_formula=dict(local_scalar=localbits, input_l2=(M + 1) // 2, invocations=len(c['order']), bridges=c['bridges'], active_block_depth=18,stock_l2=bn['stock_l2_bits'],partial_cover=1,margin=4),blocknorm=bn" + ] + ] + }, + { + "after_sha256": "393323f150d0bb686419804d51cf43d0f58450d2a1e7929725acdd26fdbb3640", + "before_sha256": "2286f00e462ff28abbb3f396095463482a1e063213b9526a7225275980c77eaf", + "path": "audit_mixed.py", + "replacements": [ + [ + "pending=A.check_pending_axes(ctx);receipt=A.check_roles(ctx,roles)", + "import blocknorm_certificate as BN;ctx['blocknorm']=BN.certify_context(ctx,roles,dirs,source_parent=parent);pending=A.check_pending_axes(ctx);receipt=A.check_roles(ctx,roles)" + ] + ] + }, + { + "after_sha256": "0542dde915af8902324db2f59136da078d5256bfaa8f1510f3e59336be7e2680", + "before_sha256": "f25e1e870df5d5a16a1e367b3df8843cb01644ab4b75895d7939af81e4fcb833", + "path": "code/assemble.py", + "replacements": [ + [ + " assert invoice['global_prefix_bits']==max(z['prefix_bits']for p in invoice['providers'].values()for z in p['local'].values())+37+CALLS+CALLS+4", + " bn=invoice['blocknorm']\n assert bn['status']=='PASS_TENSOR_BLOCK_NORM_CERTIFICATE' and bn['replicas']==REPLICAS\n assert bn['max_active_depth']==bn['boundary_depth_bits']==18 and bn['active_calls_per_block']==bn['bridges_per_block']==9\n assert bn['block_width_families']==896 and bn['physical_families']==invoice['physical'] and bn['live_families']==invoice['live']\n assert bn['partial_cover_bits']==1 and bn['input_l2_bits']==37 and bn['local_reserve_bits']==128 and bn['retained_payload_bits']==PAYLOAD\n localbits=max(z['prefix_bits']for p in invoice['providers'].values()for z in p['local'].values())\n assert bn['local_actual_prefix_bits']==localbits and localbits<=128\n assert invoice['global_prefix_bits']==bn['actual_prefix_bits']==localbits+37+18+bn['stock_l2_bits']+1+4\n assert bn['required_reserve_bits']==128+37+18+bn['stock_l2_bits']+1+4= 0 else hi) + upper += count * (hi if count >= 0 else lo) + return lower, upper + + +def compact(bounds): + # Report outward intervals at 60 decimal places, retaining rational signs. + lo, hi = bounds + scale = 10**60 + low = (lo.numerator*scale)//lo.denominator + high = -((-hi.numerator*scale)//hi.denominator) + return {'lower': str(Q(low, scale)), 'upper': str(Q(high, scale))} diff --git a/research/staged-release-retiming-t530/numerics/t530/supplier3605/STAGED644-660-base.json.gz b/research/staged-release-retiming-t530/numerics/t530/supplier3605/STAGED644-660-base.json.gz new file mode 100644 index 0000000000000000000000000000000000000000..dc6d321b1e8e2a837a1ff7bb60e8f8f78d043db5 GIT binary patch literal 72570 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 literal 0 HcmV?d00001 diff --git a/research/staged-release-retiming-t530/numerics/t530/supplier3605/STAGED644-660-extra.json.gz b/research/staged-release-retiming-t530/numerics/t530/supplier3605/STAGED644-660-extra.json.gz new file mode 100644 index 0000000000000000000000000000000000000000..78e7b2bb0653c8dcc0133980a19dd9d97ebdb67e GIT binary patch literal 72568 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

c^2e-a+VPhAq3>{xXm(b1#L+ z@i`Oqr{)|KT3{dMShqewZ;XHUoE>()32X<8R{H`cn-9FxaTXSOW}CbQ z6d;PO!JSRI+C1mOuhjct}^&}M9(c#ia z=d(SowIeE>{Kl%XRaR%zcSf3f@Dgnbt!zgIVm#Wyi*V~H6sY1yC;zzS{pOE0F`;_C z2dDm5B{3^gtE!#VjuHPb#sFl{j)*n*+t=3YzlqWRfaVj+D3C!ND_*VlbZM=f+_}}# z*L0yXV)+l}?_SZE^r%fQy#Q%Wz6P|PjQO|}BeOPb9j9*VW5rZf$tOCneJ`w@TeNDHL92e$S z6IUMdW%Tq3J`&&6Fzbw2Q#JH4TebTvh);W~B|^&NgBq=j&fyyDg!ZhK_E^@oimTP3 zOY+_{fzC;Sd#cV{tQD6Md8F$Se(InPM`>9Y9>NLEOm7YvOmKzCe7?`)kVE7s(5^}D z1$(8bRt|WF`&QG03~%|%+2nxcN!WXetm}!80^&-aCPT6JjX_0*UBjJ-x!3;`{ln^z z))RH?4EfX-kN!^|<llctRlijGA~m-w#!71g4|LUYbTvNOa3Vf@j4NVhI-6K zvf%W*b?Wa9nu3FjR{GG$Kb*Ji6?MMCx=>5HG?~?Jc(OkH_++gNmAo-v(-c!5Y$>FA zQ(%{FG3tG`Io>~UVx+HqsHbfixUMgxO6L|xtd9HDn+OSpppNfyL?!_zHX|C{%ewLW^G&6ci(3p{@=M*ueXol%Et4iG-5n5=wg8Zk;qUeFr8iz_3i+Qn% z`lAZRvMbEsU>G7A8aQk zWxch8_p|gV5gv`qy}rbfo_S9_yY6!P|9SZCneUSS^YE*A2gd%7hoATV^6>RKpOUWr zkB2Y6&VKtpB`>FgIK*CM$7w|Q~4ae2OR36LfP>Uh=)#Q#Uf zBmPgv=brB;Z;Vg6*sz-$v;sbC$%(6Q)Fac<5 zY;O{eCYIzHN5}`FpyRA)=Rs*6L32nSC7cQ55Ay^dlF z7oXoCycAQh0y~K^pI!_p=a;{1Q=DveOL4jC2fYEU!oPXG%rHLl>cMJuq-9sD`f%SP zw(UHg!t#&z&tG*2g@_ii%pMI;oN6>Mi9^@PRhKMU?ZlkfAGL9U|AlLl3Q9m(ZCN<& zK)A!@Zy|~qY*;M@q4kOuxpm>|p%yNwSYC^ucJ!MTx$$Mq>}1*A?#aKkcYnGfnJDvYoG)YbF3g@PSY&~`ssEAH^@R!<5q<#Q5N&(ltCE)QGk;9jY|m5 z$ltgF>3KFTn6_QP%|7cNxgwrZBbA)jcs9Y7=%Th&7%U!P3)mljb00{A)>-=Mp0s1x zsGr};LRM=%Z6SAgT#YXJe<%*VIdh}a;ac9LbQIbRKqE%$OqR}_1955eA1*2X!=*u4 zZ#Ch)Phd`|88-!RxODM7ZsT!-XKWAh(COmv=JXEJ(9U9UJWa{wel!{9WjDVOmGmtU zIp!T>0tCtwl&^A z5VfYX_tgiHq<50q^lj6&_b%6s*MaM&J=ETO9}n~GQnPapw^j#c5<=E!?u;7Xq~2gE z-_-4Ce&}1p43aZ#=_bOdUPyzikoIAPDwVB10Zacvi>6&Q;_7syD^eEX77XqERltt( zYg6ax>1#cYoCOX{$Uha&>#shuZr-nx;rb$f_WFMssiN7KBV^KZF|w$9D=LNGoChX{ z;{EyMf^z=i3#32OAJnN#KH%ogSX=f78Im}qsTnU1EYP>Ag1BVP_^1sRpC3}^e@k4N z@y1*bcHNo-pRg$?$CQpnVtRBkl7=VgW1?NK?p1^ynhY68$jO2xs05X|@GG)1;wIrm zZMPOHZ#h)?_wxr|>aGcQ9u=0#ZL<^By)Eh9n$809vD<@M6*B^COYnpEd=z}ufJ7fj zP*d*d=~3$(H`)GOp2d6?YUb~lg{z+uFd}`r(Fx0vq(4MbnY3^4t|`(DKi?_+e9^rT zcb+;3Wz1f*)eF(G;fOkC{g3|*c0#{5FHL+&qX`{zT4yi-asPx78Te}eJ}zpqwffZk zLtt;=*?iBS^Gl+v`=Hh>=0v?t@fHh;*&6uYhHLsX3$v$Y-2Lbmi5ADA90fKLBj_^I zG#U%5d0d6zwzT?sj7N`<;0N{}59At_G5EE>dA&)-g6S$k-`QYG#m`nvz@ptQWLjJ>sjh0GLU? zg1gn>RHU!ackdz@s(Cef!aO?Y)jG(xMXRpb*00wnjR5+PW93w9wf+LDdAg4+Z}{bT z#mYsTE8iBrZ*!urvn;qpR$V3`D7CE6Q$Fug`m0kkEY5CxUSbbk3I)6aKD&$*0d6m@ zNZ&N9eM8MWh4u_CEtWy-%X~$+kP;BCFm{s1h)c6aoU8S7Nc;6EOh%4%=$&N<8 zdd?x?6Q^hZcqGT&W3{u{na@RsUy5KdjkCFcJr)gFdF*@)_mVEp%)d9#KUcvakjTL38P?K!vv{ucejt#KI=bcZF(%91-Tek^=cFY|;MRXr`PHwf{G4jA1^>zWP5u{go?+%yQ`8=IUOr9^Ut~@}=KbL5BzgGH zV_MS`xhV|kd;)q*;=U%oJ|(2^il!+=?vdQi)w4LZEN4S=Db&TY$-@Q*=ru(uMeEeA+KPAD zSpn$AFA8fs4bEgSJTIC`9^MRD*BZ_fXxbE3Y3ru|D`&17ZTALUJl2#Y2b%XR{*F@3 z^6(lsnSL=0ifL7U4#1)}`Td=a>*F|li|=;`>pgvJI12JRNa`=vM4lIemlZ+DrfG}! zxZVkEiELsy&m?ZmMjuZu(^!-=X_V33Bl-~kkoSnv+a}AN|H8R3Q*`wqzdztEeHE3I z)6>-dmipeak`5D>hI-_O_@*7>^n-4P+vaY|qT^lGYL{IT1{cPG>dHwGU5p+oVP3#^ zLy=QlB5lu1@ip^KCUbMHHMUptq>Lp^zPNW~%8tavgxsac8y+<({T;HN(W}@Sb+rrX zI<8Us1f(FBYbtA&92PgaT$`H(r!!&jEwTRH{Kat0@oqosCQp z!M)66&1g0{6`AZO6inTs1wRQ7={MBBFEISMSYB>}xv>*z_CKLo9|%wEmcNJmv|3Eo z9h5^MJ&+URM3?^2(Esv!gTz|&y3M!cdEpOV>?G9xuhTmfIq5=%GzeN5VtZvNmVXxw zUZ72qnN(UCDd|F`A-PR7frAx}Y^-r58fbDafdw0o^+#_`+Q9D+#n-W%PV-t zuq*_+LciO_hJ{d+uQQX21gWdp^fMxIA@d^y=KL*#{y6Ov`6aVR8ifQMjJ9Ms?!Nk9 zh`y0W6~6p>LM`@kbaKGK^lMJ#h=vwqK&-mH!ueV(#qtJ!{5=s&Nr&$@b`{?IDI2XJ z>L;hzosD%`FP9QI)BLS}qTgH^DZpJlI&{GexTtXNvXbknVD_sQ8yuO?KFpvvWU52? zFLV4$7!#n*W=PI+5P&jOWFdzV;2AHy@`Kt1LGJI%&=iYWNKu#3!RoWl;buZR^(ZRP z=FcmglcGC%Lj8+d?j@)lKL}1_ODlqb8`n4as-}n|>f44O4C>+fKoAEJAR`m%L^N*Y@o#{uAU%kO2B~0zx z?%`qBXv)$*m-X{x1MkK&rn8W`Ypc9yqp#r^oH1Va&XVc%rTI*5*1&DQ%^M+q&61 zl|91TY@EslVwjIt`FNF&SNV9YJ7|;%ig$O+KOX8AKSj^bVv^F?HIlg#lDP~LgV`iY71s=$1Hy#q6fXtV<&Y?=bqaK zqHBVu4@!z@r=+}Zh$7FqPFwovY+6)XJ>Bc`aaDEx`H?oABGtwnt`?v1WxOjuh|sFm zcnTJeEz`2>d@C6vnx_AKb$weG6`|$4azzbIm|9jueP+ubL6Mj7R#2@F22ZbDQBTx@{t0Q z5w$lLM{()bm$nX2I)~izG`-XB>vG%US~5WtNP1Z<)<^u@*etyg;Oe|4%M)fxABMLo z3hgaL3x;3xeX~ymb5GYj-`D8mxAtg1k;@KWc97~VVbNdyDYEV{lKAdAL)osk@U<*x!t(3*7yheKjika(R|bt{zs0)L z_VeOXdQto4D*EEO1^szCR_+mNZo|}5`l(TQYmzrT+KZXAy-{B}G~}OGFDQnXx(82X z+q4hTA4;Sb1N9de?OB%ZYR3L8zPah7Js!%};@U0CDApgk(%9}6x_rp+fvY*}^sAKo z@zS~G?ZzdK;tS3-&mcb~Php!WP2XPfw{6WRF0C@{r&L1DP2agdw<1J$t_8F0gelWP z{(|=|wioUAGg3Q4a4E^*J4&&sp8L|u_(Ml(uR)xW--T>zn;UQUUQ*V&Y@VLI9K^Z4 zs>xcMuvErp0qoKCgk+3TB>QsZY@y4a<+(?LnmA?s5VG4&bi|0JZT0>=jcCX*ySuBG zW-n1@B1+UUbD|`r8N{(`w(r@H)hk46!^s(P^l~Uj{^fCR<3~EbnuHQ&tX0^R6UgWu z=1JH`?3sK2&{CRT?_J&H4qU5PD9r4dAGR%tqgmUiR$MgKH)^FrQ%?PP6hl9KXwQ+5 zn63CFJxDJk@~wI*7grr+qH?HRxoj(6jv*DiZq6O8iNlJXz1j+QS&B#*kYgWO?^~(Y zJT*n>2DW8+=KE)nyH`Nf?=X}ncX#4Tif!qr+=W1fMVB<(Xv40nL^)Y|84QV}Y&*Cr zWn`nv(&$Le&^LQgDY8;`UUi!;B^h|aRmV-hnLN$xb! zocb^d)U#e+Gz^*RwUn_Nb||<^ZCSz5usPN|IITOnLJ*-XEL;+EAhnzc*O}!zhsZ320gZ#9&kN@U zs~A^$ky0~Pnf549q0eqve} zrW{7;rjpYlGUI9Gkkf)xYfssSx(g6}edSy27HqH8dOyTrqmQqCtB@WWeK*V-w|({K zeRVeXMlTK7_9L^jd2>ypR<~PhMCmLV+wLd`n>Ts|6ceIa@y3Lr))O{CFCb0JTN8#9 zGzweFD-H!4r?M+u72{i^k#l)Vz}r;%h1QS#8g?zdK&m|So_8E^;z)OLh8tr1`*HJO zqpD4aXcr*&Hgt_{@QcHK!H@m*+Qwqs1o72)aES}-yxAyh`LOCBklfMbV_XhDaq8ftLij(X3TZ8Ey^V4hPk|)Z9g{3g@npXhd1&k zJ?~{D*`?{Q~ltl{_lkB(;2wP_L061siHs8th%ITa&Cr|!itZ~i@Rv!!e?%^h&O z$urUx!n^THVlyN(H)xk!gVvqb_%>?|>Dr-V3Yg5-Xttj)WEiK=bV#pb9>ViZFZ6DL zU(}B`AuL{Eq;Ba?Jm%C%I4emt@skM3{hs`uS{ty93quyL1Ob>%jOFuE$=v_{># zx3BD`L{DBVJi!rhkRXRwEBLqg3G{f5xeAuk=7ILLrcC>cxd&XgSTX!?OhUe6-AQ?K zmtwwSyV>27m5jQ6E~4UoS(iTTpD3`DzAYn{1(frRtI4!>8{F#{N3ZA?1>LM!Rf?l6 zg8E9Sp&vSww`u9*Uj^b|r4TCEUMBi@aCKbV&a{(nnq!sr<$bF-&8JoBTRD3oM?)s# zhg`kO^bt2|Odg|2$L1|;XSp?WP$hj^lP0$F(U*R&wxSd0Fik|AglwouJFuR;X8Yjf zd?KJ0jGK2GVDnBlA+6ZFW82tq%n|0_`^H4^BDCRg!Ks+B*0T|M7cwbe?|tn)V!V;66yt4kN#(gGqYYR;6*P zLDt@DC|s+Jx1-aUXfD1!ibzlpG_;5EqxDLfcxkgmf#~*AmnzZh77bm7 zUJo1O+V6rZ{kwD5QQp?~<=l0|pf1ZsE(=L<-7O3y!T~nhEh+(YE0XMRu_oG zxziYj6_U<=rBBhkyEW2W;E9Onag#CqfHgu0M&Zylh0%e=1xxANNN0<357oT(3upIQ_5B?nlZ^D*kF$CEwS_xlNdEhql{d}^M|B@X!UbD9)+ zXny?u%}Yeq$e)*PL5!0vUE3LF%bVXNQ>`4W)9-ttl#Jzg?<7px29@M)#~-h^y(vaE z=E+dgn+WHdr-rh^oVy8jqPlYfj~M68!bO4bMxg;6UTjI{7%L- zlX@8gU$}6b2DJK~t|`XY^4rBy6ZqoUsVqcZ$8)zZ%i+uKg1K z=y{-_0;kbW;*2zO$tR9uG0}9Fd4QGDHKKM82^trLf>L@frpWsz$<+%a?_H3WroD6H zG>Yej>XFYkN+)ld#Cmf^ZNQDUXJi9(k>!n=szT;9k86UoTP^cN8%Jqz>lSjpyJ=N| zbJs-R$B&9S9)zbKE9wGhDQ4#Qp|9Rmd%6{>DxA>ti^j7Ao_E><73>|_xMocC_m8ln zBqaPfyrAy-xk9nN)P)dv4h#*Dj_omOqmNI~&89f?V#J%HP7hb?+&*1kYjMzvKnh4% z=53om`*6|0%cVHg=IByZyR?PO<=UIL;@%re@@f#}o4YqENj}bTD0U15x>jy*CbWb9axMGq8_YF(d) z=yy+W&F!2!CMgPn%g~D*r5Fj^(GT$401a>)MG!)gH47O8MI5flO(R3Ix4*$R>6|au zS1GAG(F-Xlp~m*v?P(;S0=F&atK69amsjX1C~M1iO++s#C`}=cQV0tAxhRZc2nzb; z-i~sNg3=EzLX44sg2>gm@ZIKf$UX{mudr2deja@-J)RPV?BJY7Jmuk>!}mk`lwe`I z93lBV{g&fj`KHh5$FEMjN&ZZk$=%{1<rB_kw); z>1%H{{tnqacv(a1&u>w~{*Us{>X{F{ju^P9sK1WL1r2h`{i_k6z~%16fr;N2j(zT* zYQ7B<3FTjLls^8EGAJku=Kplrx z)r5Bj{wehD#=;Bl>!8)9!tme+mr`!O;+60w;&@T_Aio(y=KitDfRYU7Aou)JDitD* zgO}$YhnVG9N?{zjdol>w$ztAY;Cp!H#`u!HGu@S9ip}}CdcbfKnv9BGxtXfa_dh`- zPMVShJ>JJ$>)dj7DmW0{lz_9oQXr~)&@t&PJ-~9?Np8CM(%8|q#O0})09ELJ-@UVU zY|>2?8K&tQ!*s1Xyicw?Gt|#bouV+refmsOrIys!wcvM5=8`RMZU0-}wBXnw8ab<* z1h8{~movOSYCJE+jE!;8idM*le^7Q_#+bMuhwTKXQIUf84;)mD3ugSQO@EBP6)t=o z7x8!>JJ0n1E*j$+3ng^r1Gu1rthG>vvIsO?ikoUg*cLNs`4SYN9};tBw{jB>-i}1D zsaJYi`K+jX@D`7t6?;B%-leMAo6h0(#AzztU~``Y@cuY&$NY%Sx45>@N?&av{|5bf z7au@#oK5wn9vJqh{F1so+oCA zn9>3NJ)7NeL(~ZhFU>!a-I-ZKb{|cr_s6pPy5GHz9499osEthJxEu6CgPik`MT7i4 z)v(>7$YzVRG*8S8njwHm@y!-@q7jqhlWrm zWOPBiMCn-slC@^1MQm+`>vn39EqF(Ta^ z5z+qZ3cgv3N5<-sIL)r=ENmjZ(&a`_&@nx3ytF953`kAO`L8C~c`l zW60M<52&0BiNsJJSRJVB8yK;bTOQ|b=HPnWP(43=rQ1UL3w0+4*~hzgoB|-u|8!;u z@f6$3J3C!arjz4|f_I$ClhCpmTCJ{1cxMt1YnjU&m=i@=o`m9IrJ!9{SH9(4_0EaX za)3(kcGGP#x}Xrkdjh*}DS&VU-BO@PY^TZy;}#@VXlFX|#e9E)oLf&un|a^YT)VyC z)EXT{-cm(R@+V+>tu5iLRP-c(BJn64?JWXDFJLl}+?~<;NpID+9N)d(&>Y0<{w+f)$XR8u3LoeHQ$GMU6p%#prA~$V!L$bKMos*J2pGi zFZG-l)bAiI2RCJvQ(wk?rsojn$dO&(a0isu%r|oJ>@>l7hRbqxS8ngECL*NyXVR(?}`$cAM>k&%i~Y-=sq9iSO+I#oPdy0 zL_+t(4y~Gv0 zXpE=588dD}6xF_-Gr19WQQk|>`3>5R@fC`hyfImR+u(`G4pCW(jDcvRhzvP?!LN@s zzLBq?4>W5)kWe;fjTQrxA*o#EP%oyWSs~-NkdmH?dy@;hJLtm?4J7!U$iHcfDh-_r z-LYe4-#WP(QT#$=-)ygy)Ggs_!R-T)>k{3T?98#}X7+t+cjWXS89&n3&VO2zjHNPR z6D6a;eJ}iIVKSEfy*I0c$!PG}vZKezcsE`)aWYa?OuI-KJ--)XO+}!Ko**bh&*yz0 zvabtMY0lSyEt!QKGyjF?>=!p(>TrJGwkM+B+rwT-{@f|Re`)CKuV88s&d8P6{3gOl zQqA|sW~MZ}^IbCBgO*UNM>sjrqGc6p5l&8xl39^}DXDDAjD*6`t=Br39AxD1RO(5} zmV^%JH7KPtLVVJ(W0Tfw?3RT2lw&7r+4Ct|rC767iZ#cE&!&;9KkZ)dDgsRcwcEjq z2sBAG-);mEXwQUp8-b=yO!>7a0!<_LX4&cyXwtlUD<Xi{Cvp;sc%Plj53)<(;N z%e(wDPK!F)%MbH~^!u60pSJyu;@}(u0#JJf@GR%cAy_3NHQDUhaV!$Tj*l-GeqQDFkTR% zUm<+E`LX;7BF@R?==TSj!*9a5{_6uh*6D2>QW({zv*v~(GR1;`Qo!mB0hI|AW6}xo z-Nc4TSTc!Bv0)N+%5dq}@JLH3@=dYq$y7Z?lV&O*qe<1OuIRrAc_uq|zX(wermGW( zEe)8wK7r}Nd#OqPImq*^j&ls#&%XxIE2JSbzuW~_#$*e*;7-GRpyznrOUc zTOH(r?2f#MXUNUi{FDJ8t&-!Zv>Etq*bkOJC$mNooH}A4%wA-2c)? zCg5ZG@Jkg8e#7kr`17pgix%hR=UK~l zDeUt1S$Y8XeV?oS{3w4)r3Y-kkkQ*X?bmd@vE2O#uw)tCo~8Xn=KHAgQvSEH|B~ki zGKvg-Y3*dPJjdBJ)q} zG^Q@g`!Dk^?ZKl;LEwjW&xBIV^Y83*qyMebLG@do-==$#v?s}LIS_>+zQuZUHZAsp zNhq6qL&Bxj*L*TlZ20U*xaworDaF2JCp130M&ewo5u^{WJhEUTr0Yv1YDo|@mi=@V+?+8$ z4=is;_sDz_GHf)?PgNwH=DN6UmFC^ef$SVTkVV69pDC362m#)gJDyP|US(9YfU0~PPv^(%B zmrWbAV{9c+)odZUPx}7!rzHzfW@|b3xk8q`qS@yPae>U!E^~!wtitKmxk8q2^!ZJ$ zkmD;uVUsIFOGbBHzh&VJuOFNrXmVc{0Fv;nqBRL|N*hj8I%r1|^IHRCA#gT(Ry&$} zcBQ@+ynHxztai=NZ%+9`S{MCjn?GcA(M{lDKO}Y0$ok?wBz5sU{kX~La{LT%+U0bS z>chFq=_0L#bDPt}cORRF3IQc8g)K?y-Ydrx#OHlfN@Mdb`;a8>Nt}C29jmgwwT@Lj zJCYE(!mPSdj5{{{*)&4^>F+ZtDR)#}KW#JaxR7StCfu3+s;QcA$CW(tKHsi%_dl2U zc2t%rmk;@Nq%%8RYlm%`z@?Mt0tWXB24TF~?!A0>G=;g=xuLUC25+@+VUr<-M_CEo zV^OW%@?83yFT~H1*3r)LUc3`8s-*UVjJzC=ByA6*4sQpSw-}G8^&H*eFHMTI#&MzeP6zg`6c2PjF>4zK2`sKE&v*96S2(QJD)pi_!Cull-Q6E- zP!~0rw`$8ySBcA;&I6W3dLTdh6;4?L!-JB-mhQlG5Bv1xGUQWPbdxL?!JltI$s)s) zA=2Mmf9A_`bA6z^BWF{&*4w9?eGrBV3&6@AZZ0or=rUC>^V33kc2@LgI~8E=8?GVs zSqcilxbZRTg3C42rFUP_V1~Zd)0|Znxp;HE%HpfUGi9{ma{VK%n+BK4boyQgMeP>t z2=ZWux~TNS@c5gXsxHeJ+E&y{AWO(oT>(x_74My=FjpTn{3xvh6Je^)d%r6t!v4_% zd!cF!S>73|B^kznI$MS5CS|LUI#80!auLcoKS9lPx#g9`X52#%%<$!u!3JIK3bl^n zc2D>84tCON30%0f(}2ALllPbojne+0Q$ajojaRM|k^5INuNm>SI2Py_>I+-7J5(U3 zFOQ?k==++)YaQ8>3!5R&N>gYoMd5>p-4UTI5J=h4AtZ5Qu$ChfPY@Qag*I4J4pY5A zDqqo+rl^GGCLGH<&<&tCOUdicRK}t!&D6>HES2MHqWOJJWZE$dzxB{d-&9JmyL@Ij zwghA_96XHuNJUt6(eNFeVawv*(u$(MMS9H&@XkfJ7F{?!mw(X_KgHCdlBTlFW)WFdipr;`GNXF5ze2>g`&8@*Pav1hUrc2C|n9gK-vd7%S$KaAK?qqWBdnJVwzC2Tsd zQUFB<`~q(=pPquIx5D3w5gKhXMFS>-zx}+J3tm3et~|lcRPQlXA#FM^axQqy4&42^ z`~GEjCQEMjGH1TGa^X`{i|DL9w-LiOKLXg#q4_~kKohNq?J24tv>!`=<%KGumHx7lN`FaVFMoat zaq$h?$ucEv8;w&lOu4D#4FK3jpvW1~nY<0Nwd1bSkGtZ;A2=-cDI`Y;A7@aV)hV~v zS#wr$Ye|vd7IWz$nCMiRm|WDJlC*6nljg@^szu5OqDl5sbdLA*wy!jdXsZOt_U{Pv zlu`t`C!W8B{rF*|unS{0CB$9{_RYkU5^!Ay^C_B0WXbHJvu#co%|qom=xR!w!>&LH z3?2eyh_)GHlp@r#o@|)npXR+My^1UnnLVfSQSYR8-`k9%1=OnBkvCJ{tFY#M?SNzPohX3ZR~;CTCrN z$I;+|5?M}8N!!l24lEQ7opCuY-3l+Mh+vsqcu7?R3nFn)1cJ6}sGaA7V^NrXc9Y6j z6nM4-V?mYDS{*SFBoX%oiL85>Wl2lFAgZ+Bcv-Lz@K?|C>}s05zonY#{vc7EV5bL2 z`KMGw+mh<#Z@)-{6P%U!odpox^7BcB-%&6i1rX4Zf*~zdFu73wQDWLvSU48)l%4J2 zm4p6tAU8VgtY1?!5hioEOBtH^`~iM}Cb|I6AMoeuG7xWm0WSS(zq=o-?}~_F{=s?* zdJt784*X!9=KW+wq!u2a>4*6Dz27U-9W3 za4CfLdpp0K68bG}E4L@TAe~CatOt#h6B$O*Cq2QUIFOX!4prPgAfrcIhF?SP>#ykH z6?${71aU&fw5;Hfc9|yOfe@<1=UW}Io|5q!Fq8{c&`PZ_e;EZ72C-GbdLgf6jp%Y)vxMwR-QL={gn)IQIe1-qWKOD=&H96AZ! zz$>(eyS{1|gA2G~W(-U{1{V~2a0BUDT~;p~S`XLag(B_zfmp4pJ7!r>XTu z{Z^!$L^P9nXcCmgb%`1tsfdK1xeM!Bmx@c&Ri<%L<-py`H8u3!zGEK>^Qr z7w{CXQbnc~T0^9);F%OFnC&6NZ}z~YU}gGMU$;n<5{>f}7EH`(il@4TpR=FLLXOD| zm$!ax``MDOdrmJwTx9W-(Q`~od0jJYJ2p=Nbccn2o|xkarB8PJkhcyoR>i%ZF~6pE59KP)J-CtB^&@eVEB z&EX@i-;q-4n)ONjg<2+M&=tPuKc?JK1yvViaI{qw9nuSk?yk7%ccg~PU0TgBWJ(R) z35dD-SrhkSNpCjbzbIo{Hq?};tBSD+wDTnm@z?h3(vM@spy)~iPkX%WF9A(W(4N*SYy!Bxw)sbele zOmugxV!tD0El2xR%V7{=D>5C5<&fZd$mdfv+3zS>$MO8CV>)!5AFbjpf1PA{4Sp|^ z_Pf@1tA?)bJq)=Q5+df1b;GT209TGxIH>X-IZJ)^Yr*=>{?9s{-Q>#}#L}4$w=;VnBl5#-BO(!Nb_5L~#&QfUC z1@8LvGX3N&Haa_Hmjt?juM!7>_q#TQTAD%0UTe;H+??8%YpZRA(za!nOjot>(UFxffZsRyLy4#FCEoqhTl^_F1TrNJ9Q^j^SQ;(sI-sdq$1+G5w@{2UBFKU|@lZ%znnibipqAGG}%x_oc%9YKK($wyrj z!yp~U@Kwi_-vaU7Qw}yOZyeB1=5IxW|A)P|+p%ZY4LjfET(1U7qCWi;!Q2MH;KZ{h zc90w!wu8*$r$|+;{#exB{B`~fcw=(W7p+CHD2k#;NhE&{RKp1KCm#G>B;g_;7Wt^v zB%Xy9?tRoRwvdg8uhBI=tVT$FE>!V;I_jlT%ZB~+jMmc>*$Vc4EJ%?z1uhgSzZ<>3 z2WlLC2DkhHhn3tJCAZJdWig(Nc;(sS{Z->1K-Nc}QRa5L$c%}D6(ac@Du3+6LF3y# zC$-zcY6NKe6u0wxL7>Tw#A+~Xb=5@qlr3<#;MD2;oNJ+N7hE;amsr?M=&sd~$zNVT zZa6&NOXMufc~hQ6uPZ2~4d*Y9OtXQ1i6M4jEt6r}zY6CQN*9N zTCvK7>8ml}11CEnNbWVhtETa4V3yXBA|ceUnJYmQ4-U!L75SUJ4o;Oacls|FjB2W4;@ zK?ZC6BKZ_Q|M{BkQ;~{h;F}1L*Zij~Z{P60+Q?z?W&~Z@-=Q|Bf;stj@}=Lgfh7G7G$v2 z-g+-g_2Gp2wFZ}hmG`KQ--XrG6{U|aXg7HqG}T5;C75nQ>wtYOlJ)sKvV5et8u*v2 zk}j;K$+wzM9FA82WZ+Y^d>E&|$ zg4vy71)JmR3$Tqew8tDVa+SMQ6fwkItI_z$X8l;-@AD$EI*9daM#s&9EAQnW|1cSi z*8Mo54AvrX9}1_vKbk2oZ{QWIjF%fP7gkfol&|+v`>Zj|kO%YJ6sz@Cy&$Hq(Hsg^ zMskCgUL!y1$5MD-{Ee5uk73ANf8+HDp;pC6?Uft-<-Mqam6@GaKHYg+Dj$pT{Q;Ae z;?%+v%g3^N?eqPy-VS~wc~$)LoctGHVzA^KMec|YZQ+l#m3>@gB;dcl#;wslrNzP=`LHE{|HnCLcCngZXzhF zi5O(CMvv#=Z2L}eLxszqQ~Li7aQ;v+@eflrS-jVbCYjO_i|>U8KV%MnEw!j%xmPF4 z_$#dCuIlwQcUAV1N~=DY$#}j`WiQl zAkA8QQgZTgMZe_kRyaATn=9H$^gZ4yTmB)R^^)jwe(T>84XtmQM+>Wdj^hwl~bLzK6Jpu;(hX>fPbK%!ehM zo-XFEvZ-+WC7#NMRf4@U3Xfpp@9U|`hQC@z^=Zd`%G~XhQkD0U;@^igi8xYFB$UUa z{sD{s)8jAy`LF-_+h6|fFaP2H%98Ti|NO`Q=imO}?YIB$@BiVifBP@Lz5Vll`yc=M z_V@qv55N7(Z-4u@xBvQ2|M<6mYpMO^@t40p|Nre@{_p?yU;g^vfBV zY0g8XwRt!%u9jW&^+ojab>7P}rh6ElO{@f`br&%8lk*=hA2K)9$z{@*SX3iPFeV^RU$0~UF zi_yQ6ULHS2c?}a@&6owy>2T8QZE3MGuRnnP;-ca%KSw&?%xTI`J%24x^kVQMEH41L z!lq+Hhq}OpfG@8z1g?+I5$={A2z7Xdv@+tZP?QIq!W`6lw1W_m(BzbgrZP_UDI-(g zkHm#AhqacruhcYQ%5z+*PS7dk@$Uh-LFYIr8IzI$DPm1Qp`CKX={Bi-OTQTTGnaZ? zbuQFkwZUPQpF+MgP;h$YsbyPyd&>qLwpLC9EG~mV)OWh&u#R1b0U2eN(#QdB@l~_7 zoE+S8ruuU6S*da5tu7^DM+o(ER>}`eN_>F!wj_?ZA7BRQY{v|Y(@4|j8$s6T+twaN zuAmLrQBmaAgez)BH=!gx=?%@gLMMXy0KmXlv@yobRt+c5zaIIwr;^Pir2FkpHuL&m zFvtBHgO#H(_&68Sap<$-19ph}bJ>dh);Rr|4nJpxzC?FSL!SkVHtTPVb|}CKJ2@H` z2ZgN#fddOt`F==zvJ_Sd0tfC!(Ewb1IvMpL?3v}hNP}nTuWD4WQ@dj2o+ZcWQ4cjW zM34DbF?x)gl_4ZXjy`N{VXIZ6F;fDgO_pXQieB^-QPZM_HNy#83ebe7gFuj2yr~BF=OAFJpWC)zWr|X7t#y5CN zQWIXqMo;{VQei{Z!>!L3@;9J?R^H(tIpxw>sE2@yhb(sSfWU!x>Sds0)`47{EGl8=;C5mlCVM%Q!)m=~@Hw-H3$@UN7<~#3PK}f1)SU=FG+H(P0B~TE zRYFSS_;~qu!9}mWT|VM=Q|Wbe2v4xWDoJm|hrB+Ke()2-t<~Jg!0%CTa2B4l(iHN; zv_qDJcJB0{>|WptTEa;N+q}ONS^T3f4BNela!;vt@&(-v5>f8Ex}h8VYyTj+D5dyu zp}|t+l@bxu6P9Q@%g~-G5Y#GsC8V0c2Xb&FJk_IZHgC~0gS2|QkrSlV?eUYJ0Ebjd zKOSI@HP~xch_dw{Y|W#ez7`M*J<0&^mIEh|l{3`4kJF>kw*}0YrVvUQsMD?$X8=KZ z_5|Ry+EYpiXkUH8egM^Fb`kP*+tn-9;ddAD5KO|&pw05ulJUzR?x^ z6-VE$K(rwG6%H3hf83FIG4xk_U>tq9VikkvSHxueDl1*Vo3Z6|g^4Pn3H zY2&IOt-#)x#9xuU;e%&cLC!&;Sy9g6NtG+&JBWS7oyXDVD+E4>eg)#k7gW7+0tC-8 zR%U`Y`f?>n2%=x98p5~!SAL18#9xUk!a{lF+lZ>lE0afjLCq_vND%!>Z4yV{uOur$ z^efRzT-(em&W9YAZ&~fzT z%1j+Ze;c!Vf0sm`>+>& zrTPz^PON1AVYxZ3!UsXAU*#9Vw6B^G(JRNR5=0pJaaF|#n%%25M_A^sk|J-P>puO? znp%}YqH!bbSvsY}$XPX9qUf*MGja5*uuYiybl2DkqF<$cqH#n0t~pdNUl&uOdw0$4dFGOBF+ZmB$LBKkiapLG-I;SdK=Ew7Y;=iJfwXaOfSC7qW15%*s8KpdQVl&p2` z7 zPUAU#q@|z@T=Z5w5syD8R?ynOrJefI@!JIjt(9cGQ0n8WR_oz_OLoy?oA`yPf{GBq zJgvhSzhs})y2O{&*$}^SR8XnlgkBFC;s?13DkuY&F2gW-1+C;L_he*^>l_8mg!ktf zsqwcf3Myb(iH3H?6|#a#i|hMgg*L)ZOB6mX^ZGO@{)kN<+k&VljSf1%S*0cTjla`6 zB|iSLL_wub^mq_GdDGJ}@`f!>^dN9l^uSLac?wXjz1&G^Q}iWfC#w6-G#q}H}i1l#vREi-`W1PfbO{Q}Qc8O7tT$_y}`k<6NgA{uz?di1Fee+zioh4A$04jXp6Z4`cQDGI{B$Z>h<%VSU(5-T_-Q7qDaX(rL!k)M-^0U{#lS zmthMJR^o|Z=0Fd;)gu5|X6zAu0<-{V&DjsspwW_RczIehKrPW1__-3gK`?+ZrN$MZ zR^zG?4jhOxM5~h39G;mtVy(_rW1y=hSPm*ptv?aOtAaFxpeG3<`sSRxlh*g_gBh2)0RcLOh_fCzJ++wg+DYgc+muAo?L0C2UB>Ki*5VzS= za}8$z&-NR9hpzz{1>{M#2n!Ivp&=6moE>WnL;+9b_2oEvB(0CxM?p{V(?o#*xaX)#KUJd?0p%38Rw^`r@KrhFG zWR}#>icC~|vGSI2@L})p$#8WB0QDraLa9gSv&}D{hJc@ZAz>#*O}r|RMYRy{5sk6A zZY&hI)i7h^K+{y?Nra5_5coy8GQGrHTa&I5#H&N>(P#<*H{mN;DKL~y!wuZsX%vf0 zLe6oAYour>OCgqwy2If8hX$LJI#{F+D5znPIN?|pi>zrWoSkmP9Zf_HNDyd|IPpNA z#hdm>WU!4<6MrbW274gM$rWghBM5$3CpN9Y)2mhHFNXGHpaiiV%Ije4iUwT7Uml1> zP{iT$qk-H3vcgN^=+hk>lcIq`1<@mS{7Q<3_LR!TTjK?OEba+J4rv@y3nfIpck2_l zAMuDVL6ldCYXFUr3WZ?ZFC)~>m~qMh&&9wQ)2P3tF?CusW6jlNca95{6aY9nc-cevF8X1?#Oq9H%{j?e`?55lVnpayB*+MH#=J)5MgB4iM#bl?;h9`vIgRZY}5>me@J$IVB}_ zgQpK|W8RaNx|HDaycDmWpf4gpwZnL9xTfYM)q2xJL0}qcNFwSq@{xqdX|!ZUrPL1# z!;1&8O^d6G!w(CTBjeRM0OXVSM+?U!=(Ei*p$33!@Fuy@G-~43q=lY#MomYOQ^;k5 zk#jI|;)g#b1rpP9#&ij4I%SEJAneHwk!ZXliP6(oN)&Y0DvDs#NK+D$SS{finf?4A zHQO|PRO1-q@P`E^lJS;!9)2aC#G5Ml2z{{`2Gk(%BN~f)A26K2t;K_y!9WuOKcYd( z_d%NaLUAUNYY!v6Fw#q0f2njy4vz99TaIXaDG7{JwE>oqM$&?tvK0yp$k7{Na7eEC z1V|!keZfs$2WZ-{A#Awun=B(AJkVOP#sGb@`9;(K@QebVl^T^EFjfSfQIxk0woJzQ zG7)o1RK0aj+hNl-iWA(6li=>|?oMfOcWH4N+_hMc;_mKR+}#~o+@(Pa6#00b_q^XZ zXC{;U@te$Ka$kGxwY&H3ioCiiNncp(?|O_!CF zq)1TeiF(x15ztlJqJnwM5I-tRX)^~&O_%Vj;?mx>%|jBXC_FddD_pgqfpZo9mbjSi zms{JGv!||stxKP6;j<8I^9YqfGMBTd7#Stm@=vX3h9AAI%zq|N&{KIisdSAPkch+CDf|TQ=+{?u1E%3-!+`}Kn9^v zA}}iuYb_4N_~9|Ll_K&i=fJ&4Ox}#&rX~cWXNZwdQg2W6iA{mEznFYScGRDlp9c%ro(tG zAkFJStjlFDNg-j8y`dvJhN-^dkyr!)?d0SfmBMdw+U^kI-Z@Mn%f63oN9q?p#|)&I z)7(qiKM?&=T!$0TVTDL0p(n%m#k0-2-B|=v&CdT|ErS(g$jj=%T+_ZGL3vvIB z)08hT##%*9r(+NcLuM=N2u!ON^6A+WCSpv(w=b)ORp7(?ofY!y9Bho;!yf$XrqA{^ zS2Ye<5&W&mIayU6C;nl^PL8SK~*z(e#v9QuXpyn!oQC^0UITjQ=V#?V=a#yWwA{6l&| zX+E;$;6m94L6!bXq=urTp}7*UZ@CAES+46*8@V@t!{Qb}?F#u9(?tFOSQK5X-eji9 zqDY3@fQ{Kt?&CM(3REKG8DJ6=5 z<@&&0kMcV@OC^SS1(9o&3P{Xy4N>f{l3e>SlONqc=U;$h;6DRdH?nar>Po_&Vq&F{ zche`R6H-#<8Ff`<=vK?EP5=n|-Onj}p#Csq5H{3#oGldPHOG%}%-V&2`$Npi4==$! z-aybMLXD4K6kCBndw2nJfA(ULrYlej-@yTssW~atWxqpBsBw;EN722U|90F1|JMGF z%po8K?1kes=$Q34pN?x$=J#7hXTsm1dyv*>61O15pwg^J&vsZw_dWF(%55{Tpw<{h z80MKYD=t$Rd$U4WUN-?1rO1;mAPl;H3#jBlq`Plgrb_|m+kRia1o(Yl30q2ztR}w- za~0)L-@(&w8a{(vZu7>xia6{lusJ_c_$XrkFY7HF$^KEQ5T2D_i9qu^+CKXd;XV~8 zarD%o8Q0&@KQCgDMzvn7h|Vs$@>iPbEp~d5bn6lPzW-VdRsx!}PnYCZ+ZoIPByB6v zS=JCSI@OeW5P$0FEgC~{^9S!)xdpOk7%x8nx8b=QL&x$GO#H_}ChYx*r4-VYw2U;z z0*F4>)3HLe)>h0P5iQLyo>&8jF5uCq?<{$QZVsEUz%wQ}Xjfe!C1Sjx*5Ltutoy6e z{AeYaPm)~D!73^J?PTHPYZ{GYmzW`9ExwKL93cXGz#n@RV!HFn^9O#KaMy;yDkIuJQZ^L%53!; z%#pdEzV-cpQhda()Xb#5zG>o~H4R-2-c^L~MU3UT15=fQ;-%Z?TJkx-(Q0*XtbV1; zq-_;@)cK;W32szbeHFv4M;;dr32Er=hvrBERPJhq_PFqpgtise>BVIDz9bQ{p>ca! zBrFQjGHhjV(Ag7qQ?LB9n6#POCT{hGq?EHxB5a;01!w%J;4A`Cw34MY^LmY6qZBo+B9%6VDE(3`&wZA5&;07C%&J>n zKR=0v;@+z2yeB2uj;8}H75-&o%a^@nV(TGMhn_tj~EnG=kN@~5G zWHfQ^(S%{QlT34^T;C`!V6WlFwVjVYWs(hZ@k0QwlV1Q)e|P&vI~R{^OFf%8(M5qf zD5>zlKaQ_v`fiD_EoQ#zW*f&tupG7(Dyy0*Q?N7-KPcs}8wn<^u2Qt>ANzJELQkPs zMM5d2f&qkiACub*8=}d>{FUq(mIdPG*{eLefCs}5iTGtSoXfp&6M!$W+;=18vxk-= zN2ighsO(5~5!64dguHT@N3|Y(0vAT4W>G&xT<&2;%Bb^;Nm{(hm8}3NkPx0;*0Y(7 zy*x;{_j^#!P$M{}S2SYcFNI^qIE3f~WgjT2c(TJNTYi%Kp`lGDAMOQabkd33wez&~ zgbNi&S7x)CZ%B-Z78(FguDvD=}}505rr4w)!T>=XFtowVmJbaf8^9xQxp3PTA`!wbpu|6R z00mKAzevsth$ujC{Bpwc6e~iJ+j?fvV=PzZ?dt)LrbPf)WJ*C)jJRUV5=Wf23_*Y) zQQLT#=? zY^91!jzgMiAAQmAq*=Vf5Uo^UpVSBCA2DVA;<^{GF&s$AlqiTGE!iSdRz~&psN2UW z(MZ3MeMw94p1=OlUxjYt$FKHzbPTNKWnqb!1tAq15+oMWW2Z$f54aY6<#VF^6LbGC zMI!5jM;gGGhN<8i+rL%C@+esZ<1A-KSaob-Z{U{S@QfH6=%T#%oDRuHKsU-dbZ_o6g=oOpT0|hhtwg_5O#lF!^0!!t0)vUctF456?v}uU$ghD-=7U6yqXni{io=up;2aj6aIq08 z*X1pQzn^J5Z#`MbHUG2=moSw@MpChmAX&jLU>{6bc*~%$1sVa;Vg*pJ9s&hg7wPjr zGvM#t#C{!4ptl?^3G#AcXBfb&cvQSii6)8!(>(4X{1p>{Cfgtl!}hg`8AKCX=Cw$K z0-eSolM?GJ{p0rpY3UD{3}ppD7m!#rrZp-Yuz3k(r&-1^<Dh8VEpU}@2-|qBXuA%qc@W-q9s}hbH<;0(dIL+Mw6qG8g-)< zImjKT4pCrJLAMbHuxyxbo!?JBlcf_OO2m%wH~s$Rsodg5-}Xpbup8AYy-V6IK+|IO zb(1etD&4fkTEbWAe=+ffa2bt(-_G1SrJuv(7ShMd*D(|aoaS;eq?qIcm0|50)B9+{ zV&TUAxNDJ&U}wo)>hpd-3ZvV{1Uin*D`|>6a{Q-G8 zV*0r?ISCSR`Yy5IYIIPcif%C3Msyg?ngoJB3i<{uTK1;~c`9ghO}Zl%o+S*VNl%a) z8p;>!CQZ9Nc28qYO6Ba&3jypY;@2R7lg=LYOt+(gD)S}dJofArQD!2ejdkj8-R?5*wfJPoIWI-j}o5v3})QVA6aM&}Lh_eAyVk{gI z?%X70?(vSKXw<$?nz zsbz1v{kCZYo`i!J#UC*zO{9&9FF@-V1v7+qrXD&iCctA@tLQV%Msm!iR7gYs;a)nU z8|X7#QTUGT-a^N+37H6DzBmh(v(E#)u}bRhXz0cM#peGX6OdkdM~<$S&@XA2UrDv{ zMReEfIn+}QZaX{?KuMFwgxfVl?=^eMugllk>7?i_qV6deY#|VzSYPQ#5?WbhMqW=P z*de}R^lyLR?sP)Ng`|t;c9v;AYkgtfI!3fT zClzn)r}&49igZRqr5l|1t&g)Z6}4IcYH2^z>E6uF6>b(Cm*9fq9J~^k0_3fbVa7VP zxrd+Ok<&gk{gz5*&5!_kxfC_|N_X@+17jccCJ||AHJKNa8tyAbYUSQ&C`gbk(MAqo zxkvlDzHm8flhafF^)&aQ@qrB?EaG+ClD4O-Ck-8BQ~K~H-z@wbq@{CW>1)Nt!|3LT zkHm&mH?i?SFAsTYQzI{Y#zf-B#%GkK5{=wJWb&lGnIfnefBlfj7SjnRv+UfX4*B3ebZjTf9YT>%$q10;_n%1bi}6?-x#RD_Hm6{TdLk@^ z*@t18Jk=QN<~AV;+i7URK~PJ*z_S)Bh-4&h?^|5J>!RYqQ-&jtKh8ieIm6 zHzflfc@%XoVoX>Y@j?#bUq{VCCnbH21U2#cg&|D!-aMvfshnxJNnRX7tRV#Tc&33y z_797x53EXACgJ`+!cNw}Y4tP#(=qaGK;xAmKB~%Lu#?9#a{)y53 z1lrS+7%&b-7Oq4qVL{A0W+TqSqSnQvi{YY@#bMbm0@v!H5quspEmuClq@77yNt@dT zNC0|**c9hPlS>+rB)~9lrjv`g0<4pCP4=j52=GBBAmK{Fom~>SBY4iQo|cIVi9!_r zlO#Qq$pqnbpy{wqyMR5b_hpTGdJc>@w-ikTHVcN1Kc$7&qLOqqaH-Y6)gAqjui43Y%9aqkeR1!$`SfU z{VcNwj@yw>(lz97=ikqb8ZCL?U99-KOG$g0`}!}$c3!yZF<{x?`%0EK;)#Ax2MpAO zYK@~eZI1eSm@jVqLxQLua%*p&XQe?Z;eDGXrexXN!NHLn!?HNp*yz31p}J}=+50gE zFrx<4^E6%c7$)A<-l~i&gI`H^!4jLEP2FYp)C-wP$u(;^gFa_(Zm{b?=Uy_8Kz5inwAH=F%IQhZak2)w`dvdb^}27{e# zaTdEdQEc(3We%cxSF&~}OOe-yccCt~z*LO(ug{IO4d0d$A+$Ivo~_=c>+jvTESuMO zzq#->a95=yEZWY8fc0#5vjBrs4V84r4@K>Y8nb;1+-#}2EirTslc)iB!{&`GtKaV6 z=u?Di-MyPJHFWGoVtdVUT4d@lQzv8ylO6KLQ!!u3U=e0XTk(f7-n=oo4<*ZiwS}!5 zG&BR-duEaJWeFhyFHvBsg^o_nYLcGgdK9|<%N-VDcJ44!9Uxf~de;>01rc8VKL!v_ zq63^B&?5Y%6h4-SVS&>d&MpcGwLJ>OYeYw&rCB)iFGon8U50#S!@#qH`CYveM*X+IWY!Ab(@iM}K zWU;|QO2N?Uw7i_pvEoYP9=z^~zJR9x;9QomcxFVxBL!wf(S zO)-tx!i14u^qlMefr*S9>2ojrQ(+eJyw8}B25}7ZJG)sv=fg2$xt9-&KM&HInYo)T z+Z>_V_R~3zja_H(p1Iv>t}YqD=o}cA)(-t`_f>ONOv@>wz~K77t|kH911+Ffx(u0I ziq>G0HxfVhaGdYPHvTVK%-(-+G76{|;irTBVjjw{XHVu!Zan`#Byu%UW%ggJMEyTl znZqA!{#E_E-1B*v0 zokLzV5Z2Qp?Z`w#<_ckn?dn9-=r=Bwrif%S8V)k7|0qg@(X8B8w+}asjNXUE5jM6d)_ZdPE?QBS{3``|EBnPbfxqYO9+YUsIA0_9-9`d-}dKqoKLpe3mq<1<={$`Dj01;=57Y?eR zoBg2^G$aRM*Q6nZY0#k4#P3+4gic?QmtA~@Sb;C40frQ_*cO-EV+Jl?3&|-mAx%g} zauK+01fNa^uMh;W7k6P#@DPJasRG9Ji1rX+bYJu+{L3waJuBqAjgw>le}9m z-h9d*VoN)r_U=0QcD5K-vt+bFLzsh=m~PmssW4XTv%7}_;DbmY$Db&`7H<3^a)JL9 z9h)F3Fm7Z5-4OdBqI}A1E)2n1DAY@op4%H05zP|js1HcpdM9%PREIyB z*^|Vl6%mahdJ<_q#7~49O1-Y>to^hfbHvpMUU51e`Eya{_*30|K*d%ZbOz&8SF}sb z#pV>nu=uiTuEf%$a(!@0^}&`6mp62F>#Ir@$>GglSM$b2@mJn4wYWj9R|P@}kfHy{ zOqN6aI2mP4@!-trsPCuP?4+ zL@`W@rgtXEGCP6R)Qy~6BE*$m{R~4ON1-kP5Del49pdSe@bt+kr_i#)oA|1DTS{08lUu8 z{~<%z%?=0vTQ|YT(G6OA!Sxh^Detr<U zwMi7H=SelmPG1|%wJEoV#Wp$_8ew9^Rr;atFS0ibR6>17oe{K(6)9FMZ&utD7~XIL zOpgD1di$TlRta#NsEzctdXWO!yo8BotwqnWsn{1$jTaXPt8GKs#i$NSeU@;rY+?Tc zjJ8#5%1g(#;Bu4BD75JyRBS46{&DWd%)Nprv4s6g>>pvt{ok_a&`};P{rcejxt>cn z$B^Tm&J+5{x@@C8iT(?UE6or7ebPkk0Jzo;{CKo-Fo1D$FT3)pby1lGY4c+KU8vS! z2&g5^Qr7bSS%$_IDreJ2$;wunTel35I2@yEC932EjaUhYmccsQrXEkfZ6G>)hJb8v3v zhMhvD{E1qXM#5pzEVWvn-V$L|MjqK&B41hkCx$@w@p}nZ*f9(1tlu+oFw3#1#t}y* zO8#lzk?pFGxNAY8g313jFYow7TfS83fx}~Q1l>ZM61jl`Pr=?eUnp&xg)8n^QE=4V zATQ?}3ws?~?zJe37#|f#Po9Y{d8@v=ms50#*7Ogh?vdkq>^!BfS9p%N<#77ppv{$Y8OrD@mvLj0-1kaQgHYv`LIj?_tx#6RLoG1$={_sE6XfZ zgIEyH+>)&Q3dgjyne%-T^zbMOW>Y*F&D-=(zPZA5M{>a3a#Vu4nDg`niG;fs-v0Oq z==q;rfIo~PsIy-06L`|savUZ)G{~S^kk6Q-wF4U#94!@~OLsLfCjPg;n+bwG37@wx zzs&?SAf?|J#M=bm&Ha@)X1v-LO4N-~M$b!+L`+&Uz|CbOAT`Y~@qtfJH2=rWPNRnE zsux)4;Z-?F5a$$dY%RhTHTlcra(^a^CJW9$VTxDo!IEof`(BLuqfsMBG@IV7<+{q& zAaMX4T)x&4fMSz_zijPr^6*D`m=b z4IF>~N(^;?7Uq1UN*Uz>^$<19!06U58%eo7mxQAq^c>vin1g>+vbxQ-U4E?wtsy~7 zb`@G+5pp8OIg;#l6=gGN+8uRc= zWs~+~ZImEx5*5E8%wxCvtu^~3)LtF2cc}dy1{GQGtw0pIWBwYHq&#InCeAvJrFd-i zd2?N3P0Btm&eOnO(*x&PgTQ2$p}NdGrT5iEZJApz+{aT;R_|4i<_ zi%?v@{0(wAd48m%jISvA;mDl`8CZ&=AMiXCG}5gidn>Y&Z83XuXxSGQm;YBQ8km)<%<)7|AOxDhZ zlr)8BZ)`l?73bw9DXHXODJyy&M~*Z`a4YDJf5l*Pmv`SX>EpVAbW_qrr{SXf3h!oa z2vl8ect%7U3C1MmNBElBJ&nY)OmA2`4~_*wAgMvGZ2lFeujYHgOQCgsbPzwXvQ9aK zGxl$`QR2la%2%JLvTsz-ga^4xlqgwSEf`iQhUC!(xShOFBpV^5jK6pSw2QP+KebZ% z#|?i$2b&ONu*+l*r`W$;$z!6riYG9yBlZ2Jhm?KZJ`CUpTjE-n_TXThL%5Ws|K|Pd zSwVk>o4fYWUVqa~;9Xoo5XfCt6>-mk`A$FdM9j6*Hn>ImeZ6w{_^a$6tgIkKZfW8s zs_Q1bi%mWvUQa@G2sxtIE_cPO#0&_z#{tXNF)d(Q#dT8tx#cRCo|+W=DGlJx zh72FEdN3#PUh@E;KTq`{GDMlf#Npln}ZX_lNf*`@;WBS-GXjKbZ~ z*%eZ;NyR7=q;Y*CsGg#P!3Y7xIx4&h6Lp?2w4sn*HNJ_D)Ql_LF*W!5{BT#}$ z*(5L`5!X#4(8A-fWb!K32TWsIHw2H6=C%c>B|bGob5&s$P7z2`!DuTbENdZIoFhJs z#{5R(HA#Z`PfOzhSKees3|F3gIV>_bPQVe%^Q^z+?7=8zniZ0*&vrrd_f8?0li&b1 zzMWfZX6U!Q@ZjS=vh`|( zjJ`)3r@$aI%?}+juuuo3v1x_m33K7Kc5HBfighq0RLK+OmmJQ+`bnhdYI*9Up(+%r zU{SN%go&w%V5SUL~br&s6X46PE1iLrih_FDx3nx$_N(G5eR*{B;srY-ptT zQI5n;kOUXhI*>bnlb}3pld_PF$R+$t~M_)$HP; zsino89ysWI9{gtoi0`{&A=#W$3b1nui?}Grq#wgFA%hZq4ODQ$@|wQwU4c)d77=8b{|CuKfiA zplP@jhHCJTV!QlbYyeXs&n?`q(~C%m2^ZXqo2f+h2S`#70XM|y*&sN?t!S}73?FmuAQ6Gl9RxG&x<~E<#h1*tS?wppFuDy zu?G^rt;jkS9~nU9?R_E8(J=8U3w)2L)J=v9cR06IIxXltj2pV2NTjR_v!DyuYq3qT zVjFRDm;II?At^SC;~7O$f)z0Y`AN=9xpQ%nir&B1JFBB%N#LQJ*?`C=o&FEEE8KwjRKyi5-h zS9^)-hzaTqno4~VY{W%&q6e?CF?)w28~f<8|K#Z96=3Nog_*nmO|_?{2)J z7z=3zL}-SV!G3;k4e^FE>0Qh*a6OSR%7KCem-~Ua>o=wIq;R!Yel4epf`U9k=whhG zba4FkBt<1d<-~x^I(ok4!D0Kq9D!gtRgr(?n((ezB)l+Pr%zzxN_`R(dAoXJG~R#`rX zW#~_jgbB)CjD#TTb=s;&6$H$y#UOFbJ5YwJ!X){b@y&-$+F^G~KlJUpY6(t^n&Ua! z+-hg01N4#X12nwpPV4CS2gatHUAZ$ipG}AN0-y2ivoZJ8(ThkzA4Y=j1$b9SO_$6q zGHs>Ee_VVQ137nKHmDj_BA(~P27N8u^r4VJE+6sm$!|8WkkIJOhZQmGtHjgskr!H6;?b@FWYa>1#yag#d~SXS*c z9l@{@rwMyEvSQ9Cwy|fgL+bPS_5VF?F47z9(ZbFLe4FyXYdM$O8QRaIS8|<;zt@?$ zaMi+Qdh}C$R}CZW4Yp-C)<^|#6(B!7!TWgV#goAxjgo+fSA-HhK=J%*}&t2m@O8R?^X@K_RD1vXP(LfkgCH~9owW2e6O zfF@ilN2f7W7a&pGoLpMy*#aYQo=Fq>XR~+Gz_PLdF5fw1Au>s`%)!oHH{WU)=wNTY zEhgX3)N}QIva=g_AQ)BrXE@1dJ?BHr=GVo1sU^3{L>00-$<0hm;k0%X1`;!hdX(3^ z-=nn2<*g`78==2#pOGqTBD)(8R*9b+IK!QChl5sonl@zm<-&y#P7@)s<;V&i=D~O~ z#}>g7y~402c;Cx%BePuI^U8uVaSH@FWMU*D0=K5nmjWPEi-;W-Y`&cy+nfXC^{?;> zMlI7PkPnzpW$mS};Z~YjFf4OfSg-i8*j8Oq1SHVyMuiniz{GHp#>Y^aDgc3&p^k`e=DgAqiM3xFdPAw&dZ5q2UB_(*V6H3qAp`FtX{9Q>|KJP3GK51#52ww` z3n}pceWY`bE9T`pT&9d)-~E_Xynb+zS{T5_d0W-e($+FAlbYtt0S2SgE=xhSJ6k#EJK;H_*{%AHx&ouRDXmdcgu1E96*lRZHrARm zT4*hHH)VV0=-X2Csh_$dvd+87lQ2A&cbeV0FZR(9_UQn&R=byo!5zusyEehgb`GPt zpg){Nw7WpG^}R(?>X1+0WBp7EFs=VJ7zy>^p#P82w}l1i{IAh_{9mI#|79bM8P{jC z?_Y?SbebF5T}O5=x0xj)%p<3X_CGd%wvA-3sxNOJ#~Q*ru}y?s+ZZYY2n{g#vGcv` z^D2+wZ?#g_l{HSxITkrw0aQDJ%VYv_Mp);KJ0>1`CSF`vQQGLYF>lXNHW}y1W0(me zEPrg@j(5vH|BvN!L5Go;>3u~^n%@DCh%X<27MIXuFI%uE(prGa-^$x_t+{)cnOFlg zbI@Io4#CQ*OVQNkDpoK>PKf~ja6lwTs1l8P{gCU*@gE4(+ztgKflZ^}+v!FNEv^`+wP5X_d&jxT=v`H; z@`eF?1`##2$tE==V&{=z%u_1+Re^4G@NNyZ}_#eXu3$Y9k`sMYXj5{VB6N2Mv31Gx< z1PG?at^X#zsHIu>`ESFk@7Szp5D4-i zqOOloSepe&im1G-?P*Cu$h52Z5y(&)zujl#)FbeT%xKi^bPIH2gST{Zyz9qn7Pm7_vdDge-q@?`{-r1hbN zvfEPs9JO)imhe}ztyPi~!aN9^#uI|#dF?ya5%2WG2uNw<1Jj%lVjYQB>|qU@t+)Go z^Bs)`duUrM7LhkO#^Zf={krN#s`?En&Jv>JDI$8*Kt;XMm{OWQtwGXZ1ec%$`Bs&E z6VZX(Lv(FU-K5Wu42ucVDc5Ifkp+(yy6XNfwPMf)^sO4j@Wwip9;JgCsfqYbFrHZi zHI-u}zGSHif-f%AYAI5J8E2MS@SO*Ipt#F&25X$fd5Gem=T0PvHa%i~*ftJmFj8jR z-u^U>IP52li+A_b7Ip+^sg0Zmh#WUYNQ3#$b-LrmQUm#1q ztTH6pr#$*Q0hDkv6Ou(;)FeP+OpRLEwOh&b8dXaE13_;+ip+%3=W{%?pX)(o5wkZp z?tA{uT?*3~C1ax?p3qn#=;K0Y632(aT@ix3$Gzh}ygz0??pq8tXO>4?N!SNq?;xyx zi6(lcicp}-U|4v8AEVtlWc=aS*6@K)KVtA1BVd~`E!|En%EX_w7{)NA7+->Xym(b1 zLQdFy-7HViBw97nqXAz?&kQA0ZCD)2hQE(LcpN2cs~j1*1bppvLy_2njlHK5@7BTM z`|W^{fEnv~+%zD;~aY0SuJ(7iw7l-jN-4f^4%!(Q8dDTZgNLM70!@(0sqhJp4z zXyuZG{?U9m@;;gLP$$3c=KlR{_#dX%R{k3NsNFlKEvtLdWzh*sH)8gB*g#z|U^v{k ztl^;3y~rdE6s7(dI|G7VkGnWfTc`66_H7gm6M+pcvD5nL2`8#5H97ZAr1xk?F+fe9^Cr)`%!pZA{R_ zu}MoV?sNoiMowr)TbvA+G-OhPh8u5e65r%Icd1@#t4Z7|qviffSU%Ptz{`BUW)JO_ zbgU=#VqYZeMl0FKU+9SX5bjf;AsK228m!5BZG)9TFIP-KfRZ)hvOKSsG*dp@df{0ojNaT}<*pWl)RlI-nWuxyT4okBFMSszI7viF8!a*KY4z zLy}o3_qqBi@~V+qnerj%XzUg;C-rAk6Uk?Q>qN*M3D%$c6yPfdb+Gej%MNstO=?!V z_eaPf62Mbwj|`wrbdsh!uQwLIiuya$pCdyy`ldG_dI>`bz7q^OO>d-*M$z(pE#3RtBK6BgNWq-#LJ&r<1?0v?LP{Xy7l zQ!nEe3&uLOM7$E$W8dG@>l z4J5*a;c+e$Sw*39Tl8_%lu-yaa_?<%H*5yVyll`gGvN1lv)gy&95RKMy)rlJEN`=E zH%vJ=i4@B9pM!=+vHI>%GRYIcvK!F63$FQuAV#%=ko9YY$}{YNeJ1Loz>1%=)07aV{I$Ttici>@;i9++vL;iwuUuk+Up$FVIB%LyU$69V1`^Gi$FWw^e&{<>AX!VzYu3I9?u z+-Hs2_upq0KhUlk8U4dMBNX^R!=Cf68w^gZbHZ&||4IT?H)=@IjuZ`d$KUdg*mC*GPv zxja69b_hIzv)7_}aED;&t`RfCzGur=g_i$Sh^~MeN=hKF>y!eYR6{Tb#DrR_Q!)!c z&$1f6y?3@dH}OS;#RNs;O5UIJC7&IaCh9kZC$jU%3xKoR^1C?tHPYL-HTZkmk;|^p ziAk{)e?0Y&59Z2PnuTT~el+9zN$h!Z*CDc&%Egf?-Z7lRw~V@qwD7F7Zx6)DXCA{B zFC8J9Q`<6?F@9Za3EE~4?*FLqzGVt&xtkT?M8{7!Y6&Qlk#fF z_0)E3BhyxAj_pxh0Su7CN)=Gy2&21@PB*@-`P2x%J~T$CCGr zFg;7;1F_dBrK6=JPg-3S8Cg7spObgbN^FDaZ-YYmfaLvXWP#T?9;VdOTx-Y;JnQ)q z(FpyGIO9sLnY@r1SSbiA>^-cKrnLxbyChh^98|2XN<+-TJ?20H z@GSw3!impHGND|5Ru5Mgbh#uIaECXq=9DEhiB77>9jJ z2p@*#bJ$DDDhx=s#SKY|iXEav)vCS^B1KX`NCJwdSe&4i%m_S)J>RNcG%(UM8j z)*2%+-Nt5dWTXB+h08U-5GNFWi5L6ZAlRK9m?v1|*_}x7RpTA|-HV^OFn5q1aezks zvq7!|!NlIjmsrlujb2TRq`et!^yM4~)k7PZ5&7;3DWUIk_RW%613wa<6CejuFRv%J z@2u?X7Yf*A8Ryx100vt7jTI&bv+eV;8uIK!G$21q zj5meMV!8ty=T&6PM4cZHM4p4N2>K}R(b0cMYveapO8am;w3Up~iVEuYQjfO*jhSBF z4_h~$0ak=eg4G#@AWrwImFj2OCyCQ0_+neB{84pv+q{+KtM~g41n_BHW)DYhmmHEQ zm|kmLc>_j<%$G-7GNaN=WQ#BDY#s1X*ReA+^}XM2|AGq`tvW&Oom_D{>P$VQs^8J&Cxbi{e5OcS6fnN# zx9>j<$z<=!6wP1anY_RCt&sN(UH|4yJxAR6Ah$M=NJQA<@o&4uLGF6cy85MVhj;=j zqWO$^${XG>MkhV)K-j%>*ouP|+;1Xq_#zFGdJA*NpGe<21HXiSxLegio7F-a|DV@p zwF0A-+{^pSM;a3}{G;jU=ixCEezNRMXWP`)T*=z)yp~Nk8$IIBVdgNHb6D6HUuB)R znddNjNnuTRow&jC(UB|PzM#LDLUCi^y*@ZiOGI<;`L?i$hZ^@G4*p~Xhf{R=7(rt{ z-vnEg;Z{n8DYf$GMi=J~rsNr?iT!P#Jvz>0MlvB5Bo8|3?mT8|M>-v3`6+Cb2L4On9^O5INUbU3k`8 zyu_OmY8kpGEImBtw*qBQdQ^}N-7_9nfM=QN;r@i*H1Jne->WTp0eZd|dG+?H9x4;`ylCjTL9+2&+ z^x&bmy-nIXfas>U>v2%w@0vP|LM4LrlBLfw8KpA zu1BAr#ix~AY@jtZxl3H*asF~basyiRW%T3~T@2_LF#Nkw-FIu!)af#sq?-&qKuYc| zpZ|u_7ssDOG&etYc#80NiYiAeYJuM6t3p=y=;Y4K+(I`)?x#|APJOXK#J>?mpZu~Y zSw%0+{`^j66MbFJ^0iw@^!_cMBtCzRYWJJrFzZE?D!}&$`ib*zZ2flA#O=n!%X$CY zXTL%~=Y5l%li1@IX*F>}SMTf0@87Ky<^L8Bz^adwi2fWrqIu0j_ZK34GCYCl>bh=j zcdT1Y7Px3`vvn*vv@SUezcKzlJbiam6VLayiWKQcClo1y6hkL8gEWyYBE5Hz-XjE% z-kXscihvXW>AebpAiXIyKnMuZgCKZc|?9SeKp8MR{oqI(T>h_&= z(A~;c3^Z2QlL4JCyR=2gj$@RoX!azkV#3^|o~}z$wVEV9BW~4M6VE@-+UaZz2+QHE zm1!Tp!KR;Ywg6_k&o;vhG7{oy-*g2S2v~L=KQ}MMgafDs7!6uOP8LJk3J-=ofxyf` zaqo;+;sU9GDzP+7?w+M@vt!{2fI}C`G3nYPtTMBA>Ta$;ta$)rFw?4?La2!)%y(s4 z9%ub$-XM(8y%X54+9lJ<+OORK%K9O#7J12?SL1e(4kreS(7!i2V>z?Cg8jRm>>k1A z)2$RaA(2B-C6}GC%ZD2#Ri1VW?FV3Z)+Xd&md!J?@bpxG++93*+$w9lFk{P8*Ij&} zh1qSHyrrG^!A!{bkC5<#TQCarX9*-*>UkeaAF}-E$YFL>UP9CDG6uF{1j1WL2_|-S z_2_J#K#>_78|(QpDVbALDvz}%TvQ6ax8PQ6XJ?E5JC1#6sROu8GNyHMA7iq7y0AZF zCvH;f*f9PR+NLiF8VS7|S#8BW6B4t)Vqng+;1!rLRl7Fs^y$csa8t4z`h6gW=GxRu z`RIx_Zu}Of<_&i`OA~6(?%`c%<0vrRydoUSYG(@VEUE5`*SazxCy(>vW4)L$ zzu7ul@1A6|>7C7l%6J9T{f@T><$I>kdASL)55~oN(C7A z;)mL~f~)fx(wBTi6`Q)90EyosvE}u z2NdQu=~2XhuL6xMJKdIsYP#DF636!8l&Vr1CajlxWg*o+a;zjb*Fl~=xuazvmj^z$ zA1{}hJbSKgUp9B4=GqV3Bb{(q2W2N34&6m;k=t*6cRZv(V%98EwXb3dB|VowYwmz+ z_sCv%Y->kfBVY?@I;8XMF=-#NQX0CI}H)tEF`^kt0-K&*%t~uailC) zs3=8s2UsDq=CX`JR;17?gt|Q{zmhFS0o`T%@;7H4eY2ng@R9GT7oR83+HWDijhWPC zEAH~V*+gm_@9?3%f8nvZHZoENU>1Fs+VP)!({$6Wz9&V?L`(lZ^QX>l9iG&A#(28k z(nI|?pqD&4VFG3Urki;a!v?Pt9KY7jZ)q~DJl02b+SD!#!*>bZykbCs}}2H;bGWmDPj(HyP6(b zPsHFYzuB*OT1w(B_is1pDHO?w?aPHY`J~pEmT!Ozl$zrpt`ax@S`OnAwH+CM?|Ot59{hEp@JW?0xaP z9-N8es_huI#^a*3?V z8IW^KY8g8ix+3!R^2GG!!Zmg+&z$G!)tVcCL86fGtLL{^g&(OqKYHErfRK|uP!b22 z4Ef@1%;eho=xzo0PjW@dPOC1*IOb$@Jb^e&0!HgL0szsbEabEKH!dT<1Z}30#QFvtrz_8~*J~!FT zg3TokhO_3&IVmBN;4@1pXDIlL;uyiPw@|k-_W>t2wnO~y)x6r`w@9-1DJmNHWnMiZ3DV6G?vj_6oBe(~A6*P|y z*TjR$)JF=)N)uJqgI`!UY%;Q89l8i@mgw#FATn!QTb07P6Zc+t?1cueX=$usi#%~t zAhDl#yD`yQTjF+N1?Sdt`r_%-VHQ6R@o<0mK>^e#1`?A473RYyb+TLoq|lOA4K7Xu z9#>wy9UrZatr#GX*NaVoo{HPaEG7(ri%%34?ka!1y}H}lec{}(CST*IMrgRUyEyPq z8eMibe~T>>6KT}@4!0qUXZUvVC*b+Sf73JgyTSG47UvoOhf}RcP5r#FKY8G`;#qL3 z)ydMr&3%$ z@#ri~$1a@^^&Wrnd=s*kH|+*wbq(~i&U4%_Ik#Bs@pi}$Sp25x-z$K)c`IY?tiQTq zw5rpHdkNJTiAnss&;&X!`N{E06P%g(Upxp7Vg3z9bWGM2fQ(1Vx-S+wb?rIuURCOd zYf9Y&8F9obupz7n>^jD0o#sz}xiWCX>!RJj`eh2UnkIo({CM+>P^;pQH@(^0*tMb! z<|*54-Nwh6Cii335+Azbd95{-qCoFD0Dh>AbNK61QhhJBW-ISjd+pSYqboq>FklE; zaA?q)Smv<=Pj$puJ^i1zm${a6;LzcoaYA^O33o6hik?arC&C z)s<2}1BN{Tjx8;Uy_}5{95*lSbP7AK6dw1a_ky9=9jVmu*8spi!YaZJkyFpSi_-dj zIwX5js}rWK9VVOk;(RH@HdCh%kPp6bO>dWJ%7>pMx67<$-#!~TCE$^lxWKOa{)zHo zMga1cDUG(J{&h#q=T$F;)a|xV^>({qD_;A7t41aXkAM*E(8koR%a^&6;d9rH9O~!% zJK)D5I6R=T-$td3ztQ>!pB)mrvC#?4Zh5r4Uie5By@Q1hdYa4@{ILXVEElN%pYd)@GF{52GN7&+hMvi7MKbWjU#Ap@IZTWpM7@$7opQ`F;G zafH8(H)r)UX?juzfIjBiq{&SmCy$Ckz`ie{dB@lNY2PLhuo?dd$1)HeV03Su1$E!I zb-(bt#J~FICmcgf`?06Z<0Z_kc+zhO&)WS^;>7QM;)WzxvvvVzcJ$To)-D%-4nUH% z!YFxc&xPAs+G3|%Wxb-f)Q{BU_eprXitEn?%J_;m`a;l-(mj91Qb?AzaZ)#Z|-1hOGb-2+0-?oG!RFr?K}O3 zqw}kTw{TLIW8u@4p_LGgpz{YD;LLS>>FapFtQz>HJsUx2RrMUT7q`_L<(;d41`k19 zVBt6GfDhxHw6zw7ovsTR$)1hxL}sqDI4yn8>a$&pq-v5meyv!t|$&_lwFwyo{XfDc{jV3=hb6idHr2ZUmEg8^% zx7LN=P}k+a!}p|p`NP$C=8faAx(hgP+40jjW7c76@0B@zx&9JcPagIO;e^5R1>rCX zWx6A$4t^dBVzG&iCb{F27c;rN!%|_ezXU#3YWNE;8jQsQxvq6C&@X_`!yT=2@`5h8 ze?2%6an3M=G-CyLdgEBesp8y1pMQ=;eVksvCD_^Zr6eyg_Ym%>DM%??PP?*u_^zd` zE|+z8IwOh3U&7DEPm_0ACmUP>)tVU=7H~dx8>7j|!XT*f995EAsP$*QzCT5`r$*t0 za5m_rTw7T3u8k=EU=}}x*m7=n;=&3SuY)yf--*uzxh*Y6Z~e9Gyjb*lCe#9!nh*83 zg4xx2s^y0DZAXAOx~{C)z-Q^#j#g4gKe&?*vs5D0!HL7y`W^5W=h@U!>^F;t^ZjtR z^2hP!oaG*xdxL8rb;!!uWl`I8*5Gdcx%L%yIU|&+cYg`i9E@z3mq%^+n2*L5og)f+dzcN@k}5qn%kYLrsU192<#V_1 zGsAz0jFg2mvc?F9m2_I=gGGH2jqRL{9&tJF_I$kEE;Y@*4{ei*Av-Jq5&rJiO(k<& z4R&6Y{IOTBbiR>eF<7dlbBJ%k(#|)Rw%Gm7;jznZmBQ_@q?W!7j_29m+&Myn@z|$! z;r=HfP$9gHY}EpriwBN(?%-tqNGJ|HzHNU}-XY1c^skIXEdp8`Nh50Fh&&Q8rlqvM;G`tpB=ea2hyD6*y?4lOxiPVf5q}@15FFDBNzRv_CnG1 zr(Wl8nL#;jnY>whv%Rg`i+ok8pkB#D^P_PK@y$yogE3-RFtAZE?D7 z9=z@JD$lLrE4O{{ zpLNYqY`Yv4p2-+%c6_}%2pY79Tp6h1pZ;4XMoUleUyXwgwg4<#+1WLmz1!biS=YHwv% zTy^lF>1*20+6P^nhm!B-pgln>vfq_?5KY!J0 zR%#|6aAQpE*qbH?eQ@K$eD#~!!QL+X;9sQ|1b7k=yGfnfKWSw+uWI&~YSIo~Ytk*e z48UQZx}!l=CGG)YF#pmBD2S(5SZJ+tnUtn1j4n&>CZnq z;b_<_PaI`~y!&D&v+9|ru*4Enc=3vNu(S4@+4h{|oe89ACcaB%IF^c7`_J}Lb@6U5 z`N`7wOYbFj&A=shv+B@;sQO_;>FfJYb{y(cA^1YmRp!B-)bH_3w@|jJX%yMaG?aE0 zA$D^ngfGO?+RMI_I$qSBh!^@FR`lW(jQPO!3-?#FM;=Cc+tg{hWC*J9Vk75pV6mig-V@mU>v`hZeu~p# z+lqp6=#Blu-o^Zh(uR&OlEs_r-h#KUUn95ZW|oHb)SIlFr*ns@Vtng1qb+)*7z>&7 zLnzMIsUxmc19JmBO|^%j>0j+pn5_P$VBLH1QP@KJ6@Yhdazx%9YJQ8Jd!-&k$;B zFx`-Ihvvk!E}Eb9CJ*cyJBD72#7ss_;}Z!!5I0`0OEP;8X>ky(WMV3kFXZyGZdk}z z{l%8w@;rmYb!4WIc4JE!(qmUi$;)A@K{`C7qE zbEDLlQHw)Z@{^3&FvWGrz*dutYx!%&bzj&6KM%3+32nD^)aQHt-@n{u?-B)dj8{JI z-r9xDfRuOPoL@$Krl<-}^=`H()(pxa2foUir_+-ZmpfuJnXU8tx&>cHcNFxoxi_A? zfq(WhZ3L|s!|tM+;nWa(s`ChdJ4C=I{w&QBrS9gMT>CLLwow&y;j=Q5n$NsA+T+&D zueWx?^bejBckO?JQ-MRUyQvkI#%_i;eCO?8bAV z{_gpOv)QT8A^k5@*FYh>{O@d-sRAgRv+*)m|L=L(ZtpkWWe|2y&9kzk!zc`xc^EN| z7qstnTNi(Pu$p*#TZ@?}HTr=1KJ)MKyx#j0hg4Ha$F=uT-PA0EiW=ICWn~&qGJc3V z|L#qNvDXIQ$Qh->7PD1(F$Hzf5-iCtxbr`s0Ln?WNWX@=V82N~tXZz3QU@Xj8%fNk z_-6S`kD0QGsI-*HwIYdmLlYm?)46rn*|T)bd~bYT}Gr_Ci| zuFyvTPVSX6yy>ApbDlL0HLqVvW*bV&dgXUV8RSsbi(C|e?X>TNtF>yiW|--6LJ?V~9k~^w!c)WCDl%YTXa= zLL}OVRUBLbYN-EG(YE;}5`iod3ew$jHeZYYjidhXf7G1@iM1K;1BTi-+5d)Ts>%BK ze7DOJMSWL|X3;EBV2}K;-mT8F!gNSZ6_cN+6}9(5C+IWON#9^vG&3fpGh+6_UHegw z7#L!X++4|lii~RfG}q!}JCEj5@aK}wmM2T#s|uBFItlO|m`;hEmGPjt5BbHegO?&w zL0B=HAW!M|dESB8Z-gOs?q{Fx+Vu656DJA2Q@#wTcyY|>93$G33Rm$oh-;*P+GT6g zqI9mDBOJ==j2nQ9(U3aGL-`F*|GuX9D;Q*j3D|#9Mu;opMDF!-iYj{pl7bakYK7P% zc$1Fl{tW-|#Xj;Mc@sO|$#4rEGSMsUhn5MkMyd@CwIl@^I;qkN7=D3`%}Rx@{ZP>M zufb3^?Gif58dpgfqjI`AG*V99#QN=P^>DHNo*@8K@+DHOb0|xE7x@v=_Q}Tm1(#d# z-|D(QhSL(f&}AZ)1+9+)&@rl~Yi3BnhE8k_dX93sNXaixq|Do`4Ao}PXp_-E<_(mH zJSb4#AF|dHPTS*_&yE6kI{y8H(W-l89yM&5`%P|^iu3TE6QkUVZwb1OhNUtP#vv-} zq3m=^E+;=K_ivA&4>&c3=nuEUBT|dZy}yeCJSfUv&p!|6qiBCqWY2ZM^6XBH)+)<~ z))Ys#>USrC=96|RaEsbP;&|QY}xu$PbQq~o0JZR(getnER z;u$l@h!ISX6wVzX3s8f`SHdb2 zQI?-eQ))*35cjtjukUf_(uDZCM3h%?N@lceE7+ivwHN33s#6JjF~U4f=5(D(&FhpJ z14bVuQNO;op+$>&>BGs`w+$aS(2A_Hu<^S1cH$K$T$oDM0X3i6P=-LU0}SVPN`R3jM2!o`4r7|O zy7!GCi0OMYV;=wwpPlyxWZ5QkI;G?`qTRh9!Ex$pXjT2MZhr3E{XOU-vZh##QMK55kS8YaE;*>qyq5X!K{_z8`HcbOOM-Rv zKaD?kYm`)fP8%(RHy6~Sk3=9K`SP%-JfrRKkipZKtluASzlA)MhGho5c)`p;;>y!>4IL@kVvgDfj!O)*@AEPuGEedlgL#N!9RGCo zlb?j+EGFh!a(H81Te`Q)3f|`$N&FidQ5)Z#5J^kiqZI8tHxM~5NNOdQx?hE_jWa3S z)ujh{SAzZXf@Tz;D&$FLx%veE(ZHV<>%WrwM*)PjHRWQ&zEoQ+$&yW6SY9t1;q5uE zxs~X!=qWMMnJ97AYCDg6PAjmgpfTzJQ_c1H?TAb@C|Ln#Tt*I;p<~^U?!`bz6d7-5?axqebX zPKOhy5^?zjWA6Jv(|J&UC zyUgSz%&A)3JEjH#Cvk6w_ln;2nFBeuUkJ{eTE*YB4DAhTbgeeduDDT~jR^my6=D3xtkQLcE`AHLXXcU!445 zo>mV_o!#qbOayW_V~cg+{ff!b;{F7^Ma{H~+Pz~50bl>~#?$qeY`*mGqwRil+U3nZ z)iakKOQQT~z4eSC#pCU^yme>&`*Rj2j&EQX)$6hbF@qw;GB6jkz?u&=#uijW{R&-@Pr_UGq8exU&*L`a0f!S79sgjO=bSAI>8#Gfrn={Vg z)o`Eq<6F&rA+t~fEtXZLlQT#6NsNJq_-*UCyr%1T-S(AMqrGhryyP}f_PO-cX1_i% z{fa#PzcC$eEEd72qJK9SoWhtr%r;nC1-DPhONBQImQw4k6AXjXVkETBBkyRzhMrv?lHuo;srGZ^%+NzQhSt(<7XWP!#w19Ko)rwInOOp4tRmJLbh2mFI zUXHraEl5nYCP0XdWD?POUtAp|)IfH)d6|@e*{IMhVIr7Gsa!yM*HLj>rKlgZT!>*03QYB}??Xhz#<8c54Ejel-aeoK}prUpqHb{=U!slJGztS~9hC zNqu62n!eJ0`$`IVf6|!@$uB6XtOyLNi+C4x74wlfcdkLDwDl71y$da|798IixI2sd z|1Dn14^rM~P4SVRDUR~(y%p`^C4fn^k}aK3#UHLq-kAHL+x}V9TdLsbpZrsj&CEA_rS?q!>;#3 z;{wAIefIiv5rlooHl6+377-Tag(R5#;b5m7YnPhI1tx~MTm)&nZw_*X_p^yIBjrZ% zx-Bh4@se6Hxi6G4#gNJnyx29|@fo|aU#&^X2D@<`WFDycmi)s!oM>>G$Ur56-bJ?O zca-(dT1K+`=v4+C5N9!j7H6INyv=<~>_~DS8jy>&&iom@UhQpj%vmYhrs1nYTK52v zO&!QksINGnYLUOkLchL=)Zu(u`7s`si{i8-T)ltzc_KH52BmjF2pZ#l5D?|Wu8!>+ zx3j0U<5|mifpKMZmA@~^9>Jn(@En>fnLLymL(9Y!C{@zP94VRFzuBkF$T`qnJiM>w z<(aMW&@JMzvAhX%@Ql|scw=GW{8c(3gXU1@OA>sr6t#SJgJ@)8lHnzEuz4cUFh2`* zml9uy3XIVkvf#WAieXDMUw1$^RsiR66`_M!eTh7edODh@B;*sBW z8jpEnW*Oi+4I!d&Xv zJ-nfJ{IRFGbB)o`M*Q_-CB%u!7jdBQ5{DFgk=(_8Tfyd+t9O15>Z}!XIcg47gTfPS z=bxxSMA+kTG;bbSAt`n_Y?R!}*lZ2L;tXy$4gba(|K#|;1IsX#YlGkV(cr&Rv6!ia z-`dF}M!YWM02s-rpJA!^yCWesq48!803zC5S|C$KWj2}9t7X*s=hu2MyuyfTBQyUv zLgYIwXAZG*yC?jTqyGb^tfI83nDGVO2#+9aAF^nYMJLNE(DnfRh5Gr6=(4=xPl-0_Z{9F@N>hv@UNO&52#zthex zLfU(jG5~=2h6uPWw3y{k_mZtS-N7STC5TpHLPAMh%8s$)9O$Li`@3&{*nox5pEZMw zjbJfWWK8;_Os|THvmHgV=$WP65&rGGVgn1Nh4wewuk!)RwCiXvZNF~hm6l&j`(zZ^ zAM4J|825aoA$vA`<7X!4_A9XbXOT8%?tV3eUj0>H}ewFpXD@tCyik&whv-p zCZv0>7fM`zu~;a3mK?uC>B$RtY_l5J-(pBlIoTHoLaN9?jwYNYC^a1jRX86*C&qg4 zKrB+2f_Oo|Y|I!H-9|<`V0}StU~!YrQCR|Ux}+PNpqPvEO=MlsMIDA1HiA(Ppgj$f zC(5{KnX26`QzDFJR!XYi9S;DkmCH+!mV~OW;RS9&^Hv2W(&(s3_+&6(-YAXLeVCb&U^Ih$sChZt91$kF(Jh! z-O6qYYA9w;KxN}4@zE8B?V3V-EHz`sZn%U+9F?KZo0v}Pbs}b^z|MNa!}w#oB}l~c z^-nm+!bhXqm6#q8by_yK+S}yP^`!T6HzwL<$i}>QS#v<6mlSwS?ww@AG(`8lU5-t3 z5VFqdobc&O^scGFwxu97C&Pz}@L6w$yoMWF*FD3)in&8n-`Z&z(fCoH`IyX1UMl7T9wy`XWY8lAy?XA*1M^}^Fu5pZk` zJ$w79a3y`eCj+CUt2%$3=jwJHkCl)vnfz9iWuc}dKX6zTg-tKZ_U{Ayk@JCrx*)# z%3GjW!cXRnpUkvX;=G1VTGbPeR&#nO!#mM5L33S(Wai!nfJR*PLCT zxo+Z_K>XTn^)6aAdBlrxQyGoypt2#Ts`&hXmMOS2$2yRK3MiqsWTJ}K9n&nF3AIw5xG7fX7nU*;xIoDot7|q2g*By(@Od88`$W7L9aHt z_4VX=NwKu+>_STSqj#P!XG}8K$HrAtk`Kg)5*rzlOSG0833zyy*4hdfl;jt;fWIvy zz65ek`uiV>0-H`%j?qBc==Bki^CWZuP0a1XKF0@!@*uZa`#~7J?lj#ny++L|7P$PP zXo@J(`zrZ3o!#C=C}kbTlr}Ib8~>OI*-}v|Hm3YMWWdgt+zVBFCqIZ@fFbWGME>E? zCz0dTR~uxNTC8{O9rJ#~pDhq;4<$4?-X9!jWUM@3QUceRMkd?!?ISV3BybTd|(BxIVv)ogp|8SpVa;3AU{wN&c^yl64`HO49^gt&l z$wkp7?D$=D#R;J{&!IVgtx}gLJBnSDNh&6C80N3Vt2tWsCkvlKshBkz0OD>cnD52~QpnQSpK*MfEyHi4hb|+LV)~Kj{Rv9el%>xVZVgquf$MbnLeVKM_nfT8 z(XSVyQ(wX5gLpjzxbeY}ozIY=#pGKO;onDUh8egmK%LQ7R8X^R>zBWgdRzm~)a%#D z`Ae4Tk94i&|gOo0X<@=c11aY+O` z1^w2;BRs7yVyx8%j0#n{9Pk9Pmb^Di^F)P-0mx;~Y{< zqxiBqlt?jnS)QMx5o0_@WjRMxU(L}~&4JM-R?)ZkPW*OOAajWYk*^*F9DRl>QjCiw z;$&xuf;itfwQ!!*Mo&oeiGXII->I+DIB}fHSUI+rh(4AS>&^vUZ2zgDUZAT|UIr*Y z#4fnq+0`k`kN4c3-i{Ws{o0NM#iVPqPS-p#a>*0eNVm&#UT%N>^3YLmne3RHdq6x1 z?Zm`cU~^vqai`6;SB8iy)J!sF=}QnobFO$jf>J$|aHHVAP~-&ZW10A(i%Z+R!j4Ud ztvblAvkBSJ1axluu@$l9nBzlvl}tM+{!W;@u{{XEB`4VPA|ht~?T3hB)gj~@i}H8h zFB?xX0^UW4Asy>SI+)Jy(B9e>S5CNZRwt1;n78GVwfYv7@-YCa?dyhAoU)(swjD$$ zE8jPgc-Soga@)1v zbT-EG;u=%tpJ>BnN=_Une&goKf7`zJcK#|FVo8PhDiT~Jw3^*5lgO7?YrHggc}F3P z@4xi=lez3w)l&IIDZ!6^p?m}wC4BLM{||d?k3c@B8`Y_ZFfd-?TXmxZfapyBJYiknsgLIy})ZN4GBmjZdD_h zRS_vrMQar7fIrG#s>%uR^>0!ia9)~VgS4@vjnX{NF~w7Tm8qNqIV+@zW)9vpAH3n0 z$jyR%vHAyj%d)bwu_aQ&Uq9lR1+Nlk=|(>PCW_~kld^Mh!|u1tV41 zntVD&OZ86>^)iHuXM&<&KrD+0qy?IU6 zYyLRuP+P6nU@BR@4bQ~Ss7Y5sIRJIlIHjuVkoAuR1YIm0$6LD8Rz*el9hPmq83K!f z>UR4&R75lx=yZ8?9c6;-HZ0(aUZd`R8Y~hVq~9h#0BpbH_2Kc3rI~6%)`^bpCi8ya z+29$*#ku_XrObaweD9d^BkNd?56=dL)T2ZEs0#rrS=@5a0?`$(NmpS0x{kVo6GWOG zDcnz(|JT(9ZQ1aijk?+7RsYU0TYO+NU?XzJh!oTH^^Q02jLCJ~q8xxI{?QJE*;?=p zc4#H|=g{qm4eyEZTjpq-{)~p2?@R`6J{I2iY>ZU5{LeTS+Qv4;=9w5-*Y2I$^9f%* zYIiPW*W&hLb$j18LN4{qE5?L=+1OXGy4ax1B_hTEboP3!?Uk-0RS~pK?uFB(*AL!k zDHG$a2C?CZ0;L?fnvcZ@zN?w^ow&ypn~y8#G+zyCzIx!Qje6wjBJj>7f%NH^Wjz^3 zQKnI~h>{Kg5BSl@z_>JzyHQ(SiN8-~K^r3<>>TsR(o=eD2*;}PCmdkwqKeLFcF{)j zLRg#K;<2Rj{Jb#eW(*o=+?F3y2du_C`AuL~XAx63>J@Ia93QYs-Ro}5XV)vG_DefW z4kp(cC1yTBmhW4pm5E+~C(=@$QXh`32v#*vv3|#p zQ1Nm^K>d*8X-HNZ;W3OG(5Z9a`Hr>0hf@8QCCyuBauJ%`9~O_P9ZQ5hXgpx*kM}wt z7gvAw^0(=|hey>m_>{Wjr>Dv1+K$ghy zbewDSDBj=sE%uuQTB$JTcjVo=c)d>#Cb`YC%gOv>(9Hehykpi8YoKZmlB(zm z4^saRiO-;ESVerwp9G^CM|Lp(X@2n2{0{VPe})NBA{A%Pi`)rr?d|lk#Pl-#nk12| z9HIOtA>S_AGINqy3GA`?tW`UD$4 zzDY}pq>LeR!o3}>xqyIjBIK8F?>AC38OdzlR2|WIcV)|ifGiV(@Aqu2{Y77OFg>xb ze+zt}!N^_eTeD^R+%G*t#>oNLP)%p@D#4FObt#?e;HBuq$pKTh+di3tvehGq$UZq= zmP{MQcVr-i# z=dJAR@a@y8$M!R%gY*_B_VX8m9kMCb@Y+z766oWVt}GElL1&fU<29mzscvuFn#h%N zW$(A>H_nqJ56Gl*RM&I%DT@EA&=K6{M~d#RF|J*qJMk>0*}qk+W!MuYtfhH=jKqu{ zuuRfChZ;0*+>jb|-AfO8R0$&bRc%fP|`{pQZ(pQQ=3^-0|{tM;u-LSoi?(w3850}d_xIu8f_9#nN6aJ0|B71`pE{X4(pMY z(wSGLu9RXxOudFHqHnQF&C`GSCa;sD*E${lOq?ZF>LDMjyic~wx*AR;1l6Fxpw9m(XnpGfF8 zkm@69TaGQIn{D3QF->SjZ<;_7Dh8G*T((92Ma+CM%Znd3s z|1gm;_!Y$c9u`4H3Y2Znfwro0-WOo$^hvADFw3A?hvAZrGeG=?tI01nkr;6a zSX(2|(nLPW!O^RxOSc~LCB$A`89InI6%~JUEcU9a!6B1YV(jcKZSp)Ms>Zg&iXL$J zb|avFPd|N7Frn75ze+v*v5E!EWrhTtTVhjeI2bc2D-El(4UfV8!YWITqwl9f4EIGu zxtKbW*Ol)_Zo%7`N{>{-yZAje%Dk=6nEpi>(^n2dQLB5<51{G#*}bkh)jAQZhG@Q1 zS``Q|_s!&#GUAiXJhuUU*s5XDq`(FXH{myzXK8h43}ZLvi_MJ_6o%ohR& z3nCcR%)R5lgjT~Eme%I{;xX+8+8=lNB__(eZCF4xZ@n^XMYO&0`=h0=UX#v`PGIms z$awC8pwYvh5Ctc}E*nyzfT*enz?a;Ge~Y+RQVCQHx`t&5UXmsPht>BXsu3f>tbiVJ ztUzebqdVS@In4J-i85&8MqnAdnQs8SD=Ej{Z1dNtrN}l$ct<&OhO^*e1xdnTm0fph zk1GYf^s=h$^YKF4DGOUYt_$jwS>=hX4pp&#QhAHzdqNYf$sE1IiRUHA{k1-VO>4bH z(2-N0M@ad*JXz4Z=(he}^3MaiS_oe5qqlm7{6!>uY#BAeDOTF!#@`Z?{fpDjRjTmJ?n!~Z#$m5?5F>zlAJg@VlrOv5~4EICax~S6M zHp{}K|By@YC#9KxK`2`Lt{XikIL}m_v>(YxSl+-)kf)pDp9j3QcEWowp~1Yq2v>koyX3b`fqqc zLD=?;g8S~bMn1oK4ON_<`#?@;&>6EOC2CM7AD9AvxO%@wzzo8(OQ=>1tU29<9vE)B zwsvG2pY?mJTs%98n^zhHo|oE|{|hK+p>Z?9b@}F^C%hh=FHl<=GU|Vw=rom`Y{DB! z!0T&gQqjU)dO4nNrQGJK&x{D-P4pQX%YZ31Tpl3SrH@!3*7~;o0qQ;wlF1>#YS7X4 zvoew2m{DJ3AioMO6oz|=&?6ay9nTORCKj-=3kBXC=V&I2c9XX->m_oiFp5CCg zVfAF7?80WF%%7Dc*B?M@|uZnQCe*XB&wC@F3iUMewiM)-Gk;@ zNW6GhSDWb%B_)fdwEIJoWTqOhky~@N1=ISJDBjxW$1o>?U#tI`;rx~RkDOZQ_Jjbh zd;YoVdjVf8`{`{V(8~$RDs676<0Up46y(idHOWZS^S(Xx^LacqiqMT@lDp%+QN(aK3}tZSlH@Ab z0nHspwH-fuh|IdrWL0lN5b_WWv{r_=h)waiqc!g-LS-Ju)v~+Az)i<~Yd<34`!M#z zZbFa9+e*6fHZa--3kF?(B5NZ?AcZBrC*w zVBVYHV^kWvLK?BBJo$(pN6iG#Fk$llJRxY zx{>I163CD1IF#Z0!TcDE-kqqFtD4{wqqZ99e6?!wZYU#V+6HK9yN(?Zr8}n>M3~6S zB{+S;p}whMGy{7-;eUTcC>c1160T@##Dpq#E5aHO;kAqf(p|-jHkm1Xb>2C{7#9-Z zahqE!nt;qRO=hV57(zG zYg4W-7pWKO8O4PSGAo1{ z`D|G2L%M-_Jr}l;Y2u+{MXTc4u|=}`(*LXvgCAuCn7^^@(WW0~G>?BLVXyuA4qxZQ z!4{8#w;M4n=>fzxLsf7e^15ERqGah)S%qf;2l+ISTnc?0T}sxQ@QXQ(AAB8NH4y;| zHtU~}L`#nURH*vz@d}v(D=QS~CD9B8kOP1}l?~TXG3m(?<=Y6h+K@=AF~r0D7upa> zGk*-qRd(Jzq|Z^3aZ7~JqTRjvjsChrTqeNa`V)PTK5SL=hi(jZ!S1zy0<9Q zb7uF)KC@eU-6dD=!ldF-kGx1I&+q~7v^;!z(F-eZ?RCJ;<_kAl1fDsc%4s1bS4KOD zF?xhL7e`II_S8r(F2@&cZUbMoJrh!XI3pT?b=x?R_X;+E5*+2t!Q9Q(GDE^GY>7{7To*eoGz zAVL_Zb*tH-iSZ21n(%SB!VK>0=tjoB zP-8w616C=Qi)e7A=mkh66&fIAO9~XSbO4A@$p<`OOO?oX9FZ7AR9O3C2q%F`YKQ@f zDIAyhA!q@3;ixlEHu&`gQ|8E&tq>i&;66UEl2gsa|GV#b2hu3&?8i*(d&zDjniz`| zqeKx0%6*WmU|Bef?#TGs#t}1|M)zd>FEgO#Q%r#mo4XeizcXV8tpuv$>vdmnra-Aw z$YjnPr^--@-g7^DZpvfBhAF{FO7_Z9ftYF}nXJ9)c-y%Cl8yN4n?a;bqf(vkIf0XT&-IBk53?74e}MH&JWt; z4#`AQKk;&q5{c)`zFweAz#2?MdmhDwkkJG zhDWX})0xPXRxoIVkAa{REC0==IkW|VYWWX(HCu#u)CvoYUuB}{m*Bq_breCwR(y4u zLNKSU;&%{GBmNf_mQadmC{4*17V*mJJBpaf#W|IfoXoRSp}Zzs;F9P24^r1SA^|T@ z0LOBXZdk3hO)#wW1a7u()_PL9F@8z9asRSt|7Nk&BB?2aQ0k1cF~pOSQ2@1*9ojcu zJJ4P~Im6YyVZZ#q?+)ajB-xcW(~Vc>%U1d3L$X;ST)vG@>Jx*oFXB4(=f7TRauf4I zdK7i!{V?F_@wsq5p(>*C{e?6@kvzE<5u+0JnLMr{1&{Q?bZ*_vbb6Cx(dFnHAxtFxSOt$Ov))jda1B?)Qc_wO>pEF(ng`46GEkE4(E?Gz{QHOT=HCxy`7!^to*5*AXRdJ;e4V~vm zzU_uu7}xbDhh26AZAN-RrnNafZOpX25W`zrsp_RNbK}>7t-Tq}g1#PLL8Ed3I~gd1?|q zCxut>ck7?GsxoQf`qW)rZw40^R%KZ0Evj#sm94E$qjrC}sc@~f$wME-s`cE*F%!39 z+oqoByuIBfx7jlG$l^fj-qB@%MjO9e&5bWP^xPbOZ0X}*Ln1!s*y54Qrm0aH;aAc7 z|9E&hdnb4CSB>u?#Gdf_BfUi{lU~~0>V)SIFE-S#{QurB(mrc&Hb*TDS&hc-OJ z{PJo8pPKU2;|v;}&PQs2QrdL&ADVAA*Z5@3cVTX}eFd33Tu{b)kN=_Z#pbdNZp_^O zPSh^-_dQqiQd=QytJsHJi}c%(^M;m$_n`AXC~{0bw=b7T+x?cMh&&8Mes#qv)<%CY z2lj6ATfnj6M8010hKVCq2U-X77>+$NmXou*=-r^e^Nue9l-r^58m!dF&%bRspo=uE zU0JFJA(T@>CP-zA`6h;f6tZQMLLlj(7u1FCgFOJUo7*T=Ap|maUpkjn+Z7;%ow-li zMO2R4$J`0bOOAL@Jai@CBX-a&1 zt?G^v`5gir_CitM0x*-;-@nYFWa1-KrM0LPzfuW95r8*%ae_WF5D|H4EFmlgW8`*g zivsLGpXZOpCPsHEqGJecif!szY!m20%}=yHeI!+yKTozSemjo{_+s~>NvuX)ZI@Dq zGk=r%CtQR$OCG+%|8UNhLYem)*5GOl&kgl2tot;y^pKPL7E$3vGql|RDbgq1EBmbu zCS~a-eeyi_efsd!(-GPU(LgNgrk#T=gAsK05^Xp~yfc-GT+Cj)Y%=f4uKG_J8lC-p z5o-MrFmKEIsbjuHQa55iu;9p=lRM?7nZ}zyr*Z*VoatgeZr(~!HNrq`#dU=E1yV3h zI$tnI;yJ(;yPe)&010sp@=ls3`QqG*m94drDRL)r!+q*P7UXwZ0qt*6(2rBF6Fa*q zPontwVHE}|Zr6Jr&r?5$zz2o*8Q)f_7EeA9xfFbBu*Dl@ZvVPegeV91!HV0yJSpU) zeG|k#Tz+yr9kR#U1LaH%hU^k>^mP1TjD+}{Qn~imvHJ1`a9;>uJ<>TI7~Hl=Mm{P? zkv5n=SGw@qZAauMT+&u+Be=n5(+|sRhIT;(&1|`JqtKnW-0^X=&GC0KG3!e~J<1H> zWPN-F5OM{P^hb`zVC+Y=d%KS+xm!OtZd*L~^WccAE%_%gp-VPWJRCu`)ufu)s13Pk zR@w;Rz4wJy%keiPNgC`t3_K(5GTPMqOdGkhYsCTZE4J!Ka{MO@l{y>VVG@egQQFjv zPYf;DHc*D$l!xHt)cH0XCErUrU6*y*Fx1>MUK?)!`-y+X;Zn^_EJjZVreCIyatn0` zR@Z>E=BdNx?SlLzFQ*2;y4`BII5vsCtE~i9wHSU=p!KV9ATSlHdL_*?&h3906F``_ z)(d`c@lWBml7zpI{p&GKxbD{!@8iS74kPZlsW_LV4;6&#J@E3u4wJ?{O~gq;_9)Y* zYdz;xJ{042LuDirSlxvoD*D({UomL}yAd;Ub`H4r^kq^P9oYx9@0iQ~fw^5RhPyvZ$2gp*L72c& zK#@V;rb)`u3Ul{6TSm0sO}e&vz%oQCSZgZ7-NgSMWZc7C`nlIbnCPg;tcdzXJUj~N zo%A)=2?C00b`(Bh0Ge<0H8#0n^FkZp@=yne$&jX#5g17Qd zumWG%h*OHKbqKw~td~vt=997TL>BMRPI?xtT^Rbk1#$slpDD{;9OLmlKAtMSJM9{@ zpG+wAg1VJZ$6k8M-`+AEHAz7VsddAux|x%_AGvx*d?Me3OMg1GL?%we`O9kUaq<7C zq5<7P!|3yhiA1CZ&zt!MgSkh08LPb~`hVc;xz5)&a~RKD$}iP)^>u3`rXw=M6~QAx zN8}L*2p7)Mnu?ng)`M1Lqw08-WcA*Bm;1;=TR$a&Ha;V5sIc(R2J1=oc!LJ%bg^{E z0HljX&mqg3fL|2_SA8J(S#E#RuW4y-(~oIccy&cCV2;3N6XM3(;nlE}X{hpynWei# zI|PkZ*JI_enob=KrFk(v*ebJag`z+@WO>DHgd$jF!|U;8p6JE}**uchu*k8D-7n0{Sd)uw1VFoY7pW*9i{j$B$giv{)$c~ zqfFHk1XA}#&+a4;aDtUFz~xtgfT?u4njKg6|vTM(W=H42;7_LBF@Il z;rUW_s2|MU1@`Q^F4{K%w5qvP2@e}BNEH{eT4|m7QA=7fwnn13!L%>4D7RN8b%(*> z>1>9fGMsc^@&z8KQV78)Z&?Q!c5;m(wS3t{>N+*LT_b1<{QAzA_)hG4_F+5?-;+Fl zJDvCTUe7yf>LH?2kQ?cfqi>{;3(puHi=i-%LPc?7Set_#{@!BL?~iKjp_A5!5P+cD z*`Ew36uGeTt~~f-h;^z30d?E$%>JHq7+;qj4XgHqmU2Pf>qdaZS4yLbmdxTTJIR}T zIX;ZbrcpaeIl8VW5M&@e_Bb0d1g%bw8U5R{qsw?{bC<;aOSo!mvvRDaFf716aBqk_2Fc_ z5#vO)thk;2)Rw)mmDYofXrBY0e_e>N=TWa%b5I*>2DkK;_9Ur<)qL&0*-yXE!3CG! zK(1DiJ~M7CMHDnBYxOzLFqcxkzK=1rywC7tCdM2bw)Lt8FTUJ(9;GMwfzo@na=P6j z$ch(rCgnWu(qPza>Vrcaryx75k1k*Y_cFYu!f~4JJ`hHG8+RA|K$-)#2HIIy%en-s zsP8-0IuTRZO<9PPqy0aifov*Y zuy;S&NirJma;_qE`!-?d^OGDvLfg|;{Au1{wuG zcZK{b(rA$29*$?#t3Arxs0r;Wb_7QI#eJvWdOt+E+kNdcbi%_r5|Q<{yWx6=;xp4}pUaQJ(gd%$nv!L8WgyMUw5jwT(9 ziSMTU`gcYY-5k-C%kI3B`nsplh4vBbmYLJakv|Okv^^R9Fl-!8Ea3GuFMpKkz9B3| z-6-mcYR;i!LQ__9>UQ?%9MHEF;;Jyh?+aYuchHR%tz+n57$(PZ+o^6g<1W&AGUL8_ zOV2)fQ&zdY&`ik{-U!{c+n61ke zrbThDq?+`W)OE|2>O%O9x}BC^8Lxs3o-^L3LuJi~&)9%wXyUlehXpI)Ha~9teB}i| zzzgfl#=f0ynNsmU(B@--y#-07l;qyS?S+n(SRkW3$^weKGpgqBY55^@)on4F{-ndM zYxJtVzG3tXq|c4Cz^~tv)NLRw1d<1v?l&$6p0CX*s$#>`kXpoLuMaDxI=wL& 0. +DIG=spec['outer_refinement']['endpoint_digits'] # the supplier endpoint is certified to 10^-DIG (accept at the endpoint, reject at endpoint + 10^-DIG); every slack sits 10 digits below +# Fixed-grid maximum (PR2180 / PR2161, dataisfire; proof PROOF-GRID-MAX.md): the free gaps shrink together to R0 = 10^-(DIG+80); grid, backoff and certified endpoint are unchanged. +R0=Q(1,10**(DIG+80)); ZETA=R0/100; SLACK=R0; GAP=R0; STOP=R0/10**6 +FLOOR=10**(DIG+46); BACKOFF=Q(1,10**(DIG+22)); B_GAP=R0 +# Fine prime padding: theta is between 1/(4p^2) and 1/(2p^2-1). +# Online chirp guard beta+2*xi-2<1; coefficient setup uses O(p^2 log p) bits. +# epsilon = 1 - DELTA_E is a FREE parameter (outer/FINE-PADDING-COMPOSITION.md sec. 2): every row is strictly satisfied for every DELTA_E > r0 = 10^-(DIG+80); beta = 1 - 3 DELTA_E lies in the admissible window +# [1 - DELTA_E (1 + 1/q), 1 - 2 DELTA_E). DELTA_E = (1025/1024) r0 keeps the gamma spare power 1-eps-r0 = r0/1024 > 0 and puts C - eps*q below 1/FLOOR (PROOF-GRID-MAX.md). +DELTA_E=Q(1025,1024)*R0 +EPS=1-DELTA_E +BETA=1-3*DELTA_E +THETA_POWER=Q(2) +HALO_POWER=48 +CORE_POWER=128 +STRASSEN_TAU=Q(45,16) +KAPPA_1828=Q('0.0016797549561255445213356709939207025769983114385025802954603275201627999999999999999999999999979966404900867489109573286580121585') # exact kappa of rohanarun's PR1828 (slack refinement of PR1800 at 1e-96), from its body +KAPPA_1839=Q('0.0016797549561255445213356709939207025769983114385025802954603275201628645482603256388263049999999997996640490086748910957328658012158594') # exact kappa of PR1839 (previous package: 1e-90 endpoint) +KAPPA_1875=Q('0.0016797549561255445213356709939207025769983114385025802954603275201628645482603256388263056561328446322744513169085862209720704481201654121427713006366929567157349625273906229277148454180995537563371124755588139767841405530386745578819565618798006892541712197674874836946756930569827889227573192555649999999997996640490086748910957328658012158594') # exact kappa of rohanarun's PR1875 (1e-300 endpoint), from its body +KAPPA_1876=Q('0.001679754956125544521335670993920702576998311438502580295460327520162864548260325638826305656132844632274451316908586220972070448120165412142771300636692956715734962527390622927714845418099553756337112475558813976784140553038674557881956561879800689254171219767487483694675693056982788922757319255565606685566411725238449650999339827075715283714270157705762309226038611771955655377501414652136546310799999999999999999997996640490086748910957328658012158594846') # exact kappa of rohanarun's PR1876 (1e-400 endpoint), from its body +KAPPA_1897=Q('0.001679754956125544521335670993920702576998311438502580295460327520162864548260325638826305656132844632274451316908586220972070448120165412142771300636692956715734962527390622927714845418099553756337112475558813976784140553038674557881956561879800689254171219767487483694675693056982788922757319255565606685566411725238449650999339827075715283714270157705762309226038611771955655377501414652136546310881185746917580802513640545967852810801680966856133978576162943792322682482152988532923811998938861379689883167389728443314312230815059559906903773756886872476136837071871203030423643505345473735135533') # exact kappa of M6LI's PR1897 (1e-500 grid), from its body +KAPPA_1786=Q('0.0016797547881500489087805478664999999999999999999999999999999998000000199999') # exact kappa of chafreaky's PR1786 ledger (EXPECTED-BALANCE.json), headline 0.001679754788150048 +KAPPA_PKG5=Q('0.001677992607205282520732088774830808372222877897034109604209719298829805473412451530867883424937597') # previous package (rectangular k=2, tau_eff=2.2500351) +KAPPA_PKG4=Q('0.0016778199023144364336310551358776001013829401215770658599799349282716974076737897457922714197448847') # previous package (radix union schedule, square boundary tau=2.372864) +KAPPA_1712=Q('0.0016776417313433545642517275958639984231708545722735432722117400060454625429077941422798526440584702') # pkg of PR1712 (Le Gall tau=12/5, old union row) +KAPPA_1699=Q('0.001677641731343354564251058287063644749065568493') # exact kappa of PR1699's ledger (Chafik Boukhalfa), same supplier profile +certified_complex=Q(spec['expected']['complex_lower']) +bit=Q('0.001733427039589844234749') +# Keep short independently checkable decimals strictly inside both endpoints. +b=certified_complex-B_GAP # strictly inside the certified supplier endpoint; B.json carries the same exact value +assert b==Q(BJ['b']) +q=b-GAP +a=(q+b)/2 +online=Q(spec['expected']['kappa']) +old=Q('0.001673360105405778') +assert b=2:x/=2;k+=1 + lo,hi=unit_log(x) + return down(lo+k*ln2[0]),up(hi+k*ln2[1]) +def exp(x): + assert 0<=x>GB)//j;th=_cd(-((-th*xu)>>GB),j);sl+=tl;sh+=th + tn=_cd(-((-th*xu)>>GB),EN) # x^EN/EN! (rounded up); the tail is at most twice this + return Q(int(sl),ONE),Q(int(sh+2*tn+2),ONE) +def moment(endpoint): + lo=hi=Q(0) + for r,n in profile.items(): + l,h=log(Q(m,r)); weight=Q(n*r,m*W) + lo+=weight*exp(endpoint*l)[0] + hi+=weight*exp(endpoint*h)[1] + return down(lo),up(hi) + +native=moment(b) +assert native[1]<1 +b_up=Q(BJ['b_above_endpoint']) +assert b_up>certified_complex and moment(b_up)[0]>1 # a larger test endpoint is rejected + +def ledger(kind, *, q_=q, zeta=ZETA, slack=SLACK, + old_scan=False, full_gauge=False, full_key=False, old_union=False, old_theta=False, old_linear=False, old_tag=False, + eps_=EPS, beta_=BETA, tau_eff=STRASSEN_TAU, halo_power=HALO_POWER, core_power=CORE_POWER): + r=R0; stop=STOP + # Existing explicit Strassen format, 7^16<2^45; c=3/32. + # Union: radix-distributed schedule (outer/UNION-SCHEDULE.md, new in this package): row exponent eps+1/2-xi. The boundary row binds with main; the Gaussian row has slack at this explicit point. + c=(3-tau_eff)/2 + eps=eps_; beta=beta_ + xi=eps*(1+q_)-c+slack + saving=eps*q_ + # Deliberate strict gap (BACKOFF) after decimal truncation to the FLOOR grid. + kappa=Q((saving*FLOOR).__floor__(),FLOOR)-BACKOFF + # kappa is derived, not silently asserted to equal an expected decimal. + tau=1-a; sigma=1-b + internal=tau+(1-stop)*max(sigma-tau,Q(0)) + leaf=sigma+stop*(1-sigma) + lam=1-(q_+a)/2 + key=beta+1-eps + margins={ + 'main_transform':saving, + 'global_coordinate_router':a, + 'fused_gaussian':1-eps+q_*beta, + 'group_bit_router':1-eps+a*beta, + 'group_scans':1-eps+beta, + 'boundary_algebraic_matrix':c+xi-eps, + 'sparse_union_movement':xi+Q(1,2)-eps, + 'polynomial_products':eps, + 'microbox_face_corrections':1-(eps+beta+halo_power-core_power+2), + } + if old_union:margins['old_g_factor_union_row']=1-eps-beta-Q(1,2)+xi + if old_scan:margins['old_per_axis_scan']=1-eps + if full_key:margins['unnecessary_full_key_sort']=margins['sparse_union_movement']-key + checks={ + 'actual_bit_above_effective':bit-a, + 'complex_above_effective':b-a, + 'q_positive':q_, 'complex_endpoint':b-q_, + 'q_below_effective':a-q_, 'stop_positive':stop, + 'stop_below_one':1-stop, + 'leaf_saving_above_effective':(1-stop)*b-a, + 'q_below_internal':1-internal-q_, 'q_below_leaf':1-leaf-q_, + 'lambda_above_tau':lam-tau, 'lambda_above_sigma':lam-sigma, + 'lambda_above_internal':lam-internal, + 'lambda_prime_above_lambda':1-q_-lam, + 'lambda_prime_above_leaf':1-q_-leaf, + 'epsilon_positive':eps,'epsilon_below_one':1-eps, + 'cap_above_band':xi-Q(1,2),'cap_below_cell':eps-xi, + 'group_positive':beta,'group_below_dimension':eps-beta, + 'support_router_span':1-beta, + 'group_gauge_power_slack':1-(2*xi-THETA_POWER)-r-beta, + 'actual_logarithmic_group_guard':1-(2*xi-THETA_POWER)-beta, + 'global_gamma_power_slack':1-eps-r, + 'actual_logarithmic_gamma_guard':1-eps, + 'alpha_logarithm_absorption':r, + 'group_key_fits_record':1-key, + 'membership_arithmetic_fits_record':1-beta-2*(1-eps), + 'microbox_halo_volume':core_power-halo_power-beta, + 'positive_layout_slack':slack, + 'short_record_fallback':eps-a, + 'improvement_over_online_final':kappa-online, + 'improvement_over_previous_local_final':kappa-old, + 'complex_below_one_over_32':Q(1,32)-b, + } + checks['strassen_integer_power_gap']=Q(2**tau_eff.numerator-7**tau_eff.denominator) + checks['theta_positive_polynomial_power']=THETA_POWER + checks['cap_below_phase_cell_power']=THETA_POWER-xi + checks['halo_covers_generic_inverse_radius']=Q(halo_power-43) + checks['union_tag_work_per_visit_fits_record']=1-beta + checks['union_header_fits_record']=1-beta + checks['source_axis_superpolynomial']=1-eps + checks['improvement_over_pr1786']=kappa-KAPPA_1786 + checks['improvement_over_pr1828']=kappa-KAPPA_1828 + checks['improvement_over_pr1839']=kappa-KAPPA_1839 + checks['improvement_over_pr1875']=kappa-KAPPA_1875 + checks['improvement_over_pr1876']=kappa-KAPPA_1876 + checks['improvement_over_pr1897']=kappa-KAPPA_1897 + checks['improvement_over_pr1758']=kappa-Q('0.001679745508802299051546533685199973672313473419790800679752457380932784242972585600630181672224983') + checks['improvement_over_pr1699']=kappa-KAPPA_1699 + checks['improvement_over_pr1712']=kappa-KAPPA_1712 + checks['improvement_over_previous_package']=kappa-KAPPA_PKG4 + checks['improvement_over_pkg_k2']=kappa-KAPPA_PKG5 + if full_gauge:checks['unrecentered_group_gauge']=1-THETA_POWER-r-beta + if old_theta:checks['old_theta_chirp_guard']=1-(2*xi-eps)-r-beta + if old_linear:checks['old_linear_guard']=1-xi-r-beta + if old_tag:checks['old_union_tag_2beta']=1-2*beta + # Main-binding family invariant (PR2180): the Gaussian saving stays above the main saving. The fixed kappa grid (FLOOR) is coarser than the free gaps, + # so the *_above_kappa rows alone would no longer exclude a beta outside the main-binding window; this row is delta*(1-2q) > 0. + checks['gaussian_above_main']=margins['fused_gaussian']-saving + checks.update({n+'_above_kappa':v-kappa for n,v in margins.items()}) + assert margins['boundary_algebraic_matrix']==saving+slack + assert margins['sparse_union_movement']==saving+slack+(tau_eff-2)/2 + return {'kind':kind,'kappa':kappa,'epsilon':eps,'xi':xi,'beta':beta, + 'q':q_,'a':a,'r0':r,'zeta':zeta,'slack':slack, + 'margins':margins,'strict_checks':checks} + +def encode(x): + if isinstance(x,Q): + with localcontext() as c: + c.prec=DIG+200 + return {'rational':str(x),'decimal':str(Decimal(x.numerator)/Decimal(x.denominator))} + if isinstance(x,dict):return {str(k):encode(v) for k,v in x.items()} + if isinstance(x,(list,tuple)):return [encode(v) for v in x] + return x + +rows={};controls={} +for kind in ['struct_boundary_radix_union']: + row=ledger(kind) + assert all(v>0 for v in row['strict_checks'].values()) + assert min(row['margins'].values())==row['margins']['main_transform'] + # fixed-grid maximum: C*FLOOR is an integer and 0 < C - eps*q < 1/FLOOR, so floor(FLOOR*eps*q)/FLOOR = C - 1/FLOOR exactly and kappa attains the grid/backoff ceiling + assert (certified_complex*FLOOR).denominator==1 and 0= 1/(4 p^THETA_POWER)), an exponential factor <= p^2 eventually, +# alpha^5 polylogarithmic; a further half power is allowed for the polylogarithmic and bounded-constant factors of the augmented matrices. The umbrella must exceed that budget. +UMBRELLA_POWER=10 +def umbrella_margin(theta_power):return UMBRELLA_POWER-(2*theta_power+2+Q(1,2)) +assert umbrella_margin(THETA_POWER)>0 and umbrella_margin(Q(15,4))<=0 # control: the umbrella would fail silently for THETA_POWER >= 3.75 +HALO_UMBRELLA={'umbrella_power':UMBRELLA_POWER,'theta_power':THETA_POWER,'exponent_budget':2*THETA_POWER+2+Q(1,2),'margin':umbrella_margin(THETA_POWER),'fails_from_theta_power':Q(15,4)} +out={'status':'PASS_FINE_PRIME_PADDING_EXACT_ARITHMETIC', + 'scope':'Conditional fine-prime padding composition. Fresh native admission is required by verify.py. The cited prime theorem, written gauge-free theorem and inherited all-size interfaces are not proved by this arithmetic. No independent human review is claimed.', + 'geometry_changes':{'theta_power':THETA_POWER,'halo_power':HALO_POWER,'core_power':CORE_POWER,'matrix_exponent':STRASSEN_TAU}, + 'halo_umbrella':HALO_UMBRELLA,'complex_lower_short':b,'complex_lower_pinned':certified_complex, + 'native_moment':native,'profile':profile,'m':m,'W':W, + 'online_final_kappa':online,'rows':rows,'rejecting_controls':controls, + 'pr1673_kappa':Q('0.001677160151714381'),'improvement_over_pr1673':rows['struct_boundary_radix_union']['kappa']-Q('0.001677160151714381'), + 'source_sha256':{p.relative_to(WORK).as_posix():hashlib.sha256(p.read_bytes()).hexdigest() for p in [SPEC,CLAIM]}} +(HERE/'LEDGER.json').write_text(json.dumps(encode(out),indent=2)+'\n') +print(out['status']) +for name,row in rows.items(): + print(name,'FINAL KAPPA',encode(row['kappa'])['decimal'], + 'positive checks',len(row['strict_checks']), + 'gain over online',encode(row['kappa']-online)['decimal']) diff --git a/research/staged-release-retiming-t530/numerics/vendor-repo/research/gmx-t74-borrow43-handoff/outer/independent_check.py b/research/staged-release-retiming-t530/numerics/vendor-repo/research/gmx-t74-borrow43-handoff/outer/independent_check.py new file mode 100644 index 0000000000..b838c430ef --- /dev/null +++ b/research/staged-release-retiming-t530/numerics/vendor-repo/research/gmx-t74-borrow43-handoff/outer/independent_check.py @@ -0,0 +1,60 @@ +"""Independent balance-equation check (PR1673, adapted: this package's supplier b and SPEC), not an execution of the ledger in check_ledger.py.""" +from fractions import Fraction as F +from pathlib import Path +from decimal import Decimal,localcontext +import json,hashlib,sys +sys.set_int_max_str_digits(0) +D=Path(__file__).resolve().parent;W=D.parent +src=W/'new/SPEC.json' +BJ=json.loads((D/'B.json').read_text()) +spec=json.loads(src.read_text());pinned=F(spec['expected']['complex_lower']) +DIG=spec['outer_refinement']['endpoint_digits'];T=10**(DIG+80) # all free slacks are 10^-(DIG+80) or below (fixed-grid-maximum point, PR2180 / PR2161 dataisfire) +b=F(BJ['b']);q=b-F(1,T);eff=(q+b)/2;actual_bit=F('0.001733427039589844234749') +r=F(1,T);z=F(1,T*100);s=F(1,T) +assert 0eff +rows={} +# FINE-PRIME PADDING (outer/FINE-PADDING-COMPOSITION.md): explicit point epsilon=1-delta, beta=1-3 delta, delta=(1025/1024)*10^-(DIG+80), Strassen boundary tau=45/16 (7^16<2^45), c=3/32, +# theta in (1/(4p^2),1/(2p^2-1)], chirp guard beta+2xi-2<1, halo power 48, core power 128. Derived here WITHOUT the ledger code; the structured boundary is not used. +delta=F(1025,1024*T);E=1-delta;B=1-3*delta +assert 7**16<2**45;tau=F(45,16);c=(3-tau)/2;assert c==F(3,32) +nu=2;halo=48;core=128 +X=E+E*q+s-c # boundary saving c+X-E = E q + s +assert c+X-E==E*q+s +# the Gaussian row has slack: 1-E+qB-Eq = delta(1-2q) +assert 1-E+q*B-E*q==delta*(1-2*q)>0 +# admissible beta window for this epsilon: Gaussian row needs beta >= 1-delta(1+1/q); membership needs beta < 1-2 delta +assert 1-delta*(1+1/q)<=B<1-2*delta +assert F(1,2)z>0 and 1-E-r>0 and core-halo-B>0 and halo>43 +assert 1-B>0 and 1-B-2*(1-E)==delta>0 +costs={'transform':1-E*q,'global_router':1-eff,'gaussian':E-q*B,'group_router':E-eff*B,'group_scans':E-B,'boundary':E-X+(tau-1)/2,'sparse_union':E+F(1,2)-X,'polynomials':1-E,'microfaces':E+B+halo-core+2} +K=F((E*q*10**(DIG+46)).__floor__(),10**(DIG+46))-F(1,10**(DIG+22)) +assert max(costs.values())==costs['transform'] and all(v<1-K for v in costs.values()) +# earlier packages' guards fail at this point (they are rejecting controls in the ledger): linear guard 1-X-r-B<0, old theta chirp guard 1-(2X-E)-r-B<0, 2B<1 test fails +assert 1-X-r-B<0 and 1-(2*X-E)-r-B<0 and 1-2*B<0 +assert K>F('0.0016797547881500489087805478664999999999999999999999999999999998000000199999') # PR1786 exact kappa +assert K>F('0.0016797549561255445213356709939207025769983114385025802954603275201627999999999999999999999999979966404900867489109573286580121585') # PR1828 exact kappa +assert K>F('0.0016797549561255445213356709939207025769983114385025802954603275201628645482603256388263049999999997996640490086748910957328658012158594') # PR1839 exact kappa +assert K>F('0.0016797549561255445213356709939207025769983114385025802954603275201628645482603256388263056561328446322744513169085862209720704481201654121427713006366929567157349625273906229277148454180995537563371124755588139767841405530386745578819565618798006892541712197674874836946756930569827889227573192555649999999997996640490086748910957328658012158594') # PR1875 exact kappa +assert K>F('0.001679754956125544521335670993920702576998311438502580295460327520162864548260325638826305656132844632274451316908586220972070448120165412142771300636692956715734962527390622927714845418099553756337112475558813976784140553038674557881956561879800689254171219767487483694675693056982788922757319255565606685566411725238449650999339827075715283714270157705762309226038611771955655377501414652136546310799999999999999999997996640490086748910957328658012158594846') # PR1876 exact kappa +assert K>F('0.001679754956125544521335670993920702576998311438502580295460327520162864548260325638826305656132844632274451316908586220972070448120165412142771300636692956715734962527390622927714845418099553756337112475558813976784140553038674557881956561879800689254171219767487483694675693056982788922757319255565606685566411725238449650999339827075715283714270157705762309226038611771955655377501414652136546310881185746917580802513640545967852810801680966856133978576162943792322682482152988532923811998938861379689883167389728443314312230815059559906903773756886872476136837071871203030423643505345473735135533') # PR1897 exact kappa +assert K>F('0.001679745508802299051546533685199973672313473419790800679752457380932784242972585600630181672224983') # PR1758 +assert K r0 (beta = 1-3 delta); only kappa moves, kappa = (1-delta) q - O(1e-76) +# fixed-grid maximum: saving < C and C*FLOOR integral give K <= C-1/FLOOR-BACKOFF; this point attains it (0 < C-E*q < 1/FLOOR) +FL=10**(DIG+46);assert (pinned*FL).denominator==1 and 00 and 1-dd*(1+1/q)<=Bd<1-2*dd and 1-Ed+q*Bd-Ed*q>0 and Ed-Bd>0 and 1-Bd-2*(1-Ed)>0 + assert F(1,2)0 and core-halo-Bd>0 + assert 1-Ed+eff*Bd>Ed*q and eff>Ed*q and 1-Ed+Bd>Ed*q and Ed>Ed*q and 1-(Ed+Bd+halo-core+2)>Ed*q + sweep.append((str(dd),str(float(q-Ed*q)))) +assert 1-F(1,T)<=1-r # delta=r0 itself is rejected by 1-eps-r0>0 +assert not (1-(1-r)-r>0) +rows['struct_boundary_radix_union']={'epsilon':str(E),'cap':str(X),'beta':str(B),'kappa':str(K),'margin_above_kappa':str(E*q-K),'checked_cost_powers':len(costs),'gap_to_q':str(q-K),'epsilon_free_sweep_delta_gap_to_q':sweep} +report={'status':'PASS_INDEPENDENT_BALANCE_DERIVATION','source_sha256':hashlib.sha256(src.read_bytes()).hexdigest(),'b':str(b),'rows':rows,'scope':'Independent balance derivation and margin comparisons for this package\'s supplier endpoint; the supplier native admission is bound by verify_release.py; inherited all-size assumptions remain.'} +(D/'INDEPENDENT.json').write_text(json.dumps(report,indent=2)+'\n') +print(json.dumps(report,indent=2)) diff --git a/research/staged-release-retiming-t530/numerics/vendor-repo/research/pending-claims-independent-pricing/arith.py b/research/staged-release-retiming-t530/numerics/vendor-repo/research/pending-claims-independent-pricing/arith.py new file mode 100644 index 0000000000..b9e3014443 --- /dev/null +++ b/research/staged-release-retiming-t530/numerics/vendor-repo/research/pending-claims-independent-pricing/arith.py @@ -0,0 +1,133 @@ +# SPDX-License-Identifier: Apache-2.0 +"""Code-disjoint exact interval arithmetic for complex-moment endpoints and the kappa reduction. + +Imports nothing from the retained engines (moment.py, base_two_moment.py, outer.py). +Extends the arithmetic of research/t37-endpoints-independent (PR1051) to every prime: + ln 2 = 2 atanh(1/3), ln p = ln(p-1) + 2 atanh(1/(2p-1)) for odd primes p, +since p/(p-1) = (1+t)/(1-t) with t = 1/(2p-1) <= 1/5. atanh tails use the geometric bound +t^(2K+1) / ((2K+1)(1-t^2)); exp uses a Taylor polynomial with remainder 2 y^(K+1)/(K+1)!; +all intervals are exact rationals rounded outward to multiples of 2^-PREC. +""" +from fractions import Fraction as Q +from functools import lru_cache + +PREC = 320 +TERMS = 120 +TAYLOR = 16 + + +def require(ok, message): + if not ok: + raise ValueError(message) + + +def down(x): + return Q((x.numerator << PREC) // x.denominator, 1 << PREC) + + +def up(x): + return -down(-x) + + +class I: + __slots__ = ('lo', 'hi') + + def __init__(self, lo, hi=None): + hi = lo if hi is None else hi + require(lo <= hi, 'interval order') + self.lo, self.hi = down(Q(lo)), up(Q(hi)) + + def __add__(self, o): + o = o if isinstance(o, I) else I(o) + return I(self.lo + o.lo, self.hi + o.hi) + + def __sub__(self, o): + o = o if isinstance(o, I) else I(o) + return I(self.lo - o.hi, self.hi - o.lo) + + def __mul__(self, o): + o = o if isinstance(o, I) else I(o) + p = (self.lo * o.lo, self.lo * o.hi, self.hi * o.lo, self.hi * o.hi) + return I(min(p), max(p)) + + __radd__ = __add__ + __rmul__ = __mul__ + + +def atanh(t): + t = Q(t) + require(0 < t <= Q(1, 3), 'atanh argument') + s, power = Q(0), t + for k in range(TERMS): + s += power / (2 * k + 1) + power *= t * t + return I(s, s + power / ((2 * TERMS + 1) * (1 - t * t))) + + +def is_prime(p): + return p >= 2 and all(p % d for d in range(2, int(p ** 0.5) + 1)) + + +@lru_cache(None) +def ln_prime(p): + require(is_prime(p), 'not a prime') + if p == 2: + return 2 * atanh(Q(1, 3)) + return ln_int(p - 1) + 2 * atanh(Q(1, 2 * p - 1)) + + +@lru_cache(None) +def ln_int(k): + require(k >= 1, 'positive integer') + out, d = I(0), 2 + while k > 1: + while k % d == 0: + out = out + ln_prime(d) + k //= d + d += 1 + return out + + +def exp_small(y): + require(0 <= y.lo and y.hi < Q(1, 100), 'exp range') + lo = hi = tlo = thi = Q(1) + for k in range(1, TAYLOR + 1): + tlo = down(tlo * y.lo / k) + thi = up(thi * y.hi / k) + lo += tlo + hi += thi + return I(lo, hi + thi * y.hi / (TAYLOR + 1) * 2) + + +def moment(H, m, W, z, surcharge=False): + total = I(0) + lm = ln_int(m) + for r, n in H.items(): + require(0 < r < m, 'child rank range') + total = total + I(Q(r * n, m * W)) * exp_small((lm - ln_int(r)) * I(z)) + if surcharge: + total = total + I(Q(32 * m * sum(H.values()), 10 ** 16 * W)) * exp_small(lm * I(z)) + return total + + +def certify(H, m, W, b, grid=Q(1, 10 ** 24), surcharge=False): + at, nxt = moment(H, m, W, b, surcharge), moment(H, m, W, b + grid, surcharge) + require(at.hi < 1, 'moment not below one at the endpoint') + require(nxt.lo > 1, 'moment not above one at the next grid point') + return (float(at.hi - 1), float(nxt.lo - 1)) + + +def kappa_from(b, c, grid=Q(1, 10 ** 18)): + """Selected T37 reduction: s = min(c, (1-beta) b) - 10^-27, seven bootstrap steps from 384599/10^10, + q = a7 (1 - 2 eta), kappa = largest grid point strictly below (1 - eta) q / (1 + q); eta = beta = 10^-24.""" + eta = beta = Q(1, 10 ** 24) + s = min(c, (1 - beta) * b) - Q(1, 10 ** 27) + a = Q(384599, 10 ** 10) + for _ in range(7): + a = (1 - s) * s + s * a + q = a * (1 - 2 * eta) + margin = (1 - eta) * q / (1 + q) + t = margin / grid + k = (-((-t.numerator) // t.denominator) - 1) * grid + require(k < margin <= k + grid, 'grid reduction') + return k, margin, ('bit' if c <= (1 - beta) * b else 'complex') diff --git a/research/staged-release-retiming-t530/numerics/verify_moment.py b/research/staged-release-retiming-t530/numerics/verify_moment.py new file mode 100644 index 0000000000..6f36c0baf1 --- /dev/null +++ b/research/staged-release-retiming-t530/numerics/verify_moment.py @@ -0,0 +1,53 @@ +#!/usr/bin/env python3 +"""Exact cost certification for the two commuting-release changes. +No global supplier/physical controller admission is inferred from arithmetic. +""" +import argparse,gzip,hashlib,importlib.util,json,sys +from fractions import Fraction as Q +from pathlib import Path + +def need(x,m): + if not x:raise ValueError(m) +def read(p): + b=p.read_bytes();return json.loads(gzip.decompress(b) if p.suffix=='.gz' else b) +def load(name,p): + sp=importlib.util.spec_from_file_location(name,p);x=importlib.util.module_from_spec(sp);sp.loader.exec_module(x);return x +def dec(x): + from decimal import Decimal,localcontext + with localcontext() as c: + c.prec=80;return str(Decimal(x.numerator)/Decimal(x.denominator)) +def main(): + ap=argparse.ArgumentParser();ap.add_argument('--repo',type=Path,required=True);ap.add_argument('--t530',type=Path,required=True);ap.add_argument('--words',type=Path,required=True);ap.add_argument('--out',type=Path,required=True);a=ap.parse_args() + price=load('exactprice',a.t530/'price.py') + ind=load('independent_price',a.repo/'research/pending-claims-independent-pricing/arith.py') + exp=read(a.t530/'EXPECTED.json');N=exp['replicas']*9;W=exp['replicas']*896 + need(N==4770 and W==474880,'actual T530 normalization') + old={int(k):v for k,v in exp['profile'].items()} + delta=None;pins={} + for tag in ('base','extra'): + s=a.t530/f'supplier3605/STAGED644-660-{tag}.json.gz';t=a.words/f'RETIMED644-660-{tag}.json.gz' + before,after=read(s),read(t);pins[str(s)]=hashlib.sha256(s.read_bytes()).hexdigest();pins[str(t)]=hashlib.sha256(t.read_bytes()).hexdigest() + for key in ('start_extra','helper_final','removed','warps','center_frames','cut','restore','A'): + need(before.get(key)==after.get(key),'preserved '+key) + x={int(k):v for k,v in before['report']['local_profile'].items()};y={int(k):v for k,v in after['report']['local_profile'].items()} + d={r:y.get(r,0)-x.get(r,0) for r in x.keys()|y.keys()};d={r:n for r,n in d.items() if n} + need(d=={1:-2,2:-2,3:2},'exact per-call profile delta') + need(before['report']['width_inventory']==after['report']['width_inventory'],'width inventory') + if delta is None:delta=d + else:need(delta==d,'providers share delta') + profile={r:old.get(r,0)+N*delta.get(r,0) for r in old.keys()|delta.keys()} + need(sum(r*n for r,n in old.items())==sum(r*n for r,n in profile.items()),'rank mass') + need(73*W-sum(r*n for r,n in profile.items())==W-64*N,'coverage law') + lo=Q('0.001730394391813963415120');hi=lo+Q(1,10**24) + signed={**profile,73:-W} + l,h=price.interval(signed,lo),price.interval(signed,hi) + need(l[1]<00 for x in row['strict_checks'].values()),'63 positive inequalities') + need(len(controls)==17 and all(x and all(Q(v['rational'])<=0 for v in x.values()) for x in controls.values()),'17 controls') + independent=read(a.out/'outer/INDEPENDENT.json');need(Q(independent['rows']['struct_boundary_radix_union']['kappa'])==K,'independent derivation') + result=dict(status='PASS_RETIMED_MODERN_OUTER_ARITHMETIC',kappa=str(K),strict_inequalities=63,rejected_controls=17,independent=independent['status'],ledger_sha256=sha(a.out/'outer/LEDGER.json'),checker_sha256=sha(a.out/'outer/check_ledger.py'),independent_checker_sha256=sha(inp),scope='Fresh source-bound exact arithmetic. Global changed-word controller/invoice release not inferred; inherited supplier and all-size premises remain.') + save(a.out/'RESULT.json',result);print(result['status']) +if __name__=='__main__':main() diff --git a/research/staged-release-retiming-t530/numerics/words/RETIMED644-660-base.json.gz b/research/staged-release-retiming-t530/numerics/words/RETIMED644-660-base.json.gz new file mode 100644 index 0000000000000000000000000000000000000000..d69125e0c7d34af9299e411ada5c30dfc7b95ad1 GIT binary patch literal 72575 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

W1{2#&I4JvENAC0(zcgG^tq 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 V>ytT*LV(=pZ%O=Me@JD+{{j4OYux|< literal 0 HcmV?d00001 diff --git a/research/staged-release-retiming-t530/numerics/words/RETIMED644-660-extra.json.gz b/research/staged-release-retiming-t530/numerics/words/RETIMED644-660-extra.json.gz new file mode 100644 index 0000000000000000000000000000000000000000..f3c580b06506e8888fe766c9a1e0bb1a748d7b74 GIT binary patch literal 72574 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

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

I zs+>1ZGd2l|$jNyYfVo*pueXCSYLDYFS@OGw^r{Hf4kOWaV{tMDdadg0j~d$3^GucP z=9T*TNYCk{0O6SqlMVvEYX3&B)ferVEQS6OHKJ`g7!$YhLI>`CBeA7MYwr#+Ro*>O z*mPi}0E!OyG2UW6y$VgwhQAdfG}>m0222Kj`*|@JynMA?d5xW^-easn+H_##T=1G5 zxci~^{Uh&8mfY@<-ew0zdZnP)0R@&_`t;&9(;1J?-EsCxEp1hJ=Qw*MilK$`)8Rkd zzgGz%ByE);oKl9^+_N7=@ElmcI|MUT=QGxC0}xdR@311+J&zS`D1x8Mw`c{uHf5AD zmK|}GA{UV%Po(j<^Ww*2C9Re*Pfu&XfJJ8VO@OD$5VMrw^-tqjCEPh*Ut$(S7Hq!} zM6}H+4R(=CIliLmI3DsP7DDx*%{Ii-w2*o&Jd{ui6ml410gD*RoyWI{UA1{JIEd%P zV>mA;B4zxSFcXtS6ud%OAZlf~Bp>C*ppbF#Td2j|&&baKq>;E;Lj=CsRz27;++<49 zPPs*&D}7RANJ( z=}|bXCvHM`;I3O5={Pk!M~S|Kh?vfK5cz^eVa4j%Nbd#Qjd3#L!?)NIKV)sTF}0?O z0A?suh2>x6!l$Sf(OG+LBZh5$1hAh&^Mj&*CR!2OQ&d4{Kb8Q?3spob{bePU{*uC8 z{`?f;;v2S;WlGvM8mDHMa#P700I-ihku#z*c^hVH$6co%cg2Z6a9HkBNRARd&Y(K0 zQ*N)b=B(t_k|Mz^=F&wl(Wx{sxu`uQY1>XF&5y%WiW4BnJ@(%*zFSdLoC8WSjB z$#lhTqnqu_d4gGK(V3GMi~J=L%4GJ`jyYK#_p)}%k>)_zSVo48VKkVi(k^h^++)xW zy>r<1EMEemOqRwyEud|~Q1lRxmjPj8J_TBdDxaIsannK6gJ7a#nPa$L;|$G;SDuUTF6Y^ zPlj`$g^VWy&_cW)Q+Y*jsunzx_aeB37KZc06K{Z8poD-Bkz2fDDZ?r3MkBx26SuQ= zgpLseUJT{`M!9(`SP_oNg%Cwk#I$wHnmJs{h0N(|F+O1qk;z3|)@$YvaaeRV2YMpi zXrbW?G00$;UWpAi;wFUA)=3d`AY(Bh&o+6-I)y=Grk{;+ByI+gfmPZ{I_}7>;jvCk z&bk7Rqrn9wvYecfww-YuSSTDi<8ofQ6<$&i!7{nmJ zCY7-$@N5ajf-0r8I$|P7BJK+kS@$x_l9ql!RB6HSvS1963cRyI)6%oVy zgY^{jAgWLt_`y2O`^k(*Ej&Qe5ApANzjM%Iyog);T$~d3jL1UqKnVP^J*Gt`{-^lm zHw9Bg#vp4!!~h5SuFF{PKqISAiR1het5?OC<6HD#Nho9R7nk%SGAoXd8ZG^TKhvte z;?q0eQV8w$c78i0^jq9kZclnaI+cuB4;m>aGK{28dV)o9ASuBesn}yCF3_>C>N~A12rUN1q)JL!DJ6(WJR|J zDoE*15wpiu$&c`!GGwn=um!Zb1-n@YU1IZ=2fc5ND)ljmDxPMjeV#Q7c0FmATmmgP zbP~LQS7;A+ebq1q7jVVQ7?^qtE-3ck2GX^-*7fD5*V?68q4D&hZ*UUDr}*_4j?pHZ z?P+)RkOB}wn{f2>k*vb_9K6a=4hsQ2G1t>gFu5zr%C3pYVRDzC zWr@xCRbtZdB!r@4s%#t0d{e?R@l@Q_8}KtSpe3{L=KO3Hmy%~G6eU}JSWsq9wA!WP z9a_4Z!$(}dBc;?e>y!EmwM@#OD}2#^Ou3^9sxHdlXsaqZq!$p~U2)a#NDY^}w3=ba zlp4CpISJ841;;EPsst{;KA1ViAyG#5?*X>iO0Uuh?Wgg_Zr5GG->7GZkUx9VKDfuL+Y>4_HRG z+ZFsFlo_8Q&wfW}xo1gRrl%CSFbUASn~0`TO=4Lf`YB0F{|qb0Q*YXDDQ|J}M{!BJ z{;P5g7d;llZ{M7#@hrrJgm-f5H%nmE+Vi7wsm?Byo~`1VKEG2wN66LZn(?kkIl~WI7bfA;I;K&!=j#-%+xT7Lm(Xo0Rj>WG(6L!6iBnUwOjeTX=~J?CyaB!rf3PPL}plxoSxt~==G#H*}9 z?kXTDWu^O&w3s|dyq|?=S{6$mRlTM%)q*;;AVd_8*G8dbOv+l0U$x94r}$Z9E(a!v z-(BfYYxAkr?RS){s_Pj$y{R>8&Dqm?J7RVm-1X^Y`pH{te2g4BrXOX7q@4CUmr}?|Vt7bEh?WdA?dQ3;y#*;VcO~^vX3O;B zkqMICGW)MGlbXXA4B0>7mt;|Npn6x}#3O#?YJO;a6ms?9xb zGkCsIjTiCG@^CuUY3Vl|A5c1sa)-i5ITrUmJXaLAa;FjAffUa^^Us8SN6KYaLXpe1 zcG=r8rz-}ZM#Px+NDqB(E-{Hzrn*L?Jc$aD)p`F_)*vN`a$$w zW}K-{Alxru_#G*khYerNgB0Bfu~9UY$A2rvcM*9zXT8xQi*x1@q%|BJ$ZF!!7`&&# zMd#-mSZ7zc{*4qnJ5?KDvU9#u4@k`&gf;Lw`}8yFEy1))gExfey@0pG|41xS?}&`Z zryq0xEh{*FRd71F@sAQeMX=ytjK51}CRVl%W041wyB8658ul!~H+!H*9;O!~VgLzp zL=|5HUXdEEMw#c!Z7?6}7U0{pIey7w`bql^rpQ#mzycSU{fvp}f?f1w&g@q1ONIN@ z4y~%om_JHSfebH|KO2SsgpQ8sMK%B?W}(CRQE1Y1i0-4N1M3PH2I!ux54zY5DVJlD zkGd#^K{}4%tBx(d1>(D>9BfwJIG~@*{~z|=ZpWToH|%_ubG;fUiTdo5 z*gB4=UFoANArUHREJ-hnQ1M~qy}TbO!~yILcrwd2d{&TXL>`Fz&1g;jxg zmJ<47f#}Jw$2eS?QzhkTIDdI$nhpF*46zGqnGD=o_qa@ zBL1}1id8O5UyTVLIN1q7avxeXH~3o7Z_{FZez)|gu+4|V;qv8b@4r8s@433cUQ2~O{I^!`93l)GHMkV4yhnBXF07`mD1CfEyUE+2sWxgV!E_s12kdi^tk36>pvntge`);>S&P%s7m@_fyOH6DMeyY@RgHmNuyDi!m+6y3+0!&lK% zu<~+0yOHAZDDw-_tq`wbc(H6LR%-BTPEc1a73_0nfi0-!R2j0_mR}@zQSh31%aaF9 zFPG~V%&NCW3y`B;?i z516bJrxvDIK9=2UpYMCg7u=jF*`Ta_6@nTj;>*DJkvyvAIqD*l?L$OqMQM&sCoFup#ws;g*a{(3>? zsfyv$uag{#NQ!*U;3+5D^}`G;)Q z*SKi}Y1ZPCl9QJ!`XzU_!pTwHT+vRV@9|#Q@(=l}mqefQTmPPDXnoTpuWo`Pp$aGB zyg_ncHS3l*Xnpb2yc$V@xx#9Fuax?+7Jw(q`o7jF8{mkty+K&BJ+dwd|s=FQT8X^Io1Y-NX27VttsAmmltl{ra-}Bmb_k>8RA8?V3wB z>&=y(5$UVKv#Ub=x8MHyxBv0aI`(T-J!acH&H8wVbS2d@*tb6dUf!WHbIt(n`{Z^$ zR>8|(jQ*YU^7t{zYnbqA#w>tNhm&S+ON*6x{Q>kB7ZrE;Inn`VPE&sB`D=-y7lR*R zc>%~3HXS26)CDdCe0iNAaD9A^aJTe8sKYa)l@WJ^qCDsn=AhoA9fXjCCZ|+1m2t99 z8JYTiBrb$GthKa#rKSl}p5sz=f=(%qe-FqFI>$-Ln3N1i5o-zx?UW-xZhgLxzX1)j@(u^dDVNSdJp^1lWU-3}1P;VgF9RjB4&>rw zX;ESiXEV@eiVK|DKs5maw-W;~*~_6ER_jHB&zVJBsD&=X=u>cTYMeBu?nL;Z(W?0e zfCH1P5>g_^$IHJ9E_(It@)5V2O0TO!c!CvHNqQqb#V!evg8Kv+$&q zrjQ?|9kL{}bEgkw_X1zg5>7JM=KZC};vaos*zQe~drGyFFX(oVh;rZ64c*{h`v=iQ zDaDTq4VEgel!&07uteKghW1o}pjP24A=L~%kb^7XsUB^!d5fMIq}Ah%oFJ`kkDvSm zIHX$o@c?_Q!Ct#Ul&uG0YaaddwSZXYQ3imw95{)roT1)*oF0w7Envnpg;2^sop!A_ z0|?TyCjhV2o>EFc`|1<+1E?;ui;%C|u3oVY*F(qXanE`|8KvfW_8CNey(bMHbFMeA zLFCul+A!toMR1fY>#1>^E$Mpo9Ax@>eI0)CcD)*pa^`xF9_M?y-p0qS&94{wVf0sM zK^XmtT8K~V6+RI>-n0;oF!B|65=4GQw1knbFq|mz72Xp@zCx0sPZn0FQ(PeX6?GN! zjjrggIQn)4q6N{faJVq~TUJ8&?Hs1@^`y{)+4kA3Vznat;d3igFH5s$3D@LF_B;JdQqJA@D);D-b`vpz4(q zAb6IsG84qnmn%s^5dBKk5We-l@=HV|{z_aC7RoE%MpRW^nLOePYF-#k=C73AQ3wCZ6&|+Ft|aGSsag5c!|1QX?@{zuPWkXYbtS?NqrVc| zhrRGC)qn7GVkP?z%gu2WJ_t(vD!&k>ebtPJUO8TsAi~Ixt13p&>|V7w!ZLrA6nXnx z_vv@m)T$H`jT>pt(kUfI&Z^-OMSssu=pKJXRR}ahK`}qF*(`ax_|`-381_?38;|QVXKL>%WEN z=Bh0hMlW}ryCC{iZZC@dsuCDSzbX($dEf3*h(WoudW=!Ixr#`}v9AJ^;YBs>TA4wy zTqQfh=-XXAG>CrH4~=sED!m#;f0cEO#$jK@Xv1=I6}k+-(mDu_3$YAtLAwe{i>%Pmiprn*YvBh zd{k!c`t~u2Nmo+{_yq3&^(nmJSOkr$1k3c9EGA}ZKQh?2v!x}AOUl{M1jxCpKG9{Q zemYo2C9ghF^qNt#1N43MiKf`lc$)ZukY9pjJxc90D;^5q) zWUX@__g;@-UBXV9p76x4N)=RU1L)5sGULZ8vsjn-CH1NCdW$>X&APF=Jg4PBu?bM%+-!3R3Mze~$Ajp}o1T`DH*9&L2Z5ua2Y&jFwfak2rl^lr({hxpRmwz_!w{!CjawJbcHF@EyvlDxZ zw#e2Dv*+#+B>PBVepq^@5gj2wtcRngQVf9_<0J-aGMz)PON@f#+H4%r2c_g0q}a2` zf}YxvN1~F@qfdSKTfl=q4SEL|EUoe#NRKq`(ih=3&hZ3~gFWWehsAN^O3FxtlsI%7 z?1^*wSU@1KhE5$gq8#a+Pz_#vD@$UE{!-oNK3{v3>>1~W%HIhU93eogZ_rK!8=4c# zO@72+jma|xYhpBFu(noe^ocQf7^}~h$xBy#OHG~)>%(sH4%ni(fE}xsPBX5iPOG{A ztGdj)3|n}x5>Es(2YTSG9s$TQV~_9?pano{&VHZRTusp@{{_8Gmb+$diayFOBsZkK8_013MLp5n5%~yx`&f)M zMhyVZC?3M7iAV0+SP6JW!5=o*k{IhtLgbXVcWR{M7K61)u{Ef@G=oM7!m7z9(Kr5r zxXqrLYd8aVw%_18d=1DbAWyPISbzWy4Vft5>{w$U3V157FUQd%X?@H-3VMp4CJGE7 zPr@}a09d2?(myxyX1m)n@;H36cj0KbalhQi2VTFC56~+$wIgZ>ctc?j79)}X`p&=` ziute@5fQ|C5kcgHz%K=BsendsLr}9bcwVV2X~9!aHL0VI`^ls9YVZdNeE|2q%>p+7 zdO02>v!sSrWTN7WmA8z84||7ChO09Gs3)NnN~t&cXd-GrfD-n2&|gKdnO_(Rb(*aJyUu0V4fLGa5uv1tvSUac~JF|;QGC5ZJzr&KoH8ZYo;aZey}NaL7VC?WE_ zTc5!Fh)0A8qP$96189s?C^x~lLQMi zi-&4i;8;A7@1mwMYAQfqNF3XuCa%bAumY)(I5q7KIgFDN&*yH`gupMyMyItLLD+MS zWCmeR4od8>$Jik~7^x*>ceik%uo8HHyE+Yu6OvN)jsi>3$hb^y>QcW0wNf;Mjg*eC zkiqzlx+>S_IPD2+zb7e;Py)P?v$2sV%J}`9CZz^PaTSr39bnrFi`WeGv(&9mZqBH8n4()|(~@0@F}K5>cm-k0eA+qa`yc zrG8i#UOb3xT3lTmepsL!8L!R(AfLoPS~w;_pKXQ-H2_?LH_45rQ4_Z&E%dZAYC4jf zLM|JOoP&`QKm0K%keHq`rb|%MDNCdTVNZ65MB^PvjGo3)qM*B0Q3Rt#nv#&jY6;iK z?B@rm*{1QM8pjxiKP)hjjJL$|@GJQw-c-p)=!?xTpay{-(OBI3fZ+sgEgsYi2AUZ7 z5e-tl57N{ZiZhX1dl>13kzV5ZOQlP4aFi$6azx`xNnoU^4X}(fk`~;Qtx#YNeJ!^!F6y55C#np0*~DL zzOUY^I{&7oYS-!2tJhw=cb~nhEM?TtOQ-nL{wO}aAxQg*rCAdNGSjX@hQzoqA%>S6 zFK;~p>iExUKi+B%ds*$iQWWNFDTfLp6kIpH^8QSQ;?a!6aNMh=4Kj_lY6OVayQ5BX zDRO^Bq7T!{g72>HkRpN5NWg#BAl_{Ig{!ED;)bHjPR%(pnPw!eZWp4!K!-warg{%9I@4w8 z!mSnWR3}~Zt7nO)lb%qKAG+_(6t$XHynBKI;!O6d({35v5^M=^0&a=u-|@2~imaK^=Qdzhkn zOCOLP&YEKPuV6vU)WlJ}6VW5^d>Zr0UmQ(GhLRyDGTyHcaw| zIa$$*yZe8w@!&!Ck zlB1z6NXtbxiFe#EY@`$3mnVhss!c6TY0Rtm3X38kdfOO9kd!I6095yB`d5ym#BjG# z$|zAy%w%7xCfYR&@!4h%laiPB*M>Bj1O$}dw<6-CkVHwe-sCDXD=`M8ay~xH7mH6Y zG%<<9g*5D!_RJ9p4?kF$A#>Gdr3#Sxv6%c-A72Qk;@y?uJVEMDz5!J%3`>A;`!80C z#w6HQSZf|Dx33Gdfp!#6Y$Bt~`hLP1*eYI$sqm{80?pbH{hgpVF%C!hfCOb;at^0&I~Q!m5P3{Z*kQ<`?<<6-kJ z%%G-_SKC@f9N1k>>c?J^{_qbGc;>K$i5JMp1dt}mhs`D{WPir{?Z9A49=^~}B|I=2 zE`lLSL0ur%KK6FdmOq&`pCyrRcwf05-jMU>bfpl?OBhipy-Te4iJl>lb@a>v8uQn; zf|Qyzcg@Z4lsot9ja1Mtf3HB2vMG1OWS#;(vjgwP2g`Cb zk$acc9MA9QP#Rfr@+D3JkOf2LN`3Y$&elY(nrbUTQ=9ZO-V}o#MkqiQ$QuOL)h;@0 zj-K4?9is}>JFvC{e_>1R$A26%Pf1c)U`3ng@CWLq^IqX3tX}&iF8&fKrM}27v(vMu z6wLim6TGBpR3e$_D0Sue8x-{t>YpF>9G{0 zj|?6LTF7d_u{?aD+b2mb%Y$ih^dCT1fO8ctcHC| zR)QvFX~lu|dG%QWRIQk68K9uLfUEzF^YaNMmtxe%S-{xe7Ey8vf~kAou+6ywQW=b@ z3Ev`PqyUv%rVGiBY)hvE8cL3=w?zpRf)B9QPnb4cs|gw&^|i2Mm2$ciV_CJ#{0*GE zoNF@F?bf&RDMsZzMEvt*C8+kqom9=3*WW@{7?V^>DA{B#2pQpr3zL~Z8Sl+jpn%kX zt?jZDeZhOW1d+*RezlVv`JBI;ilM#%U8tsvGhQX^$OYm04li=521L`1B@f2ks88S| zO-a@fPYgVrEJoOauW(i&Aa&Z*v36-<8uBmJ>4_%11L)+61$(?}G1gQoz^{y>Xii3| zh8jKEJ91;NEeyt3E183w3C*?Z-vVcC^(wqa46s*qTR2g6 zOihz3{F-Kh`?N^<-9bsH6J-!RnYGtPE>eyq>7Y)p?W2&0#7;Zg_xUh&x!uRmoqw!F=>lwZzMph(ut+>rBro;EA ziGYVE9B7e1WF%FX%HAPoPnd0e^3P(@7Vewa^%s&-F8ZmkMWSS!Nk0YW5RhV(tZkUr zvo)-F#|4Uum&&eVBY|mn3kG)#7zWfa$-L$XG*ZjaGO12d)YyttIvAq#ON~7Dc{;rd zt3PE{-HQhJi8U0jWe92;mNdF4#&K$|LTN}ReBqG2>h3C%M5tHJTxB#`(WvH%OIk67 zYiTP0S8(F)|~G_n+xoxm3%10za+m0v|v>#?VB5rk@1&BH|1o)#pG`dduW;&pCpZ?b{_ zo?h0gosGRZM7b|6q<6U0yP!`rYVtRkQ|?3x;VH@ixv1jlE~9MqX*zyOmwqwaUzo8e zXHvKBpPi>%sN{52wyVV^L_oCgAb3)pHEAe^?^Y*w)r;F;ZwRoapHiSY!Ri}cL=?Gz zca(}lNU&BY|Fbbt^E$(aNl8%M4Np~7O6$mw z(=PI@F5!in#*-ot%S_Jv08*zT3vg)piBf-6l)_^*@u7gaaXjb|@#2J_!M|PXKBYX! zRxqo_fyNgBLVrcOxU47hw!W8!K${R;k&o#DH1ojFj4ZX3X_rZ+b3t>$B8jhL50A~q~YBxcA?3#bmd7JcD! zro4>5f0!ngb;cnHV$23A_$LhP)UiBDmch8l*;6($vW=wuMM<`*V^P2uY#yoftQSv4 zrbhm2;e)WaP#DCy6-$lNk(OS+Gv~Xr#=16>4>`(;j+KXFUp4prgR(JK2D2Wi!w?hU zNpxsYOsV(yof;;`S}q9jSFEMnFI1OSHua1z{kx1tLhLvYa_C(a^CR^ra_&o3S9NAS zTKA^4mM*ZXoxiFZX>k$JAs*#-xe^%$6N67z1^fIho)uw03!4nSM1zwR&?m$3$zy09 zL?>MS4wdWIZ3_PY(?rpFx{_P*&+pg-Su8S=ilunz3IRa}-jt=c3<^6GqvW)pATrh? za)Hi8`XY*1@3*Isqkj0z%C%f(e|fDrhb+2 zo^zw{U>-!-x{)dvwBN}JYUv_dO+-c+v-ZQ=9P zSb9uat3k{n2dN{~5ejS;#ck9fEF18(JML5uoI{8xkuc8Rw*ARVxx<~l>yfr(FQ!j= zkK~I0O^3zDO}=oc9PgnVg0;(UxyRPXSkeA$fh_c zsz3*(^nN<9z{2dspR-eh0@+U!Ij0U7+cZMdXq!2Dkx5Nw{aV&`dZ?;G*m7p|Xlaq& zDW34Ow4y6=eb5_y# zKjC>ao@nl`!ZpMjb2&ia?~7o(-6anxy@LT1MtALGI*!dNX^G&M(*PByR6L{NQvcP> zB*!)VA!!a`&bbXKF%nVE9+AmvY)Gk!K`3}5HUeu+0wE9ueS;P)U$;e`3L4vx;{?L7 zhDm8N6y%16^M$%g(?Z7YX)H;oTmpGhkoOgF8<4!y&K~y7Au%Df#gd7h`wogIv(Yi~ zB1mlU&p5l1gRt`fWdQHJy62gb`{ajx2EX9<%CX1Dtvp%)K_!EmM|@jq#h5xc%vm7f zTo9EQ3x|XUH*r-pnu3p13vgkZZ^^C*YuU-fgX;UWzkOo4|p?8!Ym#=klNYFb(Ju)!Z!czPa{H3Fb zX=RledA*cihxy9UKmCTg(+`^vk}jX$U8d2~pg5;)FhX{{U2?z-SM9Wamn{Ik`b>#E7=lf#Ipbc2<&qdg~6)2J1smYu0i_iAyjaI@&N1Q(j<=#$J8 zB>x@&GyWCAJ@O0>$kuJ!mP%*Ml_2+VEo<|a{@Uk4p73Zmg-A=Q$-J1>a$hsrDECT3 zMhvh<8$E*M9_#=9fy+gQl%Ddpm!%JlA8Z&w8L!ihv;$o;N%#<(68>eeMdUe!mj0== z|9dtbMt3hCy-`=jCn8;6&Id95t$4)YNTVVVx?RY~kv#X& zKb7VI7W~GAG>GD%aqJewoDV0vcFdSPTn`|e&x39;Judgjwn-eywx~M{#LBj-BwUFz zLjuI|y@W#J7mawp!h^YS0U=4~7IaA$|9Ix(?c=h~N>IwK#FhcLiMi^~wwtQwoj;=1^P;^R*peK#KZ-01G*t8iu>~ zUc>suC6}|1h-_N;(#*pWmoTTn%SjSgZVWuMl7YiZ*^N_;T`LdY5l9rq$e9Ds-sCdC z5{5-uU6Q~jHHM&CdtDW6sd@NrDct>%f0+kRkg$;6q!p*Gepw7Rqq*nC%J(< zHbUR`ad3>DTLcOI5=3K>5WJHX+o51RfWnQ*4X>UQdfq(HZP$cxV!BS}?!d%_ajH8h z@r%Bi!9?@&s$3wLN?ih2E)<=B$NL(o2!Fo(Q-$RJ{Er1C0Piqu06K)Y0mrz+j z=A||9Jm4CyWg+4!jzDGFrva4BLeV{Ng1!crKr_4;kE>0LP@LH!NyLw4K%)pwJ`uPV z04L-#lB^FB2v0f16k6MAkSu%P`P7jh@7Hane*nNi8=$1NJNSo`eq_y&C4q;!9U?dX z)W%_=NRV`p3Gc!B)ojn$Hm|ZAH>SSVzTej?V-l9lUpU+BI2)J{E=(tf?|-8$1h4tg zl^M#XBqkH4^y%gPes{)vv=);_oSBIs`XbaP|83LcKq`tp8rjMOcOIo5#z`*v5O+m! z#sC=H%}b@aK(YZXx2@UQ9{QG(?`B+c>IWw~!`@xMLiaWIiK*4$Sb1@v9*e-;guI6fO_AZ0RJQ22b$F<( zLLjx^fZF*uC^gf}kd2~zYY{+AkMW7NJ~P~jrjNI;1%Ra-U63I-e6y@z2J0X3avJ-h+d1oGDlEuR z_>vbSX~BG)QaT05{?kNcZoWkySb*g6udZv!XCvZ&nEdovi43t_KYXhFR72X^K03fE zzRSwp%o@Uqz!N!X`iym^1xjf0L>W#evd@tz|4A$-MmNuh`}blH<|acxq)+$T-*-o< zQI%C{6iK{dh37*soS%#FGmP9gw2<$;FsoC&n(ECQtdvxKn#USDgc!l+I$2scU_1!< zqDf0}p^K44dWWJ4M*k>`rst}kB>7Qu6-V~joa%qLLm)Fx4lq}TrgiH{r7y@mt-b%d z2hToAlk5sjO0IiasJk zvMb<)lqH&@tGJY2Kb?F7BqR`zwe7Mb?%%Xa*H3e8!fVgiOf$Lbe- zX%ijeVO$007Grj~lI6FXt$r3gJc=T&Qt<;OB-iQnnE>Aozh68DilbjX!9de8Cb=qZJA5p)f?uePC&%;MD#yFHgS2C-rC- ze?5a!VuUHTuGShw|q{7b|qd?>zW)xl@dd<`kDElvR#0%=X3dXOr#k|rBlKl2?%oiCbQCe^(sRh*QA(I_qa&MxHZCbj9h{tFd&qR|Y4`><2o*q3{Y zy+w*BK$k;j?_~F>cLA94QE#7;?tI7`+lG75O^FriSx#|&oFq|GhTCzcESQarQ=cM> z+llPHh(KtrALa8hERCzKae-a9{o|1J3Ue4o=NqOgCL}7aXdUsx0iUhrGZE_C2P4d0 z&E)V*+VXi=@Eeu*NG5U_Bzsk0^&;Yzk?=UtiL}zwL>te96_C?hgn^iDKzX4R@`N|< z#lp>ehNq=Pov9p(Qmuvru0LO62koT+ek9R50iEkz57Z}wIZ<#$)O>8^BrzY;uDfum z9N<3q;2AjKK4QzZz*3;S$CfSjBZa#>-ws*-h-VmiEEe8(2#djaB$n2Vcg(lG+f1bB z=z=9hjpz(64Pg<}FyBXIhJ1arq^6|UJd$?PR$79RPgAR5Ygr4T^z zlfZc|wG_JR-96QZ7!s7d4#rn~2=Vz8Jt+m+ku)8^6f-s$m_rdqd2(cjCGWyV^U1IU zxpO0{Wnz;K{lQI!NsS0vpj0T9&UX16Cr*SX5=!>#%DQH#Q24VBCK8dTRu3m&>OAI$ zwFq8C#Z|OoY>0_@6jsD*m(v*SL193~_u9-UI#^oozmb8@+rY_=KQjDN;rH+@Kq!(j zlNiy4>JvS`n6K(of>Ym%+{Zx!C{)e2CC#wO+ z8dz5OjhmGB^aIas*EI}-A7uVQLZ?)`A9UX&36_6Q5da2stMi-=7y38&MB5ivZyn8! zLHJej(YsOYKf%5o?Rbu@(qCr3bzL@l7|f|hz8ENzV=6IW`nrz*eBGng3jC^1dKHWh zeFH{x90u0jOeAym)9~jm2)GJ{GL#_pMX+6vE%yXo@fXm-P=V2Z)P5j2_;Q;-1VTUP zOq}KqshR~cPR++v*hOLe0|h4e`&|N&aLFhNms;hkuH@LL?^1Bu)CrMTt2*RgIa_O=B-@q2 ze??yRB-3le7i8etM!;TcHJ(y(!Kxk}FaX@Iw{082KVrm^Ra*u}9-G*lq7t#&B9av@+p9hinGbVX`+3koUnmfK6qT!s6{CEI=yx9ONlf^ID z;Ez7gTX=sANJbbS`K%i;IwfC$UZg+zNHW{Ke5SdNiE4k5dpA!}a73D^z2s3?t`^G%rc)_HNF|B7e__*CNe z;-;eDg#@Sd3A~vb6bWPD#9X3UB2rxO&szcb*0^AR&qp6P?m>uz|Lo8y2@=^#0%`UK z%tzWpYZ3`aOcgqJ4qbsxn_}u@)T)KjhRTpFp+iJAJ|f_2J$WSd?f zqG`zHD*g;z!(yTV6NDuXyMT z@?|ts4cY8%uRR!aba2Sd}_emqIi5fc7w?oe>kC<9i zNWBHM(9=sk)m>gk%Bzb{b1mEu}^z%P60`Az7$BAvo4QXDXX_Fm)m zxSQ=~Y20TDeLAGw!aOGs1wt@qTxR5>8XvtxqHBxj7)yUKonlT9SG)Rjy#TTwM&QiAxdl6%BKzc!j z`FQ99BaausF|w7up%@{?p_m*gQ+yTe@{KTXI5z~I zW>^y6MCd%h*DXpH4=ax9)6Amx-hIkNkICUqoEA|C8HSO_-RpdE=z|Ca(gDYoaAmaF zhx0JZC{0onZ(&Qwen|P)Ef*&>C1qeIk!1GI`D!+rip##YJ7s_-+5((*JdVV13cah z{uM-iwYGkql70^Z9k#R2zOYt@J5WI|c~HRNl!NJNMl``CCLbh-2-=JAU`|j`3F$)p z#zXkSduNSyEioU`krnMr4+n~IJ}5{w2&Y4wqY9UbVPVDu#yYuFSQYt*hiFT^OYLIz z^eLTM!cbRHmOuzGvfh4nBM3SuqWBH}rQ`$Vc>s2d1LDUQfVKfE_k{`I2evB2)WfZE z)Vb2Ph3zUww7gQjkXch4MjBHesLR%u z@N=p+enVR5MuxGVNmRuf{P>~M!x~Pd&ox3;u1`j!F!=bx2NsKo4S$Na?(n-rLt!0* zu|$PMCEF~Rge^}VFT};{CGTHHG|keJ=xM_dH zvb791Zs3=is>stpm(CD;&+)Hak^>yN$95}XWY|?O!4>hHurC|!Pw+?v-3XQoG9{u1 zeBT|+OMiG@RCfnU$QYmE8nyj^EXAk%byqtt<*M@a4q5BfT9_f>;}~=4ce42V3BD%p zca;eCSq#rN2cm&<#ZoYYrEQDwH~Hr(!Fl0D7i}pRykgakcM<)@xQ|i8u)pA6yOmG% zNOGD)8-~~draj(laitDN`mP(=639Obl=;m9HMG-$nU-QoANs0foy){I(zpeKOw)3U z=*_^$2|yIk%W|Fo?{r1Uhawq^NCXT1PJreX&$LsFwzX)-gpDr-`}u}A)Jl@(7dM=^ z$fu6h?KZI^F0r}Z-knps-detkW;lr+yf^P;bNZIJGkmg%y;gm=kmzcbL_?^p$##`3 zoOaOvhMG})7U@>&y{u1&_TfGvd%q#RPHNYeoX%$ZwhxMyFCkVFIb@>o#+SUwth$nq z-3Yo8h@%1jwik+cUR5N+e3fsuR-jokY(b$Lm*UYd4n7e)&Xqr00Y4{H;1G_5H~JY{ zw&Vq?3-f*PA23XBMf!QX%omo9w0yLX-=o%agm8`4fVmI2A&vQot6}-R<5Norpd_9n zCbe&L@8PJYBSQ3%K9)s&m%MIyqycy1ERvXLeBt{C3(hlPoUa+X6iychpJ?s<JpHUW^uVexJE?1-|+nkOGa~jonrl?>A_H6IYM<%3n{{T!s~IntO2`1 zCwMe*w>JBHyF%c=&KsaoqEKPY;}@t9{{sy0VHpJmdK7WtV*Aq`yN5gG)8HP=@35fl za*x^sl~v%vw*%*s?#uIZrxi7qV`Z6s>X61&y|*q}>suEsH{z{}=85RWUp)n5^}LP| zEJ3B*3lEZQg~j?`Y&^IUjXMkPUz+5&_vVd~3-XU~C0j8im|rTC&3LtxtB)%S=g_u^pixx3M~HV&9)IBKdqZhBZvAE)H%EZs@Hm;r8QDo#|Ed;&=s zs%anVirq85jDkuz?`kn%K(+a929w3^vCA*}FgOGI;)&$U>Xr`rHQ z5i7w95j{PL;BJ4xs$*og+^Vpl-PPh-i8xq^+Oy*#Pl`wHB$bVXs^>wJ^I8N#xehK z-*=Lk!VLgS1QH4&^t4g4q13z!fmC@Vps9%iKKJJe?JAQa_l&SpbAnCVK^;{G} z%5m;K5z0mro73J7R?$NdRW82JW~nV6qJUDZSf8(|MT3~WQ$mS%Y--))hGe9hw0P&`)FRY|P z0U}sl;I7pGZwRaBf^#7WOFfC*;YS!KZy!%?UW7uHd!Dk5H=aQ`%F{=Bk1zTGolY#S za^9PKUmRJ7qR?CE1f8_HH;i6Guzr&?^q{uRJ_=mOejP$v#N8v$4l7H_^_i>KoyEP6 zQyr<%(S|I%9Bzi~?Uo2FABdvRQS#`)lr!0d$^T{P>%smJw*ChK0W1|Bb#01g^8@uU zQbR{HR_RnKisz6@6PpVDeZ@|;dv!AH zRCzJTn5&8jgg(i`arfyAPxKc0=Jy>}4rvS+95y@k7l|~} zPvj&2YW%d5c|9GyP2T!ANJmnT?}L(|elk}{ps3vJi8MFT?@iLbV z1fJe03KvgFvz#=MH@@n@`s`Y6s6LH*yddX+r9e*qX)g#dmhUCz6UxOH_}7(2rg8~0 zVN)GYP|WNAJ}Y>+>zCOx4Jq+|!cE=E2?`OJh*NjXL}hTsm47v{i~u_iDPPoor=s4~ zd3dh%9FLlgsOmseLr9y}wuMqtUq?y&x^3^60O?VQn^W^z?!BaqbFGDyoD{ZwDobPLOvS&r z`jL%3Dn#@wK;a(>C5kCOoqn2JT8tuXb}i3|$>W8>&`|p>Z}JIrV$6I9bKh9q>;SZY znvmp*Xt%p zu=(8{3`lSahksOMzI!h0drAn}V=QK+{L=~N=%C2cM4+?WCY?A-@YqLN)Msu0hbm-e z1mJovb!=c{W%ZHtx{6h7*s$i^cA((XF}C!qgJYayt%^qsO69<@S-rB@M>dIeRu`&l zy8^W@)=-R;9ijciR2=o3mP`xkeym;4X6iDqjNdqRM>t2#4#jElLU7YAX~sAD=**Io z>0<7G6TaX6-F7k+%?#DL;&Cc!i+6tkw%jZ3OL+P|-3=TZox@xZ3dI|!h^ z@?Yl9yk$N!yt7l2+ra3JE^}2dlj0iyAjpcfdNfMY?#xWC?#4IF*ujEQ7vwPO*yG<>3MzvyYej<4^ZIA1XW{z2eG$?Tav2C!G?oi!IbwTs;t=dQ>z zhF#oJ@#f(7i~-nS5!tcu#TBClDpXFu%A%{;j-et#_=S5cc*#iOi7#J<<|fzOhVE>s zzYc|K@7^>n(~|QMl&s^wQ9Yk}M*j+YiW$y<+Pi;TZ&?y44oz*eAJL zK*4kB&i5j08w@A?#TmYf6UHw~>l6?YrD1Wa{s>D_jfL~OP$hGm3|IEG>^oIH%aDRm z+o-w~P+%Fj3kWYne<>k9Red~k_&Jzp(6ulnGlMDs5XKaB{D_vf0e9Td_l4Ez<0QOc z;$850-5gInz?F_ksn~?cH4*WgE~{Oy_$*3{qH2)Ke;&Y;*D%Ew6Bu&*U<3=n3DKUf zbMj(ey9^gxJ_d+EaRa?DbW^OXphRD`-eS4rUYn`{zEj%#j4GV{1%;u;f~*=Adr?%rpnih zqjnySPf1}bGcRto-n{P-K_8Wb1Okc@`hP!3x=9TNA&Fsip-Ry@Yqq@Li!bZUQD+rC z^sx%%lxh4(jT5YP*9ax`^@dRom0N_a0@KX}o+i%NSeMZQHbb2W1r zKp_j5!wg%XL~-LG$r`xsEqlbM%X)K5n^FY&Xs65zH4H8gGo9a>PH7^oGDu$r?*fNv zyK?&&{pFr8AkGBRgTzwUXOu>JpQm!>6!Ak;GEj4L@JshZ@S28)=EYYCeTl%0KmDp- zrOLGXZyNRJE*%N_C#j+o=ss7CLn2&naFs_2zTguWMbY$8zg7Jzj0!>9=U+~Yh{@xO zkX;-9ZpsiPZ>oDkZXuCF+)V2<2;u z^Y1u9J2(!%ufZ+b*8rY~6vKlA(p^tKMSNe+<(>j|t z-QnjLC~$(WB4dJ5N^zyTyd_QR%sn-4Jg{z|m|UJec9qd$dxy-<5;iMy0rPy?MM!LF zR^39D%JrGMIE@8`i&s?u#fp<@MjJNwjRs7uP()?LTtIqJ`S0Yp4XfSZorT;9=J${U(Tr zZ_8K14d|7N)9^ASPOP8dFQp{aB;yOZ!aBmE4gT(eM6zIb$mZ?k~;RXze#gNgY)oZU#baPyqOn0!KFUx9()rnjPlxkUFb zYCdxPSxF?8r>${ueKv0v+8VqQI!0fa-(>TGe8GQ<+&j+2mI#fV;KqRp3J;oo|O^Wv0B8O1NqaZdbSNh7BU8@M+4d9yZlNE5;=!t&29NdG$8 z&PJVLtd%}i!Idx}jv~SiM5Ng#gF0<@f-+usO&~lwr{BEvq|j0?StGI*jy-2eg^oK- zu_y~0zA^4hfrcA*99@=+J7r4cs$IZ6*VE_E;Yp#C+_o9v6Ety-ofUj%d@Z_Y2aqI< zCu|CsboB=XJ?pR(gT{u7Il3^R<$sxsI}lk08J;Sw^~?iw()i1;nTkYXUlfH~#rCN4 z2~Mxlvg0EiYGXa-bO#_f;j=ObzyI5EIc!NtVVylKYtuT-XJ#i~jSCe`X1yqUJ4a+K&FM_{?Nc%g=>^(FiX_uZ#{ z2v*a>d`-KPn#sq@%Nsy3V#XNw9p^uwY|)MIwhUXo)j+0dGVudp$@a-c`5+P>(SkeX zPrGe6%VSA%FX2FO3nLSB_Nq-1*g|T~^L-mD%s{CJOKRjy<97GYFAw`&i0RvOUZgGj5a?S!0eNT4Mb`uS~ zK2(7*{)O>+iYGeB!?f)9#PWkvnKXre2o!ICpC-M6@tA!@wGfxQIc(2i)y4trRDt>5 z-#X4bkP70ZqjOL`Ksaw_-_;cBN2BbK5Ux28|9BxO7|;{0y^QLYPmYP=WA2L2;9LGw4vdvC_tzo zk=*7X7uegVH}j+Wcn3pJ|uBwrWeVZ zt%!~`RGr{4I3vFqJ6IoSyTs~y7Lj6fQ);zJ<>wp}GoV4@vsC4=Bv)zil; zPYtq!39VZA06RnFc>qrXKfLjro5Mj@icZpin0Xw_sFkvNKAPCMcUz2@hEYHu1z%`I zXzrfe2NL8LDh3h6VGn%=^NS5B^Oy&Xs0?^S@P`%JxA7$%5~OYKgu`>ns0m5mYgv&l zEK%0&gLaA1>h%3d6f+2DnoW0?tZ3~%VA3MJ7Vt4HTIgAjpClK#QalI?%lIScx3qaj zX>D{OP?NFiKK%_TT9`q85e)7sBFniOQ(bx0+%xLhfl9J&;``?nMIukAc3ykmuQ+W; zfnSJS@=D9aq|?Hr77Z9$GgA}$gDP{?*=Ae#INc^Bpq&o!${OXvDFy4qj63Mt0=3uE zXE9ztW>hGw_Hua91X3_>zI_QgS-H4y(Yri<%5ryc1{uKy;8iREQjp3+Na+9w_X)O` zl&g#ZH$9L!D}BJyc1oSG=VL6Lw-mVm;qyFYcONXnr6GWCk0mXDLb;R_wM>CRgygF1 z_Fx7{S16mRRp0EVhY?fY;*D=-1j3tQc1$2sFAdu7G+ZVxzf5TLi%ima>|q}yA5g?8 zVgmZ~fFV)v$&vsGd65$Wz0j-&OuGDoac>&(mi+LQ_jDQ4^%$?u z#(&)BXrIL#E}l3aG9iG)MmcgqOfp~*xeE+w;zQU4UIX2B&mR;G^2a}6FnE)_cPKi| zB4SHBgoEEOz)Kv0FDk?47etJqNt5$Slm$Jm{i8dAW~6j}R^~U6kke$ur$0p9iC?$# zg9&U&`y2VuVP1V#;2@{Lj_*kiw#%c(lf)=;yfD{cfs#z2ub+%U|0Y;V4Gm#}Z2e2W zf(3!i!1SVVvEc2A^@x$-MeLrrrdiBEW}q_xF>+8C)T7VFI|Mi@ixbG;*9R(75k|g{ zi0Y%8mcd==lnbDEsBg(kE) z+`bq1qNp7XBC_%)a0Jj+D9AU`kwCp@UpV>2G;J zjvipsIij#YmkO?%>!~!`hhDQHk|0G9V`ym?eH9-jOSxeUK)-V|37Ax8S}kY_y*RC$ zBN3R-Mq)=ceIySY{`j!Zq}Lx4%lo#=k4RD1Y3Zj&4l*bGgOqVjve=?A{*sO{sY2j1 zAZ4o8W^o$90T=a0J&d@w`LDLRDACJf8edCJ`Owe$>|8aKQU`b&=ml&az1+X0L3znQ z9T33K4yFGeaig2rBHq{6gGYG%mq(_U{#Na*ph982muk|gzXyrsf8f`&DDIzi9>qhp z`~0XlP3**VyuZ`YLJ~r36;v&u*59}u62}1FmH=PaueNFiw`yAdpJ#9@Hl6DI;w;>} z^mV(0>#w>o=e%dn!TE8FC@-HsM7O9whe=kK%nS=%1|$gPUzqt{dbfP7*cUL}SWw*? zzA*awXzzfPkvR|&`@BH1?bQ)_nE>~U?b)^T37&~W_eQAgN&mMM#2q_cc7sT!W+t5~ z59P3O17al;l%El&?uBRpi9KH|p&2PZu)NvOyE*r6%%N10Zr&FBt%U}PV~i0wwng4K zb#pl?ecUA@+3I~H((3omaKE1i?w{S9F?O5uTaFv6MF|7lfOb&V-if|lml(5h=)vmT ze_vnNTfs*Q7oYRMQwXfaG+p(;V-Q1(RS&6^rL(M*uuq#A?7cZD{mv_KXW{I+%0G3SE~9L z@cA*_8IelwditwnKA0`Uz-;=e|RTruI#x_xt878~DQ#e{7$l`se$j zv>m>K+dH2ALinWl4_(%ih~rFS2EJ~bZy^r41*r2YqsSQ~M(TC2muip>vf)BnTNdjK`{ zJz>Kt2q;~84NZ_@=%J%@kR~ck>Akm50t66{&_O|ZQ>yeTy@e_zp-Ha^2+~6j)i=NY z`_4Dt%#+Ev$(?i0+`DIYpFQX9o_J(U&w)L5PvxfkLozyLoG;QGk28}Om&gJBx^8X4 z%g(xYhWe#Z*jN3|hDGR~Oyqs~e5}n!FQIxqixPSJk=OINH=AfHV_7Ogf5@7nQac|W zZ&k~IxS{j8RM*i_-^Ee;=CvYMhtBH28Mx;6fmLn)>0>!4R{;d!yiF7GKlpJ5KNWgm zd{WAPiRz`?94fJ2@)uHc^d!fS|?C^AZp($+E7% z=6(6xpI0DQ&f-D6zed8W{PNM}g@$f*&p2pm?#5^S#@O-h{5L4vH4EN|u*eGh%(gtM zwM;j6aM&BfSshgH_Dc1h`9u@xl^JLsp;X^j>@GPUM;_b#`E!B;t#`bw<9C!6IhE(;~Az)0QrLhb9#w!_4C zBO|Ukiz^@qjNBaLO?!0ol@u@x%bf)62Zh^X_s`}U+_A_jqp_vc99^YoJp2R zzM<1`74zM7qw*TPBr!EDfgUf3wR0&1yNo9yehk2_GM2}XXbJaCkE`(a!^_SWwou0) z|LIv*ycJW-hUUAKzdze2oHKi-+^caJU8W9Bv z-ABVNe=K#X_0&OuaLW0DNzfB*$_|hOpw;!;t#0Nq#PvX){MruNxM>boyMUMIqEAb# zt^lUaby&mEYKIxdK-W&22~&~&4yNY(K}`u&1*hW@=FRSz3wX(wGY?jBIha0>sMDm7+1os%c|#0hmVF~L(5xXl}v~F zL#iIC^9_D;~nDa9IKg5?@SW6L1Uz;+twKeuhag_--L&43cN~7wY6+SC@3r% z#hG2((adq|X5k_3Jm@l}WS8yc*_y;>Bub)|U#OgRkKpw5eq-*{fI0NmMdoG`WxYN0 z@X#M`1&Sfv@8z*`k#r>fer+ERv|cZ@Kcyxr;ZUr5lXQ6iNH{~F=J+AQ!Qiv3pf3$_ zZrIdi%=5O|+C5zDD-$t0IO%FVL#Mqcbj%LxyMWnmKwXRXUO2-JXGvD889L2Hpc6NwE1D##={yT;p&XfG#zD&jj&=_;qvHqwZY-s8WDN*7@EOV;el2ied741uhi~3b(^L?4WvQ zNvFzQR8Qx1`C<`6DwB2p5RH}!C&uGf1W>HfZMx3w$iQ}(1OVELMb%rl6xv~LSUM{b zb~sm~cG82dPbWr6Gq=g71&{&Q>U6V-#q-_o8o)uX;oy2mw(!%5Yb7cUJk-T+sf! z%9KR=w!E;l(ly4|v0UKVEQe4&2-Bh<8YDJlfAd~@-fzupqGI~%?eteu>lx>BmB|fL zP+LpLp>cnZIoh(;r>14Vdt4p-;(bzLkqyA)f7%D{=TG(nc(mFp8PI;O%2Y1YKZp_i z@nX;V&^CNv%X*dK#Z7Gj>7wiN=q_tl;0ZGZCr3;IQ#ssiF6DLe)qShgHudJwAiMs_isx?bcWOk+L@9lnR0N{Kr}C zYmbcAWL;91vd@^1X$V8jlf_-T8u9CWSG-kUOx9uJLDL1I@RSsA1tSmQe2c?!9?e;$ zoYw%VfPqQmKXVG&_xVrV{{>!xMft&;_285Fmdicw7CU=9vwFcSU(i}3`9-*G0-PH>BYTUNGGyUv(#5t7cUe9Ej^T zOT_})@ob{e5fFSmx5m)#-n6~)$=pCtVwlh4uM={6^;G-CIovsI-OX=wYun7H&0(jw zHT1$wkZ=R*VF4&fque6d5AVnD_jLk-L*Qlt@S>1XM+7~bX@&*$h30}yZY}j zx&xT*GuTdbQf8yZuv$RBP1scnTwcN?OMZ6diI&^in?-#8w*5Lszo#CRaBU&Kk-KQE z69BQ;KToZZV0H6F*-XzxoY7~3lmev!QYS%UcCr}K)J^MBrahn!Pfc5_M*PI=FT@DM477P{@|v2 z2yTRqQwO>&&p}7-4GWu&I#d_wQ;v=O+y}(sCB{&P4~|(4_YfhW>tToEVszSPwTrK) zE_!}BpU+PQEiIQ6`sHCz)(r9yy?M>TK^s$fu~H_OpO5=G5*+R{=}V++yXFUT$h+nN zo$T}NGDi!xKigoY^H@+8Atxe)0WEG1h|Tb|U0=ZJtsoMQ&ohI#5cV&fgX2I5IK;vMPaTza_^Or^Tj zcyY0lVm=*o@_&&?p2_5f62ESC1;vhk=ORTWz}Wgoi^|5Cb-F!U;*m6eTQuu>t6{fCI^gQ2&JLiWFh&Hf_K(eg<9sS zTd?QgW{1?G`I~IP%F8U56A9xNY!^O-QnrBi(7!m@2@?gjjW!y`S@#-P&we2HbZ=TwIqmkZ|+A9>O)QNsr5+#pkosSx**-|a9wD_ zxo6{X4UVf?t2m1$kmc+5&N(zbUQhzmxip9M>Xop$?Z$Pa8t_B_u%jD7gKe3Imvn_+ z&;DSgrNXvIv1DXTec8@Sz+Pk^x|&WiB{(Ywi#tpm%npBM<&nzknDPqVJofS8dG;|d^jwSm0Lbo&A`QYB~HW-kzk=ye4SPTyp{pAARK^E$l` zTw5lrcAV-|FwfGoS^f?HLKZQ#KXEb{^y21nH%spf@#9L>?LW+|W#ClRxKz?eZmls{ zfy;u#h$Z$|qV;-un@UtdHjBw>6PDhRv53QVwYCiD-$-Zc<~8|%w;zEwr_C0d9g&-+ zN*%2H-Y;_J^-YF1HvVfq^4G0$Jy7uL@^3~IUnK?pSQF=Q_Dy`WbdGBJPxpOY<*tTY zP(`(^EkCTr-Gwi+n^Q&-zaq(3pgN$CvJWTUZ{5p0e@keLwBR~Sj3$OBhx&~^1r`J6rw>OoxF71xNk4>?rwDbv;|W#Zt%Vw z*vlUVZ=Q4xL06Ikp=iq^6>r|T4c4y^1a6n(m3T`ebME8c495q}u|EU-SmdtH%4Nlz z_FMPS`D6WRf=qlWIFEm-ll?7T=h8W8`&Bq=&d=7~vR?OGxBBh2J%CT^J`+dV*m|de zC`dLvGS<$`=tYoI#f+0*Rc9>u9Wbprk)`8&uVD38h9xdtp5Q?=Y|5o)U(Bz`7`haY zjhjE}qv~@TP6xqNb|o!Wh3T?xVQp=B74r|Pg9BH`SNc_6KsnSdYU5B%x_Q`b>pc0? zpW4*s0TPbc%f5c{0yhY}u}I?Jp=ExooubQg@zqgRH~n8LH)WrL-Ud}&Pj9tvZd;ei z$J-f+ugaWOzYhTK%KE-ocDQh7lx_UWGib-d6ij)2z@zbyH#+)?XB=MY0A&GHM?8#)hobVpjMMyn?rzSRwTLH4P`tcs#y1G>9c&$Ui~E^ zYbbrn)m&x=Q}D6leB(*ip2|OwZ!(eB{qC$Ydy64cs~i&ccVx}`U#3<$Z?irg051Lh z{aSUb>Mt2T|D|p7Ieg&!SIazSN#MmF@oTU!)QvRnxwWXuR0-6LUMP~V6ZC7_{c~2q z)d65y1~J4kvA|l=C5J?uH%s{gBKf!1F$GP7C|XIMnrFghVBar)?L=-&3dkC;pJK6} zcJ0uX+w!y_vi&?o-Z<{0Uab4QRi7;Ny~Ns`+V0#(_s)fzYEYi3D;6Q&c4Y@_9UC~{ z1avl#-J;=U~ z6ZYf<$+cFcmbGPfK_rlt*^UV51m%6`sBms!t5|696TGDP;oX6%@SUlCS ziL<4g;tC7DkxXbaJP2aS74)X>j2w2tYI?J|BjE?QzzzkNecr|9s+c&@m33i6Pmc+!(d!G3V>`Zj;~cJj>^teK&Ke!_XvDUHpzCes_{lH%1}tLQ_VUd>deuEndq&S*E@S@1O+^7~<{q&b z5~qQT31`f1l3ANN+!i8Nfy9Zh9Uz#O6y&3M;G%xnnQ#Swx zm_UiU7Z=dcL9tMVtox)PFHbNy@_Myok(VWvlQo}y;8J00e3P78`{j=E&I(Hr;a-t%Z!5%U8iTA z(#x9x&45ZK+TWzYKQFDznC?6NXXM{e0fNfqv9L_g5-!Sf;}dch;8p7#a@G0|QEQ2r zQ@@!bar90b@W=k$f*nqoKLRWLS$Zv%B{R1jyWy?k#o&qPqW4%VPaH4@T$-LpZ3!c) z+xNbW$w#IcZxXIIXTB-j?o3_@a$nL7b3|=;dD2JMN}ZJtkCesRw?$@xmXEV1xPeYEvd)H?vdR4jG`&l)M; z)K%7%KkmGAxGw{c#2#MGH@F zSsVhN`zwu{epyr~oXy4gySHT~B-hg1yz<0-faKC8?TSJ?vm{NeAtnLasROFFnYw{T z4CVs_*WUJRZpzhH90oy*&L>%Ix|+-5a|zmk$HwDz*Yl0WpvqQjCxpGi;xDHc&{Mg~ z-+tx>ZCC`89!pk=5U4!RrO*YdMUQYl07eelJt*mVxd{^mi|W;59iWpq!8)BCWX^Ke zX$o>x=zZbfKP~3$9Kas5>>3~ceLv`@>snBTN#GJU(Og8DcHn%&tajik)bDD4-dx7H z7i#B2&Wb##8S6!C5si0e>+#n z^9G3)b}}TD2@u|5Gyv1?D;QIsm|1xVWgWon(ziSyr>lP;;%;NUHTzEVVfFk!J1?Fw zH-^Rsske0Z%-SA>&gR~ncZMFyw{Htn%ei8HRAuz*`U%HguMIh`Sm@RN#=H0ui$(Oi zSKUcWlX-WKkhNc~O%Yb#Md66J-E@f8A-g*h=o}X_0^4De3paaC57pZ@NuN*s+hk_) z$V+Tg8AF@tArYE4E&lIc+?Jeyspv(@yCn2O+{^BWWt)QV%%P{n(q(~XTUOgZ$nwWo zQml8D_Vdd>6?cZ7Ta)}62{v2*yk_-2p4cY7f4o30#PpmoT(y8l?d|K*GCfmKPKCe! zfIM<$7gv66YJA{tD%|MY8c8w6cva4vLY^+q7>lZL#&iO5t#HC(IL^$=8p+0XKMWEH z%BM*Tb;NXw^>vFuEYMBQC^g~5GOERJ{>q_?w&&P(r!U+C_ruSk!*9hhsQiq^Zv*JpT=Wc|4vXbj&J-~@twc-* z3i(^TB|mRtXLcc?qv!TevnAMdVCsEHYC(gr-J1e6tJ*o-vj&`z4t0D(1EIgOy64rx z17E&NwcC2E_fIHPrpdu$s^~AnP^yMo;a-@^vpmI1>LAYW*#1t>I3~0nz`?&zi6>Ha zfT1_u2v8#3AXACP@%9HUZB*tQ{<(G1^+eV?DV0Qc1?0PK|jVBAK&JtMJkA0QGgg!L@); zkgE6smJD%Kgc6yIOU&5mGE&g)1qO6CCrK2pMmkXg!tChRubVYa4I(5LyCq=rV(|Tj zL~bLy$FWa$lT4!sV|n1B!JMO=VtC@wv+*bnS@-uJ-5IUgfy_@tshi-fr^pLD86;}Ip>fII} znL@dlMRE8~r||xq`Rnf+lDa@snKMO2tj9Q6Fq6 ze9r;tRt_KhL#9#Wdz+wwS)XC)hiM{Z>rpcvd_JVqkjc-QG_SamsweQ)hBqqN{dXM( z1~MhOdd_538|Kfh{69Nzlsd{n8i~qPU z>&1;>u-X`DMn8I{e60iZ0dbLYz13#nc8kRpjHx}3&&*T4SA-W66ldgA&EU6NFaupm z;kx?faqb8ZgVF4Ujz^qTe2FY%;Ir|#cmnG2+OUT;L?|wFi#`cC>BCw6`+ZF&O@Uq| zX^^*mF(Pq!40;z!@@+|-lvDXC1i{`RUS3P=C>n*!tUh*p(c!=-#R1MHo_ z%>eBIgd3Il5NDD_8iF)(S@KBi@n!S3k->*@@}C9?bzMBkg?2>JZG~c8D`IIviHRi_ zC77R6zy(^^HDeleDyC3-4bJtVW^)9QO_Ax|_-10$!>Y3&jy>YL`#RKLa5Vou2so9| zmpn2WgOw$JAa)Y08b;j1PxAFun;MVSVQ(|KgdatoiF+fwFvAk>RgSA6R=+zE>n}nO zfz+VeHli|S{P0a2Mmpkx%xqFlWk~v12J~)AF9$Y& z?LG7SCe1%&*5R#$yR0-;B*jYhK%tlEt&~Q)w<4 z5BooJq+`}#l$Ynu6gQPk3y71AHxwowyH{E^(*O4$3W%x2Bu}MNT$D?a=!XMHL$QoD z1TXGOW4zv{D9OIQOf}m1F)9+*pVM!6kF_UaY&iW9qooMlDe!%t>6%N{TumLn1^EH{ zHz2`t_? z^$<0^K_t^N@{q(lBm(mI(#Ce?qcb)^hT_HhX=Mv9VHc?}DU(qt=ES@w@zHNg$1A?{ z_c!$7a8&vH8xqwE%x^aed4|oLE0>h?T;qQiWv49*>Bz_YJo(kxsmkcl7UT zQo9vv)Zb!XBwiyEF{Ik_{QjQkC7UfD|Jw)=_Q%?G?lkistTVa4x&SvKq($-AbE`I} zrkNFUgwyTPyG=3pbR!FM0|Ey4z@@QIN7@bFiCO7XeXCNyl~zh>#FjWl_;h~k%{%dk zooMN*uLYCCx-^ng)rAEyG+ar7S>5H`k=-q}&NMeaiI^)*RQinH4-~yQrE&&QRa5_a zz++Af-1BZ)i$*rnuW**%$wzZ@p5Y&W&40YC&nq6- z2R@zUHNM~+B|z>W%K!@J%E5heYke32QxJ^5cTQnfJYPSi)xO#5%TJ-v+Way}3A!F9 zwDs8Vu7!RDu1-^u;*s*vMD4hE%i5nW!y{~5`$U2ly235$P!c15n!+Bw?wN;f%3!R? zu??3exyqlPpN5?uy_*=C$oCT1r z4e-fOj4V`BDA~K0qis#6YV5}|`GhO67-6>kA2F^ZbTDHo>+nSj9+8>x=A)dEQ)JC| zy(MEBa*)5v-Z#B;9-|?PG-A+84ybZL=$H+WYMM;g#1K$Th!LVDQtLr&Eb8<652Fd6 zR`Ejj+Y&ZYI;|^4O%*}RQ2^9NnxXFk5FPCuU@OS)LA_ayuUT7_9sj)Kk{~`6h-7cKis^{ z#K)=Aru%jWeCl3sZ-5xOLs%XZS`Xr+G{d9lD0xcn_dULzJ;#-TsW)OMyqsEbkb+jH zIB)jJgIkoJf;-YW)xy(Ylb#2Owk7gBPbi>^T8;@?PyQ0s*1ZnP>wPgab`S}nYkt%@mVs>QNUF(Q`{RR1Y`t)Lg@<0 z^`_|ea0P45EdC@TvMMwmuOg7Gh2z5WT?W|-?T?q#5i}03nO$G2a2b6mUXRrwGPn(> z9XI~#it?u7h>-{-FMjlCaX{e2tQTot@`%jN*pwd0NJk6EFAFah+bX=5B^39_)BZ?` zM%m=|bW4>UrHodcDs62R0%HG0?U=hS`E%6$+D ztbCszkiL|qcQ@I442O?-sGHPOKVy*XB4`#7C~F8a!)U5WcdBRiv-BH&dnDXJhC{9y zp>DOK+=nP|%99bYt@MiC8Xu}XneQM7vZmFLO&Xy&=n$h0jI~c)_CZ- z%;tt>=0rfy{aFxR$}M@Ma#AcEHp&J_Wo3hP>&Uu{HvzXu*Z@H>rV9nCc<(tACq*D@~r zIf$q?PALPI73ULZ<~5V`q4>EO)dukWbVO*5rVntsrB;rT>_C+LMyz>E**^VRtC@|w zQPXX1hSytbMmSkQo_FMJVda;W*@ly6w3(1V4 z8eoK6t3lO-_$i1nv5%#{0PTy^Q`r=(dI>;>%8fVSSVSsKQh(6Krwa;*RV_c6!4gmu zJL&PUvaUa_-!!UCNP#4kTyJ`M_42!Pj9;;?-rkZ$ykyg_iQB&Y6?^gB-kk0&{%hG6 zp8z@aWyo?{wodPDZ1aP)Mqz)P6%z}^PzX4GI&9z26&pfx3)I8*63WlGI-$)cB6R5J zQ}}SCg@#*61wNoaZ7V}_aPS15smv>mkcF;==wS3sdQnWH8RZK0=w^-dTFGUOCv#e+ z4;IvybJX}vSRB4MfP)xkCB5ltMO069}Z7i@-_Cp58Ca9?3V0hUwxmI2n z38@h4tBrw=CBh{2g|Y7*MicIKZkBT)E9rVfhW2>NGPS_oiEEFtBn^bIM*S3nd<1}U zdNkw3mu!tC-a~{pY7tcc?XL7mh-p{ z*fGkPYmLP4B$o{35oU!KQt?_koXJYTF=8UPCgm}%dHjVs|jgu+oKQmbZImukR>0Fdc>9*V& zQRJbK-Bhuzq$uE;&2h$4cHmcL*y%t~=8q)eDarb_dWg%j&K}h*vFN_}PF{gzlWFBt z&SySaNfqEEW%N=2u3{#%rbI_3CM{~d+m)V6p4#k--6l8p%AGBGn5576T6}?H<>A4P z&AK9^9AUE@;aX{HE1!YB9TIfTIaFRf;_%k#We+}CgxS9P-v}T<|AMGqcugUq8xp1H&VJv%AU{c%rZ$w z)GU0l-4WH?*G@5aX^IFjF`azgL@{*%l?UR!%B{)A+u%_QCSUU6d^^#A?SGWws>iyzE? z27SR7QxA&YpCeAXfN|yMZ^Lm(d*|kW)-{rW6OzM)uArAz`M2@Aj_iHOt_NW&D#-zK z$0mkbtm}%Jy42(cB6{>yB;YZk0|v{#f|M?)7P$C6NZUZx_=sBji^=zm$3?Y6$t>&i z*33<-^nh)J)B!YoLgIam_KIYqFiV%%_k6vw_`lU;Vg2_8pFbWiHT-S`pAQ@4JR*Bc zbx11S`E9uGJ{yI*;?NBK!2{g^!_PEhW?Hg=-xm_tH}J~E=Ok%I-2@JLh=2~V4CH#H z6azz~(?i2zyuY<7rYFoVtN1_iYZCiqcJ4DtKZPe?mO6Hsu34k}xbq0TbH>am{QU+Z zKLcLLGvpaYNt=%=qme1ce0@yo@O{c~OKZt=S>r*QW9rIGmtW!wSeV-@q55im=^VeC z0?DS8orl1L2arESfNIHTkJ__I{wi{+K%apRDw#9%AXxH{p#-N%x`j`JXpkQ)+!8d( z{4{$tVXd9;s~B^|FcEE&_8Oj}z-zU2#+I5YaI$oAU|mQ*HwIY*t1+TqZ~30e%a@We zt${kkIeO=78@}2NH&R9;GBM$JhXT4iZWV%eDvvq{71Cz zr2SjdsAux@d4!G>hR3k}D*B0*+1RbupTPgc#QHYT!3HwO z2oHCaiQVvl_^sF~LFkV8EhNqA2x{nH88&BnbfwIKp3;Jz9GXJ8IGTLwh!5zP@GmEe zu1``^^MaBbdRwc0kSx||Py=S*-a>yQ=+0{x@V8{>ZEN4{7;;f9`ooWv%FUBmQuT&jSK)qb>enSSev#wWR>BGUY#%_*=)jC5i>y)H`6D=kU~$n1IuU4*10 za@|MK5&C`;&=oxmi33f&mN^R2CrWF3-KZbhF~i(#PF{366GLzQrgM9oPm=&sOtC~i zhYIY`#Uf#mY!cjlF4JcfFihB8u#JASd*}VY>ETL4e&4M3FBqOGE+tblA#0ROlBv>{fuNQTbGW>Ce5 zl6>Sp&$4DiH|bmd$SIR(w|UM8{QLRTNa)~yu86z9)=!5%{>k4k=^6MWyiB4|)44)( zHw>of3UqKw<=v`Tl{}J7zUUFkDwhzbt4BL?IY278d7r)ac5$f`{v?|wo$$snjpv!Q z3vGEtEH1c+667x1SyDv~H@_Z;SZwi-p?e=-RSSPb5UAx1o3{>I1WJl2d#G?uXo7o- zbsF8gg5JpISIpjS26Gt&B!X?n2@x z8!|+t-8bVB+=F6(cKA?o{iv-oww1^AO~dH;`K)?K9X6)Ow1OOS;`am>UXQYh-!^?W zoa|b!sIlcI!Up_3`u|gVp3q>k;i5Rbr5LfZK2#`wt7XhaYR z(ai(9=8YF7ogzQ)Vf8G2wNR|m11{iWmWnHS#q9aYnr404Ek1^(Qg^L`As|&&cS~h~ zXpp2+^3p3~`YIete4+haE5_}!Lmj7A)JVQMl*rTih)anT&vuRT8Ar9lFV1lc!=t^q zz<94-$_{;%l=BEaJSyJUHT_wfCeeBP?gF(8RB|Q8=uB z%tirF9D?uhtBI^w;Gxavt47iJW$@HTRd1sBipJ%PFKo`=?YY!!Y)XbD{jVz#dCSap z*3^cxcEN1c)h`gkW?}jC;378U;$w;}tHfH`6`xjNfmb=ZBD^!UZz@I#jnXt~fywQ_ zWOPcYvbpK6!IV3wn%S|4PK<5##(!WAiyzSfg5y2mN6$TUeUJ0WlVS~a;9`n{a02>@ zQ42g0`*i)jYUc5{$xLnT5To#ZPI+PpO&dBdtpww-rss-!a?nh`(zB|2SakvS2=vbKvMC6zYq=EQ!$T z)bfYix&yIOU-_X#Br4J zyhi}J>D8!7@|Dcssj+l~*n4NUF3x5#jtmxZOVBV!>DQ0!*+jEQq2%A;pQ@g+9U&Qg zamyPbM!nMre%F$xa}ox)DskcQDHX4*GSs?D8<4NcM%#cI?KRkmD^fa5dYls{%h^s0 zC0cq2JS~lsr@xm)|1c9H+Y{m6`r4i-mwnWthlCp&)Vl+#c^|b?{F5#^~#asX7lFdMGPr!|? z^K`PvW~5iMrP7<9yKiDcfMoavF5AjSnUFLC2@L4)ief`2Rf;#Q3cZEjNN+g-36$xK zGr$I$93!v3JS1snZqEL;_w0BfnO+bkW>CuxeVPXHL;)zr9V~5 z{^&|ZhaqepBS*n%va!ZNNGGLiJ@@ixdYibUf(w}`<9txjQoqT*^fa#DxYxp7!!ngR zf}1YW=wCq_omR;`;9ktxg0}EKZbtY)-l;*-~|0GAfW_O~=H(+0oolnFCN%QAy3RqCl7&d-p%UHwc zS9E&iv0O#5>JyHD$KpeLJ|;rJam27hb}KZ6uxFH(Jr0-~8xIE-jujFl7?$2hqT@~A zM%00(@E{oTBG`Hnev-$&DY+gtVK*LorXEnk7p~8sn8Ln*e7s||RA@&6)?_mL)uL!- zq*N{7w)CymG9rwh+T{D%w4t)Gr!Q{+F=rzJ zPYvjn$6BtBh-q8wVHS^E_sZ%k^O2@{{OKUt=*R*Rbc zxi-Njxkt#84@b!Q|Q90SYz~3?dBOBF3XDfD`8X3+^QlY zVx8QGlBieh`!t?Z{qHSm&FD9!BWj>TPnFU|B6#0oO1?-(8WtNRX$yx85w{jW?!A#P z34914i`JLTXKN?E)cYKqV5cu|YiM>wIH&R*6*qPt-{FaNjcQEmk-DD$^Y$3=!}nPD zTbkHueE|c*+UmOF9Z~p@K#sAh<yU+<9I{frr?%CF@oynNrHe@P)9Jw|WtpKSGKIZD}0Kwe2ST4ooW(ywG>N3b<~ zP0gRXpq47uXGl^-BZ~J#5U-#AgPoK@uS+#(0urzGmk)HMU;DipO5ovI|$4&nluchNgHYn;_Oz>r=JPw$)2N;cu}| zdHblQO_ryn=D}uF$*7I54@ZNMcUV5<_F-zahI;R3)U8x&!t^53U%(h-h(7FMtvk ztnaZ4-;VqSNa>Ha?CSaRdx6cBNg|J7*D7BwZac?$2lr6LeR}yK#^ng=KK*zj8B4sX z?pw5{n4O~G*1lm@kAAa=;a!;*I%yYTu#2c2SmY@kpEQON9rYQ!-+S1^))4lALS33} zbV6C+?R{+@m{JW_Of@|x^07p%-xG({Z`(LeqSs}G{TE?!B41xbkl`LL#Iuhk^6y(r zO2x**ffNzz^bga@89=Rd7e=~b&-F3_LtcU@{8?U;sCvO7j}9E6{;Dxi5#8bSR4@Jl z+}OiZ+-;@S%-8&-Ec!Mtp4_$oYjI>_TSjDSy+!;0$J*ij zRTi(MLVw5_J6dV{JX+kRCl{DuAhWC&s&c8jL4Ad`@U9PGk4uJ`FpSk@NmnDDeZf{e zX}cKz-GM^}nLaoe^T!Nd@Sg+6@cM2OQKJPd9mGSs_w}IicEK4VAs%jRp{(L_&vo&A zw+9LQCP+N*L1&qdePnJ2f$d67(UoNG-E|d*u#7;4(Plx+ebgr8E%Q1Y zd#thIG7G6U1)~ChCb}-kcvoWVK)w`{(q8+%840xUx<}Lz=##M0#vAqr-fIkg)VQq) z7z^=4AWbs^eSh+ixLJ&;&Fga8(TxTPe_&>|AXiD`(6;3ApVP&Cgq?TL^xSCQ-tXFv4j+(j0C6?*lGVn0;2rib|mKU7+3 zX&pL_OcY~|crD8yXu5`k*zO8!p~6c#VjFjsN~AAJkwIm#Wii$vg`<&CG@zQy`I~?1G4ZS^XSpR&r^$4~G&~;ArB@1snEbL=@R>~Kj_^#12YW-QdK>1>CsFsCO;KJ4#K5qQbiw=APR4^J zHLw2)aRcDZ`Zf|(+fMHCL-?(dU>Qw&OVTOaTK)Uz8EK9#@P^+(h1KMYzd8O75yC@- z!++Zk{00U?dyD?y^VC2|py(RY>PIN}FHH&T((<-MW zRO90j4HIab=l;P1(5EzRyr4;fPA-bRw6|f{9k^X{X@A@bewYWxP@Kpnvn|C%L_th~ z0>PT{wi0-d9*=7z>b{1eNavMNw^wETP0T~glSEfI^W!(49vJ=8pf!JA9EHz|OQ(?N zHzzI@D2uAM$LkCb8X8kySNY0+PRRz`NRyA?jHg@T*oeT3KOtkF3nVr*@%}sX7DTtD zp=9EuilsOfW#NQw8h+a1#wf9x(JEjXbQH66cPTnI`WrK;n-YtR&WFRYxT#pyqUa$B%agP-`Z;YddXWq1`4^1)-C4r`PCOda0~0wI<~O!pqhhlpTUwJ>Yd&I z#S7fp;_?!n;KdGciQRK76dJWV18e?fKh7eJ*H0eM?haj>=BxFnlYzr94Km$Rd++RU z{qX6Sn*2DZXszFYa^M{mwG;ozN%1q;rf1pAe@aVM&8+0P`dT)-A9qoLm@!f)SEu&{ zaT)G>^VeW|#BErN4F3V$ZzeHb8D?w%D!P|HfYNT8o`fkaLm(H1nPlGlM`LO4_@Xf6 zB_dgTjF>OC0)pnx8KeLKTu$I1p48GSivn`XQ@ASNW@XWm=|XRDeB!<@tfT->7MHB) zrG9EjICfI@(pUqEs3M^E4hLEr(?MMI@2`?3b+5^mu~eDX$Pz?x&NdC`@(eP z?#8{V>lPbn{{bNUH!bA)a?8)P#*P|rNvT4b3NBRWfQRI z>G_i%!}v}Q&kYql+o^X!!F>!Y6RO_-#yxkmAc5_d6@a__{$yCM&x7nJ1~1Rhxfp;g z$-omSivzF3Y0O{_EqeXr?aD6H zFd0xu-^vy76#o2fTE8r+tc*tb;vATNo=^`kBpdt5YffX@PzsdJV@odP+<^R_iq1Qz z38V|)XYYUt7DQr!v!Fzzx5QHs6(PqVBF(5YDFNvv?G%-!!BZe~R0Nb3Q6NA9Q7Hi_ zp$15R0FeX?0YgYa`j_vIoq01`-n=(&-_Gpr{GK6^ur(O(iyr5BSVvzr%2>1@mmIr( z(tevJ)@(P{tmJj_x>D3R^99Wg*VLouD{h7dnr}`zh#hfqhWULEA4rvV-860baK&xp z>WsN{U#UPd{DS4M*T1KqyWk2bQE_^cpDJ$thoU;xwX*JSbvtWbbnBj$*L%2Qr}+}s zwQcqAe)&4);1fHmGo=7)!yubDjRS+c^0Z@KBY!otW76Kb_N2skMO!TG+`E6q;)(Io z?I!K*Pav+=!`WKr$4>^mH!K}wYUmo$>5i*GubWS{zp*4ur#4(yc-fsWIQDzL)|%aR zx?|(p>sB}P5B~s5r+xq08FL=gd-h;H@47wCPXC(TYRnG(~<9IWW zoC=mw+4!@wv-}mBL*2G3o6gbKOMg@a6t=APT`-~4c{_hxX4F@K(ZOz>iva8?TFeI% zLlB;HhgSb}<0qRuzve@N^I_zM;lvM7YmUfK4d(gRqXz||<WQ=+^{2tmt132k+Y$cRXJ3;Bfnqll8=380@)8?_g&(i7^tJobDM zz@)46bk`}>PjVB0@Bs5Quo!)-=s*!NkLP}MetG@S0;dL6WLH{~Ng-h%A(r*BMfzvt zK8Fs%)h*Cb%46C|?hp=gG*D?(>OY!LM#q}wW^fUTFs@B$(>((Igc~C+!^irqfGeW4k8DAxk7#AtY z!f|X7-U%^f#S38~FE`c8U(ms#=gEc;4rj8&`pwcL(qzaZs7m(&aElKFw#=stZIq?4_1(IBst&EIHF9+ z!6}9GA`(%4yII9!Rt|+J<=uuY6qzzce3jSg7V&&dO-IbtQE+wYsLNjm?)?13Jxq=( zcc@@IVp`7+Fs&c{#7F9lF*zrH)i;-4iDxAvmJC&+htEK-{k2biefzIk=(XK*c`qIz zH=X)rY?sA0s|hQOYsLp+M&YTfILqy*@4M;v+zp9G{;55YT5l^FU5Qu}KRMn~P>fc` z$YLe(V))Hg;vr351W7a(GnVO?fOTn>4dhjcz=SVivPq~Dat#%uVgiyr{K*<9r z=;}%?K*1v|ok5EQct${~+5VPD!|-0?i=4lNUYl~_m4&-0ug&4_+(zNHK)9~6e=bq& zNTsQ;vBPqpvBxSF)iw^dSHzj{A}T;zBudywD%W-mTm(jzP?DJRxUSvP8M z1!mD8{*=F2GsKSt^uO5rrB*I&9G+yIs^;GIhjH|u^7}axo*?Bot%||c&q3w;hSug#y-aOWAfIn?QQb#>tjs&x5exQAFQ92dqx6>Q|O_yCmh#w3mflo z-d`i76op(2AjB9Y#foe5*1CKa9xA=4kKya2D)n8{X`?$PVBohkyRWg$4`$L9>?}%( zi#C#~a4Tt%xLLrp=fK?+n;2VMr;6yrLs?-}h0a=`PYic?lGoZbBOMNUjli|Qb!rSp zZ|#=F<FsPRhm>_nhmaT@iPgjcgNO=uMipwHaQ)IwnO?lV%;)kqPmo> zvdio3Q&?An<3uXC_?`i@##LKa7dN3Qk)9R*C{4=>hf=NH_tiSgfH?c`;;w6zvvQqH zp%-#q-h0lK6(-NFQ4=fH>|cGyQuZad1W&X<`u4@`b(s9kWw`NN{*E9D16dCqrmVTD z9PLItP#uM+V7SWOr_7X4B0cpcJpaGC8uUGMI+_2(Dj`IB>eYF3ukQ}w)w3t^epg{4 zgLmsVlTwR1W_PJKVV_{PQuEe6E^pNB0RDb8FcRAjncq6AQ=$V|!k+(Rm9nKjpj3@K zgZsbl&B_{$w)AzXjICnE4WjzArhm#@Wj|{WvX=htDfyo$ZK95Pa9{I{hd;mU8*W>} zOs@~yoBQ$}r=L?CuzK*JAeN9)Wb(GS)mZrqFCTZ5WoRAH-BLu+pRQ%A4A{mfHpdTs za~`Zvd3p7Ug=g8dnSTTA0xF(jRURqRpu z!$m8BJf9yQ9d|TV6-*;8Z@ zcGNe|*1NR{;{sz}*Fd{|JV^3xp?TQ}mm> z{VAJ50GDBamJonR2rh%0`Ni9jzE_Rz0-*0TN^1oAW9hqs39Vxjnze^|g_nDUR%3

JNHqTNY7rUGb}6YzxTWQYCAF>)_#b8=T;O9( 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.11", + "regenerated_not_committed": [ + "literal/FILL.json.gz", + "literal/ORDER.json", + "literal/DISPATCH.json", + "literal/PROFILE.json", + "literal/PROVIDERS.json" + ], + "repo_files": { + "research/coupled-carrier-cap740/cap_check.py": "c2a2ea7df9ef2f7c7ae2739435f4ac44f2c912d8e18fc9278c717958f258ee38", + "research/coupled-carrier-cap740/common.py": "8786495cbf808d950be1c42e42d0198e950e44167af80063d25fd186aafea534", + "research/coupled-carrier-cap740/vendor/PR3133-CAP.json": "e32f3ecd5e6594935583f80f643cf1930e8bc017e3c541025c335395a15cf19c", + "research/coupled-carrier-cap740/vendor/PR3133-CREDITS.md": "1d9d8f56d8899f55878e4cb2c4e052b22506444016a51c2e678773505f5189e6", + "research/coupled-carrier-cap740/vendor/PR3133-FILL.json.gz": "68b8bae90144248774b1920cd27f9519caa3dc427704d8a9da6d4c491d912fc4", + "research/coupled-carrier-cap740/vendor/PR3133-NOTICE": "c9731c9cca25ede32c2a1b3aef6d5b249973cb2ed5fb2494407bdca598763661", + "research/coupled-carrier-cap740/vendor/PR3133-PROVIDERS.json": "52eb0d85caa7b2d4a93acdf5011f52b793f61ddca86235fb03cd9a09397ad4cd", + "research/coupled-carrier-cap740/vendor/lift.py": "ae6c1fee78fbdec26976ca74ca89f6aab2528d763c596f6573132cb54d57cd3c", + "research/rank7-joint-endframes/allocation/DISPATCH.json": "65e435bd68e97243c003677271b88485a29d4d0fae2dff1354100404a145e74c", + "research/rank7-joint-endframes/allocation/ORDER.json": "519d1d5dbb997a219fcfcad34c0b03e7838bef24199784d7e964fa10090f66e1", + "research/rank7-joint-endframes/allocation/vendor/PLAN.json.gz": "d566cfb87b71639d4138e1f89b543e2dd6a7772070226a2a14c799a6835bf21e", + "research/rank7-joint-endframes/allocation/vendor/TEMPLATE.json.gz": "21297b20f1f2dc76eb9dd8124416068c3cb096bab9df17fa4da19bc68dfe082e", + "research/rank7-joint-endframes/allocation/vendor/independent_owners.py": "77a848729159e271ba64f403dfd59dddb13044b17b2950fa56700f442e2fe461" + }, + "runtime_dependencies": [ + "numpy" + ], + "schema": "staged-retiming-owner-public-inputs-v1", + "scope": "No network and no optimizer; unchanged exact integer-network reconstruction followed by preserved independent literal audit. Actual native canonical words are authenticated data, whose operator proofs are separate.", + "upstream_artifacts_manifest": "upstream/ARTIFACTS.json" +} diff --git a/research/staged-release-retiming-t530/owner-audit/PUBLIC-PROVENANCE.json b/research/staged-release-retiming-t530/owner-audit/PUBLIC-PROVENANCE.json new file mode 100644 index 0000000000..25786d7274 --- /dev/null +++ b/research/staged-release-retiming-t530/owner-audit/PUBLIC-PROVENANCE.json @@ -0,0 +1,23 @@ +{ + "schema": "execution-metadata-publication-v1", + "files": [ + { + "file": "RESULT.json", + "original_sha256": "518fe7f8e07434000dcefc9ef6af568502626e24276881b046f7983a4fb67c19", + "public_sha256": "2c42518600f9e2bc9e868591aa25ab9ad012611fe528723a27214f03d3000b0d", + "change": "Only the local home-directory prefix replaced by $RESEARCH_WORKSPACE in execution metadata; all scientific values and input content hashes unchanged." + }, + { + "file": "evidence/FRESH-RESULT.json", + "original_sha256": "6227a002e7cc4b5cfe7d92c81c218928347cd5419c3de8faf3ab9e1a9f5462a4", + "public_sha256": "174ed7ec57441191ed025ca1c398771adced4a11388a0e16d80fc67ed593e5c8", + "change": "Only local home-directory prefix replaced by $RESEARCH_WORKSPACE, if present; all scientific values and input content hashes unchanged." + }, + { + "file": "evidence/FRESH-RUN.json", + "original_sha256": "7ea5abd27853ad3357feb8bcb596017a893c8415bb6fc0d242a6ee148c8596a1", + "public_sha256": "7ea5abd27853ad3357feb8bcb596017a893c8415bb6fc0d242a6ee148c8596a1", + "change": "Only local home-directory prefix replaced by $RESEARCH_WORKSPACE, if present; all scientific values and input content hashes unchanged." + } + ] +} diff --git a/research/staged-release-retiming-t530/owner-audit/README.md b/research/staged-release-retiming-t530/owner-audit/README.md new file mode 100644 index 0000000000..ef82ea4331 --- /dev/null +++ b/research/staged-release-retiming-t530/owner-audit/README.md @@ -0,0 +1,46 @@ +# Lean T530 ownership replay for the two release swaps + +This is a fresh, finite owner and invoice check. It regenerates all 1,946,160 literal helper-role rows without an optimizer, then independently verifies the actual source windows, physical families, chronological compact prefixes, capacities and complete histogram against the fresh canonical words. It does not rerun the canonical words' scalar/operator or native proofs, and does not establish an unconditional multiplication theorem. + +From the repository root: + +```sh +python3 -B research/staged-release-retiming-t530/owner-audit/run.py --out /tmp/staged-release-owner-check +``` + +The output directory must not exist and must be outside this package. Python 3.12 is recommended, and NumPy is required. The pinned predecessor uses `hashlib.file_digest`, so Python 3.11 is the minimum. The runner rejects optimized Python because the preserved predecessor assertions must remain enabled. `--repo /path/to/checkout` can select another checkout with exactly the same 13 source file hashes. The default derives the repository root from the runner's location; no working-directory assumption or network is required. + +## Fresh checks and retained records + +The new runner was executed from this public package with Python 3.12.14 and NumPy 2.5.4. The full literal reconstruction and independent owner audit passed in 19.23 seconds, and its before/after snapshot verified that no package file was written. The fresh output was outside the package. `evidence/FRESH-RUN.json` and `evidence/FRESH-RESULT.json` preserve that executed receipt, distinct from the earlier retained `RESULT.json`. + +A rerun performs all of the following: + +1. Authenticate the 13 existing-main dependencies and all 22 frozen PR3626 owner artifacts. +2. Execute the unchanged `upstream/portable_expand.py`, including its exact primal and deterministic integral-network checks, into a fresh output directory. This generates the full T530 literal journal and binds its decompressed payload to SHA256 `9f82e7d4abfcb52cd6d969e37e07415516856d7af85192010f3fc142dbaad246`. +3. Bind both actual retimed canonical words and read their local profile. Keep the literal ownership rows unchanged, replacing only the generated full profile by `H_new = H_old + 4770*(-2H1-2H2+2H3)`. +4. Run the exact preserved derived `independent_literal.py` against the regenerated journal, changed profile and actual canonical words. Check all 1,946,160 rows, 4,770 calls and 530 replicas; run the five retained rejection controls; compare semantic receipt fields; verify that every package file remains unchanged. + +The resulting complete profile is: + +```text +{1:11747920,2:3453480,3:1112042,4:486540,5:103690,8:38160,48:202828} +``` + +Physical stock is 475,389. The fresh independent audit derives idle counts `{1:123430,3:34022,5:8290,48:202828}`. The authenticated canonical words supply 408 helper roles and 91 zero buffers, each with width inventory `{4:26,5:2,6:18,7:52,8:97,9:213}` and local profile `{1:2437,2:724,3:226,4:102,5:20,8:8}`. + +The generated `PROVIDERS.json` is unchanged predecessor materialization metadata. This owner audit obtains the retimed bill and widths from the two authenticated canonical words instead. That generated predecessor provider metadata is not a retimed full-admission input. + +## Inputs, unchanged sources and provenance + +`PUBLIC-INPUTS.json` lists the exact 13 repository paths and SHA256 values, pending PR3626 head `659fd5e7064d9466b668d7188cbb013b333a415a`, the source base `20ecf2891d80b5acf18d980b2164fb44ea7faa90`, and the native and semantic payload pins. Every repository dependency was already present on that base. No main source is copied again and no 11 MB generated fill is committed. + +`upstream/` retains all 22 files authenticated by its unchanged `ARTIFACTS.json`. The PR3626 manifest Git blob `01694a31e732d9f0a357ce3466cb2aa9f81a5855` was checked against the exact pending head. Its original producers, source context, primal, expectations, independent auditor, proof, credits and notices retain their original bytes and hashes. + +`independent_literal.py` is the already-derived auditor, copied without predicate changes. `DERIVATION.json` documents the three preceding adaptations: explicit upstream directory, actual fresh native canonical pins, and the local bill `-2H1-2H2+2H3`. The original auditor remains at `upstream/independent_literal.py`. The runner authenticates both scripts before execution. Their checks are not replaced by stored PASS receipts. + +Only this session's local home-directory prefix in public execution metadata is represented by `$RESEARCH_WORKSPACE`. `PUBLIC-PROVENANCE.json` records original and public SHA256 values; scientific fields and content hashes are unchanged. Frozen upstream sources are not normalized or rewritten. + +The independent owner check imports neither the producer nor a solver or inherited owner checker. The separate materialization subprocess does execute the frozen deterministic constructor; the subsequent auditor checks its complete literal output independently. Canonical native frame tables are authenticated inputs; the separate complete operator and native proofs must bind those exact words. + +Source credit and Apache-2.0 notices are retained in `upstream/UPSTREAM-SOURCE-CREDITS.md` and `upstream/UPSTREAM-SOURCE-NOTICE`, including PR3605's staged entering helpers, PR3626's T530 construction, PR3133/PR3148 and their named predecessors. The new release retiming, integration and package wrapper had substantial OpenAI Codex assistance. No independent human or formal-kernel review is claimed. diff --git a/research/staged-release-retiming-t530/owner-audit/RESULT.json b/research/staged-release-retiming-t530/owner-audit/RESULT.json new file mode 100644 index 0000000000..9ef094d014 --- /dev/null +++ b/research/staged-release-retiming-t530/owner-audit/RESULT.json @@ -0,0 +1,41 @@ +{ + "calls": 4770, + "controls": [ + "duplicate helper", + "strict lower endpoint used as available", + "same-call family reused", + "unpaid chronological hole", + "one unpaid rank1 child" + ], + "idle": { + "1": 123430, + "3": 34022, + "5": 8290, + "48": 202828 + }, + "input_sha256": { + "$RESEARCH_WORKSPACE/Documents/Codex/2026-10-18/https-github-com-crocswap-integer-mult-2/work/integer-mult-bounds/research/rank7-joint-endframes/allocation/vendor/PLAN.json.gz": "d566cfb87b71639d4138e1f89b543e2dd6a7772070226a2a14c799a6835bf21e", + "$RESEARCH_WORKSPACE/Documents/Codex/2026-10-18/https-github-com-crocswap-integer-mult-2/work/integer-mult-bounds/research/rank7-joint-endframes/allocation/vendor/TEMPLATE.json.gz": "21297b20f1f2dc76eb9dd8124416068c3cb096bab9df17fa4da19bc68dfe082e", + "$RESEARCH_WORKSPACE/Documents/Codex/2026-10-18/https-github-com-crocswap-integer-mult-2/work/retimed-literal/DISPATCH.json": "a758a59b001f3bdda07e6a1a98bc8bd0339461dee5ec6b1909925030a043eddb", + "$RESEARCH_WORKSPACE/Documents/Codex/2026-10-18/https-github-com-crocswap-integer-mult-2/work/retimed-literal/FILL.json.gz": "d1cc162ad8ddfaee30643248af2997d6b8b4cc34e141a785f439b1c79fb9484c", + "$RESEARCH_WORKSPACE/Documents/Codex/2026-10-18/https-github-com-crocswap-integer-mult-2/work/retimed-literal/ORDER.json": "599fb079a23b403f9de9e334d7c463f0cad28f9d69d1f99fcbf93abb72e935eb", + "$RESEARCH_WORKSPACE/Documents/Codex/2026-10-18/https-github-com-crocswap-integer-mult-2/work/retimed-literal/PROFILE.json": "32c51c89f66339fd2bb778a06be68851d62c946dd7a3ff77573fb2416b8335cb", + "$RESEARCH_WORKSPACE/Documents/Codex/2026-10-18/https-github-com-crocswap-integer-mult-2/work/retimed-owner-audit/native/checked-base/CANONICAL-WORD.json.gz": "ba1e3767f52c849c49d7d3852b879d9562265f1f51d15ca40421c51cae0aae6a", + "$RESEARCH_WORKSPACE/Documents/Codex/2026-10-18/https-github-com-crocswap-integer-mult-2/work/retimed-owner-audit/native/checked-extra/CANONICAL-WORD.json.gz": "f30605f35030460f18b053dbd6031e862bf3c6661141d481d54ffdc1e8d1ad01" + }, + "physical": 475389, + "profile": { + "1": 11747920, + "2": 3453480, + "3": 1112042, + "4": 486540, + "5": 103690, + "8": 38160, + "48": 202828 + }, + "replicas": 530, + "roles": 1946160, + "scope": "Independent finite vectorized audit; no producer, solver, retained owner checker or reconstructor imports. Actual native frames are authenticated input data; their separate full operator proofs are required.", + "script_sha256": "b51c36ad1ae0999547edc4726d698df369fef60daaaac4f5bbea471648c9f628", + "status": "PASS_INDEPENDENT_LITERAL_OWNER_WINDOWS_FAMILIES_PREFIXES_AND_INVOICE" +} diff --git a/research/staged-release-retiming-t530/owner-audit/evidence/FRESH-RESULT.json b/research/staged-release-retiming-t530/owner-audit/evidence/FRESH-RESULT.json new file mode 100644 index 0000000000..b018387103 --- /dev/null +++ b/research/staged-release-retiming-t530/owner-audit/evidence/FRESH-RESULT.json @@ -0,0 +1,41 @@ +{ + "calls": 4770, + "controls": [ + "duplicate helper", + "strict lower endpoint used as available", + "same-call family reused", + "unpaid chronological hole", + "one unpaid rank1 child" + ], + "idle": { + "1": 123430, + "3": 34022, + "5": 8290, + "48": 202828 + }, + "input_sha256": { + "$RESEARCH_WORKSPACE/Documents/Codex/2026-10-18/https-github-com-crocswap-integer-mult-2/work/integer-mult-bounds-pr/research/rank7-joint-endframes/allocation/vendor/PLAN.json.gz": "d566cfb87b71639d4138e1f89b543e2dd6a7772070226a2a14c799a6835bf21e", + "$RESEARCH_WORKSPACE/Documents/Codex/2026-10-18/https-github-com-crocswap-integer-mult-2/work/integer-mult-bounds-pr/research/rank7-joint-endframes/allocation/vendor/TEMPLATE.json.gz": "21297b20f1f2dc76eb9dd8124416068c3cb096bab9df17fa4da19bc68dfe082e", + "$RESEARCH_WORKSPACE/Documents/Codex/2026-10-18/https-github-com-crocswap-integer-mult-2/work/integer-mult-bounds-pr/research/staged-release-retiming-t530/owner-audit/native/checked-base/CANONICAL-WORD.json.gz": "ba1e3767f52c849c49d7d3852b879d9562265f1f51d15ca40421c51cae0aae6a", + "$RESEARCH_WORKSPACE/Documents/Codex/2026-10-18/https-github-com-crocswap-integer-mult-2/work/integer-mult-bounds-pr/research/staged-release-retiming-t530/owner-audit/native/checked-extra/CANONICAL-WORD.json.gz": "f30605f35030460f18b053dbd6031e862bf3c6661141d481d54ffdc1e8d1ad01", + "$RESEARCH_WORKSPACE/Documents/Codex/2026-10-18/https-github-com-crocswap-integer-mult-2/work/lean-owner-public-check/literal/DISPATCH.json": "a758a59b001f3bdda07e6a1a98bc8bd0339461dee5ec6b1909925030a043eddb", + "$RESEARCH_WORKSPACE/Documents/Codex/2026-10-18/https-github-com-crocswap-integer-mult-2/work/lean-owner-public-check/literal/FILL.json.gz": "d1cc162ad8ddfaee30643248af2997d6b8b4cc34e141a785f439b1c79fb9484c", + "$RESEARCH_WORKSPACE/Documents/Codex/2026-10-18/https-github-com-crocswap-integer-mult-2/work/lean-owner-public-check/literal/ORDER.json": "599fb079a23b403f9de9e334d7c463f0cad28f9d69d1f99fcbf93abb72e935eb", + "$RESEARCH_WORKSPACE/Documents/Codex/2026-10-18/https-github-com-crocswap-integer-mult-2/work/lean-owner-public-check/literal/PROFILE.json": "e021f99b1d33c2b751b22151a41ec3ba47b94d05707ceacc6526987f9b49894a" + }, + "physical": 475389, + "profile": { + "1": 11747920, + "2": 3453480, + "3": 1112042, + "4": 486540, + "5": 103690, + "8": 38160, + "48": 202828 + }, + "replicas": 530, + "roles": 1946160, + "scope": "Independent finite vectorized audit; no producer, solver, retained owner checker or reconstructor imports. Actual native frames are authenticated input data; their separate full operator proofs are required.", + "script_sha256": "b51c36ad1ae0999547edc4726d698df369fef60daaaac4f5bbea471648c9f628", + "status": "PASS_INDEPENDENT_LITERAL_OWNER_WINDOWS_FAMILIES_PREFIXES_AND_INVOICE" +} diff --git a/research/staged-release-retiming-t530/owner-audit/evidence/FRESH-RUN.json b/research/staged-release-retiming-t530/owner-audit/evidence/FRESH-RUN.json new file mode 100644 index 0000000000..1a2f562dc7 --- /dev/null +++ b/research/staged-release-retiming-t530/owner-audit/evidence/FRESH-RUN.json @@ -0,0 +1,21 @@ +{ + "derived_profile": { + "1": 11747920, + "2": 3453480, + "3": 1112042, + "4": 486540, + "5": 103690, + "8": 38160, + "48": 202828 + }, + "fresh_independent_owner_audit": true, + "fresh_literal_reconstruction": true, + "numpy": "2.5.4", + "package_files_unchanged": true, + "python": "3.12.14 (main, Aug 25 2026, 13:50:33) [Clang 22.1.3 ]", + "scope": "Fresh finite reconstruction and independent ownership/invoice checks; canonical native frame tables are authenticated inputs, not operator proofs rerun by this command.", + "seconds": 19.2313930420205, + "source_files": 13, + "status": "PASS_LEAN_REGENERATED_OWNER_AUDIT", + "upstream_artifacts": 22 +} diff --git a/research/staged-release-retiming-t530/owner-audit/independent_literal.py b/research/staged-release-retiming-t530/owner-audit/independent_literal.py new file mode 100644 index 0000000000..86dc50768f --- /dev/null +++ b/research/staged-release-retiming-t530/owner-audit/independent_literal.py @@ -0,0 +1,129 @@ +# SPDX-License-Identifier: Apache-2.0 +# Adapted from PR3605; retained attribution in UPSTREAM-SOURCE-CREDITS.md. +import sys +if not __debug__ or sys.flags.optimize: + raise RuntimeError("Enabled assertions required before owner replay") +"""Path-adapted copy of the parent independent owner audit. +Original SHA256 1001cb1c8b4ee1f93c23b58b094565ec1b3931eee0ea091a23504696e380be9e. +Filesystem/source authentication and output paths adapted; mathematical predicates retained. +""" +"""Independent vectorized audit of the literal staged-pair owner journal. + +No optimizer, producer, inherited owner checker or reconstructor is imported. +Uses the source execution template and the actual checked native frame tables. +""" +from pathlib import Path +from collections import Counter +import gzip,hashlib,json,os,sys +import numpy as np +R=Path(os.environ["OWNER_UPSTREAM_DIR"]).resolve() +DERIVED_NATIVE_PINS={'base': 'ba1e3767f52c849c49d7d3852b879d9562265f1f51d15ca40421c51cae0aae6a', 'extra': 'f30605f35030460f18b053dbd6031e862bf3c6661141d481d54ffdc1e8d1ad01'} +if not __debug__:raise SystemExit('unoptimized Python required') +for _key in ('OWNER_SOURCE_REPO','OWNER_LITERAL_DIR','OWNER_NATIVE_DIR','OWNER_AUDIT_OUTPUT'): + if not os.environ.get(_key):raise SystemExit('missing '+_key) +A=Path(os.environ['OWNER_LITERAL_DIR']).resolve() +NATIVE=Path(os.environ['OWNER_NATIVE_DIR']).resolve() +S=Path(os.environ['OWNER_SOURCE_REPO']).resolve()/'research/rank7-joint-endframes/allocation/vendor' +def need(v,m): + if not v:raise ValueError(m) +def sha(p):return hashlib.sha256(p.read_bytes()).hexdigest() +def read(p): + b=p.read_bytes();return json.loads(gzip.decompress(b) if p.suffix=='.gz' else b) +def rank(v): + piv={} + for q in v: + while q: + h=q.bit_length() + if h in piv:q^=piv[h] + else:piv[h]=q;break + return len(piv) +for rel,digest in read(R/'ARTIFACTS.json').items(): + f=R/rel;need(f.is_file() and not f.is_symlink() and sha(f)==digest,'frozen audit artifact '+rel) +paths=[A/n for n in ('FILL.json.gz','ORDER.json','DISPATCH.json','PROFILE.json')]+[S/'PLAN.json.gz',S/'TEMPLATE.json.gz'] +paths += [NATIVE/f'checked-{p}/CANONICAL-WORD.json.gz' for p in ('base','extra')] +source_pins=read(R/'SOURCE-PINS.json') +repo=Path(os.environ['OWNER_SOURCE_REPO']).resolve() +for rel,digest in source_pins['repo_files'].items():need(sha(repo/rel)==digest,'retained source pin '+rel) +for tag in ('base','extra'):need(sha(NATIVE/f'checked-{tag}/CANONICAL-WORD.json.gz')==DERIVED_NATIVE_PINS[tag],'actual native canonical pin') +pins={str(p):sha(p) for p in paths} +expected=read(R/'EXPECTED.json');need(hashlib.sha256(gzip.decompress(paths[0].read_bytes())).hexdigest()==expected['payload_sha256'],'freshT530payload') +baseorder=read(R/'ORDER37.json')+[[s,r+37]for s,r in read(R/'T16-ORDER.json')] +need(read(paths[1])==[[s,r+53*cp]for s,r in baseorder for cp in range(10)],'exactmixedsourceclock') +basedispatch={(s,r):p for s,r,p in read(R/'DISPATCH37.json')};basedispatch.update({(s,r+37):p for s,r,p in read(R/'T16-DISPATCH.json')}) +need(read(paths[2])==[[s,r+53*cp,basedispatch[s,r]]for s,r in baseorder for cp in range(10)],'exactsourceproviderdispatch') +order=read(paths[1]);dispatch=read(paths[2]);profile={int(k):v for k,v in read(paths[3]).items()};plan=read(paths[4]);template=read(paths[5]) +T=530;N=9*T +need(len(order)==N and len(set(map(tuple,order)))==N,'call coverage') +clock={tuple(call):t for t,call in enumerate(order)} +need(set(clock)=={(s,r) for s in range(9) for r in range(T)},'exact source calls') +need(all([clock[s,r] for s in range(9)]==sorted(clock[s,r] for s in range(9)) for r in range(T)),'per-replica order') +D={(s,r):p for s,r,p in dispatch};need(len(dispatch)==N and set(D)==set(clock),'dispatch coverage') +need(Counter(D.values())=={'extra': 2090, 'gauge44': 2680},'provider count') +# Reconstruct source windows per replica from the actual source event sequence. +children={x['child']:x['rank'] for x in template['idle_children']};K=max(children)+1 +cap=np.zeros((T,K),dtype=np.int64);lo=np.full((T,K),N,dtype=np.int64);hi=np.full((T,K),-2,dtype=np.int64) +local_pair={x['stage']:x['pair'] for x in template['recipe'] if x['kind']=='local'} +for r in range(T): + touched={};t=None + for ev in template['execution_schedule']: + kind=ev['kind'] + if kind in ('bank_padding_cover_sweep','translate_every_live_family'):continue + if kind=='local_cover_sweep': + t=clock[ev['stage'],r];touched[local_pair[ev['stage']]]=t + elif kind=='bridge': + need(t is not None,'bridge source');touched[ev['src']]=t;touched[ev['dst']]=t + elif kind=='idle_cover_sweep': + need(t is not None,'idle source') + for c in ev['child_indices']: + if c in children: + need(cap[r,c]==0,'unique source child');cap[r,c]=children[c];lo[r,c]=touched.get(ev['pair'],-1);hi[r,c]=t + else:need(kind in ('terminal_Y_translations','terminal'),'known source event') +need(np.all(cap[:,list(children)]>0),'all source windows') +fam=np.full(K,-1,np.int64) +for c in children:fam[c]=2*plan['pairs'][str(c)]+plan['sides'][str(c)] +widths={};L=None +for tag,pid in [('base','gauge44'),('extra','extra')]: + w=read(NATIVE/f'checked-{tag}/CANONICAL-WORD.json.gz') + need(w['R']==408 and len(w['zero_buffers'])==91,'native helper stock') + widths[pid]=np.array([rank(w['frames'][w['final'][224+h]])-rank(w['frames'][w['start'][224+h]]) for h in range(408)],dtype=np.int64) + need(Counter(widths[pid])=={4:26,5:2,6:18,7:52,8:97,9:213},'actual native widths') + loc={int(k):v for k,v in w['local_profile'].items()} + need(L is None or L==loc,'common actual native bill');L=loc +need(L=={1:2437,2:724,3:226,4:102,5:20,8:8},'two commuting release swaps local bill') +bycall=np.stack([widths[D[tuple(call)]] for call in order]) +j=read(A/'FILL.json.gz');need(j['columns']==['time','helper','owner_replica','child','port','offset'] and j['dispatch_overrides']==[],'journal schema') +need(all(len(row)==6 and all(type(v) is int for v in row) for row in j['rows']),'literal integer roles') +rows=np.array(j['rows'],dtype=np.int64);del j +need(rows.shape==(N*408,6),'literal role shape') +need(np.array_equal(rows[:,0],np.repeat(np.arange(N),408)) and np.array_equal(rows[:,1],np.tile(np.arange(408),N)),'complete literal ordered helper identities') +t,h,o,c,p,z=rows.T +need(np.all((o>=0)&(o=0)&(c=0)&(p<112)),'owner bounds') +need(np.all(cap[o,c]>0),'declared source child') +need(np.all((lo[o,c]=0)&(z+w<=cap[o,c])),'actual widths and capacity') +binid=(o*K+c)*112+p +idx=np.lexsort((t,binid));bins=binid[idx];ws=w[idx];starts=np.r_[True,bins[1:]!=bins[:-1]] +cs=np.cumsum(ws,dtype=np.int64)-ws;baseline=np.maximum.accumulate(np.where(starts,cs,0));expected=cs-baseline +need(np.array_equal(z[idx],expected),'every chronological pending mask is a compact prefix') +used=np.zeros(T*K*112,np.int64);np.add.at(used,binid,w) +allcap=np.repeat(cap.reshape(-1),112);valid=allcap>0 +need(np.all(used[~valid]==0) and np.all(used<=allcap),'full used-bin mass') +idle=Counter(map(int,(allcap-used)[valid]));idle.pop(0,None) +H=Counter({r:n*N for r,n in L.items()});H.update(idle) +need(dict(H)==profile and sum(r*n for r,n in H.items())==65088*T,'independent complete histogram') +# Small semantic predicates test each independent gate on actual changed inputs. +controls=[] +def reject(name,test): + need(not test(), 'control accepted '+name);controls.append(name) +reject('duplicate helper',lambda: np.array_equal(np.r_[rows[0,1],rows[:-1,1]],np.tile(np.arange(408),N))) +reject('strict lower endpoint used as available',lambda: bool(lo[o[0],c[0]]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 literal 0 HcmV?d00001 diff --git a/research/staged-release-retiming-t530/owner-audit/run.py b/research/staged-release-retiming-t530/owner-audit/run.py new file mode 100644 index 0000000000..8e46271b6f --- /dev/null +++ b/research/staged-release-retiming-t530/owner-audit/run.py @@ -0,0 +1,63 @@ +#!/usr/bin/env python3 +# SPDX-License-Identifier: Apache-2.0 +"""Regenerate literal T530 owners, apply only the paid local-bill delta, and audit.""" +from pathlib import Path +from collections import Counter +import argparse,gzip,hashlib,json,os,subprocess,sys,time + +HERE=Path(__file__).resolve().parent + +def need(ok,message): + if not ok:raise ValueError(message) +def read(path): + raw=path.read_bytes();return json.loads(gzip.decompress(raw) if path.suffix=='.gz' else raw) +def sha(path):return hashlib.sha256(path.read_bytes()).hexdigest() +def snapshot(): + return {p.relative_to(HERE).as_posix():sha(p) for p in HERE.rglob('*') if p.is_file()} + +def main(): + ap=argparse.ArgumentParser(description=__doc__) + ap.add_argument('--out',type=Path,required=True,help='Fresh output directory outside this package') + ap.add_argument('--repo',type=Path,default=HERE.parents[2],help='Checkout containing the 13 pinned main dependencies') + args=ap.parse_args();out=args.out.resolve();repo=args.repo.resolve() + need(__debug__ and not sys.flags.optimize,'Normal Python with enabled assertions is required') + try:import numpy + except ImportError:raise SystemExit('NumPy is required for the independent literal audit') + need(out!=HERE and HERE not in out.parents,'Output must be outside the immutable package') + need(not out.exists(),'Output directory must be fresh') + before=snapshot();inputs=read(HERE/'PUBLIC-INPUTS.json');derivation=read(HERE/'DERIVATION.json') + for rel,digest in inputs['repo_files'].items():need(sha(repo/rel)==digest,'Repository source hash: '+rel) + for rel,key in [('independent_literal.py','derived_script_sha256'),('upstream/independent_literal.py','predecessor_script_sha256')]: + need(sha(HERE/rel)==derivation[key],'Auditor source hash: '+rel) + for rel,digest in read(HERE/'upstream/ARTIFACTS.json').items():need(sha(HERE/'upstream'/rel)==digest,'Upstream artifact: '+rel) + out.mkdir(parents=True,exist_ok=False);env=os.environ.copy() + env.update({'OWNER_SOURCE_REPO':str(repo),'PYTHONDONTWRITEBYTECODE':'1'}) + start=time.monotonic();literal=out/'literal' + # The frozen producer retains its original local bill and source checks. + subprocess.run([sys.executable,'-B',str(HERE/'upstream/portable_expand.py'),'--out',str(literal)],env=env,check=True) + generated=read(literal/'PROFILE.json');expected=read(HERE/'upstream/EXPECTED.json') + need(sha(literal/'PROFILE.json')==expected['literal_files']['PROFILE.json'],'Original generated profile binding') + oldlocal={1:2439,2:726,3:224,4:102,5:20,8:8};newlocal=None + for tag in ('base','extra'): + path=HERE/'native'/f'checked-{tag}'/'CANONICAL-WORD.json.gz' + need(sha(path)==derivation['native_pins'][tag],'Fresh canonical source pin') + local={int(k):v for k,v in read(path)['local_profile'].items()} + need(newlocal is None or newlocal==local,'Both actual providers have the same local bill');newlocal=local + need(newlocal=={1:2437,2:724,3:226,4:102,5:20,8:8},'Expected retimed local bill') + calls=len(read(literal/'ORDER.json'));need(calls==4770,'All T530 calls') + total=Counter({int(k):v for k,v in generated.items()}) + for rank in oldlocal.keys()|newlocal.keys():total[rank]+=calls*(newlocal.get(rank,0)-oldlocal.get(rank,0)) + need(all(v>0 for v in total.values()),'Positive paid histogram') + profile_text=json.dumps(dict(sorted(total.items())),indent=2)+'\n' + (literal/'PROFILE.json').write_text(profile_text) + need(total==Counter({int(k):v for k,v in read(HERE/'RESULT.json')['profile'].items()}),'New full invoice matches retained receipt') + env.update({'OWNER_UPSTREAM_DIR':str(HERE/'upstream'),'OWNER_LITERAL_DIR':str(literal),'OWNER_NATIVE_DIR':str(HERE/'native'),'OWNER_AUDIT_OUTPUT':str(out/'RESULT.json')}) + subprocess.run([sys.executable,'-B',str(HERE/'independent_literal.py')],env=env,check=True) + retained=read(HERE/'RESULT.json');actual=read(out/'RESULT.json') + for key in ('status','replicas','calls','roles','physical','idle','profile','script_sha256','controls','scope'): + need(actual[key]==retained[key],'Independent receipt mismatch: '+key) + need(snapshot()==before,'Package changed during replay') + receipt={'status':'PASS_LEAN_REGENERATED_OWNER_AUDIT','seconds':time.monotonic()-start,'python':sys.version,'numpy':numpy.__version__,'fresh_literal_reconstruction':True,'fresh_independent_owner_audit':True,'package_files_unchanged':True,'source_files':len(inputs['repo_files']),'upstream_artifacts':len(read(HERE/'upstream/ARTIFACTS.json')),'derived_profile':dict(sorted(total.items())),'scope':'Fresh finite reconstruction and independent ownership/invoice checks; canonical native frame tables are authenticated inputs, not operator proofs rerun by this command.'} + (out/'RUN.json').write_text(json.dumps(receipt,indent=2,sort_keys=True)+'\n');print(json.dumps(receipt,indent=2)) + +if __name__=='__main__':main() diff --git a/research/staged-release-retiming-t530/owner-audit/upstream/ARTIFACTS.json b/research/staged-release-retiming-t530/owner-audit/upstream/ARTIFACTS.json new file mode 100644 index 0000000000..01694a31e7 --- /dev/null +++ b/research/staged-release-retiming-t530/owner-audit/upstream/ARTIFACTS.json @@ -0,0 +1,24 @@ +{ + "ORDER37.json": "94803d190b2b0506d9645e980b57cdbc3e98221f3b615292df8a94f1b174c984", + "T16-DISPATCH.json": "282960b7163bc305675b64d1d0faee9f71b18848748326418a013626944c6488", + "DEPENDENCIES.json": "785cebd02d407dc6442cfb0604d9b232d93dd049fd319fc5f0ceacb314715272", + "integral_network.py": "97cce7cdaeea2c415b7959d3bdbf34d272e3b541f6e7dc9b87c134a2c2620740", + "EXPECTED.json": "4fac5fcc90e20405c0ad176d7466cbd52eb947c02fd34fe35fea18eaf372d79a", + "SOURCE-PINS.json": "7dec42af587af3b7ae66d4fdf3d0c6157f9c85eb744edec66fa266f294378e5e", + "UPSTREAM-PROOF.md": "11113405347bb8a85a85c6d5b516ff3dcdb15e01d4b16f825ba4eb314a1be5cd", + "CANDIDATE.json": "7755b8e7aed8dbfbe89fe64fdfebee04ad84de3c6c9020b3535eb04fdabccec1", + "UPSTREAM-SOURCE-NOTICE": "c9731c9cca25ede32c2a1b3aef6d5b249973cb2ed5fb2494407bdca598763661", + "PROVIDERS.json": "d96f2798024ab83edbb8848b62c425992aec182f1f24ef46bb8286dd390618c2", + "T16-PROVENANCE.json": "ebc9d5d23d5a698b795deee783c991910d2027cdb2e2f7561854df4189a63621", + "test_owner_guards.py": "fecbf1518c4594c64276847f92d5980443c6b5562345e97354305d5c31530bb0", + "verify_candidate.py": "efce5f7b1cbc3f8d0807312da5248209d1b2dd9d6043656a7d2e58b58887214b", + "portable_expand.py": "3a0ded73b3b8c6e945f28626c65c2160b540df5c3e86db5a48eb5639c5731f4c", + "source_context.py": "9967d6f5c0ca5f8437f76e3130c39aea3ff53e3d1ffa04a54d17db5f44f69f4c", + "README.txt": "7b9e8d85c1d0edfc265dc321a32752d76f1c94fa76dd7a931fff9066f57bd3a6", + "INPUT-PINS.json": "9b4b64a1e7d596f6ca8c4be8c2592544bce15a91dee988a31e89f0acb66cff7e", + "T16-ORDER.json": "9b2106c84aed23a7c3c8b99e21d3e96c66b12f92980a42ab2f6dbbe7831ef7c4", + "UPSTREAM-SOURCE-CREDITS.md": "1d9d8f56d8899f55878e4cb2c4e052b22506444016a51c2e678773505f5189e6", + "DISPATCH37.json": "4f78935b2ef1f6c08c9c16433d54015def1eccd767443b496a77ea8823690df6", + "verify_owner.py": "8d1a3c2a7beb0f18e2beaa3df455a721ea6129343ec52031d18e58fbde5081cb", + "independent_literal.py": "36d7f4e3a611fd6b5983222887beb9a37a18bfac0d999ac5c00e3e191d1c5cc4" +} diff --git a/research/staged-release-retiming-t530/owner-audit/upstream/CANDIDATE.json b/research/staged-release-retiming-t530/owner-audit/upstream/CANDIDATE.json new file mode 100644 index 0000000000..0cc7c249dd --- /dev/null +++ b/research/staged-release-retiming-t530/owner-audit/upstream/CANDIDATE.json @@ -0,0 +1,34257 @@ +{ + "schema": "mixed-chronology-aggregate-input-v1", + "baseT": 53, + "S": 10, + "order": [ + [ + 0, + 0 + ], + [ + 0, + 1 + ], + [ + 0, + 2 + ], + [ + 0, + 3 + ], + [ + 0, + 4 + ], + [ + 1, + 0 + ], + [ + 0, + 5 + ], + [ + 1, + 1 + ], + [ + 0, + 6 + ], + [ + 1, + 2 + ], + [ + 0, + 7 + ], + [ + 1, + 3 + ], + [ + 0, + 8 + ], + [ + 1, + 4 + ], + [ + 0, + 9 + ], + [ + 2, + 0 + ], + [ + 1, + 5 + ], + [ + 0, + 10 + ], + [ + 2, + 1 + ], + [ + 1, + 6 + ], + [ + 0, + 11 + ], + [ + 2, + 2 + ], + [ + 1, + 7 + ], + [ + 0, + 12 + ], + [ + 2, + 3 + ], + [ + 1, + 8 + ], + [ + 0, + 13 + ], + [ + 2, + 4 + ], + [ + 1, + 9 + ], + [ + 3, + 0 + ], + [ + 0, + 14 + ], + [ + 2, + 5 + ], + [ + 1, + 10 + ], + [ + 3, + 1 + ], + [ + 0, + 15 + ], + [ + 2, + 6 + ], + [ + 1, + 11 + ], + [ + 3, + 2 + ], + [ + 0, + 16 + ], + [ + 2, + 7 + ], + [ + 1, + 12 + ], + [ + 3, + 3 + ], + [ + 0, + 17 + ], + [ + 2, + 8 + ], + [ + 1, + 13 + ], + [ + 3, + 4 + ], + [ + 0, + 18 + ], + [ + 2, + 9 + ], + [ + 4, + 0 + ], + [ + 1, + 14 + ], + [ + 3, + 5 + ], + [ + 0, + 19 + ], + [ + 2, + 10 + ], + [ + 4, + 1 + ], + [ + 1, + 15 + ], + [ + 3, + 6 + ], + [ + 0, + 20 + ], + [ + 2, + 11 + ], + [ + 4, + 2 + ], + [ + 1, + 16 + ], + [ + 3, + 7 + ], + [ + 0, + 21 + ], + [ + 2, + 12 + ], + [ + 4, + 3 + ], + [ + 1, + 17 + ], + [ + 3, + 8 + ], + [ + 0, + 22 + ], + [ + 2, + 13 + ], + [ + 4, + 4 + ], + [ + 1, + 18 + ], + [ + 3, + 9 + ], + [ + 0, + 23 + ], + [ + 5, + 0 + ], + [ + 2, + 14 + ], + [ + 4, + 5 + ], + [ + 1, + 19 + ], + [ + 3, + 10 + ], + [ + 0, + 24 + ], + [ + 5, + 1 + ], + [ + 2, + 15 + ], + [ + 4, + 6 + ], + [ + 1, + 20 + ], + [ + 3, + 11 + ], + [ + 0, + 25 + ], + [ + 5, + 2 + ], + [ + 2, + 16 + ], + [ + 4, + 7 + ], + [ + 1, + 21 + ], + [ + 3, + 12 + ], + [ + 0, + 26 + ], + [ + 5, + 3 + ], + [ + 2, + 17 + ], + [ + 4, + 8 + ], + [ + 1, + 22 + ], + [ + 3, + 13 + ], + [ + 0, + 27 + ], + [ + 5, + 4 + ], + [ + 2, + 18 + ], + [ + 4, + 9 + ], + [ + 1, + 23 + ], + [ + 6, + 0 + ], + [ + 3, + 14 + ], + [ + 0, + 28 + ], + [ + 5, + 5 + ], + [ + 2, + 19 + ], + [ + 4, + 10 + ], + [ + 1, + 24 + ], + [ + 6, + 1 + ], + [ + 3, + 15 + ], + [ + 0, + 29 + ], + [ + 5, + 6 + ], + [ + 2, + 20 + ], + [ + 4, + 11 + ], + [ + 1, + 25 + ], + [ + 6, + 2 + ], + [ + 3, + 16 + ], + [ + 0, + 30 + ], + [ + 5, + 7 + ], + [ + 2, + 21 + ], + [ + 4, + 12 + ], + [ + 1, + 26 + ], + [ + 6, + 3 + ], + [ + 3, + 17 + ], + [ + 0, + 31 + ], + [ + 5, + 8 + ], + [ + 2, + 22 + ], + [ + 4, + 13 + ], + [ + 1, + 27 + ], + [ + 6, + 4 + ], + [ + 3, + 18 + ], + [ + 0, + 32 + ], + [ + 5, + 9 + ], + [ + 2, + 23 + ], + [ + 7, + 0 + ], + [ + 4, + 14 + ], + [ + 1, + 28 + ], + [ + 6, + 5 + ], + [ + 3, + 19 + ], + [ + 0, + 33 + ], + [ + 5, + 10 + ], + [ + 2, + 24 + ], + [ + 7, + 1 + ], + [ + 4, + 15 + ], + [ + 1, + 29 + ], + [ + 6, + 6 + ], + [ + 3, + 20 + ], + [ + 0, + 34 + ], + [ + 5, + 11 + ], + [ + 2, + 25 + ], + [ + 7, + 2 + ], + [ + 4, + 16 + ], + [ + 1, + 30 + ], + [ + 6, + 7 + ], + [ + 3, + 21 + ], + [ + 0, + 35 + ], + [ + 5, + 12 + ], + [ + 2, + 26 + ], + [ + 7, + 3 + ], + [ + 4, + 17 + ], + [ + 1, + 31 + ], + [ + 6, + 8 + ], + [ + 3, + 22 + ], + [ + 0, + 36 + ], + [ + 5, + 13 + ], + [ + 2, + 27 + ], + [ + 7, + 4 + ], + [ + 4, + 18 + ], + [ + 1, + 32 + ], + [ + 6, + 9 + ], + [ + 3, + 23 + ], + [ + 8, + 0 + ], + [ + 5, + 14 + ], + [ + 2, + 28 + ], + [ + 7, + 5 + ], + [ + 4, + 19 + ], + [ + 1, + 33 + ], + [ + 6, + 10 + ], + [ + 3, + 24 + ], + [ + 8, + 1 + ], + [ + 5, + 15 + ], + [ + 2, + 29 + ], + [ + 7, + 6 + ], + [ + 4, + 20 + ], + [ + 1, + 34 + ], + [ + 6, + 11 + ], + [ + 3, + 25 + ], + [ + 8, + 2 + ], + [ + 5, + 16 + ], + [ + 2, + 30 + ], + [ + 7, + 7 + ], + [ + 4, + 21 + ], + [ + 1, + 35 + ], + [ + 6, + 12 + ], + [ + 3, + 26 + ], + [ + 8, + 3 + ], + [ + 5, + 17 + ], + [ + 2, + 31 + ], + [ + 7, + 8 + ], + [ + 4, + 22 + ], + [ + 1, + 36 + ], + [ + 6, + 13 + ], + [ + 3, + 27 + ], + [ + 8, + 4 + ], + [ + 5, + 18 + ], + [ + 2, + 32 + ], + [ + 7, + 9 + ], + [ + 4, + 23 + ], + [ + 6, + 14 + ], + [ + 3, + 28 + ], + [ + 8, + 5 + ], + [ + 5, + 19 + ], + [ + 2, + 33 + ], + [ + 7, + 10 + ], + [ + 4, + 24 + ], + [ + 6, + 15 + ], + [ + 3, + 29 + ], + [ + 8, + 6 + ], + [ + 5, + 20 + ], + [ + 2, + 34 + ], + [ + 7, + 11 + ], + [ + 4, + 25 + ], + [ + 6, + 16 + ], + [ + 3, + 30 + ], + [ + 8, + 7 + ], + [ + 5, + 21 + ], + [ + 2, + 35 + ], + [ + 7, + 12 + ], + [ + 4, + 26 + ], + [ + 6, + 17 + ], + [ + 3, + 31 + ], + [ + 8, + 8 + ], + [ + 5, + 22 + ], + [ + 2, + 36 + ], + [ + 7, + 13 + ], + [ + 4, + 27 + ], + [ + 6, + 18 + ], + [ + 3, + 32 + ], + [ + 8, + 9 + ], + [ + 5, + 23 + ], + [ + 7, + 14 + ], + [ + 4, + 28 + ], + [ + 6, + 19 + ], + [ + 3, + 33 + ], + [ + 8, + 10 + ], + [ + 5, + 24 + ], + [ + 7, + 15 + ], + [ + 4, + 29 + ], + [ + 6, + 20 + ], + [ + 3, + 34 + ], + [ + 8, + 11 + ], + [ + 5, + 25 + ], + [ + 7, + 16 + ], + [ + 4, + 30 + ], + [ + 6, + 21 + ], + [ + 3, + 35 + ], + [ + 8, + 12 + ], + [ + 5, + 26 + ], + [ + 7, + 17 + ], + [ + 4, + 31 + ], + [ + 6, + 22 + ], + [ + 3, + 36 + ], + [ + 8, + 13 + ], + [ + 5, + 27 + ], + [ + 7, + 18 + ], + [ + 4, + 32 + ], + [ + 6, + 23 + ], + [ + 8, + 14 + ], + [ + 5, + 28 + ], + [ + 7, + 19 + ], + [ + 4, + 33 + ], + [ + 6, + 24 + ], + [ + 8, + 15 + ], + [ + 5, + 29 + ], + [ + 7, + 20 + ], + [ + 4, + 34 + ], + [ + 6, + 25 + ], + [ + 8, + 16 + ], + [ + 5, + 30 + ], + [ + 7, + 21 + ], + [ + 4, + 35 + ], + [ + 6, + 26 + ], + [ + 8, + 17 + ], + [ + 5, + 31 + ], + [ + 7, + 22 + ], + [ + 4, + 36 + ], + [ + 6, + 27 + ], + [ + 8, + 18 + ], + [ + 5, + 32 + ], + [ + 7, + 23 + ], + [ + 6, + 28 + ], + [ + 8, + 19 + ], + [ + 5, + 33 + ], + [ + 7, + 24 + ], + [ + 6, + 29 + ], + [ + 8, + 20 + ], + [ + 5, + 34 + ], + [ + 7, + 25 + ], + [ + 6, + 30 + ], + [ + 8, + 21 + ], + [ + 5, + 35 + ], + [ + 7, + 26 + ], + [ + 6, + 31 + ], + [ + 8, + 22 + ], + [ + 5, + 36 + ], + [ + 7, + 27 + ], + [ + 6, + 32 + ], + [ + 8, + 23 + ], + [ + 7, + 28 + ], + [ + 6, + 33 + ], + [ + 8, + 24 + ], + [ + 7, + 29 + ], + [ + 6, + 34 + ], + [ + 8, + 25 + ], + [ + 7, + 30 + ], + [ + 6, + 35 + ], + [ + 8, + 26 + ], + [ + 7, + 31 + ], + [ + 6, + 36 + ], + [ + 8, + 27 + ], + [ + 7, + 32 + ], + [ + 8, + 28 + ], + [ + 7, + 33 + ], + [ + 8, + 29 + ], + [ + 7, + 34 + ], + [ + 8, + 30 + ], + [ + 7, + 35 + ], + [ + 8, + 31 + ], + [ + 7, + 36 + ], + [ + 8, + 32 + ], + [ + 8, + 33 + ], + [ + 8, + 34 + ], + [ + 8, + 35 + ], + [ + 8, + 36 + ], + [ + 0, + 37 + ], + [ + 0, + 45 + ], + [ + 0, + 38 + ], + [ + 0, + 46 + ], + [ + 1, + 37 + ], + [ + 1, + 45 + ], + [ + 0, + 39 + ], + [ + 0, + 47 + ], + [ + 1, + 38 + ], + [ + 1, + 46 + ], + [ + 2, + 37 + ], + [ + 2, + 45 + ], + [ + 0, + 40 + ], + [ + 0, + 48 + ], + [ + 1, + 39 + ], + [ + 1, + 47 + ], + [ + 2, + 38 + ], + [ + 2, + 46 + ], + [ + 3, + 37 + ], + [ + 3, + 45 + ], + [ + 0, + 41 + ], + [ + 0, + 49 + ], + [ + 1, + 40 + ], + [ + 1, + 48 + ], + [ + 2, + 39 + ], + [ + 2, + 47 + ], + [ + 3, + 38 + ], + [ + 3, + 46 + ], + [ + 4, + 37 + ], + [ + 4, + 45 + ], + [ + 0, + 42 + ], + [ + 0, + 50 + ], + [ + 1, + 41 + ], + [ + 1, + 49 + ], + [ + 2, + 40 + ], + [ + 2, + 48 + ], + [ + 3, + 39 + ], + [ + 3, + 47 + ], + [ + 4, + 38 + ], + [ + 4, + 46 + ], + [ + 5, + 37 + ], + [ + 5, + 45 + ], + [ + 0, + 43 + ], + [ + 0, + 51 + ], + [ + 1, + 42 + ], + [ + 1, + 50 + ], + [ + 2, + 41 + ], + [ + 2, + 49 + ], + [ + 3, + 40 + ], + [ + 3, + 48 + ], + [ + 4, + 39 + ], + [ + 4, + 47 + ], + [ + 5, + 38 + ], + [ + 5, + 46 + ], + [ + 0, + 44 + ], + [ + 0, + 52 + ], + [ + 6, + 37 + ], + [ + 6, + 45 + ], + [ + 1, + 43 + ], + [ + 1, + 51 + ], + [ + 2, + 42 + ], + [ + 2, + 50 + ], + [ + 3, + 41 + ], + [ + 3, + 49 + ], + [ + 4, + 40 + ], + [ + 4, + 48 + ], + [ + 5, + 39 + ], + [ + 5, + 47 + ], + [ + 6, + 38 + ], + [ + 6, + 46 + ], + [ + 1, + 44 + ], + [ + 1, + 52 + ], + [ + 7, + 37 + ], + [ + 7, + 45 + ], + [ + 2, + 43 + ], + [ + 2, + 51 + ], + [ + 3, + 42 + ], + [ + 3, + 50 + ], + [ + 4, + 41 + ], + [ + 4, + 49 + ], + [ + 5, + 40 + ], + [ + 5, + 48 + ], + [ + 6, + 39 + ], + [ + 6, + 47 + ], + [ + 7, + 38 + ], + [ + 7, + 46 + ], + [ + 2, + 44 + ], + [ + 2, + 52 + ], + [ + 8, + 37 + ], + [ + 8, + 45 + ], + [ + 3, + 43 + ], + [ + 3, + 51 + ], + [ + 4, + 42 + ], + [ + 4, + 50 + ], + [ + 5, + 41 + ], + [ + 5, + 49 + ], + [ + 6, + 40 + ], + [ + 6, + 48 + ], + [ + 7, + 39 + ], + [ + 7, + 47 + ], + [ + 8, + 38 + ], + [ + 8, + 46 + ], + [ + 3, + 44 + ], + [ + 3, + 52 + ], + [ + 4, + 43 + ], + [ + 4, + 51 + ], + [ + 5, + 42 + ], + [ + 5, + 50 + ], + [ + 6, + 41 + ], + [ + 6, + 49 + ], + [ + 7, + 40 + ], + [ + 7, + 48 + ], + [ + 8, + 39 + ], + [ + 8, + 47 + ], + [ + 4, + 44 + ], + [ + 4, + 52 + ], + [ + 5, + 43 + ], + [ + 5, + 51 + ], + [ + 6, + 42 + ], + [ + 6, + 50 + ], + [ + 7, + 41 + ], + [ + 7, + 49 + ], + [ + 8, + 40 + ], + [ + 8, + 48 + ], + [ + 5, + 44 + ], + [ + 5, + 52 + ], + [ + 6, + 43 + ], + [ + 6, + 51 + ], + [ + 7, + 42 + ], + [ + 7, + 50 + ], + [ + 8, + 41 + ], + [ + 8, + 49 + ], + [ + 6, + 44 + ], + [ + 6, + 52 + ], + [ + 7, + 43 + ], + [ + 7, + 51 + ], + [ + 8, + 42 + ], + [ + 8, + 50 + ], + [ + 7, + 44 + ], + [ + 7, + 52 + ], + [ + 8, + 43 + ], + [ + 8, + 51 + ], + [ + 8, + 44 + ], + [ + 8, + 52 + ] + ], + "groups": [ + [ + 8, + 5, + 15, + 224 + ], + [ + 8, + 7, + 18, + 224 + ], + [ + 8, + 9, + 21, + 224 + ], + [ + 8, + 11, + 24, + 224 + ], + [ + 8, + 13, + 27, + 224 + ], + [ + 8, + 16, + 31, + 224 + ], + [ + 8, + 19, + 35, + 224 + ], + [ + 8, + 22, + 39, + 224 + ], + [ + 8, + 25, + 43, + 224 + ], + [ + 8, + 28, + 47, + 224 + ], + [ + 8, + 29, + 48, + 224 + ], + [ + 8, + 32, + 52, + 224 + ], + [ + 8, + 33, + 53, + 224 + ], + [ + 8, + 36, + 57, + 224 + ], + [ + 8, + 37, + 58, + 224 + ], + [ + 8, + 40, + 62, + 224 + ], + [ + 8, + 41, + 63, + 224 + ], + [ + 8, + 44, + 67, + 224 + ], + [ + 8, + 45, + 68, + 224 + ], + [ + 8, + 49, + 73, + 224 + ], + [ + 8, + 50, + 74, + 224 + ], + [ + 8, + 54, + 79, + 224 + ], + [ + 8, + 55, + 80, + 224 + ], + [ + 8, + 59, + 85, + 224 + ], + [ + 8, + 60, + 86, + 224 + ], + [ + 8, + 64, + 91, + 224 + ], + [ + 8, + 65, + 92, + 224 + ], + [ + 8, + 69, + 97, + 224 + ], + [ + 8, + 70, + 98, + 224 + ], + [ + 8, + 72, + 100, + 224 + ], + [ + 8, + 75, + 104, + 224 + ], + [ + 8, + 76, + 105, + 224 + ], + [ + 8, + 78, + 107, + 224 + ], + [ + 8, + 81, + 111, + 224 + ], + [ + 8, + 82, + 112, + 224 + ], + [ + 8, + 84, + 114, + 224 + ], + [ + 8, + 87, + 118, + 224 + ], + [ + 8, + 88, + 119, + 224 + ], + [ + 8, + 90, + 121, + 224 + ], + [ + 8, + 93, + 125, + 224 + ], + [ + 8, + 94, + 126, + 224 + ], + [ + 8, + 96, + 128, + 224 + ], + [ + 8, + 99, + 132, + 224 + ], + [ + 8, + 101, + 134, + 224 + ], + [ + 8, + 103, + 136, + 224 + ], + [ + 8, + 106, + 140, + 224 + ], + [ + 8, + 108, + 142, + 224 + ], + [ + 8, + 110, + 144, + 224 + ], + [ + 8, + 113, + 148, + 224 + ], + [ + 8, + 115, + 150, + 224 + ], + [ + 8, + 117, + 152, + 224 + ], + [ + 8, + 120, + 156, + 224 + ], + [ + 8, + 122, + 158, + 224 + ], + [ + 8, + 124, + 160, + 224 + ], + [ + 8, + 127, + 164, + 224 + ], + [ + 8, + 129, + 166, + 224 + ], + [ + 8, + 131, + 168, + 224 + ], + [ + 8, + 135, + 172, + 224 + ], + [ + 8, + 137, + 174, + 224 + ], + [ + 8, + 139, + 176, + 224 + ], + [ + 8, + 143, + 180, + 224 + ], + [ + 8, + 145, + 182, + 224 + ], + [ + 8, + 147, + 184, + 224 + ], + [ + 8, + 151, + 188, + 224 + ], + [ + 8, + 153, + 190, + 224 + ], + [ + 8, + 155, + 192, + 224 + ], + [ + 8, + 159, + 196, + 224 + ], + [ + 8, + 161, + 198, + 224 + ], + [ + 8, + 163, + 200, + 224 + ], + [ + 8, + 167, + 204, + 224 + ], + [ + 8, + 169, + 206, + 224 + ], + [ + 8, + 171, + 207, + 224 + ], + [ + 8, + 175, + 211, + 224 + ], + [ + 8, + 177, + 213, + 224 + ], + [ + 8, + 179, + 214, + 224 + ], + [ + 8, + 183, + 218, + 224 + ], + [ + 8, + 185, + 220, + 224 + ], + [ + 8, + 187, + 221, + 224 + ], + [ + 8, + 191, + 225, + 224 + ], + [ + 8, + 193, + 227, + 224 + ], + [ + 8, + 195, + 228, + 224 + ], + [ + 8, + 199, + 232, + 224 + ], + [ + 8, + 201, + 234, + 224 + ], + [ + 8, + 203, + 235, + 224 + ], + [ + 8, + 208, + 240, + 224 + ], + [ + 8, + 210, + 241, + 224 + ], + [ + 8, + 215, + 246, + 224 + ], + [ + 8, + 217, + 247, + 224 + ], + [ + 8, + 222, + 252, + 224 + ], + [ + 8, + 224, + 253, + 224 + ], + [ + 8, + 229, + 258, + 224 + ], + [ + 8, + 231, + 259, + 224 + ], + [ + 8, + 236, + 264, + 224 + ], + [ + 8, + 238, + 265, + 224 + ], + [ + 8, + 242, + 269, + 224 + ], + [ + 8, + 244, + 270, + 224 + ], + [ + 8, + 248, + 274, + 224 + ], + [ + 8, + 250, + 275, + 224 + ], + [ + 8, + 254, + 279, + 224 + ], + [ + 8, + 256, + 280, + 224 + ], + [ + 8, + 260, + 284, + 224 + ], + [ + 8, + 262, + 285, + 224 + ], + [ + 8, + 267, + 289, + 224 + ], + [ + 8, + 272, + 293, + 224 + ], + [ + 8, + 277, + 297, + 224 + ], + [ + 8, + 282, + 301, + 224 + ], + [ + 8, + 287, + 305, + 224 + ], + [ + 8, + 291, + 308, + 224 + ], + [ + 8, + 295, + 311, + 224 + ], + [ + 8, + 299, + 314, + 224 + ], + [ + 8, + 303, + 317, + 224 + ], + [ + 8, + 337, + 343, + 224 + ], + [ + 8, + 338, + 344, + 224 + ], + [ + 8, + 341, + 349, + 224 + ], + [ + 8, + 342, + 350, + 224 + ], + [ + 8, + 347, + 357, + 224 + ], + [ + 8, + 348, + 358, + 224 + ], + [ + 8, + 351, + 361, + 224 + ], + [ + 8, + 352, + 362, + 224 + ], + [ + 8, + 355, + 367, + 224 + ], + [ + 8, + 356, + 368, + 224 + ], + [ + 8, + 359, + 371, + 224 + ], + [ + 8, + 360, + 372, + 224 + ], + [ + 8, + 365, + 379, + 224 + ], + [ + 8, + 366, + 380, + 224 + ], + [ + 8, + 369, + 383, + 224 + ], + [ + 8, + 370, + 384, + 224 + ], + [ + 8, + 373, + 389, + 224 + ], + [ + 8, + 374, + 390, + 224 + ], + [ + 8, + 377, + 393, + 224 + ], + [ + 8, + 378, + 394, + 224 + ], + [ + 8, + 381, + 397, + 224 + ], + [ + 8, + 382, + 398, + 224 + ], + [ + 8, + 385, + 401, + 224 + ], + [ + 8, + 386, + 402, + 224 + ], + [ + 8, + 391, + 407, + 224 + ], + [ + 8, + 392, + 408, + 224 + ], + [ + 8, + 395, + 411, + 224 + ], + [ + 8, + 396, + 412, + 224 + ], + [ + 8, + 399, + 415, + 224 + ], + [ + 8, + 400, + 416, + 224 + ], + [ + 8, + 403, + 419, + 224 + ], + [ + 8, + 404, + 420, + 224 + ], + [ + 8, + 409, + 425, + 224 + ], + [ + 8, + 410, + 426, + 224 + ], + [ + 8, + 413, + 429, + 224 + ], + [ + 8, + 414, + 430, + 224 + ], + [ + 8, + 423, + 437, + 224 + ], + [ + 8, + 424, + 438, + 224 + ], + [ + 8, + 427, + 441, + 224 + ], + [ + 8, + 428, + 442, + 224 + ], + [ + 8, + 435, + 447, + 224 + ], + [ + 8, + 436, + 448, + 224 + ], + [ + 8, + 439, + 451, + 224 + ], + [ + 8, + 440, + 452, + 224 + ], + [ + 8, + 449, + 459, + 224 + ], + [ + 8, + 450, + 460, + 224 + ], + [ + 8, + 457, + 465, + 224 + ], + [ + 8, + 458, + 466, + 224 + ], + [ + 16, + -1, + 5, + 224 + ], + [ + 16, + -1, + 7, + 224 + ], + [ + 16, + -1, + 9, + 224 + ], + [ + 16, + -1, + 11, + 224 + ], + [ + 16, + -1, + 13, + 224 + ], + [ + 16, + -1, + 16, + 224 + ], + [ + 16, + -1, + 19, + 224 + ], + [ + 16, + -1, + 22, + 224 + ], + [ + 16, + -1, + 25, + 224 + ], + [ + 16, + -1, + 28, + 224 + ], + [ + 16, + -1, + 32, + 224 + ], + [ + 16, + -1, + 36, + 224 + ], + [ + 16, + -1, + 40, + 224 + ], + [ + 16, + -1, + 44, + 224 + ], + [ + 16, + -1, + 49, + 224 + ], + [ + 16, + -1, + 54, + 224 + ], + [ + 16, + -1, + 59, + 224 + ], + [ + 16, + -1, + 64, + 224 + ], + [ + 16, + -1, + 69, + 224 + ], + [ + 16, + -1, + 75, + 224 + ], + [ + 16, + -1, + 81, + 224 + ], + [ + 16, + -1, + 87, + 224 + ], + [ + 16, + -1, + 93, + 224 + ], + [ + 16, + -1, + 99, + 224 + ], + [ + 16, + -1, + 106, + 224 + ], + [ + 16, + -1, + 113, + 224 + ], + [ + 16, + -1, + 120, + 224 + ], + [ + 16, + -1, + 127, + 224 + ], + [ + 16, + -1, + 135, + 224 + ], + [ + 16, + -1, + 143, + 224 + ], + [ + 16, + -1, + 151, + 224 + ], + [ + 16, + -1, + 159, + 224 + ], + [ + 16, + -1, + 167, + 224 + ], + [ + 16, + -1, + 175, + 224 + ], + [ + 16, + -1, + 183, + 224 + ], + [ + 16, + -1, + 191, + 224 + ], + [ + 16, + -1, + 199, + 224 + ], + [ + 16, + -1, + 337, + 224 + ], + [ + 16, + -1, + 338, + 224 + ], + [ + 16, + -1, + 341, + 224 + ], + [ + 16, + -1, + 342, + 224 + ], + [ + 16, + -1, + 347, + 224 + ], + [ + 16, + -1, + 348, + 224 + ], + [ + 16, + -1, + 355, + 224 + ], + [ + 16, + -1, + 356, + 224 + ], + [ + 16, + -1, + 365, + 224 + ], + [ + 16, + -1, + 366, + 224 + ], + [ + 16, + -1, + 377, + 224 + ], + [ + 16, + -1, + 378, + 224 + ], + [ + 16, + -1, + 391, + 224 + ], + [ + 16, + -1, + 392, + 224 + ], + [ + 16, + -1, + 403, + 224 + ], + [ + 16, + -1, + 404, + 224 + ], + [ + 16, + 100, + 170, + 224 + ], + [ + 16, + 107, + 178, + 224 + ], + [ + 16, + 114, + 186, + 224 + ], + [ + 16, + 121, + 194, + 224 + ], + [ + 16, + 128, + 202, + 224 + ], + [ + 16, + 136, + 209, + 224 + ], + [ + 16, + 144, + 216, + 224 + ], + [ + 16, + 152, + 223, + 224 + ], + [ + 16, + 160, + 230, + 224 + ], + [ + 16, + 168, + 237, + 224 + ], + [ + 16, + 176, + 243, + 224 + ], + [ + 16, + 184, + 249, + 224 + ], + [ + 16, + 192, + 255, + 224 + ], + [ + 16, + 200, + 261, + 224 + ], + [ + 16, + 207, + 266, + 224 + ], + [ + 16, + 214, + 271, + 224 + ], + [ + 16, + 221, + 276, + 224 + ], + [ + 16, + 228, + 281, + 224 + ], + [ + 16, + 235, + 286, + 224 + ], + [ + 16, + 241, + 290, + 224 + ], + [ + 16, + 247, + 294, + 224 + ], + [ + 16, + 253, + 298, + 224 + ], + [ + 16, + 259, + 302, + 224 + ], + [ + 16, + 265, + 306, + 224 + ], + [ + 16, + 270, + 309, + 224 + ], + [ + 16, + 275, + 312, + 224 + ], + [ + 16, + 280, + 315, + 224 + ], + [ + 16, + 285, + 318, + 224 + ], + [ + 16, + 289, + 320, + 224 + ], + [ + 16, + 293, + 322, + 224 + ], + [ + 16, + 297, + 324, + 224 + ], + [ + 16, + 301, + 326, + 224 + ], + [ + 16, + 305, + 328, + 224 + ], + [ + 16, + 308, + 329, + 224 + ], + [ + 16, + 311, + 330, + 224 + ], + [ + 16, + 314, + 331, + 224 + ], + [ + 16, + 317, + 332, + 224 + ], + [ + 16, + 389, + 421, + 224 + ], + [ + 16, + 390, + 422, + 224 + ], + [ + 16, + 401, + 433, + 224 + ], + [ + 16, + 402, + 434, + 224 + ], + [ + 16, + 415, + 445, + 224 + ], + [ + 16, + 416, + 446, + 224 + ], + [ + 16, + 429, + 455, + 224 + ], + [ + 16, + 430, + 456, + 224 + ], + [ + 16, + 441, + 463, + 224 + ], + [ + 16, + 442, + 464, + 224 + ], + [ + 16, + 451, + 469, + 224 + ], + [ + 16, + 452, + 470, + 224 + ], + [ + 16, + 459, + 473, + 224 + ], + [ + 16, + 460, + 474, + 224 + ], + [ + 16, + 465, + 475, + 224 + ], + [ + 16, + 466, + 476, + 224 + ], + [ + 32, + -1, + 29, + 224 + ], + [ + 32, + -1, + 33, + 224 + ], + [ + 32, + -1, + 37, + 224 + ], + [ + 32, + -1, + 41, + 224 + ], + [ + 32, + -1, + 45, + 224 + ], + [ + 32, + -1, + 50, + 224 + ], + [ + 32, + -1, + 55, + 224 + ], + [ + 32, + -1, + 60, + 224 + ], + [ + 32, + -1, + 65, + 224 + ], + [ + 32, + -1, + 70, + 224 + ], + [ + 32, + -1, + 76, + 224 + ], + [ + 32, + -1, + 82, + 224 + ], + [ + 32, + -1, + 88, + 224 + ], + [ + 32, + -1, + 94, + 224 + ], + [ + 32, + -1, + 101, + 224 + ], + [ + 32, + -1, + 108, + 224 + ], + [ + 32, + -1, + 115, + 224 + ], + [ + 32, + -1, + 122, + 224 + ], + [ + 32, + -1, + 129, + 224 + ], + [ + 32, + -1, + 137, + 224 + ], + [ + 32, + -1, + 145, + 224 + ], + [ + 32, + -1, + 153, + 224 + ], + [ + 32, + -1, + 161, + 224 + ], + [ + 32, + -1, + 169, + 224 + ], + [ + 32, + -1, + 177, + 224 + ], + [ + 32, + -1, + 185, + 224 + ], + [ + 32, + -1, + 193, + 224 + ], + [ + 32, + -1, + 201, + 224 + ], + [ + 32, + -1, + 208, + 224 + ], + [ + 32, + -1, + 215, + 224 + ], + [ + 32, + -1, + 222, + 224 + ], + [ + 32, + -1, + 229, + 224 + ], + [ + 32, + -1, + 236, + 224 + ], + [ + 32, + -1, + 242, + 224 + ], + [ + 32, + -1, + 248, + 224 + ], + [ + 32, + -1, + 254, + 224 + ], + [ + 32, + -1, + 260, + 224 + ], + [ + 32, + -1, + 351, + 224 + ], + [ + 32, + -1, + 352, + 224 + ], + [ + 32, + -1, + 359, + 224 + ], + [ + 32, + -1, + 360, + 224 + ], + [ + 32, + -1, + 369, + 224 + ], + [ + 32, + -1, + 370, + 224 + ], + [ + 32, + -1, + 381, + 224 + ], + [ + 32, + -1, + 382, + 224 + ], + [ + 32, + -1, + 395, + 224 + ], + [ + 32, + -1, + 396, + 224 + ], + [ + 32, + -1, + 409, + 224 + ], + [ + 32, + -1, + 410, + 224 + ], + [ + 32, + -1, + 423, + 224 + ], + [ + 32, + -1, + 424, + 224 + ], + [ + 32, + -1, + 435, + 224 + ], + [ + 32, + -1, + 436, + 224 + ], + [ + 32, + 48, + 170, + 224 + ], + [ + 32, + 53, + 178, + 224 + ], + [ + 32, + 58, + 186, + 224 + ], + [ + 32, + 63, + 194, + 224 + ], + [ + 32, + 68, + 202, + 224 + ], + [ + 32, + 74, + 209, + 224 + ], + [ + 32, + 80, + 216, + 224 + ], + [ + 32, + 86, + 223, + 224 + ], + [ + 32, + 92, + 230, + 224 + ], + [ + 32, + 98, + 237, + 224 + ], + [ + 32, + 105, + 243, + 224 + ], + [ + 32, + 112, + 249, + 224 + ], + [ + 32, + 119, + 255, + 224 + ], + [ + 32, + 126, + 261, + 224 + ], + [ + 32, + 134, + 266, + 224 + ], + [ + 32, + 142, + 271, + 224 + ], + [ + 32, + 150, + 276, + 224 + ], + [ + 32, + 158, + 281, + 224 + ], + [ + 32, + 166, + 286, + 224 + ], + [ + 32, + 174, + 290, + 224 + ], + [ + 32, + 182, + 294, + 224 + ], + [ + 32, + 190, + 298, + 224 + ], + [ + 32, + 198, + 302, + 224 + ], + [ + 32, + 206, + 306, + 224 + ], + [ + 32, + 213, + 309, + 224 + ], + [ + 32, + 220, + 312, + 224 + ], + [ + 32, + 227, + 315, + 224 + ], + [ + 32, + 234, + 318, + 224 + ], + [ + 32, + 240, + 320, + 224 + ], + [ + 32, + 246, + 322, + 224 + ], + [ + 32, + 252, + 324, + 224 + ], + [ + 32, + 258, + 326, + 224 + ], + [ + 32, + 264, + 328, + 224 + ], + [ + 32, + 269, + 329, + 224 + ], + [ + 32, + 274, + 330, + 224 + ], + [ + 32, + 279, + 331, + 224 + ], + [ + 32, + 284, + 332, + 224 + ], + [ + 32, + 361, + 421, + 224 + ], + [ + 32, + 362, + 422, + 224 + ], + [ + 32, + 371, + 433, + 224 + ], + [ + 32, + 372, + 434, + 224 + ], + [ + 32, + 383, + 445, + 224 + ], + [ + 32, + 384, + 446, + 224 + ], + [ + 32, + 397, + 455, + 224 + ], + [ + 32, + 398, + 456, + 224 + ], + [ + 32, + 411, + 463, + 224 + ], + [ + 32, + 412, + 464, + 224 + ], + [ + 32, + 425, + 469, + 224 + ], + [ + 32, + 426, + 470, + 224 + ], + [ + 32, + 437, + 473, + 224 + ], + [ + 32, + 438, + 474, + 224 + ], + [ + 32, + 447, + 475, + 224 + ], + [ + 32, + 448, + 476, + 224 + ], + [ + 48, + -1, + 72, + 224 + ], + [ + 48, + -1, + 78, + 224 + ], + [ + 48, + -1, + 84, + 224 + ], + [ + 48, + -1, + 90, + 224 + ], + [ + 48, + -1, + 96, + 224 + ], + [ + 48, + -1, + 103, + 224 + ], + [ + 48, + -1, + 110, + 224 + ], + [ + 48, + -1, + 117, + 224 + ], + [ + 48, + -1, + 124, + 224 + ], + [ + 48, + -1, + 131, + 224 + ], + [ + 48, + -1, + 139, + 224 + ], + [ + 48, + -1, + 147, + 224 + ], + [ + 48, + -1, + 155, + 224 + ], + [ + 48, + -1, + 163, + 224 + ], + [ + 48, + -1, + 171, + 224 + ], + [ + 48, + -1, + 179, + 224 + ], + [ + 48, + -1, + 187, + 224 + ], + [ + 48, + -1, + 195, + 224 + ], + [ + 48, + -1, + 203, + 224 + ], + [ + 48, + -1, + 210, + 224 + ], + [ + 48, + -1, + 217, + 224 + ], + [ + 48, + -1, + 224, + 224 + ], + [ + 48, + -1, + 231, + 224 + ], + [ + 48, + -1, + 238, + 224 + ], + [ + 48, + -1, + 244, + 224 + ], + [ + 48, + -1, + 250, + 224 + ], + [ + 48, + -1, + 256, + 224 + ], + [ + 48, + -1, + 262, + 224 + ], + [ + 48, + -1, + 267, + 224 + ], + [ + 48, + -1, + 272, + 224 + ], + [ + 48, + -1, + 277, + 224 + ], + [ + 48, + -1, + 282, + 224 + ], + [ + 48, + -1, + 287, + 224 + ], + [ + 48, + -1, + 291, + 224 + ], + [ + 48, + -1, + 295, + 224 + ], + [ + 48, + -1, + 299, + 224 + ], + [ + 48, + -1, + 303, + 224 + ], + [ + 48, + -1, + 373, + 224 + ], + [ + 48, + -1, + 374, + 224 + ], + [ + 48, + -1, + 385, + 224 + ], + [ + 48, + -1, + 386, + 224 + ], + [ + 48, + -1, + 399, + 224 + ], + [ + 48, + -1, + 400, + 224 + ], + [ + 48, + -1, + 413, + 224 + ], + [ + 48, + -1, + 414, + 224 + ], + [ + 48, + -1, + 427, + 224 + ], + [ + 48, + -1, + 428, + 224 + ], + [ + 48, + -1, + 439, + 224 + ], + [ + 48, + -1, + 440, + 224 + ], + [ + 48, + -1, + 449, + 224 + ], + [ + 48, + -1, + 450, + 224 + ], + [ + 48, + -1, + 457, + 224 + ], + [ + 48, + -1, + 458, + 224 + ], + [ + 48, + 15, + 170, + 224 + ], + [ + 48, + 18, + 178, + 224 + ], + [ + 48, + 21, + 186, + 224 + ], + [ + 48, + 24, + 194, + 224 + ], + [ + 48, + 27, + 202, + 224 + ], + [ + 48, + 31, + 209, + 224 + ], + [ + 48, + 35, + 216, + 224 + ], + [ + 48, + 39, + 223, + 224 + ], + [ + 48, + 43, + 230, + 224 + ], + [ + 48, + 47, + 237, + 224 + ], + [ + 48, + 52, + 243, + 224 + ], + [ + 48, + 57, + 249, + 224 + ], + [ + 48, + 62, + 255, + 224 + ], + [ + 48, + 67, + 261, + 224 + ], + [ + 48, + 73, + 266, + 224 + ], + [ + 48, + 79, + 271, + 224 + ], + [ + 48, + 85, + 276, + 224 + ], + [ + 48, + 91, + 281, + 224 + ], + [ + 48, + 97, + 286, + 224 + ], + [ + 48, + 104, + 290, + 224 + ], + [ + 48, + 111, + 294, + 224 + ], + [ + 48, + 118, + 298, + 224 + ], + [ + 48, + 125, + 302, + 224 + ], + [ + 48, + 132, + 306, + 224 + ], + [ + 48, + 140, + 309, + 224 + ], + [ + 48, + 148, + 312, + 224 + ], + [ + 48, + 156, + 315, + 224 + ], + [ + 48, + 164, + 318, + 224 + ], + [ + 48, + 172, + 320, + 224 + ], + [ + 48, + 180, + 322, + 224 + ], + [ + 48, + 188, + 324, + 224 + ], + [ + 48, + 196, + 326, + 224 + ], + [ + 48, + 204, + 328, + 224 + ], + [ + 48, + 211, + 329, + 224 + ], + [ + 48, + 218, + 330, + 224 + ], + [ + 48, + 225, + 331, + 224 + ], + [ + 48, + 232, + 332, + 224 + ], + [ + 48, + 343, + 421, + 224 + ], + [ + 48, + 344, + 422, + 224 + ], + [ + 48, + 349, + 433, + 224 + ], + [ + 48, + 350, + 434, + 224 + ], + [ + 48, + 357, + 445, + 224 + ], + [ + 48, + 358, + 446, + 224 + ], + [ + 48, + 367, + 455, + 224 + ], + [ + 48, + 368, + 456, + 224 + ], + [ + 48, + 379, + 463, + 224 + ], + [ + 48, + 380, + 464, + 224 + ], + [ + 48, + 393, + 469, + 224 + ], + [ + 48, + 394, + 470, + 224 + ], + [ + 48, + 407, + 473, + 224 + ], + [ + 48, + 408, + 474, + 224 + ], + [ + 48, + 419, + 475, + 224 + ], + [ + 48, + 420, + 476, + 224 + ] + ], + "widths": [ + 4, + 5, + 6, + 7, + 8, + 9 + ], + "inventory": { + "4": 26, + "5": 2, + "6": 18, + "7": 52, + "8": 97, + "9": 213 + }, + "local_profile": { + "1": 2439, + "2": 726, + "3": 224, + "4": 102, + "5": 20, + "8": 8 + }, + "physical_bins": 106848, + "capacity_rank_mass": 2564352, + "constraints": "x patterncounts pergroup sum=S*bins; z withinlo= D_g-(R-1)n_g` follows from the same inequality. A bin of degree R +delivers one unit, all other bins deliver at most one, and each width delivers +exactly I_w. Integral capacities and lower bounds give an integral feasible +flow after the standard circulation reduction. The implemented augmenting-path +algorithm produces this integral flow directly. Removing its selected roles +preserves all three invariants with R replaced by R-1. Repeating constructs S +actual calls, each with every required width count, at most one role from a bin, +and at most n_g roles from each group. + +This argument is an all-parameter written realization lemma under its stated +integer-flow and pattern-size hypotheses. Feasibility of this particular +aggregate witness is finite computation, not an all-parameter packing theorem. + +## Physical owners and endpoint availability + +For a group, the physical stock is exactly S copies of its n_g source bins. +A bin containing any role at macro-time hi requires an owner-copy index at +least the largest call-copy index among those endpoint roles. Other bins have +no lower requirement on their owner-copy index. + +For each j, the number of bins requiring owner index greater than j is at most +the number of endpoint roles assigned to actual call-copy indices greater than +j. The preceding decomposition bounds that number by `(S-1-j)n_g`, exactly the +number of physical bins in those owner copies. These nested Hall inequalities +justify sorting bins by decreasing requirement and assigning the physical +owner copies in decreasing order, with n_g bins per owner copy. The construction +checks every resulting requirement separately. Original owner, child and port +labels are retained when allocating each copy's n_g bins. + +The literal chronology is +`(stage,r) at macro-time t -> (stage,r+37*j) at time S*t+j`. +Provider dispatch is copied along that embedding. If a source window has +noninitial lower endpoint lo, every admitted macro-time satisfies t>=lo+1; +therefore `S*t+j > S*lo+k` for every owner-copy k. For an upper endpoint, +t 33` gates skipping `{22, 40, 54, 63}`, and `R2_E7` at `restore[190:203]`, `13 -> 15` gates skipping `{5, 73}`) on PR #2979's words that serve as the direct starting words for `B_586_438` and `B_588_440`. +- **New here (dcharb78, with AI assistance)**: the two coupled `B` + `restore` dying-helper carrier folds (`B_586_438` and `B_588_440`, `6` hunks / `6 -> 5` gates each) and `helper_final` lowerings on entering helpers `586` ($E_{30} \to V_{30,76,82}$) and `588` ($E_{30} \to V_{30,97,127}$) shifting the helper width inventory from `{4:26, 5:2, 6:16, 7:52, 8:99, 9:213}` to `{4:26, 5:2, 6:18, 7:50, 8:99, 9:213}` (`+665` net profit per helper, `+1,330` joint), the literal `T74_optimal_idle39` allocation (`allocation/FILL.json.gz`), the 21-control per-word edit review (`edits/edits_review.py`) and 100-control four-stage replay (`verify.py`), and the re-derived paid profile, cap certificate (`certificates/RELAX-CAP.json`), and complete fresh-native admission and release receipts. PR #2979 (mdumitrean), PR #3015 (jeremykothe2), and PR #3042 (dcharb78) are credited first. diff --git a/research/staged-release-retiming-t530/owner-audit/upstream/UPSTREAM-SOURCE-NOTICE b/research/staged-release-retiming-t530/owner-audit/upstream/UPSTREAM-SOURCE-NOTICE new file mode 100644 index 0000000000..89c20926ea --- /dev/null +++ b/research/staged-release-retiming-t530/owner-audit/upstream/UPSTREAM-SOURCE-NOTICE @@ -0,0 +1,28 @@ +research/rank7-joint-endframes +Copyright 2026 Marius-Paul Dumitrean. Licensed under the Apache License, Version 2.0. +Prepared with substantial AI assistance (Anthropic Claude, via Claude Code). + +This package retains, byte-identical, Apache-2.0 files from: PR #2942 (Marius-Paul Dumitrean, head +a027b0f6fdb0ab2b42ba10fc31b53960166bf2bf, research/paired-extension-normal45): data/PARENT-base.json.gz and +data/PARENT-extra.json.gz (its data/WORD-*.json.gz), comparators/PR2942-CLAIM.json and tools/wordedit.py; PR #2917 +(Mason Hale, head 224bd5e56041c40078ff6b5fa7393733a215de5c, research/paired-helper-extension): structure.py (Jeremy +Diviney's PR2908 two-sided certificate checker), vendor/audit_local.py (PR2833's independent exact auditor, icekylinx +attribution), vendor/preload_move.py (Jeremy Kothe's PR2894 frame accounting and cleanup), allocation/ORDER.json, +allocation/DISPATCH.json and allocation/vendor/ (independent_owners.py: Tekalign's independent owner checker as vendored +by PR2839/PR2917; PLAN.json.gz, TEMPLATE.json.gz); PR #2957 (Jeremy Kothe, head b74b25f3ccc84c16e1a801d73b2f47e5ea764c78, +research/paired-extension-cap-fill-swaps): vendor/declared_rewrites.py (the pure applier of the fourteen declared +rewrites) and comparators/PR2957-CLAIM.json; PR #2966 (Jeremy Kothe, head e62d3eb9005117d82a9babcfa937ecc53237c490, +research/paired-extension-normal45-rewrites): comparators/PR2966-CLAIM.json; PR #2969 (Dugongue, head +e2ca469b08385d3d5e29a918d66dbefaf889e9f3, research/paired-swap-normal45): allocation/baseline/ (its CLAIM.json and its +allocation ORDER.json and PROFILE.json); and PR #2930 (head 81f3b5d12977eba09e06fbff729167d59faabe90): tools/relax.py, +tools/root.py, tools/relax_exact.py. +data/REWRITES-2957.json is Jeremy Kothe's PR2957 rewrite list, re-addressed to this package's stage-2 word with exact +preimages (every entry keeps a credit field). producer.py follows PR2917's producer.py (Mason Hale) for its paired steps; +verify.py, check_allocation.py, check_cap.py, run_registered.py and reproduce.py adapt our PR2942 versions of PR2917's and +PR2930's; tools/audit_allocation_moment.py is PR2917's exact moment auditor with only its authenticated baseline changed (to +the PR2969 headline); tools/derive_adapters.py generalizes PR2917's adapter derivation (PR2908, Jeremy Diviney); +tools/build_overlay.py follows the overlay conventions of PR2908's and PR2917's builders. construction/allocation/ retains +the flow model of PR2857/PR2843 (Yiyang Lu, Marius-Paul Dumitrean) as adapted for this allocation. All original notices of +the exported predecessor packages remain in force. + +Derived work (Apache-2.0): this package (`research/rank7-restore-carrier-skips`) builds on PR #2979 (Marius-Paul Dumitrean, head be191346, research/rank7-joint-endframes) and PR #3015 (Jeremy Kothe, jeremykothe2, research/rank7-joint-endframes-restore-edit), retained byte-identical except for the files named in README.md, plus two declared restore edit blocks (`R1_E42` and `R2_E7` in `edits/EDITS.json` and `edits/FINAL-WORD-*.json.gz`) and their re-derived certificates and complete fresh-native admission and release receipts by dcharb78, with AI assistance. PR #2979's own evidence is kept under evidence/pr2979/. diff --git a/research/staged-release-retiming-t530/owner-audit/upstream/independent_literal.py b/research/staged-release-retiming-t530/owner-audit/upstream/independent_literal.py new file mode 100644 index 0000000000..32755776c1 --- /dev/null +++ b/research/staged-release-retiming-t530/owner-audit/upstream/independent_literal.py @@ -0,0 +1,128 @@ +# SPDX-License-Identifier: Apache-2.0 +# Adapted from PR3605; retained attribution in UPSTREAM-SOURCE-CREDITS.md. +import sys +if not __debug__ or sys.flags.optimize: + raise RuntimeError("Enabled assertions required before owner replay") +"""Path-adapted copy of the parent independent owner audit. +Original SHA256 1001cb1c8b4ee1f93c23b58b094565ec1b3931eee0ea091a23504696e380be9e. +Filesystem/source authentication and output paths adapted; mathematical predicates retained. +""" +"""Independent vectorized audit of the literal staged-pair owner journal. + +No optimizer, producer, inherited owner checker or reconstructor is imported. +Uses the source execution template and the actual checked native frame tables. +""" +from pathlib import Path +from collections import Counter +import gzip,hashlib,json,os,sys +import numpy as np +R=Path(__file__).resolve().parent +if not __debug__:raise SystemExit('unoptimized Python required') +for _key in ('OWNER_SOURCE_REPO','OWNER_LITERAL_DIR','OWNER_NATIVE_DIR','OWNER_AUDIT_OUTPUT'): + if not os.environ.get(_key):raise SystemExit('missing '+_key) +A=Path(os.environ['OWNER_LITERAL_DIR']).resolve() +NATIVE=Path(os.environ['OWNER_NATIVE_DIR']).resolve() +S=Path(os.environ['OWNER_SOURCE_REPO']).resolve()/'research/rank7-joint-endframes/allocation/vendor' +def need(v,m): + if not v:raise ValueError(m) +def sha(p):return hashlib.sha256(p.read_bytes()).hexdigest() +def read(p): + b=p.read_bytes();return json.loads(gzip.decompress(b) if p.suffix=='.gz' else b) +def rank(v): + piv={} + for q in v: + while q: + h=q.bit_length() + if h in piv:q^=piv[h] + else:piv[h]=q;break + return len(piv) +for rel,digest in read(R/'ARTIFACTS.json').items(): + f=R/rel;need(f.is_file() and not f.is_symlink() and sha(f)==digest,'frozen audit artifact '+rel) +paths=[A/n for n in ('FILL.json.gz','ORDER.json','DISPATCH.json','PROFILE.json')]+[S/'PLAN.json.gz',S/'TEMPLATE.json.gz'] +paths += [NATIVE/f'checked-{p}/CANONICAL-WORD.json.gz' for p in ('base','extra')] +source_pins=read(R/'SOURCE-PINS.json') +repo=Path(os.environ['OWNER_SOURCE_REPO']).resolve() +for rel,digest in source_pins['repo_files'].items():need(sha(repo/rel)==digest,'retained source pin '+rel) +for tag in ('base','extra'):need(sha(NATIVE/f'checked-{tag}/CANONICAL-WORD.json.gz')==source_pins['native_canonical'][tag]['canonical_sha256'],'actual native canonical pin') +pins={str(p):sha(p) for p in paths} +expected=read(R/'EXPECTED.json');need(hashlib.sha256(gzip.decompress(paths[0].read_bytes())).hexdigest()==expected['payload_sha256'],'freshT530payload') +baseorder=read(R/'ORDER37.json')+[[s,r+37]for s,r in read(R/'T16-ORDER.json')] +need(read(paths[1])==[[s,r+53*cp]for s,r in baseorder for cp in range(10)],'exactmixedsourceclock') +basedispatch={(s,r):p for s,r,p in read(R/'DISPATCH37.json')};basedispatch.update({(s,r+37):p for s,r,p in read(R/'T16-DISPATCH.json')}) +need(read(paths[2])==[[s,r+53*cp,basedispatch[s,r]]for s,r in baseorder for cp in range(10)],'exactsourceproviderdispatch') +order=read(paths[1]);dispatch=read(paths[2]);profile={int(k):v for k,v in read(paths[3]).items()};plan=read(paths[4]);template=read(paths[5]) +T=530;N=9*T +need(len(order)==N and len(set(map(tuple,order)))==N,'call coverage') +clock={tuple(call):t for t,call in enumerate(order)} +need(set(clock)=={(s,r) for s in range(9) for r in range(T)},'exact source calls') +need(all([clock[s,r] for s in range(9)]==sorted(clock[s,r] for s in range(9)) for r in range(T)),'per-replica order') +D={(s,r):p for s,r,p in dispatch};need(len(dispatch)==N and set(D)==set(clock),'dispatch coverage') +need(Counter(D.values())=={'extra': 2090, 'gauge44': 2680},'provider count') +# Reconstruct source windows per replica from the actual source event sequence. +children={x['child']:x['rank'] for x in template['idle_children']};K=max(children)+1 +cap=np.zeros((T,K),dtype=np.int64);lo=np.full((T,K),N,dtype=np.int64);hi=np.full((T,K),-2,dtype=np.int64) +local_pair={x['stage']:x['pair'] for x in template['recipe'] if x['kind']=='local'} +for r in range(T): + touched={};t=None + for ev in template['execution_schedule']: + kind=ev['kind'] + if kind in ('bank_padding_cover_sweep','translate_every_live_family'):continue + if kind=='local_cover_sweep': + t=clock[ev['stage'],r];touched[local_pair[ev['stage']]]=t + elif kind=='bridge': + need(t is not None,'bridge source');touched[ev['src']]=t;touched[ev['dst']]=t + elif kind=='idle_cover_sweep': + need(t is not None,'idle source') + for c in ev['child_indices']: + if c in children: + need(cap[r,c]==0,'unique source child');cap[r,c]=children[c];lo[r,c]=touched.get(ev['pair'],-1);hi[r,c]=t + else:need(kind in ('terminal_Y_translations','terminal'),'known source event') +need(np.all(cap[:,list(children)]>0),'all source windows') +fam=np.full(K,-1,np.int64) +for c in children:fam[c]=2*plan['pairs'][str(c)]+plan['sides'][str(c)] +widths={};L=None +for tag,pid in [('base','gauge44'),('extra','extra')]: + w=read(NATIVE/f'checked-{tag}/CANONICAL-WORD.json.gz') + need(w['R']==408 and len(w['zero_buffers'])==91,'native helper stock') + widths[pid]=np.array([rank(w['frames'][w['final'][224+h]])-rank(w['frames'][w['start'][224+h]]) for h in range(408)],dtype=np.int64) + need(Counter(widths[pid])=={4:26,5:2,6:18,7:52,8:97,9:213},'actual native widths') + loc={int(k):v for k,v in w['local_profile'].items()} + need(L is None or L==loc,'common actual native bill');L=loc +need(L=={1:2439,2:726,3:224,4:102,5:20,8:8},'new local bill') +bycall=np.stack([widths[D[tuple(call)]] for call in order]) +j=read(A/'FILL.json.gz');need(j['columns']==['time','helper','owner_replica','child','port','offset'] and j['dispatch_overrides']==[],'journal schema') +need(all(len(row)==6 and all(type(v) is int for v in row) for row in j['rows']),'literal integer roles') +rows=np.array(j['rows'],dtype=np.int64);del j +need(rows.shape==(N*408,6),'literal role shape') +need(np.array_equal(rows[:,0],np.repeat(np.arange(N),408)) and np.array_equal(rows[:,1],np.tile(np.arange(408),N)),'complete literal ordered helper identities') +t,h,o,c,p,z=rows.T +need(np.all((o>=0)&(o=0)&(c=0)&(p<112)),'owner bounds') +need(np.all(cap[o,c]>0),'declared source child') +need(np.all((lo[o,c]=0)&(z+w<=cap[o,c])),'actual widths and capacity') +binid=(o*K+c)*112+p +idx=np.lexsort((t,binid));bins=binid[idx];ws=w[idx];starts=np.r_[True,bins[1:]!=bins[:-1]] +cs=np.cumsum(ws,dtype=np.int64)-ws;baseline=np.maximum.accumulate(np.where(starts,cs,0));expected=cs-baseline +need(np.array_equal(z[idx],expected),'every chronological pending mask is a compact prefix') +used=np.zeros(T*K*112,np.int64);np.add.at(used,binid,w) +allcap=np.repeat(cap.reshape(-1),112);valid=allcap>0 +need(np.all(used[~valid]==0) and np.all(used<=allcap),'full used-bin mass') +idle=Counter(map(int,(allcap-used)[valid]));idle.pop(0,None) +H=Counter({r:n*N for r,n in L.items()});H.update(idle) +need(dict(H)==profile and sum(r*n for r,n in H.items())==65088*T,'independent complete histogram') +# Small semantic predicates test each independent gate on actual changed inputs. +controls=[] +def reject(name,test): + need(not test(), 'control accepted '+name);controls.append(name) +reject('duplicate helper',lambda: np.array_equal(np.r_[rows[0,1],rows[:-1,1]],np.tile(np.arange(408),N))) +reject('strict lower endpoint used as available',lambda: bool(lo[o[0],c[0]]=0 + i=len(self.to);self.to.extend((v,u));self.cap.extend((int(capacity),0));self.adj[u].append(i);self.adj[v].append(i+1);return i + def maxflow(self,s,t,limit): + total=0;n=len(self.adj) + while total0:net.add(ss,n,b);target+=b + elif b<0:net.add(n,tt,-b) + got=net.maxflow(ss,tt,target) + assert got==target,('copy circulation',copy,got,target,dict(dg),dict(db)) + selected=[];wc=Counter();gc=Counter();bc=set() + for key,e in handles.items(): + n=net.cap[e^1] + assert n in (0,1) + if n: + b,w=key;i=bucket[key].pop();selected.append(i);wc[w]+=1;g=int(bin_group[b]);gc[g]+=1 + assert b not in bc;bc.add(b);db[b]-=1;dg[g]-=1;copies[i]=copy + assert len(selected)==408 and wc==Counter(dict(zip(W,INV))) + assert all(n<=group_n[g] for g,n in gc.items()) + assert max(db.values(),default=0)<=R-1 and all(n<=(R-1)*group_n[g] for g,n in dg.items()) + stats['flows']+=1;stats['max_nodes']=max(stats['max_nodes'],tt+1);stats['max_edges']=max(stats['max_edges'],len(net.to)//2) + return copies,stats diff --git a/research/staged-release-retiming-t530/owner-audit/upstream/portable_expand.py b/research/staged-release-retiming-t530/owner-audit/upstream/portable_expand.py new file mode 100644 index 0000000000..431654fe59 --- /dev/null +++ b/research/staged-release-retiming-t530/owner-audit/upstream/portable_expand.py @@ -0,0 +1,126 @@ +# SPDX-License-Identifier: Apache-2.0 +# Adapted from PR3605; retained attribution in UPSTREAM-SOURCE-CREDITS.md. +import sys +if not __debug__ or sys.flags.optimize: + raise RuntimeError("Enabled assertions required before owner replay") +"""Reconstruct the S10 mixedT53 literal owners by deterministic integral networks. +No optimization is run. Requires explicit OWNER_SOURCE_REPO. Expected payload is the fresh independently audited T530 output, never a predecessor owner receipt. +This optional reconstruction takes several minutes and does not run admission. +""" +from pathlib import Path +from array import array +from collections import Counter,defaultdict +import argparse,gzip,hashlib,json,time +import importlib.util +def module(name,file): + spec=importlib.util.spec_from_file_location(name,Path(__file__).resolve().parent/file);m=importlib.util.module_from_spec(spec);spec.loader.exec_module(m);return m +_candidate=module('t530_candidate','verify_candidate.py');candidate_check=_candidate.check;v=_candidate.v +common=v.common;HERE=Path(__file__).resolve().parent;W=v.W;INV=v.INV;LOCAL=v.LOCAL;P=v.P +def check(cert):return candidate_check(cert,'concatenated') +copy_colors=module('t530_network','integral_network.py').copy_colors + +def authenticate(): + pins=common.read(HERE/'INPUT-PINS.json') + for rel,digest in pins.items(): + if common.sha(HERE/rel)!=digest:raise ValueError('changedbuilderinput '+rel) + return pins + +class Rows: + def __init__(self,calls,task_width,task_bin,owner,child,port,order,dispatch,providers): + self.calls,self.width,self.bin,self.owner,self.child,self.port=calls,task_width,task_bin,owner,child,port + self.order,self.dispatch,self.providers=order,dispatch,providers + def __len__(self):return len(self.calls)*408 + def __iter__(self): + offset=array('B',[0])*len(self.owner) + for t,tasks in enumerate(self.calls): + pool=defaultdict(list);pid=self.dispatch[tuple(self.order[t])] + for h,w in enumerate(self.providers[pid]['widths']):pool[w].append(h) + call=[] + for i in sorted(tasks,key=lambda i:(self.width[i],i)): + w=self.width[i];h=pool[w].pop();b=self.bin[i];call.append((h,b,w)) + assert not any(pool.values()) + for h,b,w in sorted(call): + z=offset[b];offset[b]+=w + yield [t,h,self.owner[b],self.child[b],self.port[b],z] + +def write_fill(path,rows): + payload=hashlib.sha256();prefix=json.dumps({'columns':['time','helper','owner_replica','child','port','offset'],'dispatch_overrides':[]},sort_keys=True,separators=(',',':'))[:-1]+',"rows":[' + with path.open('wb') as raw,gzip.GzipFile(filename='',mode='wb',fileobj=raw,compresslevel=1,mtime=0) as out: + data=prefix.encode();out.write(data);payload.update(data) + for j,row in enumerate(rows): + data=((',' if j else '')+json.dumps(row,separators=(',',':'))).encode();out.write(data);payload.update(data) + data=b']}\n';out.write(data);payload.update(data) + return dict(rows=len(rows),sha256=common.sha(path),payload_sha256=payload.hexdigest()) + +def main(): + ap=argparse.ArgumentParser();ap.add_argument('--out',type=Path,required=True);ap.add_argument('--owner-check',action='store_true');a=ap.parse_args() + pins=authenticate();cert=common.read(HERE/'CANDIDATE.json');primal=check(cert);S=cert['S'];G=cert['groups'];T=53*S + assert T<65536 and S<=128 and len(G)<65536 and 477*S*408<2**32 + c=common.context();order45=cert['order'];win=c.owner.windows(c.template,order45,53);groups=defaultdict(list) + for (o,ch),(cap,lo,hi) in win.items(): + for p in range(112):groups[cap,lo,hi].append((o,ch,p)) + groupkeys=sorted(groups);assert [[*g,len(groups[g])] for g in groupkeys]==G + # Source child windows sharing a physical family are pairwise disjoint. + fw=defaultdict(list) + for (o,ch),(cap,lo,hi) in win.items():fw[o,c.families[ch]].append((lo,hi)) + for intervals in fw.values(): + for j,(lo,hi) in enumerate(intervals):assert all(max(lo,l)>=min(hi,h) for l,h in intervals[j+1:]) + xg=defaultdict(list);zg=defaultdict(list) + for gi,q,n in cert['x']:xg[gi].append((q,n)) + for gi,t,w,n in cert['z']:zg[gi].append((t,w,n)) + task_width=array('B');task_bin=array('I');bin_group=array('H');required=array('b');macro=[array('I') for _ in range(477)];bin_ranges=[] + for gi,g in enumerate(G): + bstart=len(bin_group);available=defaultdict(lambda:array('I')) + for q,n in sorted(xg[gi]): + widths=[w for w,k in zip(W,q) for _ in range(k)] + for _ in range(n): + b=len(bin_group);bin_group.append(gi);required.append(-1) + for w in widths: + i=len(task_width);task_width.append(w);task_bin.append(b);available[w].append(i) + cursor=Counter() + for t,w,n in sorted(zg[gi]): + ids=available[w][cursor[w]:cursor[w]+n];assert len(ids)==n;macro[t].extend(ids);cursor[w]+=n + assert all(cursor[w]==len(ids) for w,ids in available.items()) + assert len(bin_group)-bstart==g[3]*S;bin_ranges.append((bstart,len(bin_group))) + assert len(task_width)==477*S*408 + actual=[array('I') for _ in range(477*S)];group_n={gi:g[3] for gi,g in enumerate(G)};stats=Counter();t0=time.monotonic() + for t,indices in enumerate(macro): + colors,stat=copy_colors(sorted(indices),task_bin,task_width,bin_group,group_n,S) + for i,cp in colors.items(): + actual[S*t+cp].append(i);b=task_bin[i];gi=bin_group[b] + if t==G[gi][2]:required[b]=max(required[b],cp) + stats['flows']+=stat['flows'];stats['max_nodes']=max(stats['max_nodes'],stat['max_nodes']);stats['max_edges']=max(stats['max_edges'],stat['max_edges']) + if t%40==0:print('PORTABLE_CALL_DECOMPOSITION',t,'seconds',round(time.monotonic()-t0,2),flush=True) + assert all(len(call)==408 for call in actual) + owners=array('H',[0])*len(bin_group);children=array('H',[0])*len(bin_group);ports=array('B',[0])*len(bin_group) + for gi,(lo,hi) in enumerate(bin_ranges): + base=groups[groupkeys[gi]];m=len(base) + for j,b in enumerate(sorted(range(lo,hi),key=lambda b:(required[b],b),reverse=True)): + cp=S-1-j//m;o,ch,p=base[j%m];assert cp>=required[b] + owners[b]=o+53*cp;children[b]=ch;ports[b]=p + order=[[s,r+53*cp] for s,r in order45 for cp in range(S)];t8dispatch={(s,r):pid for s,r,pid in common.read(HERE/'T16-DISPATCH.json')};dispatch={(s,r+53*cp):(c.dispatch[s,r] if r<37 else t8dispatch[s,r-37]) for s,r in order45 for cp in range(S)} + providers=common.read(HERE/'PROVIDERS.json') + for provider in providers.values():provider['actual_paid_profile']={int(k):v for k,v in provider['actual_paid_profile'].items()} + for pid,provider in providers.items(): + assert provider['widths']==[w-int(h in (389,397)) for h,w in enumerate(c.providers[pid]['widths'])] + assert provider['actual_paid_profile']==LOCAL + a.out.mkdir(parents=True,exist_ok=False) + for name,obj in [('ORDER.json',order),('DISPATCH.json',[[s,r,dispatch[s,r]] for s,r in order]),('PROFILE.json',cert['profile']),('PROVIDERS.json',common.read(HERE/'PROVIDERS.json'))]: + # The source profile file uses indented sorted-rank formatting. + if name=='PROFILE.json':data=json.dumps({int(k):v for k,v in sorted(cert['profile'].items(),key=lambda kv:int(kv[0]))},indent=2)+'\n' + else:data=json.dumps(obj,separators=(',',':'))+'\n' + (a.out/name).write_text(data) + assert common.sha(a.out/name)==common.read(HERE/'EXPECTED.json')['literal_files'][name],('changedliteralinput',name) + rows=Rows(actual,task_width,task_bin,owners,children,ports,order,dispatch,providers);made=write_fill(a.out/'FILL.json.gz',rows) + expected=common.read(HERE/'EXPECTED.json') + # Container bytes are provenance only: zlib streams may vary across runtimes. + assert made['rows']==477*S*408==expected['rows'] and made['payload_sha256']==expected['payload_sha256'] + assert primal['profile']=={int(k):v for k,v in cert['profile'].items()} + report=dict(status='PASS_STANDARD_LIBRARY_SEMANTIC_LITERAL_REPLAY',replicas=T,calls=477*S,roles=len(rows),physical=896*T+509,materialized=made,decomposition=dict(stats),primal=primal,fresh_retained_owner_check=False,scope='Fresh mixedT53S10 exact integer networks and literal generation. No predecessor owner receipt is reused as candidate proof. Fresh independent literal audit and full release required.') + if a.owner_check: + fill={'columns':['time','helper','owner_replica','child','port','offset'],'dispatch_overrides':[],'rows':rows} + result,_,_=c.owner.check(T,order,fill,dispatch,cert['profile'],c.plan,c.template,providers);report['fresh_retained_owner_check']=True;report['owner_check']=result + (a.out/'PORTABLE-REPLAY.json').write_text(json.dumps(report,indent=2,sort_keys=True)+'\n') + print('PORTABLE_REPLAY_PASS',json.dumps(made),flush=True) + +if __name__=='__main__':main() diff --git a/research/staged-release-retiming-t530/owner-audit/upstream/source_context.py b/research/staged-release-retiming-t530/owner-audit/upstream/source_context.py new file mode 100644 index 0000000000..9731888ac7 --- /dev/null +++ b/research/staged-release-retiming-t530/owner-audit/upstream/source_context.py @@ -0,0 +1,32 @@ +# SPDX-License-Identifier: Apache-2.0 +# Adapted from PR3605; retained attribution in UPSTREAM-SOURCE-CREDITS.md. +import sys +if not __debug__ or sys.flags.optimize: + raise RuntimeError("Enabled assertions required before owner replay") +"""Solver-independent integer primal check of the new aggregate owner flow. + +Standard library only. Source geometry is read from the attributed frozen source +template through its retained window routine; literal copied owners are checked +separately. This certifies one finite primal, not LP optimality. +""" +from pathlib import Path +from collections import Counter,defaultdict +import sys,json,gzip,hashlib,os +if not __debug__: + raise SystemExit('unoptimized Python required by retained owner engines') +HERE=Path(__file__).resolve().parent +if not os.environ.get('OWNER_SOURCE_REPO'): + raise SystemExit('OWNER_SOURCE_REPO must identify the declared source checkout or export') +ROOT=Path(os.environ['OWNER_SOURCE_REPO']).resolve() +P=ROOT/'research/coupled-carrier-cap740' +# Authenticate every imported predecessor before executing any of its code. +_pins=json.loads((HERE/'SOURCE-PINS.json').read_text()) +for _rel,_digest in _pins['repo_files'].items(): + _path=ROOT/_rel + if not _path.is_file() or _path.is_symlink() or hashlib.sha256(_path.read_bytes()).hexdigest()!=_digest: + raise ValueError('stale retained source '+_rel) +import types +common=types.ModuleType('staged_owner_retained_common');common.__file__=str(P/'common.py') +exec(compile((P/'common.py').read_bytes(),common.__file__,'exec'),common.__dict__) +W=(4,5,6,7,8,9);INV=Counter(dict(zip(W,(26,2,18,52,97,213)))) +LOCAL={1:2439,2:726,3:224,4:102,5:20,8:8} diff --git a/research/staged-release-retiming-t530/owner-audit/upstream/test_owner_guards.py b/research/staged-release-retiming-t530/owner-audit/upstream/test_owner_guards.py new file mode 100644 index 0000000000..fbe816a2ac --- /dev/null +++ b/research/staged-release-retiming-t530/owner-audit/upstream/test_owner_guards.py @@ -0,0 +1,22 @@ +# SPDX-License-Identifier: Apache-2.0 +import pathlib,json,copy,subprocess,sys,tempfile,shutil,importlib.util +P=pathlib.Path(__file__).resolve().parent +def need(x,m): + if not x:raise ValueError(m) +def main(): + count=0 + with tempfile.TemporaryDirectory()as t: + d=pathlib.Path(t);out=d/'must-not-exist' + for name in ('verify_owner.py','verify_candidate.py','portable_expand.py','independent_literal.py','integral_network.py','source_context.py'): + r=subprocess.run([sys.executable,'-I','-O','-B',str(P/name),'--out',str(out)],capture_output=True,text=True) + need(r.returncode and 'Enabled assertions required'in r.stderr and not out.exists(),'optimized gate '+name);count+=1 + q=d/'corrupt';shutil.copytree(P,q);(q/'CANDIDATE.json').write_bytes((q/'CANDIDATE.json').read_bytes()+b'x') + r=subprocess.run([sys.executable,'-I','-B',str(q/'verify_owner.py')],capture_output=True,text=True);need(r.returncode and 'frozen owner artifact'in r.stderr,'certificate corruption');count+=1 + spec=importlib.util.spec_from_file_location('check_controls',P/'verify_candidate.py');v=importlib.util.module_from_spec(spec);spec.loader.exec_module(v);x=json.loads((P/'CANDIDATE.json').read_text());v.check(x,'concatenated') + for field,value in [('order',x['order'][::-1]),('groups',[]),('inventory',{}),('profile',{})]: + d=copy.deepcopy(x);d[field]=value + try:v.check(d,'concatenated') + except ValueError:count+=1 + else:raise ValueError('accepted semantic corruption '+field) + print('PASS_OWNER_GUARDS',count) +if __name__=='__main__':main() diff --git a/research/staged-release-retiming-t530/owner-audit/upstream/verify_candidate.py b/research/staged-release-retiming-t530/owner-audit/upstream/verify_candidate.py new file mode 100644 index 0000000000..ac74cbc4b8 --- /dev/null +++ b/research/staged-release-retiming-t530/owner-audit/upstream/verify_candidate.py @@ -0,0 +1,45 @@ +import sys +if not __debug__ or sys.flags.optimize:raise RuntimeError('Enabled assertions required before owner replay') +from pathlib import Path +from collections import Counter,defaultdict +import json,os,importlib.util,hashlib,argparse +P=Path(__file__).resolve().parent +if not os.environ.get('OWNER_SOURCE_REPO'):raise ValueError('explicitOWNER_SOURCE_REPOrequired') +s=importlib.util.spec_from_file_location('actual_owner',P/'source_context.py');v=importlib.util.module_from_spec(s);s.loader.exec_module(v) +def need(x,m): + if not x:raise ValueError(m) +def check(d,kind): + # Regenerate expectedclock from authenticated actualinputstreams, not candidate fields. + import gzip + pins=json.loads((P/'INPUT-PINS.json').read_text()) + for rel,sha in pins.items():need(hashlib.sha256((P/rel).read_bytes()).hexdigest()==sha,'inputpin') + a=json.loads((P/'ORDER37.json').read_text());b=[[i,j+37]for i,j in json.loads((P/'T16-ORDER.json').read_text())] + if kind=='concatenated':order=a+b + else: + from fractions import Fraction as F + order=[z[2]for z in sorted([(F(2*i+1,666),0,z)for i,z in enumerate(a)]+[(F(2*i+1,288),1,z)for i,z in enumerate(b)])] + need(d['order']==order,'actualsourceclock'); + providers=json.loads((P/'PROVIDERS.json').read_text());pins=json.loads((P/'ARTIFACTS.json').read_text());need(hashlib.sha256((P/'PROVIDERS.json').read_bytes()).hexdigest()==pins['PROVIDERS.json'],'providerpin') + for provider in providers.values(): + need(Counter(provider['widths'])==v.INV,'providerwidths');need({int(k):n for k,n in provider['actual_paid_profile'].items()}==v.LOCAL,'providerlocal') + c=v.common.context();win=c.owner.windows(c.template,order,53);g=Counter();fw=defaultdict(list) + for (o,ch),(cap,lo,hi)in win.items():g[cap,lo,hi]+=112;fw[o,c.families[ch]].append((lo,hi)) + need(all(all(max(lo,l)>=min(hi,h)for l,h in rows[i+1:])for rows in fw.values()for i,(lo,hi)in enumerate(rows)),'disjointfamilywindows') + G=[[*k,n]for k,n in sorted(g.items())];need(d['groups']==G,'actualgroups');S=d['S'];need(type(S)is int and S>0,'positiveintegralS');need(d['widths']==list(v.W),'widths');need({int(k):n for k,n in d['inventory'].items()}==dict(v.INV),'actualinventory') + xb=Counter();xw=Counter();idle=Counter();seen=set() + for gi,q,n in d['x']: + need(type(gi)is int and 0<=gi=0 for z in q)and type(n)is int and n>0,'patternintegers');need((gi,tuple(q))not in seen,'duplicatepattern');seen.add((gi,tuple(q))) + used=sum(w*z for w,z in zip(v.W,q));need(used<=G[gi][0]and sum(q)<=S,'patterncapacity');xb[gi]+=n + for w,z in zip(v.W,q):xw[gi,w]+=z*n + if used0,'flowintegers');need((gi,t,w)not in seen,'duplicateflow');seen.add((gi,t,w));need(G[gi][1]=1,'power domain');k=0 + while y>2:y/=2;k+=1 + a=unit(y,b);two=unit(Q(2),b) + for _ in range(k):a=mul(a,two) + return a +def moment(profile,b,W): + need(type(W)is int and W>0 and 0<=b<1,'moment domain') + lo=hi=0 + for r,n in profile.items(): + need(type(r)is int and type(n)is int and 00,'paid child') + a,z=power(Q(73,r),b);lo+=n*r*a;hi+=n*r*z + return Q(lo,S*73*W),Q(hi,S*73*W) diff --git a/research/staged-release-retiming-t530/packing-cap/cap-source/pr3630-check_budget.py b/research/staged-release-retiming-t530/packing-cap/cap-source/pr3630-check_budget.py new file mode 100644 index 0000000000..a1de88c5f7 --- /dev/null +++ b/research/staged-release-retiming-t530/packing-cap/cap-source/pr3630-check_budget.py @@ -0,0 +1,121 @@ +"""Re-enumerate every pattern and certify the fixed-inventory dual. + +Derived from the separate review_budget.py by Ross Richardson with substantial +OpenAI Codex assistance; see ADAPTATIONS.json. No optimizer or cached PASS input. +The source-bound positive-binomial engine is credited to PR3531. +""" +from collections import Counter +from fractions import Fraction as Q +from itertools import product +from pathlib import Path +import argparse, hashlib, json, types +ap = argparse.ArgumentParser(description=__doc__) +ap.add_argument('--predecessor', type=Path, required=True) +ap.add_argument('--out', type=Path, required=True) +a = ap.parse_args() +binomial_source = (a.predecessor / 'vendor/pr3531/binomial.py').read_bytes() +if hashlib.sha256(binomial_source).hexdigest() != '03eebf2be23cab07e5f9e978980fee7b17e10847da5720c3e4e0adb243e8e4fa': + raise ValueError('source-bound binomial engine') +B = types.ModuleType('positive_binomial_dual') +exec(compile(binomial_source, 'PR3531/binomial.py', 'exec'), B.__dict__) +M, T, W = (73, 740, 663040) +CAPS = (8, 16, 32, 48) +WIDTHS = (4, 5, 6, 7, 8, 9) +CAP_TOTAL = (672, 448, 448, 448) +INVENTORY = (26, 2, 18, 52, 97, 213) +H0 = {1: 16417896, 2: 4835160, 3: 1540174, 4: 679321, 5: 143992, 6: 3, 8: 53280, 48: 283185} +HA = {1: 16417892, 2: 4835160, 3: 1540174, 4: 679320, 5: 143993, 7: 3, 8: 53280, 48: 283185} +DELTA = {1: -4, 4: -1, 5: 1, 6: -3, 7: 3} +L = {1: 2439, 2: 726, 3: 224, 4: 102, 5: 20, 8: 8} +C0 = Q('0.001730006549538841847005') +CA = Q('0.001730006690311348872326') +LO = Q('0.001730096363528623534230') +HI = LO + Q(1, 10 ** 24) + +def solve(a, b): + n = len(a) + z = [[Q(v) for v in row] + [Q(b[i])] for i, row in enumerate(a)] + for j in range(n): + k = next((k for k in range(j, n) if z[k][j])) + z[j], z[k] = (z[k], z[j]) + q = z[j][j] + z[j] = [x / q for x in z[j]] + for k in range(n): + if k != j: + q = z[k][j] + z[k] = [x - q * y for x, y in zip(z[k], z[j])] + return [row[-1] for row in z] +patterns = [] +for capacity in CAPS: + for counts in product(*(range(capacity // width + 1) for width in WIDTHS)): + used = sum((n * w for n, w in zip(counts, WIDTHS))) + if used <= capacity: + patterns.append((capacity, counts, capacity - used)) +if not len(patterns) == len(set(patterns)) == 2551: + raise ValueError('dual condition: len(patterns) == len(set(patterns)) == 2551') +column = lambda p: [Q(p[0] == capacity) for capacity in CAPS] + list(map(Q, p[1])) +specs = [(8, (8,), Q(672)), (16, (7, 9), Q(448)), (32, (9, 9, 9), Q(57, 4)), (32, (7, 8, 8, 9), Q(39, 2)), (32, (7, 7, 9, 9), Q(1, 4)), (32, (6, 8, 9, 9), Q(162)), (32, (5, 9, 9, 9), Q(18)), (32, (4, 9, 9, 9), Q(234)), (48, (), Q(1531, 4)), (48, (9, 9, 9, 9, 9), Q(261, 4))] +basis = [(cap, tuple((ws.count(w) for w in WIDTHS)), cap - sum(ws)) for cap, ws, n in specs] +amount = [n for cap, ws, n in specs] +if not all((p in patterns for p in basis)): + raise ValueError('dual condition: all((p in patterns for p in basis))') +columns = [column(p) for p in basis] +A = list(map(list, zip(*columns))) +rhs = list(map(Q, CAP_TOTAL)) + [Q(9 * n) for n in INVENTORY] +if not [sum((a * n for a, n in zip(row, amount))) for row in A] == rhs: + raise ValueError('dual condition: [sum((a * n for a, n in zip(row, amount))) for row in A] == rhs') +if not (solve(A, rhs) == amount and all((n > 0 for n in amount))): + raise ValueError('dual condition: solve(A, rhs) == amount and all((n > 0 for n in amount))') +ideal_idle = Counter() +for p, n in zip(basis, amount): + if p[2]: + ideal_idle[p[2]] += n * T +ideal = Counter({r: 9 * T * n for r, n in L.items()}) +ideal.update(ideal_idle) +if not all((Q(n).denominator == 1 for n in ideal.values())): + raise ValueError('dual condition: all((Q(n).denominator == 1 for n in ideal.values()))') +ideal = {r: int(n) for r, n in ideal.items()} +if not sum((r * n for r, n in ideal.items())) == sum((r * n for r, n in HA.items())) == 65088 * T: + raise ValueError('dual condition: sum((r * n for r, n in ideal.items())) == sum((r * n for r, n in HA.items())) == 65088 * T') +root_enclosures = {} +for name, profile, lo, hi in [('predecessor', H0, C0, C0 + Q(1, 10 ** 24)), ('candidate_A', HA, CA, CA + Q(1, 10 ** 24)), ('relaxed_ceiling', dict(ideal), LO, HI)]: + below = B.moment(profile, lo, W) + above = B.moment(profile, hi, W) + if not below[1] < 1 < above[0]: + raise ValueError('dual condition: below[1] < 1 < above[0]') + root_enclosures[name] = {'lower': str(lo), 'upper': str(hi), 'moment_at_lower': list(map(str, below)), 'moment_at_upper': list(map(str, above))} +cache = {} + +def f(rank, b): + if rank == 0: + return (Q(0), Q(0)) + if (rank, b) not in cache: + cache[rank, b] = tuple((73 * x for x in B.moment({rank: 1}, b, 1))) + return cache[rank, b] +dual_symbolic = [solve(list(map(list, zip(*A))), [int(i == j) for i in range(10)]) for j in range(10)] + +def coefficients(p): + a = column(p) + out = Counter({p[2]: Q(1)}) if p[2] else Counter() + for j, bp in enumerate(basis): + if bp[2]: + out[bp[2]] -= sum((x * y for x, y in zip(a, dual_symbolic[j]))) + return {r: n for r, n in out.items() if n} +tight = [] +strict = [] +coefficient_hash = hashlib.sha256() +for p in patterns: + coeff = coefficients(p) + coefficient_hash.update(json.dumps([p, sorted(((r, str(n)) for r, n in coeff.items()))], separators=(',', ':')).encode()) + if not coeff: + tight.append(p) + continue + lower = sum((n * f(r, LO if n > 0 else HI)[0 if n > 0 else 1] for r, n in coeff.items())) + if not lower > 0: + raise ValueError('dual condition: lower > 0') + strict.append((lower, p)) +if not (len(tight), len(strict)) == (12, 2539): + raise ValueError('dual condition: (len(tight), len(strict)) == (12, 2539)') +result = dict(status='PASS_ALL_2551_FIXED_INVENTORY_PATTERNS', patterns=len(patterns), strict=len(strict), symbolically_zero=len(tight), coefficient_sha256=coefficient_hash.hexdigest(), root_enclosures=root_enclosures, ideal_profile=ideal, min_reduced_cost_lower=str(min(strict)[0]), scope='Finite exhaustive dual plus written scaling proof for every positive integer T with the same capacities, width inventory, local bill and live stock896T; no chronological attainment or global optimum.') +a.out.write_text(json.dumps(result, sort_keys=True, indent=2) + '\n') +print(result['status']) diff --git a/research/staged-release-retiming-t530/packing-cap/check_retimed_cap.py b/research/staged-release-retiming-t530/packing-cap/check_retimed_cap.py new file mode 100644 index 0000000000..e7a3e5f229 --- /dev/null +++ b/research/staged-release-retiming-t530/packing-cap/check_retimed_cap.py @@ -0,0 +1,107 @@ +"""Exact all-T fixed-capacity packing cap for the local two-release-swap profile. + +Adapted from PR3630 check_budget.py, Ross Richardson / OpenAI Codex assistance, +head bcac7fe04b9b7f7f5d3c27d620561f96c4ae5608. Its pattern basis and exact dual +are retained; local invoice changes by 2H3-2H2-2H1. PR3531's source-bound +positive-binomial engine is retained unchanged. No allocation is constructed. +""" +from collections import Counter +from fractions import Fraction as Q +from itertools import product +from pathlib import Path +import argparse,hashlib,json,tempfile,types,time +def need(ok,msg): + if not ok:raise ValueError(msg) +HERE=Path(__file__).resolve().parent +parser=argparse.ArgumentParser(description=__doc__);parser.add_argument('--out',type=Path,help='Fresh external output directory; default: temporary directory.') +args=parser.parse_args() +OUT=args.out.resolve() if args.out else Path(tempfile.mkdtemp(prefix='retiming-cap-')) +need(OUT!=HERE and HERE not in OUT.parents,'output must be outside package') +need(not args.out or not OUT.exists(),'fresh output directory required') +OUT.mkdir(parents=True,exist_ok=True) +raw=(HERE/'cap-source/binomial.py').read_bytes() +need(hashlib.sha256(raw).hexdigest()=='03eebf2be23cab07e5f9e978980fee7b17e10847da5720c3e4e0adb243e8e4fa', "failed: hashlib.sha256(raw).hexdigest()=='03eebf2be23cab07e5f9e978980fee7b17e10847da5720c3e4e0adb243e8e4fa'") +B=types.ModuleType('positive_binomial_dual');exec(compile(raw,'PR3531/binomial.py','exec'),B.__dict__) +CAPS=(8,16,32,48);WIDTHS=(4,5,6,7,8,9);CAP_TOTAL=(672,448,448,448);INVENTORY=(26,2,18,52,97,213) +L={1:2437,2:724,3:226,4:102,5:20,8:8} +PARENT_L={1:2439,2:726,3:224,4:102,5:20,8:8} +T=740;W=896*T +LITERAL_T=530 +LITERAL_BEFORE={1:11757460,2:3463020,3:1102502,4:486540,5:103690,8:38160,48:202828} +LITERAL=dict(LITERAL_BEFORE) +for r,d in {1:-2,2:-2,3:2}.items():LITERAL[r]+=9*LITERAL_T*d +REALIZED=Q('0.001730394391813963415120') + +def solve(a,b): + n=len(a);z=[[Q(v) for v in row]+[Q(b[i])] for i,row in enumerate(a)] + for j in range(n): + k=next(k for k in range(j,n) if z[k][j]);z[j],z[k]=z[k],z[j];q=z[j][j];z[j]=[x/q for x in z[j]] + for k in range(n): + if k!=j: + q=z[k][j];z[k]=[x-q*y for x,y in zip(z[k],z[j])] + return [row[-1] for row in z] + +patterns=[] +for capacity in CAPS: + for counts in product(*(range(capacity//width+1) for width in WIDTHS)): + used=sum(n*w for n,w in zip(counts,WIDTHS)) + if used<=capacity:patterns.append((capacity,counts,capacity-used)) +need(len(patterns)==len(set(patterns))==2551, 'failed: len(patterns)==len(set(patterns))==2551') +column=lambda p:[Q(p[0]==capacity) for capacity in CAPS]+list(map(Q,p[1])) +specs=[(8,(8,),Q(672)),(16,(7,9),Q(448)),(32,(9,9,9),Q(57,4)),(32,(7,8,8,9),Q(39,2)),(32,(7,7,9,9),Q(1,4)),(32,(6,8,9,9),Q(162)),(32,(5,9,9,9),Q(18)),(32,(4,9,9,9),Q(234)),(48,(),Q(1531,4)),(48,(9,9,9,9,9),Q(261,4))] +basis=[(cap,tuple(ws.count(w) for w in WIDTHS),cap-sum(ws)) for cap,ws,n in specs];amount=[n for cap,ws,n in specs] +A=list(map(list,zip(*[column(p) for p in basis])));rhs=list(map(Q,CAP_TOTAL))+[Q(9*n) for n in INVENTORY] +need(all(p in patterns for p in basis), 'failed: all(p in patterns for p in basis)') +need([sum(a*n for a,n in zip(row,amount)) for row in A]==rhs, 'failed: [sum(a*n for a,n in zip(row,amount)) for row in A]==rhs') +need(solve(A,rhs)==amount and all(n>0 for n in amount), 'failed: solve(A,rhs)==amount and all(n>0 for n in amount)') +idle=Counter() +for p,n in zip(basis,amount): + if p[2]:idle[p[2]]+=n*T +ideal=Counter({r:9*T*n for r,n in L.items()});ideal.update(idle) +need(all(Q(n).denominator==1 for n in ideal.values()), 'failed: all(Q(n).denominator==1 for n in ideal.values())');ideal={r:int(n) for r,n in ideal.items()} +need(sum(r*n for r,n in ideal.items())==65088*T, 'failed: sum(r*n for r,n in ideal.items())==65088*T') +need(sum(r*n for r,n in LITERAL.items())==65088*LITERAL_T, 'failed: sum(r*n for r,n in LITERAL.items())==65088*LITERAL_T') + +def bracket(profile,stock,digits=24): + scale=10**digits;a=0;c=scale//100 + need(B.moment(profile,Q(c,scale),stock)[0]>1, 'failed: B.moment(profile,Q(c,scale),stock)[0]>1') + while c-a>1: + m=(a+c)//2;lo,hi=B.moment(profile,Q(m,scale),stock) + if hi<1:a=m + elif lo>1:c=m + else:raise ValueError('interval too wide') + lo=Q(a,scale);hi=Q(c,scale) + ml=B.moment(profile,lo,stock);mh=B.moment(profile,hi,stock) + need(ml[1]<10 else HI)[0 if n>0 else 1] for r,n in co.items()) + need(lower>0, 'failed: lower>0') + strict.append((lower,p)) +need((len(tight),len(strict))==(12,2539), 'failed: (len(tight),len(strict))==(12,2539)') +fraclow=actuallo/HI;frachigh=actualhi/LO +result={'status':'PASS_RETIMED_ALL_2551_FIXED_INVENTORY_PATTERNS','source_heads':{'PR3630':'bcac7fe04b9b7f7f5d3c27d620561f96c4ae5608','PR3531':'550a660a97308d3aeb3620ee1f4218f77e2c2742'},'source_sha256':{'binomial.py':hashlib.sha256(raw).hexdigest(),'pr3630-check_budget.py':hashlib.sha256((HERE/'cap-source/pr3630-check_budget.py').read_bytes()).hexdigest()},'local_per_call':L,'width_inventory_per_call':dict(zip(WIDTHS,INVENTORY)),'capacity_counts_per_replica':dict(zip(CAPS,CAP_TOTAL)),'ideal_idle_per_replica':{r:str(n/T) for r,n in idle.items()},'ideal_profile_at_T740':ideal,'literal_T530_profile':LITERAL,'cap_root':[str(LO),str(HI)],'cap_root_decimal':[format(float(LO),'.25f'),format(float(HI),'.25f')],'literal_root':[str(actuallo),str(actualhi)],'literal_to_cap_ratio':[str(fraclow),str(frachigh)],'literal_to_cap_ratio_float':[float(fraclow),float(frachigh)],'remaining_root_headroom':[str(LO-actualhi),str(HI-actuallo)],'remaining_root_headroom_float':[float(LO-actualhi),float(HI-actuallo)],'patterns':len(patterns),'strict':len(strict),'symbolically_zero':len(tight),'coefficient_sha256':ch.hexdigest(),'min_reduced_cost_lower':str(min(strict)[0]),'moment_at_cap_lower':list(map(str,ml)),'moment_at_cap_upper':list(map(str,mh)),'moment_at_literal_lower':list(map(str,aml)),'moment_at_literal_upper':list(map(str,amh)),'scope':'All positive integer T under same fixed capacities,widths,new local bill,dimension73,live stock896T. Chronology/family attainment unknown. Modern primitive scope uses kappa approximately b; no universal multiplication cap and no new supplier admission.','seconds':time.time()-start} +# Decimal presentation generated exactly, not through float. +def dec(q): + return str(q.numerator//q.denominator)+'.'+str((q.numerator%q.denominator)*10**24//q.denominator).zfill(24) +result['cap_root_decimal']=[dec(LO),dec(HI)];result['literal_root_decimal']=[dec(actuallo),dec(actualhi)] +(OUT/'RETIMED-PACKING-CAP.json').write_text(json.dumps(result,indent=2,sort_keys=True)+'\n') +print(result['status']);print('cap',result['cap_root_decimal']);print('literal',result['literal_root_decimal']);print('fraction',result['literal_to_cap_ratio_float']);print('headroom',result['remaining_root_headroom_float']);print('seconds',result['seconds']) +print('Fresh evidence:',OUT) diff --git a/research/staged-release-retiming-t530/verify.py b/research/staged-release-retiming-t530/verify.py new file mode 100644 index 0000000000..0ebfd5a37e --- /dev/null +++ b/research/staged-release-retiming-t530/verify.py @@ -0,0 +1,101 @@ +#!/usr/bin/env python3 +"""Bounded fresh finite checks plus explicitly scoped recorded-summary checks. + +Full native/controller/outer admission is the separate full-admission replay. +Prepared with substantial OpenAI Codex assistance. SPDX-License-Identifier: Apache-2.0 +""" +from fractions import Fraction +from pathlib import Path +import hashlib +import json +import os +import subprocess +import sys +import tempfile +import time + +HERE = Path(__file__).resolve().parent +REPO = HERE.parents[1] +PROFILE = {'1':11747920, '2':3453480, '3':1112042, '4':486540, + '5':103690, '8':38160, '48':202828} +LOWER = Fraction('0.001730394391813963415120') +UPPER = Fraction('0.001730394391813963415121') +KAPPA = LOWER - Fraction(1, 10**46) - Fraction(1, 10**70) + + +def require(condition, message): + if not condition: + raise ValueError(message) + + +def read(path): + return json.loads(path.read_text()) + + +def snapshot(): + return {str(p.relative_to(HERE)): hashlib.sha256(p.read_bytes()).hexdigest() + for p in HERE.rglob('*') if p.is_file()} + + +def main(): + require(__debug__ and not sys.flags.optimize, 'Run with assertions enabled') + before = snapshot() + out = Path(tempfile.mkdtemp(prefix='staged-release-retiming-t530-')) + env = dict(os.environ, PYTHONDONTWRITEBYTECODE='1') + env.pop('PYTHONOPTIMIZE', None) + stages = [] + + def run(name, relative, *args): + start = time.monotonic() + command = [sys.executable, '-B', str(HERE / relative), *map(str, args)] + result = subprocess.run(command, cwd=REPO, env=env, + capture_output=True, text=True, timeout=240) + (out / (name + '.log')).write_text(result.stdout + result.stderr) + require(result.returncode == 0, name + ' failed: ' + str(out / (name + '.log'))) + stages.append({'stage':name, 'exit_code':0, 'seconds':time.monotonic()-start}) + print('PASS ' + name, flush=True) + return result.stdout + + run('local', 'local-audit/verify.py', '--out', out / 'local') + run('owner', 'owner-audit/run.py', '--repo', REPO, '--out', out / 'owner') + run('numerics', 'numerics/run.py', '--out', out / 'numerics') + run('packing', 'packing-cap/check_retimed_cap.py', '--out', out / 'packing') + summary = json.loads(run('recorded-summary', 'full-admission/check_recorded_summary.py')) + + local = read(out / 'local/VERIFY.json') + owner = read(out / 'owner/RESULT.json') + owner_run = read(out / 'owner/RUN.json') + moment = read(out / 'numerics/MOMENT.json') + outer = read(out / 'numerics/outer/RESULT.json') + cap = read(out / 'packing/RETIMED-PACKING-CAP.json') + require(local['status'] == 'PASS_PORTABLE_LOCAL_RETIMING_AUDIT', 'local status') + require(owner_run['status'] == 'PASS_LEAN_REGENERATED_OWNER_AUDIT', 'fresh owner status') + require(owner['profile'] == moment['new_profile'] == cap['literal_T530_profile'] + == summary['profile'] == PROFILE, 'all components bind the same full profile') + require(owner['roles'] == 1946160 and owner['calls'] == moment['calls'] == 4770, + 'complete literal role/call coverage') + require(owner['physical'] == summary['physical'] == 475389, 'physical stock') + require(moment['status'] == 'PASS_TWO_ENGINE_EXACT_MOMENT', 'two-engine moment status') + require(list(map(Fraction, moment['root_interval'])) == [LOWER, UPPER], 'exact root interval') + require(list(map(Fraction, cap['literal_root'])) == [LOWER, UPPER], 'independent literal root') + require(outer['status'] == 'PASS_RETIMED_MODERN_OUTER_ARITHMETIC' + and outer['strict_inequalities'] == 63 and outer['rejected_controls'] == 17, + 'complete bounded outer arithmetic') + require(Fraction(outer['kappa']) == Fraction(summary['kappa']) == KAPPA, 'exact endpoint binding') + require(cap['status'] == 'PASS_RETIMED_ALL_2551_FIXED_INVENTORY_PATTERNS' + and (cap['patterns'], cap['strict'], cap['symbolically_zero']) == (2551, 2539, 12), + 'all fixed-inventory patterns') + require(summary['status'] == 'PASS_PUBLIC_RECORDED_SUMMARY_BINDINGS', 'narrow summary status') + require(snapshot() == before, 'package files changed during replay') + receipt = { + 'status':'PASS_STAGED_RELEASE_RETIMING_T530_BOUNDED_CHECKS', + 'kappa':str(KAPPA), 'profile':PROFILE, 'stages':stages, + 'package_files_unchanged':True, + 'scope':'Fresh finite local/operator, regenerated ownership/invoice, exact arithmetic and scoped packing checks; full native/controller/outer admission is retained evidence only in this command. Inherited general assumptions remain.'} + (out / 'RESULT.json').write_text(json.dumps(receipt, indent=2) + '\n') + print(json.dumps(receipt, indent=2)) + print('Fresh evidence: ' + str(out)) + + +if __name__ == '__main__': + main() From 80c0f2906d4ecd66325c42fcf3cfd5070a088bdb Mon Sep 17 00:00:00 2001 From: roger-sato Date: Sun, 18 Oct 2026 22:06:31 +0900 Subject: [PATCH 2/4] Verify public T530 replay end to end and publish execution evidence --- .../staged-release-retiming-t530/PROOF.md | 2 +- .../PUBLIC-FULL-REPLAY.json | 130 ++++++ .../PUBLIC-VALIDATION-FOLLOWUP.json | 54 +++ .../staged-release-retiming-t530/README.md | 10 +- .../staged-release-retiming-t530/TASK.json | 2 +- .../staged-release-retiming-t530/VERIFY.json | 24 ++ .../full-admission/PUBLIC-PINS.json | 16 +- .../full-admission/README.md | 72 +++- .../fresh-replay/ADMISSION-RESULT.json | 382 ++++++++++++++++++ .../full-admission/fresh-replay/ATTEMPT.json | 331 +++++++++++++++ .../full-admission/fresh-replay/CHECK-r1.json | 10 + .../fresh-replay/CONTROLS-r1.json | 10 + .../full-admission/fresh-replay/EVIDENCE.json | 148 +++++++ .../fresh-replay/NATIVE-RECEIPT.json | 113 ++++++ .../fresh-replay/NATIVE-RESULT.json | 41 ++ .../fresh-replay/NATIVE-base-RESULT.json | 55 +++ .../fresh-replay/NATIVE-extra-RESULT.json | 55 +++ .../fresh-replay/RELEASE-RECEIPT.json | 7 + .../fresh-replay/SOURCE-REBUILD-RESULT.json | 30 ++ .../full-admission/fresh-replay/TESTS-r1.json | 23 ++ .../fresh-replay/WRAPPER-RESULT.json | 135 +++++++ .../full-admission/fresh_replay_evidence.py | 283 +++++++++++++ .../staged-release-retiming-t530/verify.py | 59 +++ 23 files changed, 1971 insertions(+), 21 deletions(-) create mode 100644 research/staged-release-retiming-t530/PUBLIC-FULL-REPLAY.json create mode 100644 research/staged-release-retiming-t530/PUBLIC-VALIDATION-FOLLOWUP.json create mode 100644 research/staged-release-retiming-t530/full-admission/fresh-replay/ADMISSION-RESULT.json create mode 100644 research/staged-release-retiming-t530/full-admission/fresh-replay/ATTEMPT.json create mode 100644 research/staged-release-retiming-t530/full-admission/fresh-replay/CHECK-r1.json create mode 100644 research/staged-release-retiming-t530/full-admission/fresh-replay/CONTROLS-r1.json create mode 100644 research/staged-release-retiming-t530/full-admission/fresh-replay/EVIDENCE.json create mode 100644 research/staged-release-retiming-t530/full-admission/fresh-replay/NATIVE-RECEIPT.json create mode 100644 research/staged-release-retiming-t530/full-admission/fresh-replay/NATIVE-RESULT.json create mode 100644 research/staged-release-retiming-t530/full-admission/fresh-replay/NATIVE-base-RESULT.json create mode 100644 research/staged-release-retiming-t530/full-admission/fresh-replay/NATIVE-extra-RESULT.json create mode 100644 research/staged-release-retiming-t530/full-admission/fresh-replay/RELEASE-RECEIPT.json create mode 100644 research/staged-release-retiming-t530/full-admission/fresh-replay/SOURCE-REBUILD-RESULT.json create mode 100644 research/staged-release-retiming-t530/full-admission/fresh-replay/TESTS-r1.json create mode 100644 research/staged-release-retiming-t530/full-admission/fresh-replay/WRAPPER-RESULT.json create mode 100644 research/staged-release-retiming-t530/full-admission/fresh_replay_evidence.py diff --git a/research/staged-release-retiming-t530/PROOF.md b/research/staged-release-retiming-t530/PROOF.md index bd9a0d2696..54ec7d1ab7 100644 --- a/research/staged-release-retiming-t530/PROOF.md +++ b/research/staged-release-retiming-t530/PROOF.md @@ -106,7 +106,7 @@ M(0.001730394391813963415121) > 1. They enclose the root between these adjacent exact decimal rationals without floating-point decisions. The lower endpoint with the two inherited strict margins is the stated κ. The source-bound modern outer arithmetic checks 63 strict inequalities and 17 rejection controls plus an independent balance derivation. The complete derivative release binds the changed providers, actual T530 ownership, physical invoice and modern endpoint; its outer gate independently replays 19 exact obligations. An inherited supplier-only intermediate endpoint is not substituted for this final modern endpoint. -The seven scientific stages all completed with exit code 0 and terminal `PASS_RELEASE`. They operated on source-manifest SHA256 `fb47533a401d1d13719be8b9aab91fe5313931ca62d40dba336eab6a96275aa0`. Public materialization reproduces that source identity. See the README for the precise fresh/reused distinction and why the public normalized summary does not authenticate omitted runtime archive bytes. +The seven scientific stages all completed with exit code 0 and terminal `PASS_RELEASE`. They operated on source-manifest SHA256 `fb47533a401d1d13719be8b9aab91fe5313931ca62d40dba336eab6a96275aa0`. Both the original scientific driver and the subsequently executed public full wrapper reproduced that source identity and completed all seven admission stages. The later wrapper run, at publication commit `abc12f62e4fe9bfcb2e33c84703253c918668351`, is separately recorded in [PUBLIC-FULL-REPLAY.json](PUBLIC-FULL-REPLAY.json). It freshly ran both changed native providers and regenerated the literal ownership construction, while authenticating and reusing the unchanged retained parent and two retained native chains. It adds end-to-end reproduction evidence without changing the algebraic argument, paid profile, endpoint or inherited assumptions. See the README for the limits of normalized recorded-evidence checks, including the omitted runtime archive bytes. ## 6. Conditionality and what remains unproved diff --git a/research/staged-release-retiming-t530/PUBLIC-FULL-REPLAY.json b/research/staged-release-retiming-t530/PUBLIC-FULL-REPLAY.json new file mode 100644 index 0000000000..8a1199c574 --- /dev/null +++ b/research/staged-release-retiming-t530/PUBLIC-FULL-REPLAY.json @@ -0,0 +1,130 @@ +{ + "schema": "public-full-replay-summary/1", + "status": "PASS_PUBLIC_FULL_WRAPPER_END_TO_END", + "executed_publication_commit": "abc12f62e4fe9bfcb2e33c84703253c918668351", + "executed_wrapper_sha256": "9ec43247d2b3af6e4fce61173a4e59aa13b845792776289995cb108285f8aede", + "started_at": "2026-10-18T12:37:09.414302+00:00", + "finished_at": "2026-10-18T12:58:21.088357+00:00", + "wall_seconds": 1271.6689796670107, + "exit_code": 0, + "package_files_unchanged": true, + "environment": { + "python": "3.12.14", + "implementation": "CPython", + "platform": "macOS-27.0-arm64-arm-64bit", + "machine": "arm64", + "packages": { + "numpy": "2.5.4", + "scipy": "1.18.1", + "sympy": "1.14.0", + "mpmath": "1.3.0", + "gmpy2": "2.3.2", + "psutil": "7.2.2" + } + }, + "reproduction_command": "python3.12 -B research/staged-release-retiming-t530/full-admission/reproduce.py --repo . --work /tmp/fresh-retiming-full", + "external_allocation_supplied": false, + "wrapper_code_modified_for_this_run": false, + "source_manifest_sha256": "fb47533a401d1d13719be8b9aab91fe5313931ca62d40dba336eab6a96275aa0", + "source_files": 654, + "kappa": "17303943918139634151199999999999999999999998999999999999999999999999/10000000000000000000000000000000000000000000000000000000000000000000000", + "wrapper_status": "PASS_RETIMER_T530_COMPLETE_CONDITIONAL_RELEASE", + "admission_status": "PASS_REPLICA_ORDER_FILL_DERIVATIVE_COMPLETE_RELEASE", + "release_status": "PASS_RELEASE", + "wrapper_stages": [ + { + "name": "original-materialization", + "exit_code": 0, + "seconds": 0.8973857500241138 + }, + { + "name": "retiming-source", + "exit_code": 0, + "seconds": 0.5103864170378074 + }, + { + "name": "preserved-staged-review", + "exit_code": 0, + "seconds": 0.22735691699199378 + }, + { + "name": "new-retiming-review", + "exit_code": 0, + "seconds": 0.6307750410051085 + }, + { + "name": "fresh-native", + "exit_code": 0, + "seconds": 51.058896915987134 + }, + { + "name": "literal-owners", + "exit_code": 0, + "seconds": 17.447704249992967 + }, + { + "name": "full-admission", + "exit_code": 0, + "seconds": 1195.7171897080261 + } + ], + "admission_stages": [ + { + "name": "owners", + "exit_code": 0, + "seconds": 22.98314816597849 + }, + { + "name": "parent-lift", + "exit_code": 0, + "seconds": 45.674995207984466 + }, + { + "name": "rebind", + "exit_code": 0, + "seconds": 4.468241333030164 + }, + { + "name": "discovery", + "exit_code": 0, + "seconds": 446.7887197919772 + }, + { + "name": "outer-check_ledger.py", + "exit_code": 0, + "seconds": 0.1444164999993518 + }, + { + "name": "outer-independent_check.py", + "exit_code": 0, + "seconds": 0.0577197500388138 + }, + { + "name": "release", + "exit_code": 0, + "seconds": 674.106729666004 + } + ], + "fresh_current_native_providers": 2, + "reused_retained_native_chains": 2, + "fresh_retained_parent": false, + "reused_retained_parent": true, + "literal_roles": 1946160, + "calls": 4770, + "replicas": 530, + "profile": { + "1": 11747920, + "2": 3453480, + "3": 1112042, + "4": 486540, + "48": 202828, + "5": 103690, + "8": 38160 + }, + "runtime_manifest_sha256": "9173c368581deec5a97b8be25608289fd9c50627c2041087386d58010b729081", + "original_release_receipt_sha256": "cfeb33c43399f1c89c477945e77d6e2b8562ac8341f13ff395381149edcfb173", + "fresh_receipts": "full-admission/fresh-replay/", + "fresh_evidence_sha256": "a79042409a73bd696bb3ef48655f9c4995de4fe5ef72eeb2b2e6fffbd0bdabaa", + "evidence_checker_sha256": "ec3f3d2e2fe6ae8d77399d6e2fa7f3cd834d9cb2e01871f89dbcedb24d260de7", + "scope": "A fresh local POSIX execution of the public wrapper from its published commit and a new external work directory, using the existing pinned environment. Both changed providers and the allocation were regenerated; retained native/parent chains were authenticated reuse. New compact receipts are separate from prior scientific and bounded-run records. The public evidence check validates recorded references, not omitted archives or a new scientific run. General inherited theorem assumptions and independent human review remain open." +} diff --git a/research/staged-release-retiming-t530/PUBLIC-VALIDATION-FOLLOWUP.json b/research/staged-release-retiming-t530/PUBLIC-VALIDATION-FOLLOWUP.json new file mode 100644 index 0000000000..194c6259ab --- /dev/null +++ b/research/staged-release-retiming-t530/PUBLIC-VALIDATION-FOLLOWUP.json @@ -0,0 +1,54 @@ +{ + "status": "PASS_STAGED_RELEASE_RETIMING_T530_BOUNDED_CHECKS", + "kappa": "17303943918139634151199999999999999999999998999999999999999999999999/10000000000000000000000000000000000000000000000000000000000000000000000", + "profile": { + "1": 11747920, + "2": 3453480, + "3": 1112042, + "4": 486540, + "5": 103690, + "8": 38160, + "48": 202828 + }, + "stages": [ + { + "stage": "local", + "exit_code": 0, + "seconds": 2.399136708001606 + }, + { + "stage": "owner", + "exit_code": 0, + "seconds": 20.673399958002847 + }, + { + "stage": "numerics", + "exit_code": 0, + "seconds": 0.3085460420115851 + }, + { + "stage": "packing", + "exit_code": 0, + "seconds": 1.8915963330073282 + }, + { + "stage": "recorded-summary", + "exit_code": 0, + "seconds": 0.07189666701015085 + } + ], + "package_files_unchanged": true, + "rejected_recorded_cache_controls": [ + "empty cache inventory", + "empty provider cache subset" + ], + "scope": "Fresh finite local/operator, regenerated ownership/invoice, exact arithmetic and scoped packing checks; full native/controller/outer admission is retained evidence only in this command. Inherited general assumptions remain.", + "environment": { + "python": "3.12.14", + "numpy": "2.5.4" + }, + "registered_package_status": "PASS_REGISTERED_RESEARCH_PACKAGE", + "additional_recorded_evidence_status": "PASS_RECORDED_FRESH_WRAPPER_CHAIN", + "additional_semantic_controls_status": "PASS_FOUR_FRESH_EVIDENCE_REJECTION_CONTROLS", + "note": "Separate follow-up bounded verification after adding the completed full-wrapper record; PUBLIC-VALIDATION.json remains the original publication check." +} diff --git a/research/staged-release-retiming-t530/README.md b/research/staged-release-retiming-t530/README.md index 525c0d40a9..590639bebc 100644 --- a/research/staged-release-retiming-t530/README.md +++ b/research/staged-release-retiming-t530/README.md @@ -32,9 +32,9 @@ python3 -B scripts/research_package.py --package research/staged-release-retimin python3 -B scripts/research_package.py --package research/staged-release-retiming-t530 ``` -The publication run passed all five stages in about 24.2 seconds, with no package writes; see [PUBLIC-VALIDATION.json](PUBLIC-VALIDATION.json). This is bounded local verification, not hosted CI. +The original publication run passed all five stages in about 24.2 seconds, with no package writes; see [PUBLIC-VALIDATION.json](PUBLIC-VALIDATION.json). The follow-up bounded run also passed the added full-wrapper index, receipt-chain and rejection checks; see [PUBLIC-VALIDATION-FOLLOWUP.json](PUBLIC-VALIDATION-FOLLOWUP.json). These are bounded local checks, separate from hosted CI and the full scientific replay. -The second command invokes `verify.py`, which creates a fresh temporary output directory outside the package and performs the following checks. Each component can also be run separately using its README. +The second command invokes `verify.py`, which creates a fresh temporary output directory outside the package and performs the following checks. It also checks the separate full-replay index and rejects incomplete recorded cache inventories. The registered verification then checks the new full-wrapper receipt chain and its four semantic rejection controls. Each component can also be run separately using its README. | Component | Freshly checked by the bounded command | Retained evidence / limit | | --- | --- | --- | @@ -58,9 +58,11 @@ The public reproduction wrapper reconstructs the same **654-file source manifest fb47533a401d1d13719be8b9aab91fe5313931ca62d40dba336eab6a96275aa0 ``` -Its materialization path was tested. The seven scientific stages were executed separately on that identical manifest; the newly packaged all-in-one wrapper has not been rerun end-to-end. [full-admission/README.md](full-admission/README.md) gives exact installation, materialization and complete replay commands. Expect a long run outside generic CI, with enough RAM and disk for regenerated runtime files. +The published all-in-one wrapper at commit `abc12f62e4fe9bfcb2e33c84703253c918668351` subsequently completed end to end in a fresh external work directory, without a supplied allocation or a wrapper code fix. It freshly ran both changed native providers, regenerated all 1,946,160 literal owner roles and completed all seven admission stages. Its seven wrapper stages all exited 0, ending in `PASS_RETIMER_T530_COMPLETE_CONDITIONAL_RELEASE` and terminal `PASS_RELEASE` with the same source manifest and exact κ. All 295 tracked package files remained unchanged during the run. -To keep the public contribution small, it omits regenerated source/runtime/cache archives and the large generated literal fill. Actual non-main dependencies needed for reconstruction are vendored with pins and notices. Public command metadata replaces this session's private execution prefix with `$RESEARCH_WORKSPACE`; original-to-public SHA256 maps make those adapters explicit. The original full release receipt SHA256 was `80e1f422359d7c553493c1e0f2a1b4c4de230f8eb74690e1471a14d65169d110`. A normalized public summary is a publication derivative, not that original byte-level receipt chain. Reproduction regenerates the full chain; the quick summary checker makes only the narrower claims stated above. +This separate replay took **1,271.668979667 seconds (21 minutes 11.67 seconds)** on local macOS 27.0 arm64 with Python 3.12.14, from 2026-10-18 12:37:09.414302 to 12:58:21.088357 UTC. [PUBLIC-FULL-REPLAY.json](PUBLIC-FULL-REPLAY.json) records its environment and evidence separately from the earlier bounded and scientific runs. The unchanged retained parent and two retained native chains were authenticated and reused; no fresh retained bootstrap or independent external reproduction is claimed. [full-admission/README.md](full-admission/README.md) gives exact complete replay and recorded-evidence check commands. The full replay remains a long command outside generic CI, with enough RAM and disk needed for regenerated runtime files. + +To keep the public contribution small, it omits regenerated source/runtime/cache archives and the large generated literal fill. Actual non-main dependencies needed for reconstruction are vendored with pins and notices. Public command metadata replaces this session's private execution prefix with `$RESEARCH_WORKSPACE`; original-to-public SHA256 maps make those adapters explicit. The original full release receipt SHA256 was `80e1f422359d7c553493c1e0f2a1b4c4de230f8eb74690e1471a14d65169d110`. A normalized public summary is a publication derivative, not that original byte-level receipt chain. The subsequent public-wrapper replay has a separate receipt/provenance record and does not overwrite that historical evidence or `PUBLIC-VALIDATION.json`. Reproduction regenerates the full chain; the quick recorded-evidence checkers make only their stated narrower claims. ## Remaining assumptions diff --git a/research/staged-release-retiming-t530/TASK.json b/research/staged-release-retiming-t530/TASK.json index 12b15c5bf8..ea140071e1 100644 --- a/research/staged-release-retiming-t530/TASK.json +++ b/research/staged-release-retiming-t530/TASK.json @@ -45,7 +45,7 @@ "bottleneck_link": "The direct 1-to-4 frame jumps replace two H1+H2 pairs by two H3 children, strictly lowering the moment while preserving allocation interfaces.", "stop_rule": "Stop this scoped contribution after exact local proof, full source-bound T530 release, independent arithmetic/owner checks, reproducible publication and explicit unresolved assumptions; do not infer untested compositions.", "outcome": "completed", - "evidence": "PROOF.md; local-audit/; owner-audit/; numerics/; packing-cap/; full-admission/. The finite conditional construction is complete; all-size premises and independent review remain open.", + "evidence": "PROOF.md; local-audit/; owner-audit/; numerics/; packing-cap/; full-admission/. The published full wrapper also completed end to end at abc12f62e4fe9bfcb2e33c84703253c918668351; PUBLIC-FULL-REPLAY.json records this separate local run with fresh changed native providers and regenerated literal ownership, while the unchanged retained parent and two retained native chains were authenticated and reused. The finite conditional construction is complete; all-size premises, external reproduction and independent review remain open.", "author": "roger-sato", "ai_assistance": "Substantial OpenAI Codex assistance for search, exact proof, code, independent agent cross-checks, integration and documentation; no independent human review claimed.", "open_questions": [ diff --git a/research/staged-release-retiming-t530/VERIFY.json b/research/staged-release-retiming-t530/VERIFY.json index 1b875e41d5..7b90071c8e 100644 --- a/research/staged-release-retiming-t530/VERIFY.json +++ b/research/staged-release-retiming-t530/VERIFY.json @@ -29,6 +29,30 @@ ], "timeout_seconds": 300, "checks": "Fresh local operator/frame proof and controls, literal owner reconstruction/audit, two exact moment engines and transfer, all2551 packing patterns, plus narrow recorded-summary consistency; not a full native/admission replay." + }, + { + "argv": [ + "{python}", + "-B", + "{package}/full-admission/fresh_replay_evidence.py", + "check", + "--root", + "{package}/full-admission/fresh-replay" + ], + "timeout_seconds": 30, + "checks": "Check the separately recorded completed public-wrapper receipt chain." + }, + { + "argv": [ + "{python}", + "-B", + "{package}/full-admission/fresh_replay_evidence.py", + "controls", + "--root", + "{package}/full-admission/fresh-replay" + ], + "timeout_seconds": 30, + "checks": "Reject unfinished attempt, external allocation, missing nested gate and stale terminal receipt at semantic predicates." } ] } diff --git a/research/staged-release-retiming-t530/full-admission/PUBLIC-PINS.json b/research/staged-release-retiming-t530/full-admission/PUBLIC-PINS.json index 9b5dac89c1..052414b656 100644 --- a/research/staged-release-retiming-t530/full-admission/PUBLIC-PINS.json +++ b/research/staged-release-retiming-t530/full-admission/PUBLIC-PINS.json @@ -6,7 +6,7 @@ "MAIN-INPUTS.json": "cdf3c11de5b0e43646043330ced860a8c2ae70cb71fd07c7ccb3589415521cda", "NOTICE": "b49022cb4104d90b182e4c335f670faf45529025b15db77bf0291835083c28bd", "PUBLIC-PROVENANCE.json": "a811de5291da8cca961d7b0b2b66c544b9c4f60e269c8c0834be2ae1b5ae141d", - "README.md": "29cf9c8b0f1dfb8bcfeca48873baceb08774688d8d1bcd58fde12ecc179d7c2e", + "README.md": "8a7029c0001d1a04e4622570b6eac2eb6ff19393be6760714d8f82b7890f252e", "check_recorded_summary.py": "a8993e8e84491790edede5f7dc467be59c1192d352b60197e0b26d592e9067d8", "data/RETIME-AUDIT-base.json": "b3a4fefcb1aa16b16ec4a4481da10afa06f8f2a59c2e77ade8eaa6dd48bc8d0e", "data/RETIME-AUDIT-extra.json": "ddf5b88b7338202a40cc92851c1e95d8fdc0ad97ffc8bc6f680ba162e913fecb", @@ -129,6 +129,20 @@ "evidence/supplier-logs/staged3605-review.log": "de2fa433a259e21f69f10db63667ba6034e0cd35f102a989208e865d042c31c8", "evidence/supplier-logs/strict-t74.log": "e5efcef5cb683fd3be94fbdb0d25fb65bc805b0b2d1417eadf3495f464b5370d", "evidence/supplier-logs/two-sided-helper408-review.log": "6b6be35dc5a9105d9f7fbca2b37952b3865b14ccf6ff1fbba75664241c7fafd8", + "fresh-replay/ADMISSION-RESULT.json": "ac6d69b6028dddfbe8c570592aab46d325689e315c814dcfadac23afea07d383", + "fresh-replay/ATTEMPT.json": "e26e82fd2d22255accae1e5a8c5afc9071e248d4232b083a7882326871fd76c2", + "fresh-replay/CHECK-r1.json": "36d1e22ceedd7d6f06bd2f90b48ad58b451a77d0a5d0f7c5487246a348bbf05b", + "fresh-replay/CONTROLS-r1.json": "f6f76707aaf03f88d6b77ce791889d4f69ae5e076df2d0d31b7653892f44fb57", + "fresh-replay/EVIDENCE.json": "a79042409a73bd696bb3ef48655f9c4995de4fe5ef72eeb2b2e6fffbd0bdabaa", + "fresh-replay/NATIVE-RECEIPT.json": "1353cedccb418383565c0cd31da7447cc4ea73a6fd5ad53ab0482edb4833c053", + "fresh-replay/NATIVE-RESULT.json": "4fd193bce3ee011f0a493fe59a2f7be3c9e52442d2570755cd689d935b776774", + "fresh-replay/NATIVE-base-RESULT.json": "6f9667ce2b083f92edbd2222571760ac6773e95e58d22f12acc0d7e0242554bc", + "fresh-replay/NATIVE-extra-RESULT.json": "ab8305d83699f4a00805f7aef9535568bd89c97bdbac4b0b8dd7853ae3acebd6", + "fresh-replay/RELEASE-RECEIPT.json": "cfeb33c43399f1c89c477945e77d6e2b8562ac8341f13ff395381149edcfb173", + "fresh-replay/SOURCE-REBUILD-RESULT.json": "fb71b88fb0be33d3467ce6976102313345d11dc4170d1f6f626a8c7249581885", + "fresh-replay/TESTS-r1.json": "0be0df7b4be5fb7fb783c32be00478a001469e2fbe6b032940835404b422c24f", + "fresh-replay/WRAPPER-RESULT.json": "0b4a4a2a97ce73cb67881cf20f25f0be03e55fd4a4296df4eafa6f861bc88016", + "fresh_replay_evidence.py": "ec3f3d2e2fe6ae8d77399d6e2fa7f3cd834d9cb2e01871f89dbcedb24d260de7", "reproduce.py": "9ec43247d2b3af6e4fce61173a4e59aa13b845792776289995cb108285f8aede", "scripts/admit_extension.py": "5934268bdf39b4b84a754c5fafa2d18023610066e511056dcb17cdefa6f82c3e", "scripts/admit_extension.py.patch": "dc62088611a384d97a2a47d84e307600269c5ec94f7c86fbc046b8af5de8491c", diff --git a/research/staged-release-retiming-t530/full-admission/README.md b/research/staged-release-retiming-t530/full-admission/README.md index 753b1043bc..0873261cab 100644 --- a/research/staged-release-retiming-t530/full-admission/README.md +++ b/research/staged-release-retiming-t530/full-admission/README.md @@ -1,4 +1,4 @@ -# Source reconstruction and recorded full-admission summary +# Source reconstruction, full replay and recorded evidence The original local run completed fresh native replay for both changed providers and all seven source-bound admission stages. The terminal statuses were @@ -6,6 +6,8 @@ and all seven source-bound admission stages. The terminal statuses were The conditional modern outer value was exactly `0.001730394391813963415120 - 10^-46 - 10^-70`. The inherited all-size assumptions remain; see the package's main proof. +The published full wrapper has subsequently completed end to end as a separate +local run, described below; its receipts do not replace the original evidence. This is a lean public derivative of that evidence. It deliberately omits the complete generated source, runtime and native-cache archives. Their original @@ -68,26 +70,68 @@ Only its consumed source/owner closure is retained, with contributor notices. ## Complete scientific replay -Omit `--materialize-only` to run fresh changed native providers, reconstruct -all 1,946,160 literal owner roles and execute the complete original admission. -Use Python 3.12 with numpy 2.5.4, scipy 1.18.1, sympy 1.14.0, mpmath 1.3.0, +From the repository root, run the full wrapper without `--materialize-only` +or an imported `--allocation`: + +```sh +python3.12 -B research/staged-release-retiming-t530/full-admission/reproduce.py \ + --repo . --work /tmp/fresh-retiming-full +``` + +This runs fresh changed native providers, reconstructs all 1,946,160 literal +owner roles and executes the complete original admission. Use Python 3.12 with +numpy 2.5.4, scipy 1.18.1, sympy 1.14.0, mpmath 1.3.0, gmpy2 2.3.2 and psutil 7.2.2. Assertions must be enabled. All output goes to a -fresh external work directory. The recorded full driver took about 20.3 minutes, -plus native generation. The unchanged retained parent and two retained native +fresh external work directory. The original scientific driver took about 20.3 +minutes, plus native generation. The unchanged retained parent and two retained native chains are authenticated and reused; this is not a fresh retained bootstrap. The complete scientific driver ran successfully before publication, using this -same 654-file source. The public wrapper's materialize-only path was tested; -its full end-to-end wrapper has not been rerun. The public summary checker is -intentionally a smaller claim. Runtime source patches and exact native/admission -driver copies are retained for inspection; no scientific gate was removed. +same 654-file source. The published wrapper has now also run end to end at +commit `abc12f62e4fe9bfcb2e33c84703253c918668351`, in a fresh external work +directory with a regenerated allocation and no wrapper code fix. All seven +wrapper stages and all seven nested admission stages exited 0. It reproduced +the same source manifest and exact κ, ending in +`PASS_RETIMER_T530_COMPLETE_CONDITIONAL_RELEASE` and `PASS_RELEASE`. +All 295 tracked package files remained unchanged during the run. + +The full-wrapper run took **1,271.668979667 seconds (21 minutes 11.67 seconds)** +on local macOS 27.0 arm64, Python 3.12.14 and the dependency versions above, +from 2026-10-18 12:37:09.414302 to 12:58:21.088357 UTC. This was a new work +directory in an already provisioned local environment, not an independent +external or clean-environment reproduction. Both changed native providers were +freshly replayed; the retained parent and two unchanged native chains remained +authenticated reuse. Runtime source patches and exact native/admission driver +copies are retained for inspection; no scientific gate was removed. + +## Separate public full-replay evidence + +[PUBLIC-FULL-REPLAY.json](../PUBLIC-FULL-REPLAY.json) indexes the new run. +Its selected records and original-to-public normalization hashes are in +`fresh-replay/`; the original scientific receipts, source-only reconstruction +receipt and bounded `PUBLIC-VALIDATION.json` remain unchanged. Check the new +recorded evidence and its rejection controls from the repository root: + +```sh +python3 -B research/staged-release-retiming-t530/full-admission/fresh_replay_evidence.py check \ + --root research/staged-release-retiming-t530/full-admission/fresh-replay +python3 -B research/staged-release-retiming-t530/full-admission/fresh_replay_evidence.py controls \ + --root research/staged-release-retiming-t530/full-admission/fresh-replay +``` + +These are recorded-evidence checks; they do not rerun the scientific pipeline +or authenticate omitted archive payloads. Use `reproduce.py` above for a fresh +full computation. The original public summary checker retains its narrower +historical scope. ## Open next questions -- Independently run the public full wrapper from a clean environment. This - checks environment and export portability beyond the tested source rebuild; - first provision the stated dependencies and run in a fresh directory. It - requires time for the full pipeline and remains a separate review action. +- Reproduce the public full wrapper independently in another clean environment + or platform. Its complete path has now passed locally; an external run would + test dependency and platform portability. First provision the stated + dependencies, run the full command in a fresh directory, and compare the + mathematical payloads, source manifest and endpoint. This remains separate + from the inherited general theorem assumptions. - Evaluate the retiming with another chronological allocation only after its full owner/controller/prefix invoice is available. Start by comparing helper interfaces and exact local profiles; no untested composition is claimed. diff --git a/research/staged-release-retiming-t530/full-admission/fresh-replay/ADMISSION-RESULT.json b/research/staged-release-retiming-t530/full-admission/fresh-replay/ADMISSION-RESULT.json new file mode 100644 index 0000000000..9585b62431 --- /dev/null +++ b/research/staged-release-retiming-t530/full-admission/fresh-replay/ADMISSION-RESULT.json @@ -0,0 +1,382 @@ +{ + "actual_expected_helpers": 408, + "comparison_claim_sha256": "656a4c93411b078753783513e2e71b1722a56e7b70120264a38118811982fa77", + "comparison_head": "e2ca469b08385d3d5e29a918d66dbefaf889e9f3", + "comparison_kappa": "17240352247481048785499999999999999999999998999999999999999999999999/10000000000000000000000000000000000000000000000000000000000000000000000", + "comparison_pr": 2969, + "complex_lower": "21629929897674542689/12500000000000000000000", + "dispatch_sha256": "a758a59b001f3bdda07e6a1a98bc8bd0339461dee5ec6b1909925030a043eddb", + "external_input_sha256": { + "$RESEARCH_WORKSPACE/Documents/Codex/2026-10-18/https-github-com-crocswap-integer-mult-2/work/public-full-replay-3642-r1/FILL-legacy.json.gz": "e36d064df51ea93c4ca265e3e330aa71148ea3827bdf5a55144fc20e657a48cb", + "$RESEARCH_WORKSPACE/Documents/Codex/2026-10-18/https-github-com-crocswap-integer-mult-2/work/public-full-replay-3642-r1/allocation/DISPATCH.json": "a758a59b001f3bdda07e6a1a98bc8bd0339461dee5ec6b1909925030a043eddb", + "$RESEARCH_WORKSPACE/Documents/Codex/2026-10-18/https-github-com-crocswap-integer-mult-2/work/public-full-replay-3642-r1/allocation/ORDER.json": "599fb079a23b403f9de9e334d7c463f0cad28f9d69d1f99fcbf93abb72e935eb", + "$RESEARCH_WORKSPACE/Documents/Codex/2026-10-18/https-github-com-crocswap-integer-mult-2/work/public-full-replay-3642-r1/prepared/predecessor/PR2969-CLAIM.json": "656a4c93411b078753783513e2e71b1722a56e7b70120264a38118811982fa77", + "$RESEARCH_WORKSPACE/Documents/Codex/2026-10-18/https-github-com-crocswap-integer-mult-2/work/public-full-replay-3642-r1/prepared/predecessor/adapters/extension_blocknorm.py": "6e6b8683cc87a84e5410c399b1128eb68694f852a3927cb124067f503ed7d7c7", + "$RESEARCH_WORKSPACE/Documents/Codex/2026-10-18/https-github-com-crocswap-integer-mult-2/work/public-full-replay-3642-r1/prepared/predecessor/helpers/lift_parent.py": "9a1edd7d4ab4a2f2ac8d15b42b7e40f93653d65026bac59e4c1ce80b486bd60e", + "$RESEARCH_WORKSPACE/Documents/Codex/2026-10-18/https-github-com-crocswap-integer-mult-2/work/public-full-replay-3642-r1/prepared/predecessor/helpers/reconstruct_replica.py": "5472811c24aef3852dc7e189dff5060076a6c0b25bfde928da50dcfe9b5bdc15", + "$RESEARCH_WORKSPACE/Documents/Codex/2026-10-18/https-github-com-crocswap-integer-mult-2/work/public-full-replay-3642-r1/prepared/predecessor/helpers/replica_parent.py": "48bdbf28f59d80edb266803ec61bf5e22e8fb5e5a0e2b88004b6039147589bd4" + }, + "fill_sha256": "e36d064df51ea93c4ca265e3e330aa71148ea3827bdf5a55144fc20e657a48cb", + "gain": "635916706585853657/100000000000000000000000", + "kappa": "17303943918139634151199999999999999999999998999999999999999999999999/10000000000000000000000000000000000000000000000000000000000000000000000", + "kappa_decimal": "0.0017303943918139634151199999999999999999999998999999999999999999999999", + "native_receipt_sha256": "1353cedccb418383565c0cd31da7447cc4ea73a6fd5ad53ab0482edb4833c053", + "order_sha256": "599fb079a23b403f9de9e334d7c463f0cad28f9d69d1f99fcbf93abb72e935eb", + "package_manifest_sha256": "9173c368581deec5a97b8be25608289fd9c50627c2041087386d58010b729081", + "patches": [ + { + "after_sha256": "52f8b4cec2dab69cbe590e1fd0f7a68e1b35de5a540bd22fd2adfce07a92b46b", + "before_sha256": "faf283eb4edd2e6a1ccb40b3cb3ba30ae54338eaf5ea0a10d84d11d7939502af", + "path": "new/rebind.py", + "replacements": [ + [ + "physical=spec['expected']['live'] + 8 + R + 2)", + "physical=spec['expected']['live'] + 8 + R + 2 + max(len(rd(d / 'CANONICAL-WORD.json.gz').get('zero_buffers', [])) for d in locs.values()))" + ] + ] + }, + { + "after_sha256": "99bef04f24a99088e5c0c9b8f6bbc8386669d8315b8f572d6bbfb932c5d51145", + "before_sha256": "7edb4732b34e5814b27650a55c938626cb50d68f06397744dd4fe451437e90e0", + "path": "geometry_controls.py", + "replacements": [ + [ + " i['complete_invocation_sweeps']=i['bridge_sweeps']=333", + " i['complete_invocation_sweeps']-=1;i['bridge_sweeps']-=1" + ], + [ + " o,i=copy.deepcopy(owner),copy.deepcopy(invoice);fn(o,i);oh=digest(o);i['owner_audit_sha256']=oh", + " o,i=copy.deepcopy(owner),copy.deepcopy(invoice);fn(o,i);assert (o,i)!=(owner,invoice), 'geometry mutant must change actual receipts';oh=digest(o);i['owner_audit_sha256']=oh" + ] + ] + }, + { + "after_sha256": "6cfefe80c02a6c0f243f50ca9e146e1ab1440b84a033d8a71d42be5a5fa27f6b", + "before_sha256": "c43680a2da390f79925547a5ee1919d8a76637cccf98e2c8164b6f667fbc3183", + "path": "verify_release.py", + "replacements": [ + [ + "Fraction(1, 10 ** 3046) - Fraction(1, 10 ** 3022)", + "Fraction(1, 10 ** (spec['outer_refinement']['endpoint_digits'] + 46)) - Fraction(1, 10 ** (spec['outer_refinement']['endpoint_digits'] + 22))" + ], + [ + "epsilon=1-(1025/1024)e-3080", + "epsilon=1-(1025/1024)e-{spec['outer_refinement']['endpoint_digits']+80}" + ], + [ + "at the one 3000-digit rejection call", + "at the one {spec['outer_refinement']['endpoint_digits']}-digit rejection call" + ] + ] + }, + { + "after_sha256": "1dd56009986eb14dd6603c9193c7ad71dd45c7d005bf71c9cd3f916e66f54d98", + "before_sha256": "9e12909c73d3b3a31a45d801ae76c034510d6306400412e474df79bc4f1dc67e", + "path": "outer/check_ledger.py", + "replacements": [ + [ + "assert (m,W)==(73,66304)", + "T=spec['geometry']['replicas']\nassert type(T) is int and T>0\nassert m==73 and W==896*T and W==BJ['live']" + ] + ] + }, + { + "after_sha256": "ebaf637f1f818dac9c0fce0ee3f18df300873105818cea29a8ae9e8b737b5c7d", + "before_sha256": "08ca58abff11bdfba721dc56ab8acf06ec1b7c48a8699a0955cf35324680aca7", + "path": "code/witness.py", + "replacements": [ + [ + " with open(os.environ['WITNESS_RECORD'],'a')as f:f.write(json.dumps([key,got],default=str)+chr(10))", + " import time as _wr_time\n _wr_path=Path(os.environ['WITNESS_RECORD'])\n _wr_lock=_wr_path.with_name(_wr_path.name+'.append.lock')\n _wr_deadline=_wr_time.monotonic()+60\n _wr_fd=None\n while _wr_fd is None:\n try:_wr_fd=os.open(_wr_lock,os.O_CREAT|os.O_EXCL|os.O_WRONLY)\n except FileExistsError:\n if _wr_time.monotonic()>=_wr_deadline:raise TimeoutError('discovery record lock timeout; existing lock preserved')\n _wr_time.sleep(.005)\n try:\n with _wr_path.open('a',encoding='utf-8',newline='\\n')as _wr_out:\n _wr_out.write(json.dumps([key,got],default=str)+chr(10))\n _wr_out.flush()\n finally:\n os.close(_wr_fd)\n _wr_lock.unlink()" + ] + ] + }, + { + "after_sha256": "770d23cb1ac78b485ccc1a26f5d3e2fed7345940f77011579ae90ada4f5cacb1", + "before_sha256": "4b44d5e72e9d677076edc2d20569cdd30f0e21849afd88874d74dfa7d1c767e0", + "path": "verify.py", + "replacements": [ + [ + "run('lift-parent',P/'lift_parent.py','--owners',work/'rebuilt-owners','--out',work/'rebuilt-parent')", + "run('lift-parent',P/'lift_parent.py','--package',P,'--owners',work/'rebuilt-owners','--out',work/'rebuilt-parent')" + ] + ] + }, + { + "after_sha256": "0d8cc021d2401d047aaec79060ec2ea28ba06f12eca8dbf4c60c78bb31975c4e", + "before_sha256": "ebaf637f1f818dac9c0fce0ee3f18df300873105818cea29a8ae9e8b737b5c7d", + "path": "code/witness.py", + "replacements": [ + [ + "PAYLOAD==1<<(192+(GEO['dimension']+1)//2+2*CALLS+4).bit_length()", + "PAYLOAD==1<<(128+(GEO['dimension']+1)//2+18+1330+1+4).bit_length()" + ] + ] + }, + { + "after_sha256": "c5106e0d7a97382677fa228fbade989262347968a0e54acfcf6712aa37e02f47", + "before_sha256": "bb213d0af12218ff7c9c572717e522d8bbeeb2856b87a253f4a7f44e0fd71f15", + "path": "code/invoice_allcold.py", + "replacements": [ + [ + " required_prefix=localbits+input_l2_bits+call_count+bridge_sweeps+4", + " from blocknorm_certificate import certify\n blocknorm=certify(template, {pid:base/'providers'/pid for pid in template['local_providers']})\n assert blocknorm['status'] == 'PASS_TENSOR_BLOCK_NORM_CERTIFICATE'\n assert localbits <= 128, 'actual native scalar/Horner prefix exceeds charged local reserve'\n required_prefix=localbits+input_l2_bits+blocknorm['max_active_depth']+blocknorm['stock_l2_bits']+1+4" + ] + ] + }, + { + "after_sha256": "0d522b09c7fe6a5e62fe80c28f3eefe733557a82d77c6212e5d4b91ffb7e3421", + "before_sha256": "02502a217fe8c9e10229075b50745518beac512c48db20e64c3e06514a4da5b5", + "path": "independent_core.py", + "replacements": [ + [ + " payload = 1 << (192 + (M+1)//2 + 2*len(c['order']) + 4).bit_length()", + " require(localbits <= 128, 'measured native prefix exceeds local reserve')\n payload = 1 << (128 + (M+1)//2 + 18 + 1330 + 1 + 4).bit_length()" + ] + ] + }, + { + "after_sha256": "d598a2ac1e2e8eaee14a8c285e0277a7ae44ca6a15bd2b5cfc67fb40844fb387", + "before_sha256": "c5106e0d7a97382677fa228fbade989262347968a0e54acfcf6712aa37e02f47", + "path": "code/invoice_allcold.py", + "replacements": [ + [ + " complete_invocation_sweeps=call_count,bridge_sweeps=bridge_sweeps,row_prefix_extra=2*payload,", + " complete_invocation_sweeps=call_count,bridge_sweeps=bridge_sweeps,row_prefix_extra=2*payload,blocknorm=blocknorm," + ], + [ + " primitive_arithmetic_margin_bits=4,controller_audit_sha256=", + " tensor_block_norm=blocknorm,partial_cover_margin_bits=1,physical_stock_l2_bits=blocknorm['stock_l2_bits'],primitive_arithmetic_margin_bits=4,controller_audit_sha256=" + ], + [ + "Sum every actual invocation and bridge sweep and take the maximum local scalar/Horner prefix over both orientations of the fixed provider.", + "All invocations and bridge sweeps remain charged. Bound completed-boundary energy by at most eighteen active steps per owner replica, using exact tensor-isomorphic whole-family helper unitaries. Add the full group-indexed physical-stock sup-to-l2 factor and one partial-cover margin, then the maximum local scalar/Horner prefix." + ] + ] + }, + { + "after_sha256": "e051aaa166e01263780d5ae03699690670b597fed6593af4c37a7e978825eb85", + "before_sha256": "0d522b09c7fe6a5e62fe80c28f3eefe733557a82d77c6212e5d4b91ffb7e3421", + "path": "independent_core.py", + "replacements": [ + [ + " prefix = localbits + (M + 1) // 2 + len(c['order']) + c['bridges'] + 4", + " bn=c['blocknorm']\n require(bn['status']=='PASS_TENSOR_BLOCK_NORM_CERTIFICATE' and bn['max_active_depth']==18 and bn['stock_l2_bits']<=1330, 'independent tensor block certificate')\n prefix = localbits + (M + 1) // 2 + bn['max_active_depth'] + bn['stock_l2_bits'] + 1 + 4" + ], + [ + "prefix_formula=dict(local_scalar=localbits, input_l2=(M + 1) // 2, invocations=len(c['order']), bridges=c['bridges'], margin=4)", + "prefix_formula=dict(local_scalar=localbits, input_l2=(M + 1) // 2, invocations=len(c['order']), bridges=c['bridges'], active_block_depth=18,stock_l2=bn['stock_l2_bits'],partial_cover=1,margin=4),blocknorm=bn" + ] + ] + }, + { + "after_sha256": "393323f150d0bb686419804d51cf43d0f58450d2a1e7929725acdd26fdbb3640", + "before_sha256": "2286f00e462ff28abbb3f396095463482a1e063213b9526a7225275980c77eaf", + "path": "audit_mixed.py", + "replacements": [ + [ + "pending=A.check_pending_axes(ctx);receipt=A.check_roles(ctx,roles)", + "import blocknorm_certificate as BN;ctx['blocknorm']=BN.certify_context(ctx,roles,dirs,source_parent=parent);pending=A.check_pending_axes(ctx);receipt=A.check_roles(ctx,roles)" + ] + ] + }, + { + "after_sha256": "0542dde915af8902324db2f59136da078d5256bfaa8f1510f3e59336be7e2680", + "before_sha256": "f25e1e870df5d5a16a1e367b3df8843cb01644ab4b75895d7939af81e4fcb833", + "path": "code/assemble.py", + "replacements": [ + [ + " assert invoice['global_prefix_bits']==max(z['prefix_bits']for p in invoice['providers'].values()for z in p['local'].values())+37+CALLS+CALLS+4", + " bn=invoice['blocknorm']\n assert bn['status']=='PASS_TENSOR_BLOCK_NORM_CERTIFICATE' and bn['replicas']==REPLICAS\n assert bn['max_active_depth']==bn['boundary_depth_bits']==18 and bn['active_calls_per_block']==bn['bridges_per_block']==9\n assert bn['block_width_families']==896 and bn['physical_families']==invoice['physical'] and bn['live_families']==invoice['live']\n assert bn['partial_cover_bits']==1 and bn['input_l2_bits']==37 and bn['local_reserve_bits']==128 and bn['retained_payload_bits']==PAYLOAD\n localbits=max(z['prefix_bits']for p in invoice['providers'].values()for z in p['local'].values())\n assert bn['local_actual_prefix_bits']==localbits and localbits<=128\n assert invoice['global_prefix_bits']==bn['actual_prefix_bits']==localbits+37+18+bn['stock_l2_bits']+1+4\n assert bn['required_reserve_bits']==128+37+18+bn['stock_l2_bits']+1+4= 0 for s in rows), label+' completed exits') + need(all(s['command'][1] == '-B' for s in rows), label+' normal interpreter invocation') + +def validate(records, evidence): + """Semantic checks shared by raw collection, public check and rejection controls.""" + a = records['ATTEMPT.json'] + need(a['schema'] == 'public-end-to-end-attempt/1', 'attempt schema') + need(a.get('exit_code') == 0 and a.get('finished_at'), 'completed exit-zero attempt required') + start, finish = [datetime.fromisoformat(a[k]) for k in ('started_at','finished_at')] + need(finish >= start and a['seconds'] >= 0, 'completed time interval') + need(a['package_files_unchanged'] is True, 'publication inputs unchanged during replay') + need(a['publication_commit'] == COMMIT and a['wrapper_sha256'] == WRAPPER, 'executed commit and wrapper') + command = a['command'] + need(len(command) == 7 and command[1] == '-B' and command[3] == '--repo' and command[5] == '--work', 'full wrapper argv without external allocation or materialize-only') + need(command[2].endswith('/full-admission/reproduce.py'), 'public wrapper entry point') + repo, work = command[4].rstrip('/'), command[6].rstrip('/') + pub = repo+'/research/staged-release-retiming-t530/full-admission' + need(command[2] == pub+'/reproduce.py', 'wrapper within recorded repo') + need(a['package_before']['research/staged-release-retiming-t530/full-admission/reproduce.py'] == WRAPPER, 'before-run wrapper binding') + top = records['WRAPPER-RESULT.json'] + need(top['status'] == 'PASS_RETIMER_T530_COMPLETE_CONDITIONAL_RELEASE', 'complete wrapper result') + need(top['source_manifest_sha256'] == SOURCE and Q(top['kappa']) == K, 'wrapper source and modern kappa') + stages(top['stages'], TOP, 'wrapper') + scripts = [pub+'/vendor/staged-width-t530/replay.py', pub+'/scripts/integrate.py', + work+'/retimed/source/new/borrow/review_staged3605.py', + work+'/retimed/source/new/borrow/review_release_retime.py', + work+'/retimed/prepare_extension_native.py', + pub+'/vendor/staged-width-t530/owners/portable_expand.py', + work+'/retimed/admit_extension.py'] + need([s['command'][2] for s in top['stages']] == scripts, 'wrapper stage script identities') + need(top['stages'][5]['command'][3:] == ['--out',work+'/allocation'], 'fresh internal literal allocation') + argv = top['stages'][6]['command'] + for flag, path in {'--source':'retimed/source','--fill':'FILL-legacy.json.gz','--order':'allocation/ORDER.json','--dispatch':'allocation/DISPATCH.json','--native-cache':'retimed/native/native-cache','--native-receipt':'retimed/native/NATIVE-RECEIPT.json','--work':'retimed/admission'}.items(): + need(argv.count(flag) == 1 and argv[argv.index(flag)+1] == work+'/'+path, 'internal admission input '+flag) + rebuilt = records['SOURCE-REBUILD-RESULT.json'] + need(rebuilt['status'] == 'PASS_PUBLIC_SOURCE_REBUILD_654_FILES' and rebuilt['source_manifest_sha256'] == SOURCE and rebuilt['source_files'] == 654, 'fresh source reconstruction') + need(rebuilt['main_commit'] == MAIN and rebuilt['exported_inputs'] == 540, 'pinned main reconstruction') + need(rebuilt['stages'] == [{k:s[k] for k in ['name','exit_code','log_sha256']} for s in top['stages'][:4]], 'source reconstruction stage chain') + native, nr = records['NATIVE-RESULT.json'], records['NATIVE-RECEIPT.json'] + original = lambda name:evidence['files'][name]['original_sha256'] + need(native['status'] == 'PASS_TWO_FRESH_SHARED_KERNEL_NATIVE_CHAINS_AUTHENTICATED_PARENT_REUSE' and native['source_manifest_sha256'] == SOURCE, 'fresh native completion') + need(native['native_receipt_sha256'] == original('NATIVE-RECEIPT.json'), 'native receipt hash chain') + need(nr['status'] == 'PASS_COMPOSED_FRESH_NATIVE_PROVIDERS_AND_AUTHENTICATED_CACHE' and nr['manifest_sha256'] == SOURCE, 'native receipt source') + need(nr['fresh_current_provider_count'] == 2 and nr['fresh_retained_native_count'] == 0 and nr['fresh_retained_parent'] is False and nr['reused_retained_native_count'] == 2 and nr['reused_retained_parent'] is True, 'fresh changed providers and explicit retained reuse') + need(set(nr['providers']) == set(WORDS), 'exact native providers') + stages(native['stages'], ['fresh-current-base','fresh-current-extra'], 'native') + for row, (kind, word) in zip(native['stages'], WORDS.items()): + fresh = records['NATIVE-'+kind+'-RESULT.json'] + need(row['result_sha256'] == original('NATIVE-'+kind+'-RESULT.json'), 'fresh provider result binding') + need(nr['providers'][kind]['word_sha256'] == fresh['word_sha256'] == word and fresh['status'] == 'PASS_COMPLETE_T74_NATIVE_REPLAY', 'fresh provider word and status') + need([s['step'] for s in fresh['steps']] == NATIVE and all(s['exit_code'] == 0 for s in fresh['steps']), 'five fresh native gates') + admission, release = records['ADMISSION-RESULT.json'], records['RELEASE-RECEIPT.json'] + need(admission['status'] == 'PASS_REPLICA_ORDER_FILL_DERIVATIVE_COMPLETE_RELEASE', 'complete nested admission') + need(admission['native_receipt_sha256'] == original('NATIVE-RECEIPT.json') and admission['source_manifest_sha256'] == SOURCE and admission['source_file_count'] == 654, 'nested admission source/native binding') + need(admission['profile'] == PROFILE and admission['replicas'] == 530 and admission['actual_expected_helpers'] == 408, 'nested profile and dimensions') + need(Q(admission['complex_lower']) == C and Q(admission['kappa']) == Q(admission['kappa_decimal']) == K, 'exact modern endpoint') + stages(admission['stages'], INNER, 'admission') + inner_scripts = [work+'/retimed/admission/'+('layout/packing74/replay.py' if name == 'discovery' else 'package/'+path) for name,path in INNER.items()] + need([s['command'][2] for s in admission['stages']] == inner_scripts, 'nested script identities') + need(admission['release_receipt_sha256'] == original('RELEASE-RECEIPT.json'), 'terminal receipt hash chain') + need(release['status'] == 'PASS_RELEASE' and Q(release['kappa_decimal']) == K and release['manifest_sha256'] == admission['package_manifest_sha256'], 'terminal release and runtime manifest') + observed = evidence['local_byte_checks'] + need(observed['source_manifest_sha256'] == SOURCE and observed['source_file_count'] == 654 and observed['main_export_count'] == 540, 'recorded local source checks') + need(observed['package_manifest_sha256'] == admission['package_manifest_sha256'], 'recorded runtime manifest check') + need(observed['literal_rows'] == 1946160 and observed['literal_payload_sha256'] == '9f82e7d4abfcb52cd6d969e37e07415516856d7af85192010f3fc142dbaad246', 'recorded full literal allocation check') + for key, rows in [('top_stages',top['stages']),('admission_stages',admission['stages']),('native_stages',native['stages'])]: + bindings = observed[key] + need([b['name'] for b in bindings] == [s['name'] for s in rows], 'recorded local stage set '+key) + for b, s in zip(bindings, rows): + need(b['log_sha256'] == s['log_sha256'], 'recorded local stage log '+s['name']) + if 'script_sha256' in s: + need(b['script_sha256'] == s['script_sha256'], 'recorded local executed script '+s['name']) + return {'status':'PASS_RECORDED_FRESH_WRAPPER_CHAIN','top_stages':7,'admission_stages':7,'fresh_current_providers':2,'kappa':str(K),'executed_commit':COMMIT,'wrapper_sha256':WRAPPER,'scope':SCOPE} + +def collect(work, attempt, package, log, out): + need(not out.exists(), 'fresh evidence output directory required') + a = read(attempt) + need(a.get('exit_code') == 0 and a.get('finished_at'), 'completed exit-zero attempt required') + need(Path(a['command'][6]).resolve() == work and Path(a['command'][2]).resolve() == package/'reproduce.py', 'requested local run identity') + repo = Path(a['command'][4]).resolve() + need(sha(package/'reproduce.py') == WRAPPER == a['wrapper_sha256'], 'unchanged actual executed wrapper') + need(sha(log) == a['stdout_sha256'], 'actual complete wrapper stdout') + # Check all pre-run public files, without including new documentation/evidence. + for name, expected in a['package_before'].items(): + need(sha(safe(repo,name)) == expected, 'unchanged original publication file '+name) + source = work/'retimed/source' + manifest = read(source/'MANIFEST.json') + need(sha(source/'MANIFEST.json') == SOURCE and len(manifest) == 654, 'actual frozen source manifest') + for name, expected in manifest.items(): + need(sha(safe(source,name)) == expected, 'actual source file '+name) + main = read(package/'MAIN-INPUTS.json') + need(main['base_commit'] == MAIN and len(main['sha256']) == 540, 'actual main export pins') + for name, expected in main['sha256'].items(): + need(sha(safe(work/'main-files',name)) == expected, 'actual main export '+name) + paths = {'ATTEMPT.json':attempt, **{name:work/rel for name,rel in PATHS.items()}} + raw = {name:p.read_bytes() for name,p in paths.items()} + records = {name:json.loads(data) for name,data in raw.items()} + admission = work/'retimed/admission' + native = work/'retimed/native' + runtime = admission/'package' + runtime_manifest = read(runtime/'MANIFEST.json') + runtime_hash = sha(runtime/'MANIFEST.json') + for name, expected in runtime_manifest.items(): + need(sha(safe(runtime,name)) == expected, 'actual admitted runtime '+name) + def bind(rows, base): + need(rows == read(base/'STAGES.json'), 'actual separate stage file identity') + bindings = [] + for s in rows: + script = Path(s['command'][2]); script_hash = sha(script) + log_name = 'native-'+s['name'].removeprefix('fresh-current-') if base == native else s['name'] + log_path = base/(log_name+'.log') + need(sha(log_path) == s['log_sha256'], 'actual stage log '+s['name']) + if 'script_sha256' in s: + need(script_hash == s['script_sha256'], 'actual executed script '+s['name']) + if base == admission: + need(runtime_manifest[INNER[s['name']]] == script_hash, 'executed script in admitted runtime') + bindings.append({'name':s['name'],'script_sha256':script_hash,'log_sha256':s['log_sha256']}) + return bindings + top_bindings = bind(records['WRAPPER-RESULT.json']['stages'],work) + inner_bindings = bind(records['ADMISSION-RESULT.json']['stages'],admission) + native_bindings = bind(records['NATIVE-RESULT.json']['stages'],native) + nr = records['NATIVE-RECEIPT.json'] + need(sha(work/'prepared/predecessor/NATIVE-RECEIPT.json') == nr['retained_reuse_receipt_sha256'], 'actual retained native reuse receipt') + for name, expected in nr['cache_files'].items(): + need(sha(safe(native/'native-cache',name)) == expected, 'actual native cache '+name) + need(sha(native/'ENVIRONMENT.json') == records['NATIVE-RESULT.json']['environment_sha256'], 'actual native environment') + need(sha(work/'retimed/prepare_extension_native.py') == records['NATIVE-RESULT.json']['preparer_sha256'], 'actual native preparer') + with gzip.open(work/'allocation/FILL.json.gz','rb') as f: + fill_bytes = f.read() + fill = json.loads(fill_bytes) + need(fill['columns'] == ['time','helper','owner_replica','child','port','offset'] and not fill.get('dispatch_overrides',[]), 'literal allocation shape') + fill['dispatch_overrides'] = [] + expected_legacy = digest(json.dumps(fill,separators=(',',':')).encode()) + legacy_hash = hashlib.sha256() + with gzip.open(work/'FILL-legacy.json.gz','rb') as f: + for block in iter(lambda:f.read(1024*1024), b''): + legacy_hash.update(block) + need(expected_legacy == legacy_hash.hexdigest(), 'internal legacy fill preserves complete allocation') + ar = records['ADMISSION-RESULT.json'] + for field, rel in [('fill','FILL-legacy.json.gz'),('order','allocation/ORDER.json'),('dispatch','allocation/DISPATCH.json')]: + need(sha(work/rel) == ar[field+'_sha256'], 'admitted literal input '+field) + public = {name:normalized(body) for name,body in raw.items()} + evidence = {'schema':'fresh-public-wrapper-evidence/1','scope':SCOPE, + 'normalization':'Only the local home-directory prefix is replaced by $RESEARCH_WORKSPACE in selected metadata; hashes refer to original raw files unless explicitly public_sha256.', + 'files':{name:{'original_sha256':digest(raw[name]),'public_sha256':digest(body),'normalization':'none' if body == raw[name] else 'workspace-prefix-to-token'} for name,body in public.items()}, + 'local_byte_checks':{'source_manifest_sha256':SOURCE,'source_file_count':654,'main_export_count':540,'package_manifest_sha256':runtime_hash,'runtime_file_count':len(runtime_manifest),'native_cache_files':len(nr['cache_files']),'literal_rows':len(fill['rows']),'literal_payload_sha256':digest(fill_bytes),'top_stages':top_bindings,'admission_stages':inner_bindings,'native_stages':native_bindings}} + validate(records,evidence) + # Nothing is published until every raw-byte and semantic predicate succeeds. + out.mkdir(parents=True) + for name, body in public.items(): + (out/name).write_bytes(body) + (out/'EVIDENCE.json').write_text(json.dumps(evidence,sort_keys=True,indent=2)+'\n') + return check(out) + +def load(root): + evidence = read(root/'EVIDENCE.json') + need(evidence['schema'] == 'fresh-public-wrapper-evidence/1', 'evidence schema') + need(set(evidence['files']) == {'ATTEMPT.json',*PATHS}, 'exact selected receipt set') + records = {} + for name, pin in evidence['files'].items(): + raw = safe(root,name).read_bytes() + need(digest(raw) == pin['public_sha256'], 'public receipt bytes '+name) + need(pin['normalization'] in ('none','workspace-prefix-to-token'), 'normalization rule') + need(b'/Users/' not in raw, 'no original macOS home-directory prefix') + if pin['normalization'] == 'none': + need(pin['original_sha256'] == pin['public_sha256'], 'unchanged receipt hash') + records[name] = json.loads(raw) + return records,evidence + +def check(root): + return validate(*load(root)) + +def controls(root): + records,evidence = load(root) + validate(records,evidence) + mutations = { + 'incomplete_attempt':lambda r,e:r['ATTEMPT.json'].pop('finished_at'), + 'external_allocation':lambda r,e:r['ATTEMPT.json']['command'].extend(['--allocation','/external/allocation']), + 'missing_nested_gate':lambda r,e:r['ADMISSION-RESULT.json']['stages'].pop(4), + 'stale_terminal_receipt':lambda r,e:r['ADMISSION-RESULT.json'].__setitem__('release_receipt_sha256','0'*64), + } + rejected = {} + for name, mutate in mutations.items(): + r,e = copy.deepcopy(records),copy.deepcopy(evidence) + mutate(r,e) + try: + validate(r,e) + except ValueError as exc: + rejected[name] = str(exc) + else: + raise ValueError('control accepted: '+name) + return {'status':'PASS_FOUR_FRESH_EVIDENCE_REJECTION_CONTROLS','controls':rejected,'scope':'Semantic controls bypass public-file hash checks; no scientific replay.'} + +def main(): + ap = argparse.ArgumentParser(description=__doc__) + sub = ap.add_subparsers(dest='action',required=True) + c = sub.add_parser('collect') + for name in ('work','attempt','package','log','out'): + c.add_argument('--'+name,type=Path,required=True) + for name in ('check','controls'): + sub.add_parser(name).add_argument('--root',type=Path,required=True) + args = ap.parse_args() + if args.action == 'collect': + result = collect(*(getattr(args,n).resolve() for n in ('work','attempt','package','log','out'))) + else: + result = (check if args.action == 'check' else controls)(args.root.resolve()) + print(json.dumps(result,sort_keys=True,indent=2)) + +if __name__ == '__main__': + main() diff --git a/research/staged-release-retiming-t530/verify.py b/research/staged-release-retiming-t530/verify.py index 0ebfd5a37e..db1e66a6d9 100644 --- a/research/staged-release-retiming-t530/verify.py +++ b/research/staged-release-retiming-t530/verify.py @@ -8,6 +8,7 @@ from pathlib import Path import hashlib import json +import copy import os import subprocess import sys @@ -37,6 +38,21 @@ def snapshot(): for p in HERE.rglob('*') if p.is_file()} +def check_recorded_cache(evidence, native): + observed = evidence['local_byte_checks'] + require(observed['runtime_file_count'] == 658 + and observed['native_cache_files'] == len(native['cache_files']) == 63, + 'complete recorded runtime/native inventory') + require(set(native['providers']) == {'base', 'extra'}, 'recorded native providers') + for provider in native['providers'].values(): + prefix = provider['word_sha256'] + '/' + subset = {name.removeprefix(prefix): digest + for name, digest in native['cache_files'].items() + if name.startswith(prefix) and name != prefix + 'CACHE.json'} + require(len(subset) == 12 and provider['complete_native_files'] == subset, + 'complete recorded provider cache subset') + + def main(): require(__debug__ and not sys.flags.optimize, 'Run with assertions enabled') before = snapshot() @@ -86,11 +102,54 @@ def run(name, relative, *args): and (cap['patterns'], cap['strict'], cap['symbolically_zero']) == (2551, 2539, 12), 'all fixed-inventory patterns') require(summary['status'] == 'PASS_PUBLIC_RECORDED_SUMMARY_BINDINGS', 'narrow summary status') + full_run = read(HERE / 'PUBLIC-FULL-REPLAY.json') + fresh_dir = HERE / 'full-admission/fresh-replay' + attempt = read(fresh_dir / 'ATTEMPT.json') + wrapper_result = read(fresh_dir / 'WRAPPER-RESULT.json') + admission_result = read(fresh_dir / 'ADMISSION-RESULT.json') + native_receipt = read(fresh_dir / 'NATIVE-RECEIPT.json') + fresh_evidence = read(fresh_dir / 'EVIDENCE.json') + require(full_run['status'] == 'PASS_PUBLIC_FULL_WRAPPER_END_TO_END' + and Fraction(full_run['kappa']) == KAPPA and full_run['profile'] == PROFILE, + 'separate full-wrapper headline agrees with fresh finite checks') + require(full_run['executed_publication_commit'] == attempt['publication_commit'] + and full_run['executed_wrapper_sha256'] == attempt['wrapper_sha256'] + and full_run['wall_seconds'] == attempt['seconds'] + and full_run['exit_code'] == attempt['exit_code'] == 0 + and full_run['package_files_unchanged'] is attempt['package_files_unchanged'] is True, + 'separate full-wrapper execution identity') + for field in ('started_at', 'finished_at', 'environment'): + require(full_run[field] == attempt[field], 'full-wrapper index ' + field) + require(full_run['source_manifest_sha256'] == wrapper_result['source_manifest_sha256'] + and full_run['runtime_manifest_sha256'] == admission_result['package_manifest_sha256'] + and full_run['original_release_receipt_sha256'] == admission_result['release_receipt_sha256'], + 'full-wrapper source/runtime/terminal index') + for field, result in [('wrapper_stages', wrapper_result), ('admission_stages', admission_result)]: + require(full_run[field] == [{key: row[key] for key in ('name', 'exit_code', 'seconds')} + for row in result['stages']], 'full-wrapper index ' + field) + check_recorded_cache(fresh_evidence, native_receipt) + for field in ('cache_files', 'complete_native_files'): + mutant = copy.deepcopy(native_receipt) + if field == 'cache_files': + mutant[field] = {} + else: + mutant['providers']['base'][field] = {} + try: + check_recorded_cache(fresh_evidence, mutant) + except ValueError: + pass + else: + raise ValueError('incomplete recorded cache accepted: ' + field) + for field, path in [('fresh_evidence_sha256', 'full-admission/fresh-replay/EVIDENCE.json'), + ('evidence_checker_sha256', 'full-admission/fresh_replay_evidence.py')]: + require(full_run[field] == hashlib.sha256((HERE / path).read_bytes()).hexdigest(), + 'separate full-wrapper evidence binding: ' + field) require(snapshot() == before, 'package files changed during replay') receipt = { 'status':'PASS_STAGED_RELEASE_RETIMING_T530_BOUNDED_CHECKS', 'kappa':str(KAPPA), 'profile':PROFILE, 'stages':stages, 'package_files_unchanged':True, + 'rejected_recorded_cache_controls':['empty cache inventory', 'empty provider cache subset'], 'scope':'Fresh finite local/operator, regenerated ownership/invoice, exact arithmetic and scoped packing checks; full native/controller/outer admission is retained evidence only in this command. Inherited general assumptions remain.'} (out / 'RESULT.json').write_text(json.dumps(receipt, indent=2) + '\n') print(json.dumps(receipt, indent=2)) From 044d24f12e74f228dd462c07ae2d7f3ea35e2be9 Mon Sep 17 00:00:00 2001 From: roger-sato Date: Sun, 18 Oct 2026 22:19:15 +0900 Subject: [PATCH 3/4] Fix invalid runner context in P112 workflow initialization --- .github/workflows/p112-common-slice.yml | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/.github/workflows/p112-common-slice.yml b/.github/workflows/p112-common-slice.yml index 37f99ca573..1b393f8b73 100644 --- a/.github/workflows/p112-common-slice.yml +++ b/.github/workflows/p112-common-slice.yml @@ -15,8 +15,6 @@ jobs: if: github.repository == 'CrocSwap/integer-mult-bounds' runs-on: ubuntu-24.04 timeout-minutes: 20 - env: - TMPDIR: ${{ runner.temp }}/p112-common-slice steps: - uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 with: @@ -25,11 +23,14 @@ jobs: - uses: actions/setup-python@5fda3b95a4ea91299a34e894583c3862153e4b97 with: python-version: '3.12' + - name: Configure runner temporary directory + run: | + mkdir -p "$RUNNER_TEMP/p112-common-slice" + printf 'TMPDIR=%s/p112-common-slice\n' "$RUNNER_TEMP" >> "$GITHUB_ENV" - name: Install native checker dependencies run: | sudo apt-get update -qq sudo apt-get install -y --no-install-recommends g++ libboost-dev - mkdir -p "$TMPDIR" g++ --version python --version - name: Replay the complete slice From 6568db75adbb61437190545f6fef1534c70e91e5 Mon Sep 17 00:00:00 2001 From: roger-sato Date: Mon, 19 Oct 2026 02:02:54 +0900 Subject: [PATCH 4/4] Test actual owner gates with semantic mutations and disable controls --- .../PUBLIC-OWNER-CONTROLS.json | 68 +++++++ .../staged-release-retiming-t530/README.md | 10 +- .../staged-release-retiming-t530/VERIFY.json | 2 +- .../owner-audit/README.md | 12 +- .../evidence/SEMANTIC-CONTROLS-FOLLOWUP.json | 99 +++++++++ .../owner-audit/run.py | 11 +- .../owner-audit/semantic_gate_controls.py | 190 ++++++++++++++++++ .../staged-release-retiming-t530/verify.py | 16 ++ 8 files changed, 402 insertions(+), 6 deletions(-) create mode 100644 research/staged-release-retiming-t530/PUBLIC-OWNER-CONTROLS.json create mode 100644 research/staged-release-retiming-t530/owner-audit/evidence/SEMANTIC-CONTROLS-FOLLOWUP.json create mode 100644 research/staged-release-retiming-t530/owner-audit/semantic_gate_controls.py diff --git a/research/staged-release-retiming-t530/PUBLIC-OWNER-CONTROLS.json b/research/staged-release-retiming-t530/PUBLIC-OWNER-CONTROLS.json new file mode 100644 index 0000000000..952d7df281 --- /dev/null +++ b/research/staged-release-retiming-t530/PUBLIC-OWNER-CONTROLS.json @@ -0,0 +1,68 @@ +{ + "bounded_result": { + "kappa": "17303943918139634151199999999999999999999998999999999999999999999999/10000000000000000000000000000000000000000000000000000000000000000000000", + "owner_gate_disable_sensitivity_controls": 5, + "owner_semantic_gate_controls": 5, + "package_files_unchanged": true, + "profile": { + "1": 11747920, + "2": 3453480, + "3": 1112042, + "4": 486540, + "48": 202828, + "5": 103690, + "8": 38160 + }, + "rejected_recorded_cache_controls": [ + "empty cache inventory", + "empty provider cache subset" + ], + "scope": "Fresh finite local/operator, regenerated ownership/invoice, exact arithmetic and scoped packing checks; full native/controller/outer admission is retained evidence only in this command. Inherited general assumptions remain.", + "stages": [ + { + "exit_code": 0, + "seconds": 2.133318333013449, + "stage": "local" + }, + { + "exit_code": 0, + "seconds": 19.608519667002838, + "stage": "owner" + }, + { + "exit_code": 0, + "seconds": 0.29930454201530665, + "stage": "numerics" + }, + { + "exit_code": 0, + "seconds": 1.729215707979165, + "stage": "packing" + }, + { + "exit_code": 0, + "seconds": 0.06904937495710328, + "stage": "recorded-summary" + } + ], + "status": "PASS_STAGED_RELEASE_RETIMING_T530_BOUNDED_CHECKS" + }, + "date": "2026-10-19", + "finding": "https://github.com/CrocSwap/integer-mult-bounds/pull/3694", + "frozen_auditors_and_full_admission_unchanged": true, + "platform": "macOS-27.0-arm64-arm-64bit", + "prior_head": "044d24f12e74f228dd462c07ae2d7f3ea35e2be9", + "python": "3.12.14 (main, Aug 25 2026, 13:50:33) [Clang 22.1.3 ]", + "registered_commands_passed": 3, + "scope": "Fresh bounded registered package replay including all 1946160 owner rows, five actual production-gate semantic mutations and five gate-disable sensitivities. Old false-expression lambdas are not counted. No new kappa and no new full scientific replay; old complete replay stays separately dated.", + "semantic_gate_receipt_sha256": "fafd011475ad59b14d192c03cec3d02c0e46f213602b09352d869585b86e5f2e", + "source_sha256": { + "VERIFY.json": "2f127bf8cb39b56de040c1353bb462bc16ce5a20c7facd691c5b704822018777", + "owner-audit/DERIVATION.json": "a78896e12209bd8bcdb378ba69889f3e63d98ee27e598fbd01c1619f0946828b", + "owner-audit/independent_literal.py": "b51c36ad1ae0999547edc4726d698df369fef60daaaac4f5bbea471648c9f628", + "owner-audit/run.py": "c1afe53caf696d4f19ae4e515007dd497f85b46cd14aa224be8f32032635cfad", + "owner-audit/semantic_gate_controls.py": "5638f9eb05c19be43b6579aa82ab9c01e5648bfeb3d8963042ef6a463dc6e335", + "verify.py": "3a77186565cfee7f7b9e3c0bd02072e03c0b133bb9ca43f9e2418af6a17a5fd1" + }, + "status": "PASS_OWNER_SEMANTIC_CONTROL_CORRECTION" +} diff --git a/research/staged-release-retiming-t530/README.md b/research/staged-release-retiming-t530/README.md index 590639bebc..225d848dba 100644 --- a/research/staged-release-retiming-t530/README.md +++ b/research/staged-release-retiming-t530/README.md @@ -39,13 +39,21 @@ The second command invokes `verify.py`, which creates a fresh temporary output d | Component | Freshly checked by the bounded command | Retained evidence / limit | | --- | --- | --- | | [local-audit](local-audit/README.md) | Minimal commuting/frame proof, both complete free-operator words, 632 arbitrary input columns, both orientations, 91 zero buffers and negative controls | Complete native receipts are authenticated, not rerun here | -| [owner-audit](owner-audit/README.md) | Reconstruct 1,946,160 literal roles; independently check ownership, windows, families, chronological prefixes, capacities and full invoice; five rejection controls | Native frame tables are authenticated inputs | +| [owner-audit](owner-audit/README.md) | Reconstruct 1,946,160 literal roles; independently check ownership, windows, families, chronological prefixes, capacities and full invoice; five production-gate mutation tests and five gate-disable sensitivity tests | Native frame tables are authenticated inputs; mutation tests execute isolated production predicates, not whole corrupted journals | | [numerics](numerics/README.md) | Two rational root engines; 63 strict transfer inequalities, 17 rejection controls and independent balance derivation | Arithmetic alone does not prove the physical circuit | | [packing-cap](packing-cap/README.md) | All 2,551 fixed-inventory patterns, exact dual and ceiling interval | A scoped relaxation bound, not a higher achieved κ | | [full-admission](full-admission/README.md) | Public-file integrity and cross-bound recorded-summary checks | Does not rerun or reauthenticate the omitted complete runtime archive | The registered dependency closure includes the 13 pinned main files actually used by the bounded owner replay. Self-contained components authenticate their vendored inputs. The longer full replay has a separately pinned closure in `full-admission/MAIN-INPUTS.json`; it is not the bounded CI command. +### Owner-control correction following PR3694 + +[Sagar Thakrar's PR3694](https://github.com/CrocSwap/integer-mult-bounds/pull/3694) identified a test-coverage defect in the inherited owner auditor. Its five old rejection lambdas evaluate constructed false expressions without calling the real validation gates. We independently reproduced the defect: disabling all five corresponding production predicates still leaves those old controls passing. The earlier descriptions of them as five effective rejection controls were incorrect. The normal ownership and invoice checks remain present; this finding does not itself change the profile or κ. + +The bounded owner replay now executes an owned companion against the regenerated data. It extracts the five actual unconditional validation statements from the authenticated auditor, rejects changed helper identity, strict-window endpoint, same-call family, pending prefix and histogram inputs, and verifies that disabling each respective gate makes its negative test fail. These are explicitly gate-level semantic tests. The frozen upstream and derived auditors, old receipts and full-admission source manifest retain their original bytes. The separate seven-stage full-admission owner check uses a different retained auditor; its earlier run is not relabelled as a fresh replay by this correction. + +All three registered commands passed locally on 2026-10-19 with Python 3.12.14 / NumPy 2.5.4. The five fresh bounded stages took 23.84 seconds, including complete owner reconstruction and audit in 19.61 seconds; package files remained unchanged. [PUBLIC-OWNER-CONTROLS.json](PUBLIC-OWNER-CONTROLS.json) binds the changed code and this run, and [the semantic-control receipt](owner-audit/evidence/SEMANTIC-CONTROLS-FOLLOWUP.json) records each mutation, production predicate and sensitivity result. This is a new bounded validation record, separate from the earlier complete scientific replay. + ## Full scientific replay and recorded results The original scientific run freshly checked both changed native providers and completed all seven admission stages with exit code 0. Terminal statuses were `PASS_RELEASE` and `PASS_REPLICA_ORDER_FILL_DERIVATIVE_COMPLETE_RELEASE`. The stages took approximately 23.31, 47.11, 4.60, 483.59, 0.11, 0.02 and 661.05 seconds (about 20.3 minutes total, excluding the earlier native checks). Two unchanged native chains and the retained parent chain were authenticated and reused. The newly checked native results were reused within the admission run through authenticated caches. diff --git a/research/staged-release-retiming-t530/VERIFY.json b/research/staged-release-retiming-t530/VERIFY.json index 7b90071c8e..aabd0c28a8 100644 --- a/research/staged-release-retiming-t530/VERIFY.json +++ b/research/staged-release-retiming-t530/VERIFY.json @@ -28,7 +28,7 @@ "{package}/verify.py" ], "timeout_seconds": 300, - "checks": "Fresh local operator/frame proof and controls, literal owner reconstruction/audit, two exact moment engines and transfer, all2551 packing patterns, plus narrow recorded-summary consistency; not a full native/admission replay." + "checks": "Fresh local operator/frame proof and controls, literal owner reconstruction/audit with five actual-gate semantic mutations and five gate-disable sensitivity tests, two exact moment engines and transfer, all2551 packing patterns, plus narrow recorded-summary consistency; not a full native/admission replay." }, { "argv": [ diff --git a/research/staged-release-retiming-t530/owner-audit/README.md b/research/staged-release-retiming-t530/owner-audit/README.md index ef82ea4331..db09c0d799 100644 --- a/research/staged-release-retiming-t530/owner-audit/README.md +++ b/research/staged-release-retiming-t530/owner-audit/README.md @@ -19,7 +19,15 @@ A rerun performs all of the following: 1. Authenticate the 13 existing-main dependencies and all 22 frozen PR3626 owner artifacts. 2. Execute the unchanged `upstream/portable_expand.py`, including its exact primal and deterministic integral-network checks, into a fresh output directory. This generates the full T530 literal journal and binds its decompressed payload to SHA256 `9f82e7d4abfcb52cd6d969e37e07415516856d7af85192010f3fc142dbaad246`. 3. Bind both actual retimed canonical words and read their local profile. Keep the literal ownership rows unchanged, replacing only the generated full profile by `H_new = H_old + 4770*(-2H1-2H2+2H3)`. -4. Run the exact preserved derived `independent_literal.py` against the regenerated journal, changed profile and actual canonical words. Check all 1,946,160 rows, 4,770 calls and 530 replicas; run the five retained rejection controls; compare semantic receipt fields; verify that every package file remains unchanged. +4. Execute `semantic_gate_controls.py`, which runs the exact preserved derived `independent_literal.py` once against the regenerated journal, changed profile and actual canonical words. Check all 1,946,160 rows, 4,770 calls and 530 replicas, then test five actual production gate statements on changed in-memory semantic inputs. Compare the positive receipt fields and verify that every package file remains unchanged. The historical five `reject()` lambdas are retained as provenance and are not counted as negative coverage. + +### Correction to the inherited negative-control claim + +[PR3694](https://github.com/CrocSwap/integer-mult-bounds/pull/3694) identified that the five inherited `reject()` lambdas do not invoke their corresponding production gates. A separate scratch reproduction confirmed that disabling all five named gates still leaves those historical controls reporting success. This is a test-coverage defect; the positive owner, window, family, prefix and invoice predicates remain genuine checks on the literal journal. Earlier receipts and their `controls` fields are preserved unchanged as historical records, not evidence of five genuine mutation tests. + +The owned companion now extracts the exact five unconditional `need(...)` AST statements from the authenticated derived auditor and checks that they match the frozen predecessor. It first executes the complete positive auditor, including source authentication, once. It then tests duplicate helper identity, time equal to an actual nonnegative strict lower endpoint, reuse of a same-call physical family, a chronological offset hole, and one unpaid rank-1 invoice child. The family case also executes the production key-computation statements. Each changed input must raise the exact expected gate error; the original input must pass before and after. Replacing that gate predicate by `True` must make its mutation test fail. + +`SEMANTIC-GATES.json` binds these five rejection results and five gate-disable sensitivity results to the preserved auditor, the new checker and the unchanged positive `RESULT.json`. These are isolated semantic gate tests on real journal data. They do not claim five complete corrupted-file replays through the artifact hash checks, or new native/controller/outer admission. The preserved auditor, upstream files, old receipts and full-admission source manifests are unchanged. The resulting complete profile is: @@ -37,7 +45,7 @@ The generated `PROVIDERS.json` is unchanged predecessor materialization metadata `upstream/` retains all 22 files authenticated by its unchanged `ARTIFACTS.json`. The PR3626 manifest Git blob `01694a31e732d9f0a357ce3466cb2aa9f81a5855` was checked against the exact pending head. Its original producers, source context, primal, expectations, independent auditor, proof, credits and notices retain their original bytes and hashes. -`independent_literal.py` is the already-derived auditor, copied without predicate changes. `DERIVATION.json` documents the three preceding adaptations: explicit upstream directory, actual fresh native canonical pins, and the local bill `-2H1-2H2+2H3`. The original auditor remains at `upstream/independent_literal.py`. The runner authenticates both scripts before execution. Their checks are not replaced by stored PASS receipts. +`independent_literal.py` is the already-derived auditor, copied without predicate changes. `DERIVATION.json` documents the three preceding adaptations: explicit upstream directory, actual fresh native canonical pins, and the local bill `-2H1-2H2+2H3`. The original auditor remains at `upstream/independent_literal.py`. The runner authenticates both scripts before execution. Their positive checks are not replaced by stored PASS receipts. The owned companion supplies the additional semantic mutation coverage without editing either preserved script. Only this session's local home-directory prefix in public execution metadata is represented by `$RESEARCH_WORKSPACE`. `PUBLIC-PROVENANCE.json` records original and public SHA256 values; scientific fields and content hashes are unchanged. Frozen upstream sources are not normalized or rewritten. diff --git a/research/staged-release-retiming-t530/owner-audit/evidence/SEMANTIC-CONTROLS-FOLLOWUP.json b/research/staged-release-retiming-t530/owner-audit/evidence/SEMANTIC-CONTROLS-FOLLOWUP.json new file mode 100644 index 0000000000..baeb17be61 --- /dev/null +++ b/research/staged-release-retiming-t530/owner-audit/evidence/SEMANTIC-CONTROLS-FOLLOWUP.json @@ -0,0 +1,99 @@ +{ + "checker_sha256": "5638f9eb05c19be43b6579aa82ab9c01e5648bfeb3d8963042ef6a463dc6e335", + "gate_disable_sensitivities": 5, + "historical_reject_lambdas_counted": false, + "positive_receipt_sha256": "c30b8dda1833b436c2d07a517c413f24ce1f15c31eeb1b628101711020fd7874", + "predecessor_source_sha256": "36d7f4e3a611fd6b5983222887beb9a37a18bfac0d999ac5c00e3e191d1c5cc4", + "roles": 1946160, + "scope": "Fresh authenticated complete positive owner audit followed by five isolated production AST gate tests on changed in-memory inputs, each sensitive to disabling its gate. Not five end-to-end corrupted-artifact replays. Frozen auditor and source manifests are unchanged; historical reject lambdas provide no negative coverage.", + "seconds": 1.8133439169614576, + "semantic_mutants_rejected": 5, + "source_sha256": "b51c36ad1ae0999547edc4726d698df369fef60daaaac4f5bbea471648c9f628", + "status": "PASS_FIVE_EXACT_PRODUCTION_GATE_MUTATIONS_AND_FIVE_DISABLE_SENSITIVITIES", + "tests": [ + { + "baseline_passed": true, + "disabling_gate_makes_control_fail": true, + "gate": "helper_identity", + "message": "complete literal ordered helper identities", + "mutant_rejected_at_expected_gate": true, + "mutation": { + "column": "helper", + "new": 0, + "old": 1, + "row": 1 + }, + "predicate_sha256": "7c75c732719e03df7e9f327aee1de48a432ad301f43fa8de9279279ed719c835", + "restored_baseline_passed": true, + "source_line": 98 + }, + { + "baseline_passed": true, + "disabling_gate_makes_control_fail": true, + "gate": "window", + "message": "strict/closed actual source windows", + "mutant_rejected_at_expected_gate": true, + "mutation": { + "column": "time", + "meaning": "exact strict lower endpoint", + "new": 70, + "old": 100, + "row": 40802 + }, + "predicate_sha256": "2a72a2fb1b76cc872b93e0df6fc15672432e6c4d8abd33bdc567754c74e433f7", + "restored_baseline_passed": true, + "source_line": 102 + }, + { + "baseline_passed": true, + "disabling_gate_makes_control_fail": true, + "gate": "family", + "message": "same-call physical family uniqueness", + "mutant_rejected_at_expected_gate": true, + "mutation": { + "columns": [ + "owner_replica", + "child", + "port" + ], + "copied_from_row": 0, + "meaning": "two helpers of the same call share a physical family", + "row": 1 + }, + "predicate_sha256": "ef57448e3ed1769ad515690ab2805325ed8670b29a6d996cc9d66160a0414837", + "restored_baseline_passed": true, + "source_line": 105 + }, + { + "baseline_passed": true, + "disabling_gate_makes_control_fail": true, + "gate": "prefix", + "message": "every chronological pending mask is a compact prefix", + "mutant_rejected_at_expected_gate": true, + "mutation": { + "column": "offset", + "new": 1, + "old": 0, + "row": 2006 + }, + "predicate_sha256": "f8cacaf9b9a853b3d6270a118224710e89bebd9a242881bd492d11b1a35b6149", + "restored_baseline_passed": true, + "source_line": 110 + }, + { + "baseline_passed": true, + "disabling_gate_makes_control_fail": true, + "gate": "histogram", + "message": "independent complete histogram", + "mutant_rejected_at_expected_gate": true, + "mutation": { + "new": 11747921, + "old": 11747920, + "rank": 1 + }, + "predicate_sha256": "eb01bc2b4f1aadbdb5fcd993f794679db1f50bd81d1d15ce2e8c79a88ba5114d", + "restored_baseline_passed": true, + "source_line": 116 + } + ] +} diff --git a/research/staged-release-retiming-t530/owner-audit/run.py b/research/staged-release-retiming-t530/owner-audit/run.py index 8e46271b6f..bb00a48bfb 100644 --- a/research/staged-release-retiming-t530/owner-audit/run.py +++ b/research/staged-release-retiming-t530/owner-audit/run.py @@ -52,12 +52,19 @@ def main(): (literal/'PROFILE.json').write_text(profile_text) need(total==Counter({int(k):v for k,v in read(HERE/'RESULT.json')['profile'].items()}),'New full invoice matches retained receipt') env.update({'OWNER_UPSTREAM_DIR':str(HERE/'upstream'),'OWNER_LITERAL_DIR':str(literal),'OWNER_NATIVE_DIR':str(HERE/'native'),'OWNER_AUDIT_OUTPUT':str(out/'RESULT.json')}) - subprocess.run([sys.executable,'-B',str(HERE/'independent_literal.py')],env=env,check=True) + subprocess.run([sys.executable,'-B',str(HERE/'semantic_gate_controls.py')],env=env,check=True) + semantic=read(out/'SEMANTIC-GATES.json') + need(semantic['status']=='PASS_FIVE_EXACT_PRODUCTION_GATE_MUTATIONS_AND_FIVE_DISABLE_SENSITIVITIES' + and semantic['semantic_mutants_rejected']==semantic['gate_disable_sensitivities']==5 + and semantic['historical_reject_lambdas_counted'] is False,'Fresh semantic gate controls') + need(semantic['source_sha256']==derivation['derived_script_sha256'] + and semantic['checker_sha256']==sha(HERE/'semantic_gate_controls.py') + and semantic['positive_receipt_sha256']==sha(out/'RESULT.json'),'Semantic gate receipt binding') retained=read(HERE/'RESULT.json');actual=read(out/'RESULT.json') for key in ('status','replicas','calls','roles','physical','idle','profile','script_sha256','controls','scope'): need(actual[key]==retained[key],'Independent receipt mismatch: '+key) need(snapshot()==before,'Package changed during replay') - receipt={'status':'PASS_LEAN_REGENERATED_OWNER_AUDIT','seconds':time.monotonic()-start,'python':sys.version,'numpy':numpy.__version__,'fresh_literal_reconstruction':True,'fresh_independent_owner_audit':True,'package_files_unchanged':True,'source_files':len(inputs['repo_files']),'upstream_artifacts':len(read(HERE/'upstream/ARTIFACTS.json')),'derived_profile':dict(sorted(total.items())),'scope':'Fresh finite reconstruction and independent ownership/invoice checks; canonical native frame tables are authenticated inputs, not operator proofs rerun by this command.'} + receipt={'status':'PASS_LEAN_REGENERATED_OWNER_AUDIT','seconds':time.monotonic()-start,'python':sys.version,'numpy':numpy.__version__,'fresh_literal_reconstruction':True,'fresh_independent_owner_audit':True,'fresh_semantic_gate_mutations':5,'gate_disable_sensitivities':5,'historical_reject_lambdas_counted':False,'semantic_gate_receipt_sha256':sha(out/'SEMANTIC-GATES.json'),'package_files_unchanged':True,'source_files':len(inputs['repo_files']),'upstream_artifacts':len(read(HERE/'upstream/ARTIFACTS.json')),'derived_profile':dict(sorted(total.items())),'scope':'Fresh finite reconstruction and independent ownership/invoice checks; canonical native frame tables are authenticated inputs, not operator proofs rerun by this command.'} (out/'RUN.json').write_text(json.dumps(receipt,indent=2,sort_keys=True)+'\n');print(json.dumps(receipt,indent=2)) if __name__=='__main__':main() diff --git a/research/staged-release-retiming-t530/owner-audit/semantic_gate_controls.py b/research/staged-release-retiming-t530/owner-audit/semantic_gate_controls.py new file mode 100644 index 0000000000..e94fd5a117 --- /dev/null +++ b/research/staged-release-retiming-t530/owner-audit/semantic_gate_controls.py @@ -0,0 +1,190 @@ +#!/usr/bin/env python3 +# SPDX-License-Identifier: Apache-2.0 +"""Run the preserved auditor and test its exact production semantic gate nodes. + +The auditor and frozen inputs remain byte-identical. These are five isolated +in-memory gate tests, not five end-to-end corrupted-artifact replays. Historical +reject() lambdas in the preserved auditor are not counted as negative coverage. +Prepared with substantial OpenAI Codex assistance. +""" +import ast +import copy +import hashlib +import json +import os +from pathlib import Path +import runpy +import sys +import time + +HERE = Path(__file__).resolve().parent +SOURCE = HERE / 'independent_literal.py' +GATES = { + 'helper_identity': 'complete literal ordered helper identities', + 'window': 'strict/closed actual source windows', + 'family': 'same-call physical family uniqueness', + 'prefix': 'every chronological pending mask is a compact prefix', + 'histogram': 'independent complete histogram', +} + + +def need(condition, message): + if not condition: + raise ValueError(message) + + +def sha(path): + return hashlib.sha256(path.read_bytes()).hexdigest() + + +def inventory(path): + """Select unconditional production statements, failing closed on ambiguity.""" + found = {} + assignments = {} + for statement in ast.parse(path.read_text()).body: + if isinstance(statement, ast.Assign) and len(statement.targets) == 1: + target = statement.targets[0] + if isinstance(target, ast.Name) and target.id in ('family', 'key', 'sort'): + need(target.id not in assignments, 'Repeated family computation') + assignments[target.id] = statement + if not isinstance(statement, ast.Expr) or not isinstance(statement.value, ast.Call): + continue + call = statement.value + if (isinstance(call.func, ast.Name) and call.func.id == 'need' + and len(call.args) == 2 and isinstance(call.args[1], ast.Constant) + and call.args[1].value in GATES.values()): + message = call.args[1].value + need(message not in found, 'Repeated production gate: ' + message) + found[message] = statement + need(set(found) == set(GATES.values()), 'Exact five unconditional production gates') + need(set(assignments) == {'family', 'key', 'sort'}, 'Exact family recomputation') + computation = [assignments[name] for name in ('family', 'key', 'sort')] + need([node.lineno for node in computation] == sorted(node.lineno for node in computation) + and computation[-1].lineno <= found[GATES['family']].lineno, + 'Family computation precedes its production gate') + return found, computation + + +def execute(nodes, context): + module = ast.Module(body=copy.deepcopy(nodes), type_ignores=[]) + exec(compile(module, str(SOURCE), 'exec'), context) + + +def rejected(node, context, message): + try: + execute([node], context) + except ValueError as error: + need(str(error) == message, 'Rejected at an unintended condition: ' + str(error)) + return True + return False + + +def mutation(label, context, family_computation): + # Namespace copies retain baseline storage; only modified arrays are copied. + changed = dict(context) + np = context['np'] + if label == 'helper_identity': + changed['rows'] = context['rows'].copy() + changed['rows'][1, 1] = changed['rows'][0, 1] + details = {'row': 1, 'column': 'helper', 'old': int(context['rows'][1, 1]), + 'new': int(changed['rows'][1, 1])} + elif label == 'window': + candidates = np.flatnonzero(context['lo'][context['o'], context['c']] >= 0) + need(len(candidates) > 0, 'Nonnegative strict endpoint fixture exists') + row = int(candidates[0]) + changed['t'] = context['t'].copy() + changed['t'][row] = context['lo'][context['o'][row], context['c'][row]] + details = {'row': row, 'column': 'time', 'old': int(context['t'][row]), + 'new': int(changed['t'][row]), 'meaning': 'exact strict lower endpoint'} + elif label == 'family': + need(context['t'][0] == context['t'][1], 'Same-call family fixture') + for name in ('o', 'c', 'p'): + changed[name] = context[name].copy() + changed[name][1] = changed[name][0] + # Recompute the family keys with the production assignments, not a + # duplicated implementation of the uniqueness predicate or key formula. + execute(family_computation, changed) + details = {'row': 1, 'columns': ['owner_replica', 'child', 'port'], + 'copied_from_row': 0, + 'meaning': 'two helpers of the same call share a physical family'} + elif label == 'prefix': + row = int(context['idx'][0]) + changed['z'] = context['z'].copy() + changed['z'][row] += 1 + details = {'row': row, 'column': 'offset', 'old': int(context['z'][row]), + 'new': int(changed['z'][row])} + elif label == 'histogram': + changed['profile'] = dict(context['profile']) + changed['profile'][1] += 1 + details = {'rank': 1, 'old': context['profile'][1], 'new': changed['profile'][1]} + else: + raise ValueError('Unknown semantic mutation: ' + label) + return changed, details + + +def main(): + need(__debug__ and not sys.flags.optimize, 'Assertions-enabled Python is required') + started = time.monotonic() + derivation = json.loads((HERE / 'DERIVATION.json').read_text()) + source_pin = derivation['derived_script_sha256'] + need(sha(SOURCE) == source_pin, 'Authenticated preserved auditor') + output = Path(os.environ['OWNER_AUDIT_OUTPUT']).resolve() + semantic_output = output.with_name('SEMANTIC-GATES.json') + need(not semantic_output.exists(), 'Fresh semantic-gate receipt') + # Authentication, the complete positive audit, and its original RESULT.json + # execute once. No producer or validator predicate is replaced or bypassed. + context = runpy.run_path(str(SOURCE), run_name='__main__') + gates, family_computation = inventory(SOURCE) + inherited = HERE / 'upstream/independent_literal.py' + need(sha(inherited) == derivation['predecessor_script_sha256'], 'Frozen predecessor auditor') + inherited_gates, inherited_family = inventory(inherited) + for message in GATES.values(): + need(ast.dump(gates[message], include_attributes=False) + == ast.dump(inherited_gates[message], include_attributes=False), + 'Same inherited production gate: ' + message) + need([ast.dump(node, include_attributes=False) for node in family_computation] + == [ast.dump(node, include_attributes=False) for node in inherited_family], + 'Same inherited family computation') + baseline_rows = hashlib.sha256(context['rows']).hexdigest() + baseline_profile = dict(context['profile']) + tests = [] + for label, message in GATES.items(): + node = gates[message] + execute([node], dict(context)) + bad, details = mutation(label, context, family_computation) + need(rejected(node, bad, message), 'Semantic mutation accepted: ' + label) + disabled = copy.deepcopy(node) + disabled.value.args[0] = ast.copy_location(ast.Constant(True), disabled.value.args[0]) + ast.fix_missing_locations(disabled) + need(not rejected(disabled, bad, message), + 'Disabling the gate did not break the negative test: ' + label) + execute([node], dict(context)) + tests.append({'gate': label, 'source_line': node.lineno, 'message': message, + 'predicate_sha256': hashlib.sha256( + ast.dump(node, include_attributes=False).encode()).hexdigest(), + 'baseline_passed': True, 'mutation': details, + 'mutant_rejected_at_expected_gate': True, + 'disabling_gate_makes_control_fail': True, + 'restored_baseline_passed': True}) + del bad + need(hashlib.sha256(context['rows']).hexdigest() == baseline_rows + and context['profile'] == baseline_profile, 'Baseline semantic inputs unchanged') + need(sha(SOURCE) == source_pin, 'Preserved auditor unchanged') + receipt = { + 'status': 'PASS_FIVE_EXACT_PRODUCTION_GATE_MUTATIONS_AND_FIVE_DISABLE_SENSITIVITIES', + 'source_sha256': source_pin, 'predecessor_source_sha256': sha(inherited), + 'checker_sha256': sha(Path(__file__)), 'positive_receipt_sha256': sha(output), + 'roles': len(context['rows']), 'tests': tests, 'seconds': time.monotonic() - started, + 'semantic_mutants_rejected': len(tests), 'gate_disable_sensitivities': len(tests), + 'historical_reject_lambdas_counted': False, + 'scope': 'Fresh authenticated complete positive owner audit followed by five isolated ' + 'production AST gate tests on changed in-memory inputs, each sensitive to disabling ' + 'its gate. Not five end-to-end corrupted-artifact replays. Frozen auditor and ' + 'source manifests are unchanged; historical reject lambdas provide no negative coverage.'} + semantic_output.write_text(json.dumps(receipt, indent=2, sort_keys=True) + '\n') + print(json.dumps({'status': receipt['status'], 'semantic_mutants_rejected': len(tests), + 'gate_disable_sensitivities': len(tests)}, indent=2)) + + +if __name__ == '__main__': + main() diff --git a/research/staged-release-retiming-t530/verify.py b/research/staged-release-retiming-t530/verify.py index db1e66a6d9..7d59ff0e23 100644 --- a/research/staged-release-retiming-t530/verify.py +++ b/research/staged-release-retiming-t530/verify.py @@ -81,11 +81,25 @@ def run(name, relative, *args): local = read(out / 'local/VERIFY.json') owner = read(out / 'owner/RESULT.json') owner_run = read(out / 'owner/RUN.json') + owner_controls = read(out / 'owner/SEMANTIC-GATES.json') moment = read(out / 'numerics/MOMENT.json') outer = read(out / 'numerics/outer/RESULT.json') cap = read(out / 'packing/RETIMED-PACKING-CAP.json') require(local['status'] == 'PASS_PORTABLE_LOCAL_RETIMING_AUDIT', 'local status') require(owner_run['status'] == 'PASS_LEAN_REGENERATED_OWNER_AUDIT', 'fresh owner status') + require(owner_controls['status'] + == 'PASS_FIVE_EXACT_PRODUCTION_GATE_MUTATIONS_AND_FIVE_DISABLE_SENSITIVITIES', + 'fresh owner semantic controls') + require(owner_controls['source_sha256'] == owner['script_sha256'] + and owner_controls['roles'] == owner['roles'], 'owner control source/data binding') + require({item['gate'] for item in owner_controls['tests']} + == {'helper_identity', 'window', 'family', 'prefix', 'histogram'} + and len(owner_controls['tests']) == 5, 'complete owner gate control coverage') + for item in owner_controls['tests']: + require(all(item[key] is True for key in + ('baseline_passed', 'mutant_rejected_at_expected_gate', + 'disabling_gate_makes_control_fail', 'restored_baseline_passed')), + 'owner mutation and gate-disable sensitivity: ' + item['gate']) require(owner['profile'] == moment['new_profile'] == cap['literal_T530_profile'] == summary['profile'] == PROFILE, 'all components bind the same full profile') require(owner['roles'] == 1946160 and owner['calls'] == moment['calls'] == 4770, @@ -149,6 +163,8 @@ def run(name, relative, *args): 'status':'PASS_STAGED_RELEASE_RETIMING_T530_BOUNDED_CHECKS', 'kappa':str(KAPPA), 'profile':PROFILE, 'stages':stages, 'package_files_unchanged':True, + 'owner_semantic_gate_controls':5, + 'owner_gate_disable_sensitivity_controls':5, 'rejected_recorded_cache_controls':['empty cache inventory', 'empty provider cache subset'], 'scope':'Fresh finite local/operator, regenerated ownership/invoice, exact arithmetic and scoped packing checks; full native/controller/outer admission is retained evidence only in this command. Inherited general assumptions remain.'} (out / 'RESULT.json').write_text(json.dumps(receipt, indent=2) + '\n')