|
| 1 | +--- |
| 2 | +"@object-ui/app-shell": minor |
| 3 | +"@object-ui/core": minor |
| 4 | +"@object-ui/data-objectstack": minor |
| 5 | +"@object-ui/console": minor |
| 6 | +--- |
| 7 | + |
| 8 | +Bring the whole `@objectstack` family to `17.0.0-rc.1`, so the dependency graph resolves a |
| 9 | +single copy of `@objectstack/spec`. |
| 10 | + |
| 11 | +#3178 bumped **only** `@objectstack/spec` to `17.0.0-rc.1`. The rest of the family — |
| 12 | +`client`, `core`, `formula`, `lint` (and `sdui-parser`, reached through `lint`) — stayed on |
| 13 | +`17.0.0-rc.0`, and each of them depends on spec at an **exact** version rather than a |
| 14 | +caret: |
| 15 | + |
| 16 | +``` |
| 17 | +@objectstack/client@17.0.0-rc.0 -> spec "17.0.0-rc.0" |
| 18 | +@objectstack/core@17.0.0-rc.0 -> spec "17.0.0-rc.0" |
| 19 | +@objectstack/formula@17.0.0-rc.0 -> spec "17.0.0-rc.0" |
| 20 | +@objectstack/lint@17.0.0-rc.0 -> spec "17.0.0-rc.0" |
| 21 | +``` |
| 22 | + |
| 23 | +So `main` carried **two** spec copies: objectui's own code read `17.0.0-rc.1` while every |
| 24 | +`@objectstack/*` package read `17.0.0-rc.0` from its own nested `node_modules`. That breaks |
| 25 | +the single-contract invariant this repo's guards are built on, and it breaks them |
| 26 | +*silently* — the affected checks depend on identity, not on version strings: |
| 27 | + |
| 28 | +- `spec-subschema-parity.test.ts` distinguishes a genuine re-export from a fork by |
| 29 | + **reference identity** of the zod schema object. Two spec copies make every schema a |
| 30 | + distinct object, so a real re-export starts reading as a fork (or a fork slips through, |
| 31 | + depending on which copy each side resolved). |
| 32 | +- `scripts/check-spec-symbol-derivation.mjs` and `spec-symbol-parity.test.ts` use |
| 33 | + `createRequire` to resolve spec's `.d.ts` and run it through the TS checker. With two |
| 34 | + copies installed, *which* declaration file the checker sees is a function of resolution |
| 35 | + order rather than of intent. |
| 36 | + |
| 37 | +The declared ranges were already `^17.0.0-rc.0`, which technically admits rc.1 — the pin |
| 38 | +lived in the lockfile. Raising the remaining ranges to `^17.0.0-rc.1` makes the floor |
| 39 | +explicit and forbids a future install from silently sliding back onto a family member that |
| 40 | +drags rc.0 along with it. The rc.1 family members pin spec at `17.0.0-rc.1` exactly, so the |
| 41 | +graph now converges on one copy by construction, not by luck. |
| 42 | + |
| 43 | +No product behaviour changes here. `check:spec-symbols` reconciliation was already |
| 44 | +completed by #3178 and stays green under the unified graph; this changeset is `minor` |
| 45 | +per the repo's fixed-group version policy. |
0 commit comments