# Conclusion --- All three released CPU notebook protocols have completed at source scale, and an independent six-claim verifier with negative controls passes. A repeat is still required before this result is made public. ## Scope & cost | | This reproduction | Full replication | |---|---|---| | Scope | Released normal-form, Grid Soccer, and Predator-Prey protocols; independent numerical checks | New independent implementation and broader seed/hardware study | | Hardware | Local CPU (4 vCPU) | Multi-environment replication not performed | | Time | First source suite: 1,742.891 seconds | Not measured | | Cost | Local CPU only | Not estimated | | Outcome | First source run and independent gate pass; final repeat pending | Not claimed | --- ````bash $ python repro/src/publication_gate.py ```` exit 0 ยท 34.3s ````python title=publication_gate.py """Fail-closed publication gate for the pinned full-source reproduction.""" from __future__ import annotations import hashlib import json import re import subprocess import sys from pathlib import Path import nbformat ROOT = Path(__file__).resolve().parents[2] EXECUTED = ROOT / "outputs" / "executed" GATE = ROOT / "outputs" / "publication_gate.json" MARKER = ROOT / "PUBLICATION_READY.md" RUNS = ( ("normal-form.ipynb", "normal-form.no-tex.executed.ipynb"), ("normal-form.ipynb", "normal-form.repeat.no-tex.executed.ipynb"), ("soccer.ipynb", "soccer.no-tex.executed.ipynb"), ("soccer.ipynb", "soccer.repeat.no-tex.executed.ipynb"), ("predator-prey.ipynb", "predator-prey.no-tex.executed.ipynb"), ("predator-prey.ipynb", "predator-prey.repeat.no-tex.executed.ipynb"), ) SECRET_PATTERNS = ( re.compile(r"hf_[A-Za-z0-9]{20,}"), re.compile(r"sk-[A-Za-z0-9]{20,}"), re.compile(r"AKIA[0-9A-Z]{16}"), re.compile(r"-----BEGIN [A-Z ]*PRIVATE KEY-----"), ) def expected_source(source: str) -> str: return source.replace( "plt.rcParams.update(bundles.icml2024())", 'plt.rcParams.update({**bundles.icml2024(), "text.usetex": False})', ) def notebook_checks() -> dict[str, object]: results: dict[str, object] = {} passed = True for source_name, executed_name in RUNS: source = nbformat.read(ROOT / "upstream" / source_name, as_version=4) executed = nbformat.read(EXECUTED / executed_name, as_version=4) source_code = [cell.source for cell in source.cells if cell.cell_type == "code"] executed_code = [cell.source for cell in executed.cells if cell.cell_type == "code"] errors = [ (index, output.get("ename", "unknown")) for index, cell in enumerate(executed.cells) for output in cell.get("outputs", []) if output.output_type == "error" ] code_matches = source_code == executed_code or [expected_source(text) for text in source_code] == executed_code executed_every_cell = all( cell.execution_count is not None for cell in executed.cells if cell.cell_type == "code" ) ok = bool(code_matches and executed_every_cell and not errors) results[executed_name] = { "code_matches_pinned_source_with_only_tex_fallback": code_matches, "all_code_cells_executed": executed_every_cell, "code_cell_errors": errors, "sha256": hashlib.sha256((EXECUTED / executed_name).read_bytes()).hexdigest(), "pass": ok, } passed &= ok results["pass"] = passed return results def no_secrets() -> dict[str, object]: hits: list[str] = [] excluded = {".venv", ".git", ".pytest_cache", "outputs"} for path in ROOT.rglob("*"): if not path.is_file() or excluded.intersection(path.relative_to(ROOT).parts): continue try: text = path.read_text(encoding="utf-8") except UnicodeDecodeError: continue if any(pattern.search(text) for pattern in SECRET_PATTERNS): hits.append(str(path.relative_to(ROOT))) return {"hits": hits, "pass": not hits} def command_passes(command: list[str]) -> bool: return subprocess.run(command, cwd=ROOT, check=False).returncode == 0 def main() -> None: notebooks = notebook_checks() verifier = command_passes([sys.executable, "repro/src/verify_claims.py", "--require-repeat"]) tests = command_passes([sys.executable, "-m", "pytest", "-q", "repro/tests/test_verifier.py"]) secrets = no_secrets() passed = bool(notebooks["pass"] and verifier and tests and secrets["pass"]) payload = { "paper": "hXO2OP0T4w", "pinned_source": "GauthierE/anytime-detection-deviation@42b8f0edfe76fb9dd006e9cab84f6cb8b75849c6", "expected_claims": 6, "full_source_runs": notebooks, "repeat_verifier_passed": verifier, "tests_passed": tests, "secret_scan": secrets, "publication_gate_passed": passed, } GATE.write_text(json.dumps(payload, indent=2) + "\n", encoding="utf-8") if not passed: raise SystemExit("publication gate failed") MARKER.write_text( "# Publication ready\n\nFULL_GATE_READY: hXO2OP0T4w\n", encoding="utf-8", ) print(json.dumps(payload, indent=2)) if __name__ == "__main__": main() ```` ````output { "c1_evalue_identity": { "max_abs_evalue_mean_error": 0.0, "pass": true }, "c2_fwer_control": { "runs": 20000, "horizon": 1000, "fwer": 0.0303, "pass": true }, "c3_c4_detection_and_fdr": { "runs": 250, "fwer_mean_stop": 1747.104, "fdr_mean_stop": 1527.844, "fdr_speedup": 1.1435094158827734, "pass": true }, "c5_mixture_identity": { "null_lr_mean": 0.9999999999999999, "alternative_log_growth": 0.23645627415367648, "pass": true }, "stochastic_scalings": { "soccer_monotone": true, "predator_monotone": true, "repeat_exists": true, "repeat_equal": true, "source_artifacts_checked": 2, "pass": true }, "pass": true } .... [100%] 4 passed in 15.22s { "paper": "hXO2OP0T4w", "pinned_source": "GauthierE/anytime-detection-deviation@42b8f0edfe76fb9dd006e9cab84f6cb8b75849c6", "expected_claims": 6, "full_source_runs": { "normal-form.no-tex.executed.ipynb": { "code_matches_pinned_source_with_only_tex_fallback": true, "all_code_cells_executed": true, "code_cell_errors": [], "sha256": "e8691d67ac4218c3594f971d354f18bbc2dc843e2843e3c80b6ba0d24b52535b", "pass": true }, "normal-form.repeat.no-tex.executed.ipynb": { "code_matches_pinned_source_with_only_tex_fallback": true, "all_code_cells_executed": true, "code_cell_errors": [], "sha256": "97b0c87cf8185dc86aa60684b5dedeb363b55440afe1b023595717089a55b0db", "pass": true }, "soccer.no-tex.executed.ipynb": { "code_matches_pinned_source_with_only_tex_fallback": true, "all_code_cells_executed": true, "code_cell_errors": [], "sha256": "9987aabb5bd04af5090d22b097834f55f0748e9d7e020e24bf3c0fb83bb05ad1", "pass": true }, "soccer.repeat.no-tex.executed.ipynb": { "code_matches_pinned_source_with_only_tex_fallback": true, "all_code_cells_executed": true, "code_cell_errors": [], "sha256": "437034fa13dbb18be08417c69cac4859b5e6300d71cfe71a159b3e37debead60", "pass": true }, "predator-prey.no-tex.executed.ipynb": { "code_matches_pinned_source_with_only_tex_fallback": true, "all_code_cells_executed": true, "code_cell_errors": [], "sha256": "43614a343308b7d2004a53456573f25a274568e11c8e9b158836f80984e48af6", "pass": true }, "predator-prey.repeat.no-tex.executed.ipynb": { "code_matches_pinned_source_with_only_tex_fallback": true, "all_code_cells_executed": true, "code_cell_errors": [], "sha256": "86673a197404c29a9b38099b15edd859c31646739af2928f45693ad98137ca44", "pass": true }, "pass": true }, "repeat_verifier_passed": true, "tests_passed": true, "secret_scan": { "hits": [], "pass": true }, "publication_gate_passed": true } ```` --- The executed source notebooks, independent verdict, and publication-gate proof are retained as local-path artifacts for promotion with this logbook. Each notebook hash is recorded in the gate proof; both the first and clean-repeat source executions are included.