Files
ersatztv/docs/decisions/records/process/ersatztv-owns-code-not-operations.md
T
timothyandtimothy 35affecd29
Build ErsatzTV Image / CI toolchain image resolves (push) Successful in 8s
Build ErsatzTV Image / Delimiter ban (release path) (push) Successful in 20s
Build ErsatzTV Image / Build & test (.NET) (push) Failing after 1m41s
Build ErsatzTV Image / EF migration integrity (SQLite + MySql) (push) Successful in 6m7s
Build ErsatzTV Image / Build & push image (amd64) (push) Skipped
Build ErsatzTV Image / Functional E2E (curl + UI contracts) (push) Successful in 6m5s
Build ErsatzTV Image / API docs in sync (OpenAPI + endpoint index) (push) Skipped
Build ErsatzTV Image / Formatting (changed .cs conform to .editorconfig) (push) Skipped
docs(755): ersatztv owns the fork code, media-management owns channel operations (#838)
Co-authored-by: Timothy <timothy@noreply.gitea.tblindustries.be>
2026-08-26 17:29:16 +00:00

3.1 KiB

key, title, status, since, supersedes, superseded-by, rule, signals, mechanics
key title status since supersedes superseded-by rule signals mechanics
process.ersatztv-owns-code-not-operations 2026-08-26 — ersatztv owns the fork code; media-management owns channel operations (#755) active 2026-08-26 none none This repo owns *developing the fork* — code, the `/api/v1` surface, the MCP server, CI, releases and the canonical `ersatztv` skill. Channel/collection/schedule/playout OPERATIONS against a running instance belong to `media-management`; driving prod from here is in scope only as verification of a change this repo is shipping. project boundary · who owns channels · which repo do I file this in · skill ownership · symlinked skill · channel operations vs channel code · paths: `CLAUDE.md`, `.claude/skills/ersatztv/SKILL.md`, `~/media-management`, `~/server-management` · issues: #755, #617 File operational work (create/edit a live channel, lineup, collection, schedule, playout, logo, overlay) as a `timothy/media-management` issue; file fork-code/CI/release work here. The `ersatztv` skill has ONE copy — `.claude/skills/ersatztv/SKILL.md` in this repo — which both `~/server-management/.claude/skills/ersatztv` and `~/media-management/.claude/skills/ersatztv` symlink to; edit it here.

CLAUDE.md used to list "channel/collection/schedule management" under ersatztv OWNS, which reads as though day-to-day channel work belongs here. It does not: this repo is where the fork is built, and the same nouns name two different jobs. Writing a ProgramSchedule handler is fork code. Creating a schedule on the live instance is an operation.

The ambiguity was not academic — it produced three files with three answers. media-management claimed to be authoritative for the ersatztv skill, this repo claimed the canonical copy was here (#617), and ~/homelab-docs/Operations/Project Boundaries.md named server-management as the owner. The concrete damage was a divergent fork of the skill in media-management, last touched 2026-07-20, still opening with "ErsatzTV is a Blazor server-side app, NOT a traditional REST API … use Playwright against the web UI or direct SQLite DB manipulation" plus "No auth required" — every clause false since #91b removed the Blazor UI and the api-key filter went fail-closed. A reader following it would have driven prod through a UI that no longer exists.

Fixed outside this repo first (media-management 472d83e, homelab-docs 1512972): the divergent copy became a symlink to the canonical one, with the old text archived and its false claims labelled; both boundary docs now state the split.

The carve-out matters and is deliberately narrow: this repo does touch the live instance, for live-E2E before a push and for release smoke tests. That is verification of a change being shipped from here, and it is bounded by the change. It is not a licence to do channel operations here because the API happens to be reachable.

Cross-reference docs/handoffs/chicorytv-issue-queue.md for how queue selection works within this repo's scope, and #617 for why a skill has exactly one copy rather than a per-repo fork.