From 27aa9f130c05aa11a45d291efca2ee42f0eb650a Mon Sep 17 00:00:00 2001 From: Ali Romman <226877337+aliromman@users.noreply.github.com> Date: Mon, 26 Oct 2026 11:59:51 -0500 Subject: [PATCH 1/4] test: retain frozen research routes across priority revisions (cherry picked from commit ba8a9e640e1983f3c29993fefa3f46e8ed03313a) --- tests/fixtures/README.md | 41 ++++++ tests/fixtures/research-routing-v7.json | 87 ++++++++++++ tests/test_research_current_assignment.py | 164 +++++++++++++++------- 3 files changed, 242 insertions(+), 50 deletions(-) create mode 100644 tests/fixtures/README.md create mode 100644 tests/fixtures/research-routing-v7.json diff --git a/tests/fixtures/README.md b/tests/fixtures/README.md new file mode 100644 index 0000000000..472a6a502f --- /dev/null +++ b/tests/fixtures/README.md @@ -0,0 +1,41 @@ +# Frozen research routing fixture + +`research-routing-v7.json` retains two exact task cards from priority revision 7: +`portable-replay` and `centre-path-sharing`. They exercise the generic-baseline +and historical-ceiling routes in `choose_current_research_task.py`. The fixture +records the source commit, path and SHA256. The card objects are unchanged. + +The source is commit `553d26d796fde9871ff2661a49ac7732e945410f`, file +`docs/research/agent-task-catalog.json`. The test places these cards in a small +catalogue with one track of weight 100. This carrier is test data, not a change +to research priorities. Current cards are checked separately from the live +catalogue. Every live card must preserve its other fields; each distinct direct +command also passes through both real CLIs. + +The CLI fixture copies the two real scripts. It creates inert reference files +for path validation and copies the current selected record for receipt fields. +It does not execute those references or verify a mathematical claim. Missing +references, sparse omissions, deleted files and staged replacements have separate +negative tests. No Git history, network request or change to the live catalogue +is needed to run the fixture. + +```sh +python3 -B -m unittest discover -s tests -p test_research_current_assignment.py -v +python3 -B -m unittest discover -s tests -p test_research_assignment.py -v +``` + +This fixture repairs the CI handoff in +[Discussion 5722](https://github.com/CrocSwap/integer-mult-bounds/discussions/5722). +The [investigation](https://github.com/CrocSwap/integer-mult-bounds/discussions/5758) +records the failure, checks and publication status. The original scripts, task +catalogue and selected frontier are unchanged. + +On base `de5ec2e7a6074068452f45b1a191b5c72832df4a`, the old suite has eight +failures and two errors. After the repair, all 12 current-assignment tests pass +under Python 3.14.7 and Python 3.12.14, including an isolated optimized run. +All 16 related assignment tests pass under Python 3.12.14. This is test coverage, +not a mathematical replay. See the investigation for hosted-plan status. + +Retain the original catalogue, routing and test authors, including Douglas +Colkitt, Ali Romman and Mihir Srivastava. New fixture and test repair: Ali Romman +with substantial OpenAI Codex assistance. No subagents. Apache-2.0. diff --git a/tests/fixtures/research-routing-v7.json b/tests/fixtures/research-routing-v7.json new file mode 100644 index 0000000000..f5d52ac21d --- /dev/null +++ b/tests/fixtures/research-routing-v7.json @@ -0,0 +1,87 @@ +{ + "source_commit": "553d26d796fde9871ff2661a49ac7732e945410f", + "source_path": "docs/research/agent-task-catalog.json", + "source_sha256": "f7a48bfa2659b88378282a8eee7d9fe52cdf505594124c4d1686b58510fffd72", + "scope": "Two exact revision-7 cards. The test carrier is not a research allocation.", + "cards": [ + { + "id": "centre-path-sharing", + "question": "Can the 64-per-call centre path (eight rank-8 COPY/ERASE totals through the private temporary) be shared across calls or shrunk?", + "starting_points": [ + "docs/research/research-family-status.md", + "research/complex-local-word-ceiling/README.md", + "research/split-centres-global/proofs/PR386-BIT-GEOMETRY.txt", + "certificates/selected-result.json" + ], + "methods": [ + "Derive a fully charged favorable relaxation for sharing one centre path across k calls, including restoration, hosting and precision.", + "Prove a lower bound on copied information per call for the selected decoder contract." + ], + "acceptance_gate": "Show the changed centre charge and copy profile per call with every added restoration or hosting cost charged, and its ceiling via ceiling.ceiling(centre=...). A scoped local result may be retained without a complete supplier. Expanding it into further construction rounds requires the family-level budget and obligation gate in research-family-status.md; an optimistic passing relaxation alone is not acceptance.", + "first_step": { + "command": [ + "python3", + "-B", + "research/complex-local-word-ceiling/verify.py" + ], + "expected": "PASS_COMPLEX_LOCAL_WORD_CEILING", + "inspect": "Read the selected word's per-call local profile, its packing ceiling and the lever table; run levers.py for the ideal budget of the lever you target.", + "scope": "Positive control and planning budget only; this is not a new construction or full cold replay." + }, + "first_experiment": "Write the per-call centre charge and copy children for sharing across k = 2 calls, charge the sharing overhead, and screen it; stop this route if even the ideal sharing gains under 10%. Ideal budgets: free 2.80x, shared by two 1.90x (levers.py).", + "bottleneck_link": "The centre path consumes 64 of about 99.6 unpaid coordinates per call, i.e. about 64% of the raw deficit.", + "allowed_variations": [ + "One sharing pattern across a fixed number of calls.", + "One reduced copied-total contract for the existing decoder.", + "If the coverage law, template or guard changes, derive an applicable fully charged replacement bound instead of applying the incumbent ceiling outside its scope." + ], + "scope_change_triggers": [ + "Removing copies without a replacement contract for the decoder's copied totals.", + "Continuing a partial cost improvement while leaving the same unpriced consumer, restoration or central-readout obligation unresolved; refresh the family expansion decision first. Local product-retiming evidence has a narrow scope and is not a ban on changed graphs or contracts." + ], + "overlap_terms": [ + "centre path", + "copied totals", + "private temporary", + "shared centre", + "batching" + ] + }, + { + "id": "portable-replay", + "question": "Can one reproducible environment or artifact-comparison failure be repaired?", + "starting_points": [ + "research/gzip-container-reproducibility/README.md", + "docs/ci-verification.md" + ], + "methods": [ + "Reproduce one portability failure and add a minimal cross-environment fix.", + "Audit one canonical-payload comparison for omitted proof-relevant fields." + ], + "acceptance_gate": "Preserve immutable source hashes and proof-relevant content; a different compressed byte stream alone is not a mathematical mismatch.", + "first_step": { + "command": [ + "python3", + "-B", + "scripts/research_baseline.py" + ], + "expected": "PASS_RESEARCH_BASELINE_BINDINGS_ONLY", + "inspect": "Read the gzip-container reproducibility examples and distinguish frozen source bytes from regenerated payloads.", + "scope": "Positive control / source-bound orientation only; this is not a new construction or full cold replay." + }, + "first_experiment": "Reproduce one specific mismatch or audit one canonical comparison for omitted proof-relevant fields.", + "bottleneck_link": "Portable exact checks prevent environment failures from blocking valid contributions.", + "allowed_variations": [ + "One interpreter/version mismatch or one payload field comparison." + ], + "scope_change_triggers": [ + "Removing immutable-source pins because generated compressed bytes differ." + ], + "overlap_terms": [ + "gzip container", + "reproducibility", + "canonical payload" + ] + } + ] +} diff --git a/tests/test_research_current_assignment.py b/tests/test_research_current_assignment.py index 860f6b9b9e..c524c0037f 100644 --- a/tests/test_research_current_assignment.py +++ b/tests/test_research_current_assignment.py @@ -1,9 +1,15 @@ -"""Current orientation must preserve frozen task-selection evidence.""" +"""Current orientation must preserve frozen task-selection evidence. + +Frozen fixtures and live-catalog coverage: Ali Romman with OpenAI Codex +assistance. Retain the original routing and test authors. Apache-2.0. +""" import copy +from contextlib import contextmanager import importlib.util import json from pathlib import Path import subprocess +import shutil import sys import tempfile import unittest @@ -15,16 +21,49 @@ LEGACY = current.LEGACY legacy = current.runpy.run_path(str(LEGACY)) CATALOG = json.loads((ROOT / legacy["CATALOG"]).read_text(encoding="utf-8")) +FROZEN = json.loads((ROOT / "tests/fixtures/research-routing-v7.json").read_text()) +FROZEN_CATALOG = { + "schema_version": 1, "priority_revision": 7, + "priority_log": "docs/research/routing-fixture.md", + "tracks": [{"id": "routing-fixtures", "weight": 100, "tasks": FROZEN["cards"]}], +} + + +@contextmanager +def frozen_cli_tree(): + """Run the real scripts with exact old cards and inert reference files.""" + with tempfile.TemporaryDirectory() as directory: + root = Path(directory) + required = {FROZEN_CATALOG["priority_log"], + "scripts/research_selected_baseline.py", "scripts/research_package.py", + "research/historical-complex-ceiling-replay/VERIFY.json", + "research/historical-complex-ceiling-replay/verify.py"} + for card in FROZEN["cards"]: + required.update(card["starting_points"]) + required.add(card["first_step"]["command"][-1]) + for name in required: + path = root / name + path.parent.mkdir(parents=True, exist_ok=True) + path.write_text("Inert reference for CLI validation only.\n") + for name in ("choose_research_task.py", "choose_current_research_task.py"): + shutil.copyfile(ROOT / "scripts" / name, root / "scripts" / name) + path = root / legacy["CATALOG"] + path.parent.mkdir(parents=True, exist_ok=True) + path.write_text(json.dumps(FROZEN_CATALOG)) + path = root / "certificates/selected-result.json" + path.parent.mkdir(parents=True, exist_ok=True) + shutil.copyfile(ROOT / "certificates/selected-result.json", path) + yield root class CurrentResearchAssignmentTests(unittest.TestCase): - def test_every_frozen_card_and_other_fields_stay_exact(self): - before = copy.deepcopy(CATALOG) + def check_card_round_trips(self, catalog): + before = copy.deepcopy(catalog) resolved = 0 historical = 0 - for track in CATALOG["tracks"]: + for track in catalog["tracks"]: for task in track["tasks"]: - result = legacy["select"](CATALOG, "a1" * 16, task_id=task["id"]) + result = legacy["select"](catalog, "a1" * 16, task_id=task["id"]) original = copy.deepcopy(result) current.resolve_current_first_steps(result, ROOT) card = result["suggestions"][0] @@ -55,19 +94,25 @@ def test_every_frozen_card_and_other_fields_stay_exact(self): self.assertTrue(card.pop("first_step_resolution")) card["first_step"] = card.pop("catalog_first_step") self.assertEqual(result, original) - self.assertEqual(resolved, 16) - self.assertEqual(historical, 4) - self.assertEqual(CATALOG, before) + self.assertEqual(catalog, before) + return resolved, historical + + def test_frozen_routes_and_other_fields_stay_exact(self): + self.assertEqual(self.check_card_round_trips(FROZEN_CATALOG), (1, 1)) + + def test_every_live_card_and_other_fields_stay_exact(self): + self.assertTrue(CATALOG["tracks"]) + self.check_card_round_trips(CATALOG) def test_only_exact_generic_command_is_resolved(self): - result = copy.deepcopy(legacy["select"](CATALOG, "0" * 32, task_id="portable-replay")) + result = copy.deepcopy(legacy["select"](FROZEN_CATALOG, "0" * 32, task_id="portable-replay")) result["suggestions"][0]["first_step"]["command"].append("--historical-fixture") original = copy.deepcopy(result) self.assertEqual(current.resolve_current_first_steps(result, ROOT), []) self.assertEqual(result, original) def test_missing_current_helper_does_not_change_receipt(self): - result = legacy["select"](CATALOG, "0" * 32, task_id="portable-replay") + result = legacy["select"](FROZEN_CATALOG, "0" * 32, task_id="portable-replay") original = copy.deepcopy(result) with tempfile.TemporaryDirectory() as directory: with self.assertRaisesRegex(ValueError, "missing current first-step script"): @@ -82,7 +127,7 @@ def test_nonexact_scientific_commands_are_not_reinterpreted(self): ): with self.subTest(command=command): result = copy.deepcopy(legacy["select"]( - CATALOG, "0" * 32, task_id="centre-path-sharing")) + FROZEN_CATALOG, "0" * 32, task_id="centre-path-sharing")) result["suggestions"][0]["first_step"]["command"] = command original = copy.deepcopy(result) self.assertEqual(current.resolve_current_first_steps(result, ROOT), []) @@ -102,34 +147,52 @@ def test_missing_historical_reference_leaves_all_cards_unchanged(self): path = root / name path.parent.mkdir(parents=True, exist_ok=True) path.write_text("fixture\n") - result = legacy["select"](CATALOG, "0" * 32, task_id="portable-replay") + result = legacy["select"](FROZEN_CATALOG, "0" * 32, task_id="portable-replay") result["suggestions"] += legacy["select"]( - CATALOG, "0" * 32, task_id="centre-path-sharing")["suggestions"] + FROZEN_CATALOG, "0" * 32, task_id="centre-path-sharing")["suggestions"] original = copy.deepcopy(result) with self.assertRaises(ValueError) as raised: current.resolve_current_first_steps(result, root) self.assertIn(absent, str(raised.exception)) self.assertEqual(result, original) - def cli(self, script, args): - return subprocess.run([sys.executable, "-B", str(script), *args], cwd=ROOT, + def cli(self, script, args, root=ROOT): + return subprocess.run([sys.executable, "-B", str(root / "scripts" / Path(script).name), *args], cwd=root, capture_output=True, text=True, encoding="utf-8") def test_cli_preserves_legacy_output_and_emits_both_commands(self): - args = ["--seed", "0" * 32, "--task", "portable-replay"] - original = self.cli(LEGACY, args) - output = self.cli(ROOT / "scripts/choose_current_research_task.py", args) - self.assertEqual(original.returncode, 0) - self.assertEqual(output.returncode, 0) - old, new = json.loads(original.stdout), json.loads(output.stdout) - card = new["suggestions"][0] - self.assertEqual(card["first_step"]["command"], - ["python3", "-B", "scripts/research_selected_baseline.py"]) - self.assertEqual(card.pop("catalog_first_step"), old["suggestions"][0]["first_step"]) - self.assertTrue(card.pop("first_step_resolution")) - card["first_step"] = old["suggestions"][0]["first_step"] - self.assertEqual(new, old) - self.assertEqual(self.cli(LEGACY, args).stdout, original.stdout) + with frozen_cli_tree() as root: + args = ["--seed", "0" * 32, "--task", "portable-replay"] + original = self.cli(LEGACY, args, root) + output = self.cli(ROOT / "scripts/choose_current_research_task.py", args, root) + self.assertEqual(original.returncode, 0) + self.assertEqual(output.returncode, 0) + old, new = json.loads(original.stdout), json.loads(output.stdout) + card = new["suggestions"][0] + self.assertEqual(card["first_step"]["command"], + ["python3", "-B", "scripts/research_selected_baseline.py"]) + self.assertEqual(card.pop("catalog_first_step"), old["suggestions"][0]["first_step"]) + self.assertTrue(card.pop("first_step_resolution")) + card["first_step"] = old["suggestions"][0]["first_step"] + self.assertEqual(new, old) + self.assertEqual(self.cli(LEGACY, args, root).stdout, original.stdout) + + def test_live_cli_preserves_each_unmapped_command(self): + checked = {tuple(card["first_step"]["command"]) for card in FROZEN["cards"]} + for track in CATALOG["tracks"]: + for task in track["tasks"]: + command = tuple(task["first_step"]["command"]) + if command in checked: + continue + checked.add(command) + with self.subTest(task=task["id"]): + args = ["--seed", "0" * 32, "--task", task["id"]] + original = self.cli(LEGACY, args) + output = self.cli(ROOT / "scripts/choose_current_research_task.py", args) + self.assertEqual(original.returncode, 0, original.stderr) + self.assertEqual(output.returncode, 0, output.stderr) + self.assertEqual(json.loads(output.stdout), json.loads(original.stdout)) + self.assertEqual(self.cli(LEGACY, args).stdout, original.stdout) def test_help_and_error_preserve_child_status_and_output(self): for args, code in ((["--help"], 0), (["--unknown-option"], 2), (["--seed", "bad"], 2)): @@ -139,23 +202,24 @@ def test_help_and_error_preserve_child_status_and_output(self): self.assertEqual((output.stdout, output.stderr), (original.stdout, original.stderr)) def test_cli_distinguishes_current_orientation_from_historical_control(self): - args = ["--seed", "0" * 32, "--task", "complex-new-helper-inventory"] - original = self.cli(LEGACY, args) - output = self.cli(ROOT / "scripts/choose_current_research_task.py", args) - self.assertEqual(original.returncode, 0, original.stderr) - self.assertEqual(output.returncode, 0, output.stderr) - old, new = json.loads(original.stdout), json.loads(output.stdout) - card = new["suggestions"][0] - self.assertEqual(card["first_step"]["command"][2], "scripts/research_selected_baseline.py") - self.assertEqual(card["first_step"]["expected"], "PASS_RESEARCH_BASELINE_BINDINGS_ONLY") - follow_up, = card.pop("follow_up_steps") - self.assertEqual(follow_up["command"][-1], "research/historical-complex-ceiling-replay") - self.assertIn("historical", follow_up["scope"].lower()) - self.assertIn("cost law", follow_up["inspect"]) - self.assertTrue(card.pop("first_step_resolution")) - card["first_step"] = card.pop("catalog_first_step") - self.assertEqual(new, old) - self.assertEqual(self.cli(LEGACY, args).stdout, original.stdout) + with frozen_cli_tree() as root: + args = ["--seed", "0" * 32, "--task", "centre-path-sharing"] + original = self.cli(LEGACY, args, root) + output = self.cli(ROOT / "scripts/choose_current_research_task.py", args, root) + self.assertEqual(original.returncode, 0, original.stderr) + self.assertEqual(output.returncode, 0, output.stderr) + old, new = json.loads(original.stdout), json.loads(output.stdout) + card = new["suggestions"][0] + self.assertEqual(card["first_step"]["command"][2], "scripts/research_selected_baseline.py") + self.assertEqual(card["first_step"]["expected"], "PASS_RESEARCH_BASELINE_BINDINGS_ONLY") + follow_up, = card.pop("follow_up_steps") + self.assertEqual(follow_up["command"][-1], "research/historical-complex-ceiling-replay") + self.assertIn("historical", follow_up["scope"].lower()) + self.assertIn("cost law", follow_up["inspect"]) + self.assertTrue(card.pop("first_step_resolution")) + card["first_step"] = card.pop("catalog_first_step") + self.assertEqual(new, old) + self.assertEqual(self.cli(LEGACY, args, root).stdout, original.stdout) def test_sparse_historical_references_require_unchanged_head_entries(self): with tempfile.TemporaryDirectory() as directory: @@ -178,12 +242,12 @@ def git(*args): git("update-index", "--skip-worktree", *omitted) for name in omitted: (root / name).unlink() - result = legacy["select"](CATALOG, "0" * 32, task_id="coverage-law-change") + result = legacy["select"](FROZEN_CATALOG, "0" * 32, task_id="centre-path-sharing") self.assertEqual(current.resolve_current_first_steps(result, root), sorted(omitted)) # Ordinary deletion must not acquire the deliberate-sparse exemption. changed = omitted[-1] git("update-index", "--no-skip-worktree", changed) - result = legacy["select"](CATALOG, "0" * 32, task_id="coverage-law-change") + result = legacy["select"](FROZEN_CATALOG, "0" * 32, task_id="centre-path-sharing") original = copy.deepcopy(result) with self.assertRaises(ValueError): current.resolve_current_first_steps(result, root) @@ -208,9 +272,9 @@ def git(*args): git("-c", "user.name=Fixture", "-c", "user.email=fixture@example.invalid", "-c", "core.hooksPath=/dev/null", "commit", "-qm", "helper") git("update-index", "--skip-worktree", name); path.unlink() - result = legacy["select"](CATALOG, "0" * 32, task_id="portable-replay") + result = legacy["select"](FROZEN_CATALOG, "0" * 32, task_id="portable-replay") self.assertEqual(current.resolve_current_first_steps(result, root), [name]) git("update-index", "--no-skip-worktree", name) - result = legacy["select"](CATALOG, "0" * 32, task_id="portable-replay") + result = legacy["select"](FROZEN_CATALOG, "0" * 32, task_id="portable-replay") with self.assertRaisesRegex(ValueError, "missing current first-step script"): current.resolve_current_first_steps(result, root) From 55394bd623bc9db68ac5d49999481185ba9b82dd Mon Sep 17 00:00:00 2001 From: Ali Romman <226877337+aliromman@users.noreply.github.com> Date: Mon, 26 Oct 2026 22:49:49 -0500 Subject: [PATCH 2/4] Accelerate complete P104 precision replay with exact integers --- .../p104-integer-error-replay/BENCHMARK.json | 124 ++++++++++++ .../CONTRACT-EDITS.json | 18 ++ research/p104-integer-error-replay/PROOF.md | 66 +++++++ research/p104-integer-error-replay/README.md | 63 ++++++ .../p104-integer-error-replay/RESULT.json | 22 +++ .../p104-integer-error-replay/SOURCES.json | 57 ++++++ research/p104-integer-error-replay/TASK.json | 67 +++++++ .../p104-integer-error-replay/VERIFY.json | 21 ++ .../p104-integer-error-replay/benchmark.py | 38 ++++ .../p104-integer-error-replay/contract.py | 136 +++++++++++++ .../inputs/source.tar | Bin 0 -> 327680 bytes research/p104-integer-error-replay/integer.py | 184 ++++++++++++++++++ research/p104-integer-error-replay/verify.py | 113 +++++++++++ 13 files changed, 909 insertions(+) create mode 100644 research/p104-integer-error-replay/BENCHMARK.json create mode 100644 research/p104-integer-error-replay/CONTRACT-EDITS.json create mode 100644 research/p104-integer-error-replay/PROOF.md create mode 100644 research/p104-integer-error-replay/README.md create mode 100644 research/p104-integer-error-replay/RESULT.json create mode 100644 research/p104-integer-error-replay/SOURCES.json create mode 100644 research/p104-integer-error-replay/TASK.json create mode 100644 research/p104-integer-error-replay/VERIFY.json create mode 100644 research/p104-integer-error-replay/benchmark.py create mode 100644 research/p104-integer-error-replay/contract.py create mode 100644 research/p104-integer-error-replay/inputs/source.tar create mode 100644 research/p104-integer-error-replay/integer.py create mode 100644 research/p104-integer-error-replay/verify.py diff --git a/research/p104-integer-error-replay/BENCHMARK.json b/research/p104-integer-error-replay/BENCHMARK.json new file mode 100644 index 0000000000..ae2a7c2245 --- /dev/null +++ b/research/p104-integer-error-replay/BENCHMARK.json @@ -0,0 +1,124 @@ +{ + "platform": "macOS-26.6.1-arm64-arm-64bit", + "python": "3.12.14 (main, Aug 25 2026, 13:50:33) [Clang 22.1.3 ]", + "code_sha256": { + "integer.py": "82a73e4bcf1835bfdd510c7ad5538625c1b380c559b671e6a67be490615a743a", + "contract.py": "ecf1f000e4aef11d5d5e1191a8e6fa44518ba8736e14505071f4ebc32d1409ce", + "verify.py": "aaa392ca9aa9aead0eee0ac6c64ff44ea66e1f251b0a79d18cd60baa946261a1", + "benchmark.py": "59c451bd1fcb1e8fcaebe5d6d7002bb85ccbd68c2f0f8d14e70de8fbcf949c69", + "inputs/source.tar": "f8252a90dc504ce8a77d781e558691fe8d21014b0f3f720d8dfd5274b5e8aadc" + }, + "order": [ + "baseline", + "candidate", + "candidate", + "baseline", + "baseline", + "candidate" + ], + "runs": [ + { + "mode": "baseline", + "wall_seconds": 31.14853112504352, + "internal_seconds": 31.07993, + "receipt": { + "coordinates": 799, + "events": 25984, + "guards": { + "owned": 22, + "prefix": 26, + "public": 23 + }, + "source_controls": 6, + "source_result_sha256": "cc7739703ed23532d187949c8507d09c13ac4c152e07a930f0087cde0d7a3d98" + } + }, + { + "mode": "candidate", + "wall_seconds": 9.81022679200396, + "internal_seconds": 9.748412, + "receipt": { + "coordinates": 799, + "events": 25984, + "guards": { + "owned": 22, + "prefix": 26, + "public": 23 + }, + "source_controls": 6, + "source_result_sha256": "cc7739703ed23532d187949c8507d09c13ac4c152e07a930f0087cde0d7a3d98" + } + }, + { + "mode": "candidate", + "wall_seconds": 3.2594693331047893, + "internal_seconds": 3.213043, + "receipt": { + "coordinates": 799, + "events": 25984, + "guards": { + "owned": 22, + "prefix": 26, + "public": 23 + }, + "source_controls": 6, + "source_result_sha256": "cc7739703ed23532d187949c8507d09c13ac4c152e07a930f0087cde0d7a3d98" + } + }, + { + "mode": "baseline", + "wall_seconds": 24.090562083059922, + "internal_seconds": 24.048647, + "receipt": { + "coordinates": 799, + "events": 25984, + "guards": { + "owned": 22, + "prefix": 26, + "public": 23 + }, + "source_controls": 6, + "source_result_sha256": "cc7739703ed23532d187949c8507d09c13ac4c152e07a930f0087cde0d7a3d98" + } + }, + { + "mode": "baseline", + "wall_seconds": 19.79097054200247, + "internal_seconds": 19.715903, + "receipt": { + "coordinates": 799, + "events": 25984, + "guards": { + "owned": 22, + "prefix": 26, + "public": 23 + }, + "source_controls": 6, + "source_result_sha256": "cc7739703ed23532d187949c8507d09c13ac4c152e07a930f0087cde0d7a3d98" + } + }, + { + "mode": "candidate", + "wall_seconds": 4.3006944169756025, + "internal_seconds": 4.239551, + "receipt": { + "coordinates": 799, + "events": 25984, + "guards": { + "owned": 22, + "prefix": 26, + "public": 23 + }, + "source_controls": 6, + "source_result_sha256": "cc7739703ed23532d187949c8507d09c13ac4c152e07a930f0087cde0d7a3d98" + } + } + ], + "baseline_median_seconds": 24.090562083059922, + "candidate_median_seconds": 4.3006944169756025, + "speedup": 5.601551690808398, + "wall_reduction_fraction": 0.8214780376585825, + "cold_processes": true, + "parallel_replays": false, + "scope": "Complete contract with source authentication, extraction, all original endpoint/error/guard/control checks. Local shared-host timings; no Linux or hosted speed claim. Qualification is a separate cost." +} diff --git a/research/p104-integer-error-replay/CONTRACT-EDITS.json b/research/p104-integer-error-replay/CONTRACT-EDITS.json new file mode 100644 index 0000000000..b24bbda3d9 --- /dev/null +++ b/research/p104-integer-error-replay/CONTRACT-EDITS.json @@ -0,0 +1,18 @@ +[ + [ + "def authenticate():", + "def authenticate(P=P):" + ], + [ + "def calculate():", + "def calculate(P=P, backend=None):" + ], + [ + " authenticate()", + " authenticate(P)" + ], + [ + " a = module('noisy_precision', P / 'precision.py')", + " a = backend if backend is not None else module('noisy_precision', P / 'precision.py')" + ] +] diff --git a/research/p104-integer-error-replay/PROOF.md b/research/p104-integer-error-replay/PROOF.md new file mode 100644 index 0000000000..62d256bb06 --- /dev/null +++ b/research/p104-integer-error-replay/PROOF.md @@ -0,0 +1,66 @@ +# Exact dyadic scale and complete replay equivalence + +The frozen source is PR5826 at58f93cf41751920f3d6766a39caccc2974ce18b0. +Its official source export is retained unchanged. The candidate changes the +arithmetic representation of sparse coefficients. It changes no native word, +error allowance, operation count, endpoint, guard inequality or scientific claim. + +For each row, keep an upper bound d on the exponent of two in the denominator +of any coefficient. Start d=0. A reset sets d=0. MOVE leaves it unchanged. +SCALE by n/2^k sets d to d+k. ADD or additive COPY from s into r sets +`d_r=max(d_r,d_s+k)`. Injection of a new unit defect requires only exponent0. +The same rule on the transposed word uses `d_s=max(d_s,d_r+k)`. These bounds +ignore cancellations and powers of two in n; thus they can be conservative. +Take E to be the largest bound on either traversal and S=2^E. + +Induction on each event proves that every exact forward and transposed +coefficient is an integer multiple of 1/S. Store its numerator at this common +scale as a Python arbitrary-size integer. Multiplication by n/2^k is exact: +first multiply by n, then divide by 2^k. The implementation checks divisibility +before every division. It does not truncate, use a modulus or accept a floating +comparison. A nondyadic coefficient is rejected. The same scale covers ideal +input coefficients; it is a representation bound, not a numerical precision +or magnitude promise for the physical caller. + +Choose separate power-of-two scales A and C for the nonnegative local weights +a_j and c_j. If a coefficient is z/S, its three exact score contributions are + +`abs(z)*a_j*A/(S*A)`, `abs(z)*c_j*C/(S*C)`, and `abs(z)/S`. + +The numerator updates use the signed sum z_old+q*z_source before taking its +absolute value. Thus a cancellation changes the score by +`abs(z_new)-abs(z_old)`, including negative changes. The candidate does not +replace signed transfer by an absolute-value propagation bound. All score units +are fixed, so comparisons, tie choices and Pareto order agree with the rational +reference. Fraction conversion occurs only at the result and hash boundaries. +Canonical reduced numerator/denominator encodings preserve all source hashes. + +The transposed pass uses a separate traversal with the same proved scale. It +checks every final signed coefficient and score. The original literal scalar +execution and reverse-cut oracles remain unchanged. The original contract's +complete ideal endpoint, native frame/ownership checks, guards, attaining +fixtures and six rejection controls remain active. + +`contract.py` is an explicit adapted copy of the source runner. Its four declared +edits add source-directory and backend parameters. Its obsolete direct CLI is +removed; this package supplies its own CLI. The checker reconstructs these +exact edits before loading the runner. This is ordinary dependency injection; +no module, global function, source file or import hook is patched at runtime. + +Qualification compares the complete baseline and candidate results, all actual +signed witness rows, and120 separate finite dyadic error words with cancellation, +scaling, reset, COPY and varied defect sites. It also compares each finite +transposed result and rejects nondyadic scalars, nondyadic weights and inexact +integer divisions. The frozen source and package code remain distinct. + +The default command runs the fast complete source contract and compares the +entire result to the frozen expected record. `--qualify` additionally runs the +slow reference and the extra cross-checks; its cost is not hidden in the speedup. +`--baseline` runs the unmodified source contract for a matched timing. Timings +include source authentication, archive extraction and full original controls. +No cache is shared between processes. Local measurements are not a promise +about another machine or hosted CI. + +The original precision theorem remains conditional. Native unitary gauges, +physical resets, exact owned return, compiler, precision-tape and analytic +admission retain their prior status. Faster verification is not a new kappa. diff --git a/research/p104-integer-error-replay/README.md b/research/p104-integer-error-replay/README.md new file mode 100644 index 0000000000..e3189891e5 --- /dev/null +++ b/research/p104-integer-error-replay/README.md @@ -0,0 +1,63 @@ +# Exact integer replay for the complete P104 precision contract + +The complete PR5826 precision replay now has an exact integer backend for its +ideal input, signed error and transposed passes. A proved common dyadic scale +replaces Fraction operations in the inner loops. Every division is checked; +no floating or modular result decides acceptance. The word, full799-coordinate +endpoint, all25,984 events, signed coefficients, guards and six source rejection +controls remain unchanged. See [PROOF.md](PROOF.md). + +The local complete-process median falls **24.091 to 4.301 seconds** +(**5.60x**, 82.1% less wall time). The host was not reserved: +baseline runs range from 19.791 to 31.149 seconds; candidate runs range +from 3.259 to 9.810 seconds. `BENCHMARK.json` records six serial fresh-process runs of the complete baseline +and candidate, with code hashes, all receipts and the local timing limits. +The candidate still authenticates and extracts the frozen source, executes the +literal attaining oracles, and compares the full source result. It has no +persistent cache. Qualification is a separate cost and is not hidden in the +claimed runtime. + +Run the fast complete replay: + +```sh +python3 -I -B research/p104-integer-error-replay/verify.py +``` + +Run the full independent arithmetic qualification: + +```sh +python3 -B scripts/research_package.py --package research/p104-integer-error-replay +``` + +Qualification compares the entire original/candidate result, every actual +signed witness row, the ideal metadata and all local weights. It also checks120 +separate dyadic words with4,240 events, varied defect sites, reset, COPY and +cancellation, plus three integer-contract rejection controls. The source's six +controls remain active in every normal replay. `RESULT.json` records this scope. + +To repeat timings with Python3.12, run `benchmark.py --output /tmp/p104-error-times.json` +from this package directory. Six complete processes run in sequence. Local +macOS timings do not establish Linux or hosted CI performance. Python3.12 and +the standard library suffice. The source export and source NOTICE files are +retained unchanged. Registered, source-corruption and read-only Git-free +optimized checks are separate from timing. + +`contract.py` adds four explicit parameter edits to the source runner and removes +its old CLI. `CONTRACT-EDITS.json` authenticates that adaptation. The backend is +passed as an ordinary argument. No runtime monkeypatch or import hook is used. +The candidate keeps the original literal scalar and reverse-cut oracles. + +## Open next questions + +- Reproduce the complete six-process measurement on an idle Linux runner. Keep + all endpoint, error and failure checks, and report qualification cost separately. +- If a later word needs new operations or nondyadic coefficients, prove a new + representation contract before using this backend. This package rejects them. +- Bind actual native/rounded child and reset implementations to the retained + precision theorem. A faster replay does not discharge those assumptions. + +Source PR5826 at58f93cf41751920f3d6766a39caccc2974ce18b0. Credit PR5819, +Adam Gall, ywz65, PR2878, Mason Hale/PR5811 and all retained P104/native/compiler +sources. New backend and qualification by Ali Romman with substantial OpenAI +Codex assistance; no subagents. Apache-2.0. No new kappa, frontier change, +physical supplier admission or independent human acceptance is claimed. diff --git a/research/p104-integer-error-replay/RESULT.json b/research/p104-integer-error-replay/RESULT.json new file mode 100644 index 0000000000..1952424ccc --- /dev/null +++ b/research/p104-integer-error-replay/RESULT.json @@ -0,0 +1,22 @@ +{ + "all_actual_witness_rows_equal": true, + "coefficient_scale_bits": 55, + "coordinates": 799, + "events": 25984, + "finite_fixtures": { + "cases": 120, + "controls": [ + "nondyadic scalar", + "inexact scale division", + "nondyadic weight" + ], + "events": 4240 + }, + "guards": { + "owned": 22, + "prefix": 26, + "public": 23 + }, + "source_controls": 6, + "source_result_sha256": "cc7739703ed23532d187949c8507d09c13ac4c152e07a930f0087cde0d7a3d98" +} diff --git a/research/p104-integer-error-replay/SOURCES.json b/research/p104-integer-error-replay/SOURCES.json new file mode 100644 index 0000000000..49d974510c --- /dev/null +++ b/research/p104-integer-error-replay/SOURCES.json @@ -0,0 +1,57 @@ +{ + "schema_version": 1, + "base_commit": "de5ec2e7a6074068452f45b1a191b5c72832df4a", + "files": [ + { + "path": "certificates/selected-result.json", + "usage": "provenance", + "git_blob": "581f8d87008354eb5b869f7ed9de1317ad837ce8", + "sha256": "2a0220e866417774606e0f991e41b9c1d26b1f43b97857238cf478dbc7d330b5" + }, + { + "path": "docs/research/agent-task-catalog.json", + "usage": "provenance", + "git_blob": "3404fbdd5e7529a0674eef26114b5071e4586cec", + "sha256": "ead6cdc9d0af6d58e8a49744d8ec8c7c15e13d2ba93c276c434bcf9b51b93a81" + }, + { + "path": "research/p104-integer-error-replay/inputs/source.tar", + "usage": "input", + "origin": { + "commit": "58f93cf41751920f3d6766a39caccc2974ce18b0", + "package": "research/p104-noisy-copy-reset", + "format": "official research-package export" + }, + "git_blob": "8f17461fcdbef4bc896bd45f2481ac3bad758d0d", + "sha256": "f8252a90dc504ce8a77d781e558691fe8d21014b0f3f720d8dfd5274b5e8aadc" + }, + { + "path": "research/p104-noisy-copy-reset/SOURCES.json", + "usage": "provenance", + "pin": "head:58f93cf41751920f3d6766a39caccc2974ce18b0:research/p104-noisy-copy-reset/SOURCES.json", + "git_blob": "081ab1db527ad481b475585ed73d8d7c042f1cf9", + "sha256": "da233c5ea2b28a58d6026cebbd266ea373716afd11b2013f655265d536b8b787" + }, + { + "path": "research/p104-noisy-copy-reset/VERIFY.json", + "usage": "provenance", + "pin": "head:58f93cf41751920f3d6766a39caccc2974ce18b0:research/p104-noisy-copy-reset/VERIFY.json", + "git_blob": "b5a196e0e71cfafbb88f457ff7c94b63a9a7087a", + "sha256": "b84a00c78d77b82e87050516ef19199fc30a5bae50846f588e09dd5f2a5ed52d" + }, + { + "path": "research/p104-noisy-copy-reset/RESULT.json", + "usage": "provenance", + "pin": "head:58f93cf41751920f3d6766a39caccc2974ce18b0:research/p104-noisy-copy-reset/RESULT.json", + "git_blob": "66a891b4fa7d5860b5a08b67f50e988f15e4a520", + "sha256": "ac7f1922f777667f51bf666538eb36bdca97f55cb0313210c60ffe29fef77cd2" + }, + { + "path": "research/p104-noisy-copy-reset/verify.py", + "usage": "provenance", + "pin": "head:58f93cf41751920f3d6766a39caccc2974ce18b0:research/p104-noisy-copy-reset/verify.py", + "git_blob": "55beda7b0518b9e458b610ee4e16ee2a7ad43f74", + "sha256": "4896c85513f0e15e96fdcb9df9245055bf252dc6be99be5e2a037420a795bb34" + } + ] +} diff --git a/research/p104-integer-error-replay/TASK.json b/research/p104-integer-error-replay/TASK.json new file mode 100644 index 0000000000..87b843050e --- /dev/null +++ b/research/p104-integer-error-replay/TASK.json @@ -0,0 +1,67 @@ +{ + "schema_version": 1, + "task_id": "replay-runtime", + "priority_revision": 8, + "base_commit": "de5ec2e7a6074068452f45b1a191b5c72832df4a", + "original_card": { + "id": "replay-runtime", + "question": "Can one measured replay bottleneck be sped up without dropping coverage?", + "starting_points": [ + "scripts/run_isolated_tests.py", + "scripts/verify_replay_coverage.py", + "certificates/selected-result.json" + ], + "methods": [ + "Profile one isolated replay and optimize the measured bottleneck.", + "Design source-bound reuse with explicit dependency invalidation and negative controls." + ], + "acceptance_gate": "Report before/after wall time on the same fixture, retained checks and invalidation behavior.", + "first_step": { + "command": [ + "python3", + "-B", + "scripts/research_selected_baseline.py" + ], + "expected": "PASS_RESEARCH_BASELINE_BINDINGS_ONLY", + "inspect": "Resolve the current selected review, separate complex/ordinary BIT/admitted BIT/outer budgets, and compare the card against live handoffs before starting. Historical ceilings require exact source/model equivalence.", + "scope": "Source-binding orientation only; not a scientific replay or all-size proof. Materialize selected inputs if this checkout is sparse." + }, + "first_experiment": "Measure one unchanged fixture, preserve check coverage, and test one optimization with invalidation controls.", + "bottleneck_link": "Faster trustworthy replays increase review throughput and let mechanism candidates be checked sooner.", + "allowed_variations": [ + "Profile one stage or design one source-bound cache boundary." + ], + "scope_change_triggers": [ + "Skipping coverage or comparing different fixtures to claim speedup." + ], + "overlap_terms": [ + "replay runtime", + "cache invalidation", + "isolated tests" + ] + }, + "scope_status": "refined", + "actual_scope": "Accelerate the complete PR5826 precision replay with proved exact dyadic integer arithmetic, retaining all source coverage.", + "scope_change_reason": "The Fraction inner loops are measured in the full current precision contract; changed words and physical arithmetic remain outside this runtime task.", + "bottleneck_link": "Reduces the cost of complete arbitrary-input, signed-error and transpose checks when evaluating P104 precision candidates.", + "budget_minutes": 90, + "stop_rule": "Require exact complete result and witness equality, semantic controls and a measured whole-process gain.", + "outcome": "completed", + "evidence": "PROOF.md, RESULT.json and BENCHMARK.json; original full contract and additional exact arithmetic qualification.", + "author": "Ali Romman with substantial OpenAI Codex assistance", + "ai_assistance": "Substantial OpenAI Codex assistance in proof, implementation, measurement and checks. No subagents.", + "open_questions": [ + { + "question": "Does the complete replay speedup reproduce on Linux?", + "why_it_matters": "Local shared-host timings do not establish hosted performance.", + "first_step": "Run the six serial cold-process benchmark with the exact committed code and Python3.12.", + "blocked_by": "An idle Linux measurement is not supplied here." + }, + { + "question": "Can actual native and reset machines meet the precision allowances?", + "why_it_matters": "Faster checking is not numerical supplier admission.", + "first_step": "Bind a paid completed child and reset to the source contract, retaining all owned return obligations.", + "blocked_by": "The five framework assumptions keep their status." + } + ] +} diff --git a/research/p104-integer-error-replay/VERIFY.json b/research/p104-integer-error-replay/VERIFY.json new file mode 100644 index 0000000000..674756ac8c --- /dev/null +++ b/research/p104-integer-error-replay/VERIFY.json @@ -0,0 +1,21 @@ +{ + "schema_version": 1, + "status": "ready", + "python": "3.12", + "requirements": [], + "inputs": [ + "research/p104-integer-error-replay/inputs/source.tar" + ], + "commands": [ + { + "argv": [ + "{python}", + "-B", + "{package}/verify.py", + "--qualify" + ], + "timeout_seconds": 180, + "checks": "Complete baseline/candidate precision result, actual signed witness rows, ideal weights,120 dyadic words and source plus integer rejection controls" + } + ] +} diff --git a/research/p104-integer-error-replay/benchmark.py b/research/p104-integer-error-replay/benchmark.py new file mode 100644 index 0000000000..280f163fb0 --- /dev/null +++ b/research/p104-integer-error-replay/benchmark.py @@ -0,0 +1,38 @@ +#!/usr/bin/env python3 +"""Measure complete baseline and candidate runs in six serial fresh processes.""" +import argparse +from hashlib import sha256 +import json +from pathlib import Path +import platform +import statistics +import subprocess +import sys +import time + +P=Path(__file__).resolve().parent + + +def measure(): + rows=[] + order=['baseline','candidate','candidate','baseline','baseline','candidate'] + for mode in order: + start=time.perf_counter() + run=subprocess.run([sys.executable,'-I','-B',str(P/'verify.py'),'--'+mode],cwd=P.parent.parent,capture_output=True,text=True,check=True,timeout=120) + elapsed=time.perf_counter()-start + payload=json.loads(run.stdout.splitlines()[-1]) + rows.append(dict(mode=mode,wall_seconds=elapsed,internal_seconds=payload['seconds'],receipt=payload['receipt'])) + print(f'{mode}: {elapsed:.3f} seconds',file=sys.stderr,flush=True) + if len({json.dumps(row['receipt'],sort_keys=True) for row in rows})!=1:raise ValueError('benchmark coverage differs') + baseline=statistics.median(r['wall_seconds'] for r in rows if r['mode']=='baseline') + candidate=statistics.median(r['wall_seconds'] for r in rows if r['mode']=='candidate') + files=['integer.py','contract.py','verify.py','benchmark.py','inputs/source.tar'] + return dict(platform=platform.platform(),python=sys.version,code_sha256={f:sha256((P/f).read_bytes()).hexdigest() for f in files},order=order,runs=rows, + baseline_median_seconds=baseline,candidate_median_seconds=candidate,speedup=baseline/candidate,wall_reduction_fraction=1-candidate/baseline, + cold_processes=True,parallel_replays=False,scope='Complete contract with source authentication, extraction, all original endpoint/error/guard/control checks. Local shared-host timings; no Linux or hosted speed claim. Qualification is a separate cost.') + + +if __name__=='__main__': + parser=argparse.ArgumentParser();parser.add_argument('--output',type=Path);args=parser.parse_args();text=json.dumps(measure(),indent=2)+'\n' + if args.output:args.output.write_text(text) + else:print(text,end='') diff --git a/research/p104-integer-error-replay/contract.py b/research/p104-integer-error-replay/contract.py new file mode 100644 index 0000000000..5b10dcac38 --- /dev/null +++ b/research/p104-integer-error-replay/contract.py @@ -0,0 +1,136 @@ +#!/usr/bin/env python3 +"""Replay the declared completed-operation precision contract.""" +from fractions import Fraction as F +from hashlib import sha256 +import copy +import gzip +import importlib.util +import json +from pathlib import Path +import sys + +P = Path(__file__).resolve().parent + + +def need(ok, message): + if not ok: + raise ValueError(message) + + +def authenticate(P=P): + for row in json.loads((P / 'SOURCES.json').read_text())['files']: + if row['usage'] == 'input': + data = (P.parent.parent / row['path']).read_bytes() + need(sha256(data).hexdigest() == row['sha256'], 'source hash') + original = (P / 'inputs/prior-analysis.py').read_text() + for before, after in json.loads((P / 'PRECISION-EDITS.json').read_text()): + need(original.count(before) == 1, 'unique declared edit') + original = original.replace(before, after) + need(original == (P / 'precision.py').read_text(), 'declared edit bytes') + + +def module(name, path): + spec = importlib.util.spec_from_file_location(name, path) + value = importlib.util.module_from_spec(spec) + spec.loader.exec_module(value) + return value + + +def guards(J, K, scores): + # A strict inequality gives error less than B at t=0, and less than + # B*2^-t when each unit roundoff has t more bits. + prefix = next(g for g in range(100) if J + K < 2**g) + def valid(g): + u = F(1, 2**g) + return u*K < 1 and all(u*(a+b*u*J/(1-u*K)) < 1 for a,b,_ in scores) + final = next(g for g in range(100) if valid(g)) + need(not valid(final-1), 'previous final guard must fail this formula') + return dict(prefix=prefix, final=final) + + +def rejection(label, action): + try: + action() + except (ValueError, AssertionError): + return label + raise ValueError('accepted negative control: ' + label) + + +def calculate(P=P, backend=None): + authenticate(P) + a = backend if backend is not None else module('noisy_precision', P / 'precision.py') + word = json.loads(gzip.decompress((P / 'inputs/WORD.json.gz').read_bytes())) + source = json.loads((P / 'inputs/caller-RESULT.json').read_text()) + need(a.digest(word) == source['canonical_word_sha256'], 'caller word binding') + ideal, weights = a.ideal(word) + rounded = set(ideal['counts']) + trace, witnesses = a.error_trace(word, weights, rounded) + scores, hashes = a.reverse_all(word, weights, rounded) + need(scores == trace['final_scores'], 'all final transpose scores') + need(hashes == trace['final_coefficient_hashes'], 'all final signed coefficients') + for k, peak in enumerate(trace['peaks']): + _, row = a.reverse_cut(word, rounded, peak['cut'], peak['role']) + need(row == witnesses[k], 'prefix signed transpose') + errors = {j:(1 if v > 0 else -1) for j,v in row.items()} + value = a.execute(word, {}, errors, peak['cut'])[peak['role']] + need(value == sum(map(abs, row.values()), F(0)), 'literal aligned defects') + if k == 2: + need(value == peak['value'], 'attained independent defect gain') + peak = ideal['input_peak'] + initial = {r:(1 if v > 0 else -1) for r,v in peak['row'].items()} + need(a.execute(word, initial, {}, peak['cut'])[peak['role']] == peak['value'], + 'attained input gain') + J,K = [v['value'] for v in trace['peaks'][:2]] + public = word['public'] + gp = guards(J,K,scores[:public]) + go = guards(J,K,scores[public:]) + need(gp['prefix'] == go['prefix'], 'one uniform prefix guard') + + # A reset residual at the destination survives the next additive COPY. + j = next(i for i,e in enumerate(word['program']) if e[0] == 'COPY') + r = word['program'][j][1] + reset = max(i for i,e in enumerate(word['program'][:j]) if e[1] == r) + need(word['program'][reset][0] == 'INIT', 'copy fixture starts at reset') + actual = a.execute(word, {}, {reset:F(1)}, j+1)[r] + prior = module('prior_precision', P / 'inputs/prior-analysis.py') + overwrite = prior.execute(word, {}, {reset:F(1)}, j+1)[r] + need(actual == 1 and overwrite == 0, 'overwrite extension loses reset residual') + _, error_row = a.reverse_cut(word, rounded, j+1, r) + need(error_row[reset] == 1, 'transpose retains reset residual') + + controls = [] + bad = copy.deepcopy(word) + bad['program'].insert(j, ['ADD', r, word['program'][j][2], 1, word['program'][j][-1]]) + controls.append(rejection('nonzero ideal COPY destination', lambda:a.ideal(bad))) + bad = copy.deepcopy(word) + bad['program'][j][-2] = '1/3' + controls.append(rejection('nondyadic COPY scalar', lambda:a.ideal(bad))) + bad = copy.deepcopy(word) + bad['program'][j][2] = r + controls.append(rejection('self COPY', lambda:a.ideal(bad))) + controls.append(rejection('overwrite extension to residual reset', + lambda:need(actual == overwrite, 'residual omitted'))) + last_clear = max(i for i,e in enumerate(word['program']) if e[0] == 'CLEAR') + owned_role = word['program'][last_clear][1] + residual = a.execute(word, {}, {last_clear:F(1)}, len(word['program']))[owned_role] + need(residual == 1, 'final reset residual fixture') + controls.append(rejection('exact owned zero from bounded residual', + lambda:need(residual == 0, 'owned residual'))) + g = gp['prefix'] + controls.append(rejection('one fewer uniform guard bit', lambda:need(J+K < 2**(g-1), 'guard'))) + public_peak = [max((scores[r][k],r) for r in range(public)) for k in range(3)] + owned_peak = [max((scores[r][k],r) for r in range(public,len(scores))) for k in range(3)] + return a.encode(dict( + source_pr=5811, source_head='33d7760d0a6fea6394aefd014eea68f0af02a92e', + contract='Additive COPY; bounded reset residual; all completed operations have defects', + ideal=ideal, weights_sha256=a.digest(weights), trace=trace, + public_final_peaks=public_peak, owned_final_peaks=owned_peak, + sufficient_guard_bits=dict(prefix=gp['prefix'], public=gp['final'], owned=go['final']), + copy_residual_control=dict(reset=reset, copy=j, role=r, additive=actual, overwrite=overwrite), + rejected_controls=controls, + limits=['Unitary decoded native maps remain a premise.', + 'This contract does not prove exact owned zero return.', + 'No implementation or fee for a residual reset is supplied.', + 'The guards are sufficient for this formula, not optimal physical precision.', + 'No kappa or selected frontier change.'])) + diff --git a/research/p104-integer-error-replay/inputs/source.tar b/research/p104-integer-error-replay/inputs/source.tar new file mode 100644 index 0000000000000000000000000000000000000000..8f17461fcdbef4bc896bd45f2481ac3bad758d0d GIT binary patch literal 327680 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 J416gD{x2ftEsy{J literal 0 HcmV?d00001 diff --git a/research/p104-integer-error-replay/integer.py b/research/p104-integer-error-replay/integer.py new file mode 100644 index 0000000000..22394de087 --- /dev/null +++ b/research/p104-integer-error-replay/integer.py @@ -0,0 +1,184 @@ +"""Exact integer inner loops for signed dyadic error transfer. + +Ali Romman with substantial OpenAI Codex assistance. Apache-2.0. +The literal scalar and reverse-cut oracles stay in the authenticated reference. +""" +from collections import Counter +from fractions import Fraction as F +from hashlib import sha256 + + +def need(ok,message): + if not ok: raise ValueError(message) + + +def dyadic(value): + value=F(value);d=value.denominator + need(d & (d-1)==0,'dyadic value required') + return value.numerator,d.bit_length()-1 + + +def scaled(value,scale): + n,k=dyadic(value);need(scale%(1<>k) + + +def multiply(value,n,k): + value*=n + need(not k or value%(1<>k + + +def coefficients(word): + n=word['public']+word['owned_fields'];ops=[] + for event in word['program']: + op,r=event[:2];need(op in ('INIT','CLEAR','MOVE','ADD','COPY','SCALE'),'known operation') + need(0<=r=0 and c>=0 for a,c in values),'nonnegative weights') + return n,ops,scale,values,(scale*aw,scale*cw,scale) + + +def add_row(dst,src,n,k): + for i,v in src.items(): + value=dst.get(i,0)+multiply(v,n,k) + if value:dst[i]=value + else:dst.pop(i,None) + + +def update_hash(h,event,value,scale): + q=F(value,scale) + h.update(f'{event}:{q.numerator}/{q.denominator};'.encode()) + + +class Engine: + def __init__(self,reference): + self.binary_span=reference.binary_span + self.digest=reference.digest + self.encode=reference.encode + self.execute=reference.execute + self.reverse_cut=reference.reverse_cut + + def ideal(self,word): + n,ops,S=coefficients(word);public=word['public'] + rows=[{i:S} for i in range(n)];norms=[S]*n + frames=list(word['initial'])+[None]*(n-public) + spaces=[self.binary_span(v) for v in word['frames']] + live=set();peak_live=0;peak=dict(value=S,cut=0,role=0,row={0:S}) + weights=[];erasures=[];counts=Counter();stream=sha256() + for j,(op,r,a,k,s) in enumerate(ops): + event=word['program'][j];counts[op]+=1 + weight,feedback=F(norms[r],S),F(1) + if op=='MOVE': + _,_,start,end,private=event + need(frames[r]==start and private==(r in live),'Native source and owner') + need(spaces[end]=public and r not in live,'Owned INIT');live.add(r);peak_live=max(peak_live,len(live));rows[r]={};frames[r]=event[2] + elif op=='CLEAR': + need(r in live and frames[r]==event[2],'Owned CLEAR') + erasures.append(dict(event=j,role=r,ideal_norm=F(norms[r],S),ideal_zero=not rows[r])) + live.remove(r);rows[r]={};frames[r]=None + else: + q=F(a,1<peak['value']:peak=dict(value=norms[r],cut=j+1,role=r,row=dict(rows[r])) + need(not live and frames[:public]==word['final'],'Public and owned exits') + active=set(word['live']) + for r,row in enumerate(rows): + expected={r:S} if rpeaks[c]['value']: + peaks[c]=dict(value=value,cut=j+1,role=r);witness[c]=dict(rows[r]) + pareto=[];maximum=-1 + for a,b,cut,r in sorted(pairs,reverse=True): + if b>maximum:pareto.append([F(a,units[0]),F(b,units[1]),cut,r]);maximum=b + final=[] + for c in range(3): + value,r=max((scores[r][c],r) for r in range(word['public'])) + final.append(dict(value=F(value,units[c]),cut=len(ops),role=r));witness['final'+str(c)]=dict(rows[r]) + hashes=[] + for row in rows: + h=sha256() + for j in sorted(row,reverse=True):update_hash(h,j,row[j],S) + hashes.append(h.hexdigest()) + for c,peak in enumerate(peaks):peak['value']=F(peak['value'],units[c]) + witness={key:{j:F(v,S) for j,v in row.items()} for key,row in witness.items()} + return dict(rounded=sorted(rounded),sites=sites,peaks=peaks,pareto=pareto,final_peaks=final, + final_scores=[[F(v,u) for v,u in zip(row,units)] for row in scores], + final_coefficient_hashes=hashes,score_stream_sha256=stream.hexdigest()),witness + + def reverse_all(self,word,weights,rounded): + n,ops,S,w,units=setup(word,weights);columns=[{i:S} for i in range(n)];scores=[[0]*3 for _ in range(n)];hashes=[sha256() for _ in range(n)] + for j in reversed(range(len(ops))): + op,r,a,k,s=ops[j] + if op in rounded: + for i,v in columns[r].items(): + scores[i][0]+=abs(v)*w[j][0];scores[i][1]+=abs(v)*w[j][1];scores[i][2]+=abs(v) + update_hash(hashes[i],j,v,S) + if op in ('INIT','CLEAR'):columns[r]={} + elif op=='SCALE':columns[r]={i:multiply(v,a,k) for i,v in columns[r].items()} + elif op in ('ADD','COPY'):add_row(columns[s],columns[r],a,k) + return [[F(v,u) for v,u in zip(row,units)] for row in scores],[h.hexdigest() for h in hashes] diff --git a/research/p104-integer-error-replay/verify.py b/research/p104-integer-error-replay/verify.py new file mode 100644 index 0000000000..b7022c4dba --- /dev/null +++ b/research/p104-integer-error-replay/verify.py @@ -0,0 +1,113 @@ +#!/usr/bin/env python3 +"""Run the complete frozen contract through a declared exact backend.""" +from contextlib import contextmanager +from fractions import Fraction as F +from hashlib import sha256 +import importlib.util +import json +from pathlib import Path +import random +import sys +import tarfile +import tempfile +import time + +P=Path(__file__).resolve().parent + + +def need(ok,message): + if not ok: raise ValueError(message) + + +def load(name,path): + spec=importlib.util.spec_from_file_location(name,path);value=importlib.util.module_from_spec(spec);sys.modules[name]=value;spec.loader.exec_module(value);return value + + +def authenticate(): + for row in json.loads((P/'SOURCES.json').read_text())['files']: + if row['usage']=='input':need(sha256((P.parent.parent/row['path']).read_bytes()).hexdigest()==row['sha256'],'source hash') + + +@contextmanager +def source(): + authenticate() + with tempfile.TemporaryDirectory(prefix='p104-integer-error-') as tmp: + root=Path(tmp) + with tarfile.open(P/'inputs/source.tar') as archive: + need(all(x.isfile() and not x.name.startswith('/') and '..' not in Path(x.name).parts for x in archive),'regular source archive') + archive.extractall(root,filter='data') + p=root/'research/p104-noisy-copy-reset' + original=(p/'verify.py').read_text() + for before,after in json.loads((P/'CONTRACT-EDITS.json').read_text()): + need(original.count(before)==1,'unique backend seam');original=original.replace(before,after) + original=original[:original.index("\nif __name__ == '__main__':")] + need(original==(P/'contract.py').read_text(),'declared contract edits') + reference=load('frozen_contract',p/'verify.py');reference.authenticate() + precision=load('frozen_precision',p/'precision.py') + yield p,reference,precision + + +def fixtures(reference,engine,integer): + rng=random.Random(5826);cases=120;comparisons=0 + for case in range(cases): + n=6;program=[] + for _ in range(5+case%70): + op=rng.choice(['INIT','CLEAR','MOVE','ADD','COPY','SCALE']);r=rng.randrange(n) + if op in ('INIT','CLEAR'):event=[op,r,0] + elif op=='MOVE':event=[op,r,0,0,False] + else: + q=rng.choice(['1/2','-3/8','2','-4','5/16','1','-1']) + if op=='SCALE':event=[op,r,q,0] + else: + s=rng.choice([i for i in range(n) if i!=r]);event=[op,r,s,q,0] + program.append(event) + word=dict(public=4,owned_fields=2,program=program) + weights=[(F(rng.randrange(10),2**rng.randrange(8)),F(rng.randrange(10),2**rng.randrange(8))) for _ in program] + rounded={op for op in ['INIT','CLEAR','MOVE','ADD','COPY','SCALE'] if rng.randrange(2)} + a,wa=reference.error_trace(word,weights,rounded);b,wb=engine.error_trace(word,weights,rounded) + need(a==b and wa==wb,'complete finite trace and signed witness equality') + need(reference.reverse_all(word,weights,rounded)==engine.reverse_all(word,weights,rounded),'finite transpose equality') + comparisons+=len(program) + controls=[] + for label,fn in [('nondyadic scalar',lambda:integer.dyadic(F(1,3))),('inexact scale division',lambda:integer.multiply(1,1,1)),('nondyadic weight',lambda:integer.scaled(F(1,3),8))]: + try:fn() + except ValueError:controls.append(label) + else:raise ValueError('accepted invalid integer contract') + return dict(cases=cases,events=comparisons,controls=controls) + + +def run(mode): + started=time.perf_counter() + with source() as (p,original,reference): + expected=json.loads((p/'RESULT.json').read_text()) + if mode=='baseline':result=original.calculate() + else: + contract=load('explicit_contract',P/'contract.py');integer=load('integer_backend',P/'integer.py');engine=integer.Engine(reference) + result=contract.calculate(p,engine) + need(result==expected,'complete source result, including original controls') + receipt=dict(source_result_sha256=sha256(json.dumps(result,sort_keys=True,separators=(',',':')).encode()).hexdigest(),events=result['ideal']['events'],coordinates=result['ideal']['n'],source_controls=len(result['rejected_controls']),guards=result['sufficient_guard_bits']) + if mode=='qualify': + baseline=original.calculate();need(result==baseline,'complete baseline/candidate output equality') + # Compare the full witness rows, which are used but not all stored + # in the source receipt. This is a qualification cost, not runtime. + import gzip + word=json.loads(gzip.decompress((p/'inputs/WORD.json.gz').read_bytes()));ideal,weights=reference.ideal(word);rounded=set(ideal['counts']) + need(engine.ideal(word)==(ideal,weights),'full ideal metadata and exact local weights') + a,wa=reference.error_trace(word,weights,rounded);b,wb=engine.error_trace(word,weights,rounded) + need(a==b and wa==wb,'all actual signed witness rows') + receipt['finite_fixtures']=fixtures(reference,engine,integer) + receipt['coefficient_scale_bits']=integer.setup(word,weights)[2].bit_length()-1 + receipt['all_actual_witness_rows_equal']=True + return receipt,time.perf_counter()-started + + +if __name__=='__main__': + args=sys.argv[1:];mode='candidate' if not args else args[0].removeprefix('--') + need(mode in ('candidate','baseline','qualify'),'mode') + receipt,seconds=run(mode) + if mode=='qualify': + if args[1:]==['--write']:(P/'RESULT.json').write_text(json.dumps(receipt,indent=2,sort_keys=True)+'\n') + else:need(not args[1:] and receipt==json.loads((P/'RESULT.json').read_text()),'qualification receipt') + else:need(len(args)<=1,'arguments') + print('PASS_P104_INTEGER_ERROR_REPLAY') + print(json.dumps({'mode':mode,'seconds':round(seconds,6),'receipt':receipt},sort_keys=True)) From 7c5eb98e7439d778141d63e801e53d4cd7e1d587 Mon Sep 17 00:00:00 2001 From: Ali Romman <226877337+aliromman@users.noreply.github.com> Date: Mon, 26 Oct 2026 22:49:49 -0500 Subject: [PATCH 3/4] Pin the frozen precision source export --- research/p104-integer-error-replay/SOURCES.json | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/research/p104-integer-error-replay/SOURCES.json b/research/p104-integer-error-replay/SOURCES.json index 49d974510c..1e3a806162 100644 --- a/research/p104-integer-error-replay/SOURCES.json +++ b/research/p104-integer-error-replay/SOURCES.json @@ -23,7 +23,8 @@ "format": "official research-package export" }, "git_blob": "8f17461fcdbef4bc896bd45f2481ac3bad758d0d", - "sha256": "f8252a90dc504ce8a77d781e558691fe8d21014b0f3f720d8dfd5274b5e8aadc" + "sha256": "f8252a90dc504ce8a77d781e558691fe8d21014b0f3f720d8dfd5274b5e8aadc", + "pin": "head:55394bd623bc9db68ac5d49999481185ba9b82dd:research/p104-integer-error-replay/inputs/source.tar" }, { "path": "research/p104-noisy-copy-reset/SOURCES.json", From 3db8ba55e322db5cd0f89558e021c5009d29a33e Mon Sep 17 00:00:00 2001 From: Ali Romman <226877337+aliromman@users.noreply.github.com> Date: Tue, 27 Oct 2026 00:36:15 -0500 Subject: [PATCH 4/4] Bind pending predecessor records to exact retained publication sources --- research/p104-integer-error-replay/README.md | 6 ++++ .../p104-integer-error-replay/SOURCES.json | 32 ++++++++++++++++--- 2 files changed, 33 insertions(+), 5 deletions(-) diff --git a/research/p104-integer-error-replay/README.md b/research/p104-integer-error-replay/README.md index e3189891e5..2e46190110 100644 --- a/research/p104-integer-error-replay/README.md +++ b/research/p104-integer-error-replay/README.md @@ -61,3 +61,9 @@ Adam Gall, ywz65, PR2878, Mason Hale/PR5811 and all retained P104/native/compile sources. New backend and qualification by Ali Romman with substantial OpenAI Codex assistance; no subagents. Apache-2.0. No new kappa, frontier change, physical supplier admission or independent human acceptance is claimed. + +The source manifest pins replay inputs to copies in this publication history. +Its `retained_predecessors` records keep each original head, path, blob and +SHA256, plus its exact retained file or archive member. Each source was checked +byte-for-byte before this rebind. This removes an unavailable side-commit +dependency from clean CI; no source bytes or scientific checks are changed. diff --git a/research/p104-integer-error-replay/SOURCES.json b/research/p104-integer-error-replay/SOURCES.json index 1e3a806162..2bd2ce4b37 100644 --- a/research/p104-integer-error-replay/SOURCES.json +++ b/research/p104-integer-error-replay/SOURCES.json @@ -25,34 +25,56 @@ "git_blob": "8f17461fcdbef4bc896bd45f2481ac3bad758d0d", "sha256": "f8252a90dc504ce8a77d781e558691fe8d21014b0f3f720d8dfd5274b5e8aadc", "pin": "head:55394bd623bc9db68ac5d49999481185ba9b82dd:research/p104-integer-error-replay/inputs/source.tar" - }, + } + ], + "retained_predecessors": [ { "path": "research/p104-noisy-copy-reset/SOURCES.json", "usage": "provenance", "pin": "head:58f93cf41751920f3d6766a39caccc2974ce18b0:research/p104-noisy-copy-reset/SOURCES.json", "git_blob": "081ab1db527ad481b475585ed73d8d7c042f1cf9", - "sha256": "da233c5ea2b28a58d6026cebbd266ea373716afd11b2013f655265d536b8b787" + "sha256": "da233c5ea2b28a58d6026cebbd266ea373716afd11b2013f655265d536b8b787", + "retained_source": { + "path": "research/p104-integer-error-replay/inputs/source.tar", + "pin": "head:55394bd623bc9db68ac5d49999481185ba9b82dd:research/p104-integer-error-replay/inputs/source.tar", + "member": "research/p104-noisy-copy-reset/SOURCES.json" + } }, { "path": "research/p104-noisy-copy-reset/VERIFY.json", "usage": "provenance", "pin": "head:58f93cf41751920f3d6766a39caccc2974ce18b0:research/p104-noisy-copy-reset/VERIFY.json", "git_blob": "b5a196e0e71cfafbb88f457ff7c94b63a9a7087a", - "sha256": "b84a00c78d77b82e87050516ef19199fc30a5bae50846f588e09dd5f2a5ed52d" + "sha256": "b84a00c78d77b82e87050516ef19199fc30a5bae50846f588e09dd5f2a5ed52d", + "retained_source": { + "path": "research/p104-integer-error-replay/inputs/source.tar", + "pin": "head:55394bd623bc9db68ac5d49999481185ba9b82dd:research/p104-integer-error-replay/inputs/source.tar", + "member": "research/p104-noisy-copy-reset/VERIFY.json" + } }, { "path": "research/p104-noisy-copy-reset/RESULT.json", "usage": "provenance", "pin": "head:58f93cf41751920f3d6766a39caccc2974ce18b0:research/p104-noisy-copy-reset/RESULT.json", "git_blob": "66a891b4fa7d5860b5a08b67f50e988f15e4a520", - "sha256": "ac7f1922f777667f51bf666538eb36bdca97f55cb0313210c60ffe29fef77cd2" + "sha256": "ac7f1922f777667f51bf666538eb36bdca97f55cb0313210c60ffe29fef77cd2", + "retained_source": { + "path": "research/p104-integer-error-replay/inputs/source.tar", + "pin": "head:55394bd623bc9db68ac5d49999481185ba9b82dd:research/p104-integer-error-replay/inputs/source.tar", + "member": "research/p104-noisy-copy-reset/RESULT.json" + } }, { "path": "research/p104-noisy-copy-reset/verify.py", "usage": "provenance", "pin": "head:58f93cf41751920f3d6766a39caccc2974ce18b0:research/p104-noisy-copy-reset/verify.py", "git_blob": "55beda7b0518b9e458b610ee4e16ee2a7ad43f74", - "sha256": "4896c85513f0e15e96fdcb9df9245055bf252dc6be99be5e2a037420a795bb34" + "sha256": "4896c85513f0e15e96fdcb9df9245055bf252dc6be99be5e2a037420a795bb34", + "retained_source": { + "path": "research/p104-integer-error-replay/inputs/source.tar", + "pin": "head:55394bd623bc9db68ac5d49999481185ba9b82dd:research/p104-integer-error-replay/inputs/source.tar", + "member": "research/p104-noisy-copy-reset/verify.py" + } } ] }