Uh oh!
There was an error while loading. Please reload this page.
feature: branded highlight outro (orchestration) - #315
Conversation
Code + security review (multi-agent), addressedIndependent code review (Sonnet) and security review (Opus). Security review: Ship (no Critical/High)The trust boundary holds: no path injection ( Code review, fixed
Non-blocking follow-ups
|
e3c8251 to
1c7651fCompareFlegma
commented
Jul 10, 2026
Rebased onto current main ( Since this branch was cut, main touched the same files five times (highlight settings #325, stream security #327, game-server mono repo #343, demo improvements #346, playback perf #349), so this was worth re-checking rather than trusting a textually clean merge:
|
Part 2 of 2:
api(merge AFTER the game-streamer PR). Renderer: thefeature/branded-outroPR in5stackgg/game-streamer. Full design, both PRs, and merge order: 5stackgg/5stack-panel#514.What
The orchestration half of the branded highlight outro: the api decides the outro cache hit/miss per render and passes branding env to the game-streamer render pod. The renderer PR consumes that env.
Changes
src/matches/game-streamer/outro-branding.ts(new): pure helpers.computeOutroVersion=sha1(brandName|accent|logoEtag).slice(0,12),outroCacheKey=branding/outro_<version>_<dims>_<fps>.mp4,buildOutroEnv.outro-branding.spec.tshas 6 unit tests.game-streamer.service.ts: injectsS3Service;resolveOutroBranding(dims, fps):public.logo_url) is set;public.color_dark_tactical_amber, thenpublic.color_tactical_amber, then default33 94% 58%;{}(which means baked stock outro) when no logo is set or on any error, so it never breaks a render.Wired into the batch-highlights pod env (pod-level) and the
dispatchClipRenderToPodpayload.src/matches/clips/clips.service.ts: passesoutro_envin the on-demand dispatch payload.No DB migration, no
webchange (reuses the existing branding settings).Env contract (shared with the renderer PR)
Same six keys:
CLIP_OUTRO_URL(hit), orCLIP_OUTRO_RENDER=1+CLIP_OUTRO_PUT_URL+CLIP_BRAND_LOGO_URL+CLIP_BRAND_NAME+CLIP_BRAND_ACCENT(miss).Merge order
Merge AFTER the
game-streamerPR (which must ship:latestfirst). Safe either way thanks to the stock fallback, but the renderer must be updated before the api turns the feature on.Verification
jest6/6 on the pure helpers; changed filestsc --noEmitclean (pre-existing project tsc errors, e.g.sharp, are unrelated).S3Servicesignatures, DI wiring, failure isolation, the exact env-name contract, and dims/fps consistency between the batch and on-demand paths. Ready to merge, no Critical/Important findings.Non-blocking follow-ups
Promise.all) on the cold path.{}, hit/miss env, stat-throws degrades). The pure helpers are tested; the orchestration was verified by review.