Filed unassigned and bare by the domain:cli execution PM seat (#6024) from the measurement delivered on #15531 (PR #15797). ⛔ Not graded here.
This is item (1) of option B, which the seat ruled on #15531 after the measurement came back. It is the part with no user-visible change; the one user-visible question from that ruling (whether os create example should be retired) is separately with the maintainer.
Measured
Three scaffolders ship today — ⚠️ three, not the two the #15531 card assumed: npx create-objectstack ships from its own published package and carries 13 live doc pages, against os create's 4 and os init's 3.
They declare three different TypeScript ranges and two different vitest ranges:
| scaffolder |
typescript |
vitest |
os init |
^5.3.0 |
^4.0.18 |
os create |
^5.8.0 |
^4.0.0 |
create-objectstack |
^6.0.0 |
— |
⭐ The dated evidence — restating is the defect, not the command count
The measurement dates the risk precisely:
restating drifted for 102 days (2026-05-25 → 2026-09-04) on the value that decides whether a scaffold installs; importing has zero drift across five emissions.
⇒ The long-term risk is the restatement, not how many commands exist. Merging the command families (option A on #15531) would spend a deprecation on a published CLI surface, 7 live doc pages, a docs-parity pin bound to 3 of them by file name, and a CI path-filter parity script — while leaving this restatement untouched.
The shape the repo is already converging on
os create already imports four symbols from os init — getCliVersion(), SCAFFOLD_PNPM_RANGE, renderPnpmWorkspaceYaml(), sanitizeNamespace() — and those four have not drifted. This card extends that: move the still-restated emission policy (tsconfig base options, devtool ranges) into the module both already import.
⚠️ Contained by design: no emitted output changes for any scaffolder whose values already agree, no doc edits, no published export changes. Where the three ranges disagree, choosing the surviving value is a decision — state it in the PR with the measurement rather than picking silently.
Related, separate
Dedup — bounded
⛔ Not exhaustive: a pattern sweep over a 376-issue snapshot of all open issues found no card naming this drift. ⚠️ The snapshot predates the last hours of this session and the live search channel was rate-limited. Worth one more check when it recovers.
Refs: #15531 / PR #15797 (the measurement and the ruling), #14824 (the ruling that reserved the convergence question).
Filed unassigned and bare by the
domain:cliexecution PM seat (#6024) from the measurement delivered on #15531 (PR #15797). ⛔ Not graded here.This is item (1) of option B, which the seat ruled on #15531 after the measurement came back. It is the part with no user-visible change; the one user-visible question from that ruling (whether
os create exampleshould be retired) is separately with the maintainer.Measured
Three scaffolders ship today —⚠️ three, not the two the #15531 card assumed:
npx create-objectstackships from its own published package and carries 13 live doc pages, againstos create's 4 andos init's 3.They declare three different TypeScript ranges and two different vitest ranges:
os init^5.3.0^4.0.18os create^5.8.0^4.0.0create-objectstack^6.0.0⭐ The dated evidence — restating is the defect, not the command count
The measurement dates the risk precisely:
⇒ The long-term risk is the restatement, not how many commands exist. Merging the command families (option A on #15531) would spend a deprecation on a published CLI surface, 7 live doc pages, a docs-parity pin bound to 3 of them by file name, and a CI path-filter parity script — while leaving this restatement untouched.
The shape the repo is already converging on
os createalready imports four symbols fromos init—getCliVersion(),SCAFFOLD_PNPM_RANGE,renderPnpmWorkspaceYaml(),sanitizeNamespace()— and those four have not drifted. This card extends that: move the still-restated emission policy (tsconfig base options, devtool ranges) into the module both already import.Related, separate
pluginnames two different artifacts across the scaffolders —os init -t pluginemits a metadata plugin,os create pluginemits a kernel code plugin, andcli.mdxpoints readers at the wrong one #15817 — thepluginword names two different artifacts. Independent defect, same measurement.os createaccepts a project name npm refuses and writes it —os create pluginwithMy Appemits./plugin-My App/andname: "@objectstack/plugin-My App";os initrefuses the same input #15816 —os createaccepts an npm-invalid project name. Independent defect, same measurement..gitignoreis emitted only byos initandREADME.mdonly byos create; neither is a recorded decision. Noted here rather than filed, because it is the same "restated vs decided" class this card closes.Dedup — bounded
⛔ Not exhaustive: a pattern sweep over a 376-issue snapshot of all open issues found no card naming this drift.⚠️ The snapshot predates the last hours of this session and the live search channel was rate-limited. Worth one more check when it recovers.
Refs: #15531 / PR #15797 (the measurement and the ruling), #14824 (the ruling that reserved the convergence question).