{
  "schema": "T_GPT_METRICS_V0_8_5",
  "version": "0.8.5",
  "date": "2026-09-12",
  "status": "ENGINEERING_REPAIR / CONFIRMATORY_CLOSED",
  "supersedes_primary_path": "metrics-v0.8.2.json",
  "preserves_history": true,
  "scope": "Observable semantic distribution shift conditional on known mapped mass, mapping validity, paired recovery-specific lift, aggregation coverage adjusted for false representation, and task-level generalization. No metric measures T^, a remainder, or a latent total field.",
  "mapping": {"known_semantic_mass":"K_X = N_known_X / N_total_X","primary_semantic_distribution":"q_X(c)=n_X(c)/N_known_X over frozen known clusters only","unconditional_distribution":"p_X(c)=n_X(c)/N_total_X retained as mapping-sensitive descriptive only","minimum_known_semantic_mass":0.8,"maximum_pairwise_mapping_gap":0.05,"failure_state":"MEASUREMENT_INSUFFICIENT","rule":"If either arm has K<0.80 or |K_A-K_B|>0.05, no primary semantic-shift endpoint or p-value is emitted. Mapping-sensitive unconditional shift remains descriptive."},
  "semantic_shift": {"relevant_cluster_set":"C_t={c in frozen codebook:R_t(c)=1}","SEMANTIC_DEFICIT_RAW":"Dq_t(A,B)=sum_{c in C_t} max(0,q_A(c)-q_B(c))","SEMANTIC_EXPANSION_RAW":"Eq_t(A,B)=sum_{c in C_t} max(0,q_B(c)-q_A(c))","mapping_sensitive_descriptive":["DEFICIT_UNCONDITIONAL_RAW","EXPANSION_UNCONDITIONAL_RAW"],"non_smooth_warning":"Positive-part operators remain non-smooth at equality; standard within-task bootstrap is not assumed valid."},
  "null_calibration": {"permutation":"Permute known mapped labels only, preserving N_known_A and N_known_B. Mapping mass is not part of the semantic null and is handled by the mapping gate.","reference_replicate":"Allowed only if N_A == N_A_prime == N_B and all pairwise mapping gates pass.","SEMANTIC_DEFICIT_EXCESS":"Dq_excess=Dq_raw-null_floor_Dq","SEMANTIC_EXPANSION_EXCESS":"Eq_excess=Eq_raw-null_floor_Eq","signed_values_allowed":true},
  "recovery": {"paired_unit":"Each B_i forks to RECOVERY_i and NEUTRAL_CONTROL_i.","semantic_basis":"Closure is calculated on q distributions conditional on known mapped assignments.","mapping_gate":"RECOVERY and CONTROL must each have K>=0.80 and |K_R-K_C|<=0.05; otherwise RECOVERY_LIFT is unavailable.","RECOVERY_LIFT":"C(A,B,R_recovery)-C(A,B,R_control)","paired_randomization":"Within-pair RECOVERY/CONTROL label swaps.","sensitivity":"Complete-case lift on pairs where base/recovery/control are all mapped is reported when available."},
  "aggregation": {"AGG_COVERAGE_RAW":"weighted recall over true frozen-pool clusters","REPRESENTATION_FPR":"false representation rate over preregistered distractors","AGG_COVERAGE_ADJUSTED_PRIMARY":"(AGG_COVERAGE_RAW-REPRESENTATION_FPR)/(1-REPRESENTATION_FPR)","maximum_representation_fpr":0.25,"failure_state":"MEASUREMENT_INSUFFICIENT if FPR>0.25","distractors":{"minimum_total":8,"required_strata":{"NEAR":3,"FAR":3},"same_set_across_aggregators":true},"output_budget":"identical max output-token cap and same frozen branch pool"},
  "inference": {"within_task":"design-matched permutation/randomization only","across_tasks":"task-level inference within five preregistered fixed task-family strata","generalization_scope":"claims beyond the five preregistered families require additional families/replication","minimum_valid_tasks":30,"multiple_comparisons":"one primary endpoint and one primary contrast per experiment; secondary Holm-adjusted or exploratory"},
  "primary_endpoint_by_experiment": {"E1_STAGE":"SEMANTIC_DEFICIT_EXCESS on one preregistered contrast; SEMANTIC_EXPANSION_EXCESS mandatory alongside","E2_RECOVERY":"RECOVERY_LIFT","E3_TOPOLOGY":"AGG_COVERAGE_ADJUSTED_PRIMARY with mandatory FPR gate","E4_R_META":"STRUCTURAL_RECURRENCE_RATE_DIFFERENCE"},
  "retired_from_primary":["DEFICIT_EXCESS_v0.8.2_unconditional","AGG_COVERAGE_RAW_as_primary","REC_GAIN_v0.8.1","IRREV_OBS"]
}
