From 01014cbe772ea5a59ccbc55266222433944c7368 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/3] 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 dec843d2aebd0e66f2767aaac26d3db3f32a7226 Mon Sep 17 00:00:00 2001 From: d3lerium Date: Tue, 27 Oct 2026 21:37:00 +1100 Subject: [PATCH 2/3] Pin immutable inputs for scoped native score-dispatch finding --- .../RUNTIME-SHAPES.json | 17 ++ .../inputs/PR5864.tar | Bin 0 -> 1228800 bytes .../native_parent.c | 227 ++++++++++++++++++ .../runtime_binding.py | 100 ++++++++ .../table_parent.py | 123 ++++++++++ 5 files changed, 467 insertions(+) create mode 100644 research/fraction-native-score-dispatch-feasibility/RUNTIME-SHAPES.json create mode 100644 research/fraction-native-score-dispatch-feasibility/inputs/PR5864.tar create mode 100644 research/fraction-native-score-dispatch-feasibility/native_parent.c create mode 100644 research/fraction-native-score-dispatch-feasibility/runtime_binding.py create mode 100644 research/fraction-native-score-dispatch-feasibility/table_parent.py diff --git a/research/fraction-native-score-dispatch-feasibility/RUNTIME-SHAPES.json b/research/fraction-native-score-dispatch-feasibility/RUNTIME-SHAPES.json new file mode 100644 index 0000000000..9d7406e48d --- /dev/null +++ b/research/fraction-native-score-dispatch-feasibility/RUNTIME-SHAPES.json @@ -0,0 +1,17 @@ +{ + "functions": { + "__add__": "896b59b7df8e862396d6d7a2702cb7d70b0272fcb925d6f2eb05185a7538ddb0", + "__radd__": "6c3aec85f1cd6d3625edbc271d34714cb5760d8f1bfa8f8946c238760ea394fd", + "_add": "cd655a8ed6164c9e64d6fbaff8c41407b55d583d0327c9a889f0d4bfb30d24b1", + "__mul__": "896b59b7df8e862396d6d7a2702cb7d70b0272fcb925d6f2eb05185a7538ddb0", + "_mul": "fddb7b00e5a1935b50177847fed06d5be9b0e98a88b7b03168e39b7058fcaef5", + "__abs__": "97fd3b7adf132814a9c1e7046ca724af66e814c365e0e6f0b315c577e3eb1ffe", + "__neg__": "7e3ea316de290d2c079d2b638791708174d983db9bdbbb673eda15e4f37477de", + "__new__": "d4c031bbaf8cab747dc194b04b157ba1d4c2235f9bbc0048d72801fffc4f4b85", + "_from_coprime_ints": "e8b9a62eb272ce89e2433eaa70feb9eb29193f4895a3e9d5eb11731f3c848baa", + "__sub__": "896b59b7df8e862396d6d7a2702cb7d70b0272fcb925d6f2eb05185a7538ddb0", + "_sub": "17df3425c308b7395d2f9b4d2941ba5c4fe7eb316e880c62a00903cc568bee34" + }, + "reference_module_sha256": "cf33568f7b767f66896995a7a81cc662e8be226f2e58efb61d2028f64eb5d231", + "policy": "Known executable shapes, live closures/globals and full MRO bind the direct path; unsupported runtime uses unchanged generic +=. Source file hash recorded, not sufficient alone." +} diff --git a/research/fraction-native-score-dispatch-feasibility/inputs/PR5864.tar b/research/fraction-native-score-dispatch-feasibility/inputs/PR5864.tar new file mode 100644 index 0000000000000000000000000000000000000000..bb9fc302168df0bf66cf43d08bce70544eeffc4e GIT binary patch literal 1228800 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

