Skip to content

docs(releases): append a dated correction to the 17.3.0 migrate-meta upgrade bullet - #20985

Merged
objectstack-fleet[bot] merged 3 commits into
mainfrom
claude/issue-16056-v17-3-correction-line
Oct 1, 2026
Merged

objectstack-fleet[bot] merged 3 commits into
mainfrom
claude/issue-16056-v17-3-correction-line

Conversation

@objectstack-fleet

@objectstack-fleet objectstack-fleet Bot commented Oct 1, 2026 •

Copy link
Copy Markdown
Contributor

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

   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:

    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:

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 fix(cli): os migrate meta names the protocol, not a package version #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

…upgrade bullet

The bullet says `os migrate meta` "also prints `runtime 17.0.0` on a 17.3.0
install". That was the 17.3.0 output; from 17.4.0 the chain line reads
`Chain:  protocol 17 → 17 (this runtime implements protocol 17)`.

Per the maintainer ruling on published release text, the original sentence is
left byte-identical and a dated correction line is appended in place. Four
added lines, none removed.

Claude-Session: https://claude.ai/code/session_01JAhu8u8QfBvRjVZDox7CP9
Co-authored-by: Claude <noreply@anthropic.com>
…thoring day

The correction line was first written on 2026-09-30 UTC and is finished on
2026-10-01 UTC; the ruled form is a dated line, and the date is the day the
correction is made.

Claude-Session: https://claude.ai/code/session_01JAhu8u8QfBvRjVZDox7CP9
Co-authored-by: Claude <noreply@anthropic.com>
@objectstack-fleet

Copy link
Copy Markdown
Contributor Author

Contract review

Served-tier: CONTRACT_REVIEW_TIER
Head-sha: 5b88fd4081e7aea95e8779e30719ef4e309dfc5a
Local-runs: none

Reviewed against card #16056 (body and all six comments, ruling 5564448371), PR #20985 (body, file list, net diff origin/main...5b88fd408: 1 file, +4 / −0), the 36 check-runs on the head, and origin/main at 05be3525 (AGENTS.md Documentation Guardrails, packages/cli/src/commands/migrate/meta.ts, packages/cli/CHANGELOG.md, packages/spec/src/migrations/registry.ts, the release pages, and the @objectstack/cli@17.3.0 / 17.4.0 / 17.5.0 tags read with git show). Nothing built, run or re-run.

① Derived judgments

