Skip to content

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

Description

@claude

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

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions