Skip to content

Commit 96d8b20

Browse files
claude[bot]claude
andauthored
docs(drivers): retire the dissolved #5499 freeze claims at the 15 untriaged group-A sites (#13210)
* docs(drivers): retire the dissolved #5499 freeze claims at the 15 untriaged group-A sites The #5499 investment freeze dissolved 2026-08-11 (maintainer lifted it for driver-mongodb, then driver-memory the same day - evidence in the head note of packages/spec/src/data/aggregation-conformance.ts). 24 sites still asserted it in the PRESENT tense outside the packages the earlier sweep opened. This rewrites the 15 that are mechanical: past tense, dated, naming the dissolution, keeping whatever each sentence was actually explaining. Where a sentence used the freeze to EXCUSE a divergence, the excuse is now stated as lapsed and the card that owns the disposition is named rather than a new justification being invented: - memory-driver-document-not.test.ts -> #13166 / #13195 (undecided) - memory-tenancy-guard.ts (Route A) -> #6915 - mongodb-comparand-type-conformance -> untriaged, no card owns it - read-scope-undefined-comparand -> the #6125 debt "owed at thaw" is DUE Deliberately NOT touched (7 sites): the four dated group-C records (memory-pagination-conformance.test.ts:125, mongodb-filter-text-conformance .test.ts:18, tombstone-hydration-download-agreement.test.ts:58, service-storage/vitest.config.ts:47) and the three pins #13166 owns (memory-matcher-not-null-safe.test.ts:148/:174/:188). The generated packages/spec/src/migrations/registry.ts is excluded from the sweep grep. Reported, not rewritten (2 sites): driver-mongodb/src/test-mongod.ts:45 (group-B design rationale) and qa/dogfood/test/read-coercion-conformance .test.ts:11 (retirement mis-attribution). Both need a judgement, not a sweep. Comment and test-title prose only - no behaviour change. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01LZbWd2jNV1FErXTPSS4Dry * docs(drivers,qa): apply the two rulings on the not-group-A pair Both sites were reported rather than rewritten in the first commit because each needed a judgement. The coordinator ruled both; this applies them. test-mongod.ts (group-B design rationale) - option A, restate on the surviving grounds. The retirement had two premises and only one survives: the MEASURED merge-queue hazard (the unsettleable promise, three red builds in one day ejecting unrelated PRs), which is independent of investment posture. The #5499 freeze was the other, and it only ever answered "why not build the infrastructure instead"; it dissolved 2026-08-11. Per the ruling, the new text must NOT silently preserve the prohibition: it now reads as "nobody has built it, and here is the measured reason it was not worth building", says plainly that nothing forbids building it now, and defers the coverage-versus-CI-cost question to a separate card rather than settling it here. read-coercion-conformance.test.ts (retirement mis-attribution) - option A, MATCHED to the landed twin at packages/runtime/src/datasource-autoconnect.test.ts rather than independently worded. The twin KEPT the present progressive, so the tense half of the earlier recommendation is declined: the retirement is ongoing because check:driver-memory-census still enforces it, making "is being retired" accurate rather than stale. Seven clauses now match the twin verbatim, re-anchoring to #5704/#6664 and stating "NOT by #5499: that was an INVESTMENT freeze, a different proposition on the same anchor". The seven deliberately untouched sites remain absent from the branch diff, re-verified mechanically by path; the three #13166 pins are byte-identical to the branch base. Comment prose only - no behaviour change, no ablation, no rebuild claimed. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01LZbWd2jNV1FErXTPSS4Dry --------- Co-authored-by: Claude <noreply@anthropic.com>
1 parent e22158f commit 96d8b20

14 files changed

Lines changed: 105 additions & 40 deletions