The diff adds four lines to content/docs/releases/v17/17-3.mdx (:649–652) under the os migrate meta --from 17 upgrade bullet. No accept set and no public surface moves; every judgment below is about the truth and form of published release text.

  1. Form against the ruling — RIGHT. The line is dated (2026-10-01, the head commit's UTC day), referenced (os migrate meta prints (runtime 17.0.0) beside real package versions — PROTOCOL_VERSION is the protocol major padded to semver, and reads as the runtime's version on a 17.3.0 install #15585, fix(cli): os migrate meta names the protocol, not a package version #16058), appended in place as a continuation of the bullet's own paragraph, and the original sentence is byte-identical (main:648 unchanged; 0 lines removed). It states what the command prints and what the 17.3.0 output was, which is the shape the ruling fixes.
  2. Right page, right bullet — RIGHT. The card's v17.mdx:5363 moved when the page was split per release; runtime 17.0.0 has exactly one hit under content/ on main, 17-3.mdx:648, inside ### 17.3.0 → "Getting onto the release". The correction sits under that sentence and nowhere else.
  3. Dedicated docs-only PR — RIGHT. One file under content/docs/releases/, no code, no CHANGELOG.md, no .changeset. This is the "dedicated docs-only PR" the AGENTS.md Documentation Guardrails row for content/docs/releases/ names, not a rider.
  4. The quoted text, verbatim — RIGHT in spacing and label. meta.ts:627 on main prints Chain: protocol ${fromMajor} → ${toMajor} (this runtime implements protocol ${PROTOCOL_MAJOR}) through printInfo, which prefixes only ℹ. Two spaces after Chain:, the U+2192 arrow and PROTOCOL_MAJOR = 17 all match the line as quoted; the dev was right to keep the two spaces the ruling text collapsed to one.
  5. "runtime 17.0.0 was the 17.3.0 output" — RIGHT. At tag @objectstack/cli@17.3.0, meta.ts:353 prints (runtime ${PROTOCOL_VERSION}) and @objectstack/spec@17.3.0 has PROTOCOL_VERSION = '17.0.0'. The remote tags carry no cli@17.3.x between 17.3.0 and 17.4.0.
  6. "from 17.4.0" as the first build — RIGHT. fix(cli): os migrate meta names the protocol, not a package version #16058's merge 135843d is an ancestor of cli@17.4.0 and not of cli@17.3.0; packages/cli/CHANGELOG.md first carries the line under ## 17.4.0 (:4743–4751). At that tag meta.ts:366 prints the new template and toMajor = flags.to ?? PROTOCOL_MAJOR (:288), so --from 17 printed 17 → 17; the 17.4.0 e2e test (:509–511) asserted exactly that for an unpinned --from 17.
  7. "from 17.4.0 the command prints Chain: protocol 17 → 17 (this runtime implements protocol 17)" as a claim about every build from 17.4.0 on — WRONG, and this is the verdict. The bullet's command is os migrate meta --from 17 with no --to. In 17.5.0 (fb39b38, fix(cli): os migrate meta --from N lists the conversions its tombstones prescribe, and an empty range stops reading as success #17462: an ancestor of cli@17.5.0, not of cli@17.4.0; packages/cli/CHANGELOG.md ## 17.5.0 :1030–1040) --to began defaulting to CHAIN_TERMINUS_MAJOR = Math.max(PROTOCOL_MAJOR, ...MIGRATION_MAJORS) (meta.ts:88, :544 on main), and the registry carries a major-18 step (registry.ts:18923–18926, already at spec@17.4.0). So on 17.5.0 and on origin/main that command prints Chain: protocol 17 → 18 (this runtime implements protocol 17). The repo says so in three places: the e2e test on main pins --to to PROTOCOL_MAJOR precisely because the unqualified default "is designed to drift" (migrate-meta.e2e.test.ts:502–512); the 17.5.0 page records that the command "now defaults --to to the highest registered major and lists the protocol-18 edits" (17-5.mdx:149–156, :1720–1723); and the 17.5.0 changelog entry is titled for it. The correction is therefore true of 17.4.0 alone and false of the current release and of main: a reader on 17.5.0 who runs the bullet's command gets 17 → 18 and is told, in a line dated today, to expect 17 → 17. That is the "page describes a build that is not yours" defect this card was filed to remove, re-introduced in the sentence meant to remove it. The PR body's "The printed line this bullet describes is identical in 17.4.0 and 17.5.0" is wrong: the source template is identical, the printed line is not, because its toMajor half moved. Under the ruling, published release text is never silently rewritten, so once merged this line could only be repaired by a second dated correction beneath it; the cost of landing it wrong is permanent, which is why this is a FAIL and not a note. A true line is the dev's to word within the ruled form (dated, referenced, in place, original untouched): either quote the 17.4.0 output and say that from 17.5.0 the → 17 end is the registry's highest major (18, fix(cli): os migrate meta --from N lists the conversions its tombstones prescribe, and an empty range stops reading as success #17462), or state only the parenthetical's change ((runtime 17.0.0) → (this runtime implements protocol 17)) without asserting the chain ends. Either way, the line must be measured against the build on main, not only the 17.3.0 and 17.4.0 tarballs.
  8. Citations — RIGHT. os migrate meta prints (runtime 17.0.0) beside real package versions — PROTOCOL_VERSION is the protocol major padded to semver, and reads as the runtime's version on a 17.3.0 install #15585 (closed completed 2026-09-10) and fix(cli): os migrate meta names the protocol, not a package version #16058 (merged 2026-09-06, "Part of os migrate meta prints (runtime 17.0.0) beside real package versions — PROTOCOL_VERSION is the protocol major padded to semver, and reads as the runtime's version on a 17.3.0 install #15585", lands the human-readable line) both resolve, and "the human-readable line landed in fix(cli): os migrate meta names the protocol, not a package version #16058" is accurate. The line does not cite docs(releases): the v17 page's upgrade bullet asserts os migrate meta "also prints runtime 17.0.0 on a 17.3.0 install" — a sentence the CLI repair invalidates, in a file a code PR may not touch #16056 itself; the sibling precedent (The scope-less attribution corrected in #14803 already shipped: it is in the published 17.3.0 CHANGELOG of @objectstack/runtime and @objectstack/metadata-protocol #16122 → PR docs(runtime,metadata-protocol): correct the published 17.3.0 CHANGELOG's scope-less claim #16493) cites both the fix and the card, but the ruling's own template for this card names os migrate meta prints (runtime 17.0.0) beside real package versions — PROTOCOL_VERSION is the protocol major padded to semver, and reads as the runtime's version on a 17.3.0 install #15585 only, so no finding.
  9. Check-runs on the head — read, and silent on the defect. 36 runs: 26 success, 10 skipped, 0 failed, 0 pending; the one commit status (Vercel) is success. Build Docs, Lint & Repo Gates, Check Documentation Links, Check Changeset, Type Check · workspace are all green. No gate reads the semantic truth of a release-page sentence, so the green board does not contradict ①-7.

② Semver level

③ Boundary flags

Dev report: os-dev-report comment 5922099669. open_questions is empty; nothing to answer there.

Deviations:

  1. Two spaces after Chain: where the ruling spells one — answered, accepted: two spaces is what meta.ts:627 prints on main and at the 17.4.0 and 17.5.0 tags; the ruling text collapsed the spacing, the code did not.
  2. "from 17.4.0" instead of "from the build carrying os migrate meta prints (runtime 17.0.0) beside real package versions — PROTOCOL_VERSION is the protocol major padded to semver, and reads as the runtime's version on a 17.3.0 install #15585", citing fix(cli): os migrate meta names the protocol, not a package version #16058 beside os migrate meta prints (runtime 17.0.0) beside real package versions — PROTOCOL_VERSION is the protocol major padded to semver, and reads as the runtime's version on a 17.3.0 install #15585 — answered in two halves. As a lower bound and as a citation it is right (①-6, ①-8). As an open-ended range it is the FAIL in ①-7: the dev measured the 17.3.0 and 17.4.0 tarballs and, by the report's own account, read 17.5.0 only for the --json key rename, so the claim that the printed line is "identical in 17.4.0 and 17.5.0" was never measured for the bullet's own invocation. The ruling's literal 17 → 17 was written on 2026-09-07, before 17.5.0 (2026-09-29) moved the --to default; its form binds, and its template's facts were true when ruled. The dev already took the licence to restate the ruling's template in measured terms; the same licence obliges measuring every build the restated range names. Escalation path, only if needed: if the dispatching seat reads the ruling's 17 → 17 literal as binding verbatim even where the current release prints otherwise, that is a re-ruling question for the maintainer under the same batch-Add comprehensive test coverage for ObjectStack spec protocols - 100% coverage achieved #65 rule, not something a reviewer can PASS over.
  3. Date moved to 2026-10-01 in a second commit — accepted; the net diff against the merge base is still +4 / −0 and the date is the authoring day.
  4. Model-free commit trailers instead of the harness line — accepted; AGENTS.md:453–456 is the rule, both commits carry Claude-Session: + Co-authored-by: Claude, and no model identifier appears in the PR, the commits or the report.
  5. Built the @objectstack/lint and @objectstack/client-react closures so two derived gates could record a verdict — a dev-side build, not a review concern; the head's Lint & Repo Gates and type-check runs cover the same families and are green. Accepted.
  6. One malformed MCP read, no data, no effect — accepted.

out_of_scope_findings:

Reviewer's own flag, carrier none: the bullet's headline ("Expect os migrate meta --from 17 to report Nothing to migrate") is also no longer what 17.5.0 does (17-5.mdx:1720–1723), for the same #17462 reason as ①-7. That is the historical reading and the 17.5.0 page records its own behaviour, so it is not this card's scope; it is named here so the re-worded correction does not accidentally assert it either.

Implemented-by: claude/issue-16056-v17-3-correction-line
Reviewed-by: session_01JAhu8u8QfBvRjVZDox7CP9

VERDICT: FAIL


Generated by Claude Code

…nthetical

The first wording said the bullet's command prints `protocol 17 → 17` from
17.4.0 on. It does so on 17.4.0 only: from 17.5.0 `--to` defaults to the
highest major the installed spec has a step for, so `os migrate meta --from 17`
prints `protocol 17 → 18` there and on main.

The correction now states only what holds on every build from 17.4.0: the
parenthetical on the `Chain:` line reads `(this runtime implements protocol
17)`, where 17.3.0 printed `(runtime 17.0.0)`. It no longer says where the
chain ends and does not assert the headline's `Nothing to migrate`. Form
unchanged: dated, referenced, in place, original sentence byte-identical.

Claude-Session: https://claude.ai/code/session_01JAhu8u8QfBvRjVZDox7CP9
Co-authored-by: Claude <noreply@anthropic.com>
@objectstack-fleet

Copy link
Copy Markdown
Contributor Author

Contract review

Served-tier: CONTRACT_REVIEW_TIER
Head-sha: f4f2566a01c9e931588a76413a8b444876317ff6
Local-runs: none

Reviewed against card #16056 (body and all eight comments, ruling 5564448371, the two os-dev-report comments 5922099669 and 5922636259), PR #20985 (body, file list, both comments including the prior ## Contract review 5922366673 on head 5b88fd408, and the net diff origin/main...f4f2566a0: 1 file, +3 / −0), the 39 check-runs and the one commit status on the head, and the repository at origin/main (8d329f02) and at the @objectstack/cli@17.3.0 / 17.4.0 / 17.5.0 tags, read with git show / git grep (AGENTS.md Documentation Guardrails and Post-Task Checklist step 3, packages/cli/src/commands/migrate/meta.ts, packages/cli/CHANGELOG.md, packages/spec/src/kernel/protocol-version.ts, packages/spec/src/migrations/registry.ts, the v17 release pages, .github/workflows/pr-automation.yml). Nothing built, run or re-run. The local clone is shallow, so cross-tag ancestry is not usable; every version claim below is judged on the tag's own file contents, which is the stronger evidence anyway.

① Derived judgments

The diff adds three lines to content/docs/releases/v17/17-3.mdx (:649–651), continuing the os migrate meta --from 17 upgrade bullet under ### 17.3.0. No accept set and no public surface moves; every judgment is about the form and truth of published release text.

  1. Form against the ruling — RIGHT. Dated (2026-10-01; the head commit is 2026-10-01T00:53Z), referenced (os migrate meta prints (runtime 17.0.0) beside real package versions — PROTOCOL_VERSION is the protocol major padded to semver, and reads as the runtime's version on a 17.3.0 install #15585, fix(cli): os migrate meta names the protocol, not a package version #16058), appended in place as a continuation of the bullet's own paragraph (two-space indent, no blank line, so it renders inline after the parenthetical), and the original sentence is byte-identical: main:644–648 and head:644–648 have the same md5 (53624b43…), 0 lines deleted. This is the general rule's own template, **Correction (YYYY-MM-DD):** … see #NNNN, and the same shape the two precedent corrections on main use (packages/metadata-protocol/CHANGELOG.md:3578, packages/lint/CHANGELOG.md:5340).
  2. Quoting only the parenthetical, not the ruling's illustrative full Chain: line — within the ruling's form; no maintainer re-ruling needed. The ruling binds a form (dated, referenced, appended in place, original untouched, "the reader sees the truth"); its card-specific sentence rendered the facts as they stood on 2026-09-07. On 2026-09-11 fb39b38 (fix(cli): os migrate meta --from N lists the conversions its tombstones prescribe, and an empty range stops reading as success #17462, shipped in 17.5.0) moved the --to default to CHAIN_TERMINUS_MAJOR, so the illustrative line's → 17 end is no longer what the bullet's command prints on 17.5.0 or main; reproducing it verbatim would breach the rule's own purpose and re-create the "page describes a build that is not yours" defect this card exists to remove. The card's scope fence is explicit that "the parenthetical is the defect os migrate meta prints (runtime 17.0.0) beside real package versions — PROTOCOL_VERSION is the protocol major padded to semver, and reads as the runtime's version on a 17.3.0 install #15585 reports", and os migrate meta prints (runtime 17.0.0) beside real package versions — PROTOCOL_VERSION is the protocol major padded to semver, and reads as the runtime's version on a 17.3.0 install #15585's title is about the parenthetical alone, so a correction scoped to the parenthetical covers the whole ruled defect while asserting nothing false. The lane seat's correction comment 5922373963 named this wording under the same ruling; this review reaches the same conclusion independently. Escalation would be owed only if the dispatching seat reads the ruling's illustrative text as binding verbatim; it is not read that way here.
  3. "from 17.4.0 the parenthetical on the Chain: line reads (this runtime implements protocol 17)" — RIGHT for every build the open range covers. At cli@17.4.0 (meta.ts:366), cli@17.5.0 (:476) and origin/main (:627) the human path prints Chain: protocol ${fromMajor} → ${toMajor} (this runtime implements protocol ${PROTOCOL_MAJOR}) unconditionally in the preamble, before any verdict branch; at each of those three, packages/spec/src/kernel/protocol-version.ts:18/:21 has PROTOCOL_VERSION = '17.0.0' so PROTOCOL_MAJOR = 17. The parenthetical depends on neither --from nor --to, which is exactly why it is the same across the three builds while the chain end is not. The Chain: label itself is unchanged from 17.3.0 through main. The tag list carries no cli@17.3.x between 17.3.0 and 17.4.0 and nothing after 17.5.0, so the range is 17.4.0, 17.5.0 and main, and the claim holds on all of them.
  4. "(runtime 17.0.0) was the 17.3.0 output" — RIGHT. cli@17.3.0 meta.ts:353 prints (runtime ${PROTOCOL_VERSION}) and spec@17.3.0 has PROTOCOL_VERSION = '17.0.0'; the 17.4.0 packages/cli/CHANGELOG.md entry 135843d records the same ("The chain line used to end (runtime 17.0.0)").
  5. 17.4.0 as the first build — RIGHT. The 17.3.0 tag (2026-09-04) carries the old template and the 17.4.0 tag (2026-09-09) the new one; fix(cli): os migrate meta names the protocol, not a package version #16058 merged 2026-09-06 between them; packages/cli/CHANGELOG.md first carries the new line under ## 17.4.0 (section at :3967, entry 135843d).
  6. What the line does not assert — RIGHT, and this is what resolves the prior FAIL. It names no chain end and does not repeat the headline's Nothing to migrate. On 17.5.0 and main, toMajor = flags.to ?? CHAIN_TERMINUS_MAJOR (meta.ts:544 on main, :393 at 17.5.0) with CHAIN_TERMINUS_MAJOR = Math.max(PROTOCOL_MAJOR, ...MIGRATION_MAJORS) (:88) and a toMajor: 18 step in the registry (registry.ts:6004), so the bullet's command prints 17 → 18 there and no longer answers Nothing to migrate (17-5.mdx:149–156, :1720–1723). None of that is touched by the new line, and the 17.5.0 page itself quotes the parenthetical the same way (17-5.mdx:1711: prints "this runtime implements protocol 17").
  7. Citations — RIGHT. os migrate meta prints (runtime 17.0.0) beside real package versions — PROTOCOL_VERSION is the protocol major padded to semver, and reads as the runtime's version on a 17.3.0 install #15585 is closed completed (2026-09-10). fix(cli): os migrate meta names the protocol, not a package version #16058 is merged (2026-09-06, 135843d, "names the protocol, not a package version") and is where the printed line changed; feat(cli,metadata-core)!: emit the protocol version under protocolVersion, not a runtime-shaped name #17261 (cca1dc0, 17.5.0) renamed only the --json key, so attributing the human-readable line to fix(cli): os migrate meta names the protocol, not a package version #16058 is the accurate citation. check:issue-citations sits in the green Lint & Repo Gates run.
  8. Dedicated docs-only PR — RIGHT. One file under content/docs/releases/, no code, no CHANGELOG.md, no .changeset: the vehicle the AGENTS.md Documentation Guardrails row prescribes for a factual error on a releases page, not a rider. No meta.json change is owed (no page added).
  9. Check-runs on the head — read. 39 runs: 29 success, 10 skipped, 0 failed, 0 pending; the one commit status (Vercel) is success. Build Docs, Lint & Repo Gates, Check Documentation Links, every Type Check · job and the four claim/single-writer guards are green. Check Changeset is skipped on both workflow runs by design: pr-automation.yml:244–247 exempts the skip-changeset label. No gate reads the semantic truth of release prose; that truth is judged in ①-3 to ①-6 against the sources.
  10. Considered, not a finding. The literal "protocol 17" is bound to the 17 line; an eventual 18.x build would print its own major. This is the v17 page, the ruling's own template fixed "protocol 17", and every build in the range (17.4.0, 17.5.0, main) has PROTOCOL_MAJOR = 17, so the line is true of everything it can be read against.

② Semver level

③ Boundary flags

Dev reports: round 1 5922099669, patch round 5922636259 (the governing one). open_questions is empty in both; nothing to answer there.

Patch-round deviations:

  1. Wording (a): the line no longer reproduces the ruling's illustrative Chain: protocol 17 → 17 (…) text — answered in ①-2: within the ruled form, accepted, no escalation.
  2. Date 2026-10-01 — the head commit is 2026-10-01T00:53Z; accepted.
  3. origin/main not CLI-run; evidenced by a source diff against the cli@17.5.0 tag plus the built spec's values — accepted. This review's own read of main (meta.ts:88, :544, :627; protocol-version.ts:18) agrees, and the parenthetical claim needs only the print template and PROTOCOL_MAJOR, both read from source.
  4. Extra detached worktree and private tag ref, removed after use — dev-side hygiene with no trace in the diff; accepted.
  5. Model-free commit trailers — accepted; AGENTS.md is the rule, and no model identifier appears in the diff, the PR, the commits or the reports.
  6. PR body left unpatched by the dev — overtaken: the stored PR body now carries the pr_body_replacement (the ## Rework section and the +3 / −0 count are in it, and the earlier "identical in 17.4.0 and 17.5.0" sentence is gone). Nothing left to do.

Round-1 deviations still relevant: two spaces after Chain: is moot now that the full line is not quoted; "from 17.4.0" instead of "from the build carrying #15585" is confirmed right as a lower bound (①-5) and, on this head, true as an open range (①-3).

out_of_scope_findings (all three carrier none):

Prior FAIL on head 5b88fd408 (5922366673, finding ①-7: the open range asserted 17 → 17, true of 17.4.0 alone) — resolved on this head: the chain-end claim is gone and the text asserts only what every build in the range prints.

Implemented-by: claude/issue-16056-v17-3-correction-line
Reviewed-by: session_01JAhu8u8QfBvRjVZDox7CP9

VERDICT: PASS


Generated by Claude Code

@objectstack-fleet
objectstack-fleet Bot marked this pull request as ready for review October 1, 2026 01:19
@objectstack-fleet
objectstack-fleet Bot enabled auto-merge October 1, 2026 01:19
@objectstack-fleet
objectstack-fleet Bot added this pull request to the merge queue Oct 1, 2026
Merged via the queue into main with commit 8055ff2 Oct 1, 2026
41 checks passed
@objectstack-fleet
objectstack-fleet Bot deleted the claude/issue-16056-v17-3-correction-line branch October 1, 2026 01:43
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

documentation Improvements or additions to documentation size/xs skip-changeset PR has no user-facing published change; bypasses the changeset gate

Projects

None yet

2 participants