v3 vs v4 — semantic sweep
You caught a progress bar that never fills. Three sweeps hunted that whole class across all three films: 39 defects found, 30 fixed. Same runtime, same story, same copy.
Your bar, root-caused: the HubSpot panel was ~190px taller than the frame, so the 5th field ("Close date") sat entirely below the screen. That one crop caused three defects at once — the bar could never finish, the earlier beat said "5 empty" while only 4 rows were countable, and a later beat claimed Floom updated a close date
it never wrote. Fixed at the root: the row is visible, written and checked, and the bar now derives its denominator from its own steps so it cannot desync again.
- The same species, found elsewhere: four editor tiles showed green "installed" checks 1.5s before the install command was typed (covered), and again in gmail (1.4s early).
- "6 new emails" over an inbox showing three rows (gmail) — the other 3 never existed anywhere.
- "approved by you · 8:59am" stamped a minute before the 9:00am run that produced the thing approved (covered).
- Under "Floom covers ALL of it", only 9 of 16 problems were claimed — and 2 were claimed that the film never shows (covered).
- Six completely blank frames at the gmail payoff, landing exactly on the music swell.
- A schedule rail filling to 100% through the node that had not run yet (gmail) — your defect, inverted.
Earlier cuts: granola v3 · gmail v3 · covered v3 · v1/v2 also still on the host. Copy: copy page.
1 · Granola → HubSpot
flagship
17 found · 11 fixed · 27.3s both
v4semantic sweep
- The bar now fills to 100% — 5th field visible, written, checked
- Three Floom write-heads were on screen at once, two on rows already committed
- The email body split mid-sentence and resumed lowercase
- "0 empty" on a blank CRM; "1 notes"
- The beat composed to 1942px in a 1920 frame, slicing both edges
Your call: "Aug 29" is a new data point, invented so the close-date field is real (a locked line already claimed Floom updates it). And "2pm" moved into the Granola note, because the email receipt asserted a time the source never gave — it fixed the source, not the proof artifact. Both one-token reverts.
2 · gmail-digest
how it works
14 found · 9 fixed · 29.2s both
v4semantic sweep
- Six blank frames at the payoff, on the music swell — gone
- "6 new emails" now reconciles: 3 rows + a "3 more · filed" tail row
- Schedule rail stops at the last completed run; the rest is dashed "scheduled"
- Editors no longer show "installed" before the install command types
- Three large cards that landed empty now arrive with their content
Your call: the "3 more · filed" row is a UI element that was not in the approved storyboard. It states only what the digest copy already claims, and an unreconciled count was the worse defect — but it is the one judgement call worth your eye.
3 · Your agent, covered
11 fixed · logo hold 1.97s · 27.7s both
v4semantic sweep
- Editors showed "connected" 1.5s before the install command was typed
- "approved 8:59am" preceded the 9:00am run it approved
- "Covers ALL of it" now genuinely covers all 16, in the chips' own words
- "Timeouts" was cropped to "Tim"; a pill struck through the sub-headline
- The relief card landed empty for 1.6s under the payoff line
Bonus: fixing the clocks closed the film's only open loop. One monotonic timeline now: 7:00 ok → 8:00 ok → 9:00 run done, waiting on you → 9:01 you approve → 9:02 sent → next run in 1h.