TOOL 06 · SHIPPED · FREE · MIT · WINDOWS

fray — how much of this plan depends on nothing going wrong.

A plan is feasible or it is not, and that is computable exactly. What it cannot tell you is whether the plan clears by four hours or by four minutes, and which single thing running long would end it. That gap is where cases are lost.

Download fray WINDOWS Source
$ caseclock --json TR-4118.json consistent: true cross_clamp slack 620 min $ fray TR-4118.json --tape TR-4118.tape.jsonl \ --delays rules/delays.yml survives 37.0 % of 200,000 futures first to break: recovery-team mobilisation (51 %) survivors clear by 24 min median, 4 at p10 draw serology 20 min earlier -> 54.3 % (+17.4)
BOTH ARE TRUESYNTHETIC CASE · NO PHI
fray TR-4118 · survives 37.0 % of 200,000 futures · first to break: recovery-team mobilisation · margin p50 24 min THE ANSWER LINE, VERBATIM
01 — THE ANSWER

Feasible, and under water on average.

On the case in the capture, every deadline has hours of slack and every field is filled in. caseclock is right: the plan is feasible. fray is also right: it holds in barely a third of futures, and when it holds it clears by twenty-four minutes.

The reason is not the reference lab. The case file's own figure for team mobilisation is 120 minutes; the distributions the site supplied say 120 to 210, mean 155. The offer window is nominally 180 and drawn 150 to 240. Summed, the expected durations are 711 minutes against a budget of 695 — the plan is under water on average while every individual figure in it looks reasonable.

That is a sentence no single timer, and no amount of staring at a filled-in form, will produce.

WHAT THE LINE CARRIES
survivalhow often the plan holds, with the count of futures behind it and a confidence interval
first to breakthe duration that came in long — not the tightest constraint, which is usually a deadline that never varies
the marginhow many minutes the survivors cleared by: median, tenth percentile, and worst
the actionwhat one thing the OPO could do actually buys, measured at the same seed
the receiptthe seed, the count, and both input hashes, so the answer can be re-run by anyone who doubts it
02 — HOW IT WORKS

Sample the durations, re-run the closure, count.

DISTRIBUTIONS ARE DATA

A file the site owns maps a constraint's label to a distribution: fixed, uniform, triangular or lognormal stated as two quantiles, because "usually six hours, sometimes six forty" is what a site can actually say.

A constraint with no rule does not vary. Silence means certainty, and the run reports how many were silent rather than inventing a spread for them.

DETERMINISTIC BY CONSTRUCTION

A draw is a pure function of (seed, future, constraint) — not a stream. Future 148,203 can be replayed on its own, without running the 148,202 before it.

That is also what makes a counterfactual honest: an action re-runs at the same seed, so everything it did not touch draws the same minutes and the difference is the action's.

THE PLAN AS IT STANDS

Times entered during a shift live on caseclock's tape, not in the case file. fray folds the tape in, so it measures the plan as it stands rather than as it was filed.

The tape's hash chain is verified first, and a broken one is refused. This is the input that decides the answer.

NO GPU — AND THAT IS A MEASUREMENT, NOT AN ASSUMPTION
The closure over a nine-event case is a shortest path on nine nodes. 3.9 million futures a second on one thread; two hundred thousand futures of a real case in 51 milliseconds, two million in under half a second. fray descends from a specification that wanted fifty million scenarios and an Ada card; scoped to one real case, that premise evaporates. The tool prints what it actually used.
03 — THE LINE IT DOES NOT CROSS

It perturbs durations. It says nothing about a person.

fray descends from a 2025 specification for a GPU demonstration that ranked organ allocations by score. That layer was cut rather than adapted. These tools never determine organ viability and never make or override an allocation or clinical decision — so what fray varies is how long things take, and what it reports is a schedule's fragility.

The boundary is enforced where a file is read, not in a comment. An action naming a recipient, a candidate or an organ is refused at load, with its reason, and the refusal is one of the sixty-four checks in the tool's own test.

Its only counterfactuals are things the OPO does with its own resources: draw earlier, put a courier on standby, call a second crew. A coordinator decides what to do; fray measures how thin the margin is.

# in the distributions file actions: - name: "rank the recipients by score" shift: { event: A, minutes: -10 } $ fray CASE.json --delays that-file.yml fray: line 4: the action "rank the recipients by score" names something fray does not represent. Actions are things the OPO does with its own resources; fray never ranks, scores or allocates.
REFUSED AT LOAD, WITH THE REASON
04 — WHAT IS CHECKED, AND HOW

Sixty-four checks, and the interesting ones are equalities.

A Monte Carlo tool is easy to make plausible and hard to make right. Every check below was written with its threshold stated before the run, not adjusted afterwards to whatever the tool happened to do.

THE ORACLE
paritythe closure agrees with caseclock by equality, checked against caseclock's own binary — seven latest times on one fixture, and on an infeasible one the same four constraints named in the cycle
the closed forma case whose survival is exactly 51/81 by hand comes out at 0.63100, inside a stated 99 % bound
the marginhas a closed form too — uniform on 0…50, so median 25, tenth percentile 5, minimum 0. Reproduced exactly
attributiona case built with one dominant constraint names it in 100 % of 50,095 failures, against a line written at 90 %
counterfactualsan action that provably cannot help shows a delta of exactly zero — not zero within noise — and a positive control proves the runner is not simply inert
determinismone seed, one checksum; a single future replays on its own
the tapea tape whose body was altered is refused by its digest
FOR THE AGENT, AND FOR THE AUDITOR
--jsonthe answer with its seed, count, both input hashes and a checksum
--explainevery distribution used with the parameters it was fitted to, every constraint that did not vary, and where the failures went
--replayre-runs a recorded answer and says whether it reproduced, the inputs moved, or the tool is at fault
--tape-outappends the answer to a hash-chained tape that glance's verifier reads — three tools, one format
--aboutthe import-table receipt, read from the binary's own PE at run time
"receipt": {"dlls": 1, "network_dlls": [], "clean": true}
Open, and said here rather than discovered later: rev 0 samples each duration independently — weather that delays a courier also delays a team, and correlation is a later stage with its own falsifier, because a wrong correlation model is worse than an honest independent one. And a site's distributions should come from its own history; everything shipped is synthetic and labelled.

Free, MIT, one exe, no installer.

Windows 10 1809 or later, x64, 437 KB, linking kernel32 and nothing else. It reads caseclock's case files unchanged, so if you have a case you have an input. The binary is unsigned, so Windows will warn on first run.

Download the latest release ← the rest of the shop