The sweep in #14803 corrected five platform-side comments that attributed the scope-less served row to examples/app-multi-package's module. While re-locating those sites on current origin/main, one of the five turned out not to be a comment at all, and not to be pending either.
Measured
.changeset/packages-read-door-writable-verdict.md — the site #14803 calls "pending, so it ships the false attribution into the release notes unless corrected first" — no longer exists. It was consumed by the version bump:
$ git log --oneline -- .changeset/packages-read-door-writable-verdict.md
8a1bad8b8 chore: version packages (#11336) <- deleted it, 2026-09-04 10:20:24 +0000
63f3b4347 feat(packages): GET /packages and GET /packages/:id rows carry the server's own writable verdict (#14375) (#14430)
Its body is now release history in two published packages:
packages/runtime/CHANGELOG.md:1708, under the ## 17.3.0 heading
packages/metadata-protocol/CHANGELOG.md:957
and 17.3.0 is published: registry.npmjs.org/@objectstack/runtime reports dist-tags.latest = 17.3.0 and the version is present. Both packages ship CHANGELOG.md in their files[], so the text is inside the npm tarball an upgrading reader greps.
The sentence now carried by both published CHANGELOGs:
isWritablePackage reads engine.manifests FIRST, so a package booted from an artifact through registerApp is read-only whatever its scope says — and a scope-less type: module carried by a multi-package artifact lands there too.
The second clause is false, for the reason #14803 measured and #14597 fixed at the fixture: defineStack parses every packages[] entry through ManifestSchema, whose scope is .default('project'), so no package of a compiled artifact is ever scope-less. Re-measured on origin/main 9b459b791: ManifestSchema.parse of the orders body yields scope: "project", while SchemaRegistry.installPackage of the same unparsed body yields a record whose manifest keys are exactly the authored ones, with no scope key.
The decision this needs
The #14803 PR corrects every live source comment and adds a changeset stating the correction, so the retraction reaches the next release notes. It deliberately does not touch either CHANGELOG.md, because those are generated release history rather than authored prose, and rewriting them is not a call a code PR should make on its own. Two routes, and the maintainer picks:
Route B is the one that needs a ruling; route A is already in flight.
Notes
Generated by Claude Code
The sweep in #14803 corrected five platform-side comments that attributed the scope-less served row to
examples/app-multi-package's module. While re-locating those sites on currentorigin/main, one of the five turned out not to be a comment at all, and not to be pending either.Measured
.changeset/packages-read-door-writable-verdict.md— the site #14803 calls "pending, so it ships the false attribution into the release notes unless corrected first" — no longer exists. It was consumed by the version bump:Its body is now release history in two published packages:
packages/runtime/CHANGELOG.md:1708, under the## 17.3.0headingpackages/metadata-protocol/CHANGELOG.md:957and
17.3.0is published:registry.npmjs.org/@objectstack/runtimereportsdist-tags.latest = 17.3.0and the version is present. Both packages shipCHANGELOG.mdin theirfiles[], so the text is inside the npm tarball an upgrading reader greps.The sentence now carried by both published CHANGELOGs:
The second clause is false, for the reason #14803 measured and #14597 fixed at the fixture:
defineStackparses everypackages[]entry throughManifestSchema, whosescopeis.default('project'), so no package of a compiled artifact is ever scope-less. Re-measured onorigin/main9b459b791:ManifestSchema.parseof the orders body yieldsscope: "project", whileSchemaRegistry.installPackageof the same unparsed body yields a record whose manifest keys are exactly the authored ones, with noscopekey.The decision this needs
The #14803 PR corrects every live source comment and adds a changeset stating the correction, so the retraction reaches the next release notes. It deliberately does not touch either
CHANGELOG.md, because those are generated release history rather than authored prose, and rewriting them is not a call a code PR should make on its own. Two routes, and the maintainer picks:defineStackmaterialisesscope: 'project'#14803 PR does): the false sentence stays in 17.3.0's published notes; the correction appears in the next version's entry. Cheapest, and the published record stays a faithful record of what shipped.CHANGELOG.mdentries under## 17.3.0, so a reader grepping the tarball sees the corrected sentence. This rewrites shipped release history and the npm tarball for 17.3.0 keeps the old text regardless, so it corrects the repo and GitHub view only.Route B is the one that needs a ruling; route A is already in flight.
Notes
defineStackmaterialisesscope: 'project'#14803 dev seat. Out of scope for that PR: Five platform-side comments still name the multi-package artifact as the source of the scope-less served row — it never was:defineStackmaterialisesscope: 'project'#14803 enumerates five comment sites, this is the disposition of published release history.changelog/release note/scope-less; the only hit was Five platform-side comments still name the multi-package artifact as the source of the scope-less served row — it never was:defineStackmaterialisesscope: 'project'#14803 itself. That is a recency slice, not the whole backlog — a targeted MCP search was not available (the account's search quota was exhausted at the time).Generated by Claude Code