{
  "schema_version": 1,
  "note": "T02, T02R, T03 and T04 have independent numerical and browser evidence. Full interactive application gates and source-access limitations remain separate.",
  "gates": [
    {
      "id": "S01",
      "stage": "T02",
      "requirement": "Both flow input modes resolve to identical states for equivalent Qp/Qs and Qt/r.",
      "source": "docs/04_ACCEPTANCE_TESTS.md",
      "verification_command": "uv run --locked pytest tests/test_science.py::test_flow_capacity_indexing_migration_and_scaling",
      "status": "passed",
      "evidence": [
        "docs/implementation/t02-receipt.json",
        "https://github.com/reblocke/single_vent_sim/actions/runs/35548285571",
        "tests/test_science.py::test_flow_capacity_indexing_migration_and_scaling"
      ],
      "tested_commit": "f437e911b545e11e87e311b08891ac1e1326fa71"
    },
    {
      "id": "S02",
      "stage": "T02",
      "requirement": "Capacity=Hb\u00d7kappa in Hb mode; direct B has no hidden Hb conversion.",
      "source": "docs/04_ACCEPTANCE_TESTS.md",
      "verification_command": "uv run --locked pytest tests/test_science.py::test_flow_capacity_indexing_migration_and_scaling",
      "status": "passed",
      "evidence": [
        "docs/implementation/t02-receipt.json",
        "https://github.com/reblocke/single_vent_sim/actions/runs/35548285571",
        "tests/test_science.py::test_flow_capacity_indexing_migration_and_scaling"
      ],
      "tested_commit": "f437e911b545e11e87e311b08891ac1e1326fa71"
    },
    {
      "id": "S03",
      "stage": "T02",
      "requirement": "Factors of 100 are correct for mL blood/kg/min and content per dL. Include a hand-calculated non-unit-flow fixture.",
      "source": "docs/04_ACCEPTANCE_TESTS.md",
      "verification_command": "uv run --locked pytest tests/test_science.py::test_supplied_independent_fixtures tests/test_science.py::test_2000_seeded_conservation_and_feasibility_states",
      "status": "passed",
      "evidence": [
        "docs/implementation/t02-receipt.json",
        "https://github.com/reblocke/single_vent_sim/actions/runs/35548285571",
        "tests/test_science.py::test_supplied_independent_fixtures",
        "tests/test_science.py::test_2000_seeded_conservation_and_feasibility_states"
      ],
      "tested_commit": "f437e911b545e11e87e311b08891ac1e1326fa71"
    },
    {
      "id": "S04",
      "stage": "T02",
      "requirement": "Systemic oxygen balance, pulmonary oxygen balance, complete-mixing identity, and closed-form DO2 match independently.",
      "source": "docs/04_ACCEPTANCE_TESTS.md",
      "verification_command": "uv run --locked pytest tests/test_science.py::test_2000_seeded_conservation_and_feasibility_states",
      "status": "passed",
      "evidence": [
        "docs/implementation/t02-receipt.json",
        "https://github.com/reblocke/single_vent_sim/actions/runs/35548285571",
        "tests/test_science.py::test_2000_seeded_conservation_and_feasibility_states"
      ],
      "tested_commit": "f437e911b545e11e87e311b08891ac1e1326fa71"
    },
    {
      "id": "S05",
      "stage": "T02",
      "requirement": "For admissible positive-demand states, net lung uptake equals M, systemic extraction equals M, DO2=M+venous return, and OER\u00d7Omega=1.",
      "source": "docs/04_ACCEPTANCE_TESTS.md",
      "verification_command": "uv run --locked pytest tests/test_science.py::test_2000_seeded_conservation_and_feasibility_states",
      "status": "passed",
      "evidence": [
        "docs/implementation/t02-receipt.json",
        "https://github.com/reblocke/single_vent_sim/actions/runs/35548285571",
        "tests/test_science.py::test_2000_seeded_conservation_and_feasibility_states"
      ],
      "tested_commit": "f437e911b545e11e87e311b08891ac1e1326fa71"
    },
    {
      "id": "S06",
      "stage": "T02",
      "requirement": "Fick ratio reconstructed from model saturations equals prescribed r except degenerate zero-demand/zero-gap cases.",
      "source": "docs/04_ACCEPTANCE_TESTS.md",
      "verification_command": "uv run --locked pytest tests/test_science.py::test_supplied_independent_fixtures tests/test_science.py::test_2000_seeded_conservation_and_feasibility_states",
      "status": "passed",
      "evidence": [
        "docs/implementation/t02-receipt.json",
        "https://github.com/reblocke/single_vent_sim/actions/runs/35548285571",
        "tests/test_science.py::test_supplied_independent_fixtures",
        "tests/test_science.py::test_2000_seeded_conservation_and_feasibility_states"
      ],
      "tested_commit": "f437e911b545e11e87e311b08891ac1e1326fa71"
    },
    {
      "id": "S07",
      "stage": "T02",
      "requirement": "Hb 10\u219214 fixed-flow example matches every supplied content, saturation, flux, and extraction result.",
      "source": "docs/04_ACCEPTANCE_TESTS.md",
      "verification_command": "uv run --locked pytest tests/test_science.py::test_supplied_independent_fixtures",
      "status": "passed",
      "evidence": [
        "docs/implementation/t02-receipt.json",
        "https://github.com/reblocke/single_vent_sim/actions/runs/35548285571",
        "tests/test_science.py::test_supplied_independent_fixtures"
      ],
      "tested_commit": "f437e911b545e11e87e311b08891ac1e1326fa71"
    },
    {
      "id": "S08",
      "stage": "T02",
      "requirement": "Increasing Hb at fixed flows/M/Spv raises Sa, Ca, Sv, DO2; Ca and DO2 changes equal analytic derivatives; net lung uptake remains unchanged.",
      "source": "docs/04_ACCEPTANCE_TESTS.md",
      "verification_command": "uv run --locked pytest tests/test_science.py::test_supplied_independent_fixtures tests/test_science.py::test_comparisons_masking_decomposition_and_explicit_conversion",
      "status": "passed",
      "evidence": [
        "docs/implementation/t02-receipt.json",
        "https://github.com/reblocke/single_vent_sim/actions/runs/35548285571",
        "tests/test_science.py::test_supplied_independent_fixtures",
        "tests/test_science.py::test_comparisons_masking_decomposition_and_explicit_conversion"
      ],
      "tested_commit": "f437e911b545e11e87e311b08891ac1e1326fa71"
    },
    {
      "id": "S09",
      "stage": "T02",
      "requirement": "Varying Qs at fixed Qp/M/Spv/B preserves Sa but changes DO2 and Cv.",
      "source": "docs/04_ACCEPTANCE_TESTS.md",
      "verification_command": "uv run --locked pytest tests/test_science.py::test_invariances_zero_demand_boundary_and_extremes",
      "status": "passed",
      "evidence": [
        "docs/implementation/t02-receipt.json",
        "https://github.com/reblocke/single_vent_sim/actions/runs/35548285571",
        "tests/test_science.py::test_invariances_zero_demand_boundary_and_extremes"
      ],
      "tested_commit": "f437e911b545e11e87e311b08891ac1e1326fa71"
    },
    {
      "id": "S10",
      "stage": "T02",
      "requirement": "Varying r at fixed Qt increases Sa but produces the specified conditional DO2 maximum, with admissibility masking.",
      "source": "docs/04_ACCEPTANCE_TESTS.md",
      "verification_command": "uv run --locked pytest tests/test_science.py::test_fixed_total_ratio_increasing_saturation_and_conditional_delivery tests/test_science.py::test_optima_existence_objectives_and_independent_search",
      "status": "passed",
      "evidence": [
        "docs/implementation/t02-receipt.json",
        "https://github.com/reblocke/single_vent_sim/actions/runs/35548285571",
        "tests/test_science.py::test_fixed_total_ratio_increasing_saturation_and_conditional_delivery",
        "tests/test_science.py::test_optima_existence_objectives_and_independent_search"
      ],
      "tested_commit": "f437e911b545e11e87e311b08891ac1e1326fa71"
    },
    {
      "id": "S11",
      "stage": "T02",
      "requirement": "Increasing M at fixed flows decreases DO2 and raises net lung uptake until feasibility fails.",
      "source": "docs/04_ACCEPTANCE_TESTS.md",
      "verification_command": "uv run --locked pytest tests/test_science.py::test_invariances_zero_demand_boundary_and_extremes",
      "status": "passed",
      "evidence": [
        "docs/implementation/t02-receipt.json",
        "https://github.com/reblocke/single_vent_sim/actions/runs/35548285571",
        "tests/test_science.py::test_invariances_zero_demand_boundary_and_extremes"
      ],
      "tested_commit": "f437e911b545e11e87e311b08891ac1e1326fa71"
    },
    {
      "id": "S12",
      "stage": "T02",
      "requirement": "Scaling Qp, Qs, M together preserves contents/saturations/OER/Omega and scales fluxes.",
      "source": "docs/04_ACCEPTANCE_TESTS.md",
      "verification_command": "uv run --locked pytest tests/test_science.py::test_flow_capacity_indexing_migration_and_scaling",
      "status": "passed",
      "evidence": [
        "docs/implementation/t02-receipt.json",
        "https://github.com/reblocke/single_vent_sim/actions/runs/35548285571",
        "tests/test_science.py::test_flow_capacity_indexing_migration_and_scaling"
      ],
      "tested_commit": "f437e911b545e11e87e311b08891ac1e1326fa71"
    },
    {
      "id": "S13",
      "stage": "T02",
      "requirement": "M=0 yields equal contents/saturations, net uptake/use=0, OER=0 when DO2>0, and undefined Omega/Fick estimate.",
      "source": "docs/04_ACCEPTANCE_TESTS.md",
      "verification_command": "uv run --locked pytest tests/test_science.py::test_invariances_zero_demand_boundary_and_extremes",
      "status": "passed",
      "evidence": [
        "docs/implementation/t02-receipt.json",
        "https://github.com/reblocke/single_vent_sim/actions/runs/35548285571",
        "tests/test_science.py::test_invariances_zero_demand_boundary_and_extremes"
      ],
      "tested_commit": "f437e911b545e11e87e311b08891ac1e1326fa71"
    },
    {
      "id": "S14",
      "stage": "T02",
      "requirement": "M=0 and Spv=0 yield degenerate zero-oxygen state, not an OER or Omega of zero by arbitrary convention.",
      "source": "docs/04_ACCEPTANCE_TESTS.md",
      "verification_command": "uv run --locked pytest tests/test_science.py::test_invariances_zero_demand_boundary_and_extremes",
      "status": "passed",
      "evidence": [
        "docs/implementation/t02-receipt.json",
        "https://github.com/reblocke/single_vent_sim/actions/runs/35548285571",
        "tests/test_science.py::test_invariances_zero_demand_boundary_and_extremes"
      ],
      "tested_commit": "f437e911b545e11e87e311b08891ac1e1326fa71"
    },
    {
      "id": "S15",
      "stage": "T02",
      "requirement": "M=positive and Spv=0 is infeasible; invalid input numbers/domain combinations are rejected.",
      "source": "docs/04_ACCEPTANCE_TESTS.md",
      "verification_command": "uv run --locked pytest tests/test_science.py::test_invariances_zero_demand_boundary_and_extremes",
      "status": "passed",
      "evidence": [
        "docs/implementation/t02-receipt.json",
        "https://github.com/reblocke/single_vent_sim/actions/runs/35548285571",
        "tests/test_science.py::test_invariances_zero_demand_boundary_and_extremes"
      ],
      "tested_commit": "f437e911b545e11e87e311b08891ac1e1326fa71"
    },
    {
      "id": "S16",
      "stage": "T02",
      "requirement": "Cv<0, including a plausible-looking Sa with high r, is masked and never clipped into a feasible point.",
      "source": "docs/04_ACCEPTANCE_TESTS.md",
      "verification_command": "uv run --locked pytest tests/test_science.py::test_supplied_independent_fixtures tests/test_science.py::test_invariances_zero_demand_boundary_and_extremes",
      "status": "passed",
      "evidence": [
        "docs/implementation/t02-receipt.json",
        "https://github.com/reblocke/single_vent_sim/actions/runs/35548285571",
        "tests/test_science.py::test_supplied_independent_fixtures",
        "tests/test_science.py::test_invariances_zero_demand_boundary_and_extremes"
      ],
      "tested_commit": "f437e911b545e11e87e311b08891ac1e1326fa71"
    },
    {
      "id": "S17",
      "stage": "T02",
      "requirement": "M at the zero-venous limit yields a distinctly labeled boundary; values on either side classify correctly with stated tolerance.",
      "source": "docs/04_ACCEPTANCE_TESTS.md",
      "verification_command": "uv run --locked pytest tests/test_science.py::test_invariances_zero_demand_boundary_and_extremes",
      "status": "passed",
      "evidence": [
        "docs/implementation/t02-receipt.json",
        "https://github.com/reblocke/single_vent_sim/actions/runs/35548285571",
        "tests/test_science.py::test_invariances_zero_demand_boundary_and_extremes",
        "docs/implementation/hardening/qualification.json",
        "docs/implementation/hardening/acceptance.md",
        "https://github.com/reblocke/single_vent_sim/actions/runs/35637211536"
      ],
      "tested_commit": "7f7a1ba2b6665cbd39a2822f092c1a1df94f902c",
      "historical_status": "passed",
      "followup": "Targeted hardening: new interface, boundary, export and presentation regressions require qualification.",
      "followup_status": "requalified by focused regressions and full fresh-runner CI"
    },
    {
      "id": "S18",
      "stage": "T02",
      "requirement": "A<4M has no admissible r; A=4M has the sole boundary r=1; A>4M yields the analytic reciprocal root interval.",
      "source": "docs/04_ACCEPTANCE_TESTS.md",
      "verification_command": "uv run --locked pytest tests/test_science.py::test_optima_existence_objectives_and_independent_search",
      "status": "passed",
      "evidence": [
        "docs/implementation/t02-receipt.json",
        "https://github.com/reblocke/single_vent_sim/actions/runs/35548285571",
        "tests/test_science.py::test_optima_existence_objectives_and_independent_search",
        "docs/implementation/hardening/qualification.json",
        "docs/implementation/hardening/acceptance.md",
        "https://github.com/reblocke/single_vent_sim/actions/runs/35637211536"
      ],
      "tested_commit": "7f7a1ba2b6665cbd39a2822f092c1a1df94f902c",
      "historical_status": "passed",
      "followup": "Targeted hardening: new interface, boundary, export and presentation regressions require qualification.",
      "followup_status": "requalified by focused regressions and full fresh-runner CI"
    },
    {
      "id": "S19",
      "stage": "T02",
      "requirement": "Conditional optimum matches derivative/search; no formal interior optimum is promoted when no admissible state exists.",
      "source": "docs/04_ACCEPTANCE_TESTS.md",
      "verification_command": "uv run --locked pytest tests/test_science.py::test_optima_existence_objectives_and_independent_search",
      "status": "passed",
      "evidence": [
        "docs/implementation/t02-receipt.json",
        "https://github.com/reblocke/single_vent_sim/actions/runs/35548285571",
        "tests/test_science.py::test_optima_existence_objectives_and_independent_search",
        "docs/implementation/hardening/qualification.json",
        "docs/implementation/hardening/acceptance.md",
        "https://github.com/reblocke/single_vent_sim/actions/runs/35637211536"
      ],
      "tested_commit": "7f7a1ba2b6665cbd39a2822f092c1a1df94f902c",
      "historical_status": "passed",
      "followup": "Targeted hardening: new interface, boundary, export and presentation regressions require qualification.",
      "followup_status": "requalified by focused regressions and full fresh-runner CI"
    },
    {
      "id": "S20",
      "stage": "T02",
      "requirement": "Spv inverse demo matches exact ratios and distinct finite-error denominators; local sensitivity has the correct negative sign.",
      "source": "docs/04_ACCEPTANCE_TESTS.md",
      "verification_command": "uv run --locked pytest tests/test_science.py::test_inverse_exact_and_distinct_error_denominators",
      "status": "passed",
      "evidence": [
        "docs/implementation/t02-receipt.json",
        "https://github.com/reblocke/single_vent_sim/actions/runs/35548285571",
        "tests/test_science.py::test_inverse_exact_and_distinct_error_denominators"
      ],
      "tested_commit": "f437e911b545e11e87e311b08891ac1e1326fa71"
    },
    {
      "id": "S21",
      "stage": "T02",
      "requirement": "Impossible inverse ordering or denominator <=0 yields no finite estimate, not a clipped/high number.",
      "source": "docs/04_ACCEPTANCE_TESTS.md",
      "verification_command": "uv run --locked pytest tests/test_science.py::test_inverse_exact_and_distinct_error_denominators",
      "status": "passed",
      "evidence": [
        "docs/implementation/t02-receipt.json",
        "https://github.com/reblocke/single_vent_sim/actions/runs/35548285571",
        "tests/test_science.py::test_inverse_exact_and_distinct_error_denominators"
      ],
      "tested_commit": "f437e911b545e11e87e311b08891ac1e1326fa71"
    },
    {
      "id": "S22",
      "stage": "T02",
      "requirement": "At least 2,000 seeded randomized parameter states verify identities and feasibility against an independent scalar oracle. Include all-infeasible grids.",
      "source": "docs/04_ACCEPTANCE_TESTS.md",
      "verification_command": "uv run --locked pytest tests/test_science.py::test_2000_seeded_conservation_and_feasibility_states tests/test_science.py::test_grid_orientation_physical_log_coordinates_slices_and_csv",
      "status": "passed",
      "evidence": [
        "docs/implementation/t02-receipt.json",
        "https://github.com/reblocke/single_vent_sim/actions/runs/35548285571",
        "tests/test_science.py::test_2000_seeded_conservation_and_feasibility_states",
        "tests/test_science.py::test_grid_orientation_physical_log_coordinates_slices_and_csv"
      ],
      "tested_commit": "f437e911b545e11e87e311b08891ac1e1326fa71"
    },
    {
      "id": "S23",
      "stage": "T04",
      "requirement": "Scalar, vectorized, and browser outputs agree; mesh orientation is `[y,x]` and transforms preserve physical coordinates.",
      "source": "docs/04_ACCEPTANCE_TESTS.md",
      "verification_command": "make check",
      "status": "passed",
      "evidence": [
        "docs/implementation/t04-receipt.json",
        "https://github.com/reblocke/single_vent_sim/actions/runs/35551019008",
        "web/tests/parity.spec.ts",
        "tests/test_commands.py",
        "docs/implementation/hardening/qualification.json",
        "docs/implementation/hardening/acceptance.md",
        "https://github.com/reblocke/single_vent_sim/actions/runs/35637211536"
      ],
      "tested_commit": "7f7a1ba2b6665cbd39a2822f092c1a1df94f902c",
      "historical_status": "passed",
      "followup": "Targeted hardening: new interface, boundary, export and presentation regressions require qualification.",
      "followup_status": "requalified by focused regressions and full fresh-runner CI"
    },
    {
      "id": "S24",
      "stage": "T04",
      "requirement": "JSON/CSV round trips preserve input mode, coefficient, precision, undefined values, feasibility, and grid indexing.",
      "source": "docs/04_ACCEPTANCE_TESTS.md",
      "verification_command": "make check",
      "status": "passed",
      "evidence": [
        "docs/implementation/t04-receipt.json",
        "https://github.com/reblocke/single_vent_sim/actions/runs/35551019008",
        "web/tests/parity.spec.ts",
        "tests/test_commands.py"
      ],
      "tested_commit": "9b483e00d32079b25ad654242318ed8b6290a799"
    },
    {
      "id": "S25",
      "stage": "T03",
      "requirement": "Source discrepancy fixtures retain the stated 22 versus calculated 20.7 distinction and never silently tune B to match a picture.",
      "source": "docs/04_ACCEPTANCE_TESTS.md",
      "verification_command": "uv run --locked pytest tests/test_paper.py::test_source_landmarks_computed_fields_are_independent_and_discrepancies_visible",
      "status": "passed",
      "evidence": [
        "tests/test_paper.py",
        "docs/implementation/t03-receipt.json",
        "https://github.com/reblocke/single_vent_sim/actions/runs/35550041695"
      ],
      "tested_commit": "550fc4f584d0c276e8c768652c19942629092df8"
    },
    {
      "id": "V01",
      "stage": "T05",
      "requirement": "E1\u2013E5 presets load the exact configured independent inputs, fixed inputs, outputs, and explanatory contract.",
      "source": "docs/04_ACCEPTANCE_TESTS.md",
      "verification_command": "make test-browser",
      "status": "passed",
      "evidence": [
        "docs/implementation/t07-receipt.json",
        "https://github.com/reblocke/single_vent_sim/actions/runs/35563684930",
        "web/tests/explore.spec.ts: forward and derived scenes publish paired plots with coherent numerical state"
      ],
      "tested_commit": "78618a3d0a424444d3a16cd77758bb4226eae247"
    },
    {
      "id": "V02",
      "stage": "T05",
      "requirement": "Both plots, inspector, captions, and state export reference one configuration generation. Artificially delay worker responses and prove stale responses cannot repaint.",
      "source": "docs/04_ACCEPTANCE_TESTS.md",
      "verification_command": "make test-browser",
      "status": "passed",
      "evidence": [
        "docs/implementation/t07-receipt.json",
        "https://github.com/reblocke/single_vent_sim/actions/runs/35563684930",
        "web/tests/parity.spec.ts: delayed/coalesced worker requests",
        "web/tests/explore.spec.ts: rapid edits and invalid axes",
        "web/tests/export.spec.ts: changes and zoom during export cancel the download"
      ],
      "tested_commit": "78618a3d0a424444d3a16cd77758bb4226eae247"
    },
    {
      "id": "V03",
      "stage": "T05",
      "requirement": "Hover/pin A/B uses the same physical state on both plots; asymmetric known x/y fixtures expose transposition or log-coordinate bugs.",
      "source": "docs/04_ACCEPTANCE_TESTS.md",
      "verification_command": "make test-browser",
      "status": "passed",
      "evidence": [
        "docs/implementation/t07-receipt.json",
        "https://github.com/reblocke/single_vent_sim/actions/runs/35563684930",
        "web/tests/explore.spec.ts: linked map hover and pins preserve asymmetric physical coordinates",
        "web/tests/compare.spec.ts: pinned prescribed states and local resistance pairs",
        "docs/implementation/hardening/qualification.json",
        "docs/implementation/hardening/acceptance.md",
        "https://github.com/reblocke/single_vent_sim/actions/runs/35637211536"
      ],
      "tested_commit": "7f7a1ba2b6665cbd39a2822f092c1a1df94f902c",
      "historical_status": "passed",
      "followup": "Targeted hardening: new interface, boundary, export and presentation regressions require qualification.",
      "followup_status": "requalified by focused regressions and full fresh-runner CI"
    },
    {
      "id": "V04",
      "stage": "T05",
      "requirement": "Masks and contour boundaries match engine states. No contour crosses an invalid region; no negative saturation is rendered as a real physiologic result.",
      "source": "docs/04_ACCEPTANCE_TESTS.md",
      "verification_command": "make test-browser",
      "status": "passed",
      "evidence": [
        "docs/implementation/t07-receipt.json",
        "https://github.com/reblocke/single_vent_sim/actions/runs/35563684930",
        "web/tests/final-interactions.spec.ts: rendered masks and separate criterion contours match unrounded engine matrices",
        "web/tests/explore.spec.ts: all-infeasible maps",
        "docs/implementation/hardening/qualification.json",
        "docs/implementation/hardening/acceptance.md",
        "https://github.com/reblocke/single_vent_sim/actions/runs/35637211536"
      ],
      "tested_commit": "7f7a1ba2b6665cbd39a2822f092c1a1df94f902c",
      "historical_status": "passed",
      "followup": "Targeted hardening: new interface, boundary, export and presentation regressions require qualification.",
      "followup_status": "requalified by focused regressions and full fresh-runner CI"
    },
    {
      "id": "V05",
      "stage": "T05",
      "requirement": "Net uptake on E1 is visually constant over admissible cells, with no false gradient from tiny roundoff.",
      "source": "docs/04_ACCEPTANCE_TESTS.md",
      "verification_command": "make check",
      "status": "passed",
      "evidence": [
        "docs/implementation/t05-overlay-receipt.json",
        "web/tests/explore.spec.ts: constant uptake, strict Hb13 criterion and log-coordinate selection"
      ],
      "tested_commit": "51304a63fdbc779b7c1edf0130238994995b6575"
    },
    {
      "id": "V06",
      "stage": "T05",
      "requirement": "In E3, the Sa field is invariant along Qs at fixed Qp within the admissible region.",
      "source": "docs/04_ACCEPTANCE_TESTS.md",
      "verification_command": "make test-browser",
      "status": "passed",
      "evidence": [
        "docs/implementation/t07-receipt.json",
        "https://github.com/reblocke/single_vent_sim/actions/runs/35563684930",
        "web/tests/final-interactions.spec.ts: E3 invariance and Hb derived boundaries preserve distinct meanings"
      ],
      "tested_commit": "78618a3d0a424444d3a16cd77758bb4226eae247"
    },
    {
      "id": "V07",
      "stage": "T05",
      "requirement": "Fixed absolute color scales and shared A/B scales work; out-of-range values are disclosed; delta scale centered on zero.",
      "source": "docs/04_ACCEPTANCE_TESTS.md",
      "verification_command": "make test-browser",
      "status": "passed",
      "evidence": [
        "docs/implementation/t07-receipt.json",
        "https://github.com/reblocke/single_vent_sim/actions/runs/35563684930",
        "web/tests/explore.spec.ts: constant uptake, strict Hb13 criterion and log-coordinate selection (fixed scales and refits)",
        "web/tests/resistance.spec.ts: absolute pressure/output scales",
        "web/src/budget-plots.ts: shared A/B native-unit axis",
        "web/src/plots.ts: symmetric relative-change scales and disclosed off-scale values",
        "docs/implementation/hardening/qualification.json",
        "docs/implementation/hardening/acceptance.md",
        "https://github.com/reblocke/single_vent_sim/actions/runs/35637211536"
      ],
      "tested_commit": "7f7a1ba2b6665cbd39a2822f092c1a1df94f902c",
      "historical_status": "passed",
      "followup": "Targeted hardening: new interface, boundary, export and presentation regressions require qualification.",
      "followup_status": "requalified by focused regressions and full fresh-runner CI"
    },
    {
      "id": "V08",
      "stage": "T06",
      "requirement": "C1\u2013C4 comparisons show the prescribed changes and all oxygen-ledger identities with correct units and rounding.",
      "source": "docs/04_ACCEPTANCE_TESTS.md",
      "verification_command": "make test-browser",
      "status": "passed",
      "evidence": [
        "docs/implementation/t06-foundation-receipt.json",
        "tests/test_comparison_presets.py",
        "web/tests/compare.spec.ts: C1-C12 declared changes and budgets"
      ],
      "tested_commit": "0341f7ac106823eebc031c6e1f703cd5d27a9e23"
    },
    {
      "id": "V09",
      "stage": "T05",
      "requirement": "Capacity switching does not combine mutually inconsistent B/Hb/kappa constraints or retain an inactive Hb axis.",
      "source": "docs/04_ACCEPTANCE_TESTS.md",
      "verification_command": "make check",
      "status": "passed",
      "evidence": [
        "docs/implementation/t05-overlay-receipt.json",
        "web/tests/explore.spec.ts: mode switches preserve selected flows and explicit basis conversion"
      ],
      "tested_commit": "51304a63fdbc779b7c1edf0130238994995b6575"
    },
    {
      "id": "V10",
      "stage": "T05",
      "requirement": "Ratio/independent-flow mode switching preserves the selected state and updates what is held fixed.",
      "source": "docs/04_ACCEPTANCE_TESTS.md",
      "verification_command": "make check",
      "status": "passed",
      "evidence": [
        "docs/implementation/t05-overlay-receipt.json",
        "web/tests/explore.spec.ts: mode switches preserve selected flows and explicit basis conversion"
      ],
      "tested_commit": "51304a63fdbc779b7c1edf0130238994995b6575"
    },
    {
      "id": "V11",
      "stage": "T05",
      "requirement": "Folded paper curves preserve parameter order and break at masked intervals rather than sorting their x metric.",
      "source": "docs/04_ACCEPTANCE_TESTS.md",
      "verification_command": "make test-browser",
      "status": "passed",
      "evidence": [
        "docs/implementation/t06-foundation-receipt.json",
        "tests/test_paper.py",
        "web/tests/laboratory.spec.ts: source workbenches retain parameter order"
      ],
      "tested_commit": "0341f7ac106823eebc031c6e1f703cd5d27a9e23"
    },
    {
      "id": "V12",
      "stage": "T05",
      "requirement": "All-infeasible, zero-demand, undefined-index, worker-loading, worker-error, and malformed-import states have useful non-crashing displays.",
      "source": "docs/04_ACCEPTANCE_TESTS.md",
      "verification_command": "make test-browser",
      "status": "passed",
      "evidence": [
        "docs/implementation/t07-receipt.json",
        "https://github.com/reblocke/single_vent_sim/actions/runs/35563684930",
        "web/tests/bootstrap.spec.ts: runtime download failure and retry",
        "web/tests/explore.spec.ts: zero-demand, undefined index, all-infeasible and invalid-axis displays",
        "web/tests/export.spec.ts: malformed imported state leaves display intact",
        "docs/implementation/hardening/qualification.json",
        "docs/implementation/hardening/acceptance.md",
        "https://github.com/reblocke/single_vent_sim/actions/runs/35637211536"
      ],
      "tested_commit": "7f7a1ba2b6665cbd39a2822f092c1a1df94f902c",
      "historical_status": "passed",
      "followup": "Targeted hardening: new interface, boundary, export and presentation regressions require qualification.",
      "followup_status": "requalified by focused regressions and full fresh-runner CI"
    },
    {
      "id": "V13",
      "stage": "T05",
      "requirement": "Keyboard, touch, and numeric input alternatives work. Units and important results are not available only on hover.",
      "source": "docs/04_ACCEPTANCE_TESTS.md",
      "verification_command": "make test-browser",
      "status": "passed",
      "evidence": [
        "docs/implementation/t07-receipt.json",
        "https://github.com/reblocke/single_vent_sim/actions/runs/35563684930",
        "web/tests/final-interactions.spec.ts: touch and keyboard alternatives reach both providers and wide tables",
        "web/tests/explore.spec.ts: numeric selection and log coordinates",
        "docs/implementation/hardening/qualification.json",
        "docs/implementation/hardening/acceptance.md",
        "https://github.com/reblocke/single_vent_sim/actions/runs/35637211536"
      ],
      "tested_commit": "7f7a1ba2b6665cbd39a2822f092c1a1df94f902c",
      "historical_status": "passed",
      "followup": "Targeted hardening: new interface, boundary, export and presentation regressions require qualification.",
      "followup_status": "requalified by focused regressions and full fresh-runner CI"
    },
    {
      "id": "V14",
      "stage": "T05",
      "requirement": "Desktop/tablet/mobile screenshots have no clipped legends, overlap, unlabelled controls, or horizontal page overflow.",
      "source": "docs/04_ACCEPTANCE_TESTS.md",
      "verification_command": "make test-browser",
      "status": "passed",
      "evidence": [
        "docs/implementation/t07-receipt.json",
        "https://github.com/reblocke/single_vent_sim/actions/runs/35563684930",
        "web/tests/explore.spec.ts: desktop tablet and phone layouts",
        "web/tests/compare.spec.ts: diagrams and budgets at tablet and phone widths",
        "web/tests/resistance.spec.ts: mobile controls",
        "web/tests/laboratory.spec.ts: paper and inverse phone screenshots",
        "web/tests/final-interactions.spec.ts: model phone screenshot",
        "docs/implementation/hardening/qualification.json",
        "docs/implementation/hardening/acceptance.md",
        "https://github.com/reblocke/single_vent_sim/actions/runs/35637211536"
      ],
      "tested_commit": "7f7a1ba2b6665cbd39a2822f092c1a1df94f902c",
      "historical_status": "passed",
      "followup": "Targeted hardening: new interface, boundary, export and presentation regressions require qualification.",
      "followup_status": "requalified by focused regressions and full fresh-runner CI"
    },
    {
      "id": "V15",
      "stage": "T07",
      "requirement": "Downloaded PNG/SVG and CSV/JSON contain the same inputs, colorscale, masks, values, and version as the visible plot.",
      "source": "docs/04_ACCEPTANCE_TESTS.md",
      "verification_command": "make test-browser",
      "status": "passed",
      "evidence": [
        "docs/implementation/t07-receipt.json",
        "https://github.com/reblocke/single_vent_sim/actions/runs/35563684930",
        "web/tests/export.spec.ts: actual ZIP CRC, manifest schema, file hashes, unrounded CSV matrices, orientation, image metadata and exact configuration",
        "web/tests/export.spec.ts: zoom during image rendering aborts mismatched ranges",
        "docs/implementation/hardening/qualification.json",
        "docs/implementation/hardening/acceptance.md",
        "https://github.com/reblocke/single_vent_sim/actions/runs/35637211536"
      ],
      "tested_commit": "7f7a1ba2b6665cbd39a2822f092c1a1df94f902c",
      "historical_status": "passed",
      "followup": "Targeted hardening: new interface, boundary, export and presentation regressions require qualification.",
      "followup_status": "requalified by focused regressions and full fresh-runner CI"
    },
    {
      "id": "V16",
      "stage": "T07",
      "requirement": "Color/appearance comparisons are not inferred solely from screenshot hashes; tests also assert numerical/DOM results.",
      "source": "docs/04_ACCEPTANCE_TESTS.md",
      "verification_command": "make test-browser",
      "status": "passed",
      "evidence": [
        "docs/implementation/t07-receipt.json",
        "https://github.com/reblocke/single_vent_sim/actions/runs/35563684930",
        "web/tests/final-interactions.spec.ts: rendered heatmap matrices, masks, contours and DOM states",
        "web/tests/export.spec.ts: numerical export assertions independent of screenshots"
      ],
      "tested_commit": "78618a3d0a424444d3a16cd77758bb4226eae247"
    },
    {
      "id": "A01",
      "stage": "T02",
      "requirement": "Equivalent per-kg/native-BSA states with supplied mass/BSA preserve saturations/content/ratios and scale every transport quantity correctly.",
      "source": "docs/07_AHMED_HEMOGLOBIN_EXTENSION.md",
      "verification_command": "uv run --locked pytest tests/test_science.py::test_flow_capacity_indexing_migration_and_scaling",
      "status": "passed",
      "evidence": [
        "docs/implementation/t02-receipt.json",
        "https://github.com/reblocke/single_vent_sim/actions/runs/35548285571",
        "tests/test_science.py::test_flow_capacity_indexing_migration_and_scaling"
      ],
      "tested_commit": "f437e911b545e11e87e311b08891ac1e1326fa71"
    },
    {
      "id": "A02",
      "stage": "T02",
      "requirement": "CI inputs in L/min/m2 convert by1000 into the common mL-flow engine; native factor10 and common factor100 equations agree.",
      "source": "docs/07_AHMED_HEMOGLOBIN_EXTENSION.md",
      "verification_command": "uv run --locked pytest tests/test_science.py::test_2000_seeded_indexed_boundary_derivative_and_interval_properties",
      "status": "passed",
      "evidence": [
        "docs/implementation/t02-receipt.json",
        "https://github.com/reblocke/single_vent_sim/actions/runs/35548285571",
        "tests/test_science.py::test_2000_seeded_indexed_boundary_derivative_and_interval_properties"
      ],
      "tested_commit": "f437e911b545e11e87e311b08891ac1e1326fa71"
    },
    {
      "id": "A03",
      "stage": "T02",
      "requirement": "Mixed-basis inputs/VO2 keys and area values under kg output keys are rejected; no implicit BSA.",
      "source": "docs/07_AHMED_HEMOGLOBIN_EXTENSION.md",
      "verification_command": "uv run --locked pytest tests/test_inputs.py",
      "status": "passed",
      "evidence": [
        "docs/implementation/t02-receipt.json",
        "https://github.com/reblocke/single_vent_sim/actions/runs/35548285571",
        "tests/test_inputs.py"
      ],
      "tested_commit": "f437e911b545e11e87e311b08891ac1e1326fa71"
    },
    {
      "id": "A04",
      "stage": "T02",
      "requirement": "Legacy V1 migration preserves numeric results and does not change the declared capacity convention.",
      "source": "docs/07_AHMED_HEMOGLOBIN_EXTENSION.md",
      "verification_command": "uv run --locked pytest tests/test_science.py::test_flow_capacity_indexing_migration_and_scaling",
      "status": "passed",
      "evidence": [
        "docs/implementation/t02-receipt.json",
        "https://github.com/reblocke/single_vent_sim/actions/runs/35548285571",
        "tests/test_science.py::test_flow_capacity_indexing_migration_and_scaling"
      ],
      "tested_commit": "f437e911b545e11e87e311b08891ac1e1326fa71"
    },
    {
      "id": "A05",
      "stage": "T02",
      "requirement": "New fixture saturation/content/flux/OER values match an independent conservation oracle.",
      "source": "docs/07_AHMED_HEMOGLOBIN_EXTENSION.md",
      "verification_command": "uv run --locked pytest tests/test_science.py::test_supplied_independent_fixtures tests/test_science.py::test_2000_seeded_indexed_boundary_derivative_and_interval_properties",
      "status": "passed",
      "evidence": [
        "docs/implementation/t02-receipt.json",
        "https://github.com/reblocke/single_vent_sim/actions/runs/35548285571",
        "tests/test_science.py::test_supplied_independent_fixtures",
        "tests/test_science.py::test_2000_seeded_indexed_boundary_derivative_and_interval_properties"
      ],
      "tested_commit": "f437e911b545e11e87e311b08891ac1e1326fa71"
    },
    {
      "id": "A06",
      "stage": "T02",
      "requirement": "Model admissibility and all selected-criterion statuses are distinct; subcriterion admissible points remain plottable.",
      "source": "docs/07_AHMED_HEMOGLOBIN_EXTENSION.md",
      "verification_command": "uv run --locked pytest tests/test_science.py::test_criteria_boundaries_and_hb13_not_rounded_into_passing tests/test_science.py::test_boundary_special_cases_and_ratio_intervals",
      "status": "passed",
      "evidence": [
        "docs/implementation/t02-receipt.json",
        "https://github.com/reblocke/single_vent_sim/actions/runs/35548285571",
        "tests/test_science.py::test_criteria_boundaries_and_hb13_not_rounded_into_passing",
        "tests/test_science.py::test_boundary_special_cases_and_ratio_intervals",
        "docs/implementation/hardening/qualification.json",
        "docs/implementation/hardening/acceptance.md",
        "https://github.com/reblocke/single_vent_sim/actions/runs/35637211536"
      ],
      "tested_commit": "7f7a1ba2b6665cbd39a2822f092c1a1df94f902c",
      "historical_status": "passed",
      "followup": "Targeted hardening: new interface, boundary, export and presentation regressions require qualification.",
      "followup_status": "requalified by focused regressions and full fresh-runner CI"
    },
    {
      "id": "A07",
      "stage": "T02",
      "requirement": "At the Hb13 r1 teaching point, Sv criterion is met but Sa criterion is not; Hb13 is not hard-coded as passing.",
      "source": "docs/07_AHMED_HEMOGLOBIN_EXTENSION.md",
      "verification_command": "uv run --locked pytest tests/test_science.py::test_criteria_boundaries_and_hb13_not_rounded_into_passing",
      "status": "passed",
      "evidence": [
        "docs/implementation/t02-receipt.json",
        "https://github.com/reblocke/single_vent_sim/actions/runs/35548285571",
        "tests/test_science.py::test_criteria_boundaries_and_hb13_not_rounded_into_passing"
      ],
      "tested_commit": "f437e911b545e11e87e311b08891ac1e1326fa71"
    },
    {
      "id": "A08",
      "stage": "T02",
      "requirement": "Hb boundary components and binding criterion agree with forward evaluation just below/on/above the calculated boundary.",
      "source": "docs/07_AHMED_HEMOGLOBIN_EXTENSION.md",
      "verification_command": "uv run --locked pytest tests/test_science.py::test_criteria_boundaries_and_hb13_not_rounded_into_passing tests/test_science.py::test_2000_seeded_indexed_boundary_derivative_and_interval_properties",
      "status": "passed",
      "evidence": [
        "docs/implementation/t02-receipt.json",
        "https://github.com/reblocke/single_vent_sim/actions/runs/35548285571",
        "tests/test_science.py::test_criteria_boundaries_and_hb13_not_rounded_into_passing",
        "tests/test_science.py::test_2000_seeded_indexed_boundary_derivative_and_interval_properties"
      ],
      "tested_commit": "f437e911b545e11e87e311b08891ac1e1326fa71"
    },
    {
      "id": "A09",
      "stage": "T02",
      "requirement": "CI boundary solver agrees with forward evaluation and includes the full r-dependence.",
      "source": "docs/07_AHMED_HEMOGLOBIN_EXTENSION.md",
      "verification_command": "uv run --locked pytest tests/test_science.py::test_criteria_boundaries_and_hb13_not_rounded_into_passing",
      "status": "passed",
      "evidence": [
        "docs/implementation/t02-receipt.json",
        "https://github.com/reblocke/single_vent_sim/actions/runs/35548285571",
        "tests/test_science.py::test_criteria_boundaries_and_hb13_not_rounded_into_passing"
      ],
      "tested_commit": "f437e911b545e11e87e311b08891ac1e1326fa71"
    },
    {
      "id": "A10",
      "stage": "T02",
      "requirement": "Demand-boundary solver agrees with forward evaluation; selected demand margin is distinct from the Cv0 mathematical limit.",
      "source": "docs/07_AHMED_HEMOGLOBIN_EXTENSION.md",
      "verification_command": "uv run --locked pytest tests/test_science.py::test_criteria_boundaries_and_hb13_not_rounded_into_passing",
      "status": "passed",
      "evidence": [
        "docs/implementation/t02-receipt.json",
        "https://github.com/reblocke/single_vent_sim/actions/runs/35548285571",
        "tests/test_science.py::test_criteria_boundaries_and_hb13_not_rounded_into_passing"
      ],
      "tested_commit": "f437e911b545e11e87e311b08891ac1e1326fa71"
    },
    {
      "id": "A11",
      "stage": "T02",
      "requirement": "Spv at/below a criterion gives no finite positive-demand solution; M0 and undefined-limit cases produce typed statuses, not NaN/Infinity.",
      "source": "docs/07_AHMED_HEMOGLOBIN_EXTENSION.md",
      "verification_command": "uv run --locked pytest tests/test_science.py::test_boundary_special_cases_and_ratio_intervals",
      "status": "passed",
      "evidence": [
        "docs/implementation/t02-receipt.json",
        "https://github.com/reblocke/single_vent_sim/actions/runs/35548285571",
        "tests/test_science.py::test_boundary_special_cases_and_ratio_intervals"
      ],
      "tested_commit": "f437e911b545e11e87e311b08891ac1e1326fa71"
    },
    {
      "id": "A12",
      "stage": "T02",
      "requirement": "Analytic qualifying-r intervals match independently evaluated states, reciprocal venous roots, and empty/tangent/intersected cases.",
      "source": "docs/07_AHMED_HEMOGLOBIN_EXTENSION.md",
      "verification_command": "uv run --locked pytest tests/test_science.py::test_boundary_special_cases_and_ratio_intervals tests/test_science.py::test_2000_seeded_indexed_boundary_derivative_and_interval_properties tests/test_science.py::test_ratio_tangent_and_strict_tolerance_neighbors",
      "status": "passed",
      "evidence": [
        "docs/implementation/t02-receipt.json",
        "https://github.com/reblocke/single_vent_sim/actions/runs/35548285571",
        "tests/test_science.py::test_boundary_special_cases_and_ratio_intervals",
        "tests/test_science.py::test_2000_seeded_indexed_boundary_derivative_and_interval_properties",
        "tests/test_science.py::test_ratio_tangent_and_strict_tolerance_neighbors",
        "docs/implementation/hardening/qualification.json",
        "docs/implementation/hardening/acceptance.md",
        "https://github.com/reblocke/single_vent_sim/actions/runs/35637211536"
      ],
      "tested_commit": "7f7a1ba2b6665cbd39a2822f092c1a1df94f902c",
      "historical_status": "passed",
      "followup": "Targeted hardening: new interface, boundary, export and presentation regressions require qualification.",
      "followup_status": "requalified by focused regressions and full fresh-runner CI"
    },
    {
      "id": "A13",
      "stage": "T02",
      "requirement": "Hb derivatives and finite increments agree with centered finite differences; M0 saturation sensitivities are zero.",
      "source": "docs/07_AHMED_HEMOGLOBIN_EXTENSION.md",
      "verification_command": "uv run --locked pytest tests/test_science.py::test_2000_seeded_indexed_boundary_derivative_and_interval_properties tests/test_science.py::test_no_hb_breakpoint_zero_sensitivities_and_infeasible_endpoint",
      "status": "passed",
      "evidence": [
        "docs/implementation/t02-receipt.json",
        "https://github.com/reblocke/single_vent_sim/actions/runs/35548285571",
        "tests/test_science.py::test_2000_seeded_indexed_boundary_derivative_and_interval_properties",
        "tests/test_science.py::test_no_hb_breakpoint_zero_sensitivities_and_infeasible_endpoint"
      ],
      "tested_commit": "f437e911b545e11e87e311b08891ac1e1326fa71"
    },
    {
      "id": "A14",
      "stage": "T02",
      "requirement": "There is no hard-coded break at Hb12 or13; positive-demand Sa/Sv second derivatives stay negative throughout the admissible interior.",
      "source": "docs/07_AHMED_HEMOGLOBIN_EXTENSION.md",
      "verification_command": "uv run --locked pytest tests/test_science.py::test_2000_seeded_indexed_boundary_derivative_and_interval_properties tests/test_science.py::test_no_hb_breakpoint_zero_sensitivities_and_infeasible_endpoint",
      "status": "passed",
      "evidence": [
        "docs/implementation/t02-receipt.json",
        "https://github.com/reblocke/single_vent_sim/actions/runs/35548285571",
        "tests/test_science.py::test_2000_seeded_indexed_boundary_derivative_and_interval_properties",
        "tests/test_science.py::test_no_hb_breakpoint_zero_sensitivities_and_infeasible_endpoint"
      ],
      "tested_commit": "f437e911b545e11e87e311b08891ac1e1326fa71"
    },
    {
      "id": "A15",
      "stage": "T02",
      "requirement": "Fixed-flow DO2 slope is constant across Hb and net lung uptake remains M; dSv/dHb=(1+r)dSa/dHb.",
      "source": "docs/07_AHMED_HEMOGLOBIN_EXTENSION.md",
      "verification_command": "uv run --locked pytest tests/test_science.py::test_no_hb_breakpoint_zero_sensitivities_and_infeasible_endpoint tests/test_science.py::test_2000_seeded_indexed_boundary_derivative_and_interval_properties",
      "status": "passed",
      "evidence": [
        "docs/implementation/t02-receipt.json",
        "https://github.com/reblocke/single_vent_sim/actions/runs/35548285571",
        "tests/test_science.py::test_no_hb_breakpoint_zero_sensitivities_and_infeasible_endpoint",
        "tests/test_science.py::test_2000_seeded_indexed_boundary_derivative_and_interval_properties"
      ],
      "tested_commit": "f437e911b545e11e87e311b08891ac1e1326fa71"
    },
    {
      "id": "A16",
      "stage": "T02",
      "requirement": "Sv maximum is r1; DO2 maximum follows the existing conditional formula; inadmissible or degenerate optima are not promoted.",
      "source": "docs/07_AHMED_HEMOGLOBIN_EXTENSION.md",
      "verification_command": "uv run --locked pytest tests/test_science.py::test_optima_existence_objectives_and_independent_search",
      "status": "passed",
      "evidence": [
        "docs/implementation/t02-receipt.json",
        "https://github.com/reblocke/single_vent_sim/actions/runs/35548285571",
        "tests/test_science.py::test_optima_existence_objectives_and_independent_search",
        "docs/implementation/hardening/qualification.json",
        "docs/implementation/hardening/acceptance.md",
        "https://github.com/reblocke/single_vent_sim/actions/runs/35637211536"
      ],
      "tested_commit": "7f7a1ba2b6665cbd39a2822f092c1a1df94f902c",
      "historical_status": "passed",
      "followup": "Targeted hardening: new interface, boundary, export and presentation regressions require qualification.",
      "followup_status": "requalified by focused regressions and full fresh-runner CI"
    },
    {
      "id": "A17",
      "stage": "T02",
      "requirement": "At least2,000 seeded parameter cases test boundary/criterion/derivative/unit properties against an independent oracle.",
      "source": "docs/07_AHMED_HEMOGLOBIN_EXTENSION.md",
      "verification_command": "uv run --locked pytest tests/test_science.py::test_2000_seeded_indexed_boundary_derivative_and_interval_properties",
      "status": "passed",
      "evidence": [
        "docs/implementation/t02-receipt.json",
        "https://github.com/reblocke/single_vent_sim/actions/runs/35548285571",
        "tests/test_science.py::test_2000_seeded_indexed_boundary_derivative_and_interval_properties"
      ],
      "tested_commit": "f437e911b545e11e87e311b08891ac1e1326fa71"
    },
    {
      "id": "A18",
      "stage": "T02",
      "requirement": "Source metadata distinguishes reported values, app assumptions and derived fixtures. Unknown Ahmed constants/figure IDs cannot be marked verified.",
      "source": "docs/07_AHMED_HEMOGLOBIN_EXTENSION.md",
      "verification_command": "uv run --locked pytest tests/test_science.py::test_slice_validation_and_no_source_verification_invention",
      "status": "passed",
      "evidence": [
        "docs/implementation/t02-receipt.json",
        "https://github.com/reblocke/single_vent_sim/actions/runs/35548285571",
        "tests/test_science.py::test_slice_validation_and_no_source_verification_invention"
      ],
      "tested_commit": "f437e911b545e11e87e311b08891ac1e1326fa71"
    },
    {
      "id": "A19",
      "stage": "T04",
      "requirement": "CPython scalar/grid and browser results agree for V2, all inverse/sensitivity requests, endpoints, and status masks.",
      "source": "docs/07_AHMED_HEMOGLOBIN_EXTENSION.md",
      "verification_command": "make check",
      "status": "passed",
      "evidence": [
        "docs/implementation/t04-receipt.json",
        "https://github.com/reblocke/single_vent_sim/actions/runs/35551019008",
        "web/tests/parity.spec.ts",
        "tests/test_commands.py"
      ],
      "tested_commit": "9b483e00d32079b25ad654242318ed8b6290a799"
    },
    {
      "id": "A20",
      "stage": "T04",
      "requirement": "Numeric JSON/CSV round trips retain basis, units, criteria, provenance, analysis version, strict endpoints and undefined states.",
      "source": "docs/07_AHMED_HEMOGLOBIN_EXTENSION.md",
      "verification_command": "make check",
      "status": "passed",
      "evidence": [
        "docs/implementation/t04-receipt.json",
        "https://github.com/reblocke/single_vent_sim/actions/runs/35551019008",
        "web/tests/parity.spec.ts",
        "tests/test_commands.py"
      ],
      "tested_commit": "9b483e00d32079b25ad654242318ed8b6290a799"
    },
    {
      "id": "AV01",
      "stage": "T05",
      "requirement": "H1\u2013H4 and C5\u2013C7 load declared inputs, native units, criteria and assumptions exactly.",
      "source": "docs/07_AHMED_HEMOGLOBIN_EXTENSION.md",
      "verification_command": "make test-browser",
      "status": "passed",
      "evidence": [
        "docs/implementation/t07-receipt.json",
        "https://github.com/reblocke/single_vent_sim/actions/runs/35563684930",
        "web/tests/explore.spec.ts: exact H1-H4 literal preset inputs, axes and units",
        "tests/test_comparison_presets.py: independent C5-C7 checkpoints",
        "web/tests/compare.spec.ts: C1-C12 rendered contracts and budgets"
      ],
      "tested_commit": "78618a3d0a424444d3a16cd77758bb4226eae247"
    },
    {
      "id": "AV02",
      "stage": "T05",
      "requirement": "Both Sa70 and Sv40 boundaries are identified; no clinical safe/unsafe labeling or conflation with Cv0.",
      "source": "docs/07_AHMED_HEMOGLOBIN_EXTENSION.md",
      "verification_command": "make test-browser",
      "status": "passed",
      "evidence": [
        "docs/implementation/t07-receipt.json",
        "https://github.com/reblocke/single_vent_sim/actions/runs/35563684930",
        "web/tests/final-interactions.spec.ts: separate Sa70 and Sv40 contour fields",
        "web/tests/explore.spec.ts: Hb13 criterion, provenance and unchanged transport",
        "docs/implementation/hardening/qualification.json",
        "docs/implementation/hardening/acceptance.md",
        "https://github.com/reblocke/single_vent_sim/actions/runs/35637211536"
      ],
      "tested_commit": "7f7a1ba2b6665cbd39a2822f092c1a1df94f902c",
      "historical_status": "passed",
      "followup": "Targeted hardening: new interface, boundary, export and presentation regressions require qualification.",
      "followup_status": "requalified by focused regressions and full fresh-runner CI"
    },
    {
      "id": "AV03",
      "stage": "T05",
      "requirement": "Criterion edits change provenance to user_selected without modifying core oxygen content or flux.",
      "source": "docs/07_AHMED_HEMOGLOBIN_EXTENSION.md",
      "verification_command": "make check",
      "status": "passed",
      "evidence": [
        "docs/implementation/t05-overlay-receipt.json",
        "web/tests/explore.spec.ts: criteria alter classification provenance while core transport stays fixed"
      ],
      "tested_commit": "51304a63fdbc779b7c1edf0130238994995b6575"
    },
    {
      "id": "AV04",
      "stage": "T05",
      "requirement": "Hb13 r1 inspector shows arterial-only failure accurately despite rounded Hb thresholds.",
      "source": "docs/07_AHMED_HEMOGLOBIN_EXTENSION.md",
      "verification_command": "make check",
      "status": "passed",
      "evidence": [
        "docs/implementation/t05-overlay-receipt.json",
        "web/tests/explore.spec.ts: constant uptake, strict Hb13 criterion and log-coordinate selection"
      ],
      "tested_commit": "51304a63fdbc779b7c1edf0130238994995b6575"
    },
    {
      "id": "AV05",
      "stage": "T05",
      "requirement": "H4 shows diminishing saturation gain without a manufactured12-g/dL breakpoint and constant delivery slope in baselineHb.",
      "source": "docs/07_AHMED_HEMOGLOBIN_EXTENSION.md",
      "verification_command": "make test-browser",
      "status": "passed",
      "evidence": [
        "docs/implementation/t07-receipt.json",
        "https://github.com/reblocke/single_vent_sim/actions/runs/35563684930",
        "web/tests/final-interactions.spec.ts: H4 continuous diminishing saturation gains and constant delivery slope"
      ],
      "tested_commit": "78618a3d0a424444d3a16cd77758bb4226eae247"
    },
    {
      "id": "AV06",
      "stage": "T05",
      "requirement": "Unit switches preserve state only with explicit body-size conversion; inconsistent cross-basis comparisons are blocked.",
      "source": "docs/07_AHMED_HEMOGLOBIN_EXTENSION.md",
      "verification_command": "make test-browser",
      "status": "passed",
      "evidence": [
        "docs/implementation/t06-foundation-receipt.json",
        "web/tests/explore.spec.ts: explicit basis conversion",
        "tests/test_comparison_presets.py: cross-basis rejection"
      ],
      "tested_commit": "0341f7ac106823eebc031c6e1f703cd5d27a9e23"
    },
    {
      "id": "AV07",
      "stage": "T05",
      "requirement": "H3 is a boundary surface, handles out-of-display-range separately from no solution, and uses no implicit fixed Hb.",
      "source": "docs/07_AHMED_HEMOGLOBIN_EXTENSION.md",
      "verification_command": "make test-browser",
      "status": "passed",
      "evidence": [
        "docs/implementation/t07-receipt.json",
        "https://github.com/reblocke/single_vent_sim/actions/runs/35563684930",
        "web/tests/final-interactions.spec.ts: H3 outside_display_range versus no_finite_solution and no fixed Hb"
      ],
      "tested_commit": "78618a3d0a424444d3a16cd77758bb4226eae247"
    },
    {
      "id": "AV08",
      "stage": "T05",
      "requirement": "Source-faithful Ahmed mode cannot be enabled while source gate is incomplete; user-facing evidence-status note remains visible.",
      "source": "docs/07_AHMED_HEMOGLOBIN_EXTENSION.md",
      "verification_command": "make test-browser",
      "status": "passed",
      "evidence": [
        "docs/implementation/t06-foundation-receipt.json",
        "web/tests/laboratory.spec.ts: disabled source-faithful Ahmed mode"
      ],
      "tested_commit": "0341f7ac106823eebc031c6e1f703cd5d27a9e23"
    },
    {
      "id": "AV09",
      "stage": "T05",
      "requirement": "Paired budget numbers and common native scales reconcile gross transport and net uptake for C5\u2013C7.",
      "source": "docs/07_AHMED_HEMOGLOBIN_EXTENSION.md",
      "verification_command": "make test-browser",
      "status": "passed",
      "evidence": [
        "docs/implementation/t06-foundation-receipt.json",
        "tests/test_comparison_presets.py",
        "web/tests/compare.spec.ts: C5-C7 budgets and common scales"
      ],
      "tested_commit": "0341f7ac106823eebc031c6e1f703cd5d27a9e23"
    },
    {
      "id": "AV10",
      "stage": "T05",
      "requirement": "Downloaded plots/data contain source status, assumptions, criteria, units/indexing and exact visible values; stale responses never mix generations.",
      "source": "docs/07_AHMED_HEMOGLOBIN_EXTENSION.md",
      "verification_command": "make test-browser",
      "status": "passed",
      "evidence": [
        "docs/implementation/t07-receipt.json",
        "https://github.com/reblocke/single_vent_sim/actions/runs/35563684930",
        "web/tests/export.spec.ts: source status, criteria, units, exact UI state, values and generation coherence",
        "docs/implementation/hardening/qualification.json",
        "docs/implementation/hardening/acceptance.md",
        "https://github.com/reblocke/single_vent_sim/actions/runs/35637211536"
      ],
      "tested_commit": "7f7a1ba2b6665cbd39a2822f092c1a1df94f902c",
      "historical_status": "passed",
      "followup": "Targeted hardening: new interface, boundary, export and presentation regressions require qualification.",
      "followup_status": "requalified by focused regressions and full fresh-runner CI"
    },
    {
      "id": "R01",
      "stage": "T02R",
      "requirement": "Source baseline yields Qp=Qs1,Qt2,P40,Sa.80,Sv.61,I.80,k.19; no physicalDO2 invented.",
      "source": "docs/08_SAVORGNAN_RESISTANCE_EXTENSION.md",
      "verification_command": "uv run --locked pytest tests/test_resistance.py::test_40_independent_decimal_fixtures",
      "status": "passed",
      "evidence": [
        "docs/implementation/t02r-receipt.json",
        "https://github.com/reblocke/single_vent_sim/actions/runs/35549189059",
        "tests/test_resistance.py::test_40_independent_decimal_fixtures"
      ],
      "tested_commit": "04684b0bc48bcf64ebadcbca1528a5e59a38654a"
    },
    {
      "id": "R02",
      "stage": "T02R",
      "requirement": "NativeRp\u221245% changes nominal pulmonary path40\u219234.6; fixedlinear r40/34.6; shunt stays28.",
      "source": "docs/08_SAVORGNAN_RESISTANCE_EXTENSION.md",
      "verification_command": "uv run --locked pytest tests/test_resistance.py::test_native_and_whole_pathway_semantics_and_table_discrepancies",
      "status": "passed",
      "evidence": [
        "docs/implementation/t02r-receipt.json",
        "https://github.com/reblocke/single_vent_sim/actions/runs/35549189059",
        "tests/test_resistance.py::test_native_and_whole_pathway_semantics_and_table_discrepancies"
      ],
      "tested_commit": "04684b0bc48bcf64ebadcbca1528a5e59a38654a"
    },
    {
      "id": "R03",
      "stage": "T02R",
      "requirement": "Whole-pathway audit gives r1/.55 and is disallowed in normal mode/advanced ablation.",
      "source": "docs/08_SAVORGNAN_RESISTANCE_EXTENSION.md",
      "verification_command": "uv run --locked pytest tests/test_resistance.py::test_native_and_whole_pathway_semantics_and_table_discrepancies",
      "status": "passed",
      "evidence": [
        "docs/implementation/t02r-receipt.json",
        "https://github.com/reblocke/single_vent_sim/actions/runs/35549189059",
        "tests/test_resistance.py::test_native_and_whole_pathway_semantics_and_table_discrepancies"
      ],
      "tested_commit": "04684b0bc48bcf64ebadcbca1528a5e59a38654a"
    },
    {
      "id": "R04",
      "stage": "T02R",
      "requirement": "Table1 r/index changes match audit reconstruction while native interpretation and remaining columns retain discrepancies.",
      "source": "docs/08_SAVORGNAN_RESISTANCE_EXTENSION.md",
      "verification_command": "uv run --locked pytest tests/test_resistance.py::test_native_and_whole_pathway_semantics_and_table_discrepancies",
      "status": "passed",
      "evidence": [
        "docs/implementation/t02r-receipt.json",
        "https://github.com/reblocke/single_vent_sim/actions/runs/35549189059",
        "tests/test_resistance.py::test_native_and_whole_pathway_semantics_and_table_discrepancies"
      ],
      "tested_commit": "04684b0bc48bcf64ebadcbca1528a5e59a38654a"
    },
    {
      "id": "R05",
      "stage": "T02R",
      "requirement": "All25 Table3 flow/ratio/delta cells match nominal reconstruction within half the displayed rounding unit; do not fit parameters.",
      "source": "docs/08_SAVORGNAN_RESISTANCE_EXTENSION.md",
      "verification_command": "uv run --locked pytest tests/test_resistance.py::test_native_and_whole_pathway_semantics_and_table_discrepancies",
      "status": "passed",
      "evidence": [
        "docs/implementation/t02r-receipt.json",
        "https://github.com/reblocke/single_vent_sim/actions/runs/35549189059",
        "tests/test_resistance.py::test_native_and_whole_pathway_semantics_and_table_discrepancies"
      ],
      "tested_commit": "04684b0bc48bcf64ebadcbca1528a5e59a38654a"
    },
    {
      "id": "R06",
      "stage": "T02R",
      "requirement": "Qp_cal calibration preserves baseline pressure/flows for allf including0and1 and unbalanced references.",
      "source": "docs/08_SAVORGNAN_RESISTANCE_EXTENSION.md",
      "verification_command": "uv run --locked pytest tests/test_resistance.py::test_calibration_limits_pressure_gauge_and_nonlinear_derivative",
      "status": "passed",
      "evidence": [
        "docs/implementation/t02r-receipt.json",
        "https://github.com/reblocke/single_vent_sim/actions/runs/35549189059",
        "tests/test_resistance.py::test_calibration_limits_pressure_gauge_and_nonlinear_derivative"
      ],
      "tested_commit": "04684b0bc48bcf64ebadcbca1528a5e59a38654a"
    },
    {
      "id": "R07",
      "stage": "T02R",
      "requirement": "Positive quadratic root agrees with independent pressure-root oracle; branch/sum residuals pass.",
      "source": "docs/08_SAVORGNAN_RESISTANCE_EXTENSION.md",
      "verification_command": "uv run --locked pytest tests/test_resistance.py::test_40_independent_decimal_fixtures tests/test_resistance.py::test_output_closure_limits_and_2000_seeded_states_with_80_decimal_oracles",
      "status": "passed",
      "evidence": [
        "docs/implementation/t02r-receipt.json",
        "https://github.com/reblocke/single_vent_sim/actions/runs/35549189059",
        "tests/test_resistance.py::test_40_independent_decimal_fixtures",
        "tests/test_resistance.py::test_output_closure_limits_and_2000_seeded_states_with_80_decimal_oracles"
      ],
      "tested_commit": "04684b0bc48bcf64ebadcbca1528a5e59a38654a"
    },
    {
      "id": "R08",
      "stage": "T02R",
      "requirement": "Secant versus incremental shunt resistance have correct units and analytic derivatives; baseline28versus42 atf.5.",
      "source": "docs/08_SAVORGNAN_RESISTANCE_EXTENSION.md",
      "verification_command": "uv run --locked pytest tests/test_resistance.py::test_calibration_limits_pressure_gauge_and_nonlinear_derivative",
      "status": "passed",
      "evidence": [
        "docs/implementation/t02r-receipt.json",
        "https://github.com/reblocke/single_vent_sim/actions/runs/35549189059",
        "tests/test_resistance.py::test_calibration_limits_pressure_gauge_and_nonlinear_derivative"
      ],
      "tested_commit": "04684b0bc48bcf64ebadcbca1528a5e59a38654a"
    },
    {
      "id": "R09",
      "stage": "T02R",
      "requirement": "Alpha0 holds total output fixed for both closures; no pressure assertion is inferred.",
      "source": "docs/08_SAVORGNAN_RESISTANCE_EXTENSION.md",
      "verification_command": "uv run --locked pytest tests/test_resistance.py::test_output_closure_limits_and_2000_seeded_states_with_80_decimal_oracles",
      "status": "passed",
      "evidence": [
        "docs/implementation/t02r-receipt.json",
        "https://github.com/reblocke/single_vent_sim/actions/runs/35549189059",
        "tests/test_resistance.py::test_output_closure_limits_and_2000_seeded_states_with_80_decimal_oracles"
      ],
      "tested_commit": "04684b0bc48bcf64ebadcbca1528a5e59a38654a"
    },
    {
      "id": "R10",
      "stage": "T02R",
      "requirement": "Circuit-secant alpha1 holds driving pressure; nominalalpha1 nonlinear example explicitly need not.",
      "source": "docs/08_SAVORGNAN_RESISTANCE_EXTENSION.md",
      "verification_command": "uv run --locked pytest tests/test_resistance.py::test_output_closure_limits_and_2000_seeded_states_with_80_decimal_oracles",
      "status": "passed",
      "evidence": [
        "docs/implementation/t02r-receipt.json",
        "https://github.com/reblocke/single_vent_sim/actions/runs/35549189059",
        "tests/test_resistance.py::test_output_closure_limits_and_2000_seeded_states_with_80_decimal_oracles"
      ],
      "tested_commit": "04684b0bc48bcf64ebadcbca1528a5e59a38654a"
    },
    {
      "id": "R11",
      "stage": "T02R",
      "requirement": "Closures agree when f0; zero perturbation recovers the same reference for everyalpha/f.",
      "source": "docs/08_SAVORGNAN_RESISTANCE_EXTENSION.md",
      "verification_command": "uv run --locked pytest tests/test_resistance.py::test_calibration_limits_pressure_gauge_and_nonlinear_derivative tests/test_resistance.py::test_output_closure_limits_and_2000_seeded_states_with_80_decimal_oracles",
      "status": "passed",
      "evidence": [
        "docs/implementation/t02r-receipt.json",
        "https://github.com/reblocke/single_vent_sim/actions/runs/35549189059",
        "tests/test_resistance.py::test_calibration_limits_pressure_gauge_and_nonlinear_derivative",
        "tests/test_resistance.py::test_output_closure_limits_and_2000_seeded_states_with_80_decimal_oracles"
      ],
      "tested_commit": "04684b0bc48bcf64ebadcbca1528a5e59a38654a"
    },
    {
      "id": "R12",
      "stage": "T02R",
      "requirement": "Self-consistent closure has a bracketed unique solution in the documented domain and returns typed numerical failure outside computational bounds.",
      "source": "docs/08_SAVORGNAN_RESISTANCE_EXTENSION.md",
      "verification_command": "uv run --locked pytest tests/test_resistance.py::test_output_closure_limits_and_2000_seeded_states_with_80_decimal_oracles tests/test_resistance.py::test_zero_limits_pure_quadratic_and_numerical_domain_failures",
      "status": "passed",
      "evidence": [
        "docs/implementation/t02r-receipt.json",
        "https://github.com/reblocke/single_vent_sim/actions/runs/35549189059",
        "tests/test_resistance.py::test_output_closure_limits_and_2000_seeded_states_with_80_decimal_oracles",
        "tests/test_resistance.py::test_zero_limits_pure_quadratic_and_numerical_domain_failures"
      ],
      "tested_commit": "04684b0bc48bcf64ebadcbca1528a5e59a38654a"
    },
    {
      "id": "R13",
      "stage": "T02R",
      "requirement": "Output-law residual uses the selected nominal or actual resistance, not the other by accident.",
      "source": "docs/08_SAVORGNAN_RESISTANCE_EXTENSION.md",
      "verification_command": "uv run --locked pytest tests/test_resistance.py::test_output_closure_limits_and_2000_seeded_states_with_80_decimal_oracles",
      "status": "passed",
      "evidence": [
        "docs/implementation/t02r-receipt.json",
        "https://github.com/reblocke/single_vent_sim/actions/runs/35549189059",
        "tests/test_resistance.py::test_output_closure_limits_and_2000_seeded_states_with_80_decimal_oracles"
      ],
      "tested_commit": "04684b0bc48bcf64ebadcbca1528a5e59a38654a"
    },
    {
      "id": "R14",
      "stage": "T02R",
      "requirement": "Pressure gauge shifts and coherent unit/indexing transforms preserve the intended physical state; K2 scales quadratically.",
      "source": "docs/08_SAVORGNAN_RESISTANCE_EXTENSION.md",
      "verification_command": "uv run --locked pytest tests/test_resistance.py::test_calibration_limits_pressure_gauge_and_nonlinear_derivative tests/test_resistance.py::test_coherent_circuit_rescaling_quadratic_units_and_reference_hash tests/test_resistance.py::test_circuit_rescaling_preserves_oxygen_with_consumption_scaled_and_kappa_log",
      "status": "passed",
      "evidence": [
        "docs/implementation/t02r-receipt.json",
        "https://github.com/reblocke/single_vent_sim/actions/runs/35549189059",
        "tests/test_resistance.py::test_calibration_limits_pressure_gauge_and_nonlinear_derivative",
        "tests/test_resistance.py::test_coherent_circuit_rescaling_quadratic_units_and_reference_hash",
        "tests/test_resistance.py::test_circuit_rescaling_preserves_oxygen_with_consumption_scaled_and_kappa_log"
      ],
      "tested_commit": "04684b0bc48bcf64ebadcbca1528a5e59a38654a"
    },
    {
      "id": "R15",
      "stage": "T02R",
      "requirement": "Normalized/physical bridge usesM=10Bk; Hb sweeps keep physicalM fixed and recomputek.",
      "source": "docs/08_SAVORGNAN_RESISTANCE_EXTENSION.md",
      "verification_command": "uv run --locked pytest tests/test_resistance.py::test_physical_bridge_hb_fixed_demand_decomposition_and_separate_statuses",
      "status": "passed",
      "evidence": [
        "docs/implementation/t02r-receipt.json",
        "https://github.com/reblocke/single_vent_sim/actions/runs/35549189059",
        "tests/test_resistance.py::test_physical_bridge_hb_fixed_demand_decomposition_and_separate_statuses"
      ],
      "tested_commit": "04684b0bc48bcf64ebadcbca1528a5e59a38654a"
    },
    {
      "id": "R16",
      "stage": "T02R",
      "requirement": "With Hb-only changes, circuitflows/pressures stayfixed, physicalDO2changes, netuptakestaysM; Irelativechange is not confused withDO2relativechange.",
      "source": "docs/08_SAVORGNAN_RESISTANCE_EXTENSION.md",
      "verification_command": "uv run --locked pytest tests/test_resistance.py::test_physical_bridge_hb_fixed_demand_decomposition_and_separate_statuses",
      "status": "passed",
      "evidence": [
        "docs/implementation/t02r-receipt.json",
        "https://github.com/reblocke/single_vent_sim/actions/runs/35549189059",
        "tests/test_resistance.py::test_physical_bridge_hb_fixed_demand_decomposition_and_separate_statuses"
      ],
      "tested_commit": "04684b0bc48bcf64ebadcbca1528a5e59a38654a"
    },
    {
      "id": "R17",
      "stage": "T02R",
      "requirement": "Exact log-decomposition closes; ordinary percentchanges are not added as exact contributions.",
      "source": "docs/08_SAVORGNAN_RESISTANCE_EXTENSION.md",
      "verification_command": "uv run --locked pytest tests/test_resistance.py::test_physical_bridge_hb_fixed_demand_decomposition_and_separate_statuses tests/test_resistance.py::test_circuit_rescaling_preserves_oxygen_with_consumption_scaled_and_kappa_log",
      "status": "passed",
      "evidence": [
        "docs/implementation/t02r-receipt.json",
        "https://github.com/reblocke/single_vent_sim/actions/runs/35549189059",
        "tests/test_resistance.py::test_physical_bridge_hb_fixed_demand_decomposition_and_separate_statuses",
        "tests/test_resistance.py::test_circuit_rescaling_preserves_oxygen_with_consumption_scaled_and_kappa_log"
      ],
      "tested_commit": "04684b0bc48bcf64ebadcbca1528a5e59a38654a"
    },
    {
      "id": "R18",
      "stage": "T02R",
      "requirement": "Hemodynamic/oxygen/criterion failures remain distinct; impossible oxygen states are masked, not clipped.",
      "source": "docs/08_SAVORGNAN_RESISTANCE_EXTENSION.md",
      "verification_command": "uv run --locked pytest tests/test_resistance.py::test_physical_bridge_hb_fixed_demand_decomposition_and_separate_statuses tests/test_resistance.py::test_grid_bounds_invalid_cells_and_oxygen_does_not_mask_pressure",
      "status": "passed",
      "evidence": [
        "docs/implementation/t02r-receipt.json",
        "https://github.com/reblocke/single_vent_sim/actions/runs/35549189059",
        "tests/test_resistance.py::test_physical_bridge_hb_fixed_demand_decomposition_and_separate_statuses",
        "tests/test_resistance.py::test_grid_bounds_invalid_cells_and_oxygen_does_not_mask_pressure"
      ],
      "tested_commit": "04684b0bc48bcf64ebadcbca1528a5e59a38654a"
    },
    {
      "id": "R19",
      "stage": "T02R",
      "requirement": "Zero-demand,zero-oxygen,zero-venous-boundary,zero-native-resistance andpurequadratic cases have explicit tested handling.",
      "source": "docs/08_SAVORGNAN_RESISTANCE_EXTENSION.md",
      "verification_command": "uv run --locked pytest tests/test_resistance.py::test_zero_limits_pure_quadratic_and_numerical_domain_failures",
      "status": "passed",
      "evidence": [
        "docs/implementation/t02r-receipt.json",
        "https://github.com/reblocke/single_vent_sim/actions/runs/35549189059",
        "tests/test_resistance.py::test_zero_limits_pure_quadratic_and_numerical_domain_failures"
      ],
      "tested_commit": "04684b0bc48bcf64ebadcbca1528a5e59a38654a"
    },
    {
      "id": "R20",
      "stage": "T02R",
      "requirement": "Same native-scope2\u00d72ablation agrees with all independent checkpoints; interaction and baseline definitions preserved.",
      "source": "docs/08_SAVORGNAN_RESISTANCE_EXTENSION.md",
      "verification_command": "uv run --locked pytest tests/test_resistance.py::test_ablations_matched_families_local_responses_and_grid_orientation",
      "status": "passed",
      "evidence": [
        "docs/implementation/t02r-receipt.json",
        "https://github.com/reblocke/single_vent_sim/actions/runs/35549189059",
        "tests/test_resistance.py::test_ablations_matched_families_local_responses_and_grid_orientation"
      ],
      "tested_commit": "04684b0bc48bcf64ebadcbca1528a5e59a38654a"
    },
    {
      "id": "R21",
      "stage": "T02R",
      "requirement": "R2 reference families sharebaselineflows but yield different perturbationresponses; rho0 has no nativeRp effect.",
      "source": "docs/08_SAVORGNAN_RESISTANCE_EXTENSION.md",
      "verification_command": "uv run --locked pytest tests/test_resistance.py::test_ablations_matched_families_local_responses_and_grid_orientation",
      "status": "passed",
      "evidence": [
        "docs/implementation/t02r-receipt.json",
        "https://github.com/reblocke/single_vent_sim/actions/runs/35549189059",
        "tests/test_resistance.py::test_ablations_matched_families_local_responses_and_grid_orientation"
      ],
      "tested_commit": "04684b0bc48bcf64ebadcbca1528a5e59a38654a"
    },
    {
      "id": "R22",
      "stage": "T02R",
      "requirement": "R4 localresponse uses each cell's beforestate while retaining globalanchor/calibration; not confused with stateindex.",
      "source": "docs/08_SAVORGNAN_RESISTANCE_EXTENSION.md",
      "verification_command": "uv run --locked pytest tests/test_resistance.py::test_ablations_matched_families_local_responses_and_grid_orientation",
      "status": "passed",
      "evidence": [
        "docs/implementation/t02r-receipt.json",
        "https://github.com/reblocke/single_vent_sim/actions/runs/35549189059",
        "tests/test_resistance.py::test_ablations_matched_families_local_responses_and_grid_orientation",
        "docs/implementation/hardening/qualification.json",
        "docs/implementation/hardening/acceptance.md",
        "https://github.com/reblocke/single_vent_sim/actions/runs/35637211536"
      ],
      "tested_commit": "7f7a1ba2b6665cbd39a2822f092c1a1df94f902c",
      "historical_status": "passed",
      "followup": "Targeted hardening: new interface, boundary, export and presentation regressions require qualification.",
      "followup_status": "requalified by focused regressions and full fresh-runner CI"
    },
    {
      "id": "R23",
      "stage": "T02R",
      "requirement": "At least2,000 seeded states test hemodynamic identities and oxygen bookkeeping; independently check80 with high-precision pressure-root solver.",
      "source": "docs/08_SAVORGNAN_RESISTANCE_EXTENSION.md",
      "verification_command": "uv run --locked pytest tests/test_resistance.py::test_output_closure_limits_and_2000_seeded_states_with_80_decimal_oracles",
      "status": "passed",
      "evidence": [
        "docs/implementation/t02r-receipt.json",
        "https://github.com/reblocke/single_vent_sim/actions/runs/35549189059",
        "tests/test_resistance.py::test_output_closure_limits_and_2000_seeded_states_with_80_decimal_oracles"
      ],
      "tested_commit": "04684b0bc48bcf64ebadcbca1528a5e59a38654a"
    },
    {
      "id": "R24",
      "stage": "T04",
      "requirement": "CPython scalar/vectorized/browser solver outputs/statuses agree; grids obey[y,x]; referencefixtures are not regenerated by productioncode.",
      "source": "docs/08_SAVORGNAN_RESISTANCE_EXTENSION.md",
      "verification_command": "make check",
      "status": "passed",
      "evidence": [
        "docs/implementation/t04-receipt.json",
        "https://github.com/reblocke/single_vent_sim/actions/runs/35551019008",
        "web/tests/parity.spec.ts",
        "tests/test_commands.py"
      ],
      "tested_commit": "9b483e00d32079b25ad654242318ed8b6290a799"
    },
    {
      "id": "R25",
      "stage": "T06R",
      "requirement": "Ensemble pairing,complete denominators,drawreplay,quantiles/MCSE and source-status provenance pass; failures are never discarded silently.",
      "source": "docs/08_SAVORGNAN_RESISTANCE_EXTENSION.md",
      "verification_command": "make test",
      "status": "passed",
      "evidence": [
        "docs/implementation/t06r-receipt.json",
        "tests/test_ensemble.py",
        "web/tests/ensemble.spec.ts",
        "make ensemble-replay"
      ],
      "tested_commit": "e8ed4fc2644bcfbdedf7af970e4e7f4173e2bd32"
    },
    {
      "id": "RV01",
      "stage": "T05R",
      "requirement": "R1\u2013R6 andC8\u2013C12 initialize exact configuration, referencepolicy and units without destroying oldscenes.",
      "source": "docs/08_SAVORGNAN_RESISTANCE_EXTENSION.md",
      "verification_command": "make test-browser",
      "status": "passed",
      "evidence": [
        "docs/implementation/t07-receipt.json",
        "https://github.com/reblocke/single_vent_sim/actions/runs/35563684930",
        "web/tests/resistance.spec.ts: all six scenes, policies, coherent grid/point and preserved E1",
        "tests/test_comparison_presets.py: independent C8-C12 semantics and C11 checkpoints",
        "web/tests/compare.spec.ts: all comparison presets",
        "web/src/resistance-scenes.ts: direct comparison with docs/08 preset table preset contract"
      ],
      "tested_commit": "78618a3d0a424444d3a16cd77758bb4226eae247"
    },
    {
      "id": "RV02",
      "stage": "T05R",
      "requirement": "Closure,alpha,f,perturbationscope,referenceanchor and oxygenmode visible in every plot/export.",
      "source": "docs/08_SAVORGNAN_RESISTANCE_EXTENSION.md",
      "verification_command": "make test-browser",
      "status": "passed",
      "evidence": [
        "docs/implementation/t07-receipt.json",
        "https://github.com/reblocke/single_vent_sim/actions/runs/35563684930",
        "web/src/resistance.ts: per-scene contract, reference, fixed alpha/f/scope/oxygen metadata",
        "web/tests/resistance.spec.ts: visible policy and source contract",
        "web/tests/export.spec.ts: exact resistance request, policy and captions",
        "docs/implementation/hardening/qualification.json",
        "docs/implementation/hardening/acceptance.md",
        "https://github.com/reblocke/single_vent_sim/actions/runs/35637211536"
      ],
      "tested_commit": "7f7a1ba2b6665cbd39a2822f092c1a1df94f902c",
      "historical_status": "passed",
      "followup": "Targeted hardening: new interface, boundary, export and presentation regressions require qualification.",
      "followup_status": "requalified by focused regressions and full fresh-runner CI"
    },
    {
      "id": "RV03",
      "stage": "T05R",
      "requirement": "No free achievedQt/r input in resistance mode; mode switching does not infer unique resistances from flow.",
      "source": "docs/08_SAVORGNAN_RESISTANCE_EXTENSION.md",
      "verification_command": "make test-browser",
      "status": "passed",
      "evidence": [
        "docs/implementation/t07-receipt.json",
        "https://github.com/reblocke/single_vent_sim/actions/runs/35563684930",
        "web/src/resistance.ts: inputs distinguish reference Qt from computed achieved flows; no achieved Qt/r controls",
        "web/tests/resistance.spec.ts: prescribed scene retained on provider switching",
        "web/tests/export.spec.ts: configuration restore preserves independent reference anchor"
      ],
      "tested_commit": "78618a3d0a424444d3a16cd77758bb4226eae247"
    },
    {
      "id": "RV04",
      "stage": "T05R",
      "requirement": "Native/shunt circuit elements visually separate; secant/incremental/nominal labels cannot be interchanged.",
      "source": "docs/08_SAVORGNAN_RESISTANCE_EXTENSION.md",
      "verification_command": "make test-browser",
      "status": "passed",
      "evidence": [
        "docs/implementation/t07-receipt.json",
        "https://github.com/reblocke/single_vent_sim/actions/runs/35563684930",
        "web/src/budget-plots.ts: distinct native, linear-shunt and quadratic-shunt pressure components",
        "web/src/resistance.ts: nominal reference and operating secant/incremental rows",
        "web/tests/resistance.spec.ts: pressure reconciliation and mobile render"
      ],
      "tested_commit": "78618a3d0a424444d3a16cd77758bb4226eae247"
    },
    {
      "id": "RV05",
      "stage": "T06",
      "requirement": "Normalized index and physicalDO2 use distinct controls/units; Hb inactive in normalized mode.",
      "source": "docs/08_SAVORGNAN_RESISTANCE_EXTENSION.md",
      "verification_command": "make test-browser",
      "status": "passed",
      "evidence": [
        "docs/implementation/t06-foundation-receipt.json",
        "web/tests/resistance.spec.ts: Hb sweep and normalized mode",
        "web/tests/compare.spec.ts: distinct oxygen units"
      ],
      "tested_commit": "0341f7ac106823eebc031c6e1f703cd5d27a9e23"
    },
    {
      "id": "RV06",
      "stage": "T06",
      "requirement": "Paired mean-pressurebudget and oxygenbudget reconcile; no diastolicwaveform or clinicaldrug recommendation appears.",
      "source": "docs/08_SAVORGNAN_RESISTANCE_EXTENSION.md",
      "verification_command": "make test-browser",
      "status": "passed",
      "evidence": [
        "docs/implementation/t06-foundation-receipt.json",
        "web/tests/compare.spec.ts: reconciled oxygen/pressure budgets",
        "tests/test_comparison_presets.py"
      ],
      "tested_commit": "0341f7ac106823eebc031c6e1f703cd5d27a9e23"
    },
    {
      "id": "RV07",
      "stage": "T06",
      "requirement": "Source Table1 mismatch visible in downloadable comparisons; Table3 numericalagreement is not labeled validatedphysiology.",
      "source": "docs/08_SAVORGNAN_RESISTANCE_EXTENSION.md",
      "verification_command": "make test-browser",
      "status": "passed",
      "evidence": [
        "docs/implementation/t07-receipt.json",
        "https://github.com/reblocke/single_vent_sim/actions/runs/35563684930",
        "web/tests/laboratory.spec.ts: Table 1 discrepancy and Table 3 arithmetic labels",
        "web/tests/export.spec.ts: downloadable Savorgnan audit and unresolved source manifest"
      ],
      "tested_commit": "78618a3d0a424444d3a16cd77758bb4226eae247"
    },
    {
      "id": "RV08",
      "stage": "T06",
      "requirement": "State and localresponse maps have different baselinecaptions; no contour of highstateDO2 labeled benefit ofadrug.",
      "source": "docs/08_SAVORGNAN_RESISTANCE_EXTENSION.md",
      "verification_command": "make test-browser",
      "status": "passed",
      "evidence": [
        "docs/implementation/t07-receipt.json",
        "https://github.com/reblocke/single_vent_sim/actions/runs/35563684930",
        "web/tests/resistance.spec.ts: local_response versus frozen and matched policies",
        "web/tests/compare.spec.ts: local pair preserves original global anchor",
        "web/tests/export.spec.ts: R4 policy survives comparison/export/import",
        "docs/implementation/hardening/qualification.json",
        "docs/implementation/hardening/acceptance.md",
        "https://github.com/reblocke/single_vent_sim/actions/runs/35637211536"
      ],
      "tested_commit": "7f7a1ba2b6665cbd39a2822f092c1a1df94f902c",
      "historical_status": "passed",
      "followup": "Targeted hardening: new interface, boundary, export and presentation regressions require qualification.",
      "followup_status": "requalified by focused regressions and full fresh-runner CI"
    },
    {
      "id": "RV09",
      "stage": "T06",
      "requirement": "IncreasedQt with decreasedP is inspectable; nominalalpha1f>0 pressureexception appears correctly.",
      "source": "docs/08_SAVORGNAN_RESISTANCE_EXTENSION.md",
      "verification_command": "make test-browser",
      "status": "passed",
      "evidence": [
        "docs/implementation/t06-foundation-receipt.json",
        "web/tests/resistance.spec.ts: nonlinear closure limits",
        "tests/test_resistance.py"
      ],
      "tested_commit": "0341f7ac106823eebc031c6e1f703cd5d27a9e23"
    },
    {
      "id": "RV10",
      "stage": "T06",
      "requirement": "Infeasibleoxygen overlays do not hide solvedpressure/flows; mathematical/criterion/solver status remain distinct.",
      "source": "docs/08_SAVORGNAN_RESISTANCE_EXTENSION.md",
      "verification_command": "make test-browser",
      "status": "passed",
      "evidence": [
        "docs/implementation/t07-receipt.json",
        "https://github.com/reblocke/single_vent_sim/actions/runs/35563684930",
        "web/tests/final-interactions.spec.ts: infeasible_requested_consumption preserves solved circuit, pressure and model residual audit"
      ],
      "tested_commit": "78618a3d0a424444d3a16cd77758bb4226eae247"
    },
    {
      "id": "RV11",
      "stage": "T06R",
      "requirement": "Ensemble progress/cancel/generation,complete denominators,replay and assumptionlabels work; no patientprobability claim.",
      "source": "docs/08_SAVORGNAN_RESISTANCE_EXTENSION.md",
      "verification_command": "make test-browser",
      "status": "passed",
      "evidence": [
        "docs/implementation/t06r-receipt.json",
        "tests/test_ensemble.py",
        "web/tests/ensemble.spec.ts",
        "make ensemble-replay"
      ],
      "tested_commit": "e8ed4fc2644bcfbdedf7af970e4e7f4173e2bd32"
    },
    {
      "id": "RV12",
      "stage": "T07",
      "requirement": "Existing responsive,keyboard,touch,export,scaling and stale-worker tests also cover resistanceviews.",
      "source": "docs/08_SAVORGNAN_RESISTANCE_EXTENSION.md",
      "verification_command": "make test-browser",
      "status": "passed",
      "evidence": [
        "docs/implementation/t07-receipt.json",
        "https://github.com/reblocke/single_vent_sim/actions/runs/35563684930",
        "web/tests/resistance.spec.ts: response scales, responsive layouts and numeric selection",
        "web/tests/final-interactions.spec.ts: touch, keyboard and 100 resistance UI updates",
        "web/tests/export.spec.ts: resistance bundles and roundtrip",
        "web/tests/parity.spec.ts: stale worker responses",
        "docs/implementation/hardening/qualification.json",
        "docs/implementation/hardening/acceptance.md",
        "https://github.com/reblocke/single_vent_sim/actions/runs/35637211536"
      ],
      "tested_commit": "7f7a1ba2b6665cbd39a2822f092c1a1df94f902c",
      "historical_status": "passed",
      "followup": "Targeted hardening: new interface, boundary, export and presentation regressions require qualification.",
      "followup_status": "requalified by focused regressions and full fresh-runner CI"
    }
  ]
}
