# Non-task message legacy inventory

This inventory covers non-task message legacy and envelope shapes that must not
be used as active write surfaces. Task-owned rows such as `task_dispatch` and
`task_discussion` are tracked by the task migration plan and are intentionally
outside this inventory until task scope behavior stabilizes.

## Active write surfaces that stay closed

- `message_type = 'internal_automation'`: retired as a hidden transcript
  envelope and removed from retained data by migration.
- `message_type = 'internal_workflow'` and the matching runtime-only
  `workflow_command` handoff: closed as active write/delivery shapes. Workflow
  Run effects now create ordinary visible messages with native `workflow_run`
  contribution source facts. Callback authority is carried by typed
  `WorkflowContext` metadata.
- `message_type = 'system'` with `metadata.card.kind`: retired as a card
  extension point. New user-visible cards must use canonical message types and
  sidecar state instead of system-card metadata.
- Unknown non-task hidden or envelope message kinds: rejected by the semantics
  registry and append boundary until a canonical source/projection/delivery
  owner is defined.

## Migrated or deleted by upgrade

- Legacy `message_type = 'internal_automation'` rows are deleted from retained
  `scope_messages` data. Associated legacy message-source outbox rows are
  deleted at the same time, so old
  workflow-envelope payloads cannot replay after the message row is removed or
  after the message row was already missing but the old request-id outbox stayed
  behind.
- Legacy `system.card.kind = channel_share_card` rows are migrated to canonical
  `message_type = 'channel_share_card'` while preserving the message identity.
- Unsupported retired system-card rows are deleted from retained
  `scope_messages` rows during upgrade; affected scope visible summaries are
  rebuilt afterward.

## Closed compatibility surface

- No non-task message legacy descriptor remains for `internal_automation`
  storage rows. The retained rows and their old outbox jobs are deleted by
  migration. The retired `internal_workflow` / `workflow_command` handoff has no
  runtime constants or delivery path. Active Workflow Run delivery uses
  ordinary visible messages, a native `workflow_run` contribution source, and
  typed `WorkflowContext` callback metadata.
- No named `system.card.kind` read fallback remains. Retained system-card rows
  are migrated or deleted by upgrade, and the append gate rejects any new
  system-card metadata before it reaches `scope_messages`.
