Skip to content

Commit 8055ff2

Browse files
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

File tree

‎content/docs/releases/v17/17-3.mdx‎

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -646,6 +646,9 @@ reached by that run.
646646
**nine** of the items on this page were live and unaddressed on that stack. Its
647647
scope is the protocol chain; everything else on this list is outside it. (It
648648
also prints `runtime 17.0.0` on a 17.3.0 install.)
649+
**Correction (2026-10-01):** from 17.4.0 the parenthetical on the `Chain:`
650+
line reads `(this runtime implements protocol 17)`; `(runtime 17.0.0)` was
651+
the 17.3.0 output. See #15585 (the human-readable line landed in #16058).
649652

650653
**Metadata and build — run `os validate` before you ship**
651654

0 commit comments

Comments
 (0)