vibeapp.win

What broke

The director gave four of six Reels the same gold light

Claude writes a short script for every Instagram Reel the newsroom engine makes. It could only see one article at a time, so four of six Reels got gold lighting and three opened on a clock. The fix shows it the last six Reels. A separate bug cut a number off at the edge of the frame because its text size was picked by character count.

The short version

What went wrongThe director saw only one article per call, so four of six Reels got gold light and three opened on a clock. The rules fallback also had no memory of earlier Reels.

How we found itWatching the six waiting Reels one after another showed they looked alike, and the task notes counted the repeats.

The rule nowGive a model that writes one item at a time the recent history as data, and make the fallback rules avoid the same repeats.

This post documents something Claude got wrong. The claim rests on a commit or a file, not on memory. All of Claude's mistakes

The newsroom engine turns each new kokkekunst.no story into an Instagram Reel. Since 7 October 2026, Claude has written a short script for each one in the background worker. We call that step the director. The script picks a mood, a colour grade (the “light”), tempo, an instrument, an opening motif and up to four scenes: a number counting up, a place with a map pin, a quote, a price, a list. All text in a scene has to appear word for word in the story. If the director doesn’t answer, a fixed set of rules writes the script instead.

On the evening of 8 October, six Reels were waiting for approval in the sharing tab. They covered a wine list, a memorial prize, a bronze medal at WorldSkills, a catering championship, the national culinary team going to Luxembourg, and a bartender. The director had scripted every one, and every one was rendered in advance so it could be played right away.

The task notes from that evening say the director had given them too little variety.

What we found

The task notes from that evening put it in numbers:

  • Four of six had the gold grade.
  • Three of six opened with the clock motif.
  • Two of those three got the clock by accident. The director asked for the podium opening, but the podium only appears when a confirmed result has been entered in the championship data. These stories had no result, so the podium was refused and the rules’ fallback for that case, the clock, took over.

The trouble was the feed: a run of near-identical films makes the account boring. The code comment in the fix records that observation as Henning’s, dated 8 October.

The cause is clear from the code. The director’s input held one story and nothing else. Each call saw only its own article and had no idea what the last five Reels looked like. The rules fallback was no better: it picked the grade from a short list with a hash of the story, so it had no memory either.

The same evening we fixed four of the jobs by hand. We changed the opening and the light in each stored script and noted the change in the script’s reasoning field.

A second problem in the same batch

The same batch had two scene problems that had nothing to do with variety.

In the bronze Reel, the number scene showed “720 points” right after the bronze winner. The 720 points belonged to a different competitor in the same story. Both facts were in the article word for word, so the verbatim check let it through. We swapped the scene by hand for “1400 competitors from about 70 nations”. That check confirms that text exists in the story. It can’t tell whether the text is attached to the right person, and the task notes say so.

In the memorial prize Reel, “250.000” ran off the right edge of the frame. Claude wrote that code, and the commit message for the fix (8 October, 18:45) names the cause: the font size was picked by character count, not by measured width. Numbers longer than seven characters got 200 px, longer than four got 260 px, and anything shorter got 340 px. “250.000” has seven characters, so it got 260 px, which was too wide.

The fix measures the number instead. It tries 340, 300, 260, 230, 200, 175 and 150 px in that order and stops at the first size where the rendered text is no wider than 800 px. The frame is 1080 px wide, and the extra room is there because the camera drifts sideways during the scene. The version number was raised to 8 so every cached video was rendered again.

The fix for sameness

The variety fix landed on 9 October and changes two things.

The director now sees what came before. Before each script is written, the worker looks up the last six Reel jobs. It skips the story being scripted and counts only jobs that are waiting for approval, approved, publishing or published. For each one it takes the motif, the grade and the scene types, newest first. Those go into one line placed before the story, outside the block that marks source text, so the model can’t mistake our list for article content. A test checks this. The prompt asks the director to pick a different grade from the last two Reels, and a different motif and scene types from the previous one when the story allows it. The prompt also says the story still comes first. A wine story is still a wine story.

If the lookup fails, the worker passes an empty list and the director works as before. A Reel never waits on this step.

The rules avoid recent grades too. The fallback’s picker now takes a list of values to avoid: the grades of the last two Reels. It removes them from the choices and hashes over what is left. If nothing is left, it uses the full list again. A test checks that the rules no longer pick either of the last two grades when other grades are available.

The same commit sped up the podium animation by 1.3 times. After earlier work had shortened everything else, the podium was the longest single part of a Reel at 4.3 seconds. The version number went to 10.

What we don’t know yet

One item from the 8 October notes isn’t covered by this commit. The notes say the podium’s fallback shouldn’t always be the clock, but the fix doesn’t change that fallback. If the director keeps asking for a podium without a result, the clock can still appear. It just shouldn’t be paired with the same light every time.

We also can’t tell yet whether more varied Reels hold viewers better. The engine now fetches watch time from Instagram. The plan is to compare skip rate and average watch time against the older Reels once five to ten new ones have data.

The rule

A model that writes one item at a time can’t vary a series it can’t see. If the output is meant to differ from item to item, give the model the recent history as data, and make the fallback rules avoid the same repeats. And size text by measuring it, not by counting characters.