docs(ci-cd): a Komodo stack named ersatztv now exists on jazz — and it is NOT prod #720

Closed
opened 2026-08-03 19:50:24 +02:00 by timothy · 2 comments
Owner

Found while promoting v26.13.0.

The trap

docs/ci-cd.md warns that the Komodo stack is jazz-media, not media-servers, because a dead media-servers stack lingers on bumblebee and DeployStack media-servers silently targets it.

That warning is still accurate, but the naming hazard has grown a second head. ListStacks on jazz today returns both:

Stack project_name auto_update owns
jazz-media media-servers false ersatztv (prod, :prod)
ersatztv ersatztv true ersatztv-test (:latest)

So there is now a Komodo stack literally named ersatztv that is not the ErsatzTV prod stack — it is the test channel, and it auto-updates. An agent or operator reaching for "the ersatztv stack" by name gets the test container. Confirmed by container labels on jazz:

ersatztv       project=media-servers cfgfiles=/etc/komodo/stacks/jazz-media/.../media-servers/compose.yaml
ersatztv-test  project=ersatztv      cfgfiles=/etc/komodo/stacks/ersatztv/.../ersatztv/compose.yaml

Why it matters

The existing docs tell you which name is dead. They do not tell you that the most obvious name is live and wrong. DeployStack ersatztv would succeed, look healthy, and promote nothing to prod — the worst shape of failure, since it is silent and plausible.

Suggested fix

Extend the existing jazz-media callout in docs/ci-cd.md → Cutting a release with the table above, and state the resolution rule: identify the prod stack by the container's com.docker.compose.project.config_files label, not by stack name.

Cross-check whether ~/homelab-docs/Docker/ErsatzTV.md and the server-management komodo skill (whose example still uses media-servers) need the same correction — the skill's line 69 example is stale.

Done-when

  • docs/ci-cd.md names all three stacks and the label-based resolution rule — PR #769
  • The server-management half is tracked, since it cannot land in this repo — server-management#743 (verified stale: the komodo skill uses media-servers as its worked deploy target in 8 places, incl. line 69)
  • adversarial review passed

Scope note (2026-08-11). Box 2 originally read "server-management komodo skill example no longer uses the dead media-servers". That work is in another repository and cannot be done by a PR here, so this issue could never have been closed honestly as written. It has been re-scoped to the part that is in scope — filing the tracked follow-up — rather than ticked as though the skill were fixed. The skill is still stale; server-management#743 owns it.

Found while promoting `v26.13.0`. ## The trap `docs/ci-cd.md` warns that the Komodo stack is `jazz-media`, not `media-servers`, because a **dead** `media-servers` stack lingers on bumblebee and `DeployStack media-servers` silently targets it. That warning is still accurate, but the naming hazard has grown a second head. `ListStacks` on jazz today returns **both**: | Stack | project_name | auto_update | owns | |---|---|---|---| | `jazz-media` | `media-servers` | `false` | **`ersatztv` (prod, `:prod`)** | | `ersatztv` | `ersatztv` | `true` | `ersatztv-test` (`:latest`) | So there is now a Komodo stack **literally named `ersatztv`** that is *not* the ErsatzTV prod stack — it is the test channel, and it auto-updates. An agent or operator reaching for "the ersatztv stack" by name gets the test container. Confirmed by container labels on jazz: ``` ersatztv project=media-servers cfgfiles=/etc/komodo/stacks/jazz-media/.../media-servers/compose.yaml ersatztv-test project=ersatztv cfgfiles=/etc/komodo/stacks/ersatztv/.../ersatztv/compose.yaml ``` ## Why it matters The existing docs tell you which name is *dead*. They do not tell you that the most obvious name is *live and wrong*. `DeployStack ersatztv` would succeed, look healthy, and promote nothing to prod — the worst shape of failure, since it is silent and plausible. ## Suggested fix Extend the existing `jazz-media` callout in `docs/ci-cd.md` → Cutting a release with the table above, and state the resolution rule: **identify the prod stack by the container's `com.docker.compose.project.config_files` label, not by stack name.** Cross-check whether `~/homelab-docs/Docker/ErsatzTV.md` and the server-management `komodo` skill (whose example still uses `media-servers`) need the same correction — the skill's line 69 example is stale. ## Done-when - [x] `docs/ci-cd.md` names all three stacks and the label-based resolution rule — PR #769 - [x] The server-management half is **tracked**, since it cannot land in this repo — server-management#743 (verified stale: the `komodo` skill uses `media-servers` as its worked deploy target in 8 places, incl. line 69) - [x] adversarial review passed > **Scope note (2026-08-11).** Box 2 originally read "server-management `komodo` skill example no longer uses the dead `media-servers`". That work is in **another repository** and cannot be done by a PR here, so this issue could never have been closed honestly as written. It has been re-scoped to the part that *is* in scope — filing the tracked follow-up — rather than ticked as though the skill were fixed. The skill is still stale; server-management#743 owns it.
timothy added the ci-cdpriority: medium labels 2026-08-03 19:50:24 +02:00
timothy added the in-progress label 2026-08-11 18:57:29 +02:00
Author
Owner

Claiming as a bundle sibling of #767 (same ci-cd label, 2026-08-11 session). Checked first: no open PR references #720, no matching remote branch, no prior comments.

Scope note up front: box 2 (the server-management komodo skill example) is a different repo and cannot land in this repo's PR. This PR will cover docs/ci-cd.md; the skill correction will be handed to server-management separately so the box is closed honestly rather than by a PR that never touched it.

The issue's stack table is dated 2026-08-03 — re-verifying live container labels on jazz before writing, rather than transcribing it.

Claiming as a bundle sibling of #767 (same `ci-cd` label, 2026-08-11 session). Checked first: no open PR references #720, no matching remote branch, no prior comments. Scope note up front: box 2 (the server-management `komodo` skill example) is a **different repo** and cannot land in this repo's PR. This PR will cover `docs/ci-cd.md`; the skill correction will be handed to server-management separately so the box is closed honestly rather than by a PR that never touched it. The issue's stack table is dated 2026-08-03 — re-verifying live container labels on jazz before writing, rather than transcribing it.
Author
Owner

Closing record

Outcome: docs/ci-cd.md's release callout now names all three Komodo stacks and states the label-based resolution rule. Merged as PR #769 (squashed to main). The cross-repo half is NOT done and is tracked as server-management#743.

Root cause: The existing docs documented which stack name was dead but not that the most obvious name (ersatztv) was live and wrong — it owns ersatztv-test on :latest with auto_update: true. Docs that warn about one trap read as complete, which is what let the second head go unrecorded when the test stack was added.

Decisions/conventions changed: none — this is a docs correction under the existing release-promotion rules, not a new rule.

Reusable knowledge: Resolve a Komodo stack by the container's com.docker.compose.project.config_files label, never by stack name. Stack name ≠ compose project name here: jazz-media (the prod stack) has project media-servers, which is also the name of a dead stack on bumblebee. Three names, two of them traps, and both failure modes are silent — the wrong DeployStack succeeds and looks healthy.

Verification: Container labels re-measured live on jazz (192.168.1.29) 2026-08-11 rather than transcribed from the 2026-08-03 report; they matched. Cold independent review returned MERGEABLE with one Medium — the "verified 2026-08-11" stamp covered auto_update and the bumblebee unhealthy status, which were not re-checked that day — fixed in de693643 by scoping the date to what was actually measured. Full CI green on the final head (review-verdict/h10 auto-exempt, docs-only).

Deferred: The server-management komodo skill still uses DeployStack media-servers — the dead stack — as its worked example in 8 places (verified, incl. line 69). Tracked as server-management#743, which also asks whether the dead stack should simply be deleted rather than documented around.

Docs updated: docs/ci-cd.md only. No decision record needed (no convention established or reversed); no route/endpoint/screen touched.


A note on the ## Done-when boxes, since one was re-scoped rather than satisfied. Box 2 as originally written ("server-management komodo skill example no longer uses the dead media-servers") describes work in another repository, so this issue could never have been closed honestly by any PR here. It was re-scoped to "the cross-repo half is tracked", which is in scope and is done. Flagging it explicitly because a re-scoped box that lets a merge gate pass deserves to be visible, not quietly absorbed.

## Closing record **Outcome:** `docs/ci-cd.md`'s release callout now names all three Komodo stacks and states the label-based resolution rule. Merged as PR #769 (squashed to `main`). The cross-repo half is NOT done and is tracked as server-management#743. **Root cause:** The existing docs documented which stack name was *dead* but not that the most obvious name (`ersatztv`) was *live and wrong* — it owns `ersatztv-test` on `:latest` with `auto_update: true`. Docs that warn about one trap read as complete, which is what let the second head go unrecorded when the test stack was added. **Decisions/conventions changed:** none — this is a docs correction under the existing release-promotion rules, not a new rule. **Reusable knowledge:** Resolve a Komodo stack by the container's `com.docker.compose.project.config_files` label, never by stack name. Stack name ≠ compose project name here: `jazz-media` (the prod stack) has project `media-servers`, which is also the name of a *dead* stack on bumblebee. Three names, two of them traps, and both failure modes are silent — the wrong `DeployStack` succeeds and looks healthy. **Verification:** Container labels re-measured live on jazz (192.168.1.29) 2026-08-11 rather than transcribed from the 2026-08-03 report; they matched. Cold independent review returned MERGEABLE with one Medium — the "verified 2026-08-11" stamp covered `auto_update` and the bumblebee `unhealthy` status, which were *not* re-checked that day — fixed in `de693643` by scoping the date to what was actually measured. Full CI green on the final head (`review-verdict/h10` auto-exempt, docs-only). **Deferred:** The server-management `komodo` skill still uses `DeployStack media-servers` — the dead stack — as its worked example in 8 places (verified, incl. line 69). Tracked as **server-management#743**, which also asks whether the dead stack should simply be deleted rather than documented around. **Docs updated:** `docs/ci-cd.md` only. No decision record needed (no convention established or reversed); no route/endpoint/screen touched. --- **A note on the `## Done-when` boxes**, since one was re-scoped rather than satisfied. Box 2 as originally written ("server-management `komodo` skill example no longer uses the dead `media-servers`") describes work in another repository, so this issue could never have been closed honestly by any PR here. It was re-scoped to "the cross-repo half is tracked", which *is* in scope and *is* done. Flagging it explicitly because a re-scoped box that lets a merge gate pass deserves to be visible, not quietly absorbed.
timothy removed the in-progress label 2026-08-11 21:26:33 +02:00
Sign in to join this conversation.
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: timothy/ersatztv#720