From bb36fc65ee0b161229169505f4840c436c5ca2b9 Mon Sep 17 00:00:00 2001 From: Clear1nsight <22630354+Clear1nsight@users.noreply.github.com> Date: Wed, 11 Nov 2026 14:22:27 +1100 Subject: [PATCH 1/3] Reuse #7147 selected replay navigation for onboarding This is the exact documentation prerequisite retained by #7156. It points the onboarding check to the selected #7000/#7001 review. Credit to Rohan Arun and the source authors. --- docs/ci-verification.md | 19 ++++++++++++++++++- 1 file changed, 18 insertions(+), 1 deletion(-) diff --git a/docs/ci-verification.md b/docs/ci-verification.md index 63ba3e9aa8..52b62d0481 100644 --- a/docs/ci-verification.md +++ b/docs/ci-verification.md @@ -1,8 +1,25 @@ # CI verification -## Current selected-family replay: #6030 +## Current selected-family replay: #7000 with #7001 The [selected record](../certificates/selected-result.json) binds conditional +κ = 0.00363005817 to the [application review](research/pr-intake-evidence/pr7000-application/PROOF-REVIEW.md), +[validation receipts](research/pr-intake-evidence/pr7000-application/VALIDATION.json), +and [explicit source closure](../certificates/frontier7000-source.json). +`make frontier7000-verify` follows that exact-source selected replay. The review +reuses eleven authenticated preceding executions and records seven fresh serial +application, scalar and complete native-catalogue executions. The earlier +monolithic timeout is retained separately and is not completed coverage. +Consult the receipts for exact commands, source heads and limits. + +The five inherited framework assumptions remain. No complete uniform word, +literal multiplier execution, independent human proof or formal-kernel proof +is asserted. Routine research submissions do not need to rerun this +selected-family replay. The sections below preserve historical checkpoints. + +## Historical selected-family replay: #6030 + +The [historical checkpoint](../certificates/checkpoints/frontier6030.json) binds conditional κ = 0.003125804 to the [proof review](research/pr-intake-evidence/pr6030-audit/PROOF-REVIEW.md), [validation receipts](research/pr-intake-evidence/pr6030-audit/VALIDATION.json), and [explicit source closure](../certificates/frontier6030-source.json). From d2e54af81f9dda6487636b79d4964a2385d89b2b Mon Sep 17 00:00:00 2001 From: Clear1nsight <22630354+Clear1nsight@users.noreply.github.com> Date: Wed, 11 Nov 2026 21:53:51 +1100 Subject: [PATCH 2/3] Replay the historical selected check at its inspected commit MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit The PR #6292 rejection census and package plan are statements about 2485805. Load its exact sources and planner in a private sparse checkout, keeping all source hashes, 19 expected rejections, nine package selections and the empty-plan control. Subsequent edits to the live Makefile and CI guide no longer invalidate this historical check. The original audit is by unpaidmoon, building on Dennis’s historical replay gate. The pinned repository view follows the precedent of Matarener’s PR #5434. Repair prepared with substantial OpenAI Codex assistance. --- .../historical-selected-replay-gap/README.md | 6 +- .../SOURCES.json | 60 +++++++++--------- .../VERIFY.json | 31 +-------- .../historical-selected-replay-gap/verify.py | 63 ++++++++++++++----- 4 files changed, 82 insertions(+), 78 deletions(-) diff --git a/research/historical-selected-replay-gap/README.md b/research/historical-selected-replay-gap/README.md index 55d8cc3b49..36d9a873ca 100644 --- a/research/historical-selected-replay-gap/README.md +++ b/research/historical-selected-replay-gap/README.md @@ -69,7 +69,11 @@ python3 -B scripts/research_package.py --package research/historical-selected-re The direct command prints `PASS_HISTORICAL_SELECTED_REPLAY_GAP`. A registered replay prints `PASS_REGISTERED_RESEARCH_PACKAGE`. Both require Git history -containing the two inspected commits. +containing the two inspected commits and the source and manifest objects at +`2485805a6d47f36ea83ddde6327d453ac82d44dc`. The verifier uses a temporary +sparse checkout of that commit, checks the declared source digests there, and +uses its planner and manifest inventory. The recorded rejections and selection +therefore remain reproducible after later changes to the live Makefile or CI guide. ## Open next questions diff --git a/research/historical-selected-replay-gap/SOURCES.json b/research/historical-selected-replay-gap/SOURCES.json index c1010eec95..62bb8b3950 100644 --- a/research/historical-selected-replay-gap/SOURCES.json +++ b/research/historical-selected-replay-gap/SOURCES.json @@ -4,13 +4,13 @@ "files": [ { "path": "Makefile", - "usage": "input", + "usage": "provenance", "git_blob": "0d683a06b9e7ee162496108ce9a7c5d2ee94fccf", "sha256": "4f2d4f2dcd15139ec82658a975f85ed300897385f85799218539f4c8d60567da" }, { "path": "certificates/partial-swap-network.json", - "usage": "input", + "usage": "provenance", "git_blob": "eccafa830c16170c36faf93045ddf1f638f7bcd4", "sha256": "4c0b9d37e1034b2076e30a70f8e514416298c462d9ee98bc87fe6556b14df786" }, @@ -22,7 +22,7 @@ }, { "path": "docs/ci-verification.md", - "usage": "input", + "usage": "provenance", "git_blob": "63ba3e9aa8bdc5e942b56e34244b92b16f854085", "sha256": "c7d3027e9ad8bcbff68f07aa9576b30fb2f3c76c44d876d40c7fdbf4a3e2228a" }, @@ -34,163 +34,163 @@ }, { "path": "research/clifford-state-performance/SOURCE.json", - "usage": "input", + "usage": "provenance", "git_blob": "6f98a0061a5104dfab82c9e806f819b41811f684", "sha256": "396d0f08df24952248140d5c65c51b8c902ef1c580892ff7ea182890530f67ee" }, { "path": "research/community-batch1047-audit/CONTENT-COVERAGE.json", - "usage": "input", + "usage": "provenance", "git_blob": "5e0f92af463ec12c5e1dcc3effd44081a88af647", "sha256": "07a9daeaf2bda308a92e9a4684f13d5fc766c7772d74801fceb7f4599fdab226" }, { "path": "research/community-batch1099-audit/CONTENT-COVERAGE.json", - "usage": "input", + "usage": "provenance", "git_blob": "9e13266bf85e627f1b7dc225e9530ea69fd2c7f0", "sha256": "421e1211fb1897c45621dc6801c276e53f2e6f335583c9c9049e535f87c0a3b1" }, { "path": "research/community-batch932-audit/CONTENT-COVERAGE.json", - "usage": "input", + "usage": "provenance", "git_blob": "cc4d03eb59b9ab3f952735f7e88ff18c2d15d7af", "sha256": "184629cac91a5cfaca50330a88596008b824221433867dcf8117539c913c284a" }, { "path": "research/community-batch970-audit/CONTENT-COVERAGE.json", - "usage": "input", + "usage": "provenance", "git_blob": "8b9f4111badf7de5d97684799560b55110e9da79", "sha256": "23188ed920e38a54006cb883e181585620821c63bf7e8b5e05d32719417cc37e" }, { "path": "research/community-frontier741-audit/CONTENT-COVERAGE.json", - "usage": "input", + "usage": "provenance", "git_blob": "a5300d4e7a5381a3f443fc54c768ca6f0f236d68", "sha256": "3c820fb30e1b4d9bcfc6a7ab524375e5b2abd66b940af2c509146104f0bcd79c" }, { "path": "research/community-frontier890-audit/CONTENT-COVERAGE.json", - "usage": "input", + "usage": "provenance", "git_blob": "d7ff6d777b01d69b6ce84caf25d3b7e4a4d2f211", "sha256": "6b185a9902652f893f3ebd8ada92d2f11b6de6533a9a4d11718a8a4496101128" }, { "path": "research/community-hyperplane599-audit/SOURCE.json", - "usage": "input", + "usage": "provenance", "git_blob": "546f37d326d10a99910ae8f908e71ef768524d98", "sha256": "65099d764bfcc39bda5e4d9966783611b094c3522dbdd1435cd498d657a8ef8e" }, { "path": "research/community-k492-audit/SOURCE.json", - "usage": "input", + "usage": "provenance", "git_blob": "e538481e4cb16ed936d3195f2dfb5b5a9ca0a76b", "sha256": "2c0f4fa5bc150d05658af2e7c54c4d2c337dd52b7efd3d69530ae73bcbdf452a" }, { "path": "research/community-reconciliation92-audit/MANIFEST.json", - "usage": "input", + "usage": "provenance", "git_blob": "2a2e93685173d5f13cbb5abe740f5d90352e0228", "sha256": "5f501f3c118131e7d069f30ad77186eb2ad6961f9680a0ef105f4514ed41808a" }, { "path": "research/partial-swap-digest/baseline.py", - "usage": "input", + "usage": "provenance", "git_blob": "a2f0190704db83bd8ef48e46e723c49b925804fe", "sha256": "81e9af92cdf38243a540cdcff2062778e449467848d444da37a9553c12ca4c34" }, { "path": "research/r420-two-sided-basis/SOURCES.json", - "usage": "input", + "usage": "provenance", "git_blob": "5d718e11e62f4bcadecf1e02d6b61f87dbe190b0", "sha256": "d9810b0d139c5a1211fd2c1f0d142187cc1fca30026e1e7bc4f9ecfacf1596d1" }, { "path": "research/skip-clones/SOURCE.json", - "usage": "input", + "usage": "provenance", "git_blob": "8d1bb3b9c8189e35e5d8bfdfa632d7473e8be0d5", "sha256": "0b68e63e35a97ce6b0cdb6e291b88ebaa8f2dd4afb70b2498f10ee89428258dc" }, { "path": "research/split-skip/SOURCE.json", - "usage": "input", + "usage": "provenance", "git_blob": "2ab610b6ea2edd2865fda793ef2168b0c76afb4f", "sha256": "7c2b4646a3ecfef6f881da5c43e4bd0fa9a4d1b00548b8ab458d897e16735134" }, { "path": "scripts/historical-ci-inputs/Makefile", - "usage": "input", + "usage": "provenance", "git_blob": "aff68409021c9d401a6f8013b9dfd7dbcc30f2a8", "sha256": "ea8830dd79da493e2d75baf753d733ff7efbcf2b4794afe41fae0ac8f3055646" }, { "path": "scripts/historical-ci-inputs/ledger-batch932-run_isolated_tests.py", - "usage": "input", + "usage": "provenance", "git_blob": "65db599ab0b1dea0312c4ca048e0bd0f44c3736f", "sha256": "96ea543e6c707424afe247e77bd86c82152f90fc76a0773c4232145da5cdf8d1" }, { "path": "scripts/historical-ci-inputs/ledger-batch932-test_isolated_test_runner.py", - "usage": "input", + "usage": "provenance", "git_blob": "34820a8f24678f918f4d0e7a35380d8013fc3495", "sha256": "628391b6abfbc8674ceec1751867a4392f2cc0b5b66886243e139af86cf355ac" }, { "path": "scripts/historical-ci-inputs/ledger-batch970-verify_selected_result.py", - "usage": "input", + "usage": "provenance", "git_blob": "c755b76e0d44ba4917aa94440ebe54daefce5b2a", "sha256": "d7fd929726b326aeeaf0a3996475adec88eee9aac09ae0bebeeaa0bc1fc8f199" }, { "path": "scripts/historical-ci-inputs/ledger-frontier741-ci-verification.md", - "usage": "input", + "usage": "provenance", "git_blob": "7f3c012504187917a728b9fe87043f0fc8cd006a", "sha256": "a854022e0e1d5d4db4d60e586be3ea56005013ef14a1fc06d02bc06e8529c4b0" }, { "path": "scripts/historical-ci-inputs/partial-swap-context.json", - "usage": "input", + "usage": "provenance", "git_blob": "ad65114886bf34a4fd27e79f3be502389e689faa", "sha256": "833a9642f33aeab2ffea17ec9c6b82e0a953f90192b2c82e10bef21538dccba9" }, { "path": "scripts/historical-ci-inputs/partial-swap-network.json", - "usage": "input", + "usage": "provenance", "git_blob": "52075f2463f60af5e16571347f24274fce73a1ea", "sha256": "f3c4be597b2f2136da4ae2cc80c7454f63c90aa01f84e5b8131cee4dd55de815" }, { "path": "scripts/partial_swap/shared.py", - "usage": "input", + "usage": "provenance", "git_blob": "44a0e454c70f9c4b98e258b8443612e6a119904b", "sha256": "5a0646a50b9f3e8ea55168620a78e8853b0ab810517cefc8cfb8696aedee278a" }, { "path": "scripts/replay_historical_check.py", - "usage": "input", + "usage": "provenance", "git_blob": "1e92fff2782970ef71378f594f2350d245a4db26", "sha256": "5467619c78183d3adc82b0cb55af28e5c1a01fca2b0588677816244b53e2bafd" }, { "path": "scripts/research_package.py", - "usage": "input", + "usage": "provenance", "git_blob": "091b4c8f58bac9a9580d76025b887dc5c873d05f", "sha256": "e1256016e7f51827d04fa2179255989f639ae1d97afaa9c16265f85a0c6abd70" }, { "path": "scripts/run_isolated_tests.py", - "usage": "input", + "usage": "provenance", "git_blob": "a96ab35b315ce492e7fbbfd6c5ae211aa066b541", "sha256": "49eb56dd0fc0d8d8ffdb209970a7adf2176223580646f575d5c22e59543b381c" }, { "path": "scripts/verify_selected_result.py", - "usage": "input", + "usage": "provenance", "git_blob": "6882a4700e410dec569b51ae2eaf1a19cc019195", "sha256": "d6b305eac5b9bdb8172c469ad30a1655a60fa0aceac8b1bf610e1b73f51babd8" }, { "path": "tests/test_isolated_test_runner.py", - "usage": "input", + "usage": "provenance", "git_blob": "343b24abf6719b81805eba5a84c74e57634c8288", "sha256": "3a5470d0b139828b90e19bf9583ddeafcd69f8e34f2824664eb3a2958a52e34d" } diff --git a/research/historical-selected-replay-gap/VERIFY.json b/research/historical-selected-replay-gap/VERIFY.json index 98553e72ed..ab7efa3471 100644 --- a/research/historical-selected-replay-gap/VERIFY.json +++ b/research/historical-selected-replay-gap/VERIFY.json @@ -4,36 +4,7 @@ "python": "3.12", "requirements": [], "inputs": [ - "Makefile", - "certificates/partial-swap-network.json", - "docs/ci-verification.md", - "research/clifford-state-performance/SOURCE.json", - "research/community-batch1047-audit/CONTENT-COVERAGE.json", - "research/community-batch1099-audit/CONTENT-COVERAGE.json", - "research/community-batch932-audit/CONTENT-COVERAGE.json", - "research/community-batch970-audit/CONTENT-COVERAGE.json", - "research/community-frontier741-audit/CONTENT-COVERAGE.json", - "research/community-frontier890-audit/CONTENT-COVERAGE.json", - "research/community-hyperplane599-audit/SOURCE.json", - "research/community-k492-audit/SOURCE.json", - "research/community-reconciliation92-audit/MANIFEST.json", - "research/partial-swap-digest/baseline.py", - "research/r420-two-sided-basis/SOURCES.json", - "research/skip-clones/SOURCE.json", - "research/split-skip/SOURCE.json", - "scripts/historical-ci-inputs/Makefile", - "scripts/historical-ci-inputs/ledger-batch932-run_isolated_tests.py", - "scripts/historical-ci-inputs/ledger-batch932-test_isolated_test_runner.py", - "scripts/historical-ci-inputs/ledger-batch970-verify_selected_result.py", - "scripts/historical-ci-inputs/ledger-frontier741-ci-verification.md", - "scripts/historical-ci-inputs/partial-swap-context.json", - "scripts/historical-ci-inputs/partial-swap-network.json", - "scripts/partial_swap/shared.py", - "scripts/replay_historical_check.py", - "scripts/research_package.py", - "scripts/run_isolated_tests.py", - "scripts/verify_selected_result.py", - "tests/test_isolated_test_runner.py" + "scripts/research_package.py" ], "commands": [ { diff --git a/research/historical-selected-replay-gap/verify.py b/research/historical-selected-replay-gap/verify.py index 83b995941a..9d266c5a4e 100644 --- a/research/historical-selected-replay-gap/verify.py +++ b/research/historical-selected-replay-gap/verify.py @@ -6,8 +6,10 @@ """ import hashlib import importlib.util +import json import subprocess import sys +import tempfile from pathlib import Path ROOT = Path(__file__).resolve().parents[2] @@ -61,31 +63,47 @@ def require(ok, message): raise SystemExit(message) -def load_checker(): - path = ROOT / "scripts/replay_historical_check.py" - spec = importlib.util.spec_from_file_location("historical_selected_replay_gap_checker", path) +def load_module(path): + spec = importlib.util.spec_from_file_location(path.stem, path) module = importlib.util.module_from_spec(spec) spec.loader.exec_module(module) return module +def checkout_snapshot(snapshot, sources, runner, env): + paths = [runner.canonical_relative_path(row["path"]) for row in sources["files"]] + git = ["git", "-c", "maintenance.auto=false", "-c", "gc.auto=0", + "-c", "core.autocrlf=false"] + subprocess.run([*git, "clone", "--quiet", "--shared", "--no-tags", "--no-checkout", + "--", str(ROOT), str(snapshot)], cwd=ROOT, env=env, check=True) + subprocess.run([*git, "update-ref", "--no-deref", "HEAD", INSPECTED], + cwd=snapshot, env=env, check=True) + # The pinned planner reads omitted manifests from the sparse HEAD/index. + patterns = "".join(f"/{path.as_posix()}\n" for path in paths) + subprocess.run([*git, "sparse-checkout", "set", "--no-cone", "--stdin"], + cwd=snapshot, env=env, input=patterns.encode("utf-8"), check=True) + subprocess.run([*git, "read-tree", "-mu", "HEAD"], cwd=snapshot, env=env, check=True) + for path, row in zip(paths, sources["files"], strict=True): + require(hashlib.sha256((snapshot / path).read_bytes()).hexdigest() == row["sha256"], + "historical checkout source digest changed: " + path.as_posix()) + + def entries(checker): for name, config in checker.CONFIG.items(): for entry in [config, *config.get("additional_inputs", [])]: yield name, entry -def reject(checker, entry): +def reject(root, checker, entry): try: - checker.authenticated_input(ROOT, entry) + checker.authenticated_input(root, entry) except ValueError as exc: return str(exc) raise SystemExit("historical input was admitted: " + entry["path"]) -def main(): - require(not sys.flags.optimize, "assertions must stay enabled") - checker = load_checker() +def check_snapshot(root, env): + checker = load_module(root / "scripts/replay_historical_check.py") selected = [entry for name, entry in entries(checker) if name == "tooling-ledger" and entry["path"] == SELECTED_PATH] require(len(selected) == 1, "selected-result checker overlay is not unique") @@ -94,7 +112,7 @@ def main(): require(entry["accepted_live_sha256"] == [SELECTED_ACCEPTED], "accepted selected-checker successors changed") frozen = (checker.INPUTS / entry["input"]).read_bytes() - live = (ROOT / SELECTED_PATH).read_bytes() + live = (root / SELECTED_PATH).read_bytes() require(hashlib.sha256(frozen).hexdigest() == SELECTED_PIN, "frozen selected checker bytes changed") require(hashlib.sha256(live).hexdigest() == SELECTED_LIVE, "live selected checker digest changed") require(SELECTED_LIVE not in (SELECTED_PIN, SELECTED_ACCEPTED), "live checker was already admitted") @@ -102,7 +120,7 @@ def main(): # live successor, not a broken comparison. require(SELECTED_PIN in (SELECTED_PIN, *entry["accepted_live_sha256"]), "pin membership control failed") - require(reject(checker, entry) == REJECTIONS[SELECTED_PATH][1], + require(reject(root, checker, entry) == REJECTIONS[SELECTED_PATH][1], "selected checker rejection text changed") counts = {path: 0 for path in REJECTIONS} @@ -110,7 +128,7 @@ def main(): for _name, item in entries(checker): if item["path"] not in REJECTIONS: continue - message = reject(checker, item) + message = reject(root, checker, item) counts[item["path"]] += 1 messages.setdefault(item["path"], message) for path, (count, message) in REJECTIONS.items(): @@ -118,20 +136,31 @@ def main(): require(messages[path] == message, "rejection text changed for " + path) require(sum(counts.values()) == 19, "rejection total changed") ci = [item for _name, item in entries(checker) if item["path"] == CI_PATH] - require(len(ci) == 1 and hashlib.sha256((ROOT / CI_PATH).read_bytes()).hexdigest() == CI_LIVE, + require(len(ci) == 1 and hashlib.sha256((root / CI_PATH).read_bytes()).hexdigest() == CI_LIVE, "selected CI note digest changed") diff = subprocess.check_output( - ["git", "diff", "--name-only", PARENT, INSPECTED], cwd=ROOT, text=True) + ["git", "diff", "--name-only", PARENT, INSPECTED], cwd=root, env=env, text=True) changed = sorted(name for name in diff.splitlines() if name) require(changed == CHANGED, "inspected commit diff changed") - sys.path.insert(0, str(ROOT / "scripts")) - from research_package import plan_details - details = plan_details(ROOT, set(changed)) + planner = load_module(root / "scripts/research_package.py") + details = planner.plan_details(root, set(changed)) require([row["package"] for row in details] == PLAN_PACKAGES, "helper plan selection changed") matched = {name for row in details for names in row["causes"].values() for name in names} require(sorted(set(changed) - matched) == UNMATCHED, "unmatched plan paths changed") - require(plan_details(ROOT, set()) == [], "empty change set selected a package") + require(planner.plan_details(root, set()) == [], "empty change set selected a package") + + +def main(): + require(not sys.flags.optimize, "assertions must stay enabled") + sources = json.loads(Path(__file__).with_name("SOURCES.json").read_bytes()) + require(sources["base_commit"] == INSPECTED, "historical checkout base changed") + runner = load_module(ROOT / "scripts/research_package.py") + env = runner.git_source_env() + with tempfile.TemporaryDirectory(prefix="historical-selected-replay-") as temporary: + snapshot = Path(temporary) / "snapshot" + checkout_snapshot(snapshot, sources, runner, env) + check_snapshot(snapshot, env) print("PASS_HISTORICAL_SELECTED_REPLAY_GAP") print("selected_checker_live=" + SELECTED_LIVE) print("rejections=19 distinct_paths=7 plan_packages=9") From 6be0814ea95ab62e4cffc6c9ba7985deeaad82fa Mon Sep 17 00:00:00 2001 From: ToikY <27568617+ToikY@users.noreply.github.com> Date: Wed, 11 Nov 2026 08:28:33 -0800 Subject: [PATCH 3/3] Bound one-child volume for a signed Type-B idle pair --- .../p104-idle-child-volume-bound/AUDIT.json | 170 +++++++++++++++ research/p104-idle-child-volume-bound/NOTICE | 12 + .../p104-idle-child-volume-bound/PROOF.md | 129 +++++++++++ .../PROVENANCE.json | 44 ++++ .../p104-idle-child-volume-bound/README.md | 100 +++++++++ .../p104-idle-child-volume-bound/SOURCES.json | 18 ++ .../p104-idle-child-volume-bound/TASK.json | 84 +++++++ .../p104-idle-child-volume-bound/VERIFY.json | 19 ++ .../p104-idle-child-volume-bound/contact.py | 46 ++++ .../inputs/CALLER.json.gz | Bin 0 -> 11215 bytes .../inputs/INVOICE-7277.json.gz | Bin 0 -> 17129 bytes .../inputs/TYPE-B-PORTS.json | 10 + .../inputs/check_odd_physical_binding.py.gz | Bin 0 -> 2087 bytes .../inputs/upstream_application.py.gz | Bin 0 -> 6260 bytes .../p104-idle-child-volume-bound/pricing.py | 46 ++++ .../p104-idle-child-volume-bound/verify.py | 206 ++++++++++++++++++ 16 files changed, 884 insertions(+) create mode 100644 research/p104-idle-child-volume-bound/AUDIT.json create mode 100644 research/p104-idle-child-volume-bound/NOTICE create mode 100644 research/p104-idle-child-volume-bound/PROOF.md create mode 100644 research/p104-idle-child-volume-bound/PROVENANCE.json create mode 100644 research/p104-idle-child-volume-bound/README.md create mode 100644 research/p104-idle-child-volume-bound/SOURCES.json create mode 100644 research/p104-idle-child-volume-bound/TASK.json create mode 100644 research/p104-idle-child-volume-bound/VERIFY.json create mode 100644 research/p104-idle-child-volume-bound/contact.py create mode 100644 research/p104-idle-child-volume-bound/inputs/CALLER.json.gz create mode 100644 research/p104-idle-child-volume-bound/inputs/INVOICE-7277.json.gz create mode 100644 research/p104-idle-child-volume-bound/inputs/TYPE-B-PORTS.json create mode 100644 research/p104-idle-child-volume-bound/inputs/check_odd_physical_binding.py.gz create mode 100644 research/p104-idle-child-volume-bound/inputs/upstream_application.py.gz create mode 100644 research/p104-idle-child-volume-bound/pricing.py create mode 100644 research/p104-idle-child-volume-bound/verify.py diff --git a/research/p104-idle-child-volume-bound/AUDIT.json b/research/p104-idle-child-volume-bound/AUDIT.json new file mode 100644 index 0000000000..ea48b90227 --- /dev/null +++ b/research/p104-idle-child-volume-bound/AUDIT.json @@ -0,0 +1,170 @@ +{ + "controls": { + "duplicate_axis_rejected": true, + "exhaustive_small_signed_patterns": 126, + "spectator_translation_checked": true, + "wrong_sign_detected": true + }, + "even_translation_defect_lower": "12750684159/8589934592", + "fixed_pairs_checked": 1, + "identity_bypass_minus_i_requirement": "33/64", + "maximum_rank73_displacement_fraction": "206158430209/274877906944", + "minimum_volume_translation": "408021893088/206158430209", + "minimum_volume_two_parity_scalars": "266287972320/206158430209", + "old_roles": [ + 68, + 36 + ], + "phase_multiplicities": { + "9": [ + 136, + 120, + 120, + 136 + ], + "64": [ + 4611686020574871552, + 4611686018427387904, + 4611686016279904256, + 4611686018427387904 + ], + "73": [ + 2361183241469182345216, + 2361183241400462868480, + 2361183241400462868480, + 2361183241469182345216 + ] + }, + "physical_site_tests": 0, + "port_layouts": [ + { + "central": 81, + "port": 15, + "rank": [ + 9, + 64, + 73 + ] + }, + { + "central": 273, + "port": 17, + "rank": [ + 9, + 64, + 73 + ] + }, + { + "central": 262, + "port": 27, + "rank": [ + 9, + 64, + 73 + ] + }, + { + "central": 98, + "port": 34, + "rank": [ + 9, + 64, + 73 + ] + }, + { + "central": 290, + "port": 35, + "rank": [ + 9, + 64, + 73 + ] + }, + { + "central": 268, + "port": 42, + "rank": [ + 9, + 64, + 73 + ] + }, + { + "central": 164, + "port": 47, + "rank": [ + 9, + 64, + 73 + ] + }, + { + "central": 280, + "port": 55, + "rank": [ + 9, + 64, + 73 + ] + } + ], + "quotes": { + "moonshot": { + "affordable_volume_upper": "8694420563333237576161521658465600983001612376437/11480888644886462271324450403755400395535817125548", + "k": "10018846261809/2500000000000000", + "old_margin": [ + "-35046259140897474942389472864147556348879828607881/250000000000000000000000000000000000000000000000", + "-70092518281794949884778945728295112697759657187079/500000000000000000000000000000000000000000000000" + ], + "optimistic_unit_volume_margin": [ + "-34830851019415308689536609316122492656677559378243/250000000000000000000000000000000000000000000000", + "-2786468081553224695162928745289799412534204749111/20000000000000000000000000000000000000000000000" + ], + "required_volume_margin_upper": "-1264794462764898851594058193916408350295579021854349888246027/4123168604180000000000000000000000000000000000000000000000" + }, + "old_crossing_upper": { + "affordable_volume_upper": "575721211650496238728823700100967452120809427074579/574936375783233515579855785604479852905719019943760", + "k": "91141748217473298207420876011401/25000000000000000000000000000000000", + "old_margin": [ + "-1002247197758299781/500000000000000000000000000000000000000000000000", + "-2004494395516543389/1000000000000000000000000000000000000000000000000" + ], + "optimistic_unit_volume_margin": [ + "392417933631361574483957248243799607545203537299/500000000000000000000000000000000000000000000000", + "784835867262723148967914496487599215090407130819/1000000000000000000000000000000000000000000000000" + ], + "required_volume_margin_upper": "-34408860488437058184631722532707140807127338644337621027166189/206158430209000000000000000000000000000000000000000000000000" + }, + "trial": { + "affordable_volume_upper": "575007606199184157246671021211010854884686158501099/574931861488676214810193693630614004446146632349360", + "k": "1459/400000", + "old_margin": [ + "-354740019024486253707723531092675176862662827421/500000000000000000000000000000000000000000000000", + "-709480038048972507415447062185350353725325598877/1000000000000000000000000000000000000000000000000" + ], + "optimistic_unit_volume_margin": [ + "37872355253971218238663790198425219269763047859/500000000000000000000000000000000000000000000000", + "75744710507942436477327580396850438539526151739/1000000000000000000000000000000000000000000000000" + ], + "required_volume_margin_upper": "-34554774165724023048342923019434562331473853215490462008415509/206158430209000000000000000000000000000000000000000000000000" + } + }, + "site": [ + 1339, + 2324 + ], + "source_head": "ed090b57ed88f8859e5ff4643645099e6ba856ea", + "source_pins": { + "inputs/CALLER.json.gz": "255d89f38cd45e38e5770f559bc43dc217e989032359768cdc7e8cdfd64b47bc", + "inputs/INVOICE-7277.json.gz": "42fc7d18689c9d4e04e0e6d893682bdd4fd9ce42eba6acee46755844c75ec1d1", + "inputs/TYPE-B-PORTS.json": "b51a161bf3bfaf3a6b3572056ad4f858781bb66007df2793357f0bfa6f796c53", + "inputs/check_odd_physical_binding.py.gz": "5c80c3b0415a7f91d216395248dd6f13297eed637732098e1ca8fb0548951b98", + "inputs/upstream_application.py.gz": "d98987db98553dc55bfc80e3ca47abfcd51c57af6f8cda61101391d8eae94184" + }, + "status": "PASS_SCOPED_ONE_CHILD_DISPLACEMENT_AND_VOLUME_EXCLUSION", + "two_parity_scalar_defect_lower": "8321499135/8589934592", + "twofold_carrier_max_one_root_capacity": "68719476737/137438953472", + "volume_price_linear": true +} diff --git a/research/p104-idle-child-volume-bound/NOTICE b/research/p104-idle-child-volume-bound/NOTICE new file mode 100644 index 0000000000..9162f44d41 --- /dev/null +++ b/research/p104-idle-child-volume-bound/NOTICE @@ -0,0 +1,12 @@ +One-child volume bound for the signed Type-B idle pair, Apache-2.0. + +The literal signed caller and physical binding come from Rohan Arun's +#7113, retaining the #7112 predecessor sources and source-specific +notices. The #7277 invoice comes from Rohan Arun's terminal rechart, +retaining Clear1nsight's #7274/#7244 constructions and all inherited +source-specific notices. PROVENANCE.json records the precise public +paths and exact source-byte digests for both. The eight port masks are +a projection of the exact #7277 native word. + +OpenAI Codex and subagents materially assisted proof, implementation, +independent audit and packaging. diff --git a/research/p104-idle-child-volume-bound/PROOF.md b/research/p104-idle-child-volume-bound/PROOF.md new file mode 100644 index 0000000000..9d424ce34c --- /dev/null +++ b/research/p104-idle-child-volume-bound/PROOF.md @@ -0,0 +1,129 @@ +# One-child displacement bound for Type-B idle events 1339 and 2324 + +**NO VERIFIED GAIN.** Exact #7277 benchmark head +ed090b57ed88f8859e5ff4643645099e6ba856ea and #7113 caller. +The test covers this one fixed-contact pair, replicated across the +eight corresponding Type-B ports. Roles 68 and 36 may share boundary +2324 or 2325. Retain their arbitrary-input fields and the signed +adjoint, ownership, restoration, scalar, tape and precision contracts. + +## Literal action + +In the common Fourier character chart of the retained phase-polynomial +physical binding, the two old maps multiply each character by +`i^{p_9(x)}` and `i^{p_{64}(x)}`, respectively. +The first polynomial is minus the port's central bit plus all eight +stage-8 bits. The second is the sum of all bits in stages 9 through +16. An even translation on the central axis converts its positive +coefficient to a negative one. Every port's 73 axes are orthonormal, so characters +realize every active bit tuple equally often. All spectator axes are +retained. The proposed rank-73 phase child has one signed central +axis and those 72 stage axes. The proof grants arbitrary ordinary +linear setup and extraction as long as the erased-child program has +one of the stated block-diagonal actions. + +For one field of dimension `d`, one child on carrier dimension `d'`, +and arbitrary linear input setup `A` and extraction `B`, let `C` +act as that child on its carrier and identity everywhere else. The +full intended action is `E=BCA` and the erased-child action is +`E_0=BA`. Then +```text +rank(E - E0) = rank(B(C - I)A) <= rank(C - I). +``` +The bound grants away all setup and routing restrictions and remains +necessary when forward and adjoint, ownership and restoration are +required. In particular it is unaffected by the amount of unaffected +outside storage. With two arbitrary inputs, the wanted map is +`E = D9 direct_sum D64`. + +## Exact spectra and all tensor widths + +For signed independent axes with coefficients `epsilon_j = +/-1`, +the residue multiplicity is +```text +N_k = 2^(r-2) + (1/2) Re(i^(-k) product_j(1 + i^(epsilon_j))). +``` +This follows by the four-root filter. The negative root's product +vanishes. For odd `r` the real and imaginary parts have equal +magnitude `2^{(r-1)/2}`. For even `r` exactly one part is zero, +and the other has magnitude `2^{r/2}`. The four fractions differ +from `1/4` by at most `delta_r = 2^(-(r+3)/2)` for odd `r` or +`2^{-(r+2)/2}` for even `r`. The two residue parity classes +have equal mass. For the literal pair at width one the fractions +come from `N_9=(136,120,120,136)` and +`N_{64}=(2^{62}+2^{31},2^{62},2^{62}-2^{31},2^{62})`. +At every positive integer tensor width `f` the signs repeat +on `rf` independent axes. Since `delta_(rf) <= delta_r` and +`64f` stays even, the same bounds hold uniformly. The +all-width assertion covers repeated phase cores. Other compiler +representations require a separate argument. + +A whole even linear character phase changes active signs, up to +a global fourth root. If its translation has a nonzero spectator +component, conditioning on that spectator balances `k` and `k+2` +and gives four equal masses. Therefore a retained block-diagonal +erased program of independent whole translations and global fourth +roots requires at least `d(3/2-2^{-6}-2^{-33})` displaced dimensions. +This exceeds the capacity of even an arbitrary one-field operator. + +Give the erased program additional freedom. On each field allow +`(aI+bD_r^2)` followed by such a translation, with separate +arbitrary complex `a,b`. Within each original parity class there +is one scalar value to match. The two original parity classes +contribute at most `1/2 + 2 delta_9` and `1/2 + delta_64` agreements +on their respective fields. The second improvement uses the fact +that one residue parity class is exactly balanced for even rank. +Consequently the desired map differs from this relaxed baseline +in at least `d(31/32-2^{-33})` dimensions. The canonical rank-73 +child can displace at most `d'(3/4+2^{-38})`, even under signed +active-axis phases and global fourth roots. The minimum volume +ratios are therefore +```text +d'/d >= 408021893088/206158430209 +or +d'/d >= 266287972320/206158430209. +``` +for the translation or parity-scalar baseline, respectively. +The parity-scalar bound is approximately 1.291666666505181. + +There is a separate width-one check for a doubled carrier and +identity erased action. If setup and extraction are invertible on +the full field state and both programs restore all ancillary fields, +the encoded input subspace is invariant under `C`. To see this, +write `BAJ=JE_0` and `BCAJ=JE` for the zero-scratch embedding `J`. +Then `CAJ=AJE_0^{-1}E`. The wanted `-i` eigenspace of `E` has +dimension `33d/64`. The twofold rank-73 carrier has at most +`2d(1/4+2^{-38})` dimensions at any one nonidentity root, strictly +less. This supplemental spectral bound needs actual full-state +restoration even in the erased run. + +## Price and limits + +The original pinned 17-stage caller has 110,536 paid occurrences, +22,461 productive positions and signed rank surplus 1,424. At fixed +rank-73 debit linear in physical volume `v=d'/d`, one candidate +invoice changes the eight old rank-9 and eight old rank-64 costs to +eight rank-73 costs at volume `v`. Give away all ordinary, +setup, routing, precision, tape and restoration overhead and keep +every other old occurrence. The upper bound for a nonnegative full +raw margin `M` is equivalent to +```text +v <= (w_9^+ + w_64^+ + M_old^+/8) / w_73^-. +``` +Directed powers give 1.001365082990607 at the incumbent crossing +upper, 1.000131745543397 at the 0.0036475 probe, and 0.757295086840312 +at the fixed moonshot. At the relaxed parity-scalar minimum carrier +size the incumbent directed upper raw margin is approximately +−166.904940310003. The exact rational value is in AUDIT.json. +The unit-volume optimistic price would clear the incumbent by about +0.7848358673, so even one additional rank-1 debit kills that quote. + +The equal-width exclusion is algebraic. The larger-volume conclusion +uses the stated volume-linear debit. Changed address permutations, field-mixing erased baselines, +noncanonical operators, other volume tariffs and other caller pairs +remain open. The scoped mathematical and price tests require only the +retained construction. Credits: #7113 physical signed caller and #7277 complete +invoice, #7166 bounded rectangular support, #7163 no-child rank +method, #1920 reciprocal trace, #1924 clean selectors, #7144 +distinct same-field gauge, and the R30 fixed-contact window bound. +OpenAI Codex materially assisted. diff --git a/research/p104-idle-child-volume-bound/PROVENANCE.json b/research/p104-idle-child-volume-bound/PROVENANCE.json new file mode 100644 index 0000000000..24151a08a5 --- /dev/null +++ b/research/p104-idle-child-volume-bound/PROVENANCE.json @@ -0,0 +1,44 @@ +{ + "bundled": { + "inputs/CALLER.json.gz": { + "commit": "07a76c5e2738882c0cb322278e56f6cae3c9885d", + "path": "research/signed-caller-8x9/expected/ODD-TYPE-AB-CALLER.json", + "git_blob": "9451ceaf6e8e037894680b549f3ef41c21b260d7", + "sha256": "255d89f38cd45e38e5770f559bc43dc217e989032359768cdc7e8cdfd64b47bc", + "source": "https://github.com/CrocSwap/integer-mult-bounds/blob/07a76c5e2738882c0cb322278e56f6cae3c9885d/research/signed-caller-8x9/expected/ODD-TYPE-AB-CALLER.json" + }, + "inputs/INVOICE-7277.json.gz": { + "commit": "ed090b57ed88f8859e5ff4643645099e6ba856ea", + "path": "research/p104-terminal-cut-rechart/RESULT.json", + "git_blob": "fc0ddfb979177a0791ffa60d94c1d0f50ee59872", + "sha256": "42fc7d18689c9d4e04e0e6d893682bdd4fd9ce42eba6acee46755844c75ec1d1", + "source": "https://github.com/CrocSwap/integer-mult-bounds/blob/ed090b57ed88f8859e5ff4643645099e6ba856ea/research/p104-terminal-cut-rechart/RESULT.json" + }, + "inputs/check_odd_physical_binding.py.gz": { + "commit": "07a76c5e2738882c0cb322278e56f6cae3c9885d", + "path": "research/signed-caller-8x9/replay/supplier7112/short-caller/check_odd_physical_binding.py", + "git_blob": "def1e6a18439bd40d1b12af04c6347bbf6b74c55", + "sha256": "5c80c3b0415a7f91d216395248dd6f13297eed637732098e1ca8fb0548951b98", + "source": "https://github.com/CrocSwap/integer-mult-bounds/blob/07a76c5e2738882c0cb322278e56f6cae3c9885d/research/signed-caller-8x9/replay/supplier7112/short-caller/check_odd_physical_binding.py" + }, + "inputs/upstream_application.py.gz": { + "commit": "07a76c5e2738882c0cb322278e56f6cae3c9885d", + "path": "research/signed-caller-8x9/replay/supplier7112/short-caller/upstream_application.py", + "git_blob": "1a6d358cbec88e70615e5314cdfca9e123124f83", + "sha256": "d98987db98553dc55bfc80e3ca47abfcd51c57af6f8cda61101391d8eae94184", + "source": "https://github.com/CrocSwap/integer-mult-bounds/blob/07a76c5e2738882c0cb322278e56f6cae3c9885d/research/signed-caller-8x9/replay/supplier7112/short-caller/upstream_application.py" + } + }, + "word_reference": { + "commit": "ed090b57ed88f8859e5ff4643645099e6ba856ea", + "path": "research/p104-terminal-cut-rechart/WORD.json.gz", + "git_blob": "077bf48c35db0ddafae81f1bfa0ffacc30894b2b", + "sha256": "2c523ce6fdd6092d758fedc3602a0bcedb692b9766f1e41f903351ba4dee1756", + "source": "https://github.com/CrocSwap/integer-mult-bounds/blob/ed090b57ed88f8859e5ff4643645099e6ba856ea/research/p104-terminal-cut-rechart/WORD.json.gz" + }, + "port_projection": { + "path": "inputs/TYPE-B-PORTS.json", + "source": "word_reference, ports[port] for each Type-B port in the pinned literal caller", + "sha256": "b51a161bf3bfaf3a6b3572056ad4f858781bb66007df2793357f0bfa6f796c53" + } +} diff --git a/research/p104-idle-child-volume-bound/README.md b/research/p104-idle-child-volume-bound/README.md new file mode 100644 index 0000000000..665886cdd9 --- /dev/null +++ b/research/p104-idle-child-volume-bound/README.md @@ -0,0 +1,100 @@ +# One-child volume bound for a signed Type-B idle pair + +The fixed Type-B idle events 1339 and 2324 of #7113 have signed ranks +9 and 64 on each of their eight corresponding ports. A canonical +rank-73 child with arbitrary linear setup and extraction needs volume +at least `266287972320/206158430209` times one field under the relaxed +parity-scalar erased-child contract. The complete #7277 invoice can +afford at most approximately 1.001365082990607 times one field at the +incumbent crossing upper. The directed raw margin upper is +approximately −166.904940310003. **NO VERIFIED GAIN.** Conditional κ +change is 0%. + +## Scope and evidence + +The proof computes exact signed phase multiplicities and bounds the +displacement rank when the child is erased. It treats both an independent +translation on each field and the larger class that also allows two +arbitrary parity scalars per field. The closed multiplicity formula +applies at every positive integer tensor width of the repeated phase +cores. A supplementary invariant-subspace argument rules out a twofold +carrier at width one under reversible setup, identity erased action and +full-state restoration in both runs. + +The exact volume price grants free incremental setup, routing, ordinary +work, precision, tape and restoration. The rest of the complete signed +caller remains charged. The scope is one fixed caller pair, repeated on +eight corresponding ports. All eight signed layouts and three directed +price probes are covered. [Written proof](PROOF.md) [Exact receipt](AUDIT.json) + +## Replay + +From a clean checkout with CPython 3.12 and assertions enabled: + +```sh +python3.12 -B scripts/research_package.py --package research/p104-idle-child-volume-bound +``` + +The standalone replay also works without Git or network from a verified +package export: + +```sh +python3.12 -I -B research/p104-idle-child-volume-bound/verify.py +``` + +It authenticates the bundled literal caller, frozen complete invoice and +two inherited physical binding files by their Git blob IDs and +uncompressed SHA-256 hashes. It reconstructs the pair windows, checks the +bundled eight-port projection, verifies all eight layouts, tests five +tensor widths per signed rank, checks 126 small signed patterns, and +reprices the complete histogram with directed rational bounds. The +width-uniform conclusion uses the written phase identity. The full +predecessor physical and compiler replays are separate. + +To regenerate and authenticate the port projection directly against +the exact public native word, run this from the checkout or export root: + +```sh +( +set -e +word=$(mktemp) +trap 'rm -f "$word"' EXIT +curl -fsSL https://raw.githubusercontent.com/CrocSwap/integer-mult-bounds/ed090b57ed88f8859e5ff4643645099e6ba856ea/research/p104-terminal-cut-rechart/WORD.json.gz -o "$word" +python3.12 -I -B research/p104-idle-child-volume-bound/verify.py --word "$word" +) +``` + +The same receipt is expected. Both forms check immutable inputs, and +the optional command additionally reproduces the projection from the +whole original word. [Source manifest](PROVENANCE.json) + +## Open next questions + +Can a field-mixing erased-child map reduce the displacement for these two +signed fields? First find or exclude one exact candidate under the same +affordable carrier and signed phase contract. A survivor needs arbitrary-input +forward and adjoint verification, restored ownership, precision, tape and a +fully charged invoice. Another canonical pair or a different rank or volume +tariff has a separate price test. + +## Credit + +#7113 supplies the literal caller and signed physical binding. #7277 and +#7274/#7244 supply the complete comparable invoice and retained native +construction. #7166 supplies the related rectangular-adapter argument, +#7163 the no-child rank method for BIT reflections, and #1920/#1924 the +related reciprocal and clean-invariant Clifford encoding contracts. +#7144 proves the related fixed-caller gauge obstruction and #7295 bounds +the complete fixed-contact rank-additive stock. This proof adds a volume +lower bound for one exact complex pair and compares it with the signed +incumbent price. [#7113](https://github.com/CrocSwap/integer-mult-bounds/pull/7113) +[#7277](https://github.com/CrocSwap/integer-mult-bounds/pull/7277) +[#7166](https://github.com/CrocSwap/integer-mult-bounds/pull/7166) +[#7163](https://github.com/CrocSwap/integer-mult-bounds/pull/7163) +[#1920](https://github.com/CrocSwap/integer-mult-bounds/pull/1920) +[#1924](https://github.com/CrocSwap/integer-mult-bounds/pull/1924) +[#7144](https://github.com/CrocSwap/integer-mult-bounds/pull/7144) +[#7295](https://github.com/CrocSwap/integer-mult-bounds/pull/7295) + +OpenAI Codex and subagents materially assisted the proof, implementation, +independent audit and packaging. Apache-2.0. [Notice](NOTICE) diff --git a/research/p104-idle-child-volume-bound/SOURCES.json b/research/p104-idle-child-volume-bound/SOURCES.json new file mode 100644 index 0000000000..5335fa97d9 --- /dev/null +++ b/research/p104-idle-child-volume-bound/SOURCES.json @@ -0,0 +1,18 @@ +{ + "schema_version": 1, + "base_commit": "e54523517d0f03e58352e647c403a5af3e525a57", + "files": [ + { + "path": "certificates/selected-result.json", + "usage": "provenance", + "git_blob": "75d77b328ea02ded535e7f23aee5b1e55d0bb1a8", + "sha256": "154c3d30455d778fd3343b6b4851f0fa4665f0f7625b0adb3675e2bafbbf6bf1" + }, + { + "path": "docs/research/agent-task-catalog.json", + "usage": "provenance", + "git_blob": "3404fbdd5e7529a0674eef26114b5071e4586cec", + "sha256": "ead6cdc9d0af6d58e8a49744d8ec8c7c15e13d2ba93c276c434bcf9b51b93a81" + } + ] +} diff --git a/research/p104-idle-child-volume-bound/TASK.json b/research/p104-idle-child-volume-bound/TASK.json new file mode 100644 index 0000000000..0dbe5e405f --- /dev/null +++ b/research/p104-idle-child-volume-bound/TASK.json @@ -0,0 +1,84 @@ +{ + "schema_version": 1, + "task_id": "joint-query-controller", + "priority_revision": 8, + "base_commit": "e54523517d0f03e58352e647c403a5af3e525a57", + "original_card": { + "id": "joint-query-controller", + "question": "Can a changed query demand or caller remove real work while satisfying native chronology and restoration?", + "starting_points": [ + "docs/research/current-priorities.md", + "docs/research/research-family-status.md", + "certificates/selected-result.json", + "docs/research/pr-intake-evidence/pr5599-completion/PROOF-REVIEW.md" + ], + "methods": [ + "Construct and independently check one source-bound instance of the stated first experiment.", + "Seek an exact counterexample or target-specific complete-budget obstruction to that same proposed change." + ], + "acceptance_gate": "A source-bound arbitrary-input identity and legal producer/consumer boundary with the complete paid and productive target invoice, including restoration, ownership, native alignment and extra charges. Price under the actual current model; historical ceiling.py assumptions must be established before use. A favorable optimistic relaxation keeps a route open but is not a completed supplier. A scoped local result remains useful; expansion requires the family-level budget gate.", + "first_step": { + "command": [ + "python3", + "-B", + "scripts/research_selected_baseline.py" + ], + "expected": "PASS_RESEARCH_BASELINE_BINDINGS_ONLY", + "inspect": "Read revision 8, the selected review and live exact-source handoffs. Then follow this card's bounded first_experiment.", + "scope": "Source-bound orientation only, not a supplier replay or theorem proof." + }, + "first_experiment": "Choose an exact caller and a new demand/interface hypothesis. Read the scoped #5617/#5631/#5649/#5747 and #5720/#5745 objections before rebuilding an excluded schedule. Compare the complete matched source/consumer protocols including all retained helper outputs. For an active-mode injection, first check #5745: its canonical delivery claim repays the eight removed centre jobs. Audit that exact claim or change its channel/feedback hypothesis; do not repeat the same free-injection search. Stop if the full favorable budget fails or the required restored output is unobservable.", + "bottleneck_link": "Judge the actual current supplier contract and complete signed target/paid bill; frozen-profile ceilings require an applicability proof.", + "allowed_variations": [ + "One exact source head, helper/cut region or quantified proposition and changed hypothesis; check live handoffs first. Different seeds are not different scopes." + ], + "scope_change_triggers": [ + "Changing source head, helper/cut domain, operation alphabet or caller boundary without recording the new scope.", + "Treating an archived proposal or local numerical pass as complete supplier admission." + ], + "overlap_terms": [ + "query demand", + "active mode", + "5720", + "5745", + "5747", + "caller" + ], + "existing_checks": [ + { + "scope": "PR #4166: author-checked installed producer/service/return/bridge connection; native-component comparison loses.", + "evidence": "research/qq16-caller-install/README.md", + "remaining": "Complete matched physical protocol bill, or changed source-compatible demand/circuit; no affordable supplier yet.", + "status": "author-checked", + "source_commit": "0b082d22a0e9a442d264ab0633e35ef26c790630", + "selected_record_sha256": "bb2eaa58647b353f88d0aec2eafb9d30df1be53589231b23e12ceef3e4bad129" + }, + { + "scope": "Selected PR5599: complete helper-subspace construction and independent caller replay; five framework assumptions remain.", + "evidence": "docs/research/pr-intake-evidence/pr5599-completion/PROOF-REVIEW.md", + "remaining": "The next experiment must identify uncovered source-specific work. Successor archive intake does not transfer this admission.", + "status": "reviewed", + "source_commit": "09dd0965711ca7eeb169057a420abab1c9052137", + "selected_record_sha256": "2a0220e866417774606e0f991e41b9c1d26b1f43b97857238cf478dbc7d330b5" + } + ] + }, + "scope_status": "changed", + "actual_scope": "Literal Type-B signed IDLE events 1339 and 2324 on the #7113 caller. One canonical rank-73 child on all eight ports with block-diagonal translation or parity-scalar erased-child baselines and a volume-linear tariff.", + "scope_change_reason": "Test the exact operator and volume needed by one concrete distinct-field idle pair, keeping the rest of the #7277 caller and native invoice fixed.", + "bottleneck_link": "The optimistic equal-volume price clears the incumbent crossing by only about 0.784836 raw units; actual parity-scalar displacement needs larger volume.", + "budget_minutes": 4, + "stop_rule": "One literal pair across eight ports. Verify the phase identities and full directed price. Stop when the minimum volume exceeds the incumbent affordability upper.", + "outcome": "negative-result", + "evidence": "PROOF.md, exact input source manifest, AUDIT.json, source-bound eight-port projection and clean replay of the complete directed budget and spectral controls.", + "author": "Round 32 research campaign", + "ai_assistance": "OpenAI Codex and subagents materially assisted proof, implementation, independent audit and packaging.", + "open_questions": [ + { + "question": "Can a field-mixing erased-child map lower the two-field displacement?", + "why_it_matters": "The two blocked erased-child classes keep fields separate.", + "first_step": "For these exact two signed phases, exhibit or exclude one erased-child matrix with a rank defect within the affordable canonical carrier bound.", + "blocked_by": "A favorable defect would still need exact forward and adjoint action, returned ownership, restoration, precision, tape and charged routing." + } + ] +} diff --git a/research/p104-idle-child-volume-bound/VERIFY.json b/research/p104-idle-child-volume-bound/VERIFY.json new file mode 100644 index 0000000000..f08dcf781a --- /dev/null +++ b/research/p104-idle-child-volume-bound/VERIFY.json @@ -0,0 +1,19 @@ +{ + "schema_version": 1, + "status": "ready", + "python": "3.12", + "requirements": [], + "inputs": [], + "commands": [ + { + "argv": [ + "{python}", + "-I", + "-B", + "{package}/verify.py" + ], + "timeout_seconds": 60, + "checks": "Verify the eight literal Type-B port layouts, signed residue identities, scope controls and complete directed one-child price." + } + ] +} diff --git a/research/p104-idle-child-volume-bound/contact.py b/research/p104-idle-child-volume-bound/contact.py new file mode 100644 index 0000000000..155a170cce --- /dev/null +++ b/research/p104-idle-child-volume-bound/contact.py @@ -0,0 +1,46 @@ +"""Trace unchanged caller contacts through logical SWAPs.""" +from bisect import bisect_left, bisect_right +from collections import defaultdict + + +def backward(caller): + events = caller["events"] + # Name each lineage by its final slot, then translate names to initial slots. + lineage = list(range(caller["roles"])) + contacts = defaultdict(list) + idle = [] + for clock in range(len(events)-1,-1,-1): + e = events[clock] + if e[0] == "J": + roles = (*e[2],*e[3][:2]) + else: + ty,op,a,*args = e + match op: + case "SWAP": + b = args[0] + lineage[a],lineage[b] = lineage[b],lineage[a] + continue + case "IDLE_ONE" | "IDLE_ODD": + idle.append((clock,ty,op,a,lineage[a],args[0])) + continue + case "ADD" | "QUERY": + roles = (a,args[0]) + case "LAMBDA" | "SCALE": + roles = (a,) + case _: + raise ValueError(f"unknown caller contact {op}") + for slot in roles: + contacts[lineage[slot]].append(clock) + + initial_name = {token:slot for slot,token in enumerate(lineage)} + result = [] + for clock,ty,op,slot,token,stages in reversed(idle): + hits = [-1,*reversed(contacts[token]),len(events)] + p,q = bisect_left(hits,clock),bisect_right(hits,clock) + assert p==q + result.append({"clock":clock,"kind":ty,"slot":slot, + "role":initial_name[token],"op":op, + "rank":8*len(stages)+int(op=="IDLE_ODD"), + "ports":len(caller["types"][ty]["ports"]), + "selected_stages":stages,"window":[hits[p-1]+1,hits[q]]}) + return result diff --git a/research/p104-idle-child-volume-bound/inputs/CALLER.json.gz b/research/p104-idle-child-volume-bound/inputs/CALLER.json.gz new file mode 100644 index 0000000000000000000000000000000000000000..290ef7c9c52553e421350ea76ac73eb98d1f187b GIT binary patch literal 11215 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 literal 0 HcmV?d00001 diff --git a/research/p104-idle-child-volume-bound/inputs/TYPE-B-PORTS.json b/research/p104-idle-child-volume-bound/inputs/TYPE-B-PORTS.json new file mode 100644 index 0000000000..9e4824f3c4 --- /dev/null +++ b/research/p104-idle-child-volume-bound/inputs/TYPE-B-PORTS.json @@ -0,0 +1,10 @@ +{ + "15": 81, + "17": 273, + "27": 262, + "34": 98, + "35": 290, + "42": 268, + "47": 164, + "55": 280 +} diff --git a/research/p104-idle-child-volume-bound/inputs/check_odd_physical_binding.py.gz b/research/p104-idle-child-volume-bound/inputs/check_odd_physical_binding.py.gz new file mode 100644 index 0000000000000000000000000000000000000000..0f473fb46d7325587b4a782aa9a8cc1640200d78 GIT binary patch literal 2087 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 literal 0 HcmV?d00001 diff --git a/research/p104-idle-child-volume-bound/pricing.py b/research/p104-idle-child-volume-bound/pricing.py new file mode 100644 index 0000000000..ae43b50a6a --- /dev/null +++ b/research/p104-idle-child-volume-bound/pricing.py @@ -0,0 +1,46 @@ +"""Directed arithmetic for the complete signed price.""" +from fractions import Fraction as F +from functools import cache + +TARGET = F(10018846261809, 2500000000000000) +GRID = 10**48 + + +def round_interval(a, b): + a, b = a*GRID, b*GRID + return F(a.numerator//a.denominator, GRID), F(-((-b.numerator)//b.denominator), GRID) + + +@cache +def log_unit(x): + y = (x-1)/(x+1) + p = sum((2*y**j/j for j in range(1, 111, 2)), F(0)) + return round_interval(p, p+2*y**111/(111*(1-y*y))) + + +@cache +def power(rank, k): + e = rank.bit_length()-1 + lo,hi = [q+e*d for q,d in zip(log_unit(F(rank, 2**e)),log_unit(F(2)),strict=True)] + + def exp_negative(x, n): + term = total = F(1) + assert 0 <= x < 1 + for i in range(1,n+1): + term *= -x/i + total += term + return total + + return round_interval(rank*exp_negative(k*hi, 39), rank*exp_negative(k*lo, 40)) + + +def moment(P, T, k): + lower = upper = F(0) + for r in P.keys()|T.keys(): + n = T[r]-P[r] + lo,hi = power(r,k) + if n < 0: + lo,hi = hi,lo + lower += n*lo + upper += n*hi + return lower,upper diff --git a/research/p104-idle-child-volume-bound/verify.py b/research/p104-idle-child-volume-bound/verify.py new file mode 100644 index 0000000000..a16945ebdb --- /dev/null +++ b/research/p104-idle-child-volume-bound/verify.py @@ -0,0 +1,206 @@ +"""Exact displacement and optimistic volume price for one fixed caller pair.""" +from argparse import ArgumentParser +from collections import Counter +from fractions import Fraction as Q +from hashlib import sha1, sha256 +from itertools import product +from pathlib import Path +import gzip +import json +import runpy + +PACKAGE = Path(__file__).resolve().parent +CALLER = "inputs/CALLER.json.gz" +INVOICE = "inputs/INVOICE-7277.json.gz" +PHYSICAL = "inputs/check_odd_physical_binding.py.gz" +APPLICATION = "inputs/upstream_application.py.gz" + + +def authenticate(raw, pin, name): + blob = f"blob {len(raw)}\0".encode() + raw + if sha256(raw).hexdigest() != pin["sha256"] or sha1(blob).hexdigest() != pin["git_blob"]: + raise ValueError(f"Changed source: {name}") + + +def load(word_path): + manifest = json.loads((PACKAGE / "PROVENANCE.json").read_bytes()) + pins = manifest["bundled"] + assert set(pins) == {CALLER, INVOICE, PHYSICAL, APPLICATION} + raw = {} + for name, pin in pins.items(): + source = gzip.decompress((PACKAGE / name).read_bytes()) + authenticate(source, pin, name) + raw[name] = source + projection = manifest["port_projection"] + assert projection["path"] == "inputs/TYPE-B-PORTS.json" + port_bytes = (PACKAGE / projection["path"]).read_bytes() + assert sha256(port_bytes).hexdigest() == projection["sha256"] + ports = json.loads(port_bytes) + if word_path is not None: + native = word_path.read_bytes() + authenticate(native, manifest["word_reference"], "complete #7277 word") + original = json.loads(gzip.decompress(native))["ports"] + assert {p: original[int(p)] for p in ports} == ports + source_hashes = {name: pin["sha256"] for name, pin in pins.items()} + source_hashes[projection["path"]] = projection["sha256"] + return raw, ports, source_hashes + + +UPPER = Q('0.00364566992869893192829683504045604') +TRIAL = Q('0.0036475') +HEAD = 'ed090b57ed88f8859e5ff4643645099e6ba856ea' + + +def counts(signs): + c = [1, 0, 0, 0] + for a in signs: + assert a in (-1, 1) + c = [c[k] + c[(k - a) % 4] for k in range(4)] + return c + + +def imbalance(r): + assert r > 0 + return Q(1, 1 << ((r + 2) // 2 if r % 2 == 0 else (r + 3) // 2)) + + +def audit_counts(signs, got): + r = len(signs) + neg = signs.count(-1) + # Independent product of Gaussian factors and roots-of-unity filter. + re, im = 1, 0 + for j in range(r): + a = -1 if j < neg else 1 + re, im = re-a*im, im+a*re + assert got == [(2**r + 2*v)//4 for v in (re, im, -re, -im)] + assert got[0]+got[2] == got[1]+got[3] == 1 << (r-1) + assert max(abs(Q(v, 2**r) - Q(1, 4)) for v in got) == imbalance(r) + if r % 2: + assert all(got[j] != got[j+2] for j in (0, 1)) + else: + assert sum(got[j] == got[j+2] for j in (0, 1)) == 1 + + +def orthonormal(axes): + return all((a & b).bit_count() % 2 == (i == j) + for i, a in enumerate(axes) for j, b in enumerate(axes)) + + +def controls(): + # Full truth tables for every plus/minus pattern up to rank 6 and a + # spectator translation. The added spectator toggles phase by 2. + cases = 0 + for r in range(1, 7): + for signs in product((-1, 1), repeat=r): + brute = Counter(sum(a*b for a,b in zip(signs,bits,strict=True)) % 4 + for bits in product((0, 1), repeat=r)) + got = counts(signs) + assert got == [brute[k] for k in range(4)] + audit_counts(signs, got) + assert [got[k]+got[(k+2)%4] for k in range(4)] == [2**(r-1)]*4 + cases += 1 + # Ranks alone do not certify signs. A positive central axis permutes + # the two odd multiplicities for the actual rank-9 child. + assert counts((1,)*9) != counts((-1,)+(1,)*8) + assert not orthonormal([1, 2, 2]) + return {'exhaustive_small_signed_patterns':cases, 'wrong_sign_detected':True, + 'duplicate_axis_rejected':True, 'spectator_translation_checked':True} + + +def run(word_path=None): + raw, central_ports, source_hashes = load(word_path) + caller = json.loads(raw[CALLER]) + receipt = json.loads(raw[INVOICE]) + patch = raw[PHYSICAL].decode() + binding = raw[APPLICATION].decode() + assert receipt["caller_sha256"] == source_hashes[CALLER] + assert receipt["checks"]["ODD-PHYSICAL-BINDING.json"]["source_reviewer_sha256"] == source_hashes[APPLICATION] + assert all(s in patch for s in ("len(selected)==1 and a[1:]==[-1]", "signed=sub(pos,terms([(q,2)]))", + "translation(sub(pos,signed))==q")) + assert all(s in binding for s in ("parity(sum x_i)", "v == 2", "rank = 8*len(selected)")) + assert caller['ambient_rank']==145 and receipt['checks']['ODD-FIXED-TAPE-COUNTS.json']['compiler_ambient_cap']==153 + assert caller['events'][1339]==['B','IDLE_ODD',68,[8],-1] + assert caller['events'][2324]==['B','IDLE_ONE',36,[16,15,14,13,12,11,10,9]] + contact = runpy.run_path(str(PACKAGE / 'contact.py')) + timed = {r['clock']:r for r in contact['backward'](caller)} + assert len(timed) == 94 + assert (timed[1339]['role'],timed[2324]['role'])==(68,36) + assert (timed[1339]['window'],timed[2324]['window'])==([0,4783],[2324,2325]) + assert caller['types']['B']['ports']==[15,17,27,34,35,42,47,55] + assert set(central_ports) == set(map(str,caller['types']['B']['ports'])) + axes = {stage:[1 << (9+8*(stage-1)+j) for j in range(8)] for stage in range(8,17)} + layouts = [] + for port in caller['types']['B']['ports']: + first = [central_ports[str(port)],*axes[8]] + second = sum((axes[stage] for stage in range(16,8,-1)),[]) + assert (len(first),len(second))==(9,64) + assert orthonormal(first+second) and max(first+second).bit_length()<=145 + layouts.append({'port':port,'central':first[0], 'rank':[9,64,73]}) + signs = {9:(-1,)+(1,)*8,64:(1,)*64,73:(-1,)+(1,)*72} + residue = {r:counts(s) for r,s in signs.items()} + for r,s in signs.items(): + for f in (1,2,3,4,8): + audit_counts(s*f, counts(s*f)) + assert imbalance(r*f)<=imbalance(r) + assert residue[9]==[136,120,120,136] + assert residue[64]==[2**62+2**31,2**62,2**62-2**31,2**62] + assert residue[73]==[2**71+2**35,2**71-2**35,2**71-2**35,2**71+2**35] + identity_defect = sum(1-Q(residue[r][0],2**r) for r in (9,64)) + translation_defect = Q(3,2)-imbalance(9)-imbalance(64) + parity_bypass_defect = 1-2*imbalance(9)-imbalance(64) + child_capacity = Q(3,4)+imbalance(73) + v_min = translation_defect/child_capacity + v_min_parity = parity_bypass_defect/child_capacity + assert identity_defect==translation_defect>1 + assert 1 < v_min_parity < v_min + # Under clean reversible embeddings a twofold wider canonical + # carrier still lacks enough -i eigenvectors for identity bypass. + target_minus_i = Q(residue[9][3],2**9)+Q(residue[64][3],2**64) + max_twofold_root = 2*(Q(1,4)+imbalance(73)) + assert target_minus_i > max_twofold_root + invoice = receipt['price']['after'] + P,T = (Counter({int(r):n for r,n in invoice[k].items()}) for k in ('P','T')) + assert sum(P.values())==110536 and sum(T.values())==22461 + assert sum(r*(T[r]-P[r]) for r in P.keys()|T.keys())==invoice['S']==1424 + assert P[9]>=8 and P[64]>=8 + assert Q(receipt['price']['price']['independent_raw_bracket'][1])==UPPER + maths = runpy.run_path(str(PACKAGE/'pricing.py')) + quotes = {} + for label,k in (('old_crossing_upper',UPPER), ('trial',TRIAL), ('moonshot',maths['TARGET'])): + cost = {r:maths['power'](r,k) for r in (9,64,73)} + mlo,mhi = maths['moment'](P,T,k) + optimistic = (cost[9][1]+cost[64][1]+mhi/8)/cost[73][0] + one = (mlo+8*(cost[9][0]+cost[64][0]-cost[73][1]), + mhi+8*(cost[9][1]+cost[64][1]-cost[73][0])) + assert optimistic < v_min_parity + assert mhi+8*(cost[9][1]+cost[64][1]-v_min_parity*cost[73][0]) < 0 + assert one[1] < 1 + if label=='old_crossing_upper': + assert mhi<0