packages/drivers/driver-memory/src/filter-refusal.ts

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -62,7 +62,11 @@ export function unsupportedFilterError(message: string): Error {
6262
* ADR-0112): the spec declares the key, this driver's `performAggregation`
6363
* evaluates no per-aggregation predicate, so it is a capability gap in the
6464
* backend rather than a mistake in the query. Building the evaluation here is
65-
* a capability investment this refusal deliberately is not (#5499 freeze).
65+
* a capability investment this refusal deliberately is not. That was the
66+
* #5499 investment freeze's call while it stood; the freeze dissolved
67+
* 2026-08-11 (head note of `@objectstack/spec`'s `aggregation-conformance.ts`),
68+
* so building it is now unclaimed rather than forbidden — and until someone
69+
* claims it the refusal is still the honest answer for an uncompiled key.
6670
* Refused rather than silently aggregating the UNFILTERED rows — the #10413
6771
* defect. Unreachable through `engine.aggregate` (the engine lowers filtered
6872
* aggregations in memory for every driver); this fires only for a caller that

packages/drivers/driver-memory/src/memory-aggregation-filter-refusal.test.ts

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,10 @@
1212
* engine itself never pushes a filtered aggregation down (it lowers in
1313
* memory); the refusal exists for direct callers. Evaluating the predicate
1414
* here instead would be a capability build-out, which the #5499 family freeze
15-
* rules out — the refusal path is the sanctioned scope.
15+
* ruled out while it stood; that freeze dissolved 2026-08-11 (head note of
16+
* `@objectstack/spec`'s `aggregation-conformance.ts`), so the build-out is now
17+
* unclaimed rather than forbidden and the refusal path remains this file's
18+
* scope until someone claims it.
1619
*
1720
* Every case asserts `code` AND `status`, never merely "it threw" (#6144).
1821
*/

packages/drivers/driver-memory/src/memory-comparand-type-conformance.test.ts

Lines changed: 8 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -7,10 +7,14 @@
77
* This is the driver the card was filed over: `{qty: {$eq: BigInt(100)}}`
88
* escaped as a raw mingo `TypeError` out of `Query.compile` (mingo builds its
99
* cache key with `JSON.stringify`, which refuses a BigInt), and five other
10-
* unsupported comparand types answered silent zero rows — on both faces. The
11-
* driver is under the #5499 investment freeze, so NOTHING here patches it: the
12-
* door (`parseFilterAST`, `@objectstack/spec/data`) refuses or narrows every
13-
* comparand BEFORE the driver runs, and this suite proves the inheritance —
10+
* unsupported comparand types answered silent zero rows — on both faces.
11+
* NOTHING here patches the driver — that was the #5499 investment freeze's
12+
* call when this suite was written, and the freeze dissolved 2026-08-11 (head
13+
* note of `@objectstack/spec`'s `aggregation-conformance.ts`), so patching is
14+
* now unclaimed rather than forbidden. The suite's scope is unchanged either
15+
* way, because what it actually asserts is the door: `parseFilterAST`
16+
* (`@objectstack/spec/data`) refuses or narrows every comparand BEFORE the
17+
* driver runs, and this suite proves the inheritance —
1418
* door-validated input executes correctly (the bigint arrives as its exact
1519
* number, so mingo never sees one), door-refused input never reaches mingo at
1620
* all.

packages/drivers/driver-memory/src/memory-driver-document-not.test.ts

Lines changed: 9 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -220,13 +220,16 @@ describe('[#5324] InMemoryDriver.find compiles a document-level $not', () => {
220220
* once the reversal's cross-backend cost had been measured, and the include
221221
* direction was re-affirmed — which leaves the split above.
222222
*
223-
* ⛔ Nothing is flipped in either direction: this package is inside the #5499
224-
* investment freeze. What the round trip confirmed is exactly why this pin
225-
* exists — this package answers with two different faces, so a statement like
226-
* "driver-memory already reads has-value" is true of the reference matcher and
227-
* FALSE of the live query path users actually reach.
223+
* ⛔ Nothing is flipped in either direction. The #5499 investment freeze was
224+
* the reason while it stood; it dissolved 2026-08-11 (head note of
225+
* `@objectstack/spec`'s `aggregation-conformance.ts`), so that excuse has
226+
* lapsed and the direction is now #13166's and #13195's to settle — ⛔ not
227+
* this pin's, and ⛔ not a sweep's. What the round trip confirmed is exactly
228+
* why this pin exists — this package answers with two different faces, so a
229+
* statement like "driver-memory already reads has-value" is true of the
230+
* reference matcher and FALSE of the live query path users actually reach.
228231
*/
229-
describe('[#5299] the settled cells, live vs reference — behaviour frozen (#5499)', () => {
232+
describe('[#5299] the settled cells, live vs reference — divergence pinned, disposition open (#13166/#13195)', () => {
230233
const liveVsReference = async (where: unknown) => ({
231234
live: await idsFrom(nulled, where),
232235
reference: NULLED.filter((r) => match(r, where)).map((r) => r.id),

packages/drivers/driver-memory/src/memory-driver.ts

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -409,8 +409,11 @@ export class InMemoryDriver implements IDataDriver {
409409
//
410410
// `offset` above is deliberately left on truthiness: `slice(0)` IS the
411411
// identity slice, so presence and truthiness cannot be told apart there —
412-
// no behaviour to fix. The #5499 freeze exception granted here is the limit
413-
// door only.
412+
// no behaviour to fix — and that is the whole reason now. The #6577 ruling
413+
// scoped its exception to the limit door only, but it was an exception to
414+
// the #5499 investment freeze, and that freeze dissolved 2026-08-11 (head
415+
// note of `@objectstack/spec`'s `aggregation-conformance.ts`). So scope is
416+
// no longer what holds this line back; the identity-slice argument is.
414417
if (query.limit !== undefined) {
415418
results = results.slice(0, query.limit);
416419
}

packages/drivers/driver-memory/src/memory-like-pattern.test.ts

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -9,9 +9,11 @@
99
* family a real pattern arm. The other backends then had a choice per the
1010
* issue's own bar: implement the same semantics, or refuse loudly in the
1111
* ADR-0112 envelope — never quietly answer something else. `driver-mongodb`,
12-
* objectql's `having` and `service-analytics` refuse, because they have no arm
13-
* and are in the #5499 frozen family. This driver implements, for two reasons
14-
* that do not apply to them:
12+
* objectql's `having` and `service-analytics` refuse, because they have no
13+
* arm; they were also inside the #5499 investment freeze when they chose, and
14+
* that freeze dissolved 2026-08-11 (head note of `@objectstack/spec`'s
15+
* `aggregation-conformance.ts`), so their refusal now rests on the missing arm
16+
* alone. This driver implements, for two reasons that do not apply to them:
1517
*
1618
* 1. **It is the in-memory DOUBLE.** An application whose tests run here and
1719
* whose production runs SQL would get a 400 in test for a filter that works

packages/drivers/driver-memory/src/memory-tenancy-guard.ts

Lines changed: 14 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -46,9 +46,13 @@
4646
* Multi-tenant deployments use `@objectstack/driver-sql`, which implements
4747
* driver-level tenant scoping. When real demand for in-memory multi-tenancy
4848
* appears, the fix is to implement the isolation (option A in #6915) — not to
49-
* weaken this gate. Route A stays behind the #5499 investment freeze; a startup
50-
* refusal is not an investment in this driver's capabilities, it is the removal
51-
* of a silent failure mode (maintainer ruling, 2026-08-12).
49+
* weaken this gate. Route A sat behind the #5499 investment freeze; that freeze
50+
* dissolved 2026-08-11 (head note of `@objectstack/spec`'s
51+
* `aggregation-conformance.ts`), so Route A is now unbuilt and owned by #6915
52+
* rather than blocked by a freeze. The ruling this guard rests on is untouched
53+
* by the dissolution — it POSTDATES it: a startup refusal is not an investment
54+
* in this driver's capabilities, it is the removal of a silent failure mode
55+
* (maintainer ruling, 2026-08-12).
5256
*/
5357

5458
import { resolveTenancyPosture } from '@objectstack/types';
@@ -140,10 +144,13 @@ export function assertSingleTenantPosture(): void {
140144
* This driver has no `syncSchemasBatch()` (it does not advertise
141145
* `supports.batchSchemaSync`, so the engine syncs one object per call), which
142146
* means the batch shape is reached one object at a time in practice. The
143-
* array-taking signature is kept anyway: it is the precedent's shape, it is
144-
* what makes the all-offenders-in-one-message property directly testable, and
145-
* adding a batch path here would be capability investment in a driver whose
146-
* capabilities are frozen (#5499).
147+
* array-taking signature is kept anyway: it is the precedent's shape, and it is
148+
* what makes the all-offenders-in-one-message property directly testable.
149+
* Adding a batch path here would be capability investment, which the #5499
150+
* freeze ruled out while it stood; that freeze dissolved 2026-08-11 (head note
151+
* of `@objectstack/spec`'s `aggregation-conformance.ts`), so the batch path is
152+
* now merely unasked-for — this driver still advertises no
153+
* `supports.batchSchemaSync`.
147154
*/
148155
export function assertObjectsNotTenantScoped(
149156
schemas: Array<{ object: string; schema: unknown }>,

packages/drivers/driver-mongodb/src/mongodb-comparand-type-conformance.test.ts

Lines changed: 9 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,10 @@
1717
* ## The worst cell, and what "inherits via the shared path" means here
1818
*
1919
* This driver has NO comparand-type policy of its own, and the ruling keeps it
20-
* that way (#5499 freeze — nothing here patches the driver). Measured on the
20+
* that way. Nothing here patches the driver: that was the #5499 investment
21+
* freeze's call when this suite was written, and the freeze dissolved
22+
* 2026-08-11 (head note of `@objectstack/spec`'s `aggregation-conformance.ts`),
23+
* so patching is now unclaimed rather than forbidden. Measured on the
2124
* wire: `{qty: undefined}` BSON-encodes to `{}` — a predicate the author wrote
2225
* to CONSTRAIN reaching the server as MATCH EVERYTHING, the one divergence
2326
* cell that returned MORE data rather than less. The door
@@ -168,8 +171,11 @@ describe('[#7872] driver-mongodb — comparand-type conformance (server-free, be
168171
/**
169172
* The reverse direction, pinned at the exact step #7956 measured it: WITHOUT
170173
* the door, the implicit-equality `undefined` still reaches the wire as `{}`
171-
* — match everything. This driver stays frozen (#5499), so the silent edit
172-
* is expected to persist on the direct path; the door is what stands in
174+
* — match everything. The silent edit is expected to persist on the direct
175+
* path: that was policy under the #5499 investment freeze, and the freeze
176+
* dissolved 2026-08-11 (head note of `@objectstack/spec`'s
177+
* `aggregation-conformance.ts`), so it is now an UNTRIAGED divergence rather
178+
* than a frozen one — no card owns it. Either way the door is what stands in
173179
* front of it, and the refusal case above is the cell's platform answer. If
174180
* the mongodb package ever stops dropping undefined-valued keys, this pin
175181
* fails loudly and should be retired with its sentence in the suite header.

packages/drivers/driver-mongodb/src/mongodb-icontains.test.ts

Lines changed: 7 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -5,9 +5,13 @@
55
* `translateFilter` emits.
66
*
77
* Server-free is not a convenience here, it is what makes the cell testable at
8-
* all: this package is in the #5499 frozen family and its real-mongod suites are
9-
* OPT-IN (`OS_TEST_MONGODB_MEMORY_SERVER_ENABLED=1`), so a suite that needed a
10-
* server would not run in CI. The pattern this translator emits is the whole
8+
* all: this package's real-mongod suites are OPT-IN
9+
* (`OS_TEST_MONGODB_MEMORY_SERVER_ENABLED=1`, #5517), so a suite that needed a
10+
* server would not run in CI. (This package was also in the #5499 frozen family
11+
* when that was written; the freeze dissolved 2026-08-11 — head note of
12+
* `@objectstack/spec`'s `aggregation-conformance.ts` — and the opt-in gate,
13+
* which is what actually carries the argument, is unaffected by that.) The
14+
* pattern this translator emits is the whole
1115
* behaviour — MongoDB's own `$regex` semantics are not under test — which is the
1216
* same judgement `mongodb-filter-logic-translation.test.ts` makes for the logic
1317
* case-set. The emitted patterns are additionally EXECUTED as JS `RegExp`s

packages/drivers/driver-mongodb/src/test-mongod.ts

Lines changed: 21 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -41,9 +41,27 @@
4141
* merge queue at least three red builds in one day and ejected unrelated PRs.
4242
*
4343
* The maintainer's call was to RETIRE the download rather than build
44-
* single-flight / prewarm infrastructure for a driver family whose investment is
45-
* frozen (#5499). So: no `globalSetup` pre-download, no cross-worker lock, no
46-
* workflow cache warming. The binary-dependent suites simply do not run unless a
44+
* single-flight / prewarm infrastructure. Two premises stood behind that call
45+
* and only one of them survives.
46+
*
47+
* The survivor is the MEASURED merge-queue hazard above: the unsettleable
48+
* promise cost at least three red builds in one day and ejected unrelated PRs,
49+
* which is what made this download not worth its coverage. That measurement is
50+
* independent of any investment posture, so the retirement stands on it alone.
51+
*
52+
* The premise that is GONE is #5499, this driver family's investment freeze —
53+
* the clause that used to answer "why not just build the infrastructure
54+
* instead". It dissolved 2026-08-11 (head note of `@objectstack/spec`'s
55+
* `aggregation-conformance.ts`).
56+
*
57+
* So, still: no `globalSetup` pre-download, no cross-worker lock, no workflow
58+
* cache warming — but read that as NOBODY HAS BUILT IT, and never as "it must
59+
* not be built". Nothing forbids building it now; the measured hazard above is
60+
* why it was not worth building. Whether the opt-in coverage now justifies that
61+
* infrastructure is a maintainer call about coverage versus CI cost — a
62+
* separate card, not this file's to settle.
63+
*
64+
* The binary-dependent suites simply do not run unless a
4765
* human asks for them with {@link MONGOD_TESTS_ENV}, and the gate is checked
4866
* before the library is even imported, so a default run starts zero downloads.
4967
*

0 commit comments

Comments
 (0)