You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
Repository navigation
Commit d64bcb6
Browse filesBrowse the repository at this point in the historyBrowse files
refactor(metadata,spec)!: retire the adr-0030-notification-event migration — no operator door, no platform invoker (#17194)
* wip: retire adr-0030-notification-event migration
* wip: regenerate engine-double ledger
* wip: plugin.test.ts expectations follow the two-member set
* wip: changeset without a FROM/TO framing
* refactor(metadata,spec)!: retire the adr-0030-notification-event migration
`migrateSysNotificationToEvent` had no way to be run: zero production callers
anywhere in `packages` / `apps` / `examples`, and no `os migrate` sub-command,
while the two sibling members of `CREATION_ATTESTED_MIGRATION_IDS` had both.
Removed together: the runner and its three result/option/receipt types, its
barrel export, its tests, the ruled `sys_migration` receipt-claim matrix and
that matrix's pin, the spec docblock stating it, and the id's membership in
`CREATION_ATTESTED_MIGRATION_IDS`. `NOTIFICATION_EVENT_MIGRATION_ID` is kept
as the name of rows already written under it; nothing writes or reads one now.
Both alternatives stay refused: an `os migrate notification-event` sub-command
is a permanent operator surface for a migration with no measured demand, and a
boot-time invoker is an unattended data rewrite. Pre-ADR-0030 `sys_notification`
rows are not carried by the platform on this line.
Two new retirement pins replace the withdrawn ledger pin, each asserting the two
ADR-0104 survivors by name beside the negative, so a correct removal is
distinguishable from a set that lost everything.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_015QE8qk46e5CHJxyQEUjbf8
* docs(handoff): finish the ADR-0030 retirement — the runbook's own description too
The first pass tombstoned only the cut-over sequence's step 2. Three claims
above it still described the migration as live: the `### Data migration
(not auto-run)` section that names the deleted file and its export, the
breaking-change callout telling a reader to "do the objectui cut-over and the
data migration together", and the Tests line counting the migration's own
suites among the green ones.
Found by the docs-drift round on the PR. The runbook tombstone is now a
pointer to the one full account, so the file states it once.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_015QE8qk46e5CHJxyQEUjbf8
---------
Co-authored-by: Claude <noreply@anthropic.com>
No replacement exists, and none is coming: an `os migrate notification-event`
23
+
sub-command was considered and refused. Delete the call. The compiler delivers
24
+
this one: the import fails to resolve.
25
+
-`SysNotificationMigrationResult`, `SysNotificationMigrationOptions` and
26
+
`SysNotificationMigrationReceipt` (same entry point) — deleted with it. They
27
+
described that runner's own result, options and receipt and nothing else.
28
+
-`CREATION_ATTESTED_MIGRATION_IDS` (`@objectstack/spec/system`) — was a
29
+
three-member tuple and is now a two-member one holding
30
+
`'adr-0104-file-references'` and `'adr-0104-value-shapes'`. Both ADR-0104 ids
31
+
keep their sub-commands, their receipt rows and their birth attestation; only
32
+
the notification id left. Code typed against
33
+
`(typeof CREATION_ATTESTED_MIGRATION_IDS)[number]` that names the notification
34
+
id no longer compiles — delete that arm.
35
+
36
+
`NOTIFICATION_EVENT_MIGRATION_ID` (`@objectstack/spec/system`) is **kept**. A
37
+
deployment attested at birth, or one that made the operator call while the runner
38
+
shipped, still holds a `sys_migration` row keyed `'adr-0030-notification-event'`,
39
+
and the constant is that row's name. Nothing writes or reads a row under it any
40
+
more — `attestFreshDatastore` no longer includes it — and it is not a
41
+
registration: it gates nothing and never did.
42
+
43
+
## Reversal path
44
+
45
+
Two answers were considered and both refused: an `os migrate notification-event`
46
+
sub-command is a permanent operator surface for a migration with no measured
47
+
demand, and a boot-time invoker is an unattended data rewrite nobody asked for.
48
+
⚠️ Nobody has measured whether any live deployment carries pre-ADR-0030
49
+
`sys_notification` rows. If a **named** deployment turns out to hold rows it
50
+
needs, the migration returns as an operator-runnable sub-command shaped exactly
51
+
like `files-to-references` / `value-shapes` — dry-run default, `--apply` gate,
52
+
documented consequence — under its own card.
53
+
54
+
<!-- adr-0087: not-required (no-migration-prescription) Nothing authorable moves and nothing is renamed: no spec key, no config field, no stored-metadata shape, and no replacement spelling for anyone to adopt. The removed surfaces are one runtime function on `@objectstack/metadata/migrations`, its three own result/option/receipt types, and one member of a constant tuple — none of which appears in any authorable document, so `objectstack migrate meta` has nothing it could rewrite and a ledger entry would prescribe a rewrite that does not exist. The consumer-side action is a deletion, delivered by the compiler on the import and by the barrel tombstone beside it. -->
0 commit comments