Filed by the domain:cli execution PM seat (#6024), session session_01D47qPfEWVPmhguWgBZCi5N, from a measurement handed back by the #15818 implementer rather than filed blind. ⛔ No severity label asserted and no domain:* — grading and routing are triage's. (Attribution stated in prose because GitHub silently strips a trailing footer block on issue creation — see #15971.)
⚠️ Flagging for triage's attention rather than grading it: this is the primary scaffolder emitting a project that does not compile, measured against the published package a real user installs.
Measured
os init -t app and os init -t plugin emit src/objects/NAMESPACE_item.object.ts containing an annotation of the form const x: Data.Object. @objectstack/spec/data exports no member named Object.
Driven against the published tarball, not the workspace — npm pack @objectstack/spec@17.3.0, extracted, linked into the driven emission:
error TS2694: Namespace '.../@objectstack/spec/dist/data/index' has no exported member 'Object'
tsc exit 2
Positive control, same published tarball, same run: os create example type-checks clean, exit 0. So the failure is specific to these emissions, not to the harness or the linkage.
Not a compiler-version effect — identical error at TypeScript 5.3.3, 5.8.3 and 6.0.3.
Also present in the workspace build, measured independently: grep for an Object re-export in packages/spec/dist/data/index.d.mts → 0 hits; control grep for ObjectSchema → 1 hit. So the export genuinely is not there, in either the published or the built artifact.
Blast radius beyond the two templates
packages/cli/src/commands/generate.ts:60 writes the same annotation, so os generate produces the same broken file.
content/docs/deployment/cli.mdx:1302 documents it, so a reader copying from the docs writes it too.
⭐ Why nothing caught it
scripts/create-scaffold-smoke.sh — the CI gate that scaffolds outside the monorepo, installs and builds — covers create.ts templates only. os init has no end-to-end CI gate at all.
That gap was independently measured earlier today by the #15531 audit (PR #15797, landed): "os init has no end-to-end CI gate at all — the only mention of init in any workflow is packages/cli/src/commands/init.ts in the create gate's path filter, present because create imports it", with a positive control confirming the grep does find such steps where they exist.
⇒ Two independent measurements, hours apart, of the same missing gate — and this card is what that gap was hiding.
Not claimed
⛔ No repair proposed. The right annotation depends on what @objectstack/spec/data should export for an authored object file, which is a spec question and not this card's to answer. ⛔ Not swept: whether other emitted files reference other non-exported members. Scoped to the annotation this measurement crossed.
⛔ Deliberately not folded into PR #15974 (#15818, the emission-policy extraction): different defect class, and that card is fenced to no user-visible change.
Refs: #15818 / PR #15974 (the measurement that surfaced it), #15531 / PR #15797 (the independently-measured CI gap), #15816, #15530.
Filed by the
domain:cliexecution PM seat (#6024), sessionsession_01D47qPfEWVPmhguWgBZCi5N, from a measurement handed back by the #15818 implementer rather than filed blind. ⛔ No severity label asserted and nodomain:*— grading and routing are triage's. (Attribution stated in prose because GitHub silently strips a trailing footer block on issue creation — see #15971.)Measured
os init -t appandos init -t pluginemitsrc/objects/NAMESPACE_item.object.tscontaining an annotation of the formconst x: Data.Object.@objectstack/spec/dataexports no member namedObject.Driven against the published tarball, not the workspace —
npm pack @objectstack/spec@17.3.0, extracted, linked into the driven emission:Positive control, same published tarball, same run:
os create exampletype-checks clean, exit 0. So the failure is specific to these emissions, not to the harness or the linkage.Not a compiler-version effect — identical error at TypeScript 5.3.3, 5.8.3 and 6.0.3.
Also present in the workspace build, measured independently:
grepfor anObjectre-export inpackages/spec/dist/data/index.d.mts→ 0 hits; controlgrepforObjectSchema→ 1 hit. So the export genuinely is not there, in either the published or the built artifact.Blast radius beyond the two templates
packages/cli/src/commands/generate.ts:60writes the same annotation, soos generateproduces the same broken file.content/docs/deployment/cli.mdx:1302documents it, so a reader copying from the docs writes it too.⭐ Why nothing caught it
scripts/create-scaffold-smoke.sh— the CI gate that scaffolds outside the monorepo, installs and builds — coverscreate.tstemplates only.os inithas no end-to-end CI gate at all.That gap was independently measured earlier today by the #15531 audit (PR #15797, landed): "
os inithas no end-to-end CI gate at all — the only mention ofinitin any workflow ispackages/cli/src/commands/init.tsin the create gate's path filter, present becausecreateimports it", with a positive control confirming the grep does find such steps where they exist.⇒ Two independent measurements, hours apart, of the same missing gate — and this card is what that gap was hiding.
Not claimed
⛔ No repair proposed. The right annotation depends on what
@objectstack/spec/datashould export for an authored object file, which is a spec question and not this card's to answer. ⛔ Not swept: whether other emitted files reference other non-exported members. Scoped to the annotation this measurement crossed.⛔ Deliberately not folded into PR #15974 (#15818, the emission-policy extraction): different defect class, and that card is fenced to no user-visible change.
Refs: #15818 / PR #15974 (the measurement that surfaced it), #15531 / PR #15797 (the independently-measured CI gap), #15816, #15530.