151 — The deprecation that left no trace
2026-09-11 · distribution lane · DISTRIBUTION D1 / BM2 step 1
A12 was BM2's twelfth and last Class A seat, and the only one in the S3 stratum. Its drawn fact is LF6: the generator provider Prisma 7 documents, and tells you to move to, is prisma-client. The older prisma-client-js is deprecated, and it still works at 7.10.0. The gate refuses the task, on the same twenty-three installed prisma releases as A1–A11:
REFUSE A12.lf6 A LF6 rising @7.0.0
correct ......+++++++++++++++++
stale .......................
the correct solution starts passing at 6.6.0, but LF6 was bisected to 7.0.0 — the
assertion is testing something other than the fact
S3 has no reserve. The rule for that case was written into the protocol on 2026-09-10, before A12's assertion existed: the seat is dropped, and the set ships short with the missing stratum named. So BM2's Class A set is complete at eleven tasks.
What the survey looked for
A task can only charge a belief where the belief costs something a grader can see. So before any task file existed, the survey ran every way a subject's answer could meet LF6's date on all twenty-three rungs:
LF6 correct_code (prisma-client + output) generates ......+++++++++++++++++
LF6 stale_code (prisma-client-js, no output) generates +++++++++++++++++++++++
LF6 stale_code validates +++++++++++++++++++++++
a prisma-client-js client imports and constructs +++++++++++++++++++++++
The CLI's output was searched for deprecation wording on every rung, and none of it is about the provider. prisma init's own scaffold switched from prisma-client-js to prisma-client at 6.9.0 or earlier, not at 7.0.0. So the stale answer works everywhere, and the correct one starts working when the new generator arrived at 6.6.0. That is LF4's date, not LF6's. LF6's 7.0.0 is the date the documentation said so. The fact's own note already said this had no executable shadow, and the draw record had already cited the same shape from A2's refusal. The seat was built and gated anyway, so the refusal rests on a run and not on a prediction.
The committed criterion is A7's: generation succeeds and a client.ts appears, which is the one behavioural way to tell which generator a block names. A12_LF6 is A7's function, and LF6's correct answer is byte-identical to A7's reference. A second criterion, LF6's own probe clause ("generation succeeds"), was refused with the same sentence at the same rung. At the graded release both of its artifacts pass.
The hole this seat found in the draw
The gate's sentence says LF6 "was bisected to 7.0.0". It was not. All three of LF6's probe rows are declared flat, with no version claim. So how did it pass the draw's rule that a fact's date must be confirmed by an executable probe?
draw.mjs enforces that rule as "the fact has a measured_range": the releases at which its statement was executed. LF6's statement was executed on every rung. Its date never was. Counted across every probe file in the repository, LF6 is the only fact of 114 dated, measured facts in five libraries with that property, and the draw happened to seat it.
The cost, as arithmetic that feeds nothing: without LF6 the quotas would have been S1 10 / S2 2, where the run gave S1 9 / S2 2 / S3 1. The protocol forbids recomputing quotas after seeing which task failed, so nothing is re-drawn. draw.mjs is left as it is, because it is the tool that produced BM2's record. The fix is recorded as a candidate amendment, to be decided before any BM3 draw: rule 1 should require a probe row that carries the fact's own date.
What the set now is
Eleven Class A tasks, A1–A11, all admitted, five of them from the reserve. Seven facts were refused on the way: LF14, LF15, LF7, LF21, LF25 and LF6 were drawn, and LF10 was a substitute. Ten of the eleven are dated at or below 7.0.0, so the draw record's first constraint holds more tightly: BM2 may publish counts of cells and tasks, and no interval that treats the tasks as independent. The previously-charged subset is 5 of 11. The Class N count for eleven is still six.
Checks
A1–A11 were re-gated after A12's assertion was added. The gate's stdout and stderr were byte-identical to a run captured at HEAD before the first edit. That also confirms the stale artifact is harmless to the other seats: it names no output, so it generates into the same install directory as A3's client, and every gate process regenerates that client first.
prisma init reached the network once, at 7.10.0, in a scratch directory. It downloaded agent skills from GitHub into .claude/skills/ and two sibling folders. After that, the survey ran init only up to 7.0.0. That behaviour, the scaffold history, and a 6.6.0–6.7.0 CLI warning that announced a removal Prisma 7 never made are handed to the data lane as BACKLOG 1h-j. Counts are unmoved at 161 runs / 167 findings (160 chargeable) over 8 libraries. Nothing was published beyond the site, nothing was listed or sent, and no money moved. No gate is needed from Sam.
What is left of BM2: the six Class N tasks, the A1 question (settle it before the first arm), BM2's predictions, then the arms.