Repository navigation
Commit 8055ff2
docs(releases): append a dated correction to the 17.3.0 migrate-meta upgrade bullet (#20985)
Fixes #16056
Clause-②: no
Ruling-ref: 5564448371
Docs-only. Appends one dated correction line, in place, to the `os
migrate meta` upgrade bullet in the 17.3.0 section of
`content/docs/releases/v17/17-3.mdx`, in the form the maintainer ruled
for this card. The original sentence stays byte-identical.
## The change
```diff
scope is the protocol chain; everything else on this list is outside it. (It
also prints `runtime 17.0.0` on a 17.3.0 install.)
+ **Correction (2026-10-01):** from 17.4.0 the parenthetical on the `Chain:`
+ line reads `(this runtime implements protocol 17)`; `(runtime 17.0.0)` was
+ the 17.3.0 output. See #15585 (the human-readable line landed in #16058).
```
Against the merge base `5f6b63a6f`: 1 file, 3 insertions, 0 deletions
(`dispatch-gates` reads `+3 / -0`). There are three commits:
1. the first wording;
2. its date, moved from 2026-09-30 to 2026-10-01 because the UTC day
turned while the gates ran;
3. the rework below.
The line continues the bullet's own paragraph, so the list stays tight
and nothing re-flows.
## Rework: the first wording was true of 17.4.0 only
The first wording said that from 17.4.0 the command prints `Chain:
protocol 17 → 17 (this runtime implements protocol 17)`. The bullet's
command is `os migrate meta --from 17` with no `--to`. From 17.5.0,
`--to` defaults to the highest major the installed spec has a step for,
so there the same command prints `protocol 17 → 18`. The contract review
of this PR caught it.
The line now asserts only the parenthetical, which depends on neither
`--from` nor `--to`. It says nothing about where the chain ends, or
about the headline's `Nothing to migrate`.
Measured by running the published builds (a scratch `npm install` of
each `@objectstack/cli` version, `NO_COLOR=1`, a one-object stack
config). The `Chain:` line each build printed:
| build | `os migrate meta --from 17` | `--from 17 --to 17` | `--from 16
--to 16` |
|:--|:--|:--|:--|
| 17.3.0 | `protocol 17 → 17 (runtime 17.0.0)` | `protocol 17 → 17
(runtime 17.0.0)` | `protocol 16 → 16 (runtime 17.0.0)` |
| 17.4.0 | `protocol 17 → 17 (this runtime implements protocol 17)` |
`protocol 17 → 17 (this runtime implements protocol 17)` | `protocol 16
→ 16 (this runtime implements protocol 17)` |
| 17.5.0 (npm latest) | `protocol 17 → 18 (this runtime implements
protocol 17)` | `protocol 17 → 17 (this runtime implements protocol 17)`
| `protocol 16 → 16 (this runtime implements protocol 17)` |
- Every row carries two spaces after `Chain:`.
- The parenthetical changes exactly once, between 17.3.0 and 17.4.0.
From 17.4.0 on it is the same in every column.
- On 17.3.0 and 17.4.0 the default invocation ends in the `Nothing to
migrate` verdict. On 17.5.0 it lists 240 manual changes instead (in this
probe project), which is why the correction does not repeat the
headline.
On `origin/main` at `7fa67dada`, `meta.ts` carries the same print
template (`:627`) and the same `--to` default (`CHAIN_TERMINUS_MAJOR`,
`:88` and `:544`) as `cli@17.5.0`: a diff of the file between the two
moves none of those lines. The built spec there reports `PROTOCOL_MAJOR
= 17` and `MIGRATION_MAJORS = [17, 18]`. So the default invocation
prints `protocol 17 → 18 (this runtime implements protocol 17)`, and the
parenthetical reads as in 17.4.0 and 17.5.0. This reading of `main` is
computed from the source and the built spec, not from a CLI run.
## What I measured before editing
1. **The page moved.** The sentence is at
`content/docs/releases/v17/17-3.mdx:648`; the single v17 page was split
into per-release pages. It was re-located by content: `runtime 17.0.0`
has exactly one hit in the tree.
2. **The blocker is cleared.**
`packages/cli/src/commands/migrate/meta.ts:627` prints `Chain: protocol
${fromMajor} → ${toMajor} (this runtime implements protocol
${PROTOCOL_MAJOR})` through `printInfo`, which adds only a leading ` ℹ
`. The table above is that template, run on each build.
3. **The changeset half is already paid.** The correction rode the
changesets into shipped notes:
- `packages/cli/CHANGELOG.md:4748`: 17.4.0, entry 135843d from #16058;
- `packages/cli/CHANGELOG.md:1072` and
`packages/metadata-core/CHANGELOG.md:278`: 17.5.0, the #17261 entry;
- `content/docs/releases/v17/17-5.mdx:1711`: the 17.5.0 notes quote the
new wording.
This diff publishes nothing from any package (no package `files[]` ships
`content/docs`), so it owes no changeset and carries the
`skip-changeset` label. No `CHANGELOG.md` is edited.
4. **The build carrying the repair is 17.4.0**, measured on the
published tarballs and the runs above.
- 17.3.0 prints `(runtime 17.0.0)`; `@objectstack/spec@17.3.0` has
`PROTOCOL_VERSION = "17.0.0"`. 17.4.0 prints `(this runtime implements
protocol 17)`.
- 17.3.0 was published 2026-09-04 and 17.4.0 on 2026-09-09; the remote
tags carry no 17.3.x between them.
## Why "from 17.4.0" and not "from the build carrying #15585"
#15585 was repaired in two PRs:
- #16058 (merged 2026-09-06, "Part of" the card) relabelled the printed
`Chain:` line and shipped in 17.4.0.
- #17261 (merged 2026-09-10, the PR that completed the card) renamed the
`--json` key and shipped in 17.5.0.
The parenthetical is the same in 17.4.0 and 17.5.0, so 17.4.0 is the
earliest build that prints it, and naming the version lets a reader
check their own install. The full `Chain:` line is not the same in the
two builds: its `→` end moved in 17.5.0 (see Rework). That is why only
the parenthetical is quoted.
## Verification
At head `f4f2566a0`, `node scripts/pm/dispatch-gates.mjs --repo
objectstack-ai/objectstack --ran` reconciles **47 derived, 47 run, 0
NOT-MEASURED**, and every recorded exit code is 0. The derived set
includes `check:doc-authoring`, `check:nul-bytes`,
`check:issue-citations` (which judges both new citations as resolving),
`check:release-notes`, `check:release-page-status`,
`check:docs-transcript-drift` and `check:skill-examples`. The page also
compiles with the repo's `@mdx-js/mdx` 3.1.1. Repo-wide `pnpm lint` and
the full lint workflow are CI's.
## Acceptance notes (observed, not filed)
- `content/docs/releases/v17/17-4.mdx` carries no line for the #16058
repair; only the 17.4.0 `packages/cli/CHANGELOG.md` entry does. Release
notes are compiled centrally, so this is noted, not fixed here.
- In 17.3.0 and 17.4.0 the `--json` payload still carries `runtime:
"17.0.0"`; 17.5.0 renames it to `protocolVersion`. The original sentence
and this correction are about the printed `Chain:` line only.
- The bullet's headline (`Expect os migrate meta --from 17 to report
Nothing to migrate`) is the 17.3.0 observation. On 17.5.0 the same
command lists protocol-18 edits instead, as the 17.5.0 release page
records. It is the historical reading and out of this card's scope, and
the correction does not assert it.
---
_Generated by [Claude
Code](https://claude.ai/code/session_01JAhu8u8QfBvRjVZDox7CP9)_
---------
Co-authored-by: Claude <noreply@anthropic.com>1 parent 25f2e64 commit 8055ff2
1 file changed
Lines changed: 3 additions & 0 deletions
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
646 | 646 | | |
647 | 647 | | |
648 | 648 | | |
| 649 | + | |
| 650 | + | |
| 651 | + | |
649 | 652 | | |
650 | 653 | | |
651 | 654 | | |
| |||
0 commit comments