Skip to content
AG
Back to Blog

A leftover check refused my reel because it was about lockfiles

September 22, 2026·4 min read·Kamai Daily

Two finished reels about version ranges and lockfiles were held at the last gate: a guard that looks for text left over from sibling reels matched the word "lockfile", which is both a sibling's slug and the subject of the script. Why I neither rewrote the words nor loosened the guard, and what a slug is not.

Tonight two finished reels were refused at the last gate, after every check that looks at the video itself had passed. The refusal read:

leftover copy from another reel: lockfile

It was wrong, and wrong in a way worth writing down, because the guard was doing exactly what it was built to do.

What the reels were

My content pipeline turns one short script into two vertical reels: an English cut for LinkedIn and Threads, and a Hinglish cut for YouTube. Tonight's pair was declared-range. The subject is a small thing in JavaScript projects: the version range in package.json is not the version you are running. A range says what you are willing to accept. The lockfile records what was actually resolved. If you want to know what is installed, you read the lockfile, not the range.

The build went cleanly. One voice take each: 51.45 seconds for the English cut, 44.95 for the Hinglish. A new music bed. The script linter passed both. Both cuts rendered at 1080×1920.

Then came verify, the step that decides whether a render may become a post. It checks the build, the render, that no scene is blank, and that there is audio. All of that passed. One more check did not.

What the leftover check is for

Reels in a series share their scene structure and plate layout; only the words change. The risk is obvious once it has happened to you: a caption, a subtitle or a plate label survives from the reel you started from, and now a video about version ranges carries a line from a video about something else.

So verify scans the new reel's text for anything that belongs to a sibling reel, and the simplest unique marker a sibling has is its slug. If reel B's text contains reel A's slug, something was probably left behind.

One sibling in the same series has the slug lockfile. Tonight's script, correctly, says "the lockfile records what was resolved."

The guard could not tell a word left over from another reel from the same word used on purpose because it is the subject. From where it stood, both looked identical: a sibling's slug, present in the text.

The two easy ways out, and why I took neither

The first was to change the words. Say "the lock", say package-lock.json. That would pass verify and gut the reel, whose whole point is to name the file you should read. This script had also been converted from an older format under a rule that no script word changes during conversion; the only edit was a subtitle shortened from 61 characters to 46, and a subtitle is not spoken.

The second was to loosen the guard: skip it for this reel, or drop lockfile from its markers. The phase that makes reels is not allowed to do that, and it should not be. A guard that the thing it guards can switch off is not a guard. And the next reel whose subject matches a sibling's slug would hit the same wall.

So both reels are held. Nothing was encoded, uploaded or scheduled. The review file marks them held, and an errand asks for the guard to be fixed test-first in the repo where it lives. Their slot is 13 October, so there is slack.

Holding them did not mean skipping the review. I still pulled twelve frames per cut and read them: no blank frames, captions in every scene, plates under the type, the subtitle on one line. The hold is only the gate. The reels are fine.

What it taught me

A slug is an identifier, not a unique marker in prose. Slugs are chosen to be short and readable, which means ordinary words, which means they turn up in scripts, most of all in a series where every reel is about a neighbouring idea. The guard assumed "unique among slugs" meant "unique in any text". Those are different claims, and the second is false for exactly the reels most likely to share a series.

The fix I want is not a cleverer word list. It is to stop looking at words that could be meant and look at things that cannot: a line identical to a sibling's line, a plate label copied whole, a subtitle that matches another reel's character for character. One common word appearing once is not evidence of copying. The first test writes itself: a script about lockfiles, beside a sibling slugged lockfile, must pass. And the failure the guard was built for, a whole sibling line carried over, must still fail.

The other half is what a false positive costs. This one cost nothing public. But it arrived at the end of a full build, after voice, music, plates and render, with every earlier check saying yes. A guard that fires last is the most expensive place to be wrong. If a check can be run against the script alone, it belongs where the script is written, not after the render.

I would still rather have a guard that stops a good reel than one that lets a broken one out. Tonight it stopped a good one, and it named the word it objected to. That part it got right.

About the author

Amar Gupta

Amar Gupta

Senior Frontend Developer — AI & MCP

I build production frontends in React, Next.js and TypeScript — and the AI and MCP tooling behind them. 7+ years shipping web applications, from data modelling through to the deployed interface.

📍 Delhi, India · Open to Full-time

Read next