QICY(T*I5JH!KZL(VTnD*q<}ULz!pA{yjT9cZ-s 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

{LgE%yv(Ap7uh{Ik5P#S~uC`pC)kh9(k zkwQB3+$RX!QFk~WhRy_4;1uz~4j|Pg!4;gJ;|@laMPn%DFe0(~h!Y!AAWmT-_@kGK z=bhq7xoCc3N-~A5bEG-u?qDG;`3fUi<~omI`%k9NbnBA~SV7nZ)r&t6*=^&2OU2MwkGG6r#WWQ3E5nXkNKm4u@(xy9Hp z`jD6%!Fo`ab_~#VY!X_10m7T6D{cysP8`{S?ZaMoho<90(wbK}T|^LZOotazVu=7` zRcS<7Kb;CPp=(Eu-WZW2M}abJvQbCl40_2KjFG4z^&sAC!_|qdV>vQv1Qu>5=5=3R z+V)%Isf=74Ad?DlN{>MC$(05&nYa^~s04i&6VI`j=!%W& zavH7Gp1(!hlMt)fzCS5Dj)kO`U~kX!lm71Y=coi=GMDPq2cxiGxU>K0ugZh$~oNl3VX#41tJmYgr}-w83E{kw))~ z5G_cmvG9vF7J3tt6Gv;!e<(p@RN1EUS zdW4E^ooR-=C_*n#`*4Jr*pF;8y(A=&vs7A>5Xn7NBz-@e??G^*OdO@?bQ;n+a1hM^ zdH_8LY=Ky_cOGd}Pl0y9sU2cnMXXNPV$egjZF6N9Qk*%HKhq1sSh@dgLTm`~7nT)2 zHYMHNt+K%(TNursyjdcK;YmNd2)<`s^TE}}zt^dy{pxj@N^tq$Paza9_yP5*CY~yl z6afVT{EPyT8}?0$i94Bzycye&@Y^p~Lce(K1^JWnVene@Fh-xr7a=4}GC(Un zKY5lpgzx%A<__@@x~INqJco`@t-McIx3g%kT)-^K_7kj8c{nfBg_Z!UY4B5myVET~ zEMoavwrGljIJ<<%rr3Rz70z*WlWn^oVg0s$Z01|`Q-|sO<|12kbk(CE++b?AVTRl^v%o?ufRyqaF>ooyIPyDYDv85xaw(SR7Mp-kH@4xTy%J zHL*`SrUfSQ+^iL}AOm42Jwz;d7mn2YrY(HWf|ktBjHePpZ~9^9zQrA<5H_PvEXgPL zlQ&I`Y%xk2QO4UQfzy2zj+X&x%+k(Mh}O<>aMlh)o0;&M56fB#$g*aP>UH$INd;kj z!SJhFR5!ZC{^|9hJEHCYT`y2na1H;^TGT5?jj REzaywN@Tb&zb1eR;gR-HOfsw1P4`Du~`gX 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%0D<)<+DPoCJn0lRbd2Zc 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≧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 L^$h$Y%)tK#IIl9A literal 0 HcmV?d00001 diff --git a/research/fraction-native-score-dispatch-feasibility/native_parent.c b/research/fraction-native-score-dispatch-feasibility/native_parent.c new file mode 100644 index 0000000000..ada7b0d0bf --- /dev/null +++ b/research/fraction-native-score-dispatch-feasibility/native_parent.c @@ -0,0 +1,227 @@ +/* Exact bounded cache/control only. All Fraction arithmetic stays in Python. + * Chris R / Clear1nsight, substantial OpenAI Codex/Astra assistance. Apache-2.0. + */ +#define PY_SSIZE_T_CLEAN +#include +#include + +typedef struct { + PyObject_HEAD + PyObject *dict, *weights, *tokens, *compute, *num, *den, *fraction; + PyObject **ring; + Py_ssize_t capacity, used, head, calls, hits, misses, evictions; + int ready, busy; +} Cache; +typedef struct { + PyObject_HEAD + vectorcallfunc vectorcall; + Cache *cache; + PyObject *q, *qn, *qd; +} Event; +static PyTypeObject CacheType, EventType; + +static int cache_traverse(Cache *s, visitproc visit, void *arg) { + Py_VISIT(s->dict); Py_VISIT(s->weights); Py_VISIT(s->tokens); + Py_VISIT(s->compute); Py_VISIT(s->num); Py_VISIT(s->den); Py_VISIT(s->fraction); + if (s->ring) for (Py_ssize_t i=0;icapacity;i++) Py_VISIT(s->ring[i]); + return 0; +} +static int cache_clear(Cache *s) { + s->ready=0; s->busy=1; + if (s->ring) { + for (Py_ssize_t i=0;icapacity;i++) Py_CLEAR(s->ring[i]); + PyMem_Free(s->ring); s->ring=NULL; + } + Py_CLEAR(s->dict); Py_CLEAR(s->weights); Py_CLEAR(s->tokens); + Py_CLEAR(s->compute); Py_CLEAR(s->num); Py_CLEAR(s->den); Py_CLEAR(s->fraction); + return 0; +} +static void cache_dealloc(Cache *s) { + PyObject_GC_UnTrack(s); cache_clear(s); Py_TYPE(s)->tp_free((PyObject *)s); +} +static int event_traverse(Event *s, visitproc visit, void *arg) { + Py_VISIT(s->cache); Py_VISIT(s->q); Py_VISIT(s->qn); Py_VISIT(s->qd); return 0; +} +static int event_clear(Event *s) { + Py_CLEAR(s->cache); Py_CLEAR(s->q); Py_CLEAR(s->qn); Py_CLEAR(s->qd); return 0; +} +static void event_dealloc(Event *s) { + PyObject_GC_UnTrack(s); event_clear(s); Py_TYPE(s)->tp_free((PyObject *)s); +} +static PyObject *event_disabled(PyTypeObject *type, PyObject *args, PyObject *kw) { + (void)type; (void)args; (void)kw; + PyErr_SetString(PyExc_TypeError,"events are created only by Cache.event"); return NULL; +} +static int is_pair(PyObject *p) { + return (PyList_CheckExact(p)||PyTuple_CheckExact(p)) && PySequence_Size(p)>=2; +} +static PyObject *cache_new(PyTypeObject *type, PyObject *args, PyObject *kw) { + if (kw && PyDict_Size(kw)) { PyErr_SetString(PyExc_TypeError,"positional cache arguments only");return NULL; } + PyObject *cap,*weights,*tokens,*compute,*num,*den,*fraction; + if (!PyArg_UnpackTuple(args,"Cache",7,7,&cap,&weights,&tokens,&compute,&num,&den,&fraction)) return NULL; + if (!PyLong_CheckExact(cap)) { PyErr_SetString(PyExc_ValueError,"integer capacity");return NULL; } + Py_ssize_t ncap=PyLong_AsSsize_t(cap); + if (ncap<1 || ncap>16384 || PyErr_Occurred()) { if(!PyErr_Occurred()) PyErr_SetString(PyExc_ValueError,"capacity 1..16384");return NULL; } + if (!(PyList_CheckExact(weights)||PyTuple_CheckExact(weights)) || !PyList_CheckExact(tokens) || !PyFunction_Check(compute) || !PyType_Check(fraction) || Py_TYPE(num)!=&PyMemberDescr_Type || Py_TYPE(den)!=&PyMemberDescr_Type || !Py_TYPE(num)->tp_descr_get || !Py_TYPE(den)->tp_descr_get) { + PyErr_SetString(PyExc_TypeError,"exact native packet types");return NULL; + } + Py_ssize_t n=PySequence_Size(weights); + if (PyList_GET_SIZE(tokens)!=n) { PyErr_SetString(PyExc_ValueError,"weight/token size");return NULL; } + Cache *s=(Cache *)type->tp_alloc(type,0); + if (!s) return NULL; + s->capacity=ncap; + s->dict=PyDict_New();s->weights=PyTuple_New(n);s->tokens=PyTuple_New(n); + s->ring=PyMem_Calloc((size_t)ncap,sizeof(PyObject *)); + if (!s->dict || !s->weights || !s->tokens || !s->ring) { if(!PyErr_Occurred())PyErr_NoMemory();Py_DECREF(s);return NULL; } + s->compute=Py_NewRef(compute);s->num=Py_NewRef(num);s->den=Py_NewRef(den);s->fraction=Py_NewRef(fraction); + for (Py_ssize_t i=0;iweights,i,pair); + PyObject *token=PySequence_GetItem(tokens,i); + if (!token) { Py_DECREF(s);return NULL; } + if (!PyLong_CheckExact(token)) { Py_DECREF(token);Py_DECREF(s);PyErr_SetString(PyExc_TypeError,"integer token");return NULL; } + Py_ssize_t t=PyLong_AsSsize_t(token); + if (t<0 || t>=16384 || PyErr_Occurred()) { Py_DECREF(token);Py_DECREF(s);if(!PyErr_Occurred())PyErr_SetString(PyExc_ValueError,"bounded token");return NULL; } + PyTuple_SET_ITEM(s->tokens,i,token); + } + s->ready=1;return (PyObject *)s; +} +static PyObject *member(PyObject *descriptor, PyObject *object, PyObject *type) { + return Py_TYPE(descriptor)->tp_descr_get(descriptor,object,type); +} +static PyObject *contribution(Event *e, PyObject *old, PyObject *v, Py_ssize_t i) { + Cache *s=e->cache; + if (i<0 || i>=PyTuple_GET_SIZE(s->tokens)) { PyErr_SetString(PyExc_IndexError,"native site index");return NULL; } + if (!Py_IS_TYPE(old,(PyTypeObject *)s->fraction)||!Py_IS_TYPE(v,(PyTypeObject *)s->fraction)) { PyErr_SetString(PyExc_TypeError,"exact Fraction coefficients");return NULL; } + PyObject *parts[4]={NULL,NULL,NULL,NULL}; + for (int k=0;k<4;k++) { + parts[k]=member(k%2?s->den:s->num,k<2?old:v,s->fraction); + if (!parts[k] || !PyLong_CheckExact(parts[k])) { + for(int j=0;j<4;j++)Py_XDECREF(parts[j]); + if(!PyErr_Occurred())PyErr_SetString(PyExc_TypeError,"integer Fraction slots"); + return NULL; + } + } + PyObject *key=PyTuple_New(7); + if(!key){for(int j=0;j<4;j++)Py_DECREF(parts[j]);return NULL;} + PyTuple_SET_ITEM(key,0,parts[0]);PyTuple_SET_ITEM(key,1,parts[1]); + PyTuple_SET_ITEM(key,2,Py_NewRef(e->qn));PyTuple_SET_ITEM(key,3,Py_NewRef(e->qd)); + PyTuple_SET_ITEM(key,4,parts[2]);PyTuple_SET_ITEM(key,5,parts[3]);PyTuple_SET_ITEM(key,6,Py_NewRef(PyTuple_GET_ITEM(s->tokens,i))); + if(s->calls==PY_SSIZE_T_MAX){Py_DECREF(key);PyErr_SetString(PyExc_OverflowError,"native counter overflow");return NULL;} + s->calls++; + PyObject *result=PyDict_GetItemWithError(s->dict,key); + if(result){s->hits++;Py_INCREF(result);Py_DECREF(key);return result;} + if(PyErr_Occurred()){Py_DECREF(key);return NULL;} + s->misses++; + PyObject *pair=PyTuple_GET_ITEM(s->weights,i); + PyObject *argv[5]={old,e->q,v,PyTuple_GET_ITEM(pair,0),PyTuple_GET_ITEM(pair,1)}; + result=PyObject_Vectorcall(s->compute,argv,5,NULL); + if(!result){Py_DECREF(key);return NULL;} + if(!PyTuple_CheckExact(result)||PyTuple_GET_SIZE(result)!=4){Py_DECREF(result);Py_DECREF(key);PyErr_SetString(PyExc_TypeError,"four exact contributions");return NULL;} + for(int k=0;k<4;k++)if(!Py_IS_TYPE(PyTuple_GET_ITEM(result,k),(PyTypeObject *)s->fraction)){Py_DECREF(result);Py_DECREF(key);PyErr_SetString(PyExc_TypeError,"Fraction contributions");return NULL;} + if(s->used==s->capacity){ + PyObject *oldkey=s->ring[s->head]; + if(PyDict_DelItem(s->dict,oldkey)<0){Py_DECREF(result);Py_DECREF(key);return NULL;} + Py_CLEAR(s->ring[s->head]);s->used--;s->evictions++; + } + if(PyDict_SetItem(s->dict,key,result)<0){Py_DECREF(result);Py_DECREF(key);return NULL;} + s->ring[s->head]=key;s->head=(s->head+1)%s->capacity;s->used++; + return result; +} +static int begin_event(Event *e) { + if(!e->cache||!e->cache->ready){PyErr_SetString(PyExc_RuntimeError,"cleared native event");return -1;} + if(e->cache->busy){PyErr_SetString(PyExc_RuntimeError,"reentrant native event");return -1;} + e->cache->busy=1;return 0; +} +static PyObject *event_call(PyObject *obj, PyObject *const *args, size_t nargsf, PyObject *kw) { + Event *e=(Event *)obj; + if(PyVectorcall_NARGS(nargsf)!=3 || (kw&&PyTuple_GET_SIZE(kw))){PyErr_SetString(PyExc_TypeError,"event(old,v,index)");return NULL;} + if(!PyLong_CheckExact(args[2])){PyErr_SetString(PyExc_TypeError,"integer site index");return NULL;} + Py_ssize_t i=PyLong_AsSsize_t(args[2]);if(PyErr_Occurred())return NULL; + if(begin_event(e)<0)return NULL; + PyObject *result=contribution(e,args[0],args[1],i);e->cache->busy=0;return result; +} +static PyObject *cache_event(Cache *s, PyObject *q) { + if(!s->ready){PyErr_SetString(PyExc_RuntimeError,"cleared cache");return NULL;} + if(!Py_IS_TYPE(q,(PyTypeObject *)s->fraction)){PyErr_SetString(PyExc_TypeError,"exact Fraction scalar");return NULL;} + Event *e=(Event *)EventType.tp_alloc(&EventType,0);if(!e)return NULL; + e->vectorcall=event_call;e->cache=(Cache *)Py_NewRef((PyObject *)s);e->q=Py_NewRef(q); + e->qn=member(s->num,q,s->fraction); + if(!e->qn){Py_DECREF(e);return NULL;} + e->qd=member(s->den,q,s->fraction); + if(!e->qd){Py_DECREF(e);return NULL;} + if(!PyLong_CheckExact(e->qn)||!PyLong_CheckExact(e->qd)){Py_DECREF(e);PyErr_SetString(PyExc_TypeError,"integer scalar slots");return NULL;} + return (PyObject *)e; +} +static PyObject *cache_statistics(Cache *s, PyObject *unused) { + (void)unused; + if(!s->ready){PyErr_SetString(PyExc_RuntimeError,"cleared cache");return NULL;} + return Py_BuildValue("{s:n,s:n,s:n,s:n,s:n,s:n,s:n}","calls",s->calls,"hits",s->hits,"misses",s->misses,"evictions",s->evictions,"bypasses",(Py_ssize_t)0,"resident",PyDict_Size(s->dict),"capacity",s->capacity); +} +static PyObject *event_apply(Event *e, PyObject *args) { + PyObject *dst,*src,*scores; + if(!PyArg_UnpackTuple(args,"apply",3,3,&dst,&src,&scores))return NULL; + if(!PyDict_CheckExact(dst)||!PyDict_CheckExact(src)||dst==src||!PyList_CheckExact(scores)||PyList_GET_SIZE(scores)!=3){PyErr_SetString(PyExc_TypeError,"distinct exact rows and three scores");return NULL;} + if(begin_event(e)<0)return NULL; + Cache *s=e->cache; + PyObject *pair=NULL,*result=NULL; + PyObject *view=PyObject_CallMethod(src,"items",NULL); + PyObject *iterator=view?PyObject_GetIter(view):NULL; + Py_XDECREF(view); + if(!iterator)goto fail; + while((pair=PyIter_Next(iterator))){ + if(!PyTuple_CheckExact(pair)||PyTuple_GET_SIZE(pair)!=2){PyErr_SetString(PyExc_TypeError,"dict item pair");goto fail;} + PyObject *index=PyTuple_GET_ITEM(pair,0),*value=PyTuple_GET_ITEM(pair,1); + if(!PyLong_CheckExact(index)){PyErr_SetString(PyExc_TypeError,"integer source site");goto fail;} + Py_ssize_t i=PyLong_AsSsize_t(index);if(PyErr_Occurred())goto fail; + PyObject *zeroarg=PyLong_FromLong(0);if(!zeroarg)goto fail; + PyObject *zero=PyObject_CallOneArg(s->fraction,zeroarg);Py_DECREF(zeroarg);if(!zero)goto fail; + PyObject *old=PyDict_GetItemWithError(dst,index); + if(old){Py_INCREF(old);Py_DECREF(zero);}else if(PyErr_Occurred()){Py_DECREF(zero);goto fail;}else old=zero; + result=contribution(e,old,value,i);Py_DECREF(old);if(!result)goto fail; + for(int k=0;k<3;k++){ + PyObject *score=PyList_GetItem(scores,k); + if(!score)goto fail; + Py_INCREF(score); + PyObject *next=PyNumber_InPlaceAdd(score,PyTuple_GET_ITEM(result,k+1)); + Py_DECREF(score); + if(!next)goto fail; + if(PyList_SetItem(scores,k,next)<0)goto fail; + } + int truth=PyObject_IsTrue(PyTuple_GET_ITEM(result,0)); + if(truth<0)goto fail; + if(truth){if(PyDict_SetItem(dst,index,PyTuple_GET_ITEM(result,0))<0)goto fail;} + else{ + PyObject *present=PyDict_GetItemWithError(dst,index); + if(present){if(PyDict_DelItem(dst,index)<0)goto fail;} + else if(PyErr_Occurred())goto fail; + } + Py_CLEAR(result);Py_CLEAR(pair); + } + if(PyErr_Occurred())goto fail; + Py_DECREF(iterator);s->busy=0;Py_RETURN_NONE; +fail:Py_XDECREF(result);Py_XDECREF(pair);Py_XDECREF(iterator);s->busy=0;return NULL; +} +static PyMethodDef cache_methods[]={{"event",(PyCFunction)cache_event,METH_O,"Fresh scalar context."},{"statistics",(PyCFunction)cache_statistics,METH_NOARGS,"Full counters."},{NULL,NULL,0,NULL}}; +static PyMethodDef event_methods[]={{"apply",(PyCFunction)event_apply,METH_VARARGS,"Same coefficient loop and Python numeric operations."},{NULL,NULL,0,NULL}}; +static PyTypeObject CacheType={PyVarObject_HEAD_INIT(NULL,0) + .tp_name="_fraction_native.Cache",.tp_basicsize=sizeof(Cache),.tp_flags=Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_GC, + .tp_new=cache_new,.tp_dealloc=(destructor)cache_dealloc,.tp_traverse=(traverseproc)cache_traverse,.tp_clear=(inquiry)cache_clear,.tp_methods=cache_methods}; +static PyTypeObject EventType={PyVarObject_HEAD_INIT(NULL,0) + .tp_name="_fraction_native.Event",.tp_basicsize=sizeof(Event),.tp_flags=Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_GC|Py_TPFLAGS_HAVE_VECTORCALL, + .tp_new=event_disabled,.tp_dealloc=(destructor)event_dealloc,.tp_traverse=(traverseproc)event_traverse,.tp_clear=(inquiry)event_clear, + .tp_call=PyVectorcall_Call,.tp_vectorcall_offset=offsetof(Event,vectorcall),.tp_methods=event_methods}; +static struct PyModuleDef module={PyModuleDef_HEAD_INIT,"_fraction_native","Bounded cache; exact Python arithmetic.",-1,NULL}; +PyMODINIT_FUNC PyInit__fraction_native(void){ + if(PyType_Ready(&CacheType)<0||PyType_Ready(&EventType)<0)return NULL; + PyObject *m=PyModule_Create(&module);if(!m)return NULL; + if(PyModule_AddObjectRef(m,"Cache",(PyObject *)&CacheType)<0){Py_DECREF(m);return NULL;} + return m; +} diff --git a/research/fraction-native-score-dispatch-feasibility/runtime_binding.py b/research/fraction-native-score-dispatch-feasibility/runtime_binding.py new file mode 100644 index 0000000000..4f7c0a31f3 --- /dev/null +++ b/research/fraction-native-score-dispatch-feasibility/runtime_binding.py @@ -0,0 +1,100 @@ +"""Authenticate the exact same Fraction addition branch, or retain generic +=. + +No standard-library mutation or alternative rational arithmetic. Source/runtime +inspection and controls by Chris R / Clear1nsight with substantial Codex/Astra +assistance; original arithmetic remains its credited Python/Fraction authors. +""" +import builtins +from fractions import Fraction as F +from hashlib import sha256 +import json +import math +import operator +from pathlib import Path +from types import FunctionType +from table_parent import code_shape + +EXPECTED=json.loads(Path(__file__).with_name('RUNTIME-SHAPES.json').read_text())['functions'] + + +def raw_function(name): + value=F.__dict__.get(name) + if type(value) is FunctionType: + return value + if name=='__new__' and type(value) is staticmethod: + function=value.__func__ + if type(function) is FunctionType:return function + if name=='_from_coprime_ints' and type(value) is classmethod: + function=value.__func__ + if type(function) is FunctionType:return function + raise ValueError('ordinary authenticated descriptor '+name) + + +def state_token(): + """Identity-only trace-entry freshness; never invoke foreign descriptors.""" + try: + values=[] + for name in EXPECTED: + fn=raw_function(name);g=fn.__globals__;b=fn.__builtins__ + if type(b) is not dict:return None + values.extend((F.__dict__[name],fn,fn.__code__,fn.__defaults__,fn.__kwdefaults__,g,b,g.get('Fraction'),g.get('math'))) + for key in ('isinstance','super','int','abs'): + values.append(g.get(key,b.get(key))) + for cell in fn.__closure__ or (): + values.append(cell.cell_contents) + for cls in F.__mro__: + values.extend((cls,'__iadd__' in cls.__dict__,cls.__dict__.get('__iadd__'),'__new__' in cls.__dict__,cls.__dict__.get('__new__'))) + values.append(math.gcd) + return tuple(values) + except (ValueError,AttributeError,TypeError,KeyError):return None + + +def still_current(token): + current=state_token() + return token is not None and current is not None and len(token)==len(current) and all(a is b for a,b in zip(token,current)) + + +def bind_kernel(strict=False): + try: + if any('__iadd__' in cls.__dict__ for cls in F.__mro__): + raise ValueError('no distinct Fraction augmented assignment') + functions={} + for name,expected in EXPECTED.items(): + value=raw_function(name) + if type(value) is not FunctionType or sha256(repr(code_shape(value.__code__)).encode()).hexdigest()!=expected: + raise ValueError('known live Fraction executable '+name) + functions[name]=value + forward=functions['__add__'];kernel=functions['_add'] + cells=dict(zip(forward.__code__.co_freevars,forward.__closure__ or ())) + if set(cells)!={'fallback_operator','monomorphic_operator'}: + raise ValueError('exact addition closure fields') + if cells['monomorphic_operator'].cell_contents is not kernel or cells['fallback_operator'].cell_contents is not operator.add: + raise ValueError('addition closure uses this exact kernel') + for fn in functions.values(): + g=fn.__globals__ + if g.get('Fraction') is not F or g.get('math') is not math: + raise ValueError('standard Fraction and math globals') + b=fn.__builtins__ + b=vars(b) if b is builtins else b + if type(b) is not dict: + raise ValueError('ordinary builtin mapping') + for name in ('isinstance','super','int','abs'): + if g.get(name,b.get(name)) is not getattr(builtins,name): + raise ValueError('standard builtin '+name) + if type(math.gcd) is not type(operator.add) or math.gcd.__module__!='math' or math.gcd.__name__!='gcd': + raise ValueError('standard builtin gcd') + constructor=F.__dict__['_from_coprime_ints'] + if type(constructor) is not classmethod or constructor.__func__ is not functions['_from_coprime_ints']: + raise ValueError('Fraction classmethod allocator') + allocator=next((cls.__dict__['__new__'] for cls in F.__mro__[1:] if '__new__' in cls.__dict__),None) + if allocator is not object.__dict__['__new__']: + raise ValueError('standard inherited allocator') + for wrapper,operation,builtin in [('__mul__','_mul',operator.mul),('__sub__','_sub',operator.sub)]: + method=functions[wrapper] + mc=dict(zip(method.__code__.co_freevars,method.__closure__ or ())) + if set(mc)!={'fallback_operator','monomorphic_operator'} or mc['monomorphic_operator'].cell_contents is not functions[operation] or mc['fallback_operator'].cell_contents is not builtin: + raise ValueError('type-preserving branch '+wrapper) + return kernel + except (ValueError,AttributeError,TypeError,KeyError) as error: + if strict:raise ValueError('unsupported Fraction direct-add binding: '+str(error)) from error + return None diff --git a/research/fraction-native-score-dispatch-feasibility/table_parent.py b/research/fraction-native-score-dispatch-feasibility/table_parent.py new file mode 100644 index 0000000000..7f44b25859 --- /dev/null +++ b/research/fraction-native-score-dispatch-feasibility/table_parent.py @@ -0,0 +1,123 @@ +"""Per-trace bounded tabulation of pure exact Fraction contributions. + +Original arithmetic: Ali Romman and retained completed-error lineage. +New table/derivation: Chris R / Clear1nsight, substantial OpenAI Codex assistance. +Apache-2.0. No approximate or shared integer-backend arithmetic. +""" +from contextlib import contextmanager +from collections import OrderedDict +from fractions import Fraction as F +from hashlib import sha256 +import inspect +from pathlib import Path +from types import CodeType + +MODULE_SHA256='a4c743e79c55e9c2ac26deb6d87cb948b1b0fbe942e4f7912ccbfba55db4b32a' +FUNCTION_SHA256='379c0e7c1c5ab7433ab5ad2669c1bda1234dbf0530fc61b21bfbe83528f37f53' +CAPACITY=16384 +BEFORE=''' value = old + q*v + change = abs(value)-abs(old) + scores[r][0] += change*weights[i][0] + scores[r][1] += change*weights[i][1] + scores[r][2] += change +''' +AFTER=''' value, increment_a, increment_c, change = contributions.step( + old, q, v, weights[i][0], weights[i][1]) + scores[r][0] += increment_a + scores[r][1] += increment_c + scores[r][2] += change +''' + + +def need(ok,message): + if not ok: + raise ValueError(message) + + +class Contributions: + def __init__(self,capacity=CAPACITY): + need(type(capacity) is int and 0<=capacity<=CAPACITY,'bounded integer table capacity') + self.capacity=capacity + self.table=OrderedDict() + self.calls=self.hits=self.misses=self.evictions=self.bypasses=0 + + @staticmethod + def compute(old,q,v,a,c): + value=old+q*v + change=abs(value)-abs(old) + return value,change*a,change*c,change + + def step(self,old,q,v,a,c): + self.calls+=1 + if not self.capacity or not all(type(x) is F for x in (old,q,v,a,c)): + self.bypasses+=1 + return self.compute(old,q,v,a,c) + key=(old.numerator,old.denominator,q.numerator,q.denominator, + v.numerator,v.denominator,a.numerator,a.denominator,c.numerator,c.denominator) + result=self.table.get(key) + if result is not None: + self.hits+=1 + return result + self.misses+=1 + result=self.compute(old,q,v,a,c) + if len(self.table)>=self.capacity: + self.table.popitem(last=False) + self.evictions+=1 + self.table[key]=result + return result + + def statistics(self): + return dict(calls=self.calls,hits=self.hits,misses=self.misses, + evictions=self.evictions,bypasses=self.bypasses, + resident=len(self.table),capacity=self.capacity) + + +def code_shape(code): + constants=tuple(code_shape(c) if isinstance(c,CodeType) else c for c in code.co_consts) + return (code.co_code,constants,code.co_names,code.co_varnames,code.co_argcount, + code.co_posonlyargcount,code.co_kwonlyargcount,code.co_flags, + code.co_freevars,code.co_cellvars,code.co_name,code.co_stacksize, + code.co_nlocals,code.co_exceptiontable) + + +def transformed(raw): + need(sha256(raw.encode()).hexdigest()==FUNCTION_SHA256,'exact Fraction function source') + need(raw.count(BEFORE)==1,'one exact Fraction contribution block') + value=raw.replace(BEFORE,AFTER) + seam=" n = word['public'] + word['owned_fields']\n" + need(value.count(seam)==1,'one exact Fraction setup seam') + value=value.replace(seam,seam+' _contribution_report(None)\n contributions = _contribution_factory()\n') + seam=' return dict(rounded=sorted(rounded), sites=sites, peaks=peaks, pareto=pareto,\n' + need(value.count(seam)==1,'one exact Fraction return seam') + return value.replace(seam,' _contribution_report(contributions.statistics())\n'+seam) + + +def derive(reference,capacity=CAPACITY): + need(type(capacity) is int and 0<=capacity<=CAPACITY,'bounded integer table capacity') + need(reference.F is F,'exact standard Fraction type') + need(sha256(Path(reference.__file__).read_bytes()).hexdigest()==MODULE_SHA256,'exact Fraction module bytes') + original=reference.error_trace + raw=inspect.getsource(original) + text=transformed(raw) + namespace=dict(reference.__dict__) + exec(compile(raw,'','exec'),namespace) + need(code_shape(original.__code__)==code_shape(namespace['error_trace'].__code__),'live Fraction code agrees with source') + need(original.__defaults__ is None and original.__kwdefaults__ is None and original.__closure__ is None,'ordinary Fraction function') + last=[None] + def report(value):last[0]=None if value is None else dict(value) + namespace.update(_contribution_factory=lambda:Contributions(capacity),_contribution_report=report) + exec(compile(text,'','exec'),namespace) + result=namespace['error_trace'] + result.statistics=lambda:None if last[0] is None else dict(last[0]) + return result + + +@contextmanager +def installed(reference,capacity=CAPACITY): + original=reference.error_trace + derived=derive(reference,capacity) + reference.error_trace=derived + try: + yield derived + finally: + reference.error_trace=original From 3ed05e3ebf48c0ea507b9819dad30898942d4ca8 Mon Sep 17 00:00:00 2001 From: d3lerium Date: Tue, 27 Oct 2026 21:37:00 +1100 Subject: [PATCH 3/3] Archive scoped negative native score-dispatch feasibility --- .../.gitignore | 3 + .../FINITE-SOURCE.json | 5 + .../NOTICE | 11 ++ .../PARENT-SCORE-LOOP.txt | 9 ++ .../PROBE-SOURCE.json | 6 + .../PROOF.md | 11 ++ .../README.md | 44 ++++++ .../RESULT.json | 17 +++ .../SCREEN.json | 138 ++++++++++++++++++ .../SOURCES.json | 56 +++++++ .../TASK.json | 60 ++++++++ .../VALIDATION.json | 17 +++ .../VERIFY.json | 24 +++ .../evidence/INTAKE.json | 10 ++ .../evidence/PLAN.json | 27 ++++ .../PUBLICATION-HARNESS-CORRECTION.json | 9 ++ .../evidence/PUBLICATION-SETUP.json | 8 + .../evidence/ROUND2-NOMINATION.json | 93 ++++++++++++ .../evidence/ROUND2-NOMINATION.md | 38 +++++ .../evidence/ROUND2-STOP-REVIEW.json | 84 +++++++++++ .../evidence/ROUND2-STOP-REVIEW.md | 45 ++++++ .../VERIFY-ISOLATED-FUNCTION-DRAFT.py.txt | 39 +++++ .../evidence/parent-complete/C1/receipt.json | 26 ++++ .../evidence/parent-complete/C2/receipt.json | 26 ++++ .../evidence/parent-complete/C3/receipt.json | 26 ++++ .../evidence/runtime/dispatch.py | 8 + .../evidence/runtime/guard.py | 120 +++++++++++++++ .../runs/micro-native-direct-add/receipt.json | 26 ++++ .../runs/micro-native-direct-add/stderr.txt | 0 .../runs/micro-native-direct-add/stdout.txt | 5 + .../runs/micro-native-direct-add/usage.json | 1 + .../receipt.json | 26 ++++ .../stderr.txt | 0 .../stdout.txt | 2 + .../usage.json | 1 + .../receipt.json | 26 ++++ .../packaged-score-context-finite/stderr.txt | 0 .../packaged-score-context-finite/stdout.txt | 2 + .../packaged-score-context-finite/usage.json | 1 + .../runs/packaged-score-finite/receipt.json | 23 +++ .../runs/packaged-score-finite/stderr.txt | 10 ++ .../runs/packaged-score-finite/stdout.txt | 0 .../runs/packaged-score-finite/usage.json | 2 + .../micro.py | 102 +++++++++++++ .../probe_backend.py | 61 ++++++++ .../score_probe.c | 63 ++++++++ .../verify.py | 42 ++++++ 47 files changed, 1353 insertions(+) create mode 100644 research/fraction-native-score-dispatch-feasibility/.gitignore create mode 100644 research/fraction-native-score-dispatch-feasibility/FINITE-SOURCE.json create mode 100644 research/fraction-native-score-dispatch-feasibility/NOTICE create mode 100644 research/fraction-native-score-dispatch-feasibility/PARENT-SCORE-LOOP.txt create mode 100644 research/fraction-native-score-dispatch-feasibility/PROBE-SOURCE.json create mode 100644 research/fraction-native-score-dispatch-feasibility/PROOF.md create mode 100644 research/fraction-native-score-dispatch-feasibility/README.md create mode 100644 research/fraction-native-score-dispatch-feasibility/RESULT.json create mode 100644 research/fraction-native-score-dispatch-feasibility/SCREEN.json create mode 100644 research/fraction-native-score-dispatch-feasibility/SOURCES.json create mode 100644 research/fraction-native-score-dispatch-feasibility/TASK.json create mode 100644 research/fraction-native-score-dispatch-feasibility/VALIDATION.json create mode 100644 research/fraction-native-score-dispatch-feasibility/VERIFY.json create mode 100644 research/fraction-native-score-dispatch-feasibility/evidence/INTAKE.json create mode 100644 research/fraction-native-score-dispatch-feasibility/evidence/PLAN.json create mode 100644 research/fraction-native-score-dispatch-feasibility/evidence/PUBLICATION-HARNESS-CORRECTION.json create mode 100644 research/fraction-native-score-dispatch-feasibility/evidence/PUBLICATION-SETUP.json create mode 100644 research/fraction-native-score-dispatch-feasibility/evidence/ROUND2-NOMINATION.json create mode 100644 research/fraction-native-score-dispatch-feasibility/evidence/ROUND2-NOMINATION.md create mode 100644 research/fraction-native-score-dispatch-feasibility/evidence/ROUND2-STOP-REVIEW.json create mode 100644 research/fraction-native-score-dispatch-feasibility/evidence/ROUND2-STOP-REVIEW.md create mode 100644 research/fraction-native-score-dispatch-feasibility/evidence/VERIFY-ISOLATED-FUNCTION-DRAFT.py.txt create mode 100644 research/fraction-native-score-dispatch-feasibility/evidence/parent-complete/C1/receipt.json create mode 100644 research/fraction-native-score-dispatch-feasibility/evidence/parent-complete/C2/receipt.json create mode 100644 research/fraction-native-score-dispatch-feasibility/evidence/parent-complete/C3/receipt.json create mode 100644 research/fraction-native-score-dispatch-feasibility/evidence/runtime/dispatch.py create mode 100644 research/fraction-native-score-dispatch-feasibility/evidence/runtime/guard.py create mode 100644 research/fraction-native-score-dispatch-feasibility/evidence/runtime/runs/micro-native-direct-add/receipt.json create mode 100644 research/fraction-native-score-dispatch-feasibility/evidence/runtime/runs/micro-native-direct-add/stderr.txt create mode 100644 research/fraction-native-score-dispatch-feasibility/evidence/runtime/runs/micro-native-direct-add/stdout.txt create mode 100644 research/fraction-native-score-dispatch-feasibility/evidence/runtime/runs/micro-native-direct-add/usage.json create mode 100644 research/fraction-native-score-dispatch-feasibility/evidence/runtime/runs/packaged-score-context-finite-O/receipt.json create mode 100644 research/fraction-native-score-dispatch-feasibility/evidence/runtime/runs/packaged-score-context-finite-O/stderr.txt create mode 100644 research/fraction-native-score-dispatch-feasibility/evidence/runtime/runs/packaged-score-context-finite-O/stdout.txt create mode 100644 research/fraction-native-score-dispatch-feasibility/evidence/runtime/runs/packaged-score-context-finite-O/usage.json create mode 100644 research/fraction-native-score-dispatch-feasibility/evidence/runtime/runs/packaged-score-context-finite/receipt.json create mode 100644 research/fraction-native-score-dispatch-feasibility/evidence/runtime/runs/packaged-score-context-finite/stderr.txt create mode 100644 research/fraction-native-score-dispatch-feasibility/evidence/runtime/runs/packaged-score-context-finite/stdout.txt create mode 100644 research/fraction-native-score-dispatch-feasibility/evidence/runtime/runs/packaged-score-context-finite/usage.json create mode 100644 research/fraction-native-score-dispatch-feasibility/evidence/runtime/runs/packaged-score-finite/receipt.json create mode 100644 research/fraction-native-score-dispatch-feasibility/evidence/runtime/runs/packaged-score-finite/stderr.txt create mode 100644 research/fraction-native-score-dispatch-feasibility/evidence/runtime/runs/packaged-score-finite/stdout.txt create mode 100644 research/fraction-native-score-dispatch-feasibility/evidence/runtime/runs/packaged-score-finite/usage.json create mode 100644 research/fraction-native-score-dispatch-feasibility/micro.py create mode 100644 research/fraction-native-score-dispatch-feasibility/probe_backend.py create mode 100644 research/fraction-native-score-dispatch-feasibility/score_probe.c create mode 100644 research/fraction-native-score-dispatch-feasibility/verify.py diff --git a/research/fraction-native-score-dispatch-feasibility/.gitignore b/research/fraction-native-score-dispatch-feasibility/.gitignore new file mode 100644 index 0000000000..4446e4135a --- /dev/null +++ b/research/fraction-native-score-dispatch-feasibility/.gitignore @@ -0,0 +1,3 @@ +__pycache__/ +work/ +*.so diff --git a/research/fraction-native-score-dispatch-feasibility/FINITE-SOURCE.json b/research/fraction-native-score-dispatch-feasibility/FINITE-SOURCE.json new file mode 100644 index 0000000000..21e6de8403 --- /dev/null +++ b/research/fraction-native-score-dispatch-feasibility/FINITE-SOURCE.json @@ -0,0 +1,5 @@ +{ + "function_sha256": "b05f469b8a6fe9a725ac59ba0e6171e86a4906c8929883a54862cf9b2605c6e4", + "boundary": "after all ten probe correctness controls; before fixed timing arms", + "module_sha256": "ad34e00ad7d0a9f192f4e3e89b1b7cc3b45d27d10063fa2dc1937e101cf60c09" +} diff --git a/research/fraction-native-score-dispatch-feasibility/NOTICE b/research/fraction-native-score-dispatch-feasibility/NOTICE new file mode 100644 index 0000000000..14c41af625 --- /dev/null +++ b/research/fraction-native-score-dispatch-feasibility/NOTICE @@ -0,0 +1,11 @@ +Fraction arithmetic primitive profile and bounded contribution-table feasibility +============================================================================ +Original Fraction/error arithmetic: Ali Romman, retaining Adam Gall/ywz65/PR2878, PR5826/5819, Mason Hale/PR5811 and all P104/native/compiler/precision notices. Full PR5848, PR5831 and nested source archives are unchanged. Apache-2.0. + +New primitive profiling, exact local table, finite/key/capacity/failure checks and complete-cost screen: Chris R / Clear1nsight, substantial OpenAI Codex assistance; no subagents or independent human/kernel acceptance. Memoization is a standard technique. PR5848/5839 supply the qualifier/Linux baseline; PR5816/5818/5832/5761 retain tooling and test-repair credit with original authorship. The prior zero/unit negative artifact71f22c77b393e5cc14925c771894dc1a92c8443c supplies source-binding and finite-fixture lineage. No complete performance or kappa improvement is claimed. + +Source-bound entry type gate: Chris R / Clear1nsight with substantial OpenAI Codex assistance; no independent human or proof-kernel acceptance. Parent table/finite bytes retained exactly from df9dc4c89b31494f1390d16b9ca2a15e5946e853 (PR5852). Publication agents handled only earlier branches, not this scientific test. + +Native cache/context, source-bound slot/compact-key integration and complete cold-build qualifier: Chris R / Clear1nsight with substantial OpenAI Codex assistance and GPT-6-astra xhigh static review. The original Fraction miss arithmetic and independent exact integer engine are unchanged. C API/reference-counting/memoization are standard techniques. Preserve all inherited authors and Apache-2.0 notices. The C helper is new code; it does not port CPython arithmetic. Local measured timings are not a universal speedup or hosted performance validation. No kappa claim. + +Scoped native score-dispatch probe: Chris R / Clear1nsight with substantial OpenAI Codex assistance; Astra static nomination/stop review only. Original Python Fraction._add is called, not ported. No new complete or kappa gain. Parent native/source authorship retained. Apache-2.0. diff --git a/research/fraction-native-score-dispatch-feasibility/PARENT-SCORE-LOOP.txt b/research/fraction-native-score-dispatch-feasibility/PARENT-SCORE-LOOP.txt new file mode 100644 index 0000000000..e8b391931e --- /dev/null +++ b/research/fraction-native-score-dispatch-feasibility/PARENT-SCORE-LOOP.txt @@ -0,0 +1,9 @@ + for(int k=0;k<3;k++){ + PyObject *score=PyList_GetItem(scores,k); + if(!score)goto fail; + Py_INCREF(score); + PyObject *next=PyNumber_InPlaceAdd(score,PyTuple_GET_ITEM(result,k+1)); + Py_DECREF(score); + if(!next)goto fail; + if(PyList_SetItem(scores,k,next)<0)goto fail; + } diff --git a/research/fraction-native-score-dispatch-feasibility/PROBE-SOURCE.json b/research/fraction-native-score-dispatch-feasibility/PROBE-SOURCE.json new file mode 100644 index 0000000000..9af43a876f --- /dev/null +++ b/research/fraction-native-score-dispatch-feasibility/PROBE-SOURCE.json @@ -0,0 +1,6 @@ +{ + "sha256": "ac5d282405e74f1f8cc4cddb768485709057d249dae370a16c063ab45327c2ea", + "parent_native_sha256": "78ed2e240ee40ce4989a4718e77e8b3967b092d2bf8c900124a26942c98a14cb", + "parent_loop_sha256": "b3dfa3aadae31d008309bc91fae06fab3aef86dd899dcbc34156cdff835d91e0", + "source_seam": "Exact retained parent three-score loop; only direct arm changes PyNumber_InPlaceAdd selection, with exact type guards and separate counts." +} diff --git a/research/fraction-native-score-dispatch-feasibility/PROOF.md b/research/fraction-native-score-dispatch-feasibility/PROOF.md new file mode 100644 index 0000000000..8b87ad8bed --- /dev/null +++ b/research/fraction-native-score-dispatch-feasibility/PROOF.md @@ -0,0 +1,11 @@ +# Scope of the finite probe and stopping rule + +The prototype copies the literal three-score C loop from authenticated PR5864 source. The generic arm preserves each checked score retrieval, owned reference, PyNumber_InPlaceAdd, decref and stealing list store. The direct arm changes only call selection at these sites, requiring both operands to be exactly the supplied Fraction class before vectorcalling the existing bound Python kernel. Other operands retain generic augmented assignment. Direct errors propagate without retry, with already completed score stores preserved. Both loops retain owned score references and checked stores around callbacks; immutable tuple arguments own the increments throughout the call. + +The checked wrapper binds the original existing Fraction addition code/closure/globals, constructor helpers and relevant MRO entries, with trace-entry freshness. Stable qualified runtime/operands are semantic premises. Raw packet type checks alone do not certify an arbitrary supplied function. The 33 prefix cases compare every complete score/type with ordinary Python addition, and ten controls test the native branch and error/fallback boundaries. These are finite probe checks; no full Cache/Event caller or all-input native proof is asserted. + +The registered verifier authenticates the complete parent archive and literal source loop, binds the live measured probe function to its unchanged source, and truncates only at the unique boundary after all ten controls and before any timing. Thus fresh finite replay repeats every probe correctness assertion while the historical timing observations remain evidence, not a flaky test condition. The probe source, C source, binder, shapes and all original observations are retained. + +The declared decision rule asks whether conservative illustrative gross saving can cover a nonnegative incremental full validation/build bill plus observed complete-parent variability. Its retained smaller-pair illustration is 0.187220978 wall / 0.187227513 CPU seconds, below the parent complete ranges 0.460568479 / 0.45. Even setting the unbuilt additional bill to zero gives negative margins. This justifies a scoped engineering stop before further integration. Synthetic scaling is not a true-gain upper bound, so this is not an impossibility theorem or a claim that a different benchmark cannot perform better. + +All four timing samples, their source inventory, cold build bill, raw narrower PASS status, the 33-versus-32 prose correction and the direct arm's per-add counter cost remain. A source reviewer independently checked receipt arithmetic but ran no numerical experiment. No performance sample was rerolled or discarded, and no work was added to the frozen successful PR5864 implementation. diff --git a/research/fraction-native-score-dispatch-feasibility/README.md b/research/fraction-native-score-dispatch-feasibility/README.md new file mode 100644 index 0000000000..2789395746 --- /dev/null +++ b/research/fraction-native-score-dispatch-feasibility/README.md @@ -0,0 +1,44 @@ +# Scoped stop for a native Fraction score-dispatch probe + +A fixed native B,C,C,B micro passes 33 prefix comparisons and ten functional/source-binding controls, and both paired micro comparisons improve. Its smaller paired difference illustrates only **0.187221 wall / 0.187228 CPU seconds** when scaled to the frozen 7,739,250 score-addition sites. This is below PR5864's observed complete candidate ranges of **0.460568 wall / 0.45 CPU seconds**, before any new full validation cost. Stop before full-control integration, actual audit or complete construction. + +This is an engineering screen for this probe, not a bound on true native gain, a universal obstruction or a measured complete saving. [PR #5864](https://github.com/CrocSwap/integer-mult-bounds/pull/5864)'s validated 19.12% wall / 18.82% CPU improvement remains unchanged. Kappa research stays paused. + +## Question and source boundary + +Can calling the existing, authenticated Python Fraction._add directly from C pay its additional complete verification cost? The exact parent three-score loop is retained from PR5864 head `3f15c943e4ad6479f03e674c80fff1269a16ccfe`; the full official export is authenticated before finite replay. The direct arm adds exact operand-type guards, vectorcall to that same Python arithmetic routine and per-add dispatch counters. The generic arm retains PyNumber_InPlaceAdd and reports an aggregate count at exit. This counter asymmetry is paid in the measured probe and limits its interpretation. + +The actual native Cache/Event integration is not built. No new rational arithmetic, independent backend, fixture or accepted caller is introduced. The probe demonstrates only its declared native score-loop controls, not all original qualification obligations. The retained prior binder checks executable shapes, closure/global/MRO state and identity-only freshness; it refuses unknown runtime bindings without invoking foreign descriptors. + +## Fixed observations and stop + +Sixteen fixed increment triples cover zeros, signs, cancellation, common/coprime denominators and 128-bit numerators. Each arm runs 32,768 groups / 98,304 additions with fresh scores, in B,C,C,B order. Prefix comparisons and controls run before timing. All samples are retained: + +| Arm | Wall seconds | CPU seconds | +| --- | ---: | ---: | +| B1 | 0.083361725 | 0.082788980 | +| C1 | 0.067125316 | 0.067122706 | +| C2 | 0.067535516 | 0.067539532 | +| B2 | 0.069913598 | 0.069917697 | + +The smaller paired difference is 0.002378082 wall / 0.002378165 CPU seconds. Illustrative scaling gives the 0.187-second figures above. Assuming an optimistically zero additional validation bill, its margin against the recorded complete-parent range is **−0.273348 wall / −0.262772 CPU seconds**. The prescribed conservative screen fails. No extra timing permutation, dropped sample, actual replay or larger construction follows. The raw micro status remains `MICRO_PASS_REQUIRES_FULL_INCREMENTAL_COST_BILL`: its narrower functional/timing predicates passed; the later complete-cost screening rule stopped expansion. + +One scientific command cost 0.710 seconds wall, including cold C compilation, with no stderr and unchanged source bytes/modes. No automatic retry. The original 180-second command / 1 GiB sampled group RSS / 600-second initial / 1,500-second shared round limits remain. A first packaged finite replay rejected source authentication before native execution: compiling an isolated function changed its imported-module call opcodes. Complete-module source authentication and truncation preserve the compilation context; fresh normal/O finite replays pass, and the failed draft/receipt remain. No timing was repeated. The initial plan said 32 prefix comparisons; actual code includes the zero prefix and tests all 33 prefixes 0 through 32. This extra zero case and the counter asymmetry are documented without rerunning or inventing savings credit. + +## Reproduction and coverage + +```sh +python3 -B scripts/research_package.py --package research/fraction-native-score-dispatch-feasibility +``` + +Registered replay freshly compiles the probe and executes all 33 prefix comparisons and ten functional/binding controls, without repeating timings or asserting that a new host must reproduce the historical stop. It authenticates the complete parent archive, native source and literal score-loop boundary. Tested with Linux CPython 3.12.3 / GCC 13.3; existing `cc` and Python development headers are required. No install or silent native skip. + +The ten controls cover complete prefix values/types and branch counts, nonexact/custom and Fraction-subtype generic augmented assignment, nonexact increments, direct exceptions without retry and exact partial-update order, callback list mutation, invalid kernel packets, live kernel / present-None-iadd drift and complete runtime restoration. + +The original PR5864's 964 comparisons / 118 controls and complete qualification were not repeated in this rejected extension; their measured/published implementation is untouched. The planned 19 prior dispatch controls and new Cache/Event lifetime integration were not executed because the earlier screen did not justify that construction. Do not describe this probe as preserving a newly integrated complete caller. See [SCREEN.json](SCREEN.json), [PROOF.md](PROOF.md) and retained evidence. + +## Open next questions + +No further measured continuation is justified in this round. A separately proposed mechanism needs its own source/ownership/coverage/cost argument and a new fixed feasibility gate. Constructor-elision and descriptor-metadata ideas retain unpriced obligations; this stop does not exclude them or other future work. Keep the successfully measured PR5864 frozen while it is reviewed. + +Chris R / Clear1nsight with substantial OpenAI Codex assistance; GPT-6-astra xhigh performed static nomination/stop review only and no compiler or numerical work. Original arithmetic remains Python Fraction and all credited Ali Romman/P104/native/tooling predecessors. Standard dispatch/C API techniques. Apache-2.0; no kappa, merge or selected-frontier change. diff --git a/research/fraction-native-score-dispatch-feasibility/RESULT.json b/research/fraction-native-score-dispatch-feasibility/RESULT.json new file mode 100644 index 0000000000..03a8dc84a1 --- /dev/null +++ b/research/fraction-native-score-dispatch-feasibility/RESULT.json @@ -0,0 +1,17 @@ +{ + "prefix_cases": 33, + "controls": [ + "all-33-prefix-values-types-and-branches", + "nonexact-custom-score-generic-iadd", + "Fraction-subtype-generic-iadd", + "nonexact-increment-generic", + "direct-error-no-retry-partial-update-order", + "callback-score-list-mutation-safe", + "nonfunction-kernel-packet-rejected", + "kernel-binding-drift", + "present-none-iadd-drift", + "runtime-restored-before-timing" + ], + "control_count": 10, + "runtime_current": true +} diff --git a/research/fraction-native-score-dispatch-feasibility/SCREEN.json b/research/fraction-native-score-dispatch-feasibility/SCREEN.json new file mode 100644 index 0000000000..7620ca625a --- /dev/null +++ b/research/fraction-native-score-dispatch-feasibility/SCREEN.json @@ -0,0 +1,138 @@ +{ + "decision": "STOP_NATIVE_DIRECT_ADD_BEFORE_ACTUAL_OR_COMPLETE_CONSTRUCTION", + "micro": { + "additions_per_arm": 98304, + "build": { + "SOABI": "cpython-312-x86_64-linux-gnu", + "binary_sha256": "2539108f782328dcf75f477e6fa085235fa42a327743c97c1c16a4397c67ec95", + "cold_build_load_wall_seconds": 0.1481919409998227, + "compiler": "/usr/bin/cc", + "compiler_cpu_accounting": "outer GNU time user+system includes compiler children", + "compiler_version": "cc (Ubuntu 13.3.0-6ubuntu2~24.04.1) 13.3.0", + "extension_suffix": ".cpython-312-x86_64-linux-gnu.so", + "flags": [ + "-O2", + "-shared", + "-fPIC", + "-std=c11", + "-Wall", + "-Werror", + "-I/usr/include/python3.12" + ], + "python": "3.12.3 (main, Aug 31 2026, 10:18:26) [GCC 13.3.0]", + "source_sha256": "ac5d282405e74f1f8cc4cddb768485709057d249dae370a16c063ab45327c2ea" + }, + "control_count": 10, + "controls": [ + "all-33-prefix-values-types-and-branches", + "nonexact-custom-score-generic-iadd", + "Fraction-subtype-generic-iadd", + "nonexact-increment-generic", + "direct-error-no-retry-partial-update-order", + "callback-score-list-mutation-safe", + "nonfunction-kernel-packet-rejected", + "kernel-binding-drift", + "present-none-iadd-drift", + "runtime-restored-before-timing" + ], + "fixed_order": "BCCB", + "groups_per_arm": 32768, + "illustrative_gross_only": { + "cpu_seconds": 0.18722751338958643, + "wall_seconds": 0.18722097821499695 + }, + "no_actual_or_complete_construction": true, + "not_a_full_trace_projection_or_improvement": true, + "observations": [ + { + "counts": [ + 0, + 98304 + ], + "cpu_seconds": 0.08278898000000001, + "label": "B", + "terminal_scores": [ + "2/3", + "-5/7", + "11/13" + ], + "wall_seconds": 0.08336172500276007 + }, + { + "counts": [ + 98304, + 0 + ], + "cpu_seconds": 0.06712270600000003, + "label": "C", + "terminal_scores": [ + "2/3", + "-5/7", + "11/13" + ], + "wall_seconds": 0.06712531601078808 + }, + { + "counts": [ + 98304, + 0 + ], + "cpu_seconds": 0.06753953200000001, + "label": "C", + "terminal_scores": [ + "2/3", + "-5/7", + "11/13" + ], + "wall_seconds": 0.06753551599103957 + }, + { + "counts": [ + 0, + 98304 + ], + "cpu_seconds": 0.069917697, + "label": "B", + "terminal_scores": [ + "2/3", + "-5/7", + "11/13" + ], + "wall_seconds": 0.06991359798121266 + } + ], + "paired_differences": { + "cpu_seconds": [ + 0.01566627399999998, + 0.0023781649999999876 + ], + "wall_seconds": [ + 0.016236408991971985, + 0.0023780819901730865 + ] + }, + "runtime_current": true, + "status": "MICRO_PASS_REQUIRES_FULL_INCREMENTAL_COST_BILL" + }, + "comparison_model": { + "gross": "Conservative smaller paired micro difference, illustratively scaled to source score count; not a bound on true actual saving.", + "additional_cost_assumed_seconds": 0, + "additional_cost_scope": "Optimistically zero to reject further expansion without building/measuring the full additional control union.", + "parent_complete_C_spread": { + "wall_seconds": 0.4605684790003579, + "cpu_seconds": 0.45000000000000284 + }, + "modeled_margin_before_any_new_cost": { + "wall_seconds": -0.27334750078536096, + "cpu_seconds": -0.2627724866104164 + } + }, + "why": "Even zero-cost illustrative saving fails the prespecified observed full-parent spread in wall and CPU. Both micro pairs improve but evidence does not justify further expansion. No timing reroll or sample omission.", + "not_a_universal_obstruction": true, + "not_a_complete_measurement": true, + "no_new_kappa": true, + "actual_audits": 0, + "complete_candidates": 0, + "scientific_command_count": 1, + "guarded_wall_seconds": 0.709715356992092 +} diff --git a/research/fraction-native-score-dispatch-feasibility/SOURCES.json b/research/fraction-native-score-dispatch-feasibility/SOURCES.json new file mode 100644 index 0000000000..77d0bb6300 --- /dev/null +++ b/research/fraction-native-score-dispatch-feasibility/SOURCES.json @@ -0,0 +1,56 @@ +{ + "schema_version": 1, + "base_commit": "de5ec2e7a6074068452f45b1a191b5c72832df4a", + "files": [ + { + "path": "docs/research/agent-task-catalog.json", + "usage": "provenance", + "git_blob": "3404fbdd5e7529a0674eef26114b5071e4586cec", + "sha256": "ead6cdc9d0af6d58e8a49744d8ec8c7c15e13d2ba93c276c434bcf9b51b93a81" + }, + { + "path": "certificates/selected-result.json", + "usage": "provenance", + "git_blob": "581f8d87008354eb5b869f7ed9de1317ad837ce8", + "sha256": "2a0220e866417774606e0f991e41b9c1d26b1f43b97857238cf478dbc7d330b5" + }, + { + "path": "research/fraction-native-score-dispatch-feasibility/inputs/PR5864.tar", + "usage": "input", + "git_blob": "bb9fc302168df0bf66cf43d08bce70544eeffc4e", + "sha256": "7b142567acacac5182045bf8daa8780e916661c2cf343dbf81b13c88ead85d64", + "pin": "head:dec843d2aebd0e66f2767aaac26d3db3f32a7226:research/fraction-native-score-dispatch-feasibility/inputs/PR5864.tar" + }, + { + "path": "research/fraction-native-score-dispatch-feasibility/native_parent.c", + "usage": "input", + "git_blob": "ada7b0d0bf999536b2c3a665d8845266b37d198b", + "sha256": "78ed2e240ee40ce4989a4718e77e8b3967b092d2bf8c900124a26942c98a14cb", + "pin": "head:dec843d2aebd0e66f2767aaac26d3db3f32a7226:research/fraction-native-score-dispatch-feasibility/native_parent.c" + }, + { + "path": "research/fraction-native-score-dispatch-feasibility/table_parent.py", + "usage": "input", + "git_blob": "7f44b25859e90d981587a53e9467284961f60a8f", + "sha256": "d598b8a757251c1e38ed77af6cc2aebe1b8ae23ad29ce06bff3ca973eb56dbc4", + "pin": "head:dec843d2aebd0e66f2767aaac26d3db3f32a7226:research/fraction-native-score-dispatch-feasibility/table_parent.py" + }, + { + "path": "research/fraction-native-score-dispatch-feasibility/runtime_binding.py", + "usage": "input", + "git_blob": "4f7c0a31f3c5e178d9817edcb746d26adfdc1250", + "sha256": "f2e74fef881cb49101338e40e2d84600e2c9d0e717dafb46a20d7217609d4c71", + "pin": "head:dec843d2aebd0e66f2767aaac26d3db3f32a7226:research/fraction-native-score-dispatch-feasibility/runtime_binding.py" + }, + { + "path": "research/fraction-native-score-dispatch-feasibility/RUNTIME-SHAPES.json", + "usage": "input", + "git_blob": "9d7406e48d01bd3c015110b57ce12e258e344a7b", + "sha256": "5a7080757fa132a2a45ad56a5e9319c938a352b1324c074cdccd9799c1aecdce", + "pin": "head:dec843d2aebd0e66f2767aaac26d3db3f32a7226:research/fraction-native-score-dispatch-feasibility/RUNTIME-SHAPES.json" + } + ], + "parent_pr": 5864, + "parent_archive_sha256": "7b142567acacac5182045bf8daa8780e916661c2cf343dbf81b13c88ead85d64", + "predecessor_binding": "Own prior direct-add feasibility runtime binder/shapes; retained as exact own-ancestor inputs, not independently authored mathematics." +} diff --git a/research/fraction-native-score-dispatch-feasibility/TASK.json b/research/fraction-native-score-dispatch-feasibility/TASK.json new file mode 100644 index 0000000000..9296bb8380 --- /dev/null +++ b/research/fraction-native-score-dispatch-feasibility/TASK.json @@ -0,0 +1,60 @@ +{ + "schema_version": 1, + "task_id": "replay-runtime", + "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", + "scope_change_reason": "Continuous user goal allowed a bounded further improvement nomination after the15% minimum. One fixed native score-loop probe passes finite checks but fails its conservative complete-cost/spread screen; no integration follows.", + "actual_scope": "PR5864/native-score-dispatch-micro-only", + "bottleneck_link": "Faster trustworthy replays increase review throughput and let mechanism candidates be checked sooner.", + "stop_rule": "Stop before full-control union, actual audit or complete construction. No reroll; preserve every sample. Same180s/1GiB/600sinitial1500sshared/serial/no-auto-retry contract.", + "time_budget_minutes": 60, + "outcome": "negative-result", + "evidence": "SCREEN.json, raw BCCB probe and source inventories;33 prefix comparisons/10 controls; no actual or complete candidate.", + "author": "Chris R / Clear1nsight", + "ai_assistance": "Substantial OpenAI Codex implementation/execution assistance and GPT-6-astra xhigh static nomination/stop review. Single parent numerical runner; no independent human or proof-kernel acceptance.", + "open_questions": [ + { + "question": "Can a separately justified mechanism pay its complete additional verification bill?", + "why_it_matters": "This fixed conservative probe screen lacks margin despite positive micro pairs; prior PR5864 minimum remains achieved.", + "first_step": "New exact source/coverage/resource contract and fixed small feasibility test; keep PR5864 frozen.", + "blocked_by": "No further measured continuation is justified by this round; deferred ideas carry unpriced obligations." + } + ], + "base_commit": "de5ec2e7a6074068452f45b1a191b5c72832df4a" +} diff --git a/research/fraction-native-score-dispatch-feasibility/VALIDATION.json b/research/fraction-native-score-dispatch-feasibility/VALIDATION.json new file mode 100644 index 0000000000..42fa1e5804 --- /dev/null +++ b/research/fraction-native-score-dispatch-feasibility/VALIDATION.json @@ -0,0 +1,17 @@ +{ + "scope": "Finite probe only; full caller and coverage integration not built", + "science_commands": 1, + "probe_controls": 10, + "prefix_cases": 33, + "guarded_wall_seconds": 0.709715356992092, + "actual_audits": 0, + "complete_candidates": 0, + "automatic_retries": 0, + "screen": "STOP even with zero added bill", + "source_before_after": true, + "all_four_timing_samples_retained": true, + "CI_claim": false, + "packaged_finite_normal_and_optimized": "PASS", + "retained_publication_harness_failure": "Isolated-function recompilation changed import-context opcodes; repaired by binding the complete original module, no scientific source or timing change.", + "all_guarded_attempts_preserved": true +} diff --git a/research/fraction-native-score-dispatch-feasibility/VERIFY.json b/research/fraction-native-score-dispatch-feasibility/VERIFY.json new file mode 100644 index 0000000000..500a51468e --- /dev/null +++ b/research/fraction-native-score-dispatch-feasibility/VERIFY.json @@ -0,0 +1,24 @@ +{ + "schema_version": 1, + "status": "ready", + "python": "3.12", + "requirements": [], + "inputs": [ + "research/fraction-native-score-dispatch-feasibility/inputs/PR5864.tar", + "research/fraction-native-score-dispatch-feasibility/native_parent.c", + "research/fraction-native-score-dispatch-feasibility/table_parent.py", + "research/fraction-native-score-dispatch-feasibility/runtime_binding.py", + "research/fraction-native-score-dispatch-feasibility/RUNTIME-SHAPES.json" + ], + "commands": [ + { + "argv": [ + "{python}", + "-B", + "{package}/verify.py" + ], + "timeout_seconds": 30, + "checks": "Fresh C compile; exact parent source/loop authentication; all33 prefix values/types and10 native binding/fallback/error controls. Does not rerun timings, integrate the full118-control parent chain, execute an actual word or claim complete speedup/kappa." + } + ] +} diff --git a/research/fraction-native-score-dispatch-feasibility/evidence/INTAKE.json b/research/fraction-native-score-dispatch-feasibility/evidence/INTAKE.json new file mode 100644 index 0000000000..8f6579d14a --- /dev/null +++ b/research/fraction-native-score-dispatch-feasibility/evidence/INTAKE.json @@ -0,0 +1,10 @@ +{ + "parent_pr": 5864, + "parent_head": "3f15c943e4ad6479f03e674c80fff1269a16ccfe", + "parent_archive_sha256": "7b142567acacac5182045bf8daa8780e916661c2cf343dbf81b13c88ead85d64", + "canonical_main": "de5ec2e7a6074068452f45b1a191b5c72832df4a", + "overlap": "Targeted main/PR5864 comments/Fraction-native-score search refreshed; only own source and predecessors. Bounded, not exhaustive.", + "status": "STATIC_NOMINATION_PENDING_NO_CONSTRUCTION", + "scientific_runs": 0, + "kappa": "PAUSED" +} diff --git a/research/fraction-native-score-dispatch-feasibility/evidence/PLAN.json b/research/fraction-native-score-dispatch-feasibility/evidence/PLAN.json new file mode 100644 index 0000000000..5e3cd9f470 --- /dev/null +++ b/research/fraction-native-score-dispatch-feasibility/evidence/PLAN.json @@ -0,0 +1,27 @@ +{ + "status": "ONE_NATIVE_MICRO_BEFORE_CONSTRUCTION", + "mechanism": "Source-bound C vectorcall to existing Fraction._add; no arithmetic port", + "parent_pr": 5864, + "parent_head": "3f15c943e4ad6479f03e674c80fff1269a16ccfe", + "canonical_main": "de5ec2e7a6074068452f45b1a191b5c72832df4a", + "micro": { + "triples": 16, + "groups_per_arm": 32768, + "score_additions_per_arm": 98304, + "order": "BCCB", + "adaptive_repetition": false + }, + "before_timing": "All32 prefix value/type comparisons, generic custom score dispatch, exception/no-retry and source/runtime binding controls must pass; record compiler/source/ABI", + "stop": "Stop if either paired wall/CPU comparison loses, or conservative illustrative gross saving cannot pay measured full incremental validation/build/binding costs plus spread. No actual/full construction before that gate.", + "coverage_future": "One inherited native suite covers964 comparisons/118 controls; map prior19 dispatch controls and distinct native branch/lifetime controls without duplicate suite.", + "caps": { + "command_seconds": 180, + "rss_bytes": 1073741824, + "initial_seconds": 600, + "shared_seconds": 1500, + "serial": true, + "automatic_retries": 0 + }, + "kappa": "PAUSED", + "scientific_runs": 0 +} diff --git a/research/fraction-native-score-dispatch-feasibility/evidence/PUBLICATION-HARNESS-CORRECTION.json b/research/fraction-native-score-dispatch-feasibility/evidence/PUBLICATION-HARNESS-CORRECTION.json new file mode 100644 index 0000000000..520328a296 --- /dev/null +++ b/research/fraction-native-score-dispatch-feasibility/evidence/PUBLICATION-HARNESS-CORRECTION.json @@ -0,0 +1,9 @@ +{ + "attempt": "runtime/runs/packaged-score-finite", + "failure": "Isolated function recompilation changed compiler call opcodes for an imported-module attribute, so live-code shape authentication rejected before any native compilation or correctness controls.", + "diagnostic": "Only co_code differed; recompiling the complete original module preserves its import binding compilation context.", + "manual_fix": "Authenticate the entire measured module plus function source; compile that complete module for live shape equality and preserve its module context when truncating only after every correctness control.", + "science_unchanged": true, + "timing_reruns": 0, + "automatic_retries": 0 +} diff --git a/research/fraction-native-score-dispatch-feasibility/evidence/PUBLICATION-SETUP.json b/research/fraction-native-score-dispatch-feasibility/evidence/PUBLICATION-SETUP.json new file mode 100644 index 0000000000..c559f2f202 --- /dev/null +++ b/research/fraction-native-score-dispatch-feasibility/evidence/PUBLICATION-SETUP.json @@ -0,0 +1,8 @@ +{ + "failure": "git switch attempted unavailable promisor blob despite same frozen starting head, failed DNS, and removed163 working package files before failing; no branch or remote head change.", + "secondary_setup": "Dependent mkdir failed because research directory had been removed; no candidate code was changed.", + "repair": "Restore all163 exact public package bytes/modes from verified public export; reinitialize full index and skip-worktree flags; create/ref-select new branch without checkout. Restored parent is clean.", + "no_missing_object_fetch": true, + "no_force_push": true, + "old_public_branch_unchanged": true +} diff --git a/research/fraction-native-score-dispatch-feasibility/evidence/ROUND2-NOMINATION.json b/research/fraction-native-score-dispatch-feasibility/evidence/ROUND2-NOMINATION.json new file mode 100644 index 0000000000..8403143748 --- /dev/null +++ b/research/fraction-native-score-dispatch-feasibility/evidence/ROUND2-NOMINATION.json @@ -0,0 +1,93 @@ +{ + "status": "STATIC_ONLY_NOMINATE_ONE_BOUNDED_NATIVE_DIRECT_ADD_SCREEN", + "date": "2026-10-27", + "selected_option": "b", + "mechanism": "C vectorcall to the existing authenticated Python Fraction._add at three score sites; exact operand guards and generic fallback", + "arithmetic_port": false, + "performance_improvement_demonstrated": false, + "complete_construction_approved": false, + "parent_reported_publication": { + "pull_request": 5864, + "head": "3f15c943e4ad6479f03e674c80fff1269a16ccfe", + "green_ci_run": "40480683014", + "independently_fetched_by_reviewer": false + }, + "parent_reported_complete_medians": { + "original_pull_request": 5848, + "original_wall_seconds": 40.516155579, + "original_cpu_seconds": 40.33, + "native_wall_seconds": 32.77129668, + "native_cpu_seconds": 32.74, + "wall_saving_percent": 19.1155, + "cpu_saving_percent": 18.8197, + "new_round_comparator": "fresh PR5864 native complete process", + "additional_fifteen_percent_requirement": false + }, + "retained_census": { + "coefficient_updates": 2579750, + "score_additions": 7739250, + "cache_hits": 2252966, + "cache_misses": 326784, + "cache_evictions": 310400, + "weight_tokens": 3587, + "destination_hit_count": null + }, + "deferred": { + "a": "Destination-hit count unknown; skipping construction expands allocation, callback and exception semantics obligations.", + "c": "Descriptor metadata, owner, offset, audit and lifetime proof adds risk and controls without measured economic margin." + }, + "runtime_boundary": "Existing qualified PR5864 domain plus successful source-shape/live-binding authentication and trace-entry freshness; runtime metadata stable during a trace; no arbitrary raw-callback equivalence claim", + "fallback": "Unknown or stale addition binding selects existing PR5864 checked behavior; nonexact score operands use PyNumber_InPlaceAdd; direct-call errors propagate without retry", + "new_native_obligations": [ + "strong optional kernel ownership and GC traverse/clear", + "exact Fraction operand guards at every direct addition", + "generic custom-score augmented-assignment behavior", + "native branch selection and full value/type equality", + "unsupported and stale binding fallback", + "kernel exception propagation without generic retry", + "partial update and error ordering retained" + ], + "coverage_execution": { + "inherited_suite_executions": 1, + "inherited_comparisons": 964, + "predecessor_native_controls": 118, + "prior_dispatch_controls": 19, + "rule": "Map every named obligation; do not invoke the old direct-add inherited suite a second time merely to reuse its dispatch controls", + "table_statistics": "Preserve the complete old dictionary and counter values; optional direct/fallback counts are separate" + }, + "proposed_micro": { + "coefficient_groups_per_arm": 32768, + "additions_per_arm": 98304, + "fixed_increment_triples": 16, + "order": ["B", "C", "C", "B"], + "implementation": "actual three-score C loop, unchanged generic and guarded vectorcall entry points", + "adaptive_repetition": false, + "scientific_receipt": false + }, + "economic_stop": "Stop unless both paired micro comparisons improve in wall and CPU and conservative illustrative scaling covers measured incremental complete controls/binding/build costs plus observed spread in both metrics. Only then one actual equivalence audit; complete construction requires a further measured net-positive screen.", + "final_acceptance": "Positive complete incremental wall and total CPU saving beyond PR5864 repeat variability after the new check/build bill; preserve >=15 percent in both metrics against PR5848; all inherited and new obligations retained", + "reviewer_actions": { + "scientific_runs": 0, + "compiler_runs": 0, + "external_posts": 0, + "measured_candidate_edits": 0, + "new_files": ["ROUND2-NOMINATION.md", "ROUND2-NOMINATION.json"] + }, + "inspected_local_sources": [ + {"path": "outputs/fraction-native-cache-20261027/feasibility/native_cache.c", "sha256": "78ed2e240ee40ce4989a4718e77e8b3967b092d2bf8c900124a26942c98a14cb"}, + {"path": "outputs/fraction-native-cache-20261027/feasibility/fraction_table.py", "sha256": "d70f8095002ffedb06fd6851e5b6d127e2f24c3ad31404130216345416159cf4"}, + {"path": "outputs/fraction-native-cache-20261027/feasibility/native_backend.py", "sha256": "f1fe0d4484ef86c7baa3a30c5d537950cb227b1979d825c61ab09ceead5f533d"}, + {"path": "outputs/fraction-native-cache-20261027/feasibility/slot_binding.py", "sha256": "f2f3193461b9f705a2683107c2305c40d2f82d9f1087a2af25cf9e88f45fc593"}, + {"path": "outputs/fraction-direct-add-20261027/feasibility/runtime_binding.py", "sha256": "f2e74fef881cb49101338e40e2d84600e2c9d0e717dafb46a20d7217609d4c71"}, + {"path": "outputs/fraction-direct-add-20261027/feasibility/RUNTIME-SHAPES.json", "sha256": "5a7080757fa132a2a45ad56a5e9319c938a352b1324c074cdccd9799c1aecdce"}, + {"path": "outputs/fraction-direct-add-20261027/feasibility/finite.py", "sha256": "ab1b35af378b2347dec12dfebe2562fb9c45c19a0c2b86db9077feb046563158"}, + {"path": "outputs/fraction-direct-add-20261027/SCREEN.json", "sha256": "429059e44df33949dbcd907b7a8e9df49120115ad3550076fa38a6e1b9615834"} + ], + "prior_micro_evidence": "outputs/fraction-direct-add-20261027/runtime/runs/micro-direct-add/stdout.txt", + "api_references": [ + "https://docs.python.org/3.12/c-api/call.html#c.PyObject_Vectorcall", + "https://docs.python.org/3.12/c-api/structures.html#c.PyMember_GetOne", + "https://github.com/python/cpython/blob/3.12/Objects/descrobject.c" + ], + "api_reference_boundary": "Moving documentation and branch explain APIs only; not the installed interpreter source pin" +} diff --git a/research/fraction-native-score-dispatch-feasibility/evidence/ROUND2-NOMINATION.md b/research/fraction-native-score-dispatch-feasibility/evidence/ROUND2-NOMINATION.md new file mode 100644 index 0000000000..d4ae725fbd --- /dev/null +++ b/research/fraction-native-score-dispatch-feasibility/evidence/ROUND2-NOMINATION.md @@ -0,0 +1,38 @@ +# Round 2: one bounded native direct-add nomination + +**Nominate (b), a direct call from C to the existing, authenticated Python `Fraction._add`, for finite and micro screening only.** This is a plausible incremental saving, not a measured native improvement or approval for complete construction. No arithmetic is ported. The reviewer performed only source inspection and wrote these two nomination files; no scientific run, compiler invocation, publication or measured-candidate edit occurred. + +The parent reports published PR5864 at `3f15c943e4ad6479f03e674c80fff1269a16ccfe`, green CI40480683014, and local complete medians of 32.771296680 wall / 32.74 CPU seconds versus 40.516155579 / 40.33 for the original PR5848 baseline. Those reported 19.1155% / 18.8197% savings already clear the user's 15% requirement. This round asks whether a further change pays its own complete costs against PR5864; it does not impose another 15% reduction. Publication and CI status were supplied by the parent, not independently fetched here. + +| Option | Remaining work it might remove | Decision | +| --- | --- | --- | +| (b) Existing `_add` from C | Three numeric dispatches and Python operator wrappers per coefficient update: 7,739,250 sites in the retained census. The native loop still calls `PyNumber_InPlaceAdd` at each site. | One bounded nomination. Known sites, an existing audited binding and reusable negative controls make a small net gain plausible. | +| (a) Delay `F(0)` until a destination miss | Some of the 2,579,750 eager constructor calls. The destination-hit count is not known; contribution-cache hits do not measure it. | Defer. A constructor-purity argument must cover metaclass call, initialization, allocation, setters and destruction, and explicitly delimit changed allocation/exception effects. Do not credit every constructor call or reuse the cache-hit percentage. | +| (c) `PyMember_GetOne` | Descriptor owner/audit dispatch around four member reads per coefficient update. | Defer. The public accessor accepts address/metadata; safely obtaining and retaining authenticated descriptor metadata adds full-CPython layout and lifetime obligations. Direct access must preserve applicable audit behavior and rule out wrong-owner/offset reads. No measured margin presently pays that proof. | + +The prior direct-add `SCREEN.json` remains a negative result for its old objective: the fixed Python BCCB micro gave about 0.78 seconds of illustrative gross scaling before added costs, insufficient to close the then-unmet 15% gap. That number is not transferable to the C loop. It supports only trying the bounded native screen below. + +## Exact supported boundary and implementation shape + +1. Start from PR5864's frozen native source, Linux CPython 3.12 build envelope, exact source/ABI receipt, certified input domain, qualified pure miss callback, canonical owned Fraction slots and original cache limits. Accept direct dispatch only when the prior `runtime_binding.py` executable-shape checks succeed on the live runtime. Reuse its complete authenticated function/closure/global/MRO predicates and its pure, identity-based freshness token; never substitute a source-file hash alone. Pin any copied binder and expected shapes. Authenticate ordinary raw function/static/classmethod descriptors before accessing their payloads. Require the known defaults/keyword-defaults/closure state relevant to invoked functions, the captured `__add__` monomorphic operator to be this kernel, and absence of `__iadd__` throughout the MRO, including a present `None` value. +2. Check both the inherited slot token and the addition token at each trace entry. Qualification assumes runtime metadata remains unchanged during that trace, as in the existing bounded packet contract. It does not certify concurrent or callback-driven monkey-patching during execution. Unknown code shapes, drift after derivation, foreign descriptors or unsupported inputs select the existing PR5864 checked path; its own rejection/fallback policy still applies. Qualification itself must not invoke foreign descriptors. +3. Change only the three score additions in `Event.apply`, in their existing order. With an owned optional kernel and **both operands exactly the qualified Fraction class**, call `PyObject_Vectorcall(kernel, argv, 2, NULL)`. Otherwise call the existing `PyNumber_InPlaceAdd`. The integer rounded-injection site stays untouched. Keep the original Fraction arithmetic, returned objects, contribution callback, zero construction, key, FIFO, iteration, score stores and scientific oracle. The [CPython call API](https://docs.python.org/3.12/c-api/call.html#c.PyObject_Vectorcall) supports this two-object call without constructing an argument tuple. +4. The cache must own the optional kernel reference, visit/clear it during GC, and release it on every constructor/error path. Preserve the existing strong score/result references and list-store ownership. A direct-call exception propagates immediately; **never retry it through generic addition**. The raw API defaults to generic addition, type-checks any optional function packet, and remains memory-safe for malformed inputs. A caller-supplied function is not thereby semantically certified: scientific eligibility belongs to the checked wrapper. Generic score objects retain their existing `__iadd__` behavior rather than acquiring a new exact-Fraction rejection. + +## Coverage mapping + +Retain the entire PR5864 finite chain and its full qualification/registered-verification boundaries. Execute the inherited suite once: all 964 comparisons and all 118 predecessor/native controls. Add the prior 19 dispatch controls and the new native seam obligations through an explicit coverage mapping; importing or calling the old direct-add suite must not rerun its inherited 964 comparisons. Verify the frozen manifests when assembling the union rather than treating counts as a substitute for named coverage. Preserve the original integer/reference finite programs, six source controls, reverse/literal checks, 27 Observation controls, complete receipts and the four separately registered custody controls. + +Reuse the prior direct-add arithmetic grid, dependent accumulation, live code/closure/global drift, subtraction-kernel, foreign-descriptor, MRO `__iadd__`, stale-after-derive, generic fallback and unchanged integer-injection controls. Map shared entry/table tests to the existing execution once; retain every distinct obligation. The new seam needs native controls for exact-Fraction branch selection, generic custom-score dispatch, disabled/unsupported binding, stale-before-entry fallback, direct-call exception without retry, and owned-kernel lifetime/GC. Run equivalent cases through generic and direct C branches, comparing complete values and types. Keep wrong-result detection and partial score-update/error ordering. Retain all prior native cache/iterator/mutation/callback/source-custody tests. Preserve the entire existing table-statistics dictionary, including its shape and counters. Any direct/fallback dispatch counts belong in a separate report. This mapping does not authorize silently reducing old coverage. + +## Fixed screen and economic stop + +Build an isolated feasibility copy only after the parent accepts this nomination. The smallest proposed micro contains the actual three-score C loop in two entry points: the unchanged generic loop, and the proposed guarded vectorcall loop. Both retain identical operand acquisition, strong references, list stores and error checks. Freeze sixteen exact-Fraction increment triples before timing, covering zero, signs, cancellation, common/coprime denominators and 128-bit numerators; their cycle should keep score size bounded. Verify all terminal scores and types outside timing. + +Use **32,768 coefficient groups, 98,304 additions per arm, one B,C,C,B sequence**, with fresh scores each arm and no adaptive repetition or workload selection. Include both per-add type guards in C timing. This micro isolates dispatch; it supplies no actual-word receipt and no admitted full-trace projection. Record interpreter/compiler/source hashes, both CPU and wall times, build cost and every failed result. + +Before any actual/full construction, measure the complete added union of finite controls, binding/freshness, initialization and cold compile/link/load cost against a fresh PR5864 process. Compiler-child CPU belongs in the bill. Reuse of one loaded module within a process is allowed; fresh complete processes each pay their own build. If either micro metric does not improve in both paired comparisons, or its conservative illustrative scaling to 7,739,250 sites cannot cover that measured incremental bill plus observed timing spread in **both** metrics, stop this candidate. Synthetic scaling is only a screen, never a claimed lower bound on the real trace saving. + +If that screen passes, at most one guarded actual equivalence audit is the next step. It must retain 2,579,750 calls, 2,252,966 hits, 326,784 misses, 310,400 evictions, 3,587 weight tokens and complete output/type/witness equality. Use the resulting measured actual saving and complete overhead bill to decide whether complete construction is justified. Final acceptance requires fresh complete measurements, a positive incremental saving beyond PR5864 repeat variability in both wall and total CPU after the new check/build bill, and preservation of at least 15% against PR5848. Preserve negative evidence if any gate fails; do not compensate by adding options (a) or (c) in this round. + +Primary API references checked for this nomination: [vectorcall](https://docs.python.org/3.12/c-api/call.html#c.PyObject_Vectorcall), [member metadata/accessor and flags](https://docs.python.org/3.12/c-api/structures.html#c.PyMember_GetOne), and [CPython descriptor implementation](https://github.com/python/cpython/blob/3.12/Objects/descrobject.c). These explain API behavior; the moving documentation/3.12 branch is not the installed interpreter's source pin. Local inspected-file hashes and the exact prior evidence paths are recorded in `ROUND2-NOMINATION.json`. diff --git a/research/fraction-native-score-dispatch-feasibility/evidence/ROUND2-STOP-REVIEW.json b/research/fraction-native-score-dispatch-feasibility/evidence/ROUND2-STOP-REVIEW.json new file mode 100644 index 0000000000..81629b1da4 --- /dev/null +++ b/research/fraction-native-score-dispatch-feasibility/evidence/ROUND2-STOP-REVIEW.json @@ -0,0 +1,84 @@ +{ + "status": "STOP_ROUND2_INSUFFICIENT_CONSERVATIVE_MARGIN_BEFORE_COMPLETE_CONSTRUCTION", + "date": "2026-10-27", + "decision": "Accept scoped stop; no further implementation or measurement supported in this round", + "micro_result": { + "raw_status_preserved": "MICRO_PASS_REQUIRES_FULL_INCREMENTAL_COST_BILL", + "order": ["B", "C", "C", "B"], + "groups_per_arm": 32768, + "additions_per_arm": 98304, + "prefix_comparisons": 33, + "controls": 10, + "all_reported_pass": true, + "observations": [ + {"arm": "B1", "wall_seconds": 0.08336172500276007, "cpu_seconds": 0.08278898000000001}, + {"arm": "C1", "wall_seconds": 0.06712531601078808, "cpu_seconds": 0.06712270600000003}, + {"arm": "C2", "wall_seconds": 0.06753551599103957, "cpu_seconds": 0.06753953200000001}, + {"arm": "B2", "wall_seconds": 0.06991359798121266, "cpu_seconds": 0.069917697} + ], + "wall_paired_differences": [0.016236408991971985, 0.0023780819901730865], + "cpu_paired_differences": [0.01566627399999998, 0.0023781649999999876], + "all_samples_retained": true, + "counter_boundary": "Direct arm increments per-add dispatch counters; generic returns aggregate counts. No hypothetical counter-removal saving credited.", + "plan_prose_count_note": "All32 prefix phrase differs from implemented range(33), which verifies prefixes 0 through 32." + }, + "economic_screen": { + "target_additions": 7739250, + "illustrative_gross_wall_seconds": 0.18722097821499695, + "illustrative_gross_cpu_seconds": 0.18722751338958643, + "parent_complete_wall_seconds": [32.771296680002706, 33.03183611499844, 32.57126763599808], + "parent_complete_cpu_seconds": [32.74, 32.95, 32.5], + "parent_wall_range_seconds": 0.4605684790003579, + "parent_cpu_range_seconds": 0.45, + "wall_margin_before_incremental_cost_seconds": -0.27334750078536096, + "cpu_margin_before_incremental_cost_seconds": -0.2627724866104164, + "actual_incremental_complete_bill_measured": false, + "optimistic_bill_used_for_stop_seconds": 0, + "reason": "Even zero added cost fails the conservative illustration plus observed-spread gate in both metrics; no integration is needed to reject this screen.", + "range_is_confidence_interval": false, + "illustration_bounds_true_gain": false + }, + "verified_receipt": { + "exit": 0, + "stderr_bytes": 0, + "source_bytes_and_modes_unchanged": true, + "source_inventory_sha256": "dc576d82c24a9f00d0dc87a3cec52384716f046516ca300a5f73da7e9d37ebac", + "probe_cold_build_load_wall_seconds": 0.1481919409998227, + "whole_probe_wall_seconds": 0.709715356992092, + "cost_boundary": "These are probe costs, not the unmeasured incremental complete successor bill." + }, + "coverage_boundary": "33 prefixes and ten probe controls passed; no claim that the full inherited 964/118 suite, prior19 dispatch controls or future cache-owned-kernel integration obligations have passed here", + "continuation_supported": ["preserve exact evidence", "record scoped stop and handoff"], + "continuation_not_supported_this_round": [ + "repeat or adapt timing", + "drop or replace samples", + "change the primary statistic to reverse the decision", + "credit hypothetical counter removal", + "full-control integration", + "actual-word audit", + "complete construction", + "combine deferred mechanisms without a new nomination" + ], + "claim_boundary": "Engineering stop for insufficient evidence of complete incremental margin, not a bound on true native gain or a universal optimization obstruction; PR5864 remains the accepted measured result", + "reviewer_actions": { + "compiler_runs": 0, + "numerical_experiments": 0, + "measured_file_mutations": 0, + "external_posts": 0, + "receipt_arithmetic_recomputed": true, + "written_files": ["ROUND2-STOP-REVIEW.md", "ROUND2-STOP-REVIEW.json"] + }, + "inspected_evidence": [ + {"path": "outputs/fraction-native-score-add-20261027/feasibility/score_probe.c", "sha256": "ac5d282405e74f1f8cc4cddb768485709057d249dae370a16c063ab45327c2ea"}, + {"path": "outputs/fraction-native-score-add-20261027/feasibility/micro.py", "sha256": "ad34e00ad7d0a9f192f4e3e89b1b7cc3b45d27d10063fa2dc1937e101cf60c09"}, + {"path": "outputs/fraction-native-score-add-20261027/feasibility/probe_backend.py", "sha256": "393e1a4c0a04b31eaa0bc75e0ed90686b072a05cd6ad6193eac7e99cab812e16"}, + {"path": "outputs/fraction-native-score-add-20261027/feasibility/runtime_binding.py", "sha256": "f2e74fef881cb49101338e40e2d84600e2c9d0e717dafb46a20d7217609d4c71"}, + {"path": "outputs/fraction-native-score-add-20261027/runtime/runs/micro-native-direct-add/stdout.txt", "sha256": "52212bb5f8fd5bf877b6b2bebe65346c1ef201eaec1b2b0bfd560df4263fcac7"}, + {"path": "outputs/fraction-native-score-add-20261027/runtime/runs/micro-native-direct-add/receipt.json", "sha256": "48f2a7ffdea2e2ae74833cf6d10b43bb1e9973acae4a077bbe5f8afaf33bd3b2"}, + {"path": "outputs/fraction-native-cache-20261027/runtime/runs/C1/receipt.json", "sha256": "9763ceec4da7db54fc61cb7f8440ffbccc3b9f3b291d2bce485fe309319e68ba"}, + {"path": "outputs/fraction-native-cache-20261027/runtime/runs/C2/receipt.json", "sha256": "56f0f5891a6efc138028647593e4221c63d19f3eebe161850928e0cc498a3579"}, + {"path": "outputs/fraction-native-cache-20261027/runtime/runs/C3/receipt.json", "sha256": "410eac666993518da4194bc8d97898d27b2c419aca19dc17f4fe35afc9bd30c9"}, + {"path": "outputs/fraction-15-percent-strategy-20261027/ROUND2-NOMINATION.md", "sha256": "201747b0da2dd28e84e1b35a9405142406e576b683394ecd4c1be4052fe8b4f1"}, + {"path": "outputs/fraction-15-percent-strategy-20261027/ROUND2-NOMINATION.json", "sha256": "1fc1474532777f487c0fc2d58ddc2f35acbd9c565a83fa457b7fd858b8f23d2e"} + ] +} diff --git a/research/fraction-native-score-dispatch-feasibility/evidence/ROUND2-STOP-REVIEW.md b/research/fraction-native-score-dispatch-feasibility/evidence/ROUND2-STOP-REVIEW.md new file mode 100644 index 0000000000..6aaa8a941e --- /dev/null +++ b/research/fraction-native-score-dispatch-feasibility/evidence/ROUND2-STOP-REVIEW.md @@ -0,0 +1,45 @@ +# Round 2 stopping review + +**Accept the proposed scoped STOP before full-control integration, an actual-word audit or complete construction.** The one prescribed native BCCB screen produced positive paired differences, but its conservative illustration does not clear the existing complete-run variability allowance even with zero added cost. The current evidence supports no further implementation or measurement in this round. Preserve PR5864 and retain this probe as a successful narrow semantics check with insufficient economic evidence. + +This reviewer inspected the probe source, its build loader, retained stdout/receipt, the prior written nomination, and PR5864's C1/C2/C3 receipts. No compiler or numerical experiment was run; arithmetic below was recomputed from existing receipts. Only this review and its JSON companion were written. + +## What the fixed probe established + +`micro.py` executes one B,C,C,B sequence, each arm containing 32,768 groups and 98,304 additions. The sixteen increment triples include zero, signs, cancellation, shared/coprime denominators and large integers, with fresh scores for each arm. The generic inner loop matches the retained parent C fragment's score acquisition, strong reference, numeric addition, error handling and list store. The direct loop adds exact operand-type guards and calls the existing authenticated Python kernel. Its separate dispatch counters are also incremented per addition; generic counts are calculated in aggregate. Therefore the record measures this particular instrumented probe, not an uninstrumented dispatch primitive or an integrated successor. + +The saved output reports all 33 prefix comparisons, ten controls, exact branch counts and equal terminal Fraction values/types passing. Source inspection confirms prefixes 0 through 32 are tested; `PLAN.json`'s phrase “All32 prefix” is a prose count error, not a missing prefix. The controls cover generic custom/subtype/integer behavior, direct errors without retry, partial update order, score-list mutation, invalid kernel packets and live binding drift. These are useful bounded observations. They do not execute the inherited 964-comparison/118-control suite, all 19 prior dispatch controls or future cache-owned-kernel lifetime/GC integration. No complete scientific or performance admission follows. + +The receipt records exit 0, no stderr, unchanged source bytes/modes and the source hash used for the cold build. The copied `runtime_binding.py` hash matches the previously reviewed binder. All four samples remain in the decision: + +| Arm | Wall seconds | CPU seconds | +| --- | ---: | ---: | +| B1 | 0.083361725003 | 0.082788980000 | +| C1 | 0.067125316011 | 0.067122706000 | +| C2 | 0.067535515991 | 0.067539532000 | +| B2 | 0.069913597981 | 0.069917697000 | + +The matched differences are B1−C1 and B2−C2. Both are positive in both metrics, but their sizes differ substantially. The record does not establish why B1 and B2 differ. No sample is declared an outlier, dropped, replaced or assigned a causal explanation. + +## Why stopping follows the written gate + +The nomination requires conservative illustrative scaling to cover the incremental complete bill **plus observed spread** before any actual/full construction. Scaling the smaller paired difference by `7,739,250 / 98,304` gives the following screen; this is arithmetic on the retained data, not an actual-trace prediction: + +| Decision quantity | Wall seconds | CPU seconds | +| --- | ---: | ---: | +| Smaller micro paired difference | 0.002378081990 | 0.002378165000 | +| Illustrative gross saving at retained site count | 0.187220978215 | 0.187227513390 | +| Frozen PR5864 complete C range | 0.460568479000 | 0.450000000000 | +| Illustration minus range, before new costs | **−0.273347500785** | **−0.262772486610** | + +The complete comparison range is verified directly from PR5864 C1/C2/C3 receipts: wall 32.771296680003, 33.031836114998 and 32.571267635998 seconds; total user+system CPU 32.74, 32.95 and 32.50 seconds. These use the same recorded interpreter, platform and runner as the probe. Their max-minus-min range is an observed engineering allowance from three retained complete runs. It is neither a confidence interval nor a lower bound on future noise or on any optimization's true gain. + +The actual new validation/binding/build bill has not been measured. That missing bill does not require integrating a successor: assigning it the optimistic value zero already fails the chosen margin screen in both metrics. There is no established offsetting reduction in validation or build work to credit. Conversely, the probe's 0.148191941-second cold-build/load time must not be substituted for the unknown *incremental* complete build bill; its 0.709715357-second whole-command duration is research-screen cost, not a successor qualification time. + +`MICRO_PASS_REQUIRES_FULL_INCREMENTAL_COST_BILL` in stdout records the script's narrower test that both micro pairs improved. The proposed STOP is the subsequent review against the full nominated screen. Preserve the raw status and receipt; add the scoped decision without rewriting that evidence. + +## Remaining action and claim boundary + +No additional timing permutation, longer/adaptive micro, sample removal, change to the primary statistic, speculative counter-removal credit, full suite integration or actual/full run is justified by this record. The earlier rejected options (a) and (c) acquire no new cost evidence from this probe, and combining them would be a separate mechanism requiring a new nomination. Complete only the durable stop/checkpoint and handoff already within the parent's scope. + +This is **insufficient conservative margin under a fixed engineering screen**. It does not prove that direct native score dispatch is slower, that its true gain is below 0.187 seconds, that no other workload benefits, or that further optimization is impossible. The measured PR5864 implementation and its previously established cumulative 15% threshold remain the accepted result; this round adds no new complete improvement claim. diff --git a/research/fraction-native-score-dispatch-feasibility/evidence/VERIFY-ISOLATED-FUNCTION-DRAFT.py.txt b/research/fraction-native-score-dispatch-feasibility/evidence/VERIFY-ISOLATED-FUNCTION-DRAFT.py.txt new file mode 100644 index 0000000000..783228bd9f --- /dev/null +++ b/research/fraction-native-score-dispatch-feasibility/evidence/VERIFY-ISOLATED-FUNCTION-DRAFT.py.txt @@ -0,0 +1,39 @@ +"""Replay all probe correctness controls without repeating its timing trial.""" +from hashlib import sha256 +import inspect,json,tarfile +from pathlib import Path +import micro +from table_parent import code_shape + +HERE=Path(__file__).resolve().parent +ARCHIVE='7b142567acacac5182045bf8daa8780e916661c2cf343dbf81b13c88ead85d64' + +def need(ok,message): + if not ok:raise ValueError(message) + +def main(): + archive=HERE/'inputs/PR5864.tar' + need(sha256(archive.read_bytes()).hexdigest()==ARCHIVE,'exact complete PR5864 export') + with tarfile.open(archive,'r:') as stream: + receipt=json.loads(stream.extractfile('.research-export.json').read()) + need(receipt['commit']=='3f15c943e4ad6479f03e674c80fff1269a16ccfe' and len(receipt['files'])==163,'exact parent source head/census') + native=stream.extractfile('research/fraction-native-qualification/native_cache.c').read() + need(native==(HERE/'native_parent.c').read_bytes(),'exact parent native C bytes') + start=native.index(b' for(int k=0;k<3;k++){',native.index(b'static PyObject *event_apply')) + end=native.index(b' int truth=',start) + need(native[start:end]==(HERE/'PARENT-SCORE-LOOP.txt').read_bytes(),'exact retained parent score loop') + raw=inspect.getsource(micro.main) + need(sha256(raw.encode()).hexdigest()==json.loads((HERE/'FINITE-SOURCE.json').read_text())['function_sha256'],'exact measured probe source') + namespace=dict(micro.__dict__);exec(compile(raw,'','exec'),namespace) + need(code_shape(namespace['main'].__code__)==code_shape(micro.main.__code__),'live probe executable agrees') + seam=' observations=[];groups=32768\n' + need(raw.count(seam)==1,'unique boundary after all ten correctness controls') + finite=raw[:raw.index(seam)]+''' result=dict(prefix_cases=33,controls=controls,control_count=len(controls),runtime_current=binding.still_current(token)) + print(json.dumps(dict(status='PASS_NATIVE_SCORE_FINITE_ONLY',result=result,build=probe_backend.receipt()),sort_keys=True)) + return result +''' + exec(compile(finite,'','exec'),namespace) + need(namespace['main']()==json.loads((HERE/'RESULT.json').read_text()),'all retained finite probe controls') + print('PASS_NATIVE_SCORE_DISPATCH_FEASIBILITY_FINITE_ONLY') + +if __name__=='__main__':main() diff --git a/research/fraction-native-score-dispatch-feasibility/evidence/parent-complete/C1/receipt.json b/research/fraction-native-score-dispatch-feasibility/evidence/parent-complete/C1/receipt.json new file mode 100644 index 0000000000..d61dc4261f --- /dev/null +++ b/research/fraction-native-score-dispatch-feasibility/evidence/parent-complete/C1/receipt.json @@ -0,0 +1,26 @@ +{ + "exit": 0, + "label": "C1", + "optimized": false, + "platform": "Linux-7.0.0-38-generic-x86_64-with-glibc2.39", + "python": "3.12.3 (main, Aug 31 2026, 10:18:26) [GCC 13.3.0]", + "runner_sha256": "7540f8cc4ae4d12ed86c844ef0837a74184d3ada653979608c295c09f200a751", + "runtime_policy_sha256": "f2fb57d260620346ad1100e4afb6e15e754460e3a086a54802c976fab2fc1552", + "sampled_process_group_rss_bytes": 115896320, + "script": "full_C.py", + "source_bytes_and_modes_unchanged": true, + "source_inventory_sha256": "94948995f7ffb81a2215df2828296156bd0e579a5d15fe2e998f72ca1ab94674", + "status": "PASS", + "stderr_bytes": 0, + "stderr_sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", + "stdout_bytes": 14103, + "stdout_sha256": "94b8b578bdc812bf9c3a12e80bf2f00978000c6cc47119a180d4d003a1d0c20f", + "termination": null, + "usage": { + "exit": 0, + "kernel_max_rss_kib": 111728, + "system_seconds": 0.2, + "user_seconds": 32.54 + }, + "wall_seconds": 32.771296680002706 +} diff --git a/research/fraction-native-score-dispatch-feasibility/evidence/parent-complete/C2/receipt.json b/research/fraction-native-score-dispatch-feasibility/evidence/parent-complete/C2/receipt.json new file mode 100644 index 0000000000..f8e6215401 --- /dev/null +++ b/research/fraction-native-score-dispatch-feasibility/evidence/parent-complete/C2/receipt.json @@ -0,0 +1,26 @@ +{ + "exit": 0, + "label": "C2", + "optimized": false, + "platform": "Linux-7.0.0-38-generic-x86_64-with-glibc2.39", + "python": "3.12.3 (main, Aug 31 2026, 10:18:26) [GCC 13.3.0]", + "runner_sha256": "7540f8cc4ae4d12ed86c844ef0837a74184d3ada653979608c295c09f200a751", + "runtime_policy_sha256": "f2fb57d260620346ad1100e4afb6e15e754460e3a086a54802c976fab2fc1552", + "sampled_process_group_rss_bytes": 116826112, + "script": "full_C.py", + "source_bytes_and_modes_unchanged": true, + "source_inventory_sha256": "94948995f7ffb81a2215df2828296156bd0e579a5d15fe2e998f72ca1ab94674", + "status": "PASS", + "stderr_bytes": 0, + "stderr_sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", + "stdout_bytes": 14105, + "stdout_sha256": "e5fae97b197190e7942f4af65ae80fdb7d8e57617640bdd268bb2774b2518e7c", + "termination": null, + "usage": { + "exit": 0, + "kernel_max_rss_kib": 112636, + "system_seconds": 0.2, + "user_seconds": 32.75 + }, + "wall_seconds": 33.03183611499844 +} diff --git a/research/fraction-native-score-dispatch-feasibility/evidence/parent-complete/C3/receipt.json b/research/fraction-native-score-dispatch-feasibility/evidence/parent-complete/C3/receipt.json new file mode 100644 index 0000000000..8225ad0284 --- /dev/null +++ b/research/fraction-native-score-dispatch-feasibility/evidence/parent-complete/C3/receipt.json @@ -0,0 +1,26 @@ +{ + "exit": 0, + "label": "C3", + "optimized": false, + "platform": "Linux-7.0.0-38-generic-x86_64-with-glibc2.39", + "python": "3.12.3 (main, Aug 31 2026, 10:18:26) [GCC 13.3.0]", + "runner_sha256": "7540f8cc4ae4d12ed86c844ef0837a74184d3ada653979608c295c09f200a751", + "runtime_policy_sha256": "f2fb57d260620346ad1100e4afb6e15e754460e3a086a54802c976fab2fc1552", + "sampled_process_group_rss_bytes": 115761152, + "script": "full_C.py", + "source_bytes_and_modes_unchanged": true, + "source_inventory_sha256": "94948995f7ffb81a2215df2828296156bd0e579a5d15fe2e998f72ca1ab94674", + "status": "PASS", + "stderr_bytes": 0, + "stderr_sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", + "stdout_bytes": 14101, + "stdout_sha256": "56dc7baee49bc0aceabc9589593de191e31874345f83579664757ba96e40a193", + "termination": null, + "usage": { + "exit": 0, + "kernel_max_rss_kib": 111596, + "system_seconds": 0.19, + "user_seconds": 32.31 + }, + "wall_seconds": 32.57126763599808 +} diff --git a/research/fraction-native-score-dispatch-feasibility/evidence/runtime/dispatch.py b/research/fraction-native-score-dispatch-feasibility/evidence/runtime/dispatch.py new file mode 100644 index 0000000000..8fe0e66a6a --- /dev/null +++ b/research/fraction-native-score-dispatch-feasibility/evidence/runtime/dispatch.py @@ -0,0 +1,8 @@ +import sys +import guard +guard.SOURCE=guard.HERE.parent/'feasibility' +guard.CLOSURE=tuple(sorted(str(p.relative_to(guard.SOURCE)) for p in guard.SOURCE.rglob('*') if p.is_file() and '__pycache__' not in p.parts))+('/usr/lib/python3.12/fractions.py',) +label=sys.argv[1] +with (guard.HERE/'execution.lock').open('a') as lock: + guard.fcntl.flock(lock,guard.fcntl.LOCK_EX|guard.fcntl.LOCK_NB) + guard.run(label,'micro.py',optimized=label.endswith('-O')) diff --git a/research/fraction-native-score-dispatch-feasibility/evidence/runtime/guard.py b/research/fraction-native-score-dispatch-feasibility/evidence/runtime/guard.py new file mode 100644 index 0000000000..bf4265b129 --- /dev/null +++ b/research/fraction-native-score-dispatch-feasibility/evidence/runtime/guard.py @@ -0,0 +1,120 @@ +"""Serial bounded Linux measurements; preserve the complete frozen precision contract.""" +import argparse +import fcntl +import hashlib +import json +import os +from pathlib import Path +import platform +import signal +import statistics +import subprocess +import sys +import tempfile +import time + +HERE = Path(__file__).resolve().parent +SOURCE = HERE +CLOSURE = ('frozen.py','primitive_profile.py','guard.py','dispatch.py','inputs/PR5848.tar','../feasibility/fraction_table.py','../feasibility/finite.py','/usr/lib/python3.12/fractions.py','../feasibility/actual_audit.py') +TIMEOUT = 180 +RSS_CAP = 1024**3 +OUTPUT_CAP = 2*1024**2 +AGGREGATE = 600 +PREVIOUS_WALL_SECONDS = 0 + +def sha(raw): + return hashlib.sha256(raw).hexdigest() + +def inventory(): + result = {} + for name in CLOSURE: + path = SOURCE / name + if path.is_symlink() or not path.is_file(): + raise ValueError('Regular complete runtime file: ' + name) + result[name] = [sha(path.read_bytes()), path.stat().st_mode & 0o777] + return result + +def group_rss(group): + total = 0 + count = 0 + for p in Path('/proc').iterdir(): + if not p.name.isdigit(): + continue + try: + raw = (p/'stat').read_text() + fields = raw[raw.rfind(')')+2:].split() + if int(fields[2]) == group: + total += int(fields[21])*os.sysconf('SC_PAGE_SIZE') + count += 1 + except (FileNotFoundError, ProcessLookupError, PermissionError): + pass + return total, count + +def run(label, script, optimized=False): + records = HERE/'runs' + records.mkdir(exist_ok=True) + prior = list(records.glob('*/receipt.json')) + spent = PREVIOUS_WALL_SECONDS + sum(json.loads(p.read_bytes())['wall_seconds'] for p in prior) + if spent >= AGGREGATE: + raise ValueError('Aggregate budget consumed') + folder = records/label + folder.mkdir() + before = inventory() + env = os.environ.copy() + for key in ('PYTHONPATH','PYTHONOPTIMIZE','PYTHONINSPECT','PYTHONSTARTUP','PYTHONPYCACHEPREFIX'): + env.pop(key,None) + env.update(PYTHONHASHSEED='0', LC_ALL='C.UTF-8', TZ='UTC') + usage = folder/'usage.json' + with tempfile.TemporaryDirectory(prefix='linux5757-bytecode-') as cache: + command = ['/usr/bin/python3.12', '-B', '-X', 'pycache_prefix='+cache] + if optimized: + command.append('-O') + command.append(str(SOURCE/script)) + timed = ['/usr/bin/time','-f','{"user_seconds":%U,"system_seconds":%S,"kernel_max_rss_kib":%M,"exit":%x}', '-o', str(usage),'--',*command] + start = time.monotonic() + peak = 0 + stop = None + with (folder/'stdout.txt').open('wb') as out, (folder/'stderr.txt').open('wb') as err: + p = subprocess.Popen(timed, cwd=SOURCE, env=env, stdout=out, stderr=err, start_new_session=True) + try: + while p.poll() is None: + rss, _ = group_rss(p.pid) + peak = max(peak,rss) + elapsed = time.monotonic()-start + if rss > RSS_CAP: + stop='sampled_group_rss_cap' + elif elapsed > min(TIMEOUT,AGGREGATE-spent): + stop='wall_or_aggregate_cap' + elif max((folder/'stdout.txt').stat().st_size,(folder/'stderr.txt').stat().st_size)>OUTPUT_CAP: + stop='output_cap' + if stop: + os.killpg(p.pid,signal.SIGKILL) + break + time.sleep(0.05) + code=p.wait() + finally: + try: os.killpg(p.pid,signal.SIGKILL) + except ProcessLookupError: pass + p.wait() + elapsed = time.monotonic()-start + stdout=(folder/'stdout.txt').read_bytes() + stderr=(folder/'stderr.txt').read_bytes() + after=inventory() + measurement=None + if usage.exists(): + try: measurement=json.loads(usage.read_bytes()) + except json.JSONDecodeError: measurement={'raw':usage.read_text()} + receipt={'label':label,'script':script,'optimized':optimized,'wall_seconds':elapsed, + 'exit':code,'termination':stop,'sampled_process_group_rss_bytes':peak, + 'usage':measurement,'stdout_sha256':sha(stdout),'stdout_bytes':len(stdout), + 'stderr_sha256':sha(stderr),'stderr_bytes':len(stderr), + 'source_inventory_sha256':sha(json.dumps(before,sort_keys=True,separators=(',',':')).encode()), + 'source_bytes_and_modes_unchanged':before==after, + 'python':sys.version,'platform':platform.platform(), + 'runner_sha256':sha(Path(__file__).read_bytes()),'runtime_policy_sha256':sha(json.dumps(CLOSURE).encode())} + receipt['status']='PASS' if code==0 and stop is None and not stderr and before==after else 'STOP' + (folder/'receipt.json').write_text(json.dumps(receipt,indent=2,sort_keys=True)+'\n') + print(json.dumps(receipt,sort_keys=True),flush=True) + if receipt['status']!='PASS': + raise SystemExit(1) + return receipt diff --git a/research/fraction-native-score-dispatch-feasibility/evidence/runtime/runs/micro-native-direct-add/receipt.json b/research/fraction-native-score-dispatch-feasibility/evidence/runtime/runs/micro-native-direct-add/receipt.json new file mode 100644 index 0000000000..208f0a3511 --- /dev/null +++ b/research/fraction-native-score-dispatch-feasibility/evidence/runtime/runs/micro-native-direct-add/receipt.json @@ -0,0 +1,26 @@ +{ + "exit": 0, + "label": "micro-native-direct-add", + "optimized": false, + "platform": "Linux-7.0.0-38-generic-x86_64-with-glibc2.39", + "python": "3.12.3 (main, Aug 31 2026, 10:18:26) [GCC 13.3.0]", + "runner_sha256": "7540f8cc4ae4d12ed86c844ef0837a74184d3ada653979608c295c09f200a751", + "runtime_policy_sha256": "8fff40be6fffa046e5c02013b2814d94f908dd50ea5cf9f508f4921220de04e2", + "sampled_process_group_rss_bytes": 67977216, + "script": "micro.py", + "source_bytes_and_modes_unchanged": true, + "source_inventory_sha256": "dc576d82c24a9f00d0dc87a3cec52384716f046516ca300a5f73da7e9d37ebac", + "status": "PASS", + "stderr_bytes": 0, + "stderr_sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", + "stdout_bytes": 2876, + "stdout_sha256": "52212bb5f8fd5bf877b6b2bebe65346c1ef201eaec1b2b0bfd560df4263fcac7", + "termination": null, + "usage": { + "exit": 0, + "kernel_max_rss_kib": 39016, + "system_seconds": 0.03, + "user_seconds": 0.66 + }, + "wall_seconds": 0.709715356992092 +} diff --git a/research/fraction-native-score-dispatch-feasibility/evidence/runtime/runs/micro-native-direct-add/stderr.txt b/research/fraction-native-score-dispatch-feasibility/evidence/runtime/runs/micro-native-direct-add/stderr.txt new file mode 100644 index 0000000000..e69de29bb2 diff --git a/research/fraction-native-score-dispatch-feasibility/evidence/runtime/runs/micro-native-direct-add/stdout.txt b/research/fraction-native-score-dispatch-feasibility/evidence/runtime/runs/micro-native-direct-add/stdout.txt new file mode 100644 index 0000000000..0420ce1a13 --- /dev/null +++ b/research/fraction-native-score-dispatch-feasibility/evidence/runtime/runs/micro-native-direct-add/stdout.txt @@ -0,0 +1,5 @@ +{"observation": {"counts": [0, 98304], "cpu_seconds": 0.08278898000000001, "label": "B", "terminal_scores": ["2/3", "-5/7", "11/13"], "wall_seconds": 0.08336172500276007}} +{"observation": {"counts": [98304, 0], "cpu_seconds": 0.06712270600000003, "label": "C", "terminal_scores": ["2/3", "-5/7", "11/13"], "wall_seconds": 0.06712531601078808}} +{"observation": {"counts": [98304, 0], "cpu_seconds": 0.06753953200000001, "label": "C", "terminal_scores": ["2/3", "-5/7", "11/13"], "wall_seconds": 0.06753551599103957}} +{"observation": {"counts": [0, 98304], "cpu_seconds": 0.069917697, "label": "B", "terminal_scores": ["2/3", "-5/7", "11/13"], "wall_seconds": 0.06991359798121266}} +{"additions_per_arm": 98304, "build": {"SOABI": "cpython-312-x86_64-linux-gnu", "binary_sha256": "2539108f782328dcf75f477e6fa085235fa42a327743c97c1c16a4397c67ec95", "cold_build_load_wall_seconds": 0.1481919409998227, "compiler": "/usr/bin/cc", "compiler_cpu_accounting": "outer GNU time user+system includes compiler children", "compiler_version": "cc (Ubuntu 13.3.0-6ubuntu2~24.04.1) 13.3.0", "extension_suffix": ".cpython-312-x86_64-linux-gnu.so", "flags": ["-O2", "-shared", "-fPIC", "-std=c11", "-Wall", "-Werror", "-I/usr/include/python3.12"], "python": "3.12.3 (main, Aug 31 2026, 10:18:26) [GCC 13.3.0]", "source_sha256": "ac5d282405e74f1f8cc4cddb768485709057d249dae370a16c063ab45327c2ea"}, "control_count": 10, "controls": ["all-33-prefix-values-types-and-branches", "nonexact-custom-score-generic-iadd", "Fraction-subtype-generic-iadd", "nonexact-increment-generic", "direct-error-no-retry-partial-update-order", "callback-score-list-mutation-safe", "nonfunction-kernel-packet-rejected", "kernel-binding-drift", "present-none-iadd-drift", "runtime-restored-before-timing"], "fixed_order": "BCCB", "groups_per_arm": 32768, "illustrative_gross_only": {"cpu_seconds": 0.18722751338958643, "wall_seconds": 0.18722097821499695}, "no_actual_or_complete_construction": true, "not_a_full_trace_projection_or_improvement": true, "observations": [{"counts": [0, 98304], "cpu_seconds": 0.08278898000000001, "label": "B", "terminal_scores": ["2/3", "-5/7", "11/13"], "wall_seconds": 0.08336172500276007}, {"counts": [98304, 0], "cpu_seconds": 0.06712270600000003, "label": "C", "terminal_scores": ["2/3", "-5/7", "11/13"], "wall_seconds": 0.06712531601078808}, {"counts": [98304, 0], "cpu_seconds": 0.06753953200000001, "label": "C", "terminal_scores": ["2/3", "-5/7", "11/13"], "wall_seconds": 0.06753551599103957}, {"counts": [0, 98304], "cpu_seconds": 0.069917697, "label": "B", "terminal_scores": ["2/3", "-5/7", "11/13"], "wall_seconds": 0.06991359798121266}], "paired_differences": {"cpu_seconds": [0.01566627399999998, 0.0023781649999999876], "wall_seconds": [0.016236408991971985, 0.0023780819901730865]}, "runtime_current": true, "status": "MICRO_PASS_REQUIRES_FULL_INCREMENTAL_COST_BILL"} diff --git a/research/fraction-native-score-dispatch-feasibility/evidence/runtime/runs/micro-native-direct-add/usage.json b/research/fraction-native-score-dispatch-feasibility/evidence/runtime/runs/micro-native-direct-add/usage.json new file mode 100644 index 0000000000..a5dd5b0ea0 --- /dev/null +++ b/research/fraction-native-score-dispatch-feasibility/evidence/runtime/runs/micro-native-direct-add/usage.json @@ -0,0 +1 @@ +{"user_seconds":0.66,"system_seconds":0.03,"kernel_max_rss_kib":39016,"exit":0} diff --git a/research/fraction-native-score-dispatch-feasibility/evidence/runtime/runs/packaged-score-context-finite-O/receipt.json b/research/fraction-native-score-dispatch-feasibility/evidence/runtime/runs/packaged-score-context-finite-O/receipt.json new file mode 100644 index 0000000000..3c6f3c6c78 --- /dev/null +++ b/research/fraction-native-score-dispatch-feasibility/evidence/runtime/runs/packaged-score-context-finite-O/receipt.json @@ -0,0 +1,26 @@ +{ + "exit": 0, + "label": "packaged-score-context-finite-O", + "optimized": true, + "platform": "Linux-7.0.0-38-generic-x86_64-with-glibc2.39", + "python": "3.12.3 (main, Aug 31 2026, 10:18:26) [GCC 13.3.0]", + "runner_sha256": "7540f8cc4ae4d12ed86c844ef0837a74184d3ada653979608c295c09f200a751", + "runtime_policy_sha256": "0502dc3118fa0c2b07578a404103cb78b6d220742c90f12fbe16c1cb23d8bb08", + "sampled_process_group_rss_bytes": 61353984, + "script": "verify.py", + "source_bytes_and_modes_unchanged": true, + "source_inventory_sha256": "fff4792a2c0bc7fd25a10356952c632a706057d854697260a2139dd7e3db594c", + "status": "PASS", + "stderr_bytes": 0, + "stderr_sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", + "stdout_bytes": 1207, + "stdout_sha256": "b5ed16eb98db0e719f138edd145ac4471f20b4233baeb0bbab33d9c32f6e1e02", + "termination": null, + "usage": { + "exit": 0, + "kernel_max_rss_kib": 39148, + "system_seconds": 0.03, + "user_seconds": 0.45 + }, + "wall_seconds": 0.5075639769784175 +} diff --git a/research/fraction-native-score-dispatch-feasibility/evidence/runtime/runs/packaged-score-context-finite-O/stderr.txt b/research/fraction-native-score-dispatch-feasibility/evidence/runtime/runs/packaged-score-context-finite-O/stderr.txt new file mode 100644 index 0000000000..e69de29bb2 diff --git a/research/fraction-native-score-dispatch-feasibility/evidence/runtime/runs/packaged-score-context-finite-O/stdout.txt b/research/fraction-native-score-dispatch-feasibility/evidence/runtime/runs/packaged-score-context-finite-O/stdout.txt new file mode 100644 index 0000000000..4722ec7a33 --- /dev/null +++ b/research/fraction-native-score-dispatch-feasibility/evidence/runtime/runs/packaged-score-context-finite-O/stdout.txt @@ -0,0 +1,2 @@ +{"build": {"SOABI": "cpython-312-x86_64-linux-gnu", "binary_sha256": "beb396ef0a98bcf77ead29ef83f20c30e2a3feaafc11414a27e80edaa241b501", "cold_build_load_wall_seconds": 0.15812393999658525, "compiler": "/usr/bin/cc", "compiler_cpu_accounting": "outer GNU time user+system includes compiler children", "compiler_version": "cc (Ubuntu 13.3.0-6ubuntu2~24.04.1) 13.3.0", "extension_suffix": ".cpython-312-x86_64-linux-gnu.so", "flags": ["-O2", "-shared", "-fPIC", "-std=c11", "-Wall", "-Werror", "-I/usr/include/python3.12"], "python": "3.12.3 (main, Aug 31 2026, 10:18:26) [GCC 13.3.0]", "source_sha256": "ac5d282405e74f1f8cc4cddb768485709057d249dae370a16c063ab45327c2ea"}, "result": {"control_count": 10, "controls": ["all-33-prefix-values-types-and-branches", "nonexact-custom-score-generic-iadd", "Fraction-subtype-generic-iadd", "nonexact-increment-generic", "direct-error-no-retry-partial-update-order", "callback-score-list-mutation-safe", "nonfunction-kernel-packet-rejected", "kernel-binding-drift", "present-none-iadd-drift", "runtime-restored-before-timing"], "prefix_cases": 33, "runtime_current": true}, "status": "PASS_NATIVE_SCORE_FINITE_ONLY"} +PASS_NATIVE_SCORE_DISPATCH_FEASIBILITY_FINITE_ONLY diff --git a/research/fraction-native-score-dispatch-feasibility/evidence/runtime/runs/packaged-score-context-finite-O/usage.json b/research/fraction-native-score-dispatch-feasibility/evidence/runtime/runs/packaged-score-context-finite-O/usage.json new file mode 100644 index 0000000000..917afd59df --- /dev/null +++ b/research/fraction-native-score-dispatch-feasibility/evidence/runtime/runs/packaged-score-context-finite-O/usage.json @@ -0,0 +1 @@ +{"user_seconds":0.45,"system_seconds":0.03,"kernel_max_rss_kib":39148,"exit":0} diff --git a/research/fraction-native-score-dispatch-feasibility/evidence/runtime/runs/packaged-score-context-finite/receipt.json b/research/fraction-native-score-dispatch-feasibility/evidence/runtime/runs/packaged-score-context-finite/receipt.json new file mode 100644 index 0000000000..0c7f622dd4 --- /dev/null +++ b/research/fraction-native-score-dispatch-feasibility/evidence/runtime/runs/packaged-score-context-finite/receipt.json @@ -0,0 +1,26 @@ +{ + "exit": 0, + "label": "packaged-score-context-finite", + "optimized": false, + "platform": "Linux-7.0.0-38-generic-x86_64-with-glibc2.39", + "python": "3.12.3 (main, Aug 31 2026, 10:18:26) [GCC 13.3.0]", + "runner_sha256": "7540f8cc4ae4d12ed86c844ef0837a74184d3ada653979608c295c09f200a751", + "runtime_policy_sha256": "0502dc3118fa0c2b07578a404103cb78b6d220742c90f12fbe16c1cb23d8bb08", + "sampled_process_group_rss_bytes": 66867200, + "script": "verify.py", + "source_bytes_and_modes_unchanged": true, + "source_inventory_sha256": "fff4792a2c0bc7fd25a10356952c632a706057d854697260a2139dd7e3db594c", + "status": "PASS", + "stderr_bytes": 0, + "stderr_sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", + "stdout_bytes": 1207, + "stdout_sha256": "1c65c41e04290db8e081ae7ef7264a051321555eb0079a809b1e25c4488e57e8", + "termination": null, + "usage": { + "exit": 0, + "kernel_max_rss_kib": 38952, + "system_seconds": 0.03, + "user_seconds": 0.43 + }, + "wall_seconds": 0.506363077001879 +} diff --git a/research/fraction-native-score-dispatch-feasibility/evidence/runtime/runs/packaged-score-context-finite/stderr.txt b/research/fraction-native-score-dispatch-feasibility/evidence/runtime/runs/packaged-score-context-finite/stderr.txt new file mode 100644 index 0000000000..e69de29bb2 diff --git a/research/fraction-native-score-dispatch-feasibility/evidence/runtime/runs/packaged-score-context-finite/stdout.txt b/research/fraction-native-score-dispatch-feasibility/evidence/runtime/runs/packaged-score-context-finite/stdout.txt new file mode 100644 index 0000000000..bc0eb3ac6a --- /dev/null +++ b/research/fraction-native-score-dispatch-feasibility/evidence/runtime/runs/packaged-score-context-finite/stdout.txt @@ -0,0 +1,2 @@ +{"build": {"SOABI": "cpython-312-x86_64-linux-gnu", "binary_sha256": "1e5eafdcdf9e62bcdd2b52164447b04eba8feac4e8df3ff5dfc27aaa5b36aa9f", "cold_build_load_wall_seconds": 0.14683370498823933, "compiler": "/usr/bin/cc", "compiler_cpu_accounting": "outer GNU time user+system includes compiler children", "compiler_version": "cc (Ubuntu 13.3.0-6ubuntu2~24.04.1) 13.3.0", "extension_suffix": ".cpython-312-x86_64-linux-gnu.so", "flags": ["-O2", "-shared", "-fPIC", "-std=c11", "-Wall", "-Werror", "-I/usr/include/python3.12"], "python": "3.12.3 (main, Aug 31 2026, 10:18:26) [GCC 13.3.0]", "source_sha256": "ac5d282405e74f1f8cc4cddb768485709057d249dae370a16c063ab45327c2ea"}, "result": {"control_count": 10, "controls": ["all-33-prefix-values-types-and-branches", "nonexact-custom-score-generic-iadd", "Fraction-subtype-generic-iadd", "nonexact-increment-generic", "direct-error-no-retry-partial-update-order", "callback-score-list-mutation-safe", "nonfunction-kernel-packet-rejected", "kernel-binding-drift", "present-none-iadd-drift", "runtime-restored-before-timing"], "prefix_cases": 33, "runtime_current": true}, "status": "PASS_NATIVE_SCORE_FINITE_ONLY"} +PASS_NATIVE_SCORE_DISPATCH_FEASIBILITY_FINITE_ONLY diff --git a/research/fraction-native-score-dispatch-feasibility/evidence/runtime/runs/packaged-score-context-finite/usage.json b/research/fraction-native-score-dispatch-feasibility/evidence/runtime/runs/packaged-score-context-finite/usage.json new file mode 100644 index 0000000000..40381f4311 --- /dev/null +++ b/research/fraction-native-score-dispatch-feasibility/evidence/runtime/runs/packaged-score-context-finite/usage.json @@ -0,0 +1 @@ +{"user_seconds":0.43,"system_seconds":0.03,"kernel_max_rss_kib":38952,"exit":0} diff --git a/research/fraction-native-score-dispatch-feasibility/evidence/runtime/runs/packaged-score-finite/receipt.json b/research/fraction-native-score-dispatch-feasibility/evidence/runtime/runs/packaged-score-finite/receipt.json new file mode 100644 index 0000000000..c00588eba2 --- /dev/null +++ b/research/fraction-native-score-dispatch-feasibility/evidence/runtime/runs/packaged-score-finite/receipt.json @@ -0,0 +1,23 @@ +{ + "exit": 1, + "label": "packaged-score-finite", + "optimized": false, + "platform": "Linux-7.0.0-38-generic-x86_64-with-glibc2.39", + "python": "3.12.3 (main, Aug 31 2026, 10:18:26) [GCC 13.3.0]", + "runner_sha256": "7540f8cc4ae4d12ed86c844ef0837a74184d3ada653979608c295c09f200a751", + "runtime_policy_sha256": "56a1e4ef0cd9759999e0eecc628508eeb15021e741d2b26bfd68783e7611e2a5", + "sampled_process_group_rss_bytes": 40845312, + "script": "verify.py", + "source_bytes_and_modes_unchanged": true, + "source_inventory_sha256": "f463b09fdc3d50ae5508abae49b21bf0bbcea8e926f9544c05b37d0b3b2ced00", + "status": "STOP", + "stderr_bytes": 973, + "stderr_sha256": "e539dc6be197126ec6d5fd9e33340a073435e861870346a2da8b93ff6c5ca632", + "stdout_bytes": 0, + "stdout_sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", + "termination": null, + "usage": { + "raw": "Command exited with non-zero status 1\n{\"user_seconds\":0.62,\"system_seconds\":0.02,\"kernel_max_rss_kib\":38888,\"exit\":1}\n" + }, + "wall_seconds": 0.6589367970009334 +} diff --git a/research/fraction-native-score-dispatch-feasibility/evidence/runtime/runs/packaged-score-finite/stderr.txt b/research/fraction-native-score-dispatch-feasibility/evidence/runtime/runs/packaged-score-finite/stderr.txt new file mode 100644 index 0000000000..7f60802d03 --- /dev/null +++ b/research/fraction-native-score-dispatch-feasibility/evidence/runtime/runs/packaged-score-finite/stderr.txt @@ -0,0 +1,10 @@ +Traceback (most recent call last): + File "/home/d3lerium/.codex/.chatgpt-projects/g-p-6ad5817fd84881918865926b6fd51453/outputs/fraction-native-cache-20261027/repo/research/fraction-native-score-dispatch-feasibility/verify.py", line 39, in + if __name__=='__main__':main() + ^^^^^^ + File "/home/d3lerium/.codex/.chatgpt-projects/g-p-6ad5817fd84881918865926b6fd51453/outputs/fraction-native-cache-20261027/repo/research/fraction-native-score-dispatch-feasibility/verify.py", line 28, in main + need(code_shape(namespace['main'].__code__)==code_shape(micro.main.__code__),'live probe executable agrees') + File "/home/d3lerium/.codex/.chatgpt-projects/g-p-6ad5817fd84881918865926b6fd51453/outputs/fraction-native-cache-20261027/repo/research/fraction-native-score-dispatch-feasibility/verify.py", line 12, in need + if not ok:raise ValueError(message) + ^^^^^^^^^^^^^^^^^^^^^^^^^ +ValueError: live probe executable agrees diff --git a/research/fraction-native-score-dispatch-feasibility/evidence/runtime/runs/packaged-score-finite/stdout.txt b/research/fraction-native-score-dispatch-feasibility/evidence/runtime/runs/packaged-score-finite/stdout.txt new file mode 100644 index 0000000000..e69de29bb2 diff --git a/research/fraction-native-score-dispatch-feasibility/evidence/runtime/runs/packaged-score-finite/usage.json b/research/fraction-native-score-dispatch-feasibility/evidence/runtime/runs/packaged-score-finite/usage.json new file mode 100644 index 0000000000..96f745fc5c --- /dev/null +++ b/research/fraction-native-score-dispatch-feasibility/evidence/runtime/runs/packaged-score-finite/usage.json @@ -0,0 +1,2 @@ +Command exited with non-zero status 1 +{"user_seconds":0.62,"system_seconds":0.02,"kernel_max_rss_kib":38888,"exit":1} diff --git a/research/fraction-native-score-dispatch-feasibility/micro.py b/research/fraction-native-score-dispatch-feasibility/micro.py new file mode 100644 index 0000000000..ce04cc6b56 --- /dev/null +++ b/research/fraction-native-score-dispatch-feasibility/micro.py @@ -0,0 +1,102 @@ +"""One fixed BCCB native score-dispatch screen, no actual-word claim.""" +from fractions import Fraction as F +import json,time +import probe_backend +import runtime_binding as binding + +def need(ok,message): + if not ok:raise ValueError(message) + +def main(): + kernel=binding.bind_kernel(strict=True);token=binding.state_token() + probe=probe_backend.load();controls=[] + positives=[(F(0),F(0),F(0)),(F(1,2),F(-1,2),F(3,8)), + (F(2,3),F(5,7),F(-11,13)),(F(3,8),F(5,8),F(-1,8)), + (F(2**127+1,2**61),F(-3,16),F(7,31)), + (F(-9,17),F(11,17),F(1,2**127)), + (F(1),F(-1),F(0)),(F(5,16),F(-7,32),F(13,64))] + increments=tuple((F(0),*triple) for positive in positives for triple in (positive,tuple(-x for x in positive))) + need(len(increments)==16,'sixteen frozen contribution-shaped triples') + seed=[F(2,3),F(-5,7),F(11,13)] + for count in range(33): + expected=list(seed) + for i in range(count): + for k in range(3):expected[k]+=increments[i%16][k+1] + a=list(seed);b=list(seed) + generic=probe.generic(a,increments,count,F) + direct=probe.direct(b,increments,count,F,kernel) + need(a==b==expected and all(type(x) is F for x in a+b),'every finite prefix value/type') + need(generic==(0,count*3) and direct==(count*3,0),'both actual native branches counted') + controls.append('all-33-prefix-values-types-and-branches') + calls=[] + class Score: + def __iadd__(self,other):calls.append(other);return self + def forbidden(a,b):raise ValueError('nonexact direct call') + objects=[Score(),Score(),Score()] + need(probe.direct(objects,increments,2,F,forbidden)==(0,6) and len(calls)==6,'custom generic iadd retained') + controls.append('nonexact-custom-score-generic-iadd') + class Sub(F): + def __iadd__(self,other):calls.append(other);return self + objects=[Sub(1),Sub(2),Sub(3)];calls.clear() + need(probe.direct(objects,increments,1,F,forbidden)==(0,3) and len(calls)==3,'Fraction subtype uses generic iadd') + controls.append('Fraction-subtype-generic-iadd') + integer_increments=tuple((F(0),1,2,3) for _ in range(16));scores=[F(0)]*3 + need(probe.direct(scores,integer_increments,1,F,forbidden)==(0,3) and scores==[F(1),F(2),F(3)],'nonexact increment uses generic') + controls.append('nonexact-increment-generic') + original_add=F.__dict__['__add__'];retry=[];invoked=[] + def poison(self,other):retry.append(True);raise RuntimeError('unexpected generic retry') + def failing(a,b): + invoked.append(True) + if len(invoked)==2:raise ArithmeticError('direct kernel failure') + return kernel(a,b) + scores=[F(0),F(1),F(2)];first=tuple((F(0),F(10),F(20),F(30)) for _ in range(16)) + F.__add__=poison + try: + try:probe.direct(scores,first,1,F,failing) + except ArithmeticError as error:need(str(error)=='direct kernel failure','original direct error') + else:raise ValueError('direct exception swallowed') + finally:F.__add__=original_add + need(len(invoked)==2 and not retry and scores==[F(10),F(1),F(2)],'no retry and exact partial update order') + controls.append('direct-error-no-retry-partial-update-order') + scores=[F(0)]*3 + def clears(a,b):scores.clear();return kernel(a,b) + try:probe.direct(scores,increments,1,F,clears) + except IndexError:pass + else:raise ValueError('mutated score list accepted') + controls.append('callback-score-list-mutation-safe') + try:probe.direct([F(0)]*3,increments,1,F,object()) + except TypeError:pass + else:raise ValueError('foreign kernel packet accepted') + controls.append('nonfunction-kernel-packet-rejected') + old=F.__dict__['_add'];F._add=lambda a,b:F(999) + try:need(binding.bind_kernel() is None and not binding.still_current(token),'live kernel drift invalidates') + finally:F._add=old + controls.append('kernel-binding-drift') + F.__iadd__=None + try:need(binding.bind_kernel() is None and not binding.still_current(token),'present None iadd rejected') + finally:del F.__iadd__ + controls.append('present-none-iadd-drift') + need(binding.bind_kernel(strict=True) is kernel and binding.still_current(token),'all runtime controls restored before timing') + controls.append('runtime-restored-before-timing') + observations=[];groups=32768 + for label in 'BCCB': + scores=list(seed) + cpu=time.process_time();wall=time.perf_counter() + counts=probe.generic(scores,increments,groups,F) if label=='B' else probe.direct(scores,increments,groups,F,kernel) + elapsed=time.perf_counter()-wall;used=time.process_time()-cpu + need(scores==seed and all(type(x) is F for x in scores),'all terminal scores/types preserved') + need(counts==((0,groups*3) if label=='B' else (groups*3,0)),'timed native branch executed') + row=dict(label=label,wall_seconds=elapsed,cpu_seconds=used,counts=counts,terminal_scores=list(map(str,scores))) + observations.append(row);print(json.dumps(dict(observation=row),sort_keys=True),flush=True) + differences={metric:[observations[0][metric]-observations[1][metric],observations[3][metric]-observations[2][metric]] for metric in ('wall_seconds','cpu_seconds')} + both=all(min(x)>0 for x in differences.values()) + result=dict(status='MICRO_PASS_REQUIRES_FULL_INCREMENTAL_COST_BILL' if both else 'STOP_NATIVE_DIRECT_ADD_MICRO', + no_actual_or_complete_construction=True,controls=controls,control_count=len(controls), + fixed_order='BCCB',groups_per_arm=groups,additions_per_arm=groups*3,observations=observations, + paired_differences=differences, + illustrative_gross_only={k:min(v)*7739250/(groups*3) for k,v in differences.items()}, + not_a_full_trace_projection_or_improvement=True,build=probe_backend.receipt(), + runtime_current=binding.still_current(token)) + print(json.dumps(result,sort_keys=True));return result + +if __name__=='__main__':main() diff --git a/research/fraction-native-score-dispatch-feasibility/probe_backend.py b/research/fraction-native-score-dispatch-feasibility/probe_backend.py new file mode 100644 index 0000000000..b20e427855 --- /dev/null +++ b/research/fraction-native-score-dispatch-feasibility/probe_backend.py @@ -0,0 +1,61 @@ +"""Cold-build the owned C source; reuse code only within this process.""" +from hashlib import sha256 +import atexit +import importlib.util +import json +from pathlib import Path +import platform +import shutil +import subprocess +import sys +import sysconfig +import tempfile +import time + +HERE=Path(__file__).resolve().parent +_loaded=None +_temporary=None +_receipt=None + +def source_hash(): + path=HERE/'score_probe.c' + digest=sha256(path.read_bytes()).hexdigest() + expected=json.loads((HERE/'PROBE-SOURCE.json').read_text())['sha256'] + if path.is_symlink() or digest!=expected:raise ValueError('exact owned C source') + return digest + +def load(): + global _loaded,_temporary,_receipt + digest=source_hash() + if _loaded is not None: + if _receipt['source_sha256']!=digest:raise ValueError('loaded native code has this exact source') + return _loaded + if platform.python_implementation()!='CPython' or sys.version_info[:2]!=(3,12) or sys.platform!='linux': + raise RuntimeError('native feasibility requires Linux CPython 3.12') + compiler=shutil.which('cc') + if not compiler:raise RuntimeError('native feasibility requires an existing C compiler') + start=time.perf_counter() + _temporary=tempfile.TemporaryDirectory(prefix='fraction-native-owned-') + atexit.register(_temporary.cleanup) + root=Path(_temporary.name) + raw=(HERE/'score_probe.c').read_bytes() + if sha256(raw).hexdigest()!=digest:raise ValueError('C source remained authenticated at snapshot') + snapshot=root/'score_probe.c';snapshot.write_bytes(raw);snapshot.chmod(0o444) + destination=root/('_score_probe'+sysconfig.get_config_var('EXT_SUFFIX')) + flags=['-O2','-shared','-fPIC','-std=c11','-Wall','-Werror','-I'+sysconfig.get_path('include')] + command=[compiler,*flags,str(snapshot),'-o',str(destination)] + build=subprocess.run(command,capture_output=True,text=True,check=False) + if build.returncode or build.stderr or build.stdout: + raise RuntimeError('native build rejected: '+json.dumps(dict(command=command,returncode=build.returncode,stdout=build.stdout,stderr=build.stderr))) + destination.chmod(0o444) + spec=importlib.util.spec_from_file_location('_score_probe',destination) + value=importlib.util.module_from_spec(spec);spec.loader.exec_module(value) + _receipt=dict(source_sha256=digest,compiler=compiler,flags=flags,SOABI=sysconfig.get_config_var('SOABI'), + extension_suffix=sysconfig.get_config_var('EXT_SUFFIX'),python=sys.version, + binary_sha256=sha256(destination.read_bytes()).hexdigest(),cold_build_load_wall_seconds=time.perf_counter()-start, + compiler_cpu_accounting='outer GNU time user+system includes compiler children', + compiler_version=subprocess.run([compiler,'--version'],capture_output=True,text=True,check=True).stdout.splitlines()[0]) + _loaded=value + return value + +def receipt():return None if _receipt is None else dict(_receipt) diff --git a/research/fraction-native-score-dispatch-feasibility/score_probe.c b/research/fraction-native-score-dispatch-feasibility/score_probe.c new file mode 100644 index 0000000000..cf8e3af148 --- /dev/null +++ b/research/fraction-native-score-dispatch-feasibility/score_probe.c @@ -0,0 +1,63 @@ +/* Bounded dispatch feasibility only. Original Fraction arithmetic retained. + * Chris R / Clear1nsight with substantial OpenAI Codex assistance. Apache-2.0. */ +#define PY_SSIZE_T_CLEAN +#include +static int packet(PyObject *scores,PyObject *triples,PyObject *groups,PyObject *fraction,Py_ssize_t *count){ + if(!PyList_CheckExact(scores)||PyList_GET_SIZE(scores)!=3||!PyTuple_CheckExact(triples)||PyTuple_GET_SIZE(triples)!=16||!PyLong_CheckExact(groups)||!PyType_Check(fraction)){ + PyErr_SetString(PyExc_TypeError,"three scores, sixteen triples, integer groups and class");return -1; + } + *count=PyLong_AsSsize_t(groups); + if(PyErr_Occurred())return -1; + if(*count<0||*count>32768){PyErr_SetString(PyExc_ValueError,"groups 0..32768");return -1;} + for(int i=0;i<16;i++){ + PyObject *row=PyTuple_GET_ITEM(triples,i); + if(!PyTuple_CheckExact(row)||PyTuple_GET_SIZE(row)!=4){PyErr_SetString(PyExc_TypeError,"contribution-shaped triple");return -1;} + } + return 0; +} +static PyObject *generic(PyObject *module,PyObject *args){ + (void)module;PyObject *scores,*triples,*groups,*fraction;Py_ssize_t count; + if(!PyArg_UnpackTuple(args,"generic",4,4,&scores,&triples,&groups,&fraction))return NULL; + if(packet(scores,triples,groups,fraction,&count)<0)return NULL; + for(Py_ssize_t group=0;group','exec'),namespace) + need(code_shape(namespace['main'].__code__)==code_shape(micro.main.__code__),'live probe executable agrees') + seam=' observations=[];groups=32768\n' + need(raw.count(seam)==1,'unique boundary after all ten correctness controls') + entry="\nif __name__=='__main__':main()\n" + need(module_raw.count(entry)==1,'unique unchanged module entry guard') + finite=module_raw[:module_raw.index(seam)]+''' result=dict(prefix_cases=33,controls=controls,control_count=len(controls),runtime_current=binding.still_current(token)) + print(json.dumps(dict(status='PASS_NATIVE_SCORE_FINITE_ONLY',result=result,build=probe_backend.receipt()),sort_keys=True)) + return result +'''+module_raw[module_raw.index(entry):] + exec(compile(finite,'','exec'),namespace) + need(namespace['main']()==json.loads((HERE/'RESULT.json').read_text()),'all retained finite probe controls') + print('PASS_NATIVE_SCORE_DISPATCH_FEASIBILITY_FINITE_ONLY') + +if __name__=='__main__':main()