cd /news/developer-tools/naming-lies-and-frozen-tails · home topics developer-tools article
[ARTICLE · art-62096] src=dev.to ↗ pub= topic=developer-tools verified=true sentiment=· neutral

Naming Lies and Frozen Tails

Glad Labs shipped several fixes on 2026-07-16, including renaming a misleading model resolver function to prevent accidental cloud billing, implementing a fallback ladder for video renders to ensure shot completion, and fixing a 'frozen tail' bug in short-form videos by rescaling scenes to match TTS duration. The team also improved backup alerting after discovering that restic prune does not free B2 capacity without a version-expiry rule, and added deep observability to the two-pass writer path for prompt-size metrics.

read2 min views1 publishedJul 16, 2026

What we shipped on 2026-07-16 We caught a "Sonnet-canary leak" today that serves as a stark reminder of how dangerous misnomers are in an LLM pipeline. We had pinned pipeline_writer_model

to a paid model for a blog-writer experiment, but our satellite phases--things like self_consistency_rail

and narrate_bundle

--were silently billing at cloud rates (PR #2634). The culprit was a function called resolve_local_model

which, despite its name, returned the writer pin verbatim. We've since renamed it to resolve_writer_model

to stop lying to ourselves (PR #2638) and migrated those satellite phases over to a new, guaranteed-local resolver: resolve_local_writer_model

(PR #2636). The video renderer also needed some discipline. A 30-day audit of our canonical blog videos revealed that long-form renders were averaging ~171s against a 253s plan because the system was silently dropping any shot that failed to render (PR #2633). We implemented a "never-drop-a-shot fallback ladder" via _backfill_pass

in shot_list_renderer.py

. Now, if a primary source fails, it attempts a cross-family substitute before finally falling back to a guaranteed branded card--ensuring the video length actually matches the plan.

We also killed the "frozen tail" bug affecting our 9:16 short-form videos (PR #2637). The visuals and narration were being sized independently, leading to cases where the script ran long and the compositor simply cloned the final frame to fill the gap. We fixed this by introducing narration_fit

in render_shot_list

, which uses _fit_scene_durations

to proportionally rescale scenes to match the real TTS duration.

On the ops side, we closed out the follow-ups from our B2 storage-cap incident (PR #2635). We learned the hard way that restic forget --prune

doesn't actually free billed capacity on B2 without a version-expiry lifecycle rule. We've updated the reclaim runbook and improved our alerting so that offsite_backup_failed

now includes the actual restic stderr instead of just a return code.

Finally, we added deep observability to the two-pass writer path (atoms.two_pass_writer

) (PR #2639). We're now capturing per-call prompt-size metrics broken down by context section--RAG snippets, research, dev_diary bundles, and internal-grounding anchors--surfacing them as a new "Writer Context Size" row on the Pipeline dashboard.

We're finally seeing the gap close between what the architect plans and what actually renders. From here, we can start tuning the prompt sizes now that we actually have the telemetry to see where the bloat is.

Auto-compiled by Poindexter from today's commits and PRs. See the work: github.com/Glad-Labs/poindexter.

── more in #developer-tools 4 stories · sorted by recency
── more on @glad labs 3 stories trending now
sponsored brought to you by zahid.host 4,200+ EU-deployed projects
reading about agents? ship yours in a single git push.

Run your AI side-project on zahid.host

EU-based hosting, git-push deploys, automatic HTTPS, no cold starts. Free tier with a custom domain — perfect for shipping the agent you just read about.

$git push zahid main
Live at https://your-agent.zahid.host
Get free account → Pricing
from €0/mo · no card required
LIVE [news/naming-lies-and-froz…] indexed:0 read:2min 2026-07-16 ·