docs(spec): correct the withdrawn os migrate meta claim in the published 17.0.0 app-area retirement entry - #11644
Merged
Conversation
…ished 17.0.0 app-area retirement entry The `ad047d2` app-area fail-open gates entry closed with "Run `os migrate meta --from 16` to rewrite existing sources automatically" — a claim the command has never satisfied. It replays the conversion chain in memory and prints the mechanical change list; there is no --write / --fix flag. Replace it with the post-#9529 house sentence and add a `> **Correction:**` blockquote recording that the released artifact shipped the original wording — matching the `> **Correction (#5809):**` form this file already uses. Authorized by the maintainer ruling of 2026-08-22 for this one line only. The #9529 retraction quote and packages/cli/src/utils/config.ts:133 are deliberately untouched, and the remaining flat sites are recorded rather than swept. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01Rxnd8cyFnoU8V5y21PaTsy
Contributor
📓 Docs Drift CheckNothing in this diff resolved to a documentable surface (no symbol, route or SDK anchor derived from 1 changed package(s)), so this run has no opinion about the docs. What this run could not see
Coarse fallback — 126 page(s) merely mention a changed package (the pre-#9192 predicate, kept for the deliberately-wide backstop): |
This was referenced Aug 24, 2026
os-warren
marked this pull request as ready for review
August 24, 2026 10:48
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Fixes #9734
Corrects one shipped false claim in the published
@objectstack/specCHANGELOG, under explicit maintainer authorization. One entry, one sentence, plus an inline correction note.The authorization, quoted verbatim
Maintainer ruling, 2026-08-22, decision-inbox digest — accepted verbatim as 「接受所有」 — recorded in comment 5377372330:
Re-triage on 2026-08-24 (comment 5389636842) moved the card
domain:devx→domain:specwith the ruling transferred verbatim and no re-adjudication.Locating the ruled line by CONTENT, not by number
The ruled line numbers are from 2026-08-21 and have since drifted, so the target was identified from history rather than trusted:
git fetch --shallow-since=2026-08-12(51 → 1568 commits) so the window is genuinely covered.packages/spec/CHANGELOG.mdbefore the ruling timestamp (2026-08-22T02:28Z):47d1ae89, 2026-08-20T09:41Z (chore: version packages). That blob is what the ruling read.47d1ae89,:3948is the flat prescription inside entryad047d2— "retire the two fail-open app-area gates" (app.areas[] 的 visible / requiredPermissions 是 fail-open 的访问闸门 —— 服务端从不走 areas(ADR-0049,v17 限时) #4651) under## 17.0.0, and:2735is theos migrate metanever rewrites the authored sources that 144 shipped retirement messages promise it will #9529 retraction quote. Both matched the ruling's description exactly.4981–5049today (drift +1056), and the ruled sentence at5004. The entry is byte-identical to its state at the ruling —sha256 8e78a641…312a5on both extractions — so this is the same entry, not a diverged one.ad047d2entry appears twice in the file (## 17.0.0and## 17.0.0-rc.2). The ruled:3948maps only to the## 17.0.0copy. The rc.2 copy is a different, older text and is not touched here.What changed
The sentence now carries the post-#9529 house sentence — the one
areas[].visible/areas[].requiredPermissionsactually ship today (packages/spec/src/ui/app.zod.ts:862-863) — followed by a correction blockquote.The note deliberately reuses the house form this same file already uses for a post-publication correction: the
**Correction (#5809):**blockquote atpackages/spec/CHANGELOG.md:51632, introduced by #5809 for this very entry's rc.2 copy.One hunk, 13 insertions / 3 deletions, one file.
The excluded sites, proven excluded
packages/spec/CHANGELOG.md:3791(the #9529 retraction, was:2735)@@ -5004,3 +5004,13 @@— the retraction is above it and unmodifiedpackages/cli/src/utils/config.ts:133git diff --name-only; the PR touches one file## 17.0.0-rc.2copy of the same entryRemaining sites are recorded, not swept — #11636
A full classified census found 9 more flat occurrences of the withdrawn sentence across three published changelogs (
packages/spec×5,packages/platform-objects×2,examples/app-todo×2). Per "no blanket sweep" they are not touched here; they are recorded in #11636 (unassigned,finding, nopm:queue) so they cannot be auto-dispatched without the same kind of authorization this card received. That card also lists the sites that merely quote the sentence in order to retract or describe it — the trap a regex sweep would fall into.Verification — gate union re-run at
c79ec814node scripts/pm/dispatch-gates.mjs --repo objectstack-ai/objectstack(change set derived by the script itself from the merge base, not from a hand-built list) matched 16 families. All runnable ones are green:check:release-notes·check:release-page-status·check-release-section-coverage·check:published-files·check:merge-driver·check:empty-state·check:liveness·check:variant-docs·check:strictness-ledger·check:slot-lookup·check:test-source-alias·check:type-source-resolution·check-ci-filter-parity·check-plugin-teardown-shape·docs-audit/check-affected-docs— all EXIT=0, pluscheck-nul-bytes(0 control bytes, 6506 files).check-release-section-coverageprints an advisory finding aboutcontent/docs/releases/index.mdxnaming 17.1.0 while 17.2.0 is current. It is pre-existing, unrelated to this diff, and advisory by design ("Findings are ADVISORY: they never fail this run").One declared narrowing —
check-dev-prereqs, proven irrelevant rather than skipped. It reds locally only because this fresh worktree has nopackages/spec/dist. Its input set, read from its own source and fromturbo.json, is: every file under the package's ownsrc/, itspackage.json, itstsconfig.json, itstsup.config.ts, plus turbo'sglobalDependencies(["tsconfig.json","tsup.config.ts"]).CHANGELOG.mdis in none of them and the script never names it (grep -c CHANGELOG= 0), so this diff cannot move its verdict.--self-testpasses (16 cases). CI builds and runs it for real.pnpm lintnarrowed the same way: eslint reports the changed file as"File ignored because no matching configuration was supplied"(--format json, errorCount 0) — read from eslint's own config resolution. 1 file in the diff, 0 in eslint's population, and no type-aware linting is enabled, so no untouched file's verdict can move.Merge notes
GOVERNED_SURFACESprinted fromscripts/pm/check-governed-merges.mjsisdocs/adr/**,.claude/**,skills/**,AGENTS.md,CLAUDE.md— this diff hits none, so Prime Directive 14's human-merge-only fence does not apply.skip-changesetapplied (whole-set write unioned onto the bot-applieddocumentation/size/s, because the additive labels endpoint returned HTTP 403 for this session) and read back below.mainhad moved 5 commits butpackages/spec/CHANGELOG.mdwas unchanged, so the target still holds. If chore: version packages #11336 lands first this file gains sections at the top; the target must then be re-located by content (entryad047d2under## 17.0.0), never by line number.Generated by Claude Code