{
  "schema_version": 1,
  "evidence_type": "synthetic/theoretical",
  "command": "python virtual_bench.py",
  "passed": true,
  "checks": [
    {
      "id": "original_clearance_failure",
      "description": "Apply declared manufacturing tolerances to original 0.5 mm nominal gap",
      "expected": "minimum gap below 0.5 mm is detected",
      "observed": 0.4750000000000001,
      "passed": true,
      "method": "Full factorial exact annular hydraulic model"
    },
    {
      "id": "allowance_clearance",
      "description": "2.525 mm nominal radius covers +/-0.015 body and +/-0.010 probe radii",
      "expected": "all 81 cases have >= 0.5 mm clearance",
      "observed": 0.5,
      "passed": true,
      "method": "Worst independent radial tolerance sum, no statistical cancellation"
    },
    {
      "id": "allowance_pressure",
      "description": "Unchanged 10 Pa pressure budget for revised nominal radius",
      "expected": "all 81 cases below 10 Pa",
      "observed": 8.173571485867228,
      "passed": true,
      "method": "Exact developed annular Stokes solution"
    },
    {
      "id": "regime",
      "description": "Tolerance/flow/viscosity range remains creeping flow",
      "expected": "max Re < 0.1",
      "observed": 0.08693752322834755,
      "passed": true,
      "method": "Hydraulic diameter 2(b-a)"
    },
    {
      "id": "fem_worst_corner",
      "description": "Check revised worst hydraulic case against independent FEM",
      "expected": "relative error < 1e-5",
      "observed": 7.074845043142375e-09,
      "passed": true,
      "method": "P2/P1 Stokes solve at revised tolerance corner"
    },
    {
      "id": "cad_roundtrip",
      "description": "Revised nominal assembly exports and reimports",
      "expected": "valid body/probe solids; exact fluid volume",
      "observed": [
        {
          "radius_mm": 2.525,
          "fluid_volume_mm3": 149.26492095368508,
          "body_valid": true,
          "probe_valid": true
        }
      ],
      "passed": true,
      "method": "CadQuery solid validity and STEP roundtrip"
    },
    {
      "id": "mass_ideal_passive",
      "description": "Fluid + reversible wall + inlet/outlet conservation in ideal_passive",
      "expected": "max normalized residual < 1e-10",
      "observed": 1.809382218788134e-15,
      "passed": true,
      "method": "Sparse mass-form backward Euler; exchange fluxes cancel in coupled capacities"
    },
    {
      "id": "bounded_ideal_passive",
      "description": "Concentration bounds in ideal_passive",
      "expected": "all fluid/wall concentrations in [0,1] +/- 1e-10",
      "observed": [
        1.8400110146999359e-25,
        1.0000000000000022
      ],
      "passed": true,
      "method": "Every solved state checked"
    },
    {
      "id": "mass_sensor_5s",
      "description": "Fluid + reversible wall + inlet/outlet conservation in sensor_5s",
      "expected": "max normalized residual < 1e-10",
      "observed": 1.809382218788134e-15,
      "passed": true,
      "method": "Sparse mass-form backward Euler; exchange fluxes cancel in coupled capacities"
    },
    {
      "id": "bounded_sensor_5s",
      "description": "Concentration bounds in sensor_5s",
      "expected": "all fluid/wall concentrations in [0,1] +/- 1e-10",
      "observed": [
        1.8400110146999359e-25,
        1.0000000000000022
      ],
      "passed": true,
      "method": "Every solved state checked"
    },
    {
      "id": "mass_sensor_30s",
      "description": "Fluid + reversible wall + inlet/outlet conservation in sensor_30s",
      "expected": "max normalized residual < 1e-10",
      "observed": 1.809382218788134e-15,
      "passed": true,
      "method": "Sparse mass-form backward Euler; exchange fluxes cancel in coupled capacities"
    },
    {
      "id": "bounded_sensor_30s",
      "description": "Concentration bounds in sensor_30s",
      "expected": "all fluid/wall concentrations in [0,1] +/- 1e-10",
      "observed": [
        3.241927943590486e-66,
        1.0000000000000022
      ],
      "passed": true,
      "method": "Every solved state checked"
    },
    {
      "id": "mass_inlet_mix_20mm3",
      "description": "Fluid + reversible wall + inlet/outlet conservation in inlet_mix_20mm3",
      "expected": "max normalized residual < 1e-10",
      "observed": 2.8145945625593194e-15,
      "passed": true,
      "method": "Sparse mass-form backward Euler; exchange fluxes cancel in coupled capacities"
    },
    {
      "id": "bounded_inlet_mix_20mm3",
      "description": "Concentration bounds in inlet_mix_20mm3",
      "expected": "all fluid/wall concentrations in [0,1] +/- 1e-10",
      "observed": [
        4.0158312651250395e-08,
        1.0000000000000027
      ],
      "passed": true,
      "method": "Every solved state checked"
    },
    {
      "id": "mass_wall_fast",
      "description": "Fluid + reversible wall + inlet/outlet conservation in wall_fast",
      "expected": "max normalized residual < 1e-10",
      "observed": 2.4199556424121138e-15,
      "passed": true,
      "method": "Sparse mass-form backward Euler; exchange fluxes cancel in coupled capacities"
    },
    {
      "id": "bounded_wall_fast",
      "description": "Concentration bounds in wall_fast",
      "expected": "all fluid/wall concentrations in [0,1] +/- 1e-10",
      "observed": [
        1.4696509861027557e-11,
        1.0000000000000018
      ],
      "passed": true,
      "method": "Every solved state checked"
    },
    {
      "id": "mass_wall_slow",
      "description": "Fluid + reversible wall + inlet/outlet conservation in wall_slow",
      "expected": "max normalized residual < 1e-10",
      "observed": 1.1200937544878925e-14,
      "passed": true,
      "method": "Sparse mass-form backward Euler; exchange fluxes cancel in coupled capacities"
    },
    {
      "id": "bounded_wall_slow",
      "description": "Concentration bounds in wall_slow",
      "expected": "all fluid/wall concentrations in [0,1] +/- 1e-10",
      "observed": [
        1.0100279454565036e-11,
        1.0000000000000013
      ],
      "passed": true,
      "method": "Every solved state checked"
    },
    {
      "id": "zero_retention_limit",
      "description": "New coupled model reduces to existing passive model",
      "expected": "relative t99 probe error < 1e-10",
      "observed": 0.0,
      "passed": true,
      "method": "Independent public run_transport execution at same mesh and time step"
    },
    {
      "id": "refine_grid",
      "description": "Slow-wall case grid sensitivity",
      "expected": "max t99 change < 0.03",
      "observed": 0.006280570079787662,
      "passed": true,
      "method": "80x24 to 160x48 and 0.25 s to 0.125 s, original threshold retained"
    },
    {
      "id": "refine_timestep",
      "description": "Slow-wall case timestep sensitivity",
      "expected": "max t99 change < 0.03",
      "observed": 0.00043788338034667085,
      "passed": true,
      "method": "80x24 to 160x48 and 0.25 s to 0.125 s, original threshold retained"
    },
    {
      "id": "exchange_benchmark",
      "description": "Isolated fluid/wall exchange approaches conserved equilibrium",
      "expected": "max absolute error < 5e-5",
      "observed": 2.9697706575071425e-05,
      "passed": true,
      "method": "Backward Euler compared with independent exact two-capacity exponential"
    },
    {
      "id": "exchange_mass",
      "description": "Closed two-capacity benchmark conserves initial tracer",
      "expected": "absolute difference < 1e-10",
      "observed": 1.2594369991347776e-12,
      "passed": true,
      "method": "Independent dense update and analytical conserved mass"
    },
    {
      "id": "pressure_correction",
      "description": "Recover known synthetic hydraulic pressure after elevation/zero correction",
      "expected": "absolute mean error < 0.08 Pa",
      "observed": -0.02275547843690351,
      "passed": true,
      "method": "20 seeded readings, known imposed elevation and zero bias"
    },
    {
      "id": "sensor_lag_challenge",
      "description": "30 s sensor time constant changes the reference conclusion",
      "expected": "sensor t99 exceeds 90 s while passive probe t99 is below 90 s",
      "observed": 156.30605302163076,
      "passed": true,
      "method": "Causal first-order sensor driven by the spatial probe average"
    },
    {
      "id": "retention_challenge",
      "description": "Slow wall inventory is retained in response accounting",
      "expected": "inventory t99 exceeds passive-fluid t99",
      "observed": 533.1439862602687,
      "passed": true,
      "method": "Reversible exchange with explicitly assumed capacity and time constant"
    },
    {
      "id": "invalid_inputs",
      "description": "Reject invalid annular hydraulic conditions",
      "expected": "3 invalid conditions rejected",
      "observed": 3,
      "passed": true,
      "method": "Zero gap, negative flow, nonfinite viscosity"
    },
    {
      "id": "selected_flush_decision",
      "description": "Adopted 600 s flush on tolerance-allowance geometry",
      "expected": "all fluid, sensor, inventory and outlet fractions <= 0.01 at four geometry corners",
      "observed": 0.006783047491718452,
      "passed": true,
      "method": "Four new 80x24 runs at 4.5 mm3/s, 0.1 mm wall capacity, 120 s exchange, 20 mm3 inlet and 30 s sensor"
    },
    {
      "id": "selected_flush_refined",
      "description": "Verify the slowest selected corner at finer resolution",
      "expected": "all four fractions <= 0.01 at 600 s",
      "observed": 0.006957725391144411,
      "passed": true,
      "method": "Additional 160x48 run at 0.125 s; full trace retained"
    }
  ],
  "source_sha256": {
    "virtual_bench.py": "5862366ee62ba91cee4f527e9508f79a82bc98f195f0e3c413945ee4d9631ed3",
    "virtual-bench-inputs.json": "cc6f224444e6e75187c648f4f345de52bc23444b1f00aae8ea7669cb1d9a937b",
    "inputs.json": "763c5b3e6628172a27ea9468ba409d05e5ac7036d00d8e14208365fd579e530f",
    "flow.py": "bd54356eff3b3e1aae475e8125db712bbb6a5ebefc823a2f2066435ebfa5e0ea",
    "transport.py": "1bf6fb6c8153a75ba651549ec3f6b7c07363b3e6975b8bba58e87d7e58393a4e",
    "model.py": "b2063c248b2134870f568d66a533f24f6f4ac195ecd96f7c0d81524e8017dd8d",
    "run.py": "5f3af26f779e7ebc3e4a2189a71ba1b111887603d8b59474a4614adf38df09b6"
  },
  "report": "outputs/virtual-bench/report.html",
  "limitations": [
    "No physical tracer, sensor or material adsorption measurements.",
    "Wall capacity and rate are declared linear sensitivities, not fitted chemical properties.",
    "The straight annulus omits asymmetric port geometry, bubbles, leakage and nonlinear chemistry."
  ],
  "summary": "29 checks; 162 dimensional/operating cases; six coupled response cases; three slow-wall refinement runs; four selected-design corners plus refined worst corner; 20 synthetic instrument readings."
}
