Repository navigation
fix(spec): 18.0 upgrade-guide entries say 18.0 supports fresh installs only - #24661
Conversation
…s only Seven ADR-0087 semantic entries prescribed `os migrate organization-ownership --out PLAN` then `--apply --plan-file PLAN`, which 18.0 refuses on every database. Each now leads with the landed CLI wording (18.0 supports fresh installs only and does not upgrade a v17 database: keep a v17 database on a 17.x release until the 18.x release that carries the upgrade path) and marks the plan/apply ceremony as the 18.x release's. Claude-Session: https://claude.ai/code/session_01D6F9axfoPzR7t8G1J7Ytzz Co-authored-by: Claude <noreply@anthropic.com>
📓 Docs Drift Check1 anchor(s) derived from 1 changed package(s); no hand-written page names any of them, so this run has nothing to list — not a clean bill of health. This check sees only pages that NAME a derived anchor: one that documents this change in prose, or enumerates it in an authoring dialect, names none and stays invisible to it on every run. What this run could not see
Coarse fallback — 143 page(s) merely mention a changed package (the pre-#9192 predicate, kept for the deliberately-wide backstop): Which tree this was computed onThis run read A worktree cut from an older # while this PR is open — GitHub drops the merge commit once it closes
git fetch origin b89566a02024b3900c10b1693c96f1fa3fa22e24 && git checkout b89566a02024b3900c10b1693c96f1fa3fa22e24
# afterwards, rebuild it from the two parents, which stay fetchable
git fetch origin cc95f5e63e3c96acafa55378a57d06c086e7d639 a58972d67b151679bb521ca9268526e242ce9bf8 && git checkout -B drift-repro cc95f5e63e3c96acafa55378a57d06c086e7d639 && git merge --no-ff a58972d67b151679bb521ca9268526e242ce9bf8
node scripts/docs-audit/affected-docs.mjs --json cc95f5e63e3c96acafa55378a57d06c086e7d639 |
Conflicts and restatements, the ceremony being open on this branch: - runtime boot guard, its unit, kernel and dogfood pins: #24682's 18.0 "fresh installs only" refusal gives way to the marker-based refusal that names the ceremony's plan and apply. - cli.mdx: the open-ceremony text kept; #24678 and step 4's "until then the ceremony refuses" sentences restated; #24722's audit-mail-bodies row and section kept beside it. - B2: #24661's seven 18.0 upgrade-guide entries prescribe the ceremony again (the ups entry keeps the full apply), pinned in organization-ownership-upgrade-entries.test.ts. - metadata-lifecycle, metadata-service, capabilities, permission-sets: the 18.0 deferral restated. - platform-core.v18-boot-refusals revision 5. - objectql: WALLED_ORGANIZATION_LESS_BRIDGE, isWalledOrganizationLessBridgeObject and the engine reader are deleted (sys_secret and sys_flow_credential are column-less here); the refusal names systemFields: { tenant: false }. The tripwire is deleted; the flow-credential walled pin is kept, renamed walled-flow-credential-write.test.ts. - #24688's principal x door matrix restated over a ceremonied fixture. Co-authored-by: Claude <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_014UATXWqAXqkaZkbG92ox6V
Refs #24637
Clause-②: no
The
domain:specrow of #24637. The parent closes once this PR and its three children land (#24651, #24652, #24653 are not addressed here), so this PR does not close it.What changes
In 18.0,
os migrate organization-ownershiprefuses plan and apply on every database (exit 1,NOT_IMPLEMENTED, nothing read or written), and 18.0 supports fresh installs only. Seven ADR-0087 semantic entries underpackages/spec/src/migrations/entries/semantic/compile into the 18.0 upgrade guide, and they still prescribed--out PLANthen--apply --plan-file PLANas if 18.0 upgraded a v17 database.Each entry now says what 18.0 supports for a v17 database, in the words PR #24635 (
f89d29e382) landed in the CLI and the boot refusal:Each entry keeps the plan and apply steps, now introduced as "In that 18.x release, ...".
sys-metadata-organization-column-retired,-audit-,-commit-,-history-replacementandacceptanceCriterialead with the 18.0 sentence and qualify the ceremony as 18.x; inreason, "the v18 ceremony" becomes "the 18.x ceremony", and the boot-refusal clause says it refuses in 18.0 on every such databaseups-permission-set-id-column-retiredreplacementandacceptanceCriteriathe same way;reasonnames "the 18.x ceremony"sharing-rule-declared-mirror-retiredreplacementleads with the 18.0 sentence;surfaceandacceptanceCriterianame the ceremony as 18.xcli-organization-ownership-apply-plan-file-requiredThe
cli-organization-ownership-apply-plan-file-requiredentryThe command itself is this entry's whole subject. I kept the entry and rewrote the guidance rather than deleting it:
`surface` → replacement, then "Why not automatic" (reason) and "Done when" (acceptanceCriteria) (packages/spec/scripts/build-upgrade-guide.ts). Nothing checks the prose against the CLI. The entry's id and step are registered, and.changeset/pre/15211-cli-apply-reviewed-plan.mdcites it.surfacestays as it is: the bare--apply --backup-takeninvocation that@objectstack/cli18.0.0-next.1 shipped. A script written against that prerelease is still a real reader, and in 18.0 the invocation is refused.replacementnow opens with "nothing in 18.0: 18.0 refuses this invocation, as it refuses every plan and apply ofos migrate organization-ownershipon every database". Then it gives the 18.0 sentence, then the plan-file rule, introduced as "In that 18.x release".reasonadds one sentence on why 18.0 holds the ceremony back. The ceremony is knowingly incomplete, and an incomplete ceremony must never certify a v17 database that the boot would then serve. This paraphrases the docblock onORGANIZATION_OWNERSHIP_UPGRADE_UNAVAILABLE.acceptanceCriterianow opens with what holds on 18.0, then keeps the 18.x plan-file criteria.Deleting the entry would drop the 18.x plan-file rule from the guide, and it would leave a next.1 script with no entry that names its invocation.
Only text changes. Every entry keeps its
id, its step and its fields.Census
At
a58972d67b, every hit in the seven entries sits after the 18.0 sentence or under an "In that 18.x release" / "In the 18.x release that carries the upgrade path" qualifier. The one hit not in an entry is the code comment atsystem/migration.zod.ts:174, which is out of scope by the card's rule. The cli entry'ssurface(line 10) names the refused invocation and prescribes nothing.In a rendered single-file guide (
tsx scripts/build-upgrade-guide.ts --out, written to a scratch path), the sentence "18.0 supports fresh installs only" appears 12 times: 7 replacements and 5 acceptance criteria.sharing-rule-declared-mirror-retired's acceptance criteria say "18.0 upgrades no v17 database" instead.Verification (head
a58972d67b)pnpm --filter @objectstack/spec build:VERDICT command-exit 0.pnpm --filter @objectstack/spec test:Test Files 702 passed (702),Tests 21349 passed | 1 todo (21350).pnpm --filter @objectstack/spec typecheck: exit 0. check:test-typecheck reports OK.pnpm --filter @objectstack/spec check:generated: "All 14 generated artifacts are up to date", with no tracked file changed. No baseline pins this text.node scripts/pm/dispatch-gates.mjs --commandsderived 83 commands, and all of them were run:check:upgrade-guide,check:spec-changes,check:adr-0087-registration --base origin/main,check:doc-authoring,check:nul-bytes,check:empty-changesetandcheck:changeset-no-major.check:doc-formula-expressions(@objectstack/formulanot built),check:dual-build-cjs-loads(workspacedist/absent) andcheck:lean-entry-closure(@objectstack/objectqlnot built). None reads these entries. They are declared to CI.packages/spec/src/migrations/entries/semantic/. I checked all 14 open PRs' file lists over REST.Acceptance notes
packages/spec/CHANGELOG.mdhistory, and the code comment atpackages/spec/src/system/migration.zod.ts:174.--out PLAN/--apply --plan-file PLAN, which 18.0 refuses on every database (#24637, domain:cli row) #24651, plugin-security: the catalog reference report prescribesos migrate organization-ownership --outthen--apply --plan-file, which 18.0 refuses on every database (#24637, domain:services row) #24652 and docs: four pages walk operators throughos migrate organization-ownershipplan/apply with no 18.0 qualifier, and 18.0 refuses that command on every database (#24637, domain:devx row) #24653.Generated by Claude Code