{
  "schema": "T_GPT_METRICS_V0_8_6",
  "version": "0.8.6",
  "date": "2026-09-12",
  "status": "MNAR_P0_INSTRUMENTATION_REPAIR / CONFIRMATORY_CLOSED",
  "supersedes_primary_path": "metrics-v0.8.5.json",
  "preserves_history": true,
  "scope": "Conditional semantic shift among frozen-codebook-mappable outputs, mapping/missingness mass, MNAR sensitivity via worst-case partial-identification bounds, paired recovery lift, false-positive-adjusted aggregation coverage, and fixed-family task-level inference. No metric measures T^, a remainder, or a latent total field.",
  "estimands": {
    "mapping_shift": "K_X=N_known_X/N_total_X; missing mass M_X=1-K_X",
    "semantic_conditional_shift": "q_X(c)=n_X(c)/N_known_X over frozen known clusters",
    "joint_observable_shift": "p_X(c)=n_X(c)/N_total_X plus explicit UNMAPPED/UNRESOLVED mass; descriptive only",
    "non_identity": "semantic conditional shift != latent total semantic shift"
  },
  "mapping_engineering_defaults": {
    "minimum_known_semantic_mass": 0.8,
    "maximum_pairwise_mapping_gap": 0.05,
    "minimum_n_per_arm": 32,
    "status": "PROVISIONAL_ENGINEERING_GUARDRAILS_TO_BE_CALIBRATED_IN_P0",
    "sensitivity_profiles": [{"name":"LENIENT","min_K":0.75,"max_gap":0.07},{"name":"PRIMARY","min_K":0.8,"max_gap":0.05},{"name":"STRICT","min_K":0.85,"max_gap":0.03}]
  },
  "mnar_partial_identification": {
    "purpose": "Prevent cluster-selective missingness (MNAR) from being silently interpreted as latent-total semantic contraction.",
    "missing_mass": "UNMAPPED + UNRESOLVED",
    "assumption": "No MAR/MCAR assumption. Missing mass may be allocated adversarially across frozen semantic clusters or elsewhere.",
    "deficit_lower": "max(0, observed_known_unconditional_deficit - missing_mass_B)",
    "deficit_upper": "worst-case allocation of missing_mass_A to maximize directional deficit, with B missing mass allocated away from deficit",
    "expansion": "symmetric A/B construction",
    "role": "identification guardrail / sensitivity; not a sampling-confidence interval",
    "confirmatory_total_semantic_claim": "CLOSED in v0.8.6 until sampling uncertainty for the identification region is frozen",
    "source_note": "Manski-style partial identification for missing-data uncertainty"
  },
  "unmapped_affinity": {
    "status": "P0_DIAGNOSTIC_ONLY",
    "record": "nearest_frozen_cluster_or_NONE after final OUTPUT_ASSIGNMENT=UNMAPPED",
    "rule": "Never remaps UNMAPPED and never enters a primary endpoint. Used only to diagnose cluster-selective missingness and calibrate sensitivity."
  },
  "semantic_shift": {
    "primary_planning_endpoint": "SEMANTIC_DEFICIT_EXCESS_CONDITIONAL",
    "always_report": "SEMANTIC_EXPANSION_EXCESS_CONDITIONAL, K by arm, unconditional descriptive shift, partial-identification interval",
    "null_calibration": "Permutation of known mapped labels or equal-N A-prime replicate; mapping is handled separately",
    "total_semantic_claim": "forbidden in v0.8.6 confirmatory path"
  },
  "recovery": {
    "primary_planning_endpoint": "RECOVERY_LIFT_CONDITIONAL",
    "mapping_gate": "RECOVERY/CONTROL K>=0.80 and gap<=0.05",
    "complete_case_rule": "Complete-case sensitivity may be reported only when the recovery/control mapping gate passes; never when it fails",
    "interpretation": "Conditional on frozen-codebook-mappable outputs"
  },
  "aggregation": {
    "primary": "AGG_COVERAGE_ADJUSTED_PRIMARY_NEAR_FPR",
    "formula": "(AGG_COVERAGE_RAW-FPR_NEAR)/(1-FPR_NEAR)",
    "global_fpr_gate": 0.25,
    "near_fpr_gate": 0.25,
    "distractors": {"minimum_total":24,"minimum_each_stratum":{"NEAR":8,"MID":8,"FAR":8},"same_set_across_aggregators":true,"disjoint_ids_from_true_pool":true},
    "token_use": "0.80*cap <= actual_output_tokens <= cap",
    "sensitivity_fpr_thresholds": [0.15,0.2,0.25,0.3],
    "status": "FPR thresholds are engineering defaults to be calibrated in P0"
  },
  "inference": {
    "within_task": "design-matched permutation/randomization for conditional estimands",
    "across_tasks": "fixed-family stratified bootstrap; resample tasks within each of five preregistered families and equal-weight family means",
    "minimum_valid_tasks": 30,
    "max_measurement_insufficient_fraction": 0.4,
    "global_failure": "if >40% registered task cells are measurement-insufficient, generalized claim is unavailable",
    "reporting": "all exclusions and reasons must be listed; no silent complete-case generalization"
  },
  "meoi_artifact": {"path":"minimum-effects-v0.8.6.json","sha256":"41ba4a0143984ecf6127c23ac161c4d516cd561833eaf6a99e055c0872334b30","declared_before_p0":true},
  "primary_endpoint_by_experiment": {"E1_STAGE":"SEMANTIC_DEFICIT_EXCESS_CONDITIONAL (planning only; latent-total claim closed)","E2_RECOVERY":"RECOVERY_LIFT_CONDITIONAL","E3_TOPOLOGY":"AGG_COVERAGE_ADJUSTED_PRIMARY_NEAR_FPR","E4_R_META":"DEFERRED"}
}
