Skip to content

docs(spec,analytics): the #5499 freeze prose reads LIFTED (2026-08-11) at the surviving product-source sites - #13321

Merged
hotlong merged 5 commits into
mainfrom
claude/issue-13277-freeze-tense-sweep
Aug 30, 2026
Merged

docs(spec,analytics): the #5499 freeze prose reads LIFTED (2026-08-11) at the surviving product-source sites#13321
hotlong merged 5 commits into
mainfrom
claude/issue-13277-freeze-tense-sweep

Conversation

@os-project-manager

Copy link
Copy Markdown
Collaborator

The maintainer lifted the #5499 investment freeze for driver-mongodb on 2026-08-11 and for driver-memory later the same day. The authority is the head note of packages/spec/src/data/aggregation-conformance.ts, which is already correct and is not touched here. This PR corrects product-source prose that still asserted that freeze in the present tense, at the sites that survive on the live tree.

Premise re-derivation — the card's enumeration was materially stale, and most of it is already fixed

The card said so itself ("this enumeration is a hint, not an input", derived at e84bbf6, 2026-08-28). Re-deriving at dispatch time changed the answer: PR #13196 landed 2026-08-29 09:50, roughly seven hours before this card was filed, and it already corrected five of the nine declared sites.

Declared siteState on the live treeAction
spec/src/data/aggregation-conformance.ts:141authority head note, already correctuntouched by design
spec/src/data/filter-comparand-type.ts:29already corrected by #13196none needed
spec/src/data/filter-comparand-shape.ts:42already corrected by #13196none needed
spec/src/data/filter-logic-conformance.ts:203,214already corrected by #13196none needed
spec/src/migrations/registry.ts:1252,1273present tensefixed here
spec/src/migrations/registry.ts:1696,2797,4049present tense (generated region)fixed here, via their producers
objectql/src/engine.ts:4466already corrected by #13196none needed
objectql/src/temporal-comparand-door.ts:60already corrected by #13196none needed
objectql/src/having-filter.ts:41present tensecarved out — see below
services/service-analytics/src/read-scope-sql.ts:180present tensefixed here

So the card's premise is partly invalidated, not wholly: six real sites remained, and this PR lands five of them.

registry.ts is partly GENERATED — the three worst sites needed their producers, not the file

PR #13196 skipped packages/spec/src/migrations/registry.ts on the stated ground that it "is generated". That is half right, and the half matters. Per the file's own head note and .gitattributes, each step's semantic list and the two retired-* tables are concatenated into os-generated regions from src/migrations/entries/, one file per entry; everything outside those markers — including each step's rationale — is hand-written.

Measured against the marker map (semantic:17 spans lines 1437-5029):

  • :1252 and :1273 sit outside every generated region ⇒ edited in place.
  • :1696, :2797, :4049 sit insidesemantic:17 ⇒ edited at their producers in entries/semantic/, then regenerated. A hand-edit there would have been reverted by the next gen:migration-registry run.

This is why three files under entries/semantic/ appear in the diff. They are the producers of declared-surface content, not a scope widening; check:migration-registry passing is the proof the propagation is correct.

All five registry sentences ship

spec-changes.json is in packages/spec's published files array, and docs/protocol-upgrade-guide.md is generated from the same registry. Every one of the five corrected sentences propagates into both. That is why this PR carries a real changeset rather than the skip-changeset label: the label's own premise is that such a PR "releases nothing", which is false here.

Verification readings — before/after, per site

Before, at the branch point 3322527f:

registry.ts:1252 'backends that implemented these two are inside the #5499 freeze and are untouched; their '
registry.ts:1273 'mistake and would have to be lowered across five faces, two of them frozen under #5499, '
registry.ts:1696 'and lowering `SUM(DISTINCT …)` across five faces — two of them frozen under #5499 — '
registry.ts:2797 'BARE spelling returns the unfiltered set in silence — stays open under the #5499 '
registry.ts:4049 'ruling ended, and #5499 has both of those backends frozen. `count_distinct` was '
read-scope-sql.ts:180 ' * `driver-mongodb` stay pin-only under the #5499 freeze.'

After, at this branch head:

registry.ts:1252 'backends that implemented these two were inside the #5499 freeze when this was decided '
registry.ts:1275 '#5499 (lifted 2026-08-11, after this ruling), to buy it. The blast radius inside the '
registry.ts:1699 '#5499, a freeze lifted 2026-08-11, after this ruling — '
registry.ts:2800 'BARE spelling returns the unfiltered set in silence — stayed open under the #5499 '
registry.ts:4053 'ruling ended, and #5499 had both of those backends frozen at the time (that freeze '
read-scope-sql.ts:180 ' * `driver-mongodb` were pin-only under the #5499 freeze when #6125 scoped this,'

