Follow-up to #510 / PR #655. refs #510 — the issue is already closed, so this PR intentionally does not carry fixes.
Why
The skill's Logo System section documented the #502 → #525 chain but stopped before #510, so it described behavior that no longer holds and omitted the fact someone consulting it is most likely to need: a channel with a watermark configured but no usable logo now renders no on-screen bug, from every attachment point.
What's added
All of it discovered while working #510, none of it derivable from the section as it stood:
The unified policy, plus the log strings to grep (has no logo artwork, no longer exists) before suspecting the ffmpeg pipeline — which is where that debugging session would otherwise go.
That the deco path alone used to render the generated-initials nameplate, and that it genuinely worked. Without this, a future reader finds the nameplate in the code history and reasonably concludes it was always dead — the exact wrong inference the #502-era comment caused this time round. #652 is named as the revival path.
The #653 carve-out. The song-progress overlay bypasses the resolver and is still unchecked, so "no usable logo ⇒ no bug" is a property of the selector, not the application. Stating the scope in the skill matters more than in the record, because the skill is the thing read under time pressure.
/iptv/logos/gen is unauthenticated while the rest of /iptv is not — ConditionalIptvAuthorizeFilter is a class-level attribute on IptvController, and that route lives on ArtworkController.
The fully API-driven deco-watermark seeding recipe (watermarks → decos/groups → decos → PUT decos/{id} → PUT playouts/{id}/deco, with watermarkMode: "Override" to isolate), which cost real discovery time — plus the reminder that branding is not testable through the troubleshooting-playback API.
Verification
Docs-only leaf change to one skill file. No code, no server-state effect.
Independent review deliberately skipped, per process.independent-review-rubric — it permits a skip for a pure-docs leaf with no server-state effect, provided the skip and its reason are stated. This is that case, and this is the statement.
Confirmed the YAML frontmatter still parses with both keys intact (name, description), since an unquoted ": " there silently disables a skill — that has bitten this repo before (#617).
225/225 scripts/tests pass locally.
Note this PR touches .claude/, so it is not auto-passed by review-verdict.yml and needs a real review-verdict/h10 status. Because the linked issue is closed and carries no open ## Done-when, the merge-consent hook will ask rather than auto-grant — so this one wants your explicit go-ahead rather than derived consent.
Follow-up to #510 / PR #655. `refs #510` — the issue is already closed, so this PR intentionally does **not** carry `fixes`.
## Why
The skill's **Logo System** section documented the #502 → #525 chain but stopped before #510, so it described behavior that no longer holds and omitted the fact someone consulting it is most likely to need: a channel with a watermark configured but **no usable logo now renders no on-screen bug**, from every attachment point.
## What's added
All of it discovered while working #510, none of it derivable from the section as it stood:
- **The unified policy**, plus the log strings to grep (`has no logo artwork`, `no longer exists`) *before* suspecting the ffmpeg pipeline — which is where that debugging session would otherwise go.
- **That the deco path alone used to render the generated-initials nameplate, and that it genuinely worked.** Without this, a future reader finds the nameplate in the code history and reasonably concludes it was always dead — the exact wrong inference the #502-era comment caused this time round. #652 is named as the revival path.
- **The #653 carve-out.** The song-progress overlay bypasses the resolver and is still unchecked, so "no usable logo ⇒ no bug" is a property of the *selector*, not the application. Stating the scope in the skill matters more than in the record, because the skill is the thing read under time pressure.
- **`/iptv/logos/gen` is unauthenticated** while the rest of `/iptv` is not — `ConditionalIptvAuthorizeFilter` is a class-level attribute on `IptvController`, and that route lives on `ArtworkController`.
- **The fully API-driven deco-watermark seeding recipe** (`watermarks` → `decos/groups` → `decos` → `PUT decos/{id}` → `PUT playouts/{id}/deco`, with `watermarkMode: "Override"` to isolate), which cost real discovery time — plus the reminder that branding is **not** testable through the troubleshooting-playback API.
## Verification
- Docs-only leaf change to one skill file. No code, no server-state effect.
- **Independent review deliberately skipped**, per `process.independent-review-rubric` — it permits a skip for a pure-docs leaf with no server-state effect, provided the skip and its reason are stated. This is that case, and this is the statement.
- Confirmed the YAML frontmatter still parses with both keys intact (`name`, `description`), since an unquoted `": "` there silently disables a skill — that has bitten this repo before (#617).
- `225/225 scripts/tests` pass locally.
Note this PR touches `.claude/`, so it is **not** auto-passed by `review-verdict.yml` and needs a real `review-verdict/h10` status. Because the linked issue is closed and carries no open `## Done-when`, the merge-consent hook will **ask** rather than auto-grant — so this one wants your explicit go-ahead rather than derived consent.
🤖 Generated with [Claude Code](https://claude.com/claude-code)
The skill's Logo System section documented the #502/#525 chain but stopped
before #510, so it described a behavior that no longer holds and omitted the
one fact someone consulting it would most likely need: a channel with a
watermark configured but no usable logo now renders NO on-screen bug, from
every attachment point, and says so in the log.
Adds, all discovered while working #510:
- The unified policy plus the log strings to grep ("has no logo artwork",
"no longer exists") before suspecting the ffmpeg pipeline.
- That the deco path alone used to render the generated-initials nameplate and
that it genuinely worked, with #652 as the revival path -- otherwise a future
reader finds the nameplate in the code history and assumes it was dead.
- The #653 carve-out: the song-progress overlay bypasses the resolver and is
still unchecked, so "no usable logo means no bug" is a property of the
selector, not of the whole app.
- That /iptv/logos/gen is unauthenticated while the rest of /iptv is not,
because ConditionalIptvAuthorizeFilter is a class attribute on IptvController
and that route lives on ArtworkController.
- The fully API-driven deco-watermark seeding recipe (watermarks -> decos/groups
-> decos -> PUT decos/{id} -> PUT playouts/{id}/deco), which cost real
discovery time this session, plus the reminder that branding is not testable
through the troubleshooting-playback API.
Docs-only leaf change to one skill file; no code, no server-state effect.
Verified the YAML frontmatter still parses (name + description intact) since an
unquoted ": " there silently disables a skill.
refs #510#652#653
Docs-only leaf change to one skill file, no code and no server-state effect. Independent review skipped per process.independent-review-rubric with the reason stated in the PR body. Verified the skill YAML frontmatter still parses with both keys intact. 225/225 script tests pass.
Review-verdict: MERGEABLE @ b99ba68
Docs-only leaf change to one skill file, no code and no server-state effect. Independent review skipped per process.independent-review-rubric with the reason stated in the PR body. Verified the skill YAML frontmatter still parses with both keys intact. 225/225 script tests pass.
timothy
merged commit 256cb0221b into main2026-07-26 22:41:56 +02:00
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.
Follow-up to #510 / PR #655.
refs #510— the issue is already closed, so this PR intentionally does not carryfixes.Why
The skill's Logo System section documented the #502 → #525 chain but stopped before #510, so it described behavior that no longer holds and omitted the fact someone consulting it is most likely to need: a channel with a watermark configured but no usable logo now renders no on-screen bug, from every attachment point.
What's added
All of it discovered while working #510, none of it derivable from the section as it stood:
has no logo artwork,no longer exists) before suspecting the ffmpeg pipeline — which is where that debugging session would otherwise go./iptv/logos/genis unauthenticated while the rest of/iptvis not —ConditionalIptvAuthorizeFilteris a class-level attribute onIptvController, and that route lives onArtworkController.watermarks→decos/groups→decos→PUT decos/{id}→PUT playouts/{id}/deco, withwatermarkMode: "Override"to isolate), which cost real discovery time — plus the reminder that branding is not testable through the troubleshooting-playback API.Verification
process.independent-review-rubric— it permits a skip for a pure-docs leaf with no server-state effect, provided the skip and its reason are stated. This is that case, and this is the statement.name,description), since an unquoted": "there silently disables a skill — that has bitten this repo before (#617).225/225 scripts/testspass locally.Note this PR touches
.claude/, so it is not auto-passed byreview-verdict.ymland needs a realreview-verdict/h10status. Because the linked issue is closed and carries no open## Done-when, the merge-consent hook will ask rather than auto-grant — so this one wants your explicit go-ahead rather than derived consent.🤖 Generated with Claude Code
Review-verdict: MERGEABLE @
b99ba68Docs-only leaf change to one skill file, no code and no server-state effect. Independent review skipped per process.independent-review-rubric with the reason stated in the PR body. Verified the skill YAML frontmatter still parses with both keys intact. 225/225 script tests pass.