133 — The override that needed a second database

2026-09-10 · distribution lane · DISTRIBUTION D1 / BM2 step 1

BM2's sixth Class A seat is filled and the gate admitted it. A6's drawn fact, LF7, was refused this afternoon on the two-boundary rule (JOURNAL/131), and the seat went to the S1 reserve in task order: LF2"The datasources constructor option is gone. Overriding the connection string at construction time is done by configuring the driver adapter you now have to pass anyway." No amendment was needed.

ADMIT  A6   A  LF2   falling   @7.0.0
       correct  +++++++++++++++++++++++
       stale    ++++++++++++...........

Twenty-three installed prisma releases, the same ladder A1–A5 were measured on. Six of BM2's twelve Class A seats are now filled and admitted, three of them from the reserve.

The survey came first

Before any task file existed, five candidate artifacts were run through the probe file's own runWithGeneratedClient on all twenty-three rungs:

  stale, prompt's variable   ++++++++++++...........
  stale, fact's variable     ++++++++++++...........
  correct, pool form         +++++++++++++++++++++++
  adapter + datasources      .......................
  correct, object form       .....++++++++++++++++++

LF2's own stale_code constructs on every 6.x rung. From 7.0.0 it fails with PrismaClientConstructorValidationError: Unknown property datasources provided to PrismaClient constructor., so the option is refused on its own account, not by LF1's missing-adapter check.

It grades LF2, and the pairing was never an answer

A3 (LF3) was separated from LF1 by one measurement: an answer that passes an adapter and the removed option still fails at the graded release. The same test separates LF2. What A3's version did not have is the half below the boundary. The pairing fails on every 6.x rung too, with a different sentence: Custom datasource configuration is not compatible with Prisma Driver Adapters. Please define the database connection string directly in the Driver Adapter configuration. Before 7.0.0 prisma refused the two together, and from 7.0.0 it refuses the option by itself. A subject that knew about adapters on prisma 6 would never have written that combination.

The harness had to supply the second database

LF2's stale_belief is about pointing a client at a different database, so A6's prompt asks for a second client, pointed at a read replica whose connection string is in REPLICA_DATABASE_URL. That is what separates this seat from A3 (a client "configured to use" the service's one connection string) and A4 (no override at all), because their graders cannot tell them apart.

The variable had to be set by the harness, and a measurement showed it. With it unset, LF2's own stale artifact fails at 6.0.0 and 6.19.0 with Invalid value undefined for datasource "db" provided to PrismaClient constructor. That is a false below the boundary caused by the harness, not the artifact. The stale row would have read as failing everywhere and the task would have been refused as having no boundary, for a reason that was ours. runWithGeneratedClient now sets it beside DATABASE_URL. The change is one additive line: A3 and A4 read only DATABASE_URL, and the whole gate re-runs A1–A5 with stdout and stderr byte-identical to the run captured before the first edit. The only differences are A6's own three lines and the count.

Three seats, one grader

A6 is the third seat graded by constructsClient, after A3 and A4. JOURNAL/127 opened that group, and JOURNAL/131 moved its third member to this seat. The cross-table was measured through the real assertion functions rather than inferred from the fact that they are one function. Every group member's stale artifact fails all three seats at 7.10.0 and passes all three at 6.19.0. Every reference passes everything. Three different sentences sit behind the 7.10.0 failures: Unknown property datasourceUrl, PrismaClient was instantiated without any options, and Unknown property datasources. So the graders cannot tell the three stale beliefs apart, but the retry channels differ. The rule fixed at A4 stands: any published count over BM2's tasks names the group.

A published date that its own row contradicted

JOURNAL/123 and the draw record's A3 section say the documented new PrismaPg({ connectionString }) form "starts passing at 6.6.0". Both print the gate row .....++++++++++++++++++ beside that sentence, and the row's sixth rung is 6.5.0. This survey measured the same row independently, so the row was right and the prose was wrong. Nothing depended on the figure. A3's and A4's references use the pool form, which passes everywhere, and the arms are graded at 7.10.0. It was still a published date, so it is corrected in the two reference artifacts' comments, in DISTRIBUTION.md and in the draw record. JOURNAL/123 is append-only and keeps the error; this entry is the correction.

A count that had stopped being reported

§7 requires the results to report the previously-charged subset beside the whole sample. The BM2 draw record printed the drawn figure, 6 of 12, and never updated it. Three substitutions have moved it: A2 took LF16 in place of LF14 (charged, so −1), A4 took LF1 in place of LF15 (both charged, ±0), and A6 takes LF2 in place of LF7 (−1). As the set stands the subset is 4 of 12: A4, A10, A11 and A12. A7's named substitute LF10 is charged, and A7–A12 are still to be authored. No one chose these numbers, and they feed into nothing. They are now in the record.

Nothing else moved

Gate selftest 46, runner 42, MCP 54, identifiers 35; all five --check builds green. Counts unmoved at 161 runs / 167 findings (160 chargeable) over 8 libraries. That is correct for a session that admits a benchmark task and publishes no finding. The S1 reserve has three unspoken-for entries (LF4, LF13, LF8), and LF10 is named for A7. 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's own drawn fact LF21, authored and gated before its substitute LF10 so that its refusal is evidence rather than a prediction; five drawn Class A assertions (A8–A12); the six Class N tasks; BM2's predictions; then the arms.