Uh oh!
There was an error while loading. Please reload this page.
docs: restate the dissolved #5499 freeze prose on surviving grounds (A/B/C, generated registry and #13166's cell untouched) - #13196
Conversation
The maintainer lifted the #5499 investment freeze for driver-mongodb and driver-memory on 2026-08-11 (recorded in the head note of packages/spec/src/data/aggregation-conformance.ts), but ~13 in-code sites still asserted it in the present tense, three of them as the REASON for a structural choice. Group A (present-tense claims): re-dated so each records what was true when it was written, keeping the #5499 anchor. Group B (three design rationales in packages/spec/src/data/): each rationale survives losing the freeze premise and is restated on the surviving ground — the #7956 divergence matrix and the #7872 / #8234 shared-face rulings. The freeze is kept on record as the premise the argument was FIRST made from, never silently deleted. Group C (dated/historical records) is untouched, and so is packages/spec/src/migrations/registry.ts, which is generated. packages/runtime/src/datasource-autoconnect.test.ts asserted RETIREMENT, not freeze, on the same anchor: re-anchored to #5704 / #6664, the mechanism that actually owns it and that check:driver-memory-census enforces. filter-logic-conformance.ts:179 is deliberately left alone: it is the table cell for the behavioural divergence #13166 owns, and that card is undecided.
…ssolved-freeze-residue
📓 Docs Drift Check
What this run could not see
Coarse fallback — 127 page(s) merely mention a changed package (the pre-#9192 predicate, kept for the deliberately-wide backstop): |
Uh oh!
There was an error while loading. Please reload this page.
Fixes#13168
The maintainer lifted the #5499 investment freeze for
driver-mongodbon 2026-08-11 and fordriver-memorylater the same day (evidence on disk: the head note ofpackages/spec/src/data/aggregation-conformance.ts). Roughly a dozen in-code sites still asserted that freeze in the present tense, and three of them used it as the REASON for a structural choice.This PR is prose only. No code path, no schema, no export changes.
The denominator I measured, not the card's
grep -rn 5499 packages --include=*.tsat39d5d8a60gives 53 hits; minus the five in the GENERATEDpackages/spec/src/migrations/registry.tsthat leaves 48 across 40 files, all anchored#5499(no bare-number false positives). The same sweep at the card's own ref56470d86balso gives 48, so the card's~13is an enumeration of a subset rather than a different measurement. Cross-referencing every line-ref the card names accounts for 24 of the 48; the other 24, in 15 files, were untriaged — all in packages the card never opened. They are not touched here (the dispatch pinned this PR's file surface to the card's own sites) and are filed as #13194.A — present-tense claims, re-dated (9 sites, 1 deliberately skipped)
Each keeps its
#5499anchor and now records what was true when it was written, so the anchor stays findable and no history is lost.objectql/src/engine.ts:4465packages/drivers/**is under the freeze, so that work is not this change's to doobjectql/src/engine-autonumber-resync.test.ts:683objectql/src/temporal-comparand-door.ts:60storageDatetimeValueis shared with the WRITE path and read-repair) already carried itobjectql/src/search-filter.ts:34driver-memory/driver-mongodb(#5499)"$icontainsas a sanctioned one-off while under the freeze, lifted 2026-08-11objectql/src/filter-comparand-shape.ts:14runtime/src/package-service.null-seam.test.ts:20check:driver-memory-census, which is #5704/#6664's and outlived the freezespec/src/data/index.ts:11spec/src/data/filter-logic-conformance.ts:202spec/src/data/filter-logic-conformance.ts:212$existscannot be enrolled because both backends are "frozen by#5499"⛔
filter-logic-conformance.ts:179is deliberately NOT touchedThat cell —
driver-memory reference matcher | no — DIVERGENT, frozen (#5499) | …— is the table cell for the behavioural divergence #13166 owns. #13166 is open and undecided (pm:queue/domain:engine/bug/priority:p1, verified at implementation time), and its triage forbids exactly this edit, verbatim: 「⛔ 但不要只把它们改成过去时……这两处的措辞随本卡的处置一起定,⛔ 不得先于处置改写」, on the reasoning #13089's triage gave — "Rewriting them to past tense without deciding the divergence would have converted an actionable defect into settled-looking prose." The cell also sits inside a dated measurement block ("Taken on60f0dd8"), which makes it closer to group C than group A on its own terms. It is left exactly as it stands.The
datasource-autoconnectsite was a RETIREMENT claim, and it was mis-attributedruntime/src/datasource-autoconnect.test.ts:19said the in-project test surface "is being retired (#5499)". Judged on its own terms as the card asked: the retirement proposition is true, but #5499 is the wrong anchor for it. #5499 was an INVESTMENT freeze; the retirement is #5704's (which migrated the test backends) and #6664's (which replaced the prose census with the ledgercheck:driver-memory-censusenforces), and it carried on after the freeze was lifted. Re-anchored to those, with the distinction spelled out so the next reader is not sent back to a dissolved freeze.B — the three design rationales: all three survive, each restated on its surviving ground
None of the three was silently deleted, and none was rewritten as if nothing had changed: each now records that the freeze was the premise it was first argued from, that the premise is gone, and what carries the argument instead.
1.
spec/src/data/filter-comparand-type.ts:29— was: "Both driver families that lack a policy are under the #5499 investment freeze, so the policy cannot be grown per driver".Surviving ground: the #7956 divergence matrix and the #7872 ruling. A policy grown per driver is one accepted set with an implementation per backend, and #7956 measured what that produces — two camps, one hole, and a silent-edit cell no reading had found (
{qty: undefined}encoded to{}, a filter matching every row). The #7872 ruling puts the definition at the shared face for that reason, not for the freeze. The set stays promoted here.2.
spec/src/data/filter-comparand-shape.ts:42— was: "both driver families are under a maintainer investment freeze (#5499), so the policy cannot be grown per driver".Surviving ground: the divergence table immediately above it, which the paragraph already called "the argument for a shared face: three backends, three answers, one declared contract" — the freeze was the second reason, and the load-bearing one survives untouched. Reinforced by #8234's routing ruling for the sibling comparand-TYPE question ("enforced once at the shared compile face for all five drivers"); this file is that answer for comparand SHAPE.
3.
spec/src/data/filter-comparand-type-conformance.ts:29— was: "This is how the frozen drivers (#5499) inherit the policy without a driver-local patch."Surviving ground: the door's POSITION, not the drivers' status. It sits upstream of every driver, so a driver that carries no comparand-type policy of its own inherits this one with no driver-local patch — a property that was argued for while the two were frozen and does not depend on it.
⇒ Nothing was escalated. Had any of the three failed to survive, the dispatch fence required stopping and reporting rather than re-opening the design decision. All three hold.
C — untouched, on purpose
runtime/src/autonumber-seed-cross-side-parity.integration.test.ts:72,76,runtime/src/sandbox/undeclared-field-write-driver-split.integration.test.ts:87,objectql/src/having-filter.ts:116, and the three ADR-0087 retirement records underspec/src/migrations/entries/semantic/. They are frozen-in-time records, correct as they stand. Also untouched:objectql/src/having-filter.ts:41andservices/service-analytics/src/read-scope-sql.ts:180, which belong to #13089 / #13166.⛔ The generated artifact
packages/spec/src/migrations/registry.tscarries the same five strings at 1252 / 1273 / 1696 / 2797 / 4049 and is GENERATED fromentries/. It is excluded from the sweep above and untouched;check:migration-registryproves it is current.Verification
Union run after the final commit, at
git rev-parse --short HEAD=768caf3b0. Exit codes captured before any pipe; each verdict below is the gate's own printed line.pnpm --filter @objectstack/spec check:generated— exit 0.✓ All 14 generated artifacts are up to date.Named individually:✓ check:migration-registry src/migrations/registry.ts — its generated regions, from src/migrations/entries/, plus✓ check:authorable-surface,✓ check:api-surface,✓ check:docs,✓ check:export-origins.node scripts/pm/dispatch-gates.mjs --repo objectstack-ai/objectstack(no hand-fed paths; it takes the change set from the merge base itself). 27 families run locally, all exit 0 — includingcheck:nul-bytes,check:test-source-alias,check:cross-package-test-inputs,check:engine-double-contract,check:where-matcher,check:dispatcher-error-vocabulary,check:type-check-coverage,check:doc-authoring,check:spec-parsed-alias,check:merge-driver,check:keyed-text-bounds,check:variant-docs, andscripts/check-comment-mask-adoption.mjs.pnpm --filter @objectstack/spec --filter @objectstack/objectql --filter @objectstack/runtime typecheck— exit 0. Includes spec'scheck:test-typecheck:OK — @objectstack/spec's test layer compiles under packages/spec/tsconfig.test.json.3b28eb86c(the commit before theorigin/mainmerge;git diff --stat 3b28eb86c..768caf3b0 -- packages/is empty, so the merge moved nothing this run covers):pnpm --filter @objectstack/spec test— exit 0.Test Files 443 passed (443)/Tests 11752 passed (11752).pnpm --filter @objectstack/objectql exec vitest run --maxWorkers=2 src/engine-autonumber-resync.test.ts src/engine-comparand-type-door.test.ts— exit 0.Test Files 2 passed (2)/Tests 36 passed (36).pnpm --filter @objectstack/runtime exec vitest run --maxWorkers=2 src/datasource-autoconnect.test.ts src/package-service.null-seam.test.ts— exit 0.Test Files 2 passed (2)/Tests 15 passed (15).scripts/check-test-completeness.mjswas re-run on the merged head and now exits 3, which is its own NOT MEASURED code: "record this gate as NOT MEASURED … ⛔ It is NOT a finding".NOT MEASURED, stated as such rather than counted green:
check:dual-build-cjs-loadsandscripts/check-dev-prereqs.mjsboth refuse on this worktree — 37 of 67 packages have nodist/— and say so themselves (PREREQUISITE NOT MET … ⛔ This is NOT a pass: nothing was measured.).scripts/check-test-completeness.mjsneeds a turbo test log argument it was not given. None of the three is a red. Also:packages/objectql'stsc --noEmit --listFilesdoes not includeengine-autonumber-resync.test.ts, so the green typecheck says nothing about that file — the targeted vitest run is what covers it.No changeset — deliberate, with precedent
The diff is 100% comments. Nothing changes in any published type surface:
grep -c 5499andgrep -c 2026-08-11are both 0 inpackages/spec/dist/index.d.ts,packages/objectql/dist/index.d.tsandpackages/runtime/dist/index.d.tsafter a rebuild, andcheck:api-surfacepasses. Two comment-only precedents onmain, both merged with no changeset, one of them inpackages/spec:9e8adf3f6—docs(spec): name the real policy-gate runtime symbols in the publish-gate table (#13046)635aa6150—docs(cli): drop stale family counts from json-stdout-purity docblock (#13047)skip-changesetis applied to this PR accordingly.Landing posture
⛔ Stays DRAFT. The diff touches
packages/spec/src/**, so clause-② PATH leg applies andneeds:contract-reviewis attached; the review is parked for the review chain. Not marked ready, no auto-merge, not enqueued.Out-of-scope findings filed
#5499sites outside this card's packages, including a FOURTH group-B design rationale (drivers/driver-mongodb/src/test-mongod.ts:45) and a SECOND retirement mis-attribution (qa/dogfood/test/read-coercion-conformance.test.ts:11).$existsstill reads key-presence ondriver-memory's live mingo path anddriver-mongodb; driver-memory's reference matcher still answers $notContains / $nin the pre-ruling way on a no-value row — the #5499 freeze that excused it dissolved 2026-08-11, so the divergence is now unexcused and untracked #13166's triage explicitly excludes that cell, so the divergence is now unexcused and untracked.Generated by Claude Code