{
 "experiment": "Cross-validation: probe-cif-symmetry (Apollo, route fcef0bab-79e4-49b1-b891-af5c9d11dd40) vs structure sanity card v4.6 (Hermes, local) on the same known-case corruption battery",
 "date": "2026-09-08",
 "probe_action_ids": {
  "MgAl2O4_control": "01a07ec2-4552-715d-888e-c6a32d918810",
  "MgAl2O4__decimal-slip": "01a07ec2-477d-7639-ae5a-598382a701bd",
  "ZnS__sublattice-shift": "01a07ec2-4905-70c6-84eb-f82058103790",
  "MgAl2O4__cell-shear-10deg": "01a07ec2-4a5f-7c56-b1f7-ae6dc4d4bb4d",
  "MgAl2O4__stale-sg-label": "01a07ec2-4b94-749a-bec4-e2e341d5163d",
  "MgAl2O4__I41md-subgroup-corrupt": "01a07ec2-4cbd-77c5-bde4-6fb713c7688f"
 },
 "cases": [
  {
   "case": "MgAl2O4 normal spinel (clean control)",
   "file": "projects/research/structure_sanity_card/MgAl2O4_normal_spinel.cif",
   "truth": "clean ideal spinel",
   "probe": {
    "verdict": "stable",
    "sg": "Fd-3m (227)",
    "action_id": "01a07ec2-4552-715d-888e-c6a32d918810"
   },
   "card": {
    "verdict": "PASS all gates",
    "wyckoff_gate": "match_shift_ambiguous"
   }
  },
  {
   "case": "decimal-slip (one coordinate slipped one decimal place)",
   "file": "corruption_battery/MgAl2O4__decimal-slip.cif",
   "truth": "coords corrupted; true detected symmetry Cm, not the intended Fd-3m",
   "probe": {
    "verdict": "stable",
    "sg": "Cm (8)",
    "action_id": "01a07ec2-477d-7639-ae5a-598382a701bd",
    "note": "label IS stable; nothing tells you it is not the structure you meant"
   },
   "card": {
    "verdict": "symmetry CHECK + prototype wyckoff nn_mismatch"
   }
  },
  {
   "case": "ZnS sublattice-shift (Zn/S decoration flipped along [111])",
   "file": "corruption_battery/ZnS__sublattice-shift.cif",
   "truth": "symmetry fully preserved (F-43m); decoration roles inverted vs zinc-blende prototype",
   "probe": {
    "verdict": "stable",
    "sg": "F-43m (216)",
    "action_id": "01a07ec2-4905-70c6-84eb-f82058103790",
    "note": "BLIND by design: coordinate-space tools cannot see decoration flips"
   },
   "card": {
    "verdict": "prototype gate role_mismatch (origin-shift-closed role-map class, v4.6)"
   }
  },
  {
   "case": "cell-shear-10deg (lattice sheared 10 degrees)",
   "file": "corruption_battery/MgAl2O4__cell-shear-10deg.cif",
   "truth": "real metric distortion; Imma detection is honest",
   "probe": {
    "verdict": "stable",
    "sg": "Imma (74)",
    "action_id": "01a07ec2-4a5f-7c56-b1f7-ae6dc4d4bb4d",
    "note": "correct for its question; the corruption is intent-level, not label-level"
   },
   "card": {
    "verdict": "prototype gate INSPECT(geometry) (declared cubic incompatible)"
   }
  },
  {
   "case": "stale-sg-label (file declares Fd-3m, coordinates are Cm)",
   "file": "corruption_battery/MgAl2O4__stale-sg-label.cif",
   "truth": "declared metadata contradicts the actual structure",
   "probe": {
    "verdict": "stable",
    "sg": "Cm (8)",
    "action_id": "01a07ec2-4b94-749a-bec4-e2e341d5163d",
    "note": "'safe to quote this symmetry label' is true only for the DETECTED label; the file's own declared label is false and the route never reads it"
   },
   "card": {
    "verdict": "metadata CHECK (declared vs detected mismatch)"
   }
  },
  {
   "case": "subgroup-consistent corruption (O checkerboard shift along c; self-consistent declared I4_1md)",
   "file": "subgroup_distortion_experiment/spinel_I41md_corrupted.cif",
   "truth": "every atom within 0.057 A of a valid spinel position; bonds sane; recovers parent Fd-3m at symprec 0.2",
   "probe": {
    "verdict": "stable",
    "sg": "I4_1md (109)",
    "action_id": "01a07ec2-4cbd-77c5-bde4-6fb713c7688f",
    "note": "sweep max 0.1 A sits just below the 0.2 A transition to Fd-3m that exposes the corruption"
   },
   "card": {
    "verdict": "FRAGILE sweep CHECK (card ladder reaches 1.0 A; transition 0.2 -> Fd-3m flagged); all other gates PASS"
   }
  }
 ],
 "headline": "The two tools have nearly disjoint blind spots. probe-cif-symmetry answers 'is the detected classification stable'; the sanity card answers 'is this file telling the truth about what it is'. A label can be perfectly stable and still be the wrong label.",
 "suggestions_for_probe": [
  "Extend the tolerance sweep to ~0.3 A (or add an explicit 'recovery check'): the I4_1md corruption case transitions to parent Fd-3m at symprec 0.2, just past the route's 0.1 ceiling. A merge-to-higher-symmetry-parent at loose tolerance is a real corruption signal, not noise.",
  "Compare the CIF's declared _symmetry_space_group_name against detection and emit a label-mismatch verdict; the stale-sg-label case shows 'safe to quote' can mislead when the file's own label is the lie."
 ]
}