What is missing
migrateSysNotificationToEvent — the adr-0030-notification-event data migration — has no way to be run. It is exported, tested, documented and now has a ruled sys_migration receipt contract, and there is no path by which an operator can invoke it.
Two independent measurements tonight, from two seats that were not looking for the same thing:
① No production call site. Every non-CHANGELOG reference to the symbol, re-measured on today's origin/main:
| site |
what it is |
packages/metadata/src/migrations/migrate-sys-notification-to-event.ts:71 |
the definition |
packages/metadata/src/migrations/migrate-sys-notification-to-event.ts:26-27 |
its own usage docblock |
packages/metadata/src/migrations/index.ts:50 |
the barrel export |
packages/metadata/src/migrations/driver-exec.ts:14 |
a comment mentioning it, not a call |
packages/spec/src/system/migration.zod.ts |
the id's docblock |
migrate-sys-notification-to-event.test.ts, real-driver-exec-surface.test.ts |
tests |
⇒ zero callers in packages / apps / examples. The instrument is alive — the same grep finds the symbol in 13 files — so this is a zero about the production-caller subset, not a dead grep. (Triage on #16100 measured the same thing at a4816a7 and additionally excluded both candidates the card had named: sys_migration occurs **0 times in all of packages/metadata``, and serve.ts`'s only occurrence is an unrelated comment.)
② No os migrate sub-command. packages/cli/src/commands/migrate/ contains apply.ts, duplicates.ts, files-to-references.ts, index.ts, meta.ts, multi-value-columns.ts, plan.ts, recorded-by.ts, resume.ts, summary-nulls.ts, value-shapes.ts — and nothing for this migration. The directory listing is its own control: the two siblings are there.
⭐ The sharpest form of it: CREATION_ATTESTED_MIGRATION_IDS has exactly three members —
FILE_REFERENCES_MIGRATION_ID, → os migrate files-to-references
VALUE_SHAPES_MIGRATION_ID, → os migrate value-shapes
NOTIFICATION_EVENT_MIGRATION_ID, → (nothing)
Two of the three have a sub-command. The third does not. That asymmetry inside a set the spec declares as one class is the finding.
Why it matters now rather than whenever
The sys_migration receipt contract for this id was ruled and landed (a7da4de6f, #15710), and #16100 is implementing the writer. That contract's execution sentence is "after a completed non-error run of the migration, the caller that owns the datastore handle writes…" — ⇒ there is no run to hang it on. The receipt writer will be correct, pinned, and unreachable by any operator on the day it lands.
A third seat measured the same gap from the other side: the #16067 round chose the wording "it never reaches this branch at all" over inventing a remedy sentence for this id precisely because it measured, with a firing control, that no such sub-command exists.
What this card is NOT
The question a maintainer has to answer
Is adr-0030-notification-event meant to be operator-runnable, or is it a migration the platform runs on its own (or never runs again)?
- Operator-runnable ⇒ it needs an
os migrate notification-event sub-command shaped like its two siblings (dry-run default, --apply, the receipt written per the ruled matrix), and that is a domain:cli card.
- Platform-run ⇒ it needs an invoker somewhere in boot or in
os migrate apply, and the ruled receipt matrix tells that invoker exactly what to write.
- Neither / retired ⇒ then the receipt contract, the ledger pin and its membership in
CREATION_ATTESTED_MIGRATION_IDS are all describing something that cannot happen, and that should be said out loud rather than left as three landed artefacts around an unreachable function.
⛔ This card takes no position between the three. It records that the gap exists, that it is measured from three independent directions, and that the receipt work now landing makes it visible.
Provenance
Triage on #16100 (comment 5556315594) measured ① and ②, judged it "an independent defect worth its own card", and left it unfiled with 145 bare cards in the queue, inviting the engine seat to open it. The #16067 round measured ② independently. Both readings re-run on today's origin/main by the PM dispatch seat before filing.
Related: #16100 (the receipt writer, in flight) · #15710 (the ruled contract, landed) · #16067 (the round that measured ② from the other side).
Generated by Claude Code
What is missing
migrateSysNotificationToEvent— theadr-0030-notification-eventdata migration — has no way to be run. It is exported, tested, documented and now has a ruledsys_migrationreceipt contract, and there is no path by which an operator can invoke it.Two independent measurements tonight, from two seats that were not looking for the same thing:
① No production call site. Every non-CHANGELOG reference to the symbol, re-measured on today's
origin/main:packages/metadata/src/migrations/migrate-sys-notification-to-event.ts:71packages/metadata/src/migrations/migrate-sys-notification-to-event.ts:26-27packages/metadata/src/migrations/index.ts:50packages/metadata/src/migrations/driver-exec.ts:14packages/spec/src/system/migration.zod.tsmigrate-sys-notification-to-event.test.ts,real-driver-exec-surface.test.ts⇒ zero callers in
packages/apps/examples. The instrument is alive — the same grep finds the symbol in 13 files — so this is a zero about the production-caller subset, not a dead grep. (Triage on #16100 measured the same thing ata4816a7and additionally excluded both candidates the card had named:sys_migrationoccurs **0 times in all ofpackages/metadata``, andserve.ts`'s only occurrence is an unrelated comment.)② No
os migratesub-command.packages/cli/src/commands/migrate/containsapply.ts,duplicates.ts,files-to-references.ts,index.ts,meta.ts,multi-value-columns.ts,plan.ts,recorded-by.ts,resume.ts,summary-nulls.ts,value-shapes.ts— and nothing for this migration. The directory listing is its own control: the two siblings are there.⭐ The sharpest form of it:
CREATION_ATTESTED_MIGRATION_IDShas exactly three members —Two of the three have a sub-command. The third does not. That asymmetry inside a set the spec declares as one class is the finding.
Why it matters now rather than whenever
The
sys_migrationreceipt contract for this id was ruled and landed (a7da4de6f, #15710), and #16100 is implementing the writer. That contract's execution sentence is "after a completed non-errorrun of the migration, the caller that owns the datastore handle writes…" — ⇒ there is no run to hang it on. The receipt writer will be correct, pinned, and unreachable by any operator on the day it lands.A third seat measured the same gap from the other side: the #16067 round chose the wording "it never reaches this branch at all" over inventing a remedy sentence for this id precisely because it measured, with a firing control, that no such sub-command exists.
What this card is NOT
adr-0030-notification-eventmigration writes itssys_migrationreceipt row per the ruled ledger-claim matrix —last_run_aton every completed run,applied_atonmigratedonly, neververified_at(#15710 follow-on) #16100. That card writes the receipt row inside the runner and is fenced against this; triage on it explicitly refused to fold this in, and named it "an unruled CLI feature".--applygate and a documented consequence, and none of that has been ruled for this one. Landing a bare sub-command to close an asymmetry would ship an unruled operator door.The question a maintainer has to answer
Is
adr-0030-notification-eventmeant to be operator-runnable, or is it a migration the platform runs on its own (or never runs again)?os migrate notification-eventsub-command shaped like its two siblings (dry-run default,--apply, the receipt written per the ruled matrix), and that is adomain:clicard.os migrate apply, and the ruled receipt matrix tells that invoker exactly what to write.CREATION_ATTESTED_MIGRATION_IDSare all describing something that cannot happen, and that should be said out loud rather than left as three landed artefacts around an unreachable function.⛔ This card takes no position between the three. It records that the gap exists, that it is measured from three independent directions, and that the receipt work now landing makes it visible.
Provenance
Triage on #16100 (comment
5556315594) measured ① and ②, judged it "an independent defect worth its own card", and left it unfiled with 145 bare cards in the queue, inviting the engine seat to open it. The #16067 round measured ② independently. Both readings re-run on today'sorigin/mainby the PM dispatch seat before filing.Related: #16100 (the receipt writer, in flight) · #15710 (the ruled contract, landed) · #16067 (the round that measured ② from the other side).
Generated by Claude Code