A word-diff of the two generated artifacts confirms the regeneration carried only these tense corrections and no unrelated drift: every changed token is one of arewere, staysstayed, hashad, frozen.frozen at the time (…), plus the inserted lift dates.

The witness pair is now closed

The card's core measurement was two sibling files in service-analytics disagreeing on one fact. The test — __tests__/read-scope-undefined-comparand.test.ts, repaired by #13210 — already said the thaw arrived and the debt is DUE. Its subject module said the freeze was live. The module's wording is now brought into agreement with that already-merged sibling, in the sibling's own terms.

What this PR deliberately does NOT do

⚠️ One declared site is carved out: objectql/src/having-filter.ts:41

It is left byte-identical to main, and this is the one judgement call in the PR worth a reviewer's attention.

Open card #13166 (p1, pm:queue, domain:engine, unassigned) names that exact site — together with read-scope-sql.ts:179-180 — as its own deliverable, and records why a tense-only rewrite is the wrong repair:

Rewriting them to past tense without deciding the divergence would have converted an actionable defect into settled-looking prose, which is what the #13089 triage forbade.

#13166 additionally measured that the sentence's driver-mongodb half was never true for this operator family: translateFieldOperators maps $nin straight through and compiles $notContains to a negated regex, both of which match a missing or null field, so that driver already agrees with the ruling. A tense-only correction would therefore have shipped a claim already measured false while appearing to settle a live defect. Left for #13166 to land with its decision.

read-scope-sql.ts is kept, on the opposite evidence: its cell is the undefined-comparand refusal rather than the $notContains / $nin family, and its wording now mirrors the already-merged #13210 repair of its own sibling test, verbatim in substance.

Tests and gates

Run in a dedicated worktree at this branch head, after merging main and rebuilding.

  • pnpm --filter @objectstack/spec check:generatedAll 14 generated artifacts are up to date, including check:migration-registry, check:spec-changes, check:upgrade-guide and check:api-surface.
  • pnpm --filter @objectstack/service-analytics testTest Files 83 passed (83) · Tests 1805 passed (1805).
  • pnpm --filter @objectstack/objectql testTest Files 247 passed (247) · Tests 4273 passed (4273).
  • pnpm --filter @objectstack/spec test — reported in the issue thread.

Gate family re-derived from the real change set with node scripts/pm/dispatch-gates.mjs --repo objectstack-ai/objectstack rather than from the dispatch list.

Fixes#13277


Generated by Claude Code

…se in past tense at the surviving product-source sites
That site is claimed as a deliverable by open card #13166, which records that
rewriting it to past tense without first deciding the underlying divergence
would turn an actionable defect into settled-looking prose. #13166 also measures
the sentence's driver-mongodb half as never having been true for this operator
family, so a tense-only correction would ship a claim already measured false.
Left untouched for #13166 to land with its decision.
@github-actions

Copy link
Copy Markdown
Contributor

📓 Docs Drift Check

⚠️2 changed file(s) yielded no anchor (packages/services/service-analytics/src/read-scope-sql.ts, packages/spec/spec-changes.json), so the pages documenting them are NOT COVERED by this run — this is not a clean bill of health for those files. Nothing else in this diff resolved to a documentable surface (no symbol, route or SDK anchor derived from 2 changed package(s)).

What this run could not see
  • 2 changed file(s) yielded no anchor (packages/services/service-analytics/src/read-scope-sql.ts, packages/spec/spec-changes.json) — pages documenting those are invisible to this run
  • 3 name(s) were too generic to anchor anything (single lowercase words)
  • a page that states a rule by its inputs shares no identifier with the emitter that implements the rule, so an emitter-only diff cannot list it — not on this run and not on any run. Measured on fix(driver-sql): emit varchar(maxLength) for a text field a declared index keys on #11430: content/docs/protocol/objectql/types.mdx documents the text-family column mapping by the ObjectQL type names it maps FROM (text / textarea / html) while the diff changed createColumn; it went unlisted, and it was the page that diff falsified, in four places. No shared token exists to detect this on, so a rule your change carries has to be re-read by hand in the pages that restate it.

Coarse fallback — 126 page(s) merely mention a changed package (the pre-#9192 predicate, kept for the deliberately-wide backstop): node scripts/docs-audit/affected-docs.mjs --json 289cf91c84a7e0cb93e13217070b2c864285c737packageMentionDocs.

@github-actionsgithub-actionsBot added documentation Improvements or additions to documentation tooling labels Aug 30, 2026
@hotlong
hotlong marked this pull request as ready for review August 30, 2026 05:02
@hotlong
hotlong added this pull request to the merge queueAug 30, 2026
Merged via the queue into main with commit 881f8d8Aug 30, 2026
41 checks passed
@hotlong
hotlong deleted the claude/issue-13277-freeze-tense-sweep branch August 30, 2026 05:44
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

documentationImprovements or additions to documentationsize/stooling

Projects

None yet

3 participants

@os-project-manager@hotlong@claude