Skip to content

[finding] Four @objectstack/ packages this repo does not build are named in published docs with no declared roster — including one the CLI tells users to pnpm add #10921

Description

@os-zhuang

Found while closing the member-existence blind spot in check:published-readme-exports (#10893). Filed unassigned, no pm:queue — triage's call. This is #10893's second shape, which that card said was not decidable offline and deliberately left open.

The observation

The #10893 sweep measured every @objectstack/ token in the 60 published documents against the workspace member map. After the repairs, four names remain that this repo does not build, and all four are legitimate as written — they are prose, not runnable imports:

namenamed inwhat the tree says it is
@objectstack/security-enterprisepackages/plugins/plugin-audit/README.md:365the enterprise hierarchy resolver. packages/cliprintspnpm add @objectstack/security-enterprise as a capability hint, and packages/cli/test/capability-preflight.test.ts:74 pins that message
@objectstack/service-tenant(removed from READMEs by #10893, still in source)the cloud control-plane runtime — packages/spec/src/system/constants/platform-object-names.ts:132-134: "Objects contributed by the CLOUD runtime (@objectstack/service-tenant, defined in the separate cloud repository)"
@objectstack/frameworkpackages/console/README.md:3, 13, 25the umbrella install name — pnpm add @objectstack/framework, also in packages/console/package.json's description and packages/cli/src/utils/console.ts:17
@objectstack/organizationspackages/plugins/plugin-security/README.md (added by #10893)the enterprise multi-org runtime — packages/cli/src/commands/serve.ts:2423 tells the operator to add it to their app

Two more are historical names, correct because the sentence is about the past: @objectstack/service-external-datasource and @objectstack/service-datasource-admin, which packages/services/service-datasource/README.md:11-12 names as the packages it used to be.

Why it is worth a card

Nothing declares any of this. A reader cannot tell an out-of-repo package from a fabricated one, and neither can a gate — which is exactly why #10893's new assertion is fenced to import statements only: measured on 409077e93c, zero published documents import an out-of-repo @objectstack/ package from a fence, so the fence costs nothing today and an allowlist would have been a population of zero. That fence holds only while the count stays zero.

The sharper half is @objectstack/framework. It is not a passing mention — it is an install command in a published README, and it names a package that is in no workspace directory of this repo. Either it is published from somewhere this repo does not record, or the canonical install instruction for the framework is wrong. Nothing here can tell which, and that is the finding.

The question that has to be answered before anything is built

May a published README name an @objectstack/ package this repo does not build, and if so, where is that declared? Three shapes, and picking one is a ruling rather than a scan:

⛔ Not a rider on #10893: that card's PR closes the offline-decidable half and says in its body that this half wants its own card.

Refs: #10893 / its PR (the offline half, and the measured fence) · #10920 (knowledge-turso, the same question on a runtime surface) · #9532 · #10368

Metadata

Metadata

Assignees

No one assigned

    Type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions