# 2026-08-23 — video producer: NO OUTPUT (3 passes, 13 products, 0 videos)

Nothing was produced and nothing was posted. Video autopost remains PAUSED by
`_AUTOPOST-PAUSE.txt` (Gregory, 2026-06-30, approval-gated) — that switch was honored and
NOT overridden. `--post` correctly degraded to produce-only.

The pipeline is NOT broken: no script errors, no API outages, no hosting/posting failures.
Every product was rejected by the PHOTO GATES, upstream of rendering. This is the third dry
day in four (8/21 = 0, 8/22 = 2 late, 8/23 = 0).

## Pass 1 — daily seed (4 products)
| Product | Campaign | Failure |
|---|---|---|
| Everyday Soft Short Sleeve Tiered Midi Dress \| Green | outfit_inspiration | 0/4 photos in real environments |
| City Round Neck Slit Pants Set | outfit_inspiration | 3 photos of same model, need 4 |
| Moonstone Stud Earrings \| Silver | new_arrivals | 2/4 photos in real environments |
| Brunch Surplice Sleeveless Wide-Leg Jumpsuit | best_sellers | 0/4 photos in real environments |

## Pass 2 — unintended re-run (no `--post`, nothing published)
`--help` is not wired into the arg parser, so it executed a full pass instead of printing
usage. Same 4 products (daily seed is date-derived), different campaign draw. Recorded here
for honesty about API spend. It surfaced one extra fact worth keeping:
**Brunch Surplice Sleeveless Wide-Leg Jumpsuit** also fails the usability gate — all 5 of its
photos carry visible competitor branding (GUCCI box, LV-style handbag as styling props).
That product is unusable for video AND should be checked before it appears in any static ad.

## Pass 3 — `--seed 823`, `VB_VIDEO_SPARES=8` (9 products)
| Product | Campaign | Failure |
|---|---|---|
| City Ditsy Floral Wide Leg Jumpsuit \| Black | new_arrivals | 0/4 photos in real environments |
| Brunch Maxi Dress, Round Neck Bell Sleeve \| Veryberry | brand_story | 3 distinct real photos, need 4 |
| Brunch Lace Detail Wide Leg Pants \| Beige | outfit_inspiration | 0/4 photos in real environments |
| Buckle Crossbody Bag | best_sellers | 3 photos of same model, need 4 (3 models in set) |
| Sun-Kissed Short Sleeve Shorts Set | outfit_inspiration | 3 photos of same model, need 4 |
| Sterling Silver Star Necklace \| Silver | new_arrivals | 3 photos of same model, need 4 |
| Cozy High-Waist Active Leggings | lifestyle | 0/4 photos in real environments |
| City Satin Animal Jacquard Top \| Royal Blue | outfit_inspiration | 3 distinct real photos, need 4 |
| Cozy A-Line Midi Skirt \| Dark Blue | seasonal_collections | 3/4 photos in real environments |

## The finding worth acting on: the misses are OFF BY ONE

Across the 13 unique products:

- **7 of 13 (54%) had exactly 3 qualifying photos and needed 4.** Not studio-only, not
  unusable — one photo short of a buildable video.
- 5 of 13 were genuinely studio-only (0/4 or 2/4 real environments) — correctly held.
- 1 of 13 was killed by competitor branding in the props.

So the binding constraint today was not "the catalogue is all studio shots." It was a
**one-photo shortfall** on products that otherwise qualify. Two distinct sub-causes:

1. **Model consistency** (4 products): the photo set mixes 2-3 different models, and the
   largest same-model group is 3. The gate keeps the largest group and holds.
2. **Distinct real scenes** (3 products): 3 real backgrounds available, 4 required.

## Why the 4th photo is required (and why I did not change it)

The cut needs 3 distinct looks plus a branded end card, and per Gregory's 2026-07-07 scene
rule **every beat gets a DISTINCT background, including the end card's living background**.
That makes 4 distinct scenes the floor. Dropping to 3 would either repeat a background or
retire the end card's own scene — both are changes to the approved video spec, which is a
creative decision, not an ops one. Escalating rather than deciding.

Relocation stays OFF (`VB_RELOCATE=0`, Gregory 2026-07-25: composites "read as AI"). Not
touched. Re-enabling it would clear most of these holds but reintroduces the exact artifact
Gregory rejected, so it is not a fix I will make unilaterally.

## Options for Gregory (all need his call)

1. **Allow the end card to reuse look 1's background.** Gate drops 4 -> 3; roughly 7 of
   today's 13 products become buildable immediately. Cost: the end card is no longer a
   distinct scene. Note the roundup path already documents this behavior, so this is a
   narrower change than it sounds.
2. **Relax model consistency to allow a model change between beats** for accessories/jewelry
   (bags, necklaces, earrings), where the product, not the model, is the subject. Would clear
   Buckle Crossbody Bag and Sterling Silver Star Necklace.
3. **Accept the current rate** — the pipeline produces on the days the draw is favorable and
   holds otherwise. Video autopost is paused and approval-gated anyway, so nothing
   customer-facing is being missed.
4. **Fix at the source**: prioritize real-environment, single-model photo sets during Trendsi
   import so the buildable pool grows. Slowest, but it is the only option that raises the
   ceiling rather than lowering the bar.

My recommendation: **option 1 plus option 2**, both narrowly scoped. They unblock ~7 of 13
products without touching relocation and without lowering the anatomy, footwear, or brand QA
gates that protect quality.

## Housekeeping
- `--help` should print usage instead of running a production pass. Small fix, worth doing
  before the next run wastes vision-API calls the way pass 2 did.
