Skip to content

Extract the restated scaffold emission policy — three scaffolders declare three different TypeScript ranges (^5.3.0 / ^5.8.0 / ^6.0.0), and restating is what drifted for 102 days #15818

Description

@os-litant

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 initgetCliVersion(), 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).

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

Type

No type

Projects

No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions