docs/experiments/EXP-3D-RGBD-WIDTH-DATA-V15/audit/v15_derive.py
"""Derive the V15 pipeline (width x data) from the frozen V14 files (sources never modified).
Usage (repo root of a dry copy): python3 v15_derive.py. The EVAL stage script, the report and
the tests are written separately.
"""
from pathlib import Path
def read(path):
with open(path, encoding="utf-8", newline="") as handle:
return handle.read()
def write(target, text):
path = Path(target)
if path.exists():
raise SystemExit(f"DERIVE FAILED {target}: target exists")
with open(path, "w", encoding="utf-8", newline="") as handle:
handle.write(text)
print("derived", target)
def apply(text, target, replacements):
for old, new, count in replacements:
found = text.count(old)
if found != count:
raise SystemExit(f"DERIVE FAILED {target}: expected {count}, found {found}: {old[:80]!r}")
text = text.replace(old, new)
return text
def derive(source, target, replacements, leftovers=()):
text = apply(read(source), target, replacements)
for word in leftovers:
if word in text:
raise SystemExit(f"DERIVE FAILED {target}: leftover {word!r}")
write(target, text)
LEFT = ("rgbd_data_scale", "data-scale", "DATA-SCALE", '"""V14', "V14 ", "DATA_GAIN", "train72_training")
CARRIER = (
"from mcss.mechanism_pilot.rgbd_data_scale_carrier import ",
"from mcss.mechanism_pilot.rgbd_wide_scale_carrier import ",
)
EVALUATION = (
"from mcss.mechanism_pilot.rgbd_data_scale_evaluation import evaluate_model\n",
"from mcss.mechanism_pilot.rgbd_wide_scale_evaluation import evaluate_model\n",
)
STREAM_COMMENT = (
" # V14 TRAIN sets differ by design; variants sharing a TRAIN set share the stream.\n",
" # V15 widths differ by design; both variants share TRAIN_EXT and so the stream.\n",
)
SRC = "src/mcss/mechanism_pilot/"
# ---------------------------------------------------------------- carrier module
derive(
SRC + "rgbd_data_scale_carrier.py",
SRC + "rgbd_wide_scale_carrier.py",
[
(
'"""V14: more training scenes for completion, on the unchanged V11 C1 recipe (data scale).\n'
"\n"
"PLAN_BEFORE_TRAIN_EXT_DATA.md fixed V14 before any new training scene was read. C0 retrains\n"
"the V11 C1 recipe on TRAIN72 (a machinery control that must equal V11 C1 bit-for-bit); C1 is\n"
"the same recipe (width 32, 32^3, CONTEXT_DEPTH bounds, the frozen V2 C1 loss, 6000 steps, the\n"
"V11 extra-view rule) trained on TRAIN72 plus the TRAIN-EXT scenes. Both variants share the\n"
"V11 C1 parameter draw; only the variant's frozen TRAIN set differs. V8's train_records looks\n"
"the TRAIN set up in the V8 variant table (TRAIN72 for every V8 variant), so the variant's own\n"
"TRAIN set is resolved here instead.\n"
'"""\n',
'"""V15: carrier width 64 on the larger TRAIN72 + TRAIN-EXT set (width x data), V11 C1 recipe.\n'
"\n"
"PLAN_BEFORE_V15_TRAINING.md fixed V15 before any V15 training. Both variants train the V11 C1\n"
"recipe (32^3, CONTEXT_DEPTH bounds, the frozen V2 C1 loss, 6000 steps, the V11 extra-view\n"
"rule) on the 127 TRAIN72 + TRAIN-EXT scenes. C0 is width 32, i.e. V14 C1 (a machinery control\n"
"that must equal it bit-for-bit); C1 is width 64 (hidden 64, expansion 128) with V12 C1's\n"
"per-seed draw. Only the width differs; the variant's own TRAIN set is resolved from this\n"
"table (V8's train_records reads the V8 table).\n"
'"""\n',
1,
),
(
'EXPERIMENT = "EXP-3D-RGBD-DATA-SCALE-V14"\nSCHEMA = "mcss.rgbd_data_scale_carrier.v14"\n',
'EXPERIMENT = "EXP-3D-RGBD-WIDTH-DATA-V15"\nSCHEMA = "mcss.rgbd_wide_scale_carrier.v15"\n',
1,
),
(
' "C0": {"label": "TRAIN72", "hidden": 32, "expansion": 64, "model": "C1", "train": "TRAIN72"},\n'
' "C1": {\n'
' "label": "TRAIN_EXT",\n'
' "hidden": 32,\n'
' "expansion": 64,\n'
' "model": "C1",\n'
' "train": "TRAIN_EXT",\n'
" },\n",
' "C0": {\n'
' "label": "W32_T127",\n'
' "hidden": 32,\n'
' "expansion": 64,\n'
' "model": "C1",\n'
' "train": "TRAIN_EXT",\n'
" },\n"
' "C1": {\n'
' "label": "W64_T127",\n'
' "hidden": 64,\n'
' "expansion": 128,\n'
' "model": "C1",\n'
' "train": "TRAIN_EXT",\n'
" },\n",
1,
),
(
'raise ValueError("The registered V14 width at 32^3 (one candidate per voxel) is required")',
'raise ValueError("A registered V15 width at 32^3 (one candidate per voxel) is required")',
1,
),
("frozen TRAIN set (V14 table)", "frozen TRAIN set (V15 table)", 1),
(
' """The V8 resolution carrier at width 32; for both V14 variants this is the V11 C1 draw."""\n',
' """The V8 resolution carrier at the variant\'s width (32: V11 C1 draw, 64: V12 C1 draw)."""\n',
1,
),
(
' """The V8 build_state under the width guard of the registered V14 width."""\n',
' """The V8 build_state under the width guard of the two registered V15 widths."""\n',
1,
),
('raise TypeError("V14 states are built from an RGBDContext")', 'raise TypeError("V15 states are built from an RGBDContext")', 1),
(
'raise PermissionError("V14 static RGB-D data-scale carrier schema required")',
'raise PermissionError("V15 static RGB-D wide-scale carrier schema required")',
1,
),
(
'raise PermissionError("V14 checkpoints always carry the measured-depth bypass")',
'raise PermissionError("V15 checkpoints always carry the measured-depth bypass")',
1,
),
],
(
"rgbd_data_scale",
"data-scale",
"DATA-SCALE",
'"""V14',
'"TRAIN72"',
"V14 width",
"V14 variants",
"V14 states",
"V14 static",
"V14 checkpoints",
"(V14 table)",
),
)
# ---------------------------------------------------------------- DEV evaluation module
derive(
SRC + "rgbd_data_scale_evaluation.py",
SRC + "rgbd_wide_scale_evaluation.py",
[
(
'"""V14 DEV evaluation: the V11 Amendment 1 evaluator; only diagnostics runs save states.\n',
'"""V15 DEV evaluation: the V11 Amendment 1 evaluator; only diagnostics runs save states.\n',
1,
),
(CARRIER[0] + "build_state, scene_data\n", CARRIER[1] + "build_state, scene_data\n", 1),
(" if diagnostics: # V14: only", " if diagnostics: # V15: only", 1),
],
(*LEFT, "V14"),
)
derive(
"scripts/train_rgbd_data_scale_carrier.py",
"scripts/train_rgbd_wide_scale_carrier.py",
[
(
'"""V14 data-scale runs of the V11 C1 recipe; no writer or test cohort access."""',
'"""V15 width-at-scale runs of the V11 C1 recipe; no writer or test cohort access."""',
1,
),
(CARRIER[0] + "(\n", CARRIER[1] + "(\n", 1),
(" " + EVALUATION[0], " " + EVALUATION[1], 1),
],
(*LEFT, "V14"),
)
derive(
"scripts/evaluate_rgbd_data_scale_carrier.py",
"scripts/evaluate_rgbd_wide_scale_carrier.py",
[
(
'"""V14: evaluate frozen per-seed DEV selections and derive post-seal diagnostics."""',
'"""V15: evaluate frozen per-seed DEV selections and derive post-seal diagnostics."""',
1,
),
(CARRIER[0] + "VARIANT_SPECS, load_checkpoint\n", CARRIER[1] + "VARIANT_SPECS, load_checkpoint\n", 1),
(EVALUATION[0], EVALUATION[1], 1),
(*STREAM_COMMENT, 1),
(
' "C0": "train72_training",\n "C1": "train_ext_training",\n',
' "C0": "width32_training",\n "C1": "width64_training",\n',
1,
),
],
(*LEFT, "V14", "train_ext_training"),
)
derive(
"scripts/diagnose_rgbd_data_scale_states.py",
"scripts/diagnose_rgbd_wide_scale_states.py",
[("on sealed V14 DEV states.", "on sealed V15 DEV states.", 1)],
(*LEFT, "V14"),
)
derive(
"scripts/analyze_rgbd_data_scale_carrier.py",
"scripts/analyze_rgbd_wide_scale_carrier.py",
[
(
'"""V14 raw-only DEV statistics (secondary) with the frozen V2 estimator and figures."""',
'"""V15 raw-only DEV statistics (secondary) with the frozen V2 estimator and figures."""',
1,
),
(
' "C0": "C0 TRAIN72",\n "C1": "C1 TRAIN72+EXT (primary)",\n',
' "C0": "C0 width 32",\n "C1": "C1 width 64 (primary)",\n',
1,
),
],
(*LEFT, "V14", "TRAIN72+EXT"),
)
derive(
"scripts/audit_rgbd_data_scale_statistics.py",
"scripts/audit_rgbd_wide_scale_statistics.py",
[
('"analyze_rgbd_data_scale_carrier.py"', '"analyze_rgbd_wide_scale_carrier.py"', 1),
('"rgbd_data_scale_reproduction_analyzer"', '"rgbd_wide_scale_reproduction_analyzer"', 1),
('prefix="rgbd-data-scale-statistics-audit-"', 'prefix="rgbd-wide-scale-statistics-audit-"', 1),
],
LEFT,
)
derive(
"scripts/reference_rgbd_data_scale_carrier.py",
"scripts/reference_rgbd_wide_scale_carrier.py",
[
(
'"""V14 preregistered geometry-free reference for the sealed selected DEV predictions."""',
'"""V15 preregistered geometry-free reference for the sealed selected DEV predictions."""',
1,
),
(
' "V14": {\n'
' "labels": {"C0": "TRAIN72", "C1": "TRAIN_EXT"},\n'
' "primary": "DATA_GAIN_DEV",\n',
' "V15": {\n'
' "labels": {"C0": "W32_T127", "C1": "W64_T127"},\n'
' "primary": "WIDTH_GAIN_DEV",\n',
1,
),
(' "source": "V14",\n', ' "source": "V15",\n', 1),
],
(*LEFT, "V14", "TRAIN_EXT"),
)
derive(
"scripts/run_rgbd_data_scale_experiment.py",
"scripts/run_rgbd_wide_scale_experiment.py",
[
(
'"""Execute the frozen V14 experiment (CPU only) and audits, never opening fresh data.',
'"""Execute the frozen V15 experiment (CPU only) and audits, never opening fresh data.',
1,
),
("rgbd_data_scale", "rgbd_wide_scale", 8),
('Path("/tmp/rgbd-data-scale-v14-finalization.log")', 'Path("/tmp/rgbd-wide-scale-v15-finalization.log")', 1),
],
(*LEFT, "V14", "v14"),
)
derive(
"scripts/finalize_rgbd_data_scale_carrier.py",
"scripts/finalize_rgbd_wide_scale_carrier.py",
[
(
'"""V14 independent postrun checks, preservation audit, and portable numeric archive."""',
'"""V15 independent postrun checks, preservation audit, and portable numeric archive."""',
1,
),
(CARRIER[0] + "VARIANT_SPECS\n", CARRIER[1] + "VARIANT_SPECS\n", 1),
('if root.name != "EXP-3D-RGBD-DATA-SCALE-V14"', 'if root.name != "EXP-3D-RGBD-WIDTH-DATA-V15"', 1),
(*STREAM_COMMENT, 1),
(
" # any query depth, C0 equals the sealed V11 C1; results reproduce from rows.\n",
" # any query depth, C0 equals the sealed V14 C1; results reproduce from rows.\n",
1,
),
(
' if not seal_file["consistency"]["c0_minus_v11_c1_max_abs"] <= tolerance:\n'
' raise AssertionError("V14 C0 does not reproduce the sealed V11 C1 predictions")\n',
' if not seal_file["consistency"]["c0_minus_v14_c1_max_abs"] <= tolerance:\n'
' raise AssertionError("V15 C0 does not reproduce the sealed V14 C1 predictions")\n',
1,
),
(
' "v14_eval", Path("scripts/evaluate_rgbd_data_scale_eval.py")\n',
' "v15_eval", Path("scripts/evaluate_rgbd_wide_scale_eval.py")\n',
1,
),
(' "scripts/report_rgbd_data_scale_carrier.py",\n', ' "scripts/report_rgbd_wide_scale_carrier.py",\n', 1),
(' Path("scripts").glob("*rgbd_data_scale*.py")\n', ' Path("scripts").glob("*rgbd_wide_scale*.py")\n', 1),
(
' source += sorted(Path("tests").glob("test_rgbd_data_scale*.py"))\n',
' source += sorted(Path("tests").glob("test_rgbd_wide_scale*.py"))\n',
1,
),
],
("rgbd_data_scale", "data-scale", "DATA-SCALE", '"""V14', "V14 C0", "v14_eval", "c0_minus_v11", "V11 C1;"),
)
exec(Path(__file__).with_name("v15_derive_prepare.py").read_text())
print("V15 DERIVATION COMPLETE")