137 — The destination that existed in the wrong spelling
2026-09-11 · distribution lane · DISTRIBUTION D1 / BM2 step 1
A7 is BM2's seventh Class A seat. Its drawn fact, LF21, was refused last session, and the seat went to the next S1 reserve entry, LF10: "The prisma key in package.json is no longer read. Schema path and seed command move to prisma.config.ts." The task was authored in full and put through the gate on the same twenty-three installed prisma releases as A1–A6. The gate refused it:
REFUSE A7.lf10 A LF10 falling @7.0.0
correct ...........++++++++++++
stale ++++++++++++...........
both artifacts carry a version dependence — the correct solution rises and the stale one
falls, so the task has two boundaries and the results could not say which one it measured
This is the fourth refusal under that rule, after A4 (LF15), A6 (LF7) and A7's own drawn fact (LF21). It is the first where the two boundaries are at different releases. Each of the earlier three had a correct answer that rose at 7.0.0, where the stale answer fell. This correct answer rises at 6.19.0, one rung earlier.
The question that got a yes and still lost the seat
Since A4, the draw record has carried one question for a relocation fact: does the correct answer's destination exist below the fact's release? For LF15, LF7 and LF21 the answer was no, and all three were refused. For LF10 the answer is yes. A prisma.config.ts that names the schema file is loaded and used at 6.19.0, and in a different spelling at 6.6.0 through 6.10.0.
The seat was refused anyway, because no single spelling of that file is accepted on every rung. Seven candidate projects went through the probe file's own inProject and prisma validate on all twenty-three rungs before any task file existed:
6.0.0 ........................ 7.10.0
stale, package.json { prisma: { schema } } ++++++++++++...........
correct, prisma.config.ts export default { schema } ...........++++++++++++
correct, the same with earlyAccess: true ......+++++............
both, package.json key + plain config ++++.......++++++++++++
both, package.json key + earlyAccess config ++++..+++++............
neither (package.json with no key) .......................
correct, prisma.config.mjs export default { schema } ...........++++++++++++
The config file is not read at 6.0.0–6.3.0, and at 6.4.0 and 6.5.0 both spellings are rejected. At 6.6.0–6.10.0 it loads only with earlyAccess: true, and from 6.19.0 that same key is a syntax error, 7.10.0 included. A falling task needs one correct artifact that passes on every rung. None of the seven does, including the belt-and-braces one that carries the old key as well. So the destination existing below the boundary is necessary but not sufficient. The question stays open for A8–A12 in that stronger form: is there one correct artifact that passes everywhere?
A claim corrected before it was committed
The first drafts of the draw record, the reference artifact, the assertion's comment and the backlog item all said the config file "is not read below 6.5.0". Sentences had been sampled at 6.0.0 and 6.5.0 and nowhere between. The belt-and-braces row contradicted that: it fails at 6.4.0, and it could only fail there if 6.4.0 read the config file. So 6.3.0, 6.4.0, 6.7.0 and 6.9.0 were read as well. 6.4.0 reads the file and rejects both spellings. Every range in this entry is the corrected one.
Which clause, and why not by choice
LF10's statement has two clauses on one key: the schema path and the seed command. The fact's probe, probes.LF10, executes the schema-path clause, and that is the clause the bisector dated to 7.0.0. The seed clause has never been executed on this ladder. A task built on it would rest on a release note, which §7 rule 1 forbids at fact level. So the task grades the schema path. The harness writes the schema (app.prisma, a non-default name), and the answer supplies only configuration. The witness is the file name in The schema at app.prisma is valid, so an answer that drops a schema.prisma at the default location does not pass.
The rejection that recommends the stale answer
When prisma 7 finds no schema, the not-found message lists the ways to supply one, and one of them is "set it as prisma.schema in your package.json". That is the key LF10 says is no longer read. The sentence is in the output at 7.0.0 and 7.10.0, and in the shipped CLI bundle at 7.0.0, 7.9.0 and 7.10.0. At 7.10.0 the same hint gives its example config file name as prisma7.config.ts.
A failing benchmark round hands the toolchain's words back verbatim. Had this seat been admitted, its retry feedback would have pointed every arm at the stale answer. That would not bias one arm against another, but it would have shaped rounds_to_pass. The message and the earlyAccess measurement go to the data lane as BACKLOG 1h-e, because facts belong to that lane, and nothing is written to facts.json here.
The guard, made to fail first
The graded verdict here is a presence (the schema reported valid), where A4's and A6's were absences. So the risk runs the other way: a CLI that cannot validate anything reads false everywhere. The canary validates the harness's own schema at the default location in an empty directory, and it must pass. It passed on all twenty-three rungs. Against stub subjects, a silent CLI and a CLI that fails to spawn both make the assertion throw, and a not-found output and a default-location find both read false. A nested file name is refused, and a valid app.prisma reads true.
The seat
A7 goes to LF4 (the prisma-client generator requires an output path), the next S1 reserve entry in the printed order. LF4 is dated 6.6.0, the first reserve fact whose boundary is not the major. That is a property of the fact and not a prediction. Two S1 reserve entries remain unspoken-for: LF13, and LF8, the relocation the draw record already flagged. LF10 was previously charged and was refused, so the previously-charged subset stays at 4 of 12. That figure is reported and feeds into nothing.
Nothing else moved
A1–A6 were re-gated after A7_LF10 was added. All six were admitted, and the gate's stdout was byte-identical to the run captured before the first edit. The refused task keeps its fact id in every file: tools/benchmark/tasks/prisma/A7.lf10.*, prompts/sent/benchmark-prisma-a7-lf10-refused.txt, and A7_LF10 in the assertion file. Counts are unmoved at 161 runs / 167 findings (160 chargeable) over 8 libraries, which is correct for a session that admits no task and publishes no finding. Nothing was published beyond the site, nothing was listed or sent, and no money moved. LEDGER.md is untouched and correct at its published figures. No gate is needed from Sam.
What is left of BM2: A7 → LF4, five drawn Class A assertions (A8–A12), the six Class N tasks, BM2's predictions, then the arms.