2026-01-08
Containment break — history shows these ran downstream of a same-day failure the model holds
- GL_EXTRACT
Replay-conformance proof
6 days of recorded scheduler run history replayed through the Handeware Engine — same jobs, same dependency order, same failure containment, same human gates, or the day diverges.
Source tests/fixtures/eod_batch_controlm.xml · Window 2026-01-05 – 2026-01-10
| Date | Expected | Executed | Gates | Verdict |
|---|---|---|---|---|
| 2026-01-05 | 8 | 8 | 2 | PASS |
| 2026-01-06 | 8 | 8 | 2 | PASS |
| 2026-01-07 | 8 | 8 | 2 | PASS |
| 2026-01-08 | 3 | 2 | 0 | DIVERGED |
| 2026-01-09 | 8 | 8 | 2 | PASS |
| 2026-01-10 | 8 | 8 | 2 | PASS |
Containment break — history shows these ran downstream of a same-day failure the model holds
Every day in the supplied history window was replayed through the Handeware Engine against the graph converted from the scheduler export. Each job with a history row that day became a deterministic handler returning its recorded outcome — a recorded failure raises. Jobs without a row were marked NO_HISTORY. The Engine's own event log (one events.jsonl per day, beside this document) is the sole input to the comparison.
max_attempts=1 — a historical failure is a fact, not a flake. The Engine never retries the past; one recorded failure produces one STEP_FAILED event.
Human gates auto-approve and are recorded: every gate completes as a HUMAN_TASK_COMPLETED event with actor "auto", so the proof counts each sign-off an operator would have given.
Failure containment is boundary routing: every job node carries an error boundary routed to a held node, so a failed job parks its token and nothing downstream runs. History showing downstream jobs running anyway is reported as a containment break.
A day passes only when missing, unexpected, status mismatches, containment breaks and order findings are all empty and every history row matched a modeled job. The proof passes only when every replayed day passes.