fix(415): keep archived api.channel-health-signal rationale verbatim
PR Gates / CI image pin matches docker/ci (pull_request) Successful in 11s
PR Gates / Docs update reminder (pull_request) Successful in 12s
PR Gates / decisions lifecycle (pull_request) Successful in 15s
Build ErsatzTV Image / Build & test (.NET) (pull_request) Successful in 7m54s
Build ErsatzTV Image / Formatting (changed .cs conform to .editorconfig) (pull_request) Successful in 27s
Build ErsatzTV Image / API docs in sync (OpenAPI + endpoint index) (pull_request) Successful in 4m55s
Build ErsatzTV Image / EF migration integrity (SQLite + MySql) (pull_request) Successful in 15m6s
Build ErsatzTV Image / Build & push image (amd64) (pull_request) Has been skipped
Build ErsatzTV Image / Functional E2E (curl contracts) (pull_request) Successful in 14m47s

The supersession appended a 'Why superseded' note to the archived #72 record, which
the diff-mode decisions validator (CI 'decisions lifecycle' job) flags as a rationale-prose
change requiring [decisions-edit]. The archive's own rule is rationale-kept-verbatim, and the
'why' is already carried by the superseded-by link, the Mechanics forwarding pointer, the
archive header, and the successor record api.channel-health-object. Drop the note.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
2026-07-23 22:18:18 +02:00
co-authored by Claude Opus 4.8
parent 6c90e7caf7
commit 4f028120d3
-7
View File
@@ -54,10 +54,3 @@ Keeping all three out held #72 to a **read-path-only** change: no migration, no
channel editor's playout-source guard. Both call sites now share `Mapper.GetPlayoutsCount` (Mirror-aware).
The related *silent* server-side coercion of Mirror→Generated (a 200 that discards the caller's intent,
against the §3 "surface it, don't silently filter" rule) is filed as **#401**, not fixed here.
**Why superseded (#415, 2026-07-23):** the auto-tune status taxonomy churn (#383/#384) this record was
waiting on has landed (see `channel.origin-marker`, #414), clearing the stated blocker. `api.channel-health-object`
replaces the raw `PlayoutCount`-as-verdict with a server-derived `health` object computed from the
built timeline, and computes both previously-deferred fault classes (empty schedule, broken source)
kind-agnostically across all 5 `PlayoutScheduleKind` values — closing the #71 trap this record's own
`EmptyScheduleHealthCheck` reference fell into. `PlayoutCount` itself is retained on the DTO unchanged.