# spotify-concept-ad: delivery report (2026-10-21)

Status: reviewer approved (stage 09 round 4: two fresh critics SHIP; clarity read 3 PASS r5, a blind viewer on the delivered master, in its own words: "Press play and the noise around you turns into music."), approved by the owner on draft-14 (D-47). Two brand film QA thresholds fail on the approved cut (brand test, competitor swap; see Gates), logged for the owner, not fixed, because a fix changes the approved film.
File: ice/renders/final/spotify-concept-ad_street_16x9_35s.mp4  sha256 d206ae58123e3bf71764a6be0d17853c2000b4b5f127725eab0dff50a87f2784  1920x1080  30 fps  35.00 s  h264 (bt709) / aac 48 kHz stereo
Other deliverables: poster ice/renders/final/spotify-concept-ad_street_16x9_poster.jpg and .png (1920x1080, the drop at 20.2 s); six key stills ice/renders/final/stills/ (2.67, 8.20, 20.20, 22.30, 25.00, 34.97 s); the same master with its version in the name ice/renders/spotify-concept-ad_street_16x9_35s_v1.mp4; the case study ice/case-study/. One version only: English, 16:9 (the owner's decision, D-28); no Arabic version, no 9:16 or 1:1 re-layouts, no cutdowns.

## The non-affiliation line (D-46)
The film carries no non-affiliation line, anywhere. This is the owner's decision of 2026-10-21, taken after the endorsement and trademark risk was explained to him: "اشيل جملة غير رسمي من الفيديو خالص، وخليها في وصف الـ gallery وكارت صفحة الهبوط بس". It overrides run condition 3 of DEMO-BRIEF.md and RD-01 for this demo.
The gallery caption and the landing card must carry this line, in these exact words: Unofficial concept, not affiliated with Spotify

## The idea
A jammed, noisy night street becomes the beat once you search Spotify and press play: the hero car's horn turns into the kick, a road breaker into the hats, a pile rig into the backbeat, a motorbike into the bass, and the cars behind answer on the off-beats; the line names it: "Press play. The noise becomes the beat." It belongs to Spotify because the turn happens in Spotify's own search field and play circle (rebuilt from the web player), and it ends on the official logo.
Strongest frame: 20.2 s, the drop: every machine in its colour, the windows lit as the street's equalizer, the four sound words once more.
Structure fingerprint: the noise becomes the beat: a drawn night street whose own machines and traffic jam become the band . 15 shots . the hero car and its jam, breaker, pile rig, motorbike, search field, Top result card, logo . opening on a close honking car at the head of a jam . closing on the official logo alone on black, landing on the final hit ; differs from the nearest bundled template (ice-styles 01-flat-vector) on 4 of 6 axes (ice/review/template-distance-v2.md).
Next version: a 9:16 re-layout for feeds, the street stacked vertically and the jam reading top to bottom, with the same score.

## Beats
| # | Time | What it buys | Real or illustrative |
|---|---|---|---|
| 1 | 0.0-2.9 | the street around you is loud: a two-row jam honking, a road breaker, a pile rig, a motorbike, each word next to its source | illustrative (code-drawn street, code-made sounds) |
| 2 | 2.9-3.3 | Spotify's search field rises with its own question | real UI string, rebuilt field |
| 3 | 3.3-5.75 | "something for this traffic" typed letter by letter over the jam | film's own words, rebuilt field |
| 4 | 5.75-7.5 | the Top result card, a playlist, the pointer presses play on the downbeat | rebuilt card; playlist illustrative |
| 5 | 7.5-9.5 | the play circle lands on the hero car: its horn is the kick | illustrative |
| 6 | 9.5-11.5 | the road breaker joins on the hats | illustrative |
| 7 | 11.5-13.5 | the pile rig joins on the backbeat | illustrative |
| 8 | 13.5-15.5 | the motorbike joins on the bass | illustrative |
| 9 | 15.5-17.5 | the band plays together | illustrative |
| 10 | 17.5-19.5 | the breath before the drop (declared hold) | illustrative |
| 11 | 19.5-23.5 | the drop: windows light, the jam answers on the off-beats | illustrative |
| 12 | 23.5-27.5 | "Press play. The noise becomes the beat." | the film's own line |
| 13 | 27.5-31.5 | the empty field returns over the playing street: your turn | real UI string, rebuilt field |
| 14 | 31.5-33.5 | black; the official logo enters and lands on the final hit | official logo file |
| 15 | 33.5-35.0 | the logo holds while the chord rings out (declared hold) | official logo file |

## Gates (copied from script output)
| Gate | Result | Numbers | Tool and file |
|---|---|---|---|
| Cold-viewer clarity | PASS (read 3, r5) | a fresh sub-agent with no brief opened only the packet (film.mp4 and format.txt) and wrote: sells "Spotify."; does "It lets you find and play music that fits your moment."; idea "Press play and the noise around you turns into music."; the approver matched it to the takeaway (D-48): Sells, Offer's job and One-line idea MATCH, no misread, no major confusion, five minor items. The first read 3 (round 4) is void: it opened the draft by its project path and the critics' labelled packet, no takeaway existed and no match ran. Reads 1 and 2 were not run (the gate entered the skills mid-run, after 02). Limit: the packet path names "04-spotify", which the viewer saw | ice/review/clarity/read-3-r5.md, read-3-r5-match.md, read-3-r5-dispatch.md; void: read-3-cold-viewer.md |
| Storyboard lint | YELLOW, exit 0 | 15 shots, 35 s; yellows: shot 1 four words (the sounds of the machines), shots 2 and 4 short (the owner's typing at once; the approved card), three pushes in a row (the owner's note 3) | ice/review/storyboard-lint-v2.txt |
| Engine lint and check | PASS | page contract renders 1050 frames in order with one worker; cue sheet re-exports identically (53 events) | temp/final-v1.log; ice/review/stages/07-08-draft14-approver.md |
| G0 render exists | PASS | 35.00 s matches the expected 35.00 s; audio present | look.py, ice/review/gates-final-v1/look.txt |
| G1 proof readable | by eye | the field type 54 px on 1080 (5 percent), the line 104 and 64 px; the sound words and the card read at full size; checked on the 1920 stills and the phone-size sheet | temp/cues-v2/v2-en-16x9/ |
| G2 no empty frame | PASS | no run of more than 3 flat frames | look.py |
| G3 end hold, CTA share | PASS | end hold 1.47 s (limit 0.6 to 1.77 s for a text-less end card); CTA from 27.5 s = 21 percent (at most 25) | look.py |
| G4 one hero per frame | by eye | one hero per beat (data-hero: the HONK word, the field, the street, the line, the field, the logo) | ice/review/round-4/packet/ |
| G5 no page chrome | PASS | 0 rule hits, depth_layers median 5 | lint.mjs, ice/review/lint-v2-en-16x9.txt |
| Film gate | YELLOW (may deliver, a person must look) | fast in-shot motion 0.151, blank mid-section 0.000 s, blue-purple ground 0.000; yellows: hero_share and frame_fill under the floor only for the beats 31.25-35 s, push-ins 12 per minute | film_gate.py, ice/review/gates-final-v1/film_gate.txt and film_gate.json |
| Richness floor | PASS at the median | hero_share 90.9 percent (floor 30), frame_fill 16 of 16 (floor 10), empty_half 0 s, in_shot_motion 100 percent, longest_still 0 s outside declared holds; depth_layers median 5 (page marks); surface detail (asphalt grain, windows, site frame and hoarding), light events (the press ring, the drop), real material (the rebuilt UI, the official logo) counted by critic A | film_gate.py, lint.mjs, critic-A.md |
| Motion and freezes | PASS | 0 cuts, 0 freezes, 1 black stretch (the declared fade before the logo), 0 white; near-frozen samples 16 (the breath and the logo hold) | motion_check.py, frozen-time.mjs |
| Seams | not applicable | one continuous camera, no cuts (look.py reads the drop flash at 19.53 s as a scene change) | look.py |
| Captions and sync | sync PASS | no voice, no captions; every cue onset within one frame (critic B: press 7.5, drop 19.5, final hit 33.5 on their frames, 13 jam stabs sample-exact) | critic-B.md, qc_en_v9.json |
| Loudness | PASS | -14.0 LUFS, LRA 7.4 LU, true peak -1.4 dBFS (target -14, -1 dBTP, D-29) | loudness.mjs, ice/audio/master_final_v1.json |
| Spec | PASS | 1920x1080, h264, 30 fps, 35.00 s | probe-mp4.mjs |
| Template distance | PASS at the edge | 4 of 6 axes against ice-styles 01-flat-vector | ice/review/template-distance-v2.md |
| Fingerprint | no earlier record | the record is written to ice/review/fingerprint.jsonl inside the project (the run is confined to its folder, so ~/.ice-motion-director/fingerprints.jsonl was not written) | ice/review/fingerprint.jsonl |
| Final Frame Contract | PASS | the last frame of the lossless final equals the static logo page on the whole frame: 0 differing pixels | ice/review/final-frame/final-v1-checks.json |
| Final against the approved cut | PASS | final frames at 960x540 against draft-14: PSNR 36.7 to 43.6 dB at nine times; the lossless final against seeked stills: 0 px on the end card and the logo, specks of at most 29 of 255 on the street layer (raster history, the final rendered in order from frame 0 with one worker) | ice/review/final-frame/final-v1-checks.json |
| Brand test (brand film QA threshold) | FAIL | 0 of 6 random frames read as Spotify with the logo and UI covered (2 NO, 4 WEAK): Spotify green is only on the play circle and the logo, the street colours are not known as Spotify | ice/review/qa-thresholds.md, qa-thresholds/brand-critic.md |
| Competitor swap (brand film QA threshold) | FAIL | 12.5 of 35 s (36 percent) Spotify-specific, all of it swappable surface (the rebuilt interface, the green, the logo); the idea transfers to any music app | ice/review/qa-thresholds.md, qa-thresholds/brand-critic.md |
| Transitions transform the object; value flips (brand film QA threshold) | PARTIAL | transitions pass: no hard cut on 1050 frames (one continuous camera); chapter luma flips at 4 of 7 changes, the last three step down to black | ice/review/qa-thresholds.md, qa-thresholds/transitions.json (temp/qa-thresholds/transitions.py) |
| Climax duel | not run | | |

## Frame descriptions
- 2.67 s: the two-row jam in grey, the hero car honking, HONK, VRRRM, BANG and BRRRRT next to their machines; hero: the street. Picture.
- 3.50 s: Spotify's search field over the dimmed street, "What do you want to play?"; hero: the field. Picture with UI.
- 4.60 s: "something for th" being typed over the jam; hero: the field.
- 6.40 s: the Top result playlist card, the pointer on its way to the green play circle; hero: the card.
- 8.20 s: the circle landed on the hero car, the car in coral, HONK; hero: the car.
- 10.60 s: the breaker drilling in mint, BRRRRT; hero: the breaker.
- 12.40 s: the pile rig, its olive ram on the pile, BANG; hero: the rig.
- 14.80 s: the motorbike in slate, VRRRM; hero: the motorbike.
- 16.60 s: all four machines on one groove; hero: the street.
- 18.60 s: the dimmed street before the drop; hero: the street.
- 20.20 s: the drop, every machine in colour and the windows lit; hero: the street.
- 25.00 s: "Press play." over "The noise becomes the beat." in the sky over the street; hero: the line.
- 29.00 s: the empty field over the playing street; hero: the field.
- 33.00 s: black, the logo arriving; hero: the logo.
- 34.90 s: the official logo alone on black; hero: the logo.

## Yellows and declared holds
- Film gate hero_share and frame_fill under the floor for 31.25-35 s: the owner asked for a fully black end card with only the logo (D-44).
- Push-ins 12 per minute: the owner asked for a push toward each machine as it joins (D-41); each push follows a pull back or a travel.
- Storyboard lint yellows: as in the table, each from an owner decision or a locked reading.
- Declared holds: 3.0-7.5 s (the search rest, the street bed and the interface sounds), 17.5-19.5 s (the breath before the drop), 33.5-35.0 s (the logo while the chord rings out).
- Score arc guard (music-by-code): the two ending clauses miss (the last 3 s 6.42 dB under the peak against 8 to 20; the last fifth 1.31 LU under the peak against more than 2) and the music body LRA is 3.95 LU against 5 to 8 (whole film 7.51 LU, inside); reasons in D-43: the owner's living ending and the reduced limiting he asked for.

## Review
Critics: round 4 on the approved cut: two fresh read-only critics (picture; sound and sync); its cold viewer is void (it opened project paths and the critics' labelled packet). Order, stated plainly: the round-4 critics ran before any matched clarity read; the takeaway was written late (D-48) and the blind read 3 (r5) ran after the round, on the delivered master, and passed. Brand film QA thresholds measured on the approved cut by a fresh brand critic and by frame measurement (ice/review/qa-thresholds.md); earlier: three critic rounds on the lane-grid film (rounds 1 to 3), a rework critic and a verify round on the drawn street plan, approver checks at every stage. Final verdict SHIP.
Fix ledger: ice/review/fixes.json (R4-01 and earlier rows with before and after evidence).
Not independently reviewed: none for the delivered film; the left-behind variant with the line at the opening (film/v2-en-16x9-alt-opening-line.html) was not reviewed.

## How things were checked
By numbers: every gate above, loudness and true peak, onsets against the cue sheet, the jam stabs, the Final Frame Contract, frame comparisons against the approved cut, colour tags. By eye: G1 and G4 on the stills and sheets, the logo on black, the critics' passes, the blind viewer's read 3 and the brand critic's six covered frames. Heard by a person: yes, the owner listened to the sound of draft-14 (D-47). Not checked: a climax duel; the seam gate (no cuts); playback on physical phones.

## Real and illustrative
Real: Spotify's official full logo (official file from Spotify's press kit, untouched); the interface strings "What do you want to play?", "Top result" and "Playlist" (exact, captured); the search field, the Top result card and the play circle rebuilt from Spotify's public web player captures. Illustrative or generated by code: the street, its machines and the jam (SVG shapes drawn by code, no photos, no faces, no AI media); the answer "something for this traffic" and the playlist on the card (the film's own words, no real playlist, song or artist); the line "Press play. The noise becomes the beat."; the whole score and every sound (code-made with mgaudio, MIT).

## Permissions a brand owner or rights holder would need before publishing
| Item | Whose permission | Why it is needed | Status |
|---|---|---|---|
| Logo and trademark use (unofficial concept) | Spotify | the official logo closes the film; Spotify's guidelines allow its use only under their terms, and a film by a third party can read as endorsed | not cleared; the film carries no non-affiliation line by the owner's decision (D-46); the gallery caption and the landing card must carry it |
| Captured or rebuilt screens of the brand's UI | Spotify | the search field, the Top result card and the play circle are rebuilt from Spotify's web player | not cleared |
| Brand fonts | Spotify | Spotify's own typeface is not used; Figtree (open licence) stands in | not needed for Figtree |
| Other rights holders' content left in screens | none | no third-party content remains: the playlist is the film's own, its cover drawn by code | not needed |
| Music sync and master rights | none | the score is original, generated by code for this film | not needed |
| People's likeness and voice | none | no people shown (one helmeted rider with a dark visor, drawn), no voice | not needed |
| Regulated claims and disclaimer wording | Spotify or its legal adviser | the non-affiliation wording sits only in the caption and the landing card (D-46) | owner's decision recorded |
| Official files downloaded under the default | Spotify | the logo files from Spotify's press kit (https://newsroom.spotify.com/media-kit/logo-and-brand-assets/), sizes and sha256 in ice/assets/manifest.json | downloaded with the user's approval (DEMO-BRIEF condition 1) |

## Decided for you (auto mode)
- D-28: one version only, English 16:9 (the owner's decision); the Arabic version and the other aspects were stopped.
- D-30 to D-34: after the owner's notes on draft-7, a drawn night street built in code, typing letter by letter, the machines playing the song, line B (the owner chose it).
- D-35 to D-37: a jam behind the hero car, a closer camera (the owner's fixes).
- D-38 to D-43: after the owner's notes on draft-9: a shorter living ending inside 35 to 60 s, a two-row jam, camera pushes while the machines join, limiting at or under 6 dB, the arc guard results recorded.
- D-44 to D-46: after the owner approved draft-11: a fully black end card with the animated official logo, no non-affiliation line in the film.
- D-45: the logo lands at 33.5 s instead of about 32.5 s so the end hold stays within look.py G3; the owner approved draft-14 with it (D-47).
- D-48: the viewer takeaway written late at stage 09 from text locked at 02 (the clarity gate entered the skills mid-run), then a blind read 3 on the delivered master (PASS r5).
- Items left unresolved: the two brand film QA fails (brand test, competitor swap), for the owner (Next fixes item 9).

## What a yes would add
- none: no install, download or paid tool was skipped. Out of scope by the owner's choice: the Arabic version, 9:16 and 1:1 re-layouts, cutdowns.

## Next fixes
1. In the first 1.25 s the drill, the hammer and four jam horns sound while their sources are out of frame (critic A, P2): a wider first second, or those firings moved after the pull back.
2. The BANG and BRRRRT words reach about 10 px past the 5 percent margin at 1.87 to 2.50 s (critic A, P2).
3. The motorbike faces the other way from the jam (critic A, P2).
4. Four fast camera moves (9.2, 13.2, 21.6, 23.2 s) have no motion blur (critic A, P2); the first, void viewer also saw a sliver of the excavator arm at the frame edge at 14.6 to 15.6 s and 21.6 to 21.8 s.
5. The machine pulses trail their kicks by one frame (U.hit draws nothing on the beat frame itself) and the ring-out loses up to 1.9 dB in mono in its last second (critic B, P3).
6. The first, void viewer read the browse icon (Spotify's own) as a bin, found the pointer small on a phone and the BANG source small; the read-3 viewer (r5) could not tell what that icon is either.
7. The hero kick sits only 3.1 dB over the loudest jam stab.
8. Read 3 (r5), minor confusions: on mute the beat is invisible from 8 to 17 s (the machines glow, the viewer "saw no beat"); the breath at 17.5 to 19 s reads as a pause; the lit windows at 19.5 to 23 s read as "an equalizer or the playlist cover"; the empty search bar at 27.5 to 32 s reads as unfinished ("I expected another search"); the browse icon (item 6).
9. For the owner (changes the approved film, so not fixed at 09): the brand test fails (0 of 6 frames read as Spotify with the logo and UI covered, because Spotify green appears only on the play circle and the logo) and the competitor swap fails (36 percent of the film is Spotify-specific, all of it interface, colour and logo). A possible fix: carry the green into the street after the press (the play circle's green on each joined machine or in the windows at the drop), or give the body a device only Spotify owns.
Honest self-critique: strongest: the drop and the jam answering the hero car, where the idea is literal and readable; weakest: the first second, busier in sound than in picture, and a pile rig that stays small; with more time: a vertical re-layout and a motion-blurred final for the fast camera moves.

## User verdict
2026-10-21, draft-14: "موافق على draft-14 وسمعت الصوت. ابدأ الريندر النهائي 1920x1080 والتسليم والـ case study" (approved, he listened to the sound). Earlier notes along the way: draft-7 ("the street plays along does not explain"), draft-9 (four fixes), draft-11 ("جيد جدا" with a black end card). Lesson: an owner who steers draft by draft wants the idea literal in the picture; abstract worlds read as decoration.
