docs(720): name all three Komodo stacks and the label-based resolution rule #769

Merged
timothy merged 2 commits from docs/720-komodo-stack-naming into main 2026-08-11 21:26:08 +02:00
Owner

fixes #720

The existing docs/ci-cd.md callout tells you which stack name is dead (media-servers). It did not tell you that the most obvious name is live and wrong: a Komodo stack literally named ersatztv owns ersatztv-test, tracks :latest, and auto-updates. DeployStack ersatztv succeeds, looks healthy, and promotes nothing to prod — silent and plausible, the worst shape.

This extends (does not replace) the existing callout with all three names and the resolution rule: identify the prod stack by the container's com.docker.compose.project.config_files label, not by stack name.

Verification. The issue's table was dated 2026-08-03, so it was re-measured live against jazz (192.168.1.29) on 2026-08-11 rather than transcribed. It matched:

== ersatztv       media-servers  /etc/komodo/stacks/jazz-media/.../media-servers/compose.yaml  …/ersatztv:prod
== ersatztv-test  ersatztv       /etc/komodo/stacks/ersatztv/.../ersatztv/compose.yaml         …/ersatztv:latest

Scope note — one ## Done-when box is deliberately not closed by this PR. Box 2 ("server-management komodo skill example no longer uses the dead media-servers") is in a different repository and cannot land here. It is handed over rather than quietly ticked; see the issue comment. Docs-only, so exempt from the review-verdict gate.

fixes #720 The existing `docs/ci-cd.md` callout tells you which stack name is **dead** (`media-servers`). It did not tell you that the most obvious name is **live and wrong**: a Komodo stack literally named `ersatztv` owns `ersatztv-test`, tracks `:latest`, and auto-updates. `DeployStack ersatztv` succeeds, looks healthy, and promotes nothing to prod — silent and plausible, the worst shape. This extends (does not replace) the existing callout with all three names and the resolution rule: **identify the prod stack by the container's `com.docker.compose.project.config_files` label, not by stack name.** **Verification.** The issue's table was dated 2026-08-03, so it was re-measured live against jazz (192.168.1.29) on 2026-08-11 rather than transcribed. It matched: ``` == ersatztv media-servers /etc/komodo/stacks/jazz-media/.../media-servers/compose.yaml …/ersatztv:prod == ersatztv-test ersatztv /etc/komodo/stacks/ersatztv/.../ersatztv/compose.yaml …/ersatztv:latest ``` **Scope note — one `## Done-when` box is deliberately not closed by this PR.** Box 2 ("server-management `komodo` skill example no longer uses the dead `media-servers`") is in a **different repository** and cannot land here. It is handed over rather than quietly ticked; see the issue comment. Docs-only, so exempt from the review-verdict gate.
timothy added 1 commit 2026-08-11 19:10:34 +02:00
docs(720): name all three Komodo stacks and the label-based resolution rule
PR Gates / CI image pin matches docker/ci (pull_request) Successful in 26s
PR Gates / decisions lifecycle (pull_request) Successful in 33s
PR Gates / Docs update reminder (pull_request) Successful in 31s
review-verdict/h10 Exempt: docs-only change (no code, no protected path)
Review verdict / Set review-verdict status (pull_request_target) Successful in 10s
PR Gates / Script tests (pytest) (pull_request) Successful in 2m31s
Build ErsatzTV Image / Build & test (.NET) (pull_request) Successful in 12s
Build ErsatzTV Image / EF migration integrity (SQLite + MySql) (pull_request) Successful in 10s
Build ErsatzTV Image / Build & push image (amd64) (pull_request) Skipped
Build ErsatzTV Image / Functional E2E (curl + UI contracts) (pull_request) Successful in 10s
Build ErsatzTV Image / API docs in sync (OpenAPI + endpoint index) (pull_request) Successful in 10s
Build ErsatzTV Image / Formatting (changed .cs conform to .editorconfig) (pull_request) Successful in 7s
d9c80e2a49
A live Komodo stack literally named `ersatztv` exists, but it owns the
TEST channel (`ersatztv-test`, tracks `:latest`, auto_update true) — not
prod. `DeployStack ersatztv` succeeds and looks healthy while promoting
nothing. Extend the existing jazz-media/media-servers callout with this
third stack and the rule that resolves the trap: identify the prod stack
by the container's `com.docker.compose.project.config_files` label, not
by stack name. Verified live against jazz (192.168.1.29) on 2026-08-11.

fixes #720
timothy added 1 commit 2026-08-11 21:19:42 +02:00
docs(720): scope the verification date to what was actually re-measured
Build ErsatzTV Image / Build & test (.NET) (pull_request) Successful in 15s
PR Gates / CI image pin matches docker/ci (pull_request) Successful in 11s
PR Gates / Docs update reminder (pull_request) Successful in 18s
PR Gates / decisions lifecycle (pull_request) Successful in 21s
Build ErsatzTV Image / EF migration integrity (SQLite + MySql) (pull_request) Successful in 13s
Build ErsatzTV Image / Build & push image (amd64) (pull_request) Skipped
review-verdict/h10 Exempt: docs-only change (no code, no protected path)
Review verdict / Set review-verdict status (pull_request_target) Successful in 17s
Build ErsatzTV Image / Functional E2E (curl + UI contracts) (pull_request) Successful in 10s
Build ErsatzTV Image / API docs in sync (OpenAPI + endpoint index) (pull_request) Successful in 10s
Build ErsatzTV Image / Formatting (changed .cs conform to .editorconfig) (pull_request) Successful in 7s
PR Gates / Script tests (pytest) (pull_request) Successful in 2m17s
de69364376
Cold review: the "(verified 2026-08-11)" stamp sat on a paragraph whose
auto_update flags and bumblebee-unhealthy status were NOT re-checked that
day — only the container labels (stack name, compose project, config_files
path, image tag) were. A freshness claim that covers more than was measured
is the shape that later reads as a checked fact and talks the next reader
out of verifying.

Refs: #720
timothy merged commit f9f8f65cee into main 2026-08-11 21:26:08 +02:00
timothy deleted branch docs/720-komodo-stack-naming 2026-08-11 21:26:09 +02:00
Sign in to join this conversation.