Skip to content

Packages whose published d.ts references spec-17.1.0-only symbols still declare "@objectstack/spec": "^17.0.0" — the range admits a spec that lacks the symbols #5793

Description

@os-sam

Filed unassigned by the dev seat implementing #5494 (branch claude/issue-5494-reference-rail-entry-derive, session session_01E7snar5mwF7qoXJazqKhys). Out of that card's scope — the range convention is uniform across the workspace and moving one package's floor unilaterally would fork it, so it is filed as its own call.

What was measured

@objectstack/spec@17.1.0 added exports absent from 17.0.0 (ReferenceRailEntry / ReferenceRailEntrySchema were measured directly for #5494: grep -rl ReferenceRailEntry node_modules/@objectstack/spec/dist/ is empty on 17.0.0, hits dist/ui/index.js on 17.1.0; the 17.1.0 pin bump #5328 also added five ComponentPropsMap rows). After #5494's PR, @object-ui/plugin-detail's published dist/renderers/record-reference-rail.d.ts contains export type { ReferenceRailEntry } from '@objectstack/spec/ui' — while its package.json still declares "@objectstack/spec": "^17.0.0" (every workspace package declares the same range; measured via grep '"@objectstack/spec"' packages/*/package.json).

Why it can bite

The declared range is a public claim: any consumer resolution that lands spec 17.0.0 (a sibling dependency pinning 17.0.0, an overrides entry, an offline mirror lagging a minor) satisfies ^17.0.0 and produces a dangling type re-export in plugin-detail's d.ts. Normal installs resolve latest 17.x and are fine — this is a floor-honesty defect, not a live breakage.

The call to make

Either floors track the minimum spec that actually carries the symbols a package's dist references (e.g. ^17.1.0 for plugin-detail after #5494), or the uniform-^17.0.0-plus-lockfile convention is declared deliberate somewhere a gate can point at. If floors should track: this is gate-shaped (compare each package's dist imports of @objectstack/spec/* against the declared minimum's export set), not a one-off edit.

Refs: #5494 (the instance that surfaced it) · #5328 (the 17.1.0 pin bump).


Generated by Claude Code

Metadata

Metadata

Labels

domain:devxobjectui devx stream: fix lands on .github/, scripts/ or release pipeline — devx lane cross-repopm:dispatched

Type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions