refactor(maintenance): keep message as the announcement, updates as an independent timeline master
The branch mirrored the newest update into `maintenance.message`, which kept reads compatible but let any legacy writer (v1 PUT, RPC UpdateMaintenance, Terraform, the dashboard composer) overwrite the latest progress note. - `message` is the announcement again; `maintenance_update` rows are an optional 0..n timeline with `created_by`/`updated_by`. No sync helper, no initial update on create, no "at least one update" rule, no backfill. - Notifications split: `notifyMaintenance` (announcement, by maintenance id) and `notifyMaintenanceUpdate` (note, by update id); tRPC exposes both. Maintenance-update emails get their own idempotency key prefix. - Status JSON, feeds, Markdown and the UI block render the announcement followed by its notes. RPC/REST/CLI/Terraform shapes keep their meaning. - Migration 0092 regenerated; docs for the maintenance reference and MCP tools updated; tests rewritten for the new model.