Skip to content

ADR-0030 still prescribes migrateSysNotificationToEvent, a call the #16194 retirement removed — an operator copying step 2 gets an unresolvable import #17193

Description

@os-project-manager

What is wrong

docs/adr/0030-notification-platform-convergence.md carries a live operator prescription for a function that no longer exists:

docs/adr/0030-notification-platform-convergence.md:105
- Run `migrateSysNotificationToEvent` during the cut-over so historical bell rows
  carry over. **Sequence:** ship back-end → run migration → flip UI (runbook in the
  handoff doc).

migrateSysNotificationToEvent was removed from @objectstack/metadata/migrations by the #16194 retirement (director-seat ruling, decision batch #88, 2026-09-08). An operator following that line writes an import that does not resolve — a copy-the-example-and-it-fails defect, not a stylistic one.

A second occurrence, :80, is a historical record and is fine as it stands — the P0 — Seams table describes what was built under #1434, and it was built. Only :105 is addressed to someone about to act.

Why it is not fixed in the #16194 PR

Two independent reasons, both structural:

  1. docs/adr/** is a governed surface (Prime Directive feat: Comprehensive CRM example demonstrating all ObjectStack protocol features #14). One path hit makes a whole diff governed, and the directive's own remedy for that is to split the governed files into their own PR rather than drag an otherwise-ordinary change into hand-merge-only territory. The The adr-0030-notification-event migration has no operator path: no production caller and no os migrate sub-command, while its two sibling attested ids have both #16194 PR is already parked outside the queue awaiting a CONTRACT_REVIEW_TIER pass; adding a second, unrelated landing constraint to it helps nobody.
  2. Amending an ADR is a decision, not a tidy-up (Prime Directive [WIP] Add Chinese version of the documentation #13). The retirement ruling withdrew the migration; it did not say anything about ADR-0030's own status line. Whether :105 is struck, rewritten to say the step is gone, or left under an amended status line pointing at the retirement is a call for whoever owns that record.

The operator-facing half was fixed in the #16194 PR, because it is not governed: docs/handoff/adr-0030-notification-convergence.md — the runbook ADR-0030 itself defers to ("runbook in the handoff doc") — now carries a tombstone where its step 2 was, stating that pre-ADR-0030 sys_notification rows are not carried by the platform on this line, and naming the reversal path. So the doc an operator is actually sent to is correct today; this card is about the record that points at it.

Suggested shape of the fix

A docs-only PR touching docs/adr/0030-notification-platform-convergence.md alone, merged by hand:

Evidence

Measured on origin/main at fd5cff209f plus the #16194 branch head bb65e0f298:

  • git grep -n migrateSysNotificationToEvent -- docs/ returns docs/adr/0030-notification-platform-convergence.md:80, :105, and the handoff doc's tombstone line.
  • After the retirement, git grep -nE 'export [^;]*migrateSysNotificationToEvent' over the tree (excluding CHANGELOGs and release notes) returns zero — nothing re-exports it under any spelling. The same expression at the merge base returns the four declarations, so the probe fires.

Related: #16194 (the retirement) · #15710 (the receipt contract it withdrew) · #14025 (the id's registration).

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions