Skip to content

Commit bcb2558

Browse files
committed
chore(changeset): spec patch for step 18's fragment-shaped rationale
Co-authored-by: Claude <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_014EJ1ED8X4MMrT18BhVx4tx
1 parent 555a8e4 commit bcb2558

1 file changed

Lines changed: 20 additions & 0 deletions

File tree

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,20 @@
1+
---
2+
'@objectstack/spec': patch
3+
---
4+
5+
refactor(spec): protocol 18's migration step keeps its `rationale` as key-sorted fragments and derives its `conversionIds` — no value changes (#20535)
6+
7+
Nothing a consumer reads changes. `MIGRATIONS_BY_MAJOR[18].rationale` (48,953
8+
characters), `MIGRATIONS_BY_MAJOR[18].conversionIds` (45 ids, same order) and the
9+
whole `MIGRATIONS_BY_MAJOR` value are byte-identical to the previous release, and so
10+
is the rationale `migrate meta` prints for the 17 → 18 hop.
11+
12+
What changed is how the step is written, so two major-18 retirements can be in
13+
flight at once without conflicting in `packages/spec/src/migrations/registry.ts`:
14+
15+
- The rationale is `STEP18_RATIONALE`, one `{ id, order, text }` fragment per
16+
retirement, kept sorted by `id` and rendered by `order`, joined with one space.
17+
A retirement adds ONE fragment where its `id` (its D3 semantic entry id) sorts —
18+
never at the end — with `order` one more than the highest present.
19+
- `conversionIds` is read off `CONVERSIONS_BY_MAJOR[18]`, which it copied value
20+
for value. A retirement adds its conversion there only.

0 commit comments

Comments
 (0)