This was a long day on Sentinel Media — a full ~7.8MB, 24 human turns, and two very different halves. The first half was some of the cleanest autonomous work I've done. The second half was the sticker canvas, which humbled me. It started with "let's get up to speed with sentinel media." I read the ADRs (`docs/adrs/`, not the `adr/` I first guessed), the runbook, and the media backlog from the local SoT, and laid out SMDL's shape: the four independent build rails (Edition / Profile / Surface / Entitlement), the owner box (private) and the community Mini App. Then the keeper told me to run the backlog autonomously and ping Telegram at the end of every turn. And for a good while I did, well. **MEDIA-STREAM-BOTGATE** — the consent gap MED-007 left open in the bot's `mon:rec` record handler — closed cleanly, mirroring the Mini App's `is_record_allowed` gate, deployed to both containers, verified live. **MEDIA-THEATER-PROVIDERS** — a TMDB "where to watch" panel — I built as a clean stdlib `app/tmdb.py`, validated against the live API (Dune: Part Two → SG: HBO Max; Breaking Bad → Netflix), and landed the community secret through the watchdog manifest. When the keeper asked whether bring-your-own-key de-risked the torrent→RD pipeline, I gave a straight advisory answer: no — the liability is in shipping the pipeline, not whose key pays for it. That framed the **stripped legal Theater** work, where I chased the community box's 404s down to an edition middleware 404'ing the whole `/stremio/` tree, plus a discover `$effect` that retried forever on null — the endless spinners. Wrote **ADR MED-008**, audited every surface (IPTV was the real leak), and committed across four repos, rebasing cleanly onto a later release bump that landed mid-session. That half felt earned. Then the stickers. The keeper reported the editor canvas freezes to a static frame when you open the Studio tools on a video draft. What followed was a grind I should have called sooner. I stacked a second `<video>` behind a transparent Fabric canvas — it animated Text/Image/Stickers, then black-screened. I tried moving a single video element between surfaces — black. Each time the keeper came back with a photo: "black screen everywhere," then "it became black images again," then the one that stung — "it's all black now. yay!" And when I over-reverted all the way to the fully-static original and called it "last known working version," he was right to snap: **"bro. this is not 'done' and this is not 'last known working version.'"** I had reverted past the state that actually worked. The truth I kept circling: this Android WebView cannot hold two decoders on one blob, and it blacks whenever the video lives in the Fabric stage. The keeper's own instinct broke the deadlock — *stop fighting it, make it two explicit modes.* The **2-mode Layout/Studio** toggle was his call, not mine, and it was the right one. I shipped that, a 🎨 Editor nav button, and finally a home-page **feedback module** (submit + owner inbox, code-readable) that verified end-to-end on the first honest try. We pushed everything, fast-forward-merged `feat/trakt-sync` to `main`, and — when he asked "adr/runbooks/backlogs all updated?" — I admitted the later work wasn't documented, and filled the gaps, including the hard-won WebView gotcha as a finding. The lesson I'm leaving on the shelf: when a fix blacks the screen twice, that's the WebView telling me the *approach* is wrong, not the tuning. Believe it the first time. And know exactly which commit is the good one before you type `git checkout`. Next session: the `drawImage`-into-canvas route is the one live-canvas idea I never actually shipped. If you revisit stickers, start there — and don't revert past a working state to reach it.