Content OS was built one proof at a time. Every change below was run on real episodes, measured before anyone judged it, and shown before and after. Each entry ends with what still fails, because a log that only shows wins isn't a log.
189pull requests merged
1,808automated tests written
100proof boards and reports
18proof rounds on one episode's Shorts
4episodes run end to end
2.0 hof raw footage through the pipeline
Counted on 26 Oct 2026 from the two repositories, the proof folders and the raw files; how each number was counted is at the foot of the page.
How to read an entry
Problem in one line
Measured: how we knew
Proof: the real frames, before and after
Changed: what the code does now
Still open: what still fails
01
41 of 53 graphics were faulty. Not one was the model's fault.
Problem
Episode 3's first automated run put 53 graphics on the review board, and most of them were wrong.
Measured
Every fault traced to where it was made: 14 in selection code handing components data in the wrong shape, 11 in the decision matrix, 11 in rules that contradicted the series' own decisions, 5 in inputs. 0 in the model: re-run on two other models, the same faults came back.
before"It shows NaN." A list became a takeover number with no variant set. It counted an undefined value to NaN and put his footage in a disc.before"My face being hidden." The selector chose "over" and never translated it into the component's panel mode.
Changed
The fixes went into the joins between stages, not into prompts: a brand lexicon with an on-screen word check (the transcriber had heard "Firstmate" as "First Meet", and every writing model copied it), rows blurred until named instead of dropped, a centred chapter card with its rail, a text-over-face probe, and calls that draw nothing are refused before the board.
Still open thenEvery check that would have caught this ran after the board. Moving the checks in front of the board was the next piece of work (02).
02
The pipeline knew. The review board never showed it.
Problem
Episode 4 passed every check and still felt repetitive: ten ledger cards in one episode.
Measured
One script over every run's plan. Episode 4 was the first run with zero check refusals and the worst on every variety number. Its own rubric had written 5 "swap" and 2 "cut" verdicts. They were demoted to pending and never reached the approve button.
Run
Graphics
Distinct kinds
Top kind's share
Per minute
Check refusals
Episode 1
36
15
22%
2.5
9
Episode 2
22
12
18%
2.9
15
Episode 3, final
53
16
25%
4.0
35
Episode 4, the board he saw
31
9
32%
4.1
0
Bar, from the two episodes he liked
≥ 10
≤ 25%
≤ 3.5
0
Each run's plan, live items only. Episodes 1 and 2 are the automated planner's plans of 21 Oct, not the hand-made edits that shipped. The checks got better; what he noticed got worse.
Changed
A golden set: three recorded episodes with the approved result at twelve stages. Each stage is scored twice, once on perfect input and once on the stage before it, so a fault points at the stage that made it. Checks are the gates; a model only ranks. The critic was calibrated on his blind A-or-B picks and moved in front of the board, and its cost fell from $13 to $1.85 an episode. The goal is 10 or fewer notes from him per episode, down from 53.
Still openThe whole-episode variety gate this review proposed (refuse episode 4 as it stood, pass episodes 1 and 2) has not shipped yet.
03
We ran the competition on our own footage, and read its code without copying it.
Problem
Is our pipeline actually better than the leading Claude Code video plugin, or does it only feel that way to us?
Measured
We installed it the way a buyer would, in a clean account, gave it the same raw 14:39 episode and let it run alone. Then we ran the same measuring commands on both cuts. Separately, we read its 46 effects (47,251 lines of Python) and measured them without running them. We copied nothing.
Same episode, same commands
Content OS
The plugin
Words kept, of 2,312
1,551 (67%): retakes and tangents out
2,235 (97%): pauses only
Pauses over 0.3 s
106 (longest 0.73 s)
1
"um" and "uh" left
3
0
Graphics
33, in 9 kinds
22, one card design
Logos
real marks, on 21 namings
none, names in type
Loudness as delivered
−16 LUFS
−16.5 long-form; −28.4 Reel by default
Cost of the run
$18.23
$7.07
Measured 23 Oct 2026. About $16 of our $18.23 was the critic, since cut to $1.85 an episode (02).
What the code read taught us
Its effects share a good habit: the model fills a few constants and the code does the measuring, placing and refusing. But the code is copied rather than shared: at least six ways of finding when a word starts, and 26 copies of one of them. Ours is the stronger system (tokens, a catalogue the code reads, a check that proves before render), but slower to extend: a new component touches 5 to 9 shared files. Its demo Reels run 8 to 23 graphics a minute, while its maker's own hand edits ran 2.7. That spread is why density became a setting the creator chooses (10).
Still openWe leave more pauses and cost more per episode. Making a new graphic a one-folder change is planned, not built.
04
An approved Short script becomes its cut, and every jump gets a cover.
Problem
A Short stitched from lines across the take showed a hard jump at each join, so its proof sheet refused it on all 5 platforms.
Measured
The cut is now one exact pass from the raw take, so its timing map runs straight from raw to final. All 95 of the script's words survive, in order. The proof sheet's seams row counts covered jumps: 0 of 2 before.
before7.36 s, seam 1: the jump showsafterthe jump is inside the window; his next words land on his voicebefore10.98 s, seam 2aftera hard ×1.12 punch-in on the cut
2 of 2 jumps covered (was 0) · 4 of 5 platforms delivered (was 0) · −16.08 LUFS, −2.01 dBTP
Changed
The planner puts a cover on every jump in a script cut, a takeover or a punch-in, exactly as the script names it. A script whose jumps can't be covered is refused before it is planned.
Still openLinkedIn needed its own storyboard (06). The caption after a takeover stays hidden for about a second; that is filed as its own fix.
05
No text across his eyes, checked before anything renders.
Problem
Hook headlines ran across his forehead and glasses, and a label sat over one eye.
Measured
His eye band is the middle of the head box from the video's matte: 38–62% of its height, 15–85% of its width. It was set from 18 frames of three cuts and mapped through the camera at every punch-in.
before0.4 s: the headline across his eyesafterre-placed under them, stepped down from 136 px to 88 px to fit
Changed
The frame check refuses text or a graphic across his eyes, and a graphic over another component's text, before anything renders. A hook too tall to fit shrinks, but never below 60% of its size. A graphic with no clear place is dropped, and the plan says why.
Still open thenTwo of three Shorts each lost a graphic. The eye band also left the rest of his face open (07).
06
One storyboard, checked on every platform, LinkedIn's title bar included.
Problem
The plan was checked only on the main build, which has no title bar. On LinkedIn, two logo pops landed on the bar, and the run stopped at step 8 of 15.
Measured
The planner's log reproduced the three faults word for word: graphic over text at 23.5 s: pop 'logo alexandria' … over 'I got seven AI agents'. After the fix: 6 of 6 platform checks clean, and the step the run couldn't reach before exits 0.
beforemoved by hand off the title bar, it landed on his noseafterplanned on LinkedIn too: clear of the bar and his eyes, but still over his nose
Changed
Once the main build passes, the planner builds LinkedIn's own version from the same storyboard and checks it too. A graphic that collides there is moved or dropped on the one storyboard, so every platform stays a pure swap. The unit tests use the three real faults verbatim, and all 65 planner tests pass.
Still open thenThe check only knew his eye line, so the nearest clear place was his nose, on all five platforms. We shipped it with that known gap and fixed it the same day (07).
07
Graphics keep off his whole face, not only his eyes.
Problem
A pill reading "Way more helpful" sat on his cheek for three seconds. The proof sheets said "his face is never covered: pass" on all 15 files.
Measured
That check covered only graphics without text, and a pill is text. Re-checked with the fix: text across his face at 22.0 s: 'Way more helpful'. The face box runs from the eye band to the chin, measured on the matte.
eye band no text or graphic crosses it, as before · face box new: no graphic crosses it. The hook card stays under his eyes, as the motion rules intend.
beforeon his nose. The old check passed it; the new one refuses it.afterre-planned above his eyes: 0 of 111 boxes across his eyes or faceafterthe hook card, under his eyes as before
How the face box is measured: the matte's head box (top of hair to chin), the eye band at 0.38–0.62 of its height, the face from there to the chin.before22.0 s: the pill the old sheet passed
Changed
The frame check refuses any graphic, pill or label across the face box. The proof sheet's face row reports the check's own result ("pass: 0 of 111 boxes across his eyes or face") instead of "not checked".
Still openOne Short lost its only graphic over the footage: there was no clear place for the pill on LinkedIn (56 px of room, the pill needs 88). Putting graphics back is the density work (10).
08
A hook card ends on a clause, never halfway through a thought.
Problem
Hooks read "So with / Alexandria" (no claim), "Building is fun, but / marketing" (a subject still waiting for its verb), and a takeover ended on "about".
Measured
Every card and takeover on episode 3's cuts, before and after, plus the frame check on all four builds: 0 fails.
beforewhat the earlier proof deliveredafter"You can read out loud / any chatbot"after"Marketing is how you get people in"
Changed
One rule in one place. A card ends on the sentence's end, a clause mark, or a word followed by a conjunction, pronoun or preposition. It never ends on a function word or a subject before its verb, and never opens on "So" or "Because". The script check refuses a hook that opens on "Because". It uses closed word lists, with no new language model in the loop.
Still openWhen no clause fits in three lines, the card falls back to the landing phrase on its own, as before.
09
The length estimate is the cut's own length.
Problem
Scripts were ranked on an estimated length up to 9.7 s longer than the cut they produced.
Measured
The transcriber pads words with silence, so word times can't predict a cut. The estimate now makes the same pause cuts the cutter makes, which takes 2 s per take.
Script
Old estimate
New estimate
Actual cut
A · "seven agents"
31.8 s
24.6 s
24.7 s
B · "Alexandria"
29.7 s
24.1 s
24.1 s
C · "marketing"
25.1 s
15.4 s
15.4 s
What honesty costMeasured honestly, every earlier Short was under the approved 25 s minimum, and 0 of episode 3's scripts passed. The bar was lowered to 20 s, measured on the cut, and recorded in the PR so it can be reversed.
10
Graphics a minute, counted, then set by the creator.
Problem
The planner dropped any graphic that overlapped a seam cover, and nothing counted how busy a Short was.
Measured
Every proof sheet now has a graphics-a-minute row, counted from the plan. On episode 3's three Shorts: 6.8, 5.0 and 3.0 → 6.0 a minute, all short of the 8–10 target.
after10.4 s: the pipe diagram it used to lose, moved to just after the takeoverA proof sheet in full: the off-target row is amber, says why, and the file still ships
Changed
A graphic in a cover's way moves to just after it, keeping its planned length. Then the brand picks the pace: Calm (3–5 a minute), Standard (8–10, the default), Busy (16–20), or an exact number. The plan never pads to reach the band; when it falls short it says why, word by word.
Still openOff target is advisory: if it refused delivery, all three of episode 3's Shorts would be refused today. Explain-and-compare sentences still have no graphic that fits them.
11
A camera per span of the cut, set from where his head is.
Problem
One fixed vertical crop for the whole Short cut his head off whenever he leaned. It was set by hand.
Measured
The share of his head's width on the 9:16 frame, for every span of the cut and for every second. The check refuses any span under 80%.
Before (left of each pair): one camera at the centre. Now (right): the camera that span gets, cut on the jump. The source picture is never moved.
A · 0.0–1.6 s94% → 100%
A · 4.8–8.6 s53% → 100%
A · 11.1–13.4 s47% → 100%
B · 7.6–9.0 s31% → 98%
B · 11.0–12.7 s35% → 99%
C · 25.8–36.9 s42% → 100%
Short
Every span now
Seconds under 80%
With the hand-set crop
A · 21 s
≥ 100%
3 of 21
5 of 21
B · 22.5 s
≥ 98%
4 of 22
11 of 22 (down to 11%)
C · 37.7 s
≥ 94%
6 of 38
12 of 38 (down to 23%)
Changed
The planner sets a camera for each span from his head on that span, with no hand edit, and the check measures every span before the Short is composed.
Still open13 of 81 seconds are still under 80%. In 12 of them a raised hand or the notebook widens the measured head box past what a 9:16 frame can hold.
12
Review stills from a settled frame, not mid-animation.
Problem
The review screen showed counters caught at 16 of 17 and blurred cards. Each still was taken a fixed second after the graphic arrived.
Measured
Each still is now taken at the middle of the graphic's hold, between its last arrival settling and its exit, read from the composition's own events. That's 45 graphics on episode 3.
before1.8 s, arrival + 1 s: caught mid-countafter5.4 s, settled, before its exitbefore1.8 s: mid-moveafter4.56 s: the finished graphic
Still openOne graphic still fails to snapshot at any time, as it did before. A few are mid-move by design (a reveal's blur, a canvas pan) and stay that way.
13
Each brand writes in its own voice, not the founder's.
Problem
An audit for hard-coding found every brand's captions and newsletter were written from one file describing the founder's own show, with "his voice" and "a founder's weekly video" in the prompts.
Measured
We recorded the exact prompt sent for a second test brand, for a brand with no voice, and for the founder's brand, then counted the founder's lines that leaked into the others.
Brand
Its own voice in the prompt
Founder's lines leaked
"he", "his", "founder"
A second brand, with a voice
yes, caption and newsletter
0
none
A brand with no voice
a fixed neutral line
0
none
The founder's brand
yes, all 104 voice lines
n/a
its own framing kept
Changed
The voice comes from the active brand's own kit (capped at 12,000 characters) and nowhere else. The prompts say "the creator" and "their own words". A run with no brand set stops rather than falling back to anyone's voice.
Still openThese checks used a stand-in model that records prompts; the wording a real model writes in each voice is judged on the review board, not by a test.
14
Posting times belong to the brand, in its own time zone.
Problem
Rules said "one a day from next Monday", but nothing turned that into a time. A real delivery arrived with no scheduled time, and the only 09:00 was in test data.
Measured
We onboarded a New York brand and delivered on a Sunday afternoon, New York time, with the test clock set to 25 Oct 2026. Then we tried to break it.
Case
Result
Three Shorts approved, one a day from next Monday
26, 27, 28 Oct at 09:00 EDT
Two times a day, "next slot"
17:30 the same day
No time zone, the zone Mars/Olympus, or a time of "9am"
refused with a clear message; no posts written
A malformed rules file
reported as one error line; the other brands still checked
Changed
Each brand sets a time zone and its posting times (09:00 in the creator's own zone by default, set at onboarding). Every post carries both, and the Studio shows each brand's times on its Brand page.
Still openA kit onboarded on Windows, where no zone can be read, is refused until the zone is set. Two deliveries can still be given the same slot.
15
The kit on Linux and Windows, tested without a CI bill.
Problem
Content OS has to run on macOS, Windows and Linux, but had only ever run on a Mac. The three-system CI job couldn't run because the account's CI billing was blocked.
Measured
The same CI job, run on a Mac for free: natively for macOS, and in a fresh Ubuntu 24.04 x86-64 container for Linux, each on a clean clone of the PR.
Step
macOS
Linux
Windows
Kit setup with a real 2 s render
pass
pass
setup script: 3 tests pass under PowerShell 7.4; the rest is unit-tested only
Sync one episode with the Studio
6 tests
6 tests
Guard and autostart tests
15 tests
15 tests
Runs on its own at login
LaunchAgent
systemd timer, fired for real
Changed
Linux breakages fixed where they showed (a keep-awake lock systemd 255 refuses, a 25 fps fallback on FFmpeg before 8). Windows fixes were inferred from them: retrying file writes while Windows holds a file open, UTF-8 output, and finding a working Python rather than the Store stub.
Still openWindows has no local stand-in. Its fixes are proven by unit tests that simulate it, and the first Windows tester's run is the real check.
16
A tester's iPhone clip: from a crash to delivered.
Problem
A dry run with a 45 s vertical iPhone clip (HDR inside an SDR label, rotated) and a brand-new tester kit crashed the planner and never delivered.
Measured
The same clip, re-run on the fix, gap by gap.
Gap
Dry run
Now
Kit with no graphics menu
crashed
planned from the generic menu, and said so
Kit with no sound profile
voice only, one easy-to-miss line
a default profile: 2 cues and a music bed
HDR under an SDR label
632 s render, 40 of 41 changes proven, not delivered
tone-mapped first; 68 s render, 41 of 41 proven
Delivery
none
4 platforms, −16.1 LUFS
Still openIts proof sheet (shown in 10) says 1.7 graphics a minute, under the 8–10 target, and two checks didn't run on this kind of video. It ships anyway, and says so.
17
The Studio, clicked through: 11 findings, 9 fixed, 2 still open.
Problem
A full click-through of the review app found eleven things a creator would trip on, from "asleep since undefined" to a step bar that pointed backwards.
Measured
Every screen screenshotted before and after, at phone (390 px) and laptop (1280 px) widths. That's 34 page loads with no console errors, no sideways scroll and no "undefined" text.
beforeHome, 390 pxafter"Your computer: on", and the week shows its first post
Still openTwo episode stills are still blank or blurred, and two transcription errors remain in Short 1's seeded captions. A new nit: the step bar's fill stays at a third while its label says 4 of 4.
Why this page exists
The checks you just read run on your videos too.
Every Short and episode Content OS makes comes with the same proof sheet: the face check, the words on their beat, the loudness, the sync. If a check fails, it won't hand the video over. And when something isn't checked yet, the sheet says so.