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:
| name | named in | what the tree says it is |
|---|
@objectstack/security-enterprise | packages/plugins/plugin-audit/README.md:365 | the 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/framework | packages/console/README.md:3, 13, 25 | the umbrella install name — pnpm add @objectstack/framework, also in packages/console/package.json's description and packages/cli/src/utils/console.ts:17 |
@objectstack/organizations | packages/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
Found while closing the member-existence blind spot in
check:published-readme-exports(#10893). Filed unassigned, nopm: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:@objectstack/security-enterprisepackages/plugins/plugin-audit/README.md:365packages/cliprintspnpm add @objectstack/security-enterpriseas a capability hint, andpackages/cli/test/capability-preflight.test.ts:74pins that message@objectstack/service-tenantpackages/spec/src/system/constants/platform-object-names.ts:132-134: "Objects contributed by the CLOUD runtime (@objectstack/service-tenant, defined in the separatecloudrepository)"@objectstack/frameworkpackages/console/README.md:3, 13, 25pnpm add @objectstack/framework, also inpackages/console/package.json'sdescriptionandpackages/cli/src/utils/console.ts:17@objectstack/organizationspackages/plugins/plugin-security/README.md(added by #10893)packages/cli/src/commands/serve.ts:2423tells the operator to add it to their appTwo more are historical names, correct because the sentence is about the past:
@objectstack/service-external-datasourceand@objectstack/service-datasource-admin, whichpackages/services/service-datasource/README.md:11-12names 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:scripts/*.json, one row per out-of-repo package with where it ships) — makes the gate able to admit a fenced example for an enterprise package, at the cost of a file that must be kept true;⛔ 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