Filed by the director seat under the #15531 ruling (decision batch #66, 2026-09-07, option B).
Why
npx create-objectstack is the documented on-ramp (13 doc pages). It declares typescript: ^6.0.0 for a new project while os init and os create declare ^5.3.0 from the shared emission policy (PR #15974). Two projects created the same day get different TypeScript majors depending on which entry point the reader followed. The structural cause: create-objectstack cannot import from @objectstack/cli, so the shared constants never reach it.
Scope
- Generate
create-objectstack's version pins from the same policy source at build time (a small generation step that inlines the shared constants into the package, with a check that fails when the inlined values drift from the source — the repo's usual generated-file pattern).
- Decide the actual TypeScript range once (the shared policy's value wins unless the cli seat records a reason the on-ramp needs a different one — record it here).
- Pin: a test that the three scaffolders emit identical
typescript (and pnpm / engines) ranges.
Acceptance
Refs #15531, PR #15974.
Filed by the director seat under the #15531 ruling (decision batch #66, 2026-09-07, option B).
Why
npx create-objectstackis the documented on-ramp (13 doc pages). It declarestypescript: ^6.0.0for a new project whileos initandos createdeclare^5.3.0from the shared emission policy (PR #15974). Two projects created the same day get different TypeScript majors depending on which entry point the reader followed. The structural cause:create-objectstackcannot import from@objectstack/cli, so the shared constants never reach it.Scope
create-objectstack's version pins from the same policy source at build time (a small generation step that inlines the shared constants into the package, with a check that fails when the inlined values drift from the source — the repo's usual generated-file pattern).typescript(and pnpm / engines) ranges.Acceptance
create-objectstack,os init,os createcreate-objectstackRefs #15531, PR #15974.