docs/experiments/EXP-3D-GEOMETRY-AWARE-CARRIER-V2/audit/pre_takeover_source/scripts/report_geometry_carrier.py
#!/usr/bin/env python3
"""Report saved matched carrier DEV evidence without opening fresh data or models."""
# ruff: noqa: E501 -- Chinese scientific report prose
import argparse
import json
from pathlib import Path
def read(root, name, default=None):
path = root / (name + ".json")
if not path.exists() and default is not None:
return default
return json.loads(path.read_text())
def number(value):
return "UNDEFINED" if value is None else f"{value:.6f}"
def stat(value):
if value["mean"] is None:
return "UNDEFINED(空区域未填零)"
ci = value["ci95"]
return f"{value['mean']:.6f},95% CI [{ci[0]:.6f}, {ci[1]:.6f}]"
def run(root, docs=None):
root, docs = Path(root), Path(docs) if docs else Path(root)
results = read(root, "static_results")
qualification = read(root, "qualification_results")
state = read(root, "state_use_results")
controls = read(root, "wrong_scene_results")["contrasts"]
obs = read(root, "observability_analysis")
split = read(root, "scene_split")
cost = read(root, "cost_analysis")
selected = read(root, "selected_checkpoints", {"status": "NOT_RECORDED"})
tests, integrity = (read(root, n, {"status": "PENDING"}) for n in ("tests", "integrity"))
if results["primary"] != "C1_SURFACE16":
raise PermissionError("SURFACE16 is the predeclared primary")
if (
qualification["FRESH_QUALIFICATION_OPENED"]
or qualification["DYNAMIC_TTT_NEXT_STAGE_ALLOWED"]
):
raise PermissionError("This report currently supports blocked-fresh DEV-only execution")
groups = results["groups"]
gain = results["surface_gain"]
regions = obs["groups"]
fields = {
"N_TRAIN_SCENES": sum(r.get("split") == "TRAIN" for r in split["scenes"]),
"N_DEV_SCENES": len(results["scene_ids"]),
"N_FRESH_QUALIFICATION_SCENES": sum(
r.get("split") == "FRESH_QUALIFICATION" for r in split["scenes"]
),
"BASELINE16_CHECKPOINT": selected.get("C0", "NOT_RECORDED"),
"SURFACE16_CHECKPOINT": selected.get("C1", "NOT_RECORDED"),
"FREE_SURFACE16_CHECKPOINT": "NOT_RUN_SECONDARY_OPTIONAL",
"BASELINE16_QUERY_ABSREL": number(
groups["C0|direct"]["query_metrics"]["depth_absrel"]["mean"]
),
"SURFACE16_QUERY_ABSREL": number(
groups["C1|direct"]["query_metrics"]["depth_absrel"]["mean"]
),
"SURFACE_GAIN": number(gain["mean"]),
"SURFACE_GAIN_CI": gain["ci95"],
"FREE_SURFACE_QUERY_ABSREL": "NOT_RUN_SECONDARY_OPTIONAL",
"FREE_SPACE_EXTRA_GAIN": "NOT_ESTABLISHED",
"BASELINE16_FULL_CONTEXT_GAIN": number(results["full_context_gain"]["C0"]["mean"]),
"SURFACE16_FULL_CONTEXT_GAIN": number(results["full_context_gain"]["C1"]["mean"]),
"BASELINE16_WRONG_SCENE_DAMAGE": number(controls["C0|wrong_scene"]["mean"]),
"SURFACE16_WRONG_SCENE_DAMAGE": number(controls["C1|wrong_scene"]["mean"]),
"BASELINE16_SHUFFLE_DAMAGE": number(controls["C0|spatial_shuffle"]["mean"]),
"SURFACE16_SHUFFLE_DAMAGE": number(controls["C1|spatial_shuffle"]["mean"]),
"OBS2PLUS_BASELINE16": number(regions["C0"]["OBS2PLUS"]["conditional_absrel"]["mean"]),
"OBS2PLUS_SURFACE16": number(regions["C1"]["OBS2PLUS"]["conditional_absrel"]["mean"]),
"OBS2PLUS_SURFACE_GAIN": number(obs["gains"]["OBS2PLUS"]["mean"]),
"SURFACE_TRAINING_STATUS": qualification["SURFACE_TRAINING_STATUS"],
"STATIC_DEV_STATUS": qualification["STATIC_DEV_STATUS"],
"SEED_ROBUSTNESS": qualification["SEED_ROBUSTNESS"],
"FRESH_QUALIFICATION_INDEPENDENCE": qualification["FRESH_QUALIFICATION_INDEPENDENCE"],
"FRESH_QUALIFICATION_OPENED": False,
"FRESH_BASELINE16_ABSREL": "NOT_RUN",
"FRESH_SURFACE16_ABSREL": "NOT_RUN",
"FRESH_SURFACE_GAIN": "NOT_RUN",
"FRESH_SURFACE_GAIN_CI": "NOT_RUN",
"FINAL_STATIC_STATUS": "NOT_ESTABLISHED",
"DYNAMIC_TTT_NEXT_STAGE_ALLOWED": False,
"TEST_TIME_INPUT": "RGB+CAMERA",
"TEST_TIME_DEPTH_USED": False,
"FINAL_HOLDOUT_TOUCHED": False,
"DYNAMIC_TTT_RUN": False,
"TESTS": tests["status"],
"FINAL_INTEGRITY": integrity["status"],
"REPORT_DIR": str(docs),
}
next_step = (
"DEV对surface及static的证据均支持,但fresh独立性尚未解决。先完成新的可信fresh cohort和冻结资格协议,不启动Dynamic TTT。"
if qualification["SURFACE_TRAINING_STATUS"]
== qualification["STATIC_DEV_STATUS"]
== "SUPPORTED"
else "未满足进入下一阶段的全部条件。保留matched对照:surface无收益时研究carrier lifting/fusion/geometry reasoning;full context不胜anchor时改善shared-state构造;wrong-scene不显著时检查global-prior依赖。本轮不引入这些新架构,也不开Dynamic TTT。"
)
lines = [
"# EXP-3D-GEOMETRY-AWARE-CARRIER-V2",
"",
"主比较是matched16³ BASELINE16(C0) vs SURFACE16(C1),唯一方法差别是TRAIN-side显式surface loss。"
+ "SURFACE_GAIN="
+ stat(gain)
+ f";SURFACE_TRAINING_STATUS={qualification['SURFACE_TRAINING_STATUS']};STATIC_DEV_STATUS={qualification['STATIC_DEV_STATUS']}。",
"",
"Test-time input = RGB + calibrated cameras. 训练是RGB+D utility track,不是RGB-only training;depth仅供TRAIN loss及seal后的DEV评价/诊断,未作为test-time carrier输入。",
"",
"C1固定为PRIMARY_METHOD=SURFACE16;C2=NOT_RUN_SECONDARY_OPTIONAL。未新算旧8³ B-final,只保留历史上下文;不能把C0改进单独归因为resolution、重训或训练数据增多。C0/C1推理architecture完全一致,surface loss只存在训练阶段,不能宣称它使推理架构更贵。",
"",
"| Method | Query AbsRel (95% CI) | Context AbsRel | Query−context gap | Opacity | Coverage |",
"|---|---|---:|---:|---:|---:|",
]
for v in ("C0", "C1"):
g = groups[v + "|direct"]
lines.append(
f"| {v} | {stat(g['query_metrics']['depth_absrel'])} | {number(g['context_metrics']['depth_absrel']['mean'])} | {number(g['generalization_gap']['mean'])} | {number(g['query_metrics']['opacity']['mean'])} | {number(g['query_metrics']['coverage']['mean'])} |"
)
answers = [
(
"Surface supervision在learned carrier中是否有效?",
f"{qualification['SURFACE_TRAINING_STATUS']};C0−C1={stat(gain)}。本轮主gate是>0而非沿用旧.02门槛,同时检查CI、75%场景不差、所有LOSO>0、positive top1 share≤.5、controls与opacity。",
),
(
"是否跨多个scenes和seeds?",
f"improved/tied/worse={gain['positive']}/{gain['tied']}/{gain['negative']};LOSO范围={gain['loso_range']};positive top1/top3={gain['positive_top1_contribution']}/{gain['positive_top3_contribution']}。seed列表={results['seeds']};SEED_ROBUSTNESS={qualification['SEED_ROBUSTNESS']}。所有seed保留,不选best seed;每seed结果见static_results.json。top1 share≤.5参与gate,top3仅报告不作为gate。",
),
(
"是否复现OBS2PLUS改善signature?",
"OBS2PLUS C0−C1="
+ stat(obs["gains"]["OBS2PLUS"])
+ f";scene coverage={obs['gains']['OBS2PLUS']['scene_coverage']}。这是post-seal条件区域诊断;空scene保留null,不把conditional收益替代全图净收益。",
),
(
"16³ baseline retraining本身提升多少?",
"本轮未新增旧8³模型matched评价,因此不能独立分离grid、更多数据、训练预算和重训收益。正式归因只比较相同architecture/grid/data/seed/budget/selection规则的C0和C1。",
),
(
"surface相对matched baseline额外提升多少?",
stat(gain) + "。这才是主方法增量,方向为C0 AbsRel−C1 AbsRel,正值更好。",
),
(
"full context是否稳定优于anchor?",
"C0="
+ stat(results["full_context_gain"]["C0"])
+ ";C1="
+ stat(results["full_context_gain"]["C1"])
+ f";STATIC_DEV_STATUS={qualification['STATIC_DEV_STATUS']}。anchor_A只编码共同anchor RGB,沿用A的合法context-camera bounds;anchor_B同理,不是只允许单相机几何信息的baseline。",
),
(
"wrong-scene是否稳定更差?",
"C0="
+ stat(controls["C0|wrong_scene"])
+ ";C1="
+ stat(controls["C1|wrong_scene"])
+ "。recipient query camera不变;wrong-scene同时替换donor bounds,不能将全部damage独归density内容。",
),
(
"state是否真正scene-specific并有空间结构?",
"C0 shuffle="
+ stat(controls["C0|spatial_shuffle"])
+ ";C1 shuffle="
+ stat(controls["C1|spatial_shuffle"])
+ "。shuffle保留recipient bounds。shared-state/seal审计="
+ json.dumps(state["input_audit"], ensure_ascii=False)
+ "。多个query必须使用同一sealed state,controls CI不支持时不能声称已证明。",
),
(
"context-query gap是否缩小?",
"C0="
+ stat(groups["C0|direct"]["generalization_gap"])
+ ";C1="
+ stat(groups["C1|direct"]["generalization_gap"])
+ "。这里分别报告两者,未预注册额外gap-change显著性则不从两个CI重叠与否推出差值显著性;query净收益是主目标。",
),
(
"free-space有没有额外价值?",
"C2未运行,FREE_SPACE_EXTRA_GAIN=NOT_ESTABLISHED。不可把上一轮direct-state结果或本轮C1结果当作C2训练证据。",
),
(
"DEV是否达到static qualification?",
qualification["STATIC_DEV_STATUS"]
+ ";检查="
+ json.dumps(qualification["static_checks"], ensure_ascii=False)
+ "。surface检查="
+ json.dumps(qualification["surface_checks"], ensure_ascii=False)
+ "。DEV资格不是fresh最终资格。",
),
(
"fresh qualification是否允许打开?",
"FRESH_QUALIFICATION_OPENED=false;独立性="
+ qualification["FRESH_QUALIFICATION_INDEPENDENCE"]
+ "。即使DEV良好也不替换fresh cohort或将已曝光scene重新包装。",
),
(
"fresh scenes是否复现主要signature?",
"NOT_RUN;没有新fresh结果,FINAL_STATIC_STATUS=NOT_ESTABLISHED。",
),
(
"现在是否可以重新打开Dynamic TTT?",
"DYNAMIC_TTT_NEXT_STAGE_ALLOWED=false;DYNAMIC_TTT_RUN=false。" + next_step,
),
]
for i, (question, answer) in enumerate(answers, 1):
lines.extend(["", f"**{i}. {question}**", "", answer])
lines.extend(
[
"",
"**预锁opacity与固定bounds限制**",
"",
"在V2正式训练前,主agent查阅已曝光历史ai_009_001发现固定bounds query rays全miss,因此未改scene/roles/bounds,改用每scene coverage≥.99×ray_hitfraction、C1−C0coverage≥−.01。NO_HIT不是新model collapse。所有8个DEV场景及全部GT-valid pixel仍计入主指标,固定bounds盲区保留。",
"",
"共mask要求C0和C1 opacity>1e-6;空scene显式null,共mask统计覆盖至少75%scene。还要求rendered_depth/opacity.clamp_min(1e-6)这一纯诊断上的C0−C1收益CI下界>0。主rendered depth语义和主AbsRel不改变。诊断降低透明度缩放解释的风险,不构成排除所有opacity相关机制的证明。",
"",
"opacity checks="
+ json.dumps(state["opacity_checks"], ensure_ascii=False)
+ ";NO_HIT scenes="
+ str(state["no_hit_scenes"])
+ "。",
"",
"**选择、统计与成本**",
"",
"每variant×seed用同一预锁DEV选择规则独立选择checkpoint;不是强行同步步数。selected step/path="
+ json.dumps(selected, ensure_ascii=False)
+ "。lambda_surface=.1与tau=.5×physical voxel diagonal预先冻结,不能由DEV/fresh重新调节。surface-band mass会通过transmittance向前方density传播梯度。",
"",
"先对每个query/role等权平均所有seed,再平均query/role得到scene值;10,000 paired scene bootstrap,seed20260928,95% percentile CI。seeds、A/B和pixels不能作为独立scene扩充样本量。区域conditional均值、pixel fraction、可加误差贡献与空区域scene coverage见observability_analysis.json;完整mean/median/LOSO/top1/top3在bootstrap_results.json。",
"",
"training curves和8类图见training_curves.json及figures/。各variant成本原始记录="
+ json.dumps(cost, ensure_ascii=False)
+ "。training_seconds是worker累计时间,与phase_wall_times分开;inference与renderer latency分开,checkpoint bytes/VRAM亦分别记录,缺失值不伪造。",
"",
"本报告仅读取保存的JSON,不进行模型forward或新评价。复现见commands.sh;raw、配置、checkpoint选择锁、数据provenance、state/GT访问审计与完整性清单保存在本实验目录。",
"",
"TEST_TIME_INPUT=RGB+CAMERA;TEST_TIME_DEPTH_USED=false;FINAL_HOLDOUT_TOUCHED=false;DYNAMIC_TTT_RUN=false。",
]
)
summary = (
"16G GEOMETRY-AWARE CARRIER V2 FINAL\n"
+ "\n".join(
f"{k}={str(v).lower() if isinstance(v, bool) else v}" for k, v in fields.items()
)
+ "\n"
)
(root / "README.md").write_text("\n".join(lines) + "\n")
(root / "STATUS.md").write_text("```text\n" + summary + "```\n")
(root / "terminal_summary.txt").write_text(summary)
print(summary)
return fields
if __name__ == "__main__":
p = argparse.ArgumentParser(description=__doc__)
p.add_argument("--root", type=Path, required=True)
p.add_argument("--docs", type=Path)
a = p.parse_args()
run(a.root, a.docs)