{
 "items": [
  {
   "id": "pem-conservation",
   "chem": "pem",
   "status": "ok",
   "title": "PEM balances close",
   "figure": "36 of 36 cases",
   "sub": "charge, reaction energy, electrical and coolant balances",
   "note": "Maximum residuals: charge 1.4e-17 mol/s, storage 8.3e-10 J. Water, gas inventory and whole-system energy are not implemented, so no full-system conservation pass is claimed.",
   "sources": [
    {
     "path": "output/verification/conservation.json",
     "sha256": "917be3744a6021e0d4a3c7f79b4417bafd75e90e3d8d582a4d101092c02dedbd"
    }
   ]
  },
  {
   "id": "pem-convergence",
   "chem": "pem",
   "status": "ok",
   "title": "Time-step convergence",
   "figure": "4 of 4 step cases",
   "sub": "within 1 mV/cell and 0.01 K at the finest step",
   "note": "Production Euler integrator against an independently transcribed reference (DOP853) for load, humidity, pressure and coolant steps. A numerical budget, not an experimental acceptance limit.",
   "sources": [
    {
     "path": "output/verification/convergence.json",
     "sha256": "7f1f5ceb9d365188e708ad99b8be38c2695aa8cd7e6f33c628b81297a6405a3c"
    }
   ]
  },
  {
   "id": "pem-measured",
   "chem": "pem",
   "status": "gap",
   "title": "Measured PEM challenge: the model loses",
   "figure": "120.6 mV vs 34.2 mV",
   "sub": "model RMSE vs a fixed 0.7 V guess, 12,184 samples",
   "note": "Mean residual +92 mV; 0 parameters updated; data previously inspected, so this is a diagnostic, not a blind test. Temperature and humidity are proxies; membrane water is assumed.",
   "sources": [
    {
     "path": "output/real/challenge.json",
     "sha256": "f225954fced2530229ad1e37d43f4979dab56771c6b86013034ef507d154ba72"
    }
   ]
  },
  {
   "id": "pem-mirai",
   "chem": "pem",
   "status": "open",
   "title": "Recalibrated to a Mirai-class stack",
   "figure": "0.152 → 0.049 Ω cm²",
   "sub": "membrane resistance refitted to 0.67 V at 1.9 A/cm² (public Toyota Mirai data)",
   "note": "One coefficient from one published point, so this is a calibration, not a validation. Sensitivity: ~0.6 V at rated power gives 0.081 Ω cm². Without a crossover term the model over-predicts near open circuit (0.85 V measured per cell). The aviation pages use this calibration; the lab anchor stays frozen.",
   "sources": [
    {
     "path": "output/calibration/pem-mirai-class.json",
     "sha256": "2c8d4992b67dc89cfd94127fa17a08a7b14681fd46744354ae6d3be08d36a924"
    },
    {
     "path": "archee/pem_calibration.py",
     "sha256": "67a283cdcc0e1c486c025f407a43e9e9ffe02708843f84f265225332dcc335a3"
    }
   ]
  },
  {
   "id": "pem-bayes",
   "chem": "pem",
   "status": "open",
   "title": "Bayesian model, new stacks held out",
   "figure": "34 mV vs 71 mV",
   "sub": "predicting 30 public points from stacks it never saw, vs a fixed 0.7 V guess (lab anchor 153 mV)",
   "note": "Hierarchical posterior over 13 public automotive stacks and MEAs, with the activation loss rewritten as a Tafel term with fitted exchange current (1.0e-06 A/cm² at 80 °C) and crossover current (6.6 mA/cm²), no discrepancy terms. 90 % bands cover 90 %. Worst case: the Mirai's open-circuit point. See docs/BAYESIAN_PEM.md.",
   "sources": [
    {
     "path": "output/bayes/pem-posterior.json",
     "sha256": "9954fe852f98bcb451c5d2761589bb0bac3a22e8bbc51de46dc3309dc07707ea"
    },
    {
     "path": "datasets/public/pem-automotive.json",
     "sha256": "059b230d843e51dfd4cd257cd115ac9de32782c8ad2a79a8a8a3968ec40b7464"
    }
   ]
  },
  {
   "id": "pem-identifiability",
   "chem": "pem",
   "status": "open",
   "title": "Two parameter aliases remain",
   "figure": "2 aliases",
   "sub": "fit the same low-load data within 3 mV",
   "note": "Different concentration-loss and limiting-current pairs reproduce the same low-load voltages. The planner was challenged to separate them; until measured, the twin reports both.",
   "sources": [
    {
     "path": "output/verification/identifiability.json",
     "sha256": "8868bca2bc76036af56f07c0a5c3bf7bab6520ee6f1664e4835999136fa1e1df"
    }
   ]
  },
  {
   "id": "sofc-verification",
   "chem": "sofc",
   "status": "ok",
   "title": "SOFC conservation and solver checks",
   "figure": "8 of 8 checks",
   "sub": "element, energy, mesh and cross-solver",
   "note": "Largest energy residual 4.2e-08 J. Mesh study covers the 8/16/32-node baseline only, not domain-wide convergence.",
   "sources": [
    {
     "path": "output/sofc-v1/verification.json",
     "sha256": "dbd04c1e2e09d7f9b5245f0a235fd29e757b0a93e4d99191b8440c0f0e158c32"
    }
   ]
  },
  {
   "id": "sofc-benchmark",
   "chem": "sofc",
   "status": "open",
   "title": "SOFC ohmic resistance vs published",
   "figure": "-67% to -58%",
   "sub": "model vs reported cell resistance",
   "note": "Not a like-for-like comparison: the published value is an open-circuit impedance series resistance that includes electrode losses. Marked not comparable; no parameters were fitted.",
   "sources": [
    {
     "path": "output/sofc-v1/public-benchmark.json",
     "sha256": "d3d2e9a601432366ae999ea04b209a8f5d9b08b7b754ca0e09a880ed2460ddb6"
    }
   ]
  },
  {
   "id": "sofc-fixture",
   "chem": "sofc",
   "status": "open",
   "title": "Fixture inductance, quantified",
   "figure": "0.578 µH",
   "sub": "95 % interval 0.542 to 0.614 µH, conditional",
   "note": "Bayesian analysis of the high-frequency SOFC impedance. No correction is installed: identical net coefficients cannot reveal how the fixture and cell split it without reference measurements.",
   "sources": [
    {
     "path": "docs/SOFC_BAYES_CORRECTION_V1.md",
     "sha256": "3bfc6ece746849678ed5e5e8a9024efc6118c2d734a4ed08cebe131a2499e64d"
    },
    {
     "path": "output/sofc-bayes-correction-v1/analysis.json",
     "sha256": "e49bf627f696d6d90084341df8abbb7ad8e3d924e5c7825967023aac2a66104e"
    }
   ]
  },
  {
   "id": "holdout-gate",
   "chem": "pem",
   "status": "block",
   "title": "Holdout validation gate",
   "figure": "Withheld",
   "sub": "8 reasons, validated = false",
   "note": "The gate stays shut until the hold-out is blind, the hardware is independent, lineage is verified and sensor uncertainty is known.",
   "sources": [
    {
     "path": "output/audit/holdout-gate.json",
     "sha256": "fa7ed05a954101fdd915a443afb3fc3eae1a509adc58dc928030fd53e45d5c51"
    }
   ]
  },
  {
   "id": "sofc-gate",
   "chem": "sofc",
   "status": "block",
   "title": "SOFC acceptance gate",
   "figure": "Blocked",
   "sub": "candidate frozen development not validated",
   "note": "Native processing and units unresolved; No independent fixture calibration; No characterized electrode dynamics or hardware covariance; No approved quantitative hardware-specific acceptance limits or unseen cell/batch custody.",
   "sources": [
    {
     "path": "output/sofc-observation-v3/candidate.json",
     "sha256": "172527ef1108e5f9887be1538d21f9f7139c59171b423bea0fdb3c60f97c47d4"
    }
   ]
  },
  {
   "id": "test-plan",
   "chem": "pem",
   "status": "plan",
   "title": "Next test batch, chosen by information",
   "figure": "3 tests · 78 min",
   "sub": "0.12 kg H₂; best 1.06 nats expected information",
   "note": "Ranked 32 candidate conditions on a 10-cell, 280 cm² stack by expected information gain per rig minute. Status: proposed, not executed.",
   "sources": [
    {
     "path": "output/audit/matched-bayesian-plan.json",
     "sha256": "eb752bad7b755713756e654d75c47e5c505a78022b6dfc5fe1dd7e018101c419"
    }
   ]
  }
 ],
 "facts": {
  "PEM_SAMPLES": "12,184",
  "CONS_CASES": "36",
  "CONV_PASS": "4",
  "CONV_N": "4",
  "L_NET": "0.578",
  "L_LO": "0.542",
  "L_HI": "0.614",
  "SOFC_EIS_POINTS": "33",
  "PLAN_N": "3",
  "PLAN_MIN": "78",
  "PLAN_H2": "0.12",
  "GATE_N": "8",
  "PEM_STATUS": "FROZEN_DEVELOPMENT_NOT_VALIDATED",
  "SOFC_STATUS": "FROZEN_DEVELOPMENT_NOT_VALIDATED"
 },
 "holdout_gate_reasons": [
  "DEVELOPMENT_MODEL_NOT_READY",
  "ACCEPTANCE_PROTOCOL_NOT_FROZEN",
  "MEASUREMENT_AUDIT_OPEN",
  "HOLDOUT_NOT_BLIND",
  "HARDWARE_NOT_INDEPENDENT",
  "LINEAGE_NOT_VERIFIED",
  "MISSING_OR_OVERLAPPING_RAW_DATA",
  "SENSOR_UNCERTAINTY_UNVERIFIED"
 ],
 "status": "FROZEN_OUTPUT"
}