#!/usr/bin/env python3 """gen_hook_placement_truth.py — factory batch 4 truth battery (contract BUILDER-2026-10-07T23:06:18Z-ec6208). The LIVE recommend_placement oracle over a factor matrix covering every branch: hook-point combos, frequency ladder, cache scopes, concurrency, failure modes, context budget. Usage: python3 scripts/gen_hook_placement_truth.py (from repo root) """ import json import sys from pathlib import Path REPO = Path(__file__).resolve().parent.parent sys.path.insert(0, str(REPO / "src")) sys.path.insert(0, str(REPO / "src" / "rune")) import hook_engine as he # noqa: E402 def main(): factor_sets = [ {"output_dep": True}, {"input_dep": True}, {"input_dep": True, "output_dep": True}, {}, {"side_effects": "read-write"}, {"volatility": "session"}, {"volatility": "per-turn"}, {"scope": "persistent"}, {"scope": "session"}, {"concurrent": True}, {"failure": "fail-loud"}, {"context_budget": 500}, {"input_dep": True, "scope": "session", "concurrent": True, "context_budget": 250}, {"side_effects": "read-write", "failure": "fail-loud", "scope": "persistent"}, ] cases = [] for i, factors in enumerate(factor_sets): cases.append({ "fn": "placement", "name": f"matrix_{i}", "input": {"factors": factors}, "expected": he.recommend_placement(f"hook_{i}", factors), }) out = { "oracle": "src/rune/hook_engine.py recommend_placement (live)", "generated": "2026-10-07", "cases": cases, } target = REPO / "src/go/hook-engine" / "truth_placement.json" target.write_text(json.dumps(out, indent=1, ensure_ascii=False) + "\n") print(f"wrote {target} ({len(cases)} cases)") if __name__ == "__main__": main()