Found while executing #5716 (session session_01EuPCi56cnGyykygi3z9w4m, PR #5752). Observation class — no runtime defect.
Blocked-by: PR #5752 (the premise holds only once it lands).
Measurement (branch claude/issue-5716-localize-theme-types at cf05dd125)
Before #5716, packages/providers imported @objectstack/spec/ui in exactly three places: src/types.ts:2 (the ThemeModeSchema type carrier behind ThemePreference) and the two retirement-era test files. The #5716 ruling re-pointed all three at @object-ui/types (ThemeMode / THEME_MODES), so after PR #5752 a grep for objectstack/spec across packages/providers/ returns only:
package.json:34 — the dependency declaration itself (caret 17.0.0), and- a prose comment in
tsconfig.test.json:13.
Zero import sites. check:phantom-deps guards the inverse direction (import without a declaration), so nothing mechanical reddens on a declared-but-unimported dependency: it ships as dead weight in the published package's dependency tree and, more practically, keeps @object-ui/providers on the spec's install/refresh treadmill for no reader.
Why not fixed in PR #5752
packages/providers/package.json is outside that card's granted write surface, and removing a published package's dependency is its own reviewable decision (it changes the install graph for consumers). Natural landing spot: the post-release spec-pin refresh chain (the #5668Restart-when: exit), which touches every spec dependency declaration anyway — whoever executes the refresh can drop the entry instead of bumping it, with this issue as the reason. The tsconfig.test.json comment can be updated in the same stroke.
Found while executing #5716 (session
session_01EuPCi56cnGyykygi3z9w4m, PR #5752). Observation class — no runtime defect.Blocked-by: PR #5752 (the premise holds only once it lands).
Measurement (branch
claude/issue-5716-localize-theme-typesatcf05dd125)Before #5716,
packages/providersimported@objectstack/spec/uiin exactly three places:src/types.ts:2(theThemeModeSchematype carrier behindThemePreference) and the two retirement-era test files. The #5716 ruling re-pointed all three at@object-ui/types(ThemeMode/THEME_MODES), so after PR #5752 a grep forobjectstack/specacrosspackages/providers/returns only:package.json:34— the dependency declaration itself (caret 17.0.0), andtsconfig.test.json:13.Zero import sites.
check:phantom-depsguards the inverse direction (import without a declaration), so nothing mechanical reddens on a declared-but-unimported dependency: it ships as dead weight in the published package's dependency tree and, more practically, keeps@object-ui/providerson the spec's install/refresh treadmill for no reader.Why not fixed in PR #5752
packages/providers/package.jsonis outside that card's granted write surface, and removing a published package's dependency is its own reviewable decision (it changes the install graph for consumers). Natural landing spot: the post-release spec-pin refresh chain (the #5668Restart-when:exit), which touches every spec dependency declaration anyway — whoever executes the refresh can drop the entry instead of bumping it, with this issue as the reason. Thetsconfig.test.jsoncomment can be updated in the same stroke.