# Phase 5 — validation ablations, aggregation weights, protocol freeze (2026-10-27/28) Runs (`results/runs/validation_*`, mid tier, 40 properties of the validation subsample; G4 on 20): E/F/G2 × {all-Anthropic, all-OpenAI, mixed}; G1, G4, H (skeptic + verification), I (placebo roles), J (cost-matched), G-fullview on the mixed committee. 0 failed properties; estimated spend 465 USD (`results/tier_validation.json`, ledgers). Findings (n = 40, exploratory): mean absolute log error 0.175–0.184 for every LLM arm; committees do not differ (all-Anthropic 0.177–0.183, all-OpenAI 0.173–0.178, mixed 0.173–0.182); rounds collapse the inter-role IQR (0.056 → 0.036 → 0.028) without improving accuracy; anchoring index 0.7–0.8; skeptic, placebo and full-view arms within 0.01 of G2; intervals under-cover (82.5 % at nominal 90 %). Frozen inputs: `results/aggregation_weights.json` (inverse-variance ≈ uniform 0.06–0.09; stacking: hedonic 0.39, geospatial 0.24, market 0.16, data auditor 0.13, underwriting 0.08), `results/evaluation/llm_conformal_scales.json`, `results/freeze.json` (digest f0e9d6a9…, 2026-10-28 01:05 UTC; 33 role-prompt hashes, configs, code, model ids). Deviation: the run filter of `scripts/33_run_tier.py` initially missed the H/I/G-fullview runs (substring mismatch); they were launched after the freeze with identical frozen inputs — they are ablations, not test evaluations, so the freeze is unaffected.