Repository navigation
Commit a789148
fix(spec): 18.0 upgrade-guide entries say 18.0 supports fresh installs only (#24661)
Refs #24637
Clause-②: no
The `domain:spec` row 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-ownership` refuses 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 under
`packages/spec/src/migrations/entries/semantic/` compile into the 18.0
upgrade guide, and they still prescribed `--out PLAN` then `--apply
--plan-file PLAN` as 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:
> 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.
Each entry keeps the plan and apply steps, now introduced as "In that
18.x release, ...".
| entry | fields changed |
|:--|:--|
| `sys-metadata-organization-column-retired`, `-audit-`, `-commit-`,
`-history-` | `replacement` and `acceptanceCriteria` lead with the 18.0
sentence and qualify the ceremony as 18.x; in `reason`, "the v18
ceremony" becomes "the 18.x ceremony", and the boot-refusal clause says
it refuses in 18.0 on every such database |
| `ups-permission-set-id-column-retired` | `replacement` and
`acceptanceCriteria` the same way; `reason` names "the 18.x ceremony" |
| `sharing-rule-declared-mirror-retired` | `replacement` leads with the
18.0 sentence; `surface` and `acceptanceCriteria` name the ceremony as
18.x |
| `cli-organization-ownership-apply-plan-file-required` | see below |
### The `cli-organization-ownership-apply-plan-file-required` entry
The command itself is this entry's whole subject. I kept the entry and
rewrote the guidance rather than deleting it:
- The upgrade guide renders each entry as `` `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.md` cites
it.
- The `surface` stays as it is: the bare `--apply --backup-taken`
invocation that `@objectstack/cli` 18.0.0-next.1 shipped. A script
written against that prerelease is still a real reader, and in 18.0 the
invocation is refused.
- The `replacement` now opens with "nothing in 18.0: 18.0 refuses this
invocation, as it refuses every plan and apply of `os migrate
organization-ownership` on every database". Then it gives the 18.0
sentence, then the plan-file rule, introduced as "In that 18.x release".
- `reason` adds 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 on `ORGANIZATION_OWNERSHIP_UPGRADE_UNAVAILABLE`.
- `acceptanceCriteria` now 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
```
git grep -n -E "organization-ownership (--apply|--out|--dev)|--plan-file" -- packages/spec/src ':!*.test.ts'
```
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 at `system/migration.zod.ts:174`, which is out of scope by
the card's rule. The cli entry's `surface` (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 --commands` derived 83 commands,
and all of them were run:
- 80 exit 0, including `check:upgrade-guide`, `check:spec-changes`,
`check:adr-0087-registration --base origin/main`, `check:doc-authoring`,
`check:nul-bytes`, `check:empty-changeset` and
`check:changeset-no-major`.
- 3 exit 3, PREREQUISITE NOT MET, so NOT MEASURED here:
`check:doc-formula-expressions` (`@objectstack/formula` not built),
`check:dual-build-cjs-loads` (workspace `dist/` absent) and
`check:lean-entry-closure` (`@objectstack/objectql` not built). None
reads these entries. They are declared to CI.
- No open PR touches `packages/spec/src/migrations/entries/semantic/`. I
checked all 14 open PRs' file lists over REST.
## Acceptance notes
- Out of scope by the card's rule: `packages/spec/CHANGELOG.md` history,
and the code comment at `packages/spec/src/system/migration.zod.ts:174`.
- The boot guard, the plugin-security report and the docs rows are
#24651, #24652 and #24653.
---
_Generated by [Claude
Code](https://claude.ai/code/session_01D6F9axfoPzR7t8G1J7Ytzz)_
Co-authored-by: Claude <noreply@anthropic.com>1 parent 9f12d06 commit a789148
8 files changed
Lines changed: 65 additions & 36 deletions
File tree
- .changeset
- packages/spec/src/migrations/entries/semantic
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
| 1 | + | |
| 2 | + | |
| 3 | + | |
| 4 | + | |
| 5 | + | |
| 6 | + | |
| 7 | + | |
| 8 | + | |
| 9 | + | |
| 10 | + | |
| 11 | + | |
| 12 | + | |
| 13 | + | |
| 14 | + | |
| 15 | + | |
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
10 | 10 | | |
11 | 11 | | |
12 | 12 | | |
13 | | - | |
14 | | - | |
15 | | - | |
16 | | - | |
| 13 | + | |
| 14 | + | |
| 15 | + | |
| 16 | + | |
| 17 | + | |
| 18 | + | |
| 19 | + | |
| 20 | + | |
17 | 21 | | |
18 | 22 | | |
19 | 23 | | |
20 | 24 | | |
21 | 25 | | |
22 | | - | |
| 26 | + | |
23 | 27 | | |
24 | | - | |
| 28 | + | |
| 29 | + | |
| 30 | + | |
25 | 31 | | |
26 | | - | |
27 | | - | |
| 32 | + | |
| 33 | + | |
| 34 | + | |
| 35 | + | |
28 | 36 | | |
29 | 37 | | |
30 | 38 | | |
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
9 | 9 | | |
10 | 10 | | |
11 | 11 | | |
12 | | - | |
| 12 | + | |
13 | 13 | | |
14 | 14 | | |
15 | 15 | | |
16 | 16 | | |
17 | 17 | | |
18 | 18 | | |
19 | 19 | | |
20 | | - | |
21 | | - | |
| 20 | + | |
| 21 | + | |
22 | 22 | | |
23 | 23 | | |
24 | 24 | | |
| |||
34 | 34 | | |
35 | 35 | | |
36 | 36 | | |
37 | | - | |
38 | | - | |
| 37 | + | |
| 38 | + | |
39 | 39 | | |
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
18 | 18 | | |
19 | 19 | | |
20 | 20 | | |
21 | | - | |
22 | | - | |
| 21 | + | |
| 22 | + | |
23 | 23 | | |
24 | 24 | | |
25 | 25 | | |
26 | 26 | | |
27 | 27 | | |
28 | | - | |
29 | | - | |
| 28 | + | |
| 29 | + | |
30 | 30 | | |
31 | 31 | | |
32 | 32 | | |
| |||
40 | 40 | | |
41 | 41 | | |
42 | 42 | | |
43 | | - | |
| 43 | + | |
| 44 | + | |
44 | 45 | | |
45 | 46 | | |
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
18 | 18 | | |
19 | 19 | | |
20 | 20 | | |
21 | | - | |
22 | | - | |
| 21 | + | |
| 22 | + | |
23 | 23 | | |
24 | 24 | | |
25 | 25 | | |
26 | 26 | | |
27 | 27 | | |
28 | | - | |
29 | | - | |
| 28 | + | |
| 29 | + | |
30 | 30 | | |
31 | 31 | | |
32 | 32 | | |
| |||
40 | 40 | | |
41 | 41 | | |
42 | 42 | | |
43 | | - | |
| 43 | + | |
| 44 | + | |
44 | 45 | | |
45 | 46 | | |
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
18 | 18 | | |
19 | 19 | | |
20 | 20 | | |
21 | | - | |
22 | | - | |
| 21 | + | |
| 22 | + | |
23 | 23 | | |
24 | 24 | | |
25 | 25 | | |
26 | 26 | | |
27 | 27 | | |
28 | | - | |
29 | | - | |
| 28 | + | |
| 29 | + | |
30 | 30 | | |
31 | 31 | | |
32 | 32 | | |
| |||
40 | 40 | | |
41 | 41 | | |
42 | 42 | | |
43 | | - | |
| 43 | + | |
| 44 | + | |
44 | 45 | | |
45 | 46 | | |
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
18 | 18 | | |
19 | 19 | | |
20 | 20 | | |
21 | | - | |
22 | | - | |
| 21 | + | |
| 22 | + | |
23 | 23 | | |
24 | 24 | | |
25 | 25 | | |
26 | 26 | | |
27 | 27 | | |
28 | | - | |
29 | | - | |
| 28 | + | |
| 29 | + | |
30 | 30 | | |
31 | 31 | | |
32 | 32 | | |
| |||
40 | 40 | | |
41 | 41 | | |
42 | 42 | | |
43 | | - | |
| 43 | + | |
| 44 | + | |
44 | 45 | | |
45 | 46 | | |
0 commit comments