ProCreations's picture
Upgrade to full native Deep-UFM semantic-v4 reproduction
4093113 verified
Raw
History Blame Contribute Delete
9.15 kB
#!/usr/bin/env python3
"""Fail-closed validator for the exact-current max-point upgrade."""
from __future__ import annotations
import hashlib
import json
import os
import subprocess
import sys
import tempfile
from pathlib import Path
ROOT = Path(__file__).resolve().parent
EXPECTED_SOURCE_HASHES = {
"paper_v1.pdf": "0c14870deecb6d0c2c13d66d55d33e849394b4d5a21ef713ee3d512ee150b1b6",
"source_v1.tar": "0dedd559ad1779d30ca167c93f71e6c8aa3b32542ef742398201a67aa3f3f264",
"paper_v3.pdf": "815b661ce35a187e463d4d8b7f4edddde0df5669ba82982bfb38ca47452d25e7",
"source_v3.tar": "1ff123b48897c62a141a4d39ffb293f9bd7ff373e26d51257e8ba493ad879bd8",
"Figure_3.jpg": "d3c9d3dff8f1d000432c6c4f3c922d894c7f4bc60c2fcdfef71bf42825b509bd",
"Figure_4.jpg": "da2c2402baa01bec0b8fad80ab99c6ffa46429f53e82de2ed1e77e7e969f1d1e",
"Figure_9.jpg": "dca7807396ee25874d96b3d13c4cb24162fd4b19bd5b301c406346b66f33df8f",
"Table_2.jpg": "6cb5fbe067b3d249fa66d00aaa325b065f67a18cea8bad7a94a56dfb5592d7a4",
}
def need(condition: bool, message: str) -> None:
if not condition:
raise RuntimeError(message)
def digest(path: Path) -> str:
return hashlib.sha256(path.read_bytes()).hexdigest()
def compare_files(left: Path, right: Path) -> None:
left_files = {
path.relative_to(left).as_posix(): path
for path in left.rglob("*")
if path.is_file() and "__pycache__" not in path.parts
}
right_files = {
path.relative_to(right).as_posix(): path
for path in right.rglob("*")
if path.is_file() and "__pycache__" not in path.parts
}
need(set(left_files) == set(right_files), "paired replay path set differs")
for relative in sorted(left_files):
need(
left_files[relative].read_bytes() == right_files[relative].read_bytes(),
f"paired replay mismatch: {relative}",
)
def main() -> None:
claims = json.loads((ROOT / "official_claims.json").read_text(encoding="utf-8"))
registered = json.loads((ROOT / "claims.json").read_text(encoding="utf-8"))
base = json.loads((ROOT / "outputs/results.json").read_text(encoding="utf-8"))
control = json.loads(
(ROOT / "outputs/native_control/epoch_zero_control.json").read_text(
encoding="utf-8"
)
)
train = json.loads(
(ROOT / "outputs/native_run_a/training_results.json").read_text(
encoding="utf-8"
)
)
oracle = json.loads(
(ROOT / "outputs/native_oracle_a/native_oracle.json").read_text(
encoding="utf-8"
)
)
replay = json.loads(
(ROOT / "outputs/native_replay_summary.json").read_text(encoding="utf-8")
)
linear = json.loads(
(ROOT / "outputs/linear_native_a/linear_native_results.json").read_text(
encoding="utf-8"
)
)
matrix = json.loads((ROOT / "EVIDENCE_MATRIX.json").read_text(encoding="utf-8"))
need(claims == registered and len(claims) == 6, "six exact claims changed")
need(base["claims"] == claims and base["all_gates_pass"], "base evidence failed")
need(len(base["gates"]) == 22 and all(base["gates"].values()), "base gates failed")
need(matrix["paper_id"] == "RwiGcN2feP", "evidence matrix paper mismatch")
need(
[row["literal_claim"] for row in matrix["claims"]] == claims,
"evidence matrix claim text mismatch",
)
for name, expected in EXPECTED_SOURCE_HASHES.items():
need(digest(ROOT / "source" / name) == expected, f"source pin changed: {name}")
configuration = train["registered_configuration"]
need(
configuration
== {
"K": 3,
"L": 5,
"activation": "ReLU on W1 through W4; W5 linear",
"audited_layer_l": 4,
"d": 65,
"epochs": 1_000_000,
"n_per_class": 40,
"normal_initialization": True,
"optimizer": "full-batch gradient descent",
"training_examples": 120,
},
"literal native configuration changed",
)
need(
[row["epoch"] for row in train["checkpoints"]]
== [0, 1_000, 10_000, 100_000, 1_000_000],
"native checkpoints changed",
)
need(
train["implementation"]["explicit_update_equivalence_to_autograd"]["pass"],
"explicit update is not autograd-equivalent",
)
need(
train["checkpoints"][-1]["training_accuracy"] == 1.0,
"native model did not fit the registered targets",
)
need(control["destructive_control_pass"], "epoch-zero control failed")
need(
control["nine_outlier_claim_absent_at_initialization"],
"destructive control does not remove the claimed structure",
)
need(oracle["release_quality_gate_pass"], "native verdict is inconclusive")
need(
oracle["decisive_literal_verdict"]
== "falsified_as_literally_registered",
"native Claim 6 verdict changed",
)
need(
oracle["hessian"]["nine_outlier_gate"]
and oracle["hessian"]["unequal_top9_gate"]
and not oracle["gradient"]["K_nonzero_gate"]
and oracle["gradient"]["unequal_top3_gate"],
"Claim 6 literal-falsification predicates changed",
)
need(
oracle["gradient"]["nonzero_coefficient_count"] == 9,
"Claim 6 gradient no longer has the measured 9 nonzero coefficients",
)
need(replay["paired_training_byte_identical"], "training replay differs")
need(replay["paired_oracle_byte_identical"], "oracle replay differs")
need(replay["paired_linear_byte_identical"], "linear replay differs")
need(linear["all_literal_gates_pass"], "paper-scale linear trajectory failed")
compare_files(ROOT / "outputs/native_run_a", ROOT / "outputs/native_run_b")
compare_files(ROOT / "outputs/native_oracle_a", ROOT / "outputs/native_oracle_b")
compare_files(ROOT / "outputs/linear_native_a", ROOT / "outputs/linear_native_b")
environment = {
**os.environ,
"PYTHONDONTWRITEBYTECODE": "1",
"PYTHONHASHSEED": "0",
"PYTHONWARNINGS": "error",
"OMP_NUM_THREADS": "2",
"VECLIB_MAXIMUM_THREADS": "2",
}
with tempfile.TemporaryDirectory(prefix="rwi-native-oracle-") as temporary:
fresh_base = Path(temporary) / "base"
subprocess.run(
[
sys.executable,
str(ROOT / "reproduce.py"),
"--output",
str(fresh_base),
],
cwd=ROOT,
env=environment,
check=True,
stdout=subprocess.DEVNULL,
timeout=300,
)
compare_files(fresh_base, ROOT / "packaged_replay")
fresh_oracle = Path(temporary) / "oracle"
subprocess.run(
[
sys.executable,
str(ROOT / "code/verify_native_relu_ufm.py"),
"--state",
str(ROOT / "outputs/native_run_a/final_state.npz"),
"--output",
str(fresh_oracle),
],
cwd=ROOT,
env=environment,
check=True,
stdout=subprocess.DEVNULL,
timeout=300,
)
compare_files(fresh_oracle, ROOT / "outputs/native_oracle_a")
fresh_linear = Path(temporary) / "linear"
subprocess.run(
[
sys.executable,
str(ROOT / "code/train_native_linear_ufm.py"),
"--output",
str(fresh_linear),
"--device",
"cpu",
],
cwd=ROOT,
env=environment,
check=True,
stdout=subprocess.DEVNULL,
timeout=300,
)
compare_files(fresh_linear, ROOT / "outputs/linear_native_a")
manifest = ROOT / "BUNDLE_SHA256SUMS.txt"
entries = manifest.read_text(encoding="utf-8").splitlines()
expected_paths = sorted(
path.relative_to(ROOT).as_posix()
for path in ROOT.rglob("*")
if path.is_file()
and path != manifest
and "__pycache__" not in path.parts
and ".cache" not in path.parts
)
manifest_paths: list[str] = []
for line in entries:
file_hash, relative = line.split(" ", 1)
manifest_paths.append(relative)
need(digest(ROOT / relative) == file_hash, f"manifest mismatch: {relative}")
need(manifest_paths == expected_paths, "recursive manifest path set mismatch")
print(
json.dumps(
{
"status": "PASS",
"claims": "6/6",
"base_gates": "22/22",
"native_epochs": 1_000_000,
"native_configuration": "K=3,d=65,n=40,L=5,l=4",
"linear_configuration": "K=3,d=60,n=40,L=5,l=3",
"paired_training_byte_identical": True,
"paired_oracle_byte_identical": True,
"fresh_independent_oracle": True,
"manifest_entries": len(entries),
},
sort_keys=True,
)
)
if __name__ == "__main__":
main()