{
  "schema_version": 1,
  "evidence_type": "synthetic/theoretical",
  "command": "python run.py",
  "passed": true,
  "checks": [
    {
      "id": "replications",
      "description": "Full virtual operations experiment executed",
      "expected": 800,
      "observed": 800,
      "passed": true,
      "method": "5 conditions x 4 policies x 40 independent matched seeds"
    },
    {
      "id": "balances",
      "description": "All jobs and time-area identities remain accounted for",
      "expected": true,
      "observed": true,
      "passed": true,
      "method": "Check every simulation for job count, queue-area, WIP-area and capacity balances"
    },
    {
      "id": "backlog",
      "description": "End-of-shift backlog is carried into clearance",
      "expected": "8 h completed + backlog = admitted for all runs",
      "observed": true,
      "passed": true,
      "method": "Inspect each job finish time, not just the final aggregate"
    },
    {
      "id": "stress",
      "description": "Combined adverse inputs increase regular-shift backlog",
      "expected": "Mean combined-stress backlog > reference for 2 FIFO",
      "observed": {
        "reference": 1.15,
        "stress": 2.575
      },
      "passed": true,
      "method": "Same declared policy; batch arrivals, 40% slower service and a 2 h absence"
    },
    {
      "id": "third-worker",
      "description": "Additional staff reduces stress backlog",
      "expected": "3 FIFO mean backlog < 2 FIFO",
      "observed": {
        "two": 2.575,
        "three": 0.45
      },
      "passed": true,
      "method": "Matched arrival/service/rework streams, same WIP limit"
    },
    {
      "id": "service-screen",
      "description": "Screen identifies adverse operational conditions",
      "expected": "At least one shift misses declared screen",
      "observed": 488,
      "passed": true,
      "method": "Reject >1% arrivals, >30 min clearance, >15 min detailed-job tail wait or unfinished at horizon"
    },
    {
      "id": "selected-policy",
      "description": "Selected FIFO staffing plan passes independent holdout risk criterion",
      "expected": "Each condition upper 95% risk <= 10%",
      "observed": [
        {
          "condition": "reference",
          "staff": 3,
          "misses": 0,
          "shifts": 100,
          "lower": 0.0,
          "upper": 0.03621669264517641,
          "meets_10pct_upper_bound": true
        },
        {
          "condition": "five_minute_batches",
          "staff": 3,
          "misses": 0,
          "shifts": 100,
          "lower": 0.0,
          "upper": 0.03621669264517641,
          "meets_10pct_upper_bound": true
        },
        {
          "condition": "two_hour_absence",
          "staff": 4,
          "misses": 0,
          "shifts": 100,
          "lower": 0.0,
          "upper": 0.03621669264517641,
          "meets_10pct_upper_bound": true
        },
        {
          "condition": "service_plus_40pct",
          "staff": 4,
          "misses": 0,
          "shifts": 100,
          "lower": 0.0,
          "upper": 0.03621669264517641,
          "meets_10pct_upper_bound": true
        },
        {
          "condition": "combined_stress",
          "staff": 5,
          "misses": 0,
          "shifts": 100,
          "lower": 0.0,
          "upper": 0.03621669264517641,
          "meets_10pct_upper_bound": true
        }
      ],
      "passed": true,
      "method": "100 disjoint seeds per condition; 3 regular, 4 for absence or slow service, 5 for combined stress"
    },
    {
      "id": "zero-failure-risk",
      "description": "Zero observed failures do not imply zero probability",
      "expected": "0 < upper bound < 0.1",
      "observed": 0.08809730287880237,
      "passed": true,
      "method": "Two-sided exact binomial 95% interval for 0/40 failures"
    },
    {
      "id": "capacity-bound",
      "description": "One nominal inspector has insufficient mean work budget",
      "expected": "Offered-work fraction > 1 for one, < 1 for two",
      "observed": [
        {
          "staff": 1,
          "expected_arrivals": 253.33333333333334,
          "expected_service_per_job_s": 124.784,
          "available_regular_service_s": 25200,
          "nominal_offered_work_s": 31611.94666666667,
          "offered_work_fraction": 1.2544423280423282
        },
        {
          "staff": 2,
          "expected_arrivals": 253.33333333333334,
          "expected_service_per_job_s": 124.784,
          "available_regular_service_s": 50400,
          "nominal_offered_work_s": 31611.94666666667,
          "offered_work_fraction": 0.6272211640211641
        }
      ],
      "passed": true,
      "method": "Independent expected workload = arrivals * mean service * sum p^visit; excludes randomness/burst penalty"
    }
  ],
  "source_sha256": {
    "completion_support.py": "7dd51b9e18187a82625b26144655e80aeac3b6a66a3e68e71a632d01d1844ec8",
    "inputs.json": "b3b7a8f4dc744f30072c3d4b5399799e21a91ce2c0f60df601a52d31ba88b522",
    "run.py": "95d89a0748832a59de118829fc2f58c6ae305104707554b0e890844b00e896a3",
    "simulation.py": "1d60a42faa0c43d9d6c8f678771b38d4b0ea9574ea3f44b759ceed9d7dab6cc0",
    "support.py": "4641df314624a5baedfb535ef20f7e0f5e0e47332de3d35e413241e5eabb01f8",
    "test_simulation.py": "0025cf82db071ca33fd952ede7fb21dbeb525176b53ec3b64e01cabb8bad6521",
    "test_virtual_commissioning.py": "fefa7b4c35fd4a57f230017c5a53e9de833e6747bed3358d5f5e7c542809bfda",
    "virtual_commissioning.py": "260cfa2c17af4066a4946a524693b6414ff6e5e1789b00eb2ce5cd5d0e327e3a"
  },
  "report": "virtual-validation.html",
  "limitations": [
    "This completes a synthetic operating trial. No actual production shift, time study, staffing decision or throughput gain is claimed.",
    "The experiment includes one deferred absence and a two-hour clearance window. It does not model multi-day carryover, skill differences, inspection errors, physical space or economic cost.",
    "The service screen is deliberately explicit and can fail. Monte Carlo confidence does not certify input realism, and repeated scenario comparisons are not adjusted for multiple testing."
  ]
}
