Commit 0508e45
fix(docs,migrate-ts): the remap hazard, measured instead of reasoned about
The previous commit claimed a member re-mapping is invisible to `meta migrate`
and that a swap emits no migration at all. Probing the real diff says otherwise,
and the corrected picture is both narrower and more useful:
- The CHECK list renders in @values order, so ANY remap changes its text. That
emits drop-check + add-check, and drop-check is BLOCKED by default
(allow.dropCheck) — migrate refuses. The refusal is an ACCIDENT: it fires
because dropping a CHECK is destructive, not because anything recognises that
the meaning of stored data just changed.
- Once allowed, the migration only refreshes the constraint and never touches
the data. Moving a member to an unused int then applies a CHECK the existing
rows violate and the database refuses it, loudly. SWAPPING two members leaves
the admitted set identical, so it applies cleanly and every row has quietly
changed meaning.
- Only one shape is invisible to the diff: a remap plus a compensating @values
reorder renders a byte-identical CHECK, so there is no diff to block.
All three are now pinned in expected-schema-enum-intvaluemap.test.ts rather than
asserted in prose — including the known gap, marked KNOWN so a future change that
closes it updates the test instead of reverting the behaviour. Pinning the
accident matters most: nothing else stops `allow.dropCheck` from being relaxed
into a general auto-allow and taking the only protection with it.
CHANGELOG gains the adopter-facing version: do not remap on a populated table;
treat it as the same two-step backfill a backing-mode change needs.
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>1 parent 7c9b65a commit 0508e45
3 files changed
Lines changed: 85 additions & 15 deletions
File tree
- docs/superpowers/specs
- server/typescript/packages/migrate-ts/test
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
67 | 67 | | |
68 | 68 | | |
69 | 69 | | |
| 70 | + | |
| 71 | + | |
| 72 | + | |
| 73 | + | |
| 74 | + | |
| 75 | + | |
| 76 | + | |
| 77 | + | |
| 78 | + | |
| 79 | + | |
70 | 80 | | |
71 | 81 | | |
72 | 82 | | |
| |||
Lines changed: 27 additions & 15 deletions
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
267 | 267 | | |
268 | 268 | | |
269 | 269 | | |
270 | | - | |
271 | | - | |
272 | | - | |
273 | | - | |
274 | | - | |
275 | | - | |
276 | | - | |
277 | | - | |
278 | | - | |
279 | | - | |
280 | | - | |
281 | | - | |
282 | | - | |
283 | | - | |
284 | | - | |
| 270 | + | |
| 271 | + | |
| 272 | + | |
| 273 | + | |
| 274 | + | |
| 275 | + | |
| 276 | + | |
| 277 | + | |
| 278 | + | |
| 279 | + | |
| 280 | + | |
| 281 | + | |
| 282 | + | |
| 283 | + | |
| 284 | + | |
| 285 | + | |
| 286 | + | |
| 287 | + | |
| 288 | + | |
| 289 | + | |
| 290 | + | |
| 291 | + | |
| 292 | + | |
| 293 | + | |
| 294 | + | |
| 295 | + | |
| 296 | + | |
285 | 297 | | |
286 | 298 | | |
287 | 299 | | |
| |||
Lines changed: 48 additions & 0 deletions
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
203 | 203 | | |
204 | 204 | | |
205 | 205 | | |
| 206 | + | |
| 207 | + | |
| 208 | + | |
| 209 | + | |
| 210 | + | |
| 211 | + | |
| 212 | + | |
| 213 | + | |
| 214 | + | |
| 215 | + | |
| 216 | + | |
| 217 | + | |
| 218 | + | |
| 219 | + | |
| 220 | + | |
| 221 | + | |
| 222 | + | |
| 223 | + | |
| 224 | + | |
| 225 | + | |
| 226 | + | |
| 227 | + | |
| 228 | + | |
| 229 | + | |
| 230 | + | |
| 231 | + | |
| 232 | + | |
| 233 | + | |
| 234 | + | |
| 235 | + | |
| 236 | + | |
| 237 | + | |
| 238 | + | |
| 239 | + | |
| 240 | + | |
| 241 | + | |
| 242 | + | |
| 243 | + | |
| 244 | + | |
| 245 | + | |
| 246 | + | |
| 247 | + | |
| 248 | + | |
| 249 | + | |
| 250 | + | |
| 251 | + | |
| 252 | + | |
| 253 | + | |
0 commit comments