Spotify concept ad
Spotify, brand film. How it was made with Ice Motion Director, from the prompt to the delivered film.
Unofficial concept, not affiliated with Spotify
The film
The prompt
Make an ad for Spotify, 35 seconds to a minute long, with an Arabic version and an English version.
Show the original, exactly as typed (Arabic)
Translated from Arabic.
اعمل إعلان لسبوتيفاي، مدته من 35 ثانية لدقيقة، ونسخة عربي ونسخة إنجليزي.
- Film type
- Brand film
- Route
film- How it ran
- One prompt (auto mode)
- Size
- Standard
- Published
- 21 October 2026
Delivered
- English, 16:9, 35 seconds
How it was made
- Agent
- Claude Code 2.1.303 (desktop app)
- Model
- claude-opus-5-5
- Effort
- xhigh
- Sub-agents
- A director session, research agents, concept and stage critics, rework and verify critics, picture and sound critics, a cold viewer for the clarity read, the stage approver and a sound designer
- Made on
- 20 October 2026 to 21 October 2026
How it got here
The run as it happened, draft by draft, with every round of the owner's feedback. Told from the conversation in the case study.
The prompt
One line at night: a Spotify ad, 35 seconds to a minute, in Arabic and English. The owner went to sleep and said not to stop for questions, so the run went fully automatic and every decision was researched and logged with its reason and source.
Draft 3
The first look at the work. The agent flagged its own weak spots: the last 8 seconds were still and empty, the top result card was a grey placeholder, the mix was not done. The owner approved the look and cut the scope from six versions to one: English, 16:9, complete.
Draft 7
The abstract concept had passed every gate, but watched as an ordinary viewer it did not read: it felt long, the search text appeared at once instead of being typed, and the noise and the moment after play did not say what the ad meant. The router had classed it as a brand film, not an app ad. The owner chose to keep the story and make it clear: a drawn street with cars, a motorbike and a drill, typing letter by letter, and the street itself playing after play. Style frames first, before any build.
Style frames
Six style frames and a new storyboard. Approved with line B, with two fixes: a row of parked cars to make it a real jam, and the camera closer so the machines fill the frame.

Draft 9
The street drawn and timed to the beat, sent with the weak points the agent saw in it. The owner asked for all four to be fixed: a shorter, livelier ending, more cars inside the frame, more camera movement, and less limiting at the peak. Draft 10 came out at 33.5 seconds and was rejected for missing the 35 second minimum.
Draft 11
Two rows of cars, the camera closing in on each machine, an ending cut from 9 to 6.5 seconds. The owner asked for a black end screen with the Spotify logo animating in, and for the unofficial line to leave the video and live on the gallery caption and this card instead.
Draft 14
The black end card with the official logo landing on the last hit at 33.5 seconds. The owner listened to the sound and approved it. Final render at 1920 x 1080, the last review round, delivery and this case study.
What Ice asked
Brand ownership and material
b) not the brand: unofficial concept (default, user said do not ask)
The recommended default
Voice source
a) every word on screen, music-led (default, no permitted voice source)
The recommended default
Picture in mind
a) pitch ideas (default)
The recommended default
Platform
YouTube and social feeds plus the gallery page (decision D-06)
The recommended default
What was supplied
Briefpartial
Filled in: goal, audience, platform and aspect, message, call to action, must-include content, commercial use missing
Brand kit (logos only)partial
Filled in: palette with roles, typefaces and imagery style missing (filled from Spotify's own site and guidelines by ice-assets)
The workflow, stage by stage
All ten stages, from the brief to delivery: what each one decided and why, what it made, the critic rounds and the roles that worked on it.
Stage 01, Brief
Rolesuserapprovercriticresearcher
Intake, research R-01 to R-08, compliance, truth sheet, brand material; approver PASS on second pass (ice/review/stages/01-approver.md)
Decisions
D-01 Ask or not ask at stage 01
- AChosen
- - A: Send no message
- every field takes its default with a D-entry (rests on: questions.md section 5 signal "don't ask")
Why, and its source
The user's own words are a "don't ask" signal; the router's stops table then has zero stops (no stage 01 message, no preview approval).
Source: brief slot mode (router; user signal quoted); ice-motion-director/SKILL.md section 3.3 and section 5 "Stops"; ice-direction/references/questions.md section 5
D-02 Brand ownership
- BChosen
- - A: I am the brand: use its official material as an official film
Why, and its source
Stated in the run conditions and equal to the fixed default; no store badges, offers, prices or claims the brand's own pages do not state today.
Source: run conditions (quoted); ice-direction/references/questions.md section 2 fixed option set; ice-assets/references/brand-authenticity.md section 10 steps 1 and 10
D-04 Commercial use
- AChosen
- - A: unknown: never open the noncommercial folder (default when unanswered)
Why, and its source
The user did not say; unknown keeps every noncommercial-only source closed, which costs nothing because the skill's permissive references cover the same ground.
Source: ice-film/SKILL.md section 8; ice-direction/references/intake-and-brief.md section 1 slot commercial_use
D-05 Market (provisional, for research)
- AChosen
- - A: Arabic version for Egypt and the wider Arab world (MENA)
- English version global (rests on: prompt language and dialect)
Why, and its source
The user's own dialect points to Egypt; an Arabic film for a pan-Arab streaming audience reads in MENA when its on-screen words are clear Arabic; the English version serves the gallery's global audience. Research queries use market "Egypt", "MENA" and "global".
Source: brief slots language and market (prompt); ice-direction/references/intake-and-brief.md section 1 ("market: infer from language and brand")
D-06 Platform (provisional, for research)
- AChosen
- - A: YouTube and social feeds (Instagram
- TikTok
- YouTube Shorts)
- plus the public gallery page (rests on: run conditions "public gallery"
- length range)
Why, and its source
A 35 to 60 s ad for a gallery is watched on a web page and on YouTube (landscape); the same film is most often reused in feeds (vertical). Research queries use platform terms "YouTube", "Instagram", "TikTok". Final ratios are set at 03 from the film type's deliverables.
Source: run conditions ("public gallery"); brief slot duration (prompt); ice-direction/references/intake-and-brief.md section 1 ("platform: infer")
D-08 Size and crew
- AChosen
- - A: Size standard (7 to 60 s, versions included)
- crew Full: length row Standard (21 to 45 s) or Full (over 45 s), plus one row per flag: two language versions
- a real brand's UI rebuilt at 90 percent fidelity
- more than one master aspect composed separately (16:9 and 9:16 re-laid out). Capped at Full
Why, and its source
The film-setup.md rule moves one row up per flag and never above Full; with two languages and re-laid-out aspects the run has 12 to 20 dispatches, a reviewer per round per master, and up to 3 film review rounds per master. Size stays standard because the router says language versions and cutdowns of a 7 to 60 s film keep it Standard.
Source: brief slots duration and language (prompt); ice-motion-director/SKILL.md section 4; ice-film/references/film-setup.md section 2
D-09 Goal and audience
- AChosen
- - A: Goal "open Spotify and play something for the moment you are in"
- audience 18 to 34 on phone feeds (sound often off at first) for both versions, plus laptop gallery viewers for English (rests on: R-02 S-17 and S-15 on Egypt's free-listening and data barriers
- R-01 S-15 to S-19 on Spotify's own campaigns built on personal listening moments
- D-06 platform)
Why, and its source
The only action an unofficial concept can honestly ask for is to play something; it is also the action Spotify's own link wording names ("PLAY ON SPOTIFY", "LISTEN ON SPOTIFY", R-01 S-02). Sound-off feed viewing is why every word is on screen (D-03).
Source: brief slots platform (D-06), real_brand (prompt); R-01 (2026-10-20) S-02, S-15 to S-19; R-02 (2026-10-20) S-06, S-15, S-17
D-10 Aspect ratios and deliverables
- AChosen
- - A: 16:9 master per language, with 9:16 and 1:1 re-laid out from the same timeline, plus a poster still per version (rests on: brand-film.md Deliverables
- D-06)
The type's deliverables list exactly this, and D-06 names both landscape and vertical destinations. Cutdowns (15 s, 6 s) are decided at 03 in versions.md.
Source: ice-film/references/film-types/brand-film.md Deliverables; D-06
D-11 Arabic language profile
- AChosen
- - A: Egyptian (Cairo) spoken Arabic, polished register, the way Spotify Egypt writes its own pages ("اسمع موسيقى من غير حدود"، "هتدفع ... بس بعد كده") (rests on: R-02 S-07
- prompt written in Egyptian Arabic)
Why, and its source
dialect-profiles.md section 1 says a text-light film with no voice decides between MSA and the most likely audience dialect; the brand's own Arabic copy for this market is Egyptian colloquial, and the user writes Egyptian. Native reader: the user by default; the sign-off stays open in the delivery note (no preview approval in this run).
Source: R-02 (2026-10-20) S-07; prompt; ice-arabic/SKILL.md section 1; ice-arabic/references/dialect-profiles.md sections 1 and 2
D-12 Picture in mind, and the request's triage
- AChosen
- - A: Not yet, pitch ideas (fixed default for the question)
- triage: unformed about the telling, so the full concept round runs at 02 (rests on: questions.md section 4 default
- intake-and-brief.md section 4 "An ad prompt that gives facts and an occasion ... but no telling ... always enters the concept round")
Why, and its source
The prompt holds a subject and constraints but no telling; the skill's rule sends such an ad to the concept round, and the unanswered question takes its default.
Source: prompt (quoted); ice/state.json questions[2]; ice-direction/references/questions.md sections 4 and 5; ice-direction/references/intake-and-brief.md section 4
D-16 The fourth noise source: a demolition hammer instead of TV static
- BChosen
- - A: horn
- drill
- engine
- TV static (as the critic listed) (rests on: D-13-critic.md fix 3)
Why, and its source
TV static has no clear everyday Egyptian noun and its sound is a hiss with no transient, so it cannot carry the backbeat; the demolition hammer has an everyday Cairo word ("تكسير", the neighbour's renovation) and a hard transient that becomes the backbeat (tak in maqsum, the snare in the straight four). It stays a machine or tool source, inside the critic's rule.
Source: ice/review/direction/D-13-critic.md fixes 3 and 4; ice/review/direction/D-13-consultant.md; ice/plan/script.md shot 1 and the Arabic dialect review
D-22 Default-kit items kept, with reasons
- A. Reasons: the dark opener of kinetic type is the concept itself (the street's noise is written as words, D-13 and D-15), not decoration; the search box is Spotify's real, captured input and the film's hinge, and the answer now lands whole instead of being typed (critic fix 4); the mint #91EEDA is Spotify's own Premium page accent, not a generic "cyan on dark".Chosen
- - A: keep the dark kinetic-type opener and the search box with reasons
- mint stays as a Premium page accent (rests on: D-15
- TRUTH F1)
Source: D-17-critic.md (default kit count 3, fix 4); anti-sameness.md section 6
D-24 End-card ground
- AChosen
- - A: the green logo on pure #000000 inside an oval zone wider than its clear space
- outside the zone the black thins to 86 percent so the dim street and its lights show through (background with texture)
- the search field under the logo (second layer)
- two or three out-of-focus lane lights near the lens at the frame corners, drifting (foreground) (rests on: R-01 S-02 green-on-black rule
- composition-and-staging.md section 7.2)
Why, and its source
the green logo is Spotify's primary colourway and the film's only green after the play circle, so it should close the film; keeping its own zone pure black satisfies the logo rule while the frame around it keeps the street's texture and depth; B gives up the green; C fails the floor.
Source: R-01 (2026-10-20) S-02; ice/review/stages/05-approver.md item 1; ice-motion/references/composition-and-staging.md section 7.2
D-25 Arabic melody lane word order
- AChosen
- - A: words in reading order: "حاجة" in the rightmost melody cell
- "دي" in the leftmost
- so the lane reads correctly from right to left while the playhead lights them left to right (rests on: rule 11 for the timeline
- letterforms-in-motion.md section 6 reading order for words)
Why, and its source
the words are read, the timeline is not; A keeps both rules. The melody notes still play left to right; the score does not sing the words, so no word-to-note sync is lost.
Source: ice-arabic/SKILL.md section 2 rule 11; ice-arabic/references/letterforms-in-motion.md section 6; ice/review/stages/05-approver.md item 2
D-26 Size of the rebuilt interface strings in Arabic
- AChosen
- - A: interface strings at the capture's own proportion (Arabic at the Latin size, as Spotify's Arabic web player sets them)
- the film's own words (noise words, lane words, the painted line, tile titles) keep D-19's 1.35 (rests on: measured on the captures at 07: the Arabic placeholder is 128 px wide in a 474 px field and "أفضل النتائج" 121 px over a 388 px card
- at 1.35 the rebuild measured 175 px and 162 px, at 1.0 it measures 130 px and 121 px)
Why, and its source
inside the rebuilt interface the capture is the authority (section 11.1); Spotify itself sets Arabic at the Latin size there, and IBM Plex Sans Arabic at that size matches the capture's ink width within 2 percent. D-19's reason (Arabic read words visibly smaller than Latin at equal size) concerns the film's own type, which keeps 1.35. The answer stays legible: 40 px in the 16:9 master, 37 px in 9:16.
Source: ice/review/ui-fidelity/sheet-ar.png; film/js/ui.js (uts); D-19
D-28 One version only: English, 16:9 (owner's decision)
- BChosen
- - A: deliver the six planned films (rests on: the prompt and D-10)
Why, and its source
the owner (Omar) narrowed the scope mid-run, in his words: "منا مش عايز غير نسخة واحدة فقط لا غير. انجليزي و 16:9 عجبتني ووافقت عليها ... هي نسخة واحدة كاملة من كل شيئ حتى الميوزك والساوند ايفكت وغيره" (I want only one version, nothing else; English and 16:9, I liked it and approved it; one complete version of everything, music and sound effects included). He watched ice/renders/draft-3-en.mp4 and approved its story, scene order, look and pacing; later changes are allowed only where they fix the static, empty last 8 s and the grey placeholder Top result card. The user's newest explicit note outranks earlier notes (ice-film SKILL.md).
Source: the owner's message relayed by the run coordinator, 2026-10-20; ice/renders/draft-3-en.mp4
D-30 Owner feedback round on draft-7 (2026-10-21)
- option 1, same story, made clearChosen
Source: the owner's notes relayed by the run coordinator, 2026-10-21; ice/renders/draft-7-en-av.mp4
D-32 Which machine plays which part
- AChosen
- - A: the car horn is the kick (low hit)
- the pile driver the backbeat (snare on 2 and 4)
- the road breaker the hats (eighths)
- the motorbike the bass (rests on: each machine sound matches its part: a horn is a short low blast
- a ram is a single heavy hit
- a breaker is a fast repeat
- an engine is a low held tone)
it follows the owner's mapping and keeps the press-to-first-honk handoff (the pressed play circle drops onto the car horn and the horn plays the first kick).
Source: D-30; ice/plan/storyboard.md revision 5
D-33 New length and timing
- AChosen
- - A: 36.0 s: noise 0 to 2.9, question 2.9, typing 3.3 to 5.4, Top result card 5.75, press on the first downbeat 7.5, one machine per bar to 15.5, fill, breath 17.5 to 19.5, drop 19.5, the line 23.5 to 27.5, the field returns 27.5, logo 29.5, unofficial line 30.5, last hit 33.5, ring-out to 36.0 (rests on: the owner's timing for the noise and the typing
- four bars of joining machines
- the prompt's lower bound)
it keeps the approved order with the owner's two timing fixes and stays inside the brief's 35 to 60 s.
Source: ice/plan/storyboard.md revision 5; ice/plan/storyboard-strip-v2.png
D-34 The line over the playing street (for the owner's choice)
- B, chosen by the owner (D-35)Chosen
- - A: "Pick a song. The street keeps the beat." (rests on: the action you take, then what the street does
- costs: it says "song" while the card the viewer pressed is labelled "Playlist")
Why, and its source
the owner's note asks for a line that explains; B names the cause the viewer saw (the press) and the effect (the noise becomes the beat) and matches the card, where A and C say "song" over a playlist (the approver's note). Reading time by the ice-type rule (letters / 15 + 1.5 s): B 3.6 s, A 3.5 s, C 3.1 s; the line holds about 3.6 s from half in to half out, so each option fits. A and C fit the same two-line layout.
Source: D-30; ice/plan/style-frames/v2/frame-5-the-line.png; film/js/config.js (COPY.lineParts); ice/plan/script.md (word count and claim test after the rework)
D-35 Owner approval round on the reworked plan (2026-10-21)
- as aboveChosen
his decisions
Source: the owner's approval relayed by the run coordinator, 2026-10-21
D-36 The jam cars on the groove (fix a)
- AChosen
- - A: two horn stabs a bar from the drop: the cars behind the hero honk on the off-beats, steps 6 and 14 of 16 (the "and" of beats 2 and 4), alternating car by car, a second, higher horn voice in the score
- in the noise they honk out of time with the rest (rests on: the off-beats are free of the kick and the backbeat, so the stabs answer the hero's kick like a horn section
- one car per stab keeps each honk visible)
Why, and its source
the owner asked that the hero stay the kick and the others join where the score supports it; the off-beat steps 6 and 14 are free of the kick and the backbeat (they share their step with the bass and the hats, a mix point for 08b), and they read as cars honking back at the hero.
Source: D-35; ice/plan/cue-sheet.json (patterns); film/js2/street.js (JAM)
D-38 Owner feedback round on draft-9 (2026-10-21)
- fix all four (D-39 to D-42)Chosen
his decision
Source: the owner's notes relayed by the run coordinator, 2026-10-21; ice/renders/draft-9-en-av.mp4; ice/review/gates-draft9/
D-39 A shorter, living ending (note 1)
- AChosen
- - A: the field returns at 27.5 for one beat pair, the logo cadence at 28.5 (bar 10 beat 3), the unofficial line from 29.0, four seconds of the street playing on the beat under the logo, the last hit at 32.5 (bar 12 beat 3), the ring-out to 35.0 (the film 35.0 s, the prompt's lower bound)
- the end card camera closer (scale 0.39 instead of 0.342), the logo, field and line re-spaced in the black sky, the street brighter under it with the windows and the lamps pulsing on the beat and the jam answering to the last hit (rests on: the ending from 27.5 is 7.5 s instead of 8.5 s of field and logo over a still street
- the question 7.5 s on screen, the logo 6.25 s, the unofficial line 6.0 s, all above their reading times
- the film stays inside 35 to 60 s)
Why, and its source
it shortens the ending and makes it play, keeps every required reading time, and keeps the film inside the length the prompt locked; the owner's "a little under 36 s" reads as 35 s, not under it.
Source: D-38; film/js/config.js (CUE2); ice/plan/cue-sheet.json (re-exported; the 33.5 s sheet of draft-10 kept as cue-sheet-draft10.json); ice/review/stages/07-08-draft10-approver.md (return item A)
D-40 A denser jam inside the frame (note 2)
- AChosen
- - A: a second row of the jam in the far lane (three cars and vans standing above and behind the hero car, a little smaller for depth), the motorbike moved forward in the far lane between that row and the road works, the wide frames shifted to take in the two rows
- the jam stabs from the drop cycle through all seven cars, one car per stab (rests on: seven vehicles stacked in two rows read as a jam at a glance in the same width the machines need)
only the second row puts more cars inside the same frames; cycling the stabs through the seven cars matches the sound, which already plays one car per stab (08a note on draft-9).
Source: D-38; film/js2/street.js (JAM, order); ice/plan/cue-sheet.json (music.jam)
D-42 Peak limiting at or under 6 dB (note 4)
- AChosen
- - A: make the score's own peaks smaller instead of limiting them (softer transients at the drop impact and the kick, the jam stabs kept off the bass peak, gentle saturation before the bus), deliver the score with true-peak headroom so the master adds little, and measure the total peak reduction from the unlimited bus to the final master at 6 dB or less (rests on: harshness comes from the limiter working hard
- a smaller crest needs less of it)
it keeps the loudness target and removes the cause at the source.
Source: D-38; ice/audio/score.py (version 5); ice/audio/NOTES.md
D-44 Owner approval of draft-11, with one change to the ending (2026-10-21)
- as aboveChosen
his decision
Source: the owner's words relayed by the run coordinator, 2026-10-21; ice/renders/draft-11-en-av.mp4
D-45 The black end card and the logo entrance
- AChosen
- - A: the empty search field returns over the playing street at 27.5 and holds 4.0 s (the call to action read in full)
- 31.5 (bar 12 beat 1) to 33.0 the street and the field fade to black together
- 32.5 to 33.5 the official logo fades up and scales from 0.92 to 1.0 as a whole on an accelerating curve, centred at 768 px (40 percent of the width), landing at scale 1.0 on the final hit at 33.5 (bar 13 beat 1)
- the exact file holds on #000000 for 1.5 s while the chord rings out to 35.0 (rests on: R-01 motions only
- the question keeps its reading time
- the logo lands on a downbeat
- no pure black frame
- an end hold within the reading time of a text-less end card
- 35.0 s). Built first as draft-12 with the landing at 32.5 (the owner asked for about 32.5 s): look.py failed G2 (20 pure black frames, 30.97 to 31.63 s) and G3 (the logo still 2.5 s against 1.77 s), so the landing moved to the next downbeat, one second later
- draft-13 then failed G3 again (the ease-out tail of the entrance read as held for 3.0 s: the logo is about 7 percent of the frame, so a gentle change stays under the per-frame threshold), so in draft-14 the entrance accelerates into the hit and stops on it, measured end hold 1.47 s
Why, and its source
it does exactly what the owner asked with the plainest motion R-01 allows, and keeps the call to action readable before the screen goes black.
Source: D-44; film/js/config.js (CUE2), film/js/lockup.js, film/js/ui.js, film/js2/street.js; ice/plan/cue-sheet.json (re-exported)
D-46 The non-affiliation line leaves the video (owner's decision, 2026-10-21)
- (b): the film carries no non-affiliation line anywhere; the gallery caption and the landing card carry it in the exact wording "Unofficial concept, not affiliated with Spotify".Chosen
Why, and its source
his decision, taken after he was told the risk. It overrides, for this demo only, run condition 3 of DEMO-BRIEF.md (the film no longer ends with the line), RD-01 (placement: not in the film), ledger L4 (the film part) and the label gate of brand-authenticity.md section 10 step 10; every check that asks for the line in the film passes on this point by his decision. The other logo rules stay (R-01: the official file, unaltered, no co-branding, no implied endorsement).
Source: the owner's words relayed by the run coordinator, 2026-10-21; DEMO-BRIEF.md run condition 3; ice/assets/TRUTH.md RD-01; ice/research/COMPLIANCE.md RD-01
D-47 Final approval of draft-14 by the owner (2026-10-21)
- draft-14 is the approved cut: final render at 1920x1080, English, 16:9, one version; then delivery (ice/renders/final/, ice/review/NOTE.md, a 16:9 English poster still) and the case study export.Chosen
Why, and its source
his decision. It confirms the logo landing at 33.5 s with the 1.5 s hold (D-45; the heads-up question is answered by his approval of draft-14), and it closes the "nobody has listened" caveat: the owner listened to the sound.
Source: the owner's words relayed by the run coordinator, 2026-10-21; ice/renders/draft-14-en-av.mp4; ice/review/stages/07-08-draft14-approver.md
D-48 Viewer takeaway, written late at stage 09 (clarity gate)
- (a): the block "## Viewer takeaway" under the chosen concept in ice/plan/concepts.md, quoted here:Chosen
- - (a) write the takeaway late, only from text locked at 02 and before read 3, then run a blind read 3 on the delivered master (rests on: clarity-gate.md section 2, the takeaway is a restatement of the locked concept
- section 3, a new viewer per read
- the film is unchanged, D-47)
Why, and its source
(a) is the only option that tests the delivered film against a target fixed before the read; (b) leaves the gate untested and (c) has no Sells or Offer's job and would match the viewer to words on screen rather than to the concept. Every field restates text locked before read 3 (sources in brackets in concepts.md); nothing is new, so the concept, the film and its approval (D-47) do not change.
Source: ice/plan/concepts.md "Viewer takeaway"; D-13; D-30; TRUTH.md; BRIEF.md; ice-qa/references/clarity-gate.md sections 2 to 5
Made in this stage
01-COMPLIANCE.mdResearch note COMPLIANCE.md
Open the file: 01-COMPLIANCE.md01-R-01-RQ-brand.mdResearch note R-01-RQ-brand.md
Open the file: 01-R-01-RQ-brand.md01-R-02-RQ-business.mdResearch note R-02-RQ-business.md
Open the file: 01-R-02-RQ-business.md01-R-03-RQ-rules.mdResearch note R-03-RQ-rules.md
Open the file: 01-R-03-RQ-rules.md01-R-04-RQ-color.mdResearch note R-04-RQ-color.md
Open the file: 01-R-04-RQ-color.md01-R-05-RQ-type.mdResearch note R-05-RQ-type.md
Open the file: 01-R-05-RQ-type.md01-R-06-RQ-category.mdResearch note R-06-RQ-category.md
Open the file: 01-R-06-RQ-category.md01-R-07-RQ-ads.mdResearch note R-07-RQ-ads.md
Open the file: 01-R-07-RQ-ads.md01-R-08-RQ-refs.mdResearch note R-08-RQ-refs.md
Open the file: 01-R-08-RQ-refs.md01-BRIEF.mdThe brief: what the user said and every slot with its source
Open the file: 01-BRIEF.md
Stage 02, Concept
Rolescriticconsultantapprover
Concept D-13 (C2 plus C1 hinge), structure D-14 (crane up with chain reaction); approver PASS second pass
Decision
D-13 Concept
- mix of C2 (body and hero) with C1's exact question as the hinge, the critic's own recommendation, with the critic's five fixes applied (ice/plan/concepts.md)Chosen
- - C1: One question
- 777 million answers (subject world) (rests on: R-01 capture "What do you want to play?"
- R-02 S-01 figures
- R-07 open space "interface as main stage")
Why, and its source
C2 is the only KEEP (7): one idea, readable muted from frame 0, and its percussion-led score is the most code-friendly in the round; C1's exact Spotify question fixes C2's failed competitor swap. The critic's Arabic condition for the pill was met by capturing Spotify's own Arabic search placeholder on 2026-10-20.
Source: ice/review/direction/D-13-options.md; R-01, R-02, R-06, R-07, R-08 (2026-10-20); COMPLIANCE.md; TRUTH.md (F1, Arabic interface strings)
Made in this stage
02-concepts.mdConcepts pitched and the one chosen
Read the whole file: 02-concepts.mdConcepts: spotify-concept-ad
Runtime date: 2026-10-20. Stage 02. Decision: D-13 (ice/DIRECTION.md). Options file: ice/review/direction/D-13-options.md. Consultant: ice/review/direction/D-13-consultant.md. Critic: ice/review/direction/D-13-critic.md.
The round (five pitches, one per path)
| ID | Path | Concept in one sentence | Critic |
| C1 | Subject world | Spotify's search field asks "What do you want to play?" and a day answers it, each answer re-scoring the frame, until the field multiplies into 777 million answers | REVISE, 6 |
02-TREATMENT.mdThe treatment handed to the build
Read the whole file: 02-TREATMENT.mdTreatment: spotify-concept-ad (The street plays along)
Runtime date: 2026-10-20 Direction: D-17 (palette D-18, type D-19, sound D-20, motion D-21) Concept: D-13 (structure D-14, opening D-15)
PAGE
Problem: the city around you is loud with noise you did not choose: horns, drills, engines, the neighbour's renovation.
Audience: 18 to 34, in Egypt and the Arab world (Arabic version) and worldwide (English version), on a phone feed that often starts muted, and gallery visitors on a laptop with sound.
Stage 03, Script
Rolescriticapprover
Script EN and AR, versions (6 films plus posters), hooks C plus A; approver PASS second pass
Decisions
D-03 Voice source
- AChosen
- - A: Every word on screen in each language
- with music and sound
- no voice (fixed default)
Why, and its source
No permitted voice source exists; the router's "voice implied, no voice source" rule keeps the film on ice-film, music-led. The cut is built so a voice could be added later without re-cutting.
Source: run conditions (quoted); ice-motion-director/SKILL.md section 2 "Voice implied, no voice source"; ice-direction/references/questions.md section 2 fixed option set
D-14 Structure
- S-B with S-A's chain reaction as the locking mechanism (the critic's mix), and the critic's five fixes: show the choice (an answer enters the pill and becomes the melody lane), the chain causes the rise and accelerates, importance budget 2 of 8 and peak at 67 percent, a short descent with the street playing under the closing pill, a 2.5D tilting plane with frontal billboards for read wordsChosen
- - S-A: Lock-in, row by row (chain reaction on a flat grid) (rests on: structure.md section 2 "chain reaction"
- brand-film.md "Narrative shapes")
Why, and its source
S-B is the only KEEP (7): the top-down reveal makes "the street plays along" literal and one camera meets the brand film's transform-not-cut policy; S-A's chain supplies the cause the camera lacked.
Source: ice/review/direction/D-14-structure-options.md; ice/review/direction/D-14-critic.md; ice-film/references/structure.md sections 2 to 7; film-types/brand-film.md
D-15 Opening (first 3 seconds)
- C mixed with A's dominant horn word, with the hook critic's five fixes (ice/plan/hooks.md)Chosen
- - A: typography leads
- one giant noise word slammed across the frame (rests on: concept-menus.md section 3 "A giant word cropped by the frame edge")
Why, and its source
the hook critic scored C highest (REVISE 6) as the only first frame a muted viewer reads at once, with an escalating fall into the 5.0 s horn; A's crop is a hard Arabic failure, B has no whole word at frame 0.
Source: ice/plan/hooks.md; studies ice/renders/studies/opening-*.mp4 and ice/plan/hooks/opening-studies-sheet.png; ice/review/direction/D-15-critic.md
Made in this stage
03-structure.mdStructure
Read the whole file: 03-structure.mdStructure: spotify-concept-ad
Runtime date: 2026-10-20. Stage 02. Decisions: concept D-13, structure D-14. Critic: ice/review/direction/D-14-critic.md.
Film type: brand film (D-07), borrowing the app ad's real product moment (Spotify's search field).
One claim (seven words or fewer, no conjunction): You choose what you play.
(The treatment does not exist yet at 02; the claim and PAGE lines are taken from the chosen concept here and copied into ice/plan/TREATMENT.md at 05. See PILOT-NOTES, structure.md section 1 problem.)
03-script.mdScript
Read the whole file: 03-script.mdScript: spotify-concept-ad (The street plays along)
Mode: Write (no script supplied)
Language and dialect: two versions. English (plain international, sentence case). Arabic: Egyptian (Cairo) spoken Arabic, polished register (D-11), every on-screen word in Arabic lettering except the Latin name "Spotify" and the English unofficial line (RD-02); transcreated, not translated.
Length target: 49.0 s (the D-14 beat plan re-timed at 03 so the question and the answer each get about 3 s of reading hold, and extended at 04 so the Arabic end card holds the logo plus both unofficial lines; the film runs 49.0 s in every plan file).
Word budget: 20 words or fewer per version in total, counting each distinct on-screen string once (the closing question repeats the same string the viewer already read at 5.5 s, so it adds no new reading; brand film text density: manifesto lines word by word, at most 2 lines, about 6 percent of frame height per line). The required unofficial label is exempt from the count (truth-sheet.md section 12: disclaimers are marked and exempt from text counts).
03-hooks.mdOpenings compared
Read the whole file: 03-hooks.mdHooks: spotify-concept-ad
Runtime date: 2026-10-20. Stage 03 openings step (ice-film/references/openers-and-endings.md sections 2 to 4).
Priority test: benefit "the noise around you can become your track"; open question "who wins: the noise, or me?"; payoff at 12.0 s (the play press locks the first noise to the beat) and fully at 31 s (the street as a drum machine).
Studies: grey blocking, real copy, real candidate fonts (Inter Bold for English, Noto Kufi Arabic 800 for Arabic; type is decided at 05), first 3.2 s, rendered with the HTML capture renderer at half size: ice/renders/studies/opening-<A|B|C>-<en|ar>.mp4; stills at 0, 1 and 3 s: ice/plan/hooks/opening-studies-sheet.png. The studies are built in isolation from the film; their timing may differ from the final cut.
| Opening | Leads with | Frame 0 | By 1 s | By 3 s | Heard | Muted read | Choice notes |
Stage 04, Storyboard
Rolescriticapprover
drawn-street rework (D-30): storyboard rev 5, shot-plan rev 5 with 15 contracts, strip as the staging board; approver second check ice/review/stages/04-05-rework-approver.md
Decisions
D-37 A closer camera and a taller street (fix b)
- AChosen
- - A: tighten the layout (the motorbike in the far lane right above the hero car, the pile rig on the site right above the breaker, the jam running out of frame to the left), raise the buildings behind the action to just under the end card's limit, and raise the camera scale: about 1.1 on the opening car, 0.85 to 1.0 on each machine as it joins, about 0.72 when all four play
- the end card stays at 0.342 (rests on: the machines fill the frame and the frame top meets facades instead of sky, while the end card keeps its whole street)
only A answers both halves of the note (machines larger in the frame, less empty sky); B and C each move the emptiness or leave the machines small.
Source: D-35; ice/plan/style-frames/v2/ (updated); film/js2/street.js (camera keys)
D-41 Camera movement while the machines join (note 3)
- AChosen
- - A: a slow push toward each machine through its joining bar (the breaker 9.5 to 11.0, the pile rig 11.6 to 12.7 with the tilt kept, the motorbike 13.6 to 15.3), a travel between them, then a pull out to the band for the fill with a slow drift to 17.5 (rests on: each push names the new player
- nothing holds still more than half a second)
the owner named a push or a drift toward each machine; A does exactly that inside the one-camera grammar.
Source: D-38; film/js2/street.js (KEYS)
Made in this stage
04-storyboard.mdStoryboard
Read the whole file: 04-storyboard.mdStoryboard: spotify-concept-ad (The street plays along), revision 5 with the owner fixes (D-35), the draft-9 notes (D-38) and the black end card (D-44 to D-46)
The owner approved draft-11 and changed the ending (D-44): the end card is a fully black screen where the official Spotify logo enters with a fade and a 0.92 to 1.0 scale and lands on the final hit (D-45); the film carries no non-affiliation line, which lives in the gallery caption and the landing card (D-46). The storyboard as it stood for draft-11 is kept in storyboard-draft11.md.
After draft-9 the owner asked for four fixes (D-38): a shorter, living ending (D-39: the film is 35.0 s, the prompt's lower bound; the field returns for 1 s, the logo card from 28.5, the last hit at 32.5, the ring-out to 35.0, the end card closer with the street playing on the beat), a denser jam inside the frame (D-40: a second row of three cars and vans in the far lane, the stabs cycling one car per stab), camera pushes toward each machine as it joins (D-41) and less limiting at the drop (D-42, sound). The storyboard as it stood for draft-9 is kept in storyboard-draft9.md.
The owner approved revision 5, the six style frames, line B and 36.0 s (D-35), and asked for two fixes folded in before the build: a row of cars standing in a jam behind the hero car (D-36: the hero keeps the play circle and the kick; the cars behind it answer on the off-beats from the drop) and a closer camera with much less empty sky (D-37: taller buildings behind the action, the motorbike in the far lane right above the hero car, scales 0.7 to 1.1 instead of 0.56 to 0.75). Revision 5 as approved is kept in storyboard-rev5.md.
Revision 5 answers the stage 05 rework critic (ice/review/rework-04-05-critic.md, REVISE with 5 fixes) on revision 4, which answered the owner's feedback round on draft-7 (D-30, 2026-10-21): the same story, made clear. The street is a real drawn street built in code (D-31); every sound comes from a visible machine; the search answer is typed letter by letter; after the press the same machines play the song (D-32); the abstract lane grid is gone. What revision 5 changes: the machines are drawn 1.6 times larger and stand close together (the pile rig on the site right above the breaker, the motorbike in the far lane right after it), so all four fill the wide frames; the pile rig is redrawn with its pile going into the ground, a flash where the ram meets the pile and dust where the pile goes in; the site has solid hoarding instead of thin scaffold bars; the extra parked cars are gone; every word sits next to its source with a black outline; the line is rewritten so it explains the idea (D-34, for the owner to choose); the end card puts the logo, the field and the required line in a pure black sky above the rooftops with the whole street below (no floating panel, no light blobs). Revision 4 is kept in storyboard-rev4.md, revision 2 in storyboard-rev2.md.
04-shot-plan.mdShot plan
Read the whole file: 04-shot-plan.mdShot plan: spotify-concept-ad (shot contracts), revision 5 with the owner fixes (D-35 to D-37) and the draft-9 notes (D-38 to D-41)
The contracts below hold for draft-14: the film is 35.0 s; shots 13 to 15 are re-timed (27.5 to 31.5, 31.5 to 33.5, 33.5 to 35.0; the end card is the logo alone on black, D-44 to D-46); shots 6 to 9 carry the camera pushes of D-41; the jam has a second row in the far lane (D-40). The draft-9 contracts are kept in shot-plan-draft9.md.
One composition: film/v2-en-16x9.html loading film/js/util.js, config.js, ui.js, lockup.js and film/js2/street.js, main.js (one continuous timeline; shots are time ranges of one camera along a drawn street). English 16:9 only (D-28). Times in seconds at 30 fps, from storyboard.md revision 5 (D-33). Richness values are measured on the stills of the real build with ice-qa's own area function (film_gate.area_features, 320 px grey; temp/v2o/v2-en-16x9/), and for type and interface heroes as hero_width, the hero text or interface width over the frame width. Every camera entry gives its reason. The revision 3 contracts of the lane-grid world are kept in shot-plan-rev3.md.
| Shot | Time | Claim and evidence | Start state | Decisive state | Handoff state | Focal owner | Motion verb | Camera window and reason | Layer manifest (back to front) | Alive | Richness (hero_share / frame_fill of 16 / depth) | Cues | Assets | QA checks |
| 1 | 0.0-2.9 | none (situation) | close on the grey honking hero car at frame 0, the jam behind it, the motorbike above, HONK in front of it | 2.62: the whole noisy block, the loudest horn, all four machines and their words in frame (frame-1) | the field rises at 2.9 as the street dims | the honking car, then the whole street | fire, pull back | 0.0 to 2.5: pull back from scale 1.1 on the hero car and the jam behind it to 0.7 on the block; reason: find the noise, then show all of it | sky, far skyline (parallax), buildings and site, road and lamps, machines, words | the four machines fire out of time, words pop and fade, the camera pulls back | 91 at 0.3 and 100 at 2.62 / 16 / 4 | horn 0.0, 0.7, 1.4, 1.9, 2.6 (loudest); breaker 0.3, 1.1, 2.0; ram 0.5, 1.25, 2.2; engine 0.15, 1.6, 2.4 | none | frame 0 readable; every read word whole inside the 5 percent margins; no face |
Stage 05, Look
Rolesapprovercriticconsultant
drawn-street look D-31 (gates: default look pass, 4 of 6 vs 01-flat-vector, default kit 2 with reasons); six style frames in ice/plan/style-frames/v2/; D-34 line left for the owner; approver second check ice/review/stages/04-05-rework-approver.md
Decisions
D-07 Film type
- A, Brand filmChosen
- - A: Brand film, borrowing the app ad's "real product moment" (rests on: brand-film.md Fit and Purpose "a feeling the brand owns"
- Timing master music-led by default
- Deliverables 16:9 master with 9:16 and 1:1 re-laid out)
Why, and its source
The asked 35 to 60 s length and an unofficial concept with no CTA badge fit the brand film's purpose (a feeling Spotify owns) and its music-led timing master; the app ad's strength, the real product doing its job, is borrowed as one or two rebuilt UI moments from Spotify's public pages with neutral content, so the film still shows the product.
Source: brief slots duration, real_brand (prompt); D-02; D-03; ice-film/references/film-setup.md section 1 ("Two types fit: pick the one whose purpose matches the goal, borrow parts of the other, log it"); film-types/brand-film.md and app-ad.md (Fit, Purpose, Rhythm ranges, Truth and content, Deliverables)
D-17 Direction (the look)
- A, with the critic's five fixes: (1) at 34 s the locked lanes fold into Spotify's Browse all tile layout under the search field (the street becomes Spotify's own search page); (2) no red: lanes coral #FFA178 (horn, first flood), olive #608108 (hammer), mint #91EEDA (drill), slate #477D95 (engine); (3) light carries the choice: overhead lamps on wires at 1.25x parallax, #2A2A2A until their lane locks, then a 600 px pool of the lane colour at 30 percent over the grain; (4) default kit cut to 2, logged (D-22): the answer lands whole; (5) Arabic read words in IBM Plex Sans Arabic Bold at 1.35x the Latin size, texture at 56 px minimum; the end card on #000000Chosen
- - A: Night shift: Spotify's dark interface becomes the street
- each locked lane takes one of Spotify's own browse colours (rests on: brand sheet, browse tile captures, R-04, R-06)
Why, and its source
A is the only direction that serves the claim with its own mechanics (grey until your press, colour only on a lock) and looks like Spotify's own interface and browse colours made better; B is inherited from the risograph entry (3 of 6 axes) and fails contrast on cream; C is the category convention and inherited from Swiss Motion (2 of 6).
Source: ice/review/direction/D-17-options.md; D-17-consultant.md; D-17-critic.md; R-01 S-02 (2026-10-20); R-04 S-03, S-04; brand-sheet.json; assets/capture/spotify/webplayer-search-en (browse tiles)
D-18 Palette
- BChosen
- - A: dark ground with four browse colours
- red led (coral
- olive
- mint
- red) (rests on: D-17 options A)
Why, and its source
removing red moves the nearest Apple Music red from dE 4.2 to dE 15.2, removes the pan-Arab flag set, and raises the worst lane pair in colour-vision simulation from 4.9 to 6.7 (critic, consultant measures); lanes also differ by position and word, never by colour alone.
Source: D-17-critic.md fix 2; D-17-consultant.md (measurements); captures browse tiles (#477D95, #608108), Premium page (#FFA178, #91EEDA)
D-19 Type
- A, with Arabic read words at 1.35x the Latin size (Plex Arabic body is 69 percent of Figtree's x-height at equal visible height) and Arabic texture words at 56 px or moreChosen
- - A: Figtree 700 and 500 (Latin) with IBM Plex Sans Arabic Bold and Regular (Arabic) (rests on: shape overlap 0.310 Latin
- 0.393 Arabic
- the best Arabic echo of CircularSp-Arab)
Why, and its source
A carries the direction's friendly geometric voice in Latin and the closest independent echo of Spotify's own Arabic site type; the size factor fixes the weight gap the consultant measured. B's Latin is inherited from the rejected direction; C's Arabic line box is smaller than its ink and clips marks.
Source: temp/fontmatch measurements (D-17-options.md); D-17-consultant.md; R-05; type-pairing.md sections 1 to 6
D-21 Motion language
- A (ice/plan/motion-plan.md)Chosen
- - A: one continuous camera
- locks on the beat
- colour and light arrive with the lock
- no cuts (rests on: D-14
- brand-film.md transition policy)
the brand film transition policy asks that nearly every transition turns the current object into the next; one camera keeps the chain causal.
Source: ice/plan/motion-plan.md; brand-film.md; D-14
D-31 The street world: a drawn night street (look, stage 05 rework)
- AChosen
- - A: a flat-vector night street in side view (buildings, lamps, a construction site, a car, a road breaker on a small excavator, a pile driver, a motorbike with a helmeted rider), one continuous camera travelling along it, a far skyline in parallax (rests on: every source is seen whole and at once
- it reads on a phone
- it builds as SVG shapes from code
- the camera can travel to each machine as it joins)
Why, and its source
it answers the owner's note directly (a street you recognise, every sound visible) and keeps the film's grammar (one camera, colour arriving on each lock). Grey before the press, each machine taking its lane colour when it joins, the windows as the street equalizer at the drop.
Source: D-30; ice/plan/style-frames/v2/ (six frames from the real build: film/v2-en-16x9.html, film/js2/street.js); ice/plan/storyboard-strip-v2.png; ice/plan/storyboard.md revision 5
Made in this stage
05-DIRECTION.mdDecision log: options, choice, reason and source for every decision
Open the file: 05-DIRECTION.md05-D-13-consultant.mdDirection review file D-13-consultant.md
Open the file: 05-D-13-consultant.md05-D-13-critic.mdDirection review file D-13-critic.md
Open the file: 05-D-13-critic.md05-D-13-options.mdDirection review file D-13-options.md
Open the file: 05-D-13-options.md05-D-14-critic.mdDirection review file D-14-critic.md
Open the file: 05-D-14-critic.md05-D-14-structure-options.mdDirection review file D-14-structure-options.md
Open the file: 05-D-14-structure-options.md05-D-15-critic.mdDirection review file D-15-critic.md
Open the file: 05-D-15-critic.md05-D-17-consultant.mdDirection review file D-17-consultant.md
Open the file: 05-D-17-consultant.md05-D-17-critic.mdDirection review file D-17-critic.md
Open the file: 05-D-17-critic.md05-D-17-options.mdDirection review file D-17-options.md
Open the file: 05-D-17-options.md
Style frame frame-1-ar.png 
Style frame frame-1-en.png 
Style frame frame-2-ar.png 
Style frame frame-2-en.png 
Style frame frame-3-ar.png 
Style frame frame-3-en.png 
Style frame frame-4-ar.png 
Style frame frame-4-en.png
Stage 06, Animatic
Rolesdirectorapprover
drawn street: cue sheet rebuilt and locked (46 events, 17 grid anchors checked, typing keys, jam steps 6 and 14 from the drop); timed stills board of 15 settled stills at or above the floor; lint YELLOW exit 0 with reasons; D-36 and D-37 approved; ice/review/stages/06-drawn-street-approver.md
Made in this stage
06-cue-sheet.jsonCue sheet
Read the whole file: 06-cue-sheet.json{ "locked": true, "locked_at": "2026-10-21 (stage 06, the drawn street; re-timed at 07 for D-39)", "project": "spotify-concept-ad", "version": "en", "fps": 30, "duration": 35, "mode": "music-led", "note": "The drawn street (D-30 to D-37): free-time noise 0 to 3.0 s, the search and the typing in a quiet street bed to the press, then a 120 BPM grid from the first downbeat at 7.5 s. Exported from film/js/config.js and film/js2/street.js by temp/tools/export-cues-v2.mjs; the build, the score and the checks read this file, never retype it. The lane-grid sheet is kept as cue-sheet-v1.json.", "music": {
Stage 07, Build
Rolesapprovercritic
draft-14 (black end card, D-44 to D-46): cue sheet re-exports identically, stills at every cue, G5 PASS, look G2 and G3 PASS, Final Frame Contract 0 px on the whole frame; D-45 approved with the 33.5 s landing awaiting the owner's confirmation; ice/review/stages/07-08-draft14-approver.md
Decisions
D-23 Engine
- BChosen
- - A: HyperFrames (row 8 default) (rests on: engine-choice.md section 1)
Why, and its source
HyperFrames is not installed and the run allows no installs; rung C renders the same page contract with Chrome 149 and FFmpeg 8.1 already on the machine; the 7.5 replacement gates apply.
Source: engine-choice.md sections 1, 7.2, 7.4, 7.5; render-html.mjs first lines: "driver built-in Chrome DevTools driver, browser C:\Program Files\Google\Chrome\Application\chrome.exe", "browser version Chrome/149.0.7827.102"
D-27 Compositing mode for every render
- BChosen
- - A: GPU compositing (the default) (rests on: speed
- measured at 07: the last frame differed from the static logo by up to 28 of 255 on 7,800 to 8,700 edge pixels in 16:9 and 9:16, and by 1 of 255 on 14 to 26 pixels after a fix, changing from run to run with what had been composited before)
the frame then depends only on t, as the build rules require, and the end lockup lands exactly on the official logo in every version.
Source: ice/review/final-frame/result.json; temp renders ffc to ffc5 and cues6 to cues7
Stage 08, Sound
Rolescriticapprover
master on draft-14: -14.0 LUFS, -1.4 dBTP, LRA 7.4, mono -17.2, no gaps, hits on cue incl. the final hit at 33.5; D-42 5.04 dB; ice/review/stages/07-08-draft14-approver.md
Decisions
D-20 Sound lead and music source
- A, logged as a code-made stand-in for a licensed human-made track (named in the delivery note as what a yes to a library download would add)Chosen
- - A: score led, composed by code with the project copy of mgaudio: a groove built from the street's own machines (horn as a low brass stab with the low hit, hammer as the backbeat, drill as the hats, engine as the sub bass), a lead playing the film's motif
- Arabic version in maqsum, English in a straight four, both at 120 BPM
- the noise section as sound design (rests on: D-13 critic fix 1
- ice-audio section 5 code score when no license-safe download is allowed)
Why, and its source
the film's claim is that the noise becomes your music, which only a score built from the same sounds can show; it is license-clean and locked to the cue sheet; C is blocked by the run conditions.
Source: ice-audio/SKILL.md section 5; music-choice-and-licensing.md section 2 (music brands row; downloads not allowed row); D-13-critic.md fix 1
D-29 Loudness profile and the score's loudness-range guard
- AChosen
- - A: Social and web, punchy: -14 LUFS, at or under -1 dBTP on the encoded file, LRA at most 9 to 11 LU
- the 5 to 8 LU music guard read on the music body (12 to 41 s), the whole-film LRA held to the profile (rests on: D-06 feeds and an energetic film
- measured: EN master -14.3 LUFS, -1.1 dBTP, LRA 8.4
- score v2 whole film 8.63 LU, body 4.58 LU)
Why, and its source
the film plays mostly in feeds (D-06), where -14 is the loudness of the content around it, and the whole film sits inside the profile's LRA (8.4 LU on the encoded master). The music guard's band (5 to 8 LU) is not met either way: the whole film reads 8.63 LU (0.63 over, because of the declared quiet stretches) and the music body, 12 to 41 s, reads 4.58 LU (0.42 under: a steady groove). Both figures are reported in the delivery note as an open guard item. The deliberate quiet stretches are what pushes the whole-film figure over 8; filling them would remove the cold-open silence and the breath. Listed in the delivery note with the numbers.
Source: ice/audio/qc_en_v2.json; ice/audio/master_draft4_en.json; ice/review/mix-08b.md; ice/review/stages/08-approver.md
D-43 The code score's arc guard and body LRA after the owner's draft-9 round
- AChosen
- - A: keep version 6 and record the three results with their reasons: the final hit sits 2.5 s before the last frame because the owner asked for the ending to land a hit and stay alive, so it falls inside the last 3 s window
- in a 35 s film the line and the cadence sit at 67 to 81 percent by the locked timing, so the last fifth starts inside the line
- the narrower body is the price of 5.6 dB of total limiting instead of about 9 (D-42) (rests on: each failing clause follows from an owner decision
- the listener-facing profile, D-29, is met)
Why, and its source
the guard protects against endings that fade into nothing and bodies that never breathe; here the owner asked for the opposite of a fade, and the limiting he asked to reduce is what narrowed the body; the master meets D-29 (-14.0 LUFS, -2.2 dBTP, LRA 7.4).
Source: ice/audio/qc_en_v6.json; ice/audio/NOTES.md (Version 6); ice/audio/peak_reduction_en_v6.json; ice/review/stages/07-08-draft10-approver.md (item B)
Made in this stage
08-sound-plan.mdSound plan
Read the whole file: 08-sound-plan.mdSound plan: spotify-concept-ad (The street plays along), stage 08a
Built by `ice/audio/score.py` (one script, `--lang en|ar`) with the project copy of mgaudio (MIT), every time read from `ice/plan/cue-sheet.json` (locked, not retimed). Clock: music-led, 120 BPM, bar 0 = the press at 12.0 s, 4/4, a 16th = 0.125 s; 0 to 12.0 s free time. Outputs: `ice/audio/soundtrack_en.wav`, `ice/audio/soundtrack_ar.wav` (48 kHz, 24-bit, stereo, 2,352,000 samples = 49.000 s), stems in `ice/audio/stems_en/` and `ice/audio/stems_ar/` (pre-master, written at -6 dB), `score_spec_en.png`, `score_spec_ar.png`, `beatgrid.png`, measured reports `qc_en.json`, `qc_ar.json`, `beatgrid.json`.
Version 2 (section 7, the director's follow-up for the social-profile LRA): `soundtrack_en_v2.wav`, `soundtrack_ar_v2.wav`, `stems_en_v2/`, `stems_ar_v2/`, `score_spec_en_v2.png`, `score_spec_ar_v2.png`, `beatgrid_v2.png`, `qc_en_v2.json`, `qc_ar_v2.json`, `beatgrid_v2.json`, rendered with `python ice/audio/score.py --lang en --v2` (and `--lang ar --v2`, `--v2 --beatgrid`). Version 1 files are unchanged (checksums verified after the v2 renders). Sections 1 to 6 describe version 1; section 7 lists what version 2 changes and its measured numbers.
This is the 08a score and SFX pass. The final mix on the picture, the exported MP4 measurement and the human listening check belong to 08b and 10. Nothing below is a claim about how it sounds: every number is measured, and no one has listened yet.
1. The four machines are the kit
Stage 09, Review
Rolescriticdirectorapprover
round 4 on the approved cut: critic A SHIP (5 P2), critic B SHIP (2 P3); clarity read 3 PASS r5, a blind viewer on the delivered master: 'Press play and the noise around you turns into music.' (the round-4 read is void); brand film QA: brand test FAIL 0 of 6, competitor swap FAIL (36 percent Spotify-specific), transitions PASS, value flips PARTIAL, listed for the owner; one encode fix R4-01 (bt709 tags); ice/review/stages/09-10-approver-r2.md
Made in this stage
09-critic-round-1.mdCritic round 1
Open the file: 09-critic-round-1.md09-critic-round-2.mdCritic round 2
Open the file: 09-critic-round-2.md09-critic-round-3.mdCritic round 3
Open the file: 09-critic-round-3.md09-critic-round-4.mdCritic round 4
Open the file: 09-critic-round-4.md09-fixes.jsonFix ledger with before and after evidence
Open the file: 09-fixes.json
Critic rounds
Round 1REVISE
- Critic A: 1 P0, 9 P1, 8 P2
- Critic B: 1 P0, 8 P1, 6 P2
- Critic C: 1 P0, 7 P1, 7 P2
- Fixes R1-01 to R1-20 in fixes.json; the frame-0 horn fade and the end card were the blockers
Round 2ONE MORE PASS
- verify-1: SHIP
- verify-2: ONE MORE PASS (the end card: street luma, the groove on the cells, the playhead, the field before 41.0)
Fixed
- Round 1 items: fixed or partly fixed, per verify-1.md and verify-2.md tables
Round 3ONE MORE PASS
- verify-3: ONE MORE PASS (the end card playhead, a cut grey cell, the final flash)
- Fixes R3-01 to R3-03 in fixes.json; then the owner's redirect at draft-7 (D-30) replaced this world with the drawn street
Fixed
- Round 2 items: per verify-3.md table
Round 4SHIP
- Critic A (picture): SHIP, no P0 or P1, five P2 logged (off-frame sources in the first 1.25 s, two words 10 px past the 5 percent margin, the motorbike faces the other way, no motion blur on four fast moves, missing bt709 tags)
- Critic B (sound and sync): SHIP, no P0 to P2, two P3 logged (machine pulses one frame after the kick, 1.9 dB mono loss in the last second)
- First cold viewer (clarity read 3): VOID, it opened the draft by its project path and the critics' labelled packet, and no takeaway existed to match (ice/review/clarity/read-3-cold-viewer.md); the read that counts, read-3-r5 on the delivered master, ran after this round (ice/review/clarity/read-3-r5.md and its match)
- One fix applied without changing the film: bt709 colour tags on the final master (R4-01)
Fixed
- Earlier rounds 1 to 3 judged the lane-grid world that the owner replaced (D-30)
Stage 10, Deliver
Rolesdirectorapprover
final 1920x1080 30 fps 35.00 s, rendered in order from frame 0 with one worker, bt709, -14.0 LUFS, -1.4 dBTP, LRA 7.4, last frame 0 px against the static logo page; poster and six stills; NOTE.md with the D-46 wording, the permissions and the QA fails; fingerprint in ice/review/fingerprint.jsonl (home store not written); ice/review/stages/09-10-approver-r2.md
Made in this stage
10-NOTE.mdDelivery report with measured numbers
Read the whole file: 10-NOTE.mdspotify-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)

Still from the delivered film at 0.00 s 
Still from the delivered film at 17.50 s 
Still from the delivered film at 34.90 s 
Delivered still spotify-concept-ad_street_16x9_poster.jpg 
Delivered still spotify-concept-ad_street_16x9_poster.png 
Delivered still spotify-concept-ad_street_16x9_01-noisy-street_2.67s.jpg
The conversation
Every message between the owner and the agent, in order. The owner's words are verbatim; the agent's replies are summarised by the export.
اعمل إعلان لسبوتيفاي، مدته من 35 ثانية لدقيقة، ونسخة عربي ونسخة إنجليزي.
انا هنام فا معناه متتوقفش لأي اسئلة لاني مش هرد
تمام، مش هقف لأي سؤال. الإعلان هيمشي في الوضع التلقائي، وكل قرار هيتاخد بالبحث ويتسجل بسببه ومصدره.
اكمل من حيث توقفت
الشغل كان واقف من بعد البداية بشوية لأن الليمت خلص، ورجع يكمّل من نفس النقطة في المرحلة الأولى.
بقالك قد ايه وقت! وايه اللي وصلتله
صورة شاشة اتلصقت في الشات، ومحتواها ما اتسجلش.
المراحل من 01 لـ 06 اتوافق عليها: البريف، والكونسبت، والسكريبت، والستوري بورد، والشكل، والأنيماتيك. البناء والمزيكا شغالين، واتبعتت لوحة الـ stills بالـ 13 مشهد.
الليمت اتجدد اكمل
الإعلان رجع يكمّل البناء من نفس النقطة.
ايه حصل بخصوص الاعلان
اتبعت draft-3 الإنجليزي وصفحة فريماته، ومعاهم رأي صريح: آخر 8 ثواني ساكنة وفاضية، وكارت Top result لسه رمادي ومؤقت، والمكساج النهائي لسه ما خلصش.
انت بتعمل ال3 نسخ مع بعض ولا النسخة الاول بس؟
العربي والإنجليزي بيتبنوا مع بعض من نفس الكود، والخطة 6 نسخ: لغتين في 3 مقاسات. مقاس 16:9 وصل لـ draft-4، و1:1 و9:16 بيتعاد توزيعهم.
منا مش عايز غير نسخة واحدة فقط لا غير انجليزي و 16:9 عجبتني ووافقت عليها نبدا نكمل الباقي سواء عربي او ابعاد اخرى هي نسخة واحدة كاملة من كل شيئ محتى الميزوك والساوند ايفكت وغيره
العربي ومقاسات 9:16 و1:1 اتلغوا. هتتسلم نسخة واحدة بس، إنجليزي 16:9، كاملة بالمزيكا والمؤثرات والمكساج والمراجعة والـ case study، وبنفس شكل draft-3 اللي اتوافق عليه.
تمام مستنى
انا عايز اعرف بجد كل الساعات دي بتضيف ف ايه انت لو انسان هتعمل الفيديو يدوي مش هياخد الساعات دي كلها!
من حوالي 20 ساعة، الشغل الفعلي كان حوالي 6 ساعات، والباقي وقفات بسبب الليمت. الوقت راح على 6 نسخ، ومراجعة بعد كل مرحلة، والتوثيق، ودورات الرندر والمراجعة، ومزيكا متألفة بالكود. واتعرض تخفيف الـ workflow.
لا، سيبه زي ما هو
الـ workflow هيفضل بعمقه الكامل، والقرار اتسجل في قواعد الريبو.
باقي قد ايه عالفيديو
حوالي ساعة. الإعلان في جولة المراجعة التانية على draft-7، وبعدها الرندر النهائي والتسليم.
ايوه بس انا كنت عايزك تتابع معايا اول باول وتوريني الشغل اول باول وابقى متابع عشان حتى لو عايز تعديلات فالنص الحقها بدل ما اشوف النتيجة النهائية واتصدم بعد يوم عمل كامل
اتبعت draft-7 بالصوت وصفحة فريماته، ومعاهم اللي اتغير من draft-3 واللي لسه ضعيف. من دلوقتي الشغل بيقف بعد كل draft، ومفيش رندر نهائي قبل ملاحظات المستخدم.
Tekintas استخدمت السكيلز او كل حاجه موجوده في الريمو يعني المفروض ان دي ساس مثلا سبوتيفاي وتقنيه والكلام ده كله اللي انا ملاحظه كيوزر عادي بيشوف الاعلان طويل جدا اللي هي بتاعت الهايند والهارد وبعد كده الكتابه في السيرش بار فجاه النص ظهر ما اتكتبش كتابه يعني ما ظهرش كلمه او حرف بعد كده ظهر الاغنيه تمام كويس نزل على التشغيل حولني على فريم في ثلاثه اللي هو بارت وبانج وبارد وايكونت البلاي عماله تمشي عليهم وتشرحش الفكره على كده ستريت بلاي بلايز الون عايز ان
الـ router صنّف الإعلان brand film مش app ad، وده سبب إنه طلع مجرد. الفريمات أكدت إن نص البحث بيظهر مرة واحدة عند 8.8 ثانية بعد 3 ثواني المؤشر واقف فيهم. الرسالة كانت مقطوعة، فاتطلب تكملتها.
وفريمات الدوشة وبعد البحث وتشغيل الاغنية مش بتعبر بشكل فعلي عن المطلوب
مشهد الدوشة ومشهد ما بعد التشغيل مجردين ومش بيوصّلوا الفكرة. اتعرض حلين: نوضّح نفس الفكرة بشارع مرسوم، أو نحوّل الإعلان لـ app ad.
نمشي بالحل الأول: نفس القصة بس واضحة، شارع مرسوم بجد بعربيات وموتوسيكل وشنيور، الكتابة حرف حرف، والشارع نفسه بيعزف بعد التشغيل. ابعتلي style frames الأول قبل البناء.
الملاحظات والقرار اتبعتوا: شارع مرسوم بالكود، والدوشة حوالي 3 ثواني، والكتابة حرف حرف، والشارع بيعزف بعد التشغيل. الـ style frames هتيجي الأول قبل أي بناء.
اتبعتت 6 style frames والـ storyboard الجديد، والمدة 36 ثانية. الفكرة بقت مفهومة، وفيه نقطتين ضعف: عربية واحدة مش زحمة، والحاجات صغيرة في الكادر. واتعرضت 3 جمل للشارع وهو بيعزف.
موافق على الفريمات بالجملة B. صلّح النقطتين: صف عربيات واقفة في الزحمة، والكاميرا تقرّب عشان المكن يملا الكادر. مدة 36 ثانية كويسة. ابدأ البناء وابعتلي أول draft.
البناء بدأ بالتصليحين، وأول draft بالصوت هيتبعت قبل أي رندر نهائي.
خلصت المطلوب خلاص والريبو جاهز يبقى عام على جيت هاب واثبته على نسخة جديدة من كلود
اتبعت draft-9 بالصوت (36 ثانية) وصفحة فريماته: زحمة عربيات، والكتابة حرف حرف، والمكن بيدخل واحدة واحدة على الإيقاع، والشبابيك بتنور عند الـ drop. لسه ضعيف: النهاية حوالي 9 ثواني هادية، والزحمة لسه خفيفة، والصوت متقاس بس ومحدش سمعه، والـ limiting عالي عند الذروة.
صلح الملاحظات الاربع عالفيديو وعايز اصلح ال 5 مشاكل دول: 1. الإعلان الأول لسه ما خلصش: قسم الـ gallery في الـ README مكتوب فيه “The gallery is being rendered”. يعني أهم دليل على الجودة لسه فاضي. وإعلان سبوتيفاي نفسه بيّن إن الوعد الأساسي لسه مش متحقق: البرومبت الواحد طلّع إعلان مجرد اليوزر العادي مش فاهمه، واحتاج تدخلك. 2. 21 مشكلة اتسجلت في الـ skills أثناء الإعلان: منهم 7 كبار و14 صغيرين، ولسه ما اتصلحوش. من الكبار: * سكريبت الصوت بيعمل fade-in إجباري 1.5 ثانية، وده اللي خلّى أول الإعلان ساكت. * سكريبت الرندر بيقف 5 دقايق من غير ما يقول السبب، لو ملف برا الفولدر. * الرندر بالـ GPU بيطلّع نفس الفريم بشكل مختلف. * سحب شكل البراند مش بيعرف يختار لغة الموقع. * فحص في الجودة بيقرا المشاهد الـ 3D غلط. * وأهمهم: مفيش أي فحص قبل البناء بيتأكد إن المشاهد العادي هيفهم الفكرة. دي بالظبط المشكلة اللي انت لاحظتها. 3. التجربة الكاملة ببرومبت واحد على Claude نضيف لسه ما اتعملتش: محتاجة تسجيل دخولك، وهتاكل من نفس الليمت. 4. ملفات الصيانة فيها مسارات من جهازك: زي `_motion-sources`، ومحتاجة تتنضف. 5. الـ CI بيقع أحيانًا: على بعض أجهزة GitHub مكتبة Python بتقع أثناء الاستيراد.
الملاحظات الأربعة اتبعتت: نهاية أقصر وحية، وعربيات زحمة أكتر جوه الكادر، وحركة كاميرا من 9 لـ 18 ثانية، وضغط أقل عند الذروة. draft-10 هيتبعت قبل أي رندر نهائي، وتصليحات الـ skills بدأت بالتوازي.
Try again
اتبعت draft-11 بالصوت (35 ثانية) وصفحة فريماته بعد الملاحظات الأربعة: صفين عربيات في الزحمة، والكاميرا بتقرب من كل ماكينة وهي داخلة، ونهاية 6.5 ثانية بدل 9، والضغط عند الذروة 5.65 dB. draft-10 كان 33.5 ثانية فاترفض عشان المدة المطلوبة من 35. الصوت لسه محدش سمعه.
جيد جدا فقط النهاية احذف جملة انه غير نصي وخلي الشاشة كلها سوداء واللوجو بتاع سبوتي فاي يظهر بانيميشن
التصليحات بتاعت الريبو كلها تمت وان هو دلوقتي جاهز انه يستعمل على البرودكشن.
النهاية بقت شاشة سودا واللوجو بيظهر بحركة من غير ما يتعدل. اتسأل المستخدم عن مكان جملة عدم التبعية: سطر صغير في الأول، أو تتشال من الفيديو وتفضل في وصف الـ gallery بس. واتوضح إن تصليحات الريبو خلصت ونجحت في الـ tests، بس محتاجة تجربة كاملة ببرومبت واحد قبل ما نقول إنها جاهزة للاستخدام الفعلي.
اشيل جملة غير رسمي من الفيديو خالص، وخليها في وصف الـ gallery وكارت صفحة الهبوط بس، وعدّل القاعدة في AGENTS.md.
الجملة اتشالت من الفيديو كله، وهتتحط في وصف الـ gallery وكارت صفحة الهبوط بس. قاعدة الـ gallery في AGENTS.md اتعدلت، وقاعدة الـ skills لليوزرز فضلت زي ما هي. draft-12 بيترندر بالكارت الأسود واللوجو.
اتبعت draft-14 (35 ثانية) وصفحة فريمات آخر 9 ثواني: خانة البحث فوق الشارع، وبعدها الشاشة كلها بتسود، ولوجو سبوتيفاي الرسمي بيدخل بظهور تدريجي وتكبير خفيف ويقف على آخر ضربة عند 33.5. مفيش جملة غير رسمي في الفيديو. الصوت لسه محدش سمعه.
موافق على draft-14 وسمعت الصوت. ابدأ الريندر النهائي 1920x1080 والتسليم والـ case study.
بدأ الريندر النهائي 1920x1080 بالترتيب من أول فريم، ومعاه آخر جولة مراجعة والتسليم وتصدير الـ case study وملف سجل الشغل.
Research, with dates
Compliance note: spotify-concept-ad
21 sources
- Advertising and Marketing 2025, Egypt: Law and Practice (p. 109)read 20 October 2026
- Advertising and Marketing 2025, Egypt: Law and Practice (p. 110)read 20 October 2026
- Advertising and Marketing 2025, Egypt: Law and Practice (pp. 112 to 113)read 20 October 2026
- What You Need to Know About Egypt's New Advertising RulesPublished 13 March 2025, read 20 October 2026
- قانون رقم 181 لسنة 2018 (Consumer Protection Law), textPublished 13 September 2018, read 20 October 2026
- قانون حماية المستهلك رقم 181 لسنة 2018 (record)Published 13 September 2018, read 20 October 2026
- Meta Advertising Standardsread 20 October 2026
- Third-Party Infringementread 20 October 2026
- Unbranded ads or brand channelsread 20 October 2026
- Trademarkread 20 October 2026
- Trademarksread 20 October 2026
- Copyrightsread 20 October 2026
- Misrepresentationread 20 October 2026
- Misleading and false contentread 20 October 2026
- Ad Format and Functionalityread 20 October 2026
- Intellectual Property Infringementread 20 October 2026
- Deceptive Practicesread 20 October 2026
- About TikTok Advertising Policies for Promoteread 20 October 2026
- Design & Branding Guidelinesread 20 October 2026
- Spotify Developer Terms, Version 10Published 15 May 2025, read 20 October 2026
- Spotify Terms of Use, Egypt EnglishPublished 26 August 2025, read 20 October 2026
R-01 RQ-brand: What do Spotify's own official pages publish today about its logo rules, colors, typeface, live pages, store listings and current campaigns?
21 sources
- Logo and Brand Assetsread 20 October 2026
- Design & Branding Guidelinesread 20 October 2026
- Spotify Developer Terms, Version 10read 20 October 2026
- Spotify Terms of Use (End User Agreement), Egypt Englishread 20 October 2026
- Sharing your musicread 20 October 2026
- Introducing Spotify Mix, Our New and Exclusive FontPublished 22 May 2024, read 20 October 2026
- The Look Behind the SoundPublished 23 April 2026, read 20 October 2026
- Spotify Premium (Egypt), Englishread 20 October 2026
- Spotify Premium (مصر), Arabicread 20 October 2026
- Spotify Web Playerread 20 October 2026
- Download Spotify (Egypt, English)read 20 October 2026
- Spotify listing, Apple App Storeread 20 October 2026
- Spotify listing, Google Playread 20 October 2026
- Spotify listing, Microsoft Storeread 20 October 2026
- How Our 2025 Wrapped Campaign Turns Your Year in Listening Into a Global CelebrationPublished 3 December 2025, read 20 October 2026
- It's Your Party of the Year(s): A Look Back at Your Entire Music History on SpotifyPublished 12 May 2026, read 20 October 2026
- Meet the Real-Life Superfan Starring in Spotify's Fan Life CampaignPublished 28 July 2026, read 20 October 2026
- Benito Skinner and Mary Beth Barone Will Always Ride for Pop DivasPublished 14 October 2026, read 20 October 2026
- Spotify's 'Your Summer Persona' gives Egyptians a personalised summerPublished 23 July 2026, read 20 October 2026
- Spotify highlights data challenges in Egypt in latest campaignPublished 30 June 2025, read 20 October 2026
- Spotify Reports Second Quarter 2026 EarningsPublished 4 August 2026, read 20 October 2026
R-02 RQ-business: What is Spotify, whom does it serve, what does it publish as product truth today, who are its competitors in Egypt, MENA and globally, and how does it talk?
19 sources
- About SpotifyPublished 4 August 2026, read 20 October 2026
- Spotify Reports Second Quarter 2026 EarningsPublished 4 August 2026, read 20 October 2026
- Spotify Technology S.A., Form 6-K, interim statements for the period ended June 30, 2026read 20 October 2026
- Spotify Technology S.A., Form 20-F, fiscal year ended December 31, 2025Published 10 February 2026, read 20 October 2026
- Spotify Investor Relations, homeread 20 October 2026
- Spotify Premium (Egypt), Englishread 20 October 2026
- Spotify Premium (مصر), Arabicread 20 October 2026
- The Look Behind the SoundPublished 23 April 2026, read 20 October 2026
- Audiobooks on Spotify Are Going GlobalPublished 7 October 2026, read 20 October 2026
- Spotify Rolls Out 11 New Languages to Users Around the WorldPublished 15 May 2023, read 20 October 2026
- Global Music Report 2026: global recorded music revenues grow 6.4% as record companies drive innovationPublished 18 March 2026, read 20 October 2026
- Anghami Reports FY2025 Revenue of $99.3M, Up 27%, on 3.5M Subscribers and Landmark Strategic PartnershipsPublished 30 April 2026, read 20 October 2026
- KSA Music Streaming MarketPublished 29 July 2026, read 20 October 2026
- MENA grew 15.2% on almost pure streaming; Anghami is the DSP most distributors skipPublished 18 July 2026, read 20 October 2026
- Music for every moment (Spotify Egypt case study)read 20 October 2026
- Spotify Wrapped faces copycat pressure from Amazon, Apple, and YouTubePublished 4 December 2025, read 20 October 2026
- Spotify highlights data challenges in Egypt in latest campaignPublished 30 June 2025, read 20 October 2026
- Spotify's 'Your Summer Persona' gives Egyptians a personalised summerPublished 23 July 2026, read 20 October 2026
- Spotify Web Player, Homeread 20 October 2026
R-03 RQ-rules: What advertising rules apply to a music streaming app ad in Egypt and MENA, and what do the YouTube (Google Ads), Instagram (Meta) and TikTok ad policies say for this unofficial concept film?
18 sources
- Advertising and Marketing 2025, Egypt: Law and Practice (printed p. 109)read 20 October 2026
- Advertising and Marketing 2025, Egypt: Law and Practice (printed p. 110)read 20 October 2026
- Advertising and Marketing 2025, Egypt: Law and Practice (printed pp. 112 to 113)read 20 October 2026
- What You Need to Know About Egypt's New Advertising RulesPublished 13 March 2025, read 20 October 2026
- قانون رقم 181 لسنة 2018 (Consumer Protection Law), text "updated to 2024"Published 13 September 2018, read 20 October 2026
- قانون حماية المستهلك رقم 181 لسنة 2018 (record)Published 13 September 2018, read 20 October 2026
- Meta Advertising Standardsread 20 October 2026
- Third-Party Infringement (Advertising Standards, Intellectual property infringement)Published 30 May 2024, read 20 October 2026
- Unbranded ads or brand channelsread 20 October 2026
- Trademarkread 20 October 2026
- Trademarksread 20 October 2026
- Copyrightsread 20 October 2026
- Misrepresentationread 20 October 2026
- Misleading and false contentread 20 October 2026
- Ad Format and Functionalityread 20 October 2026
- Intellectual Property Infringementread 20 October 2026
- Deceptive Practicesread 20 October 2026
- About TikTok Advertising Policies for Promoteread 20 October 2026
R-04 RQ-color: What do colors mean for music streaming brands and to audiences in Egypt and the Arab world, and what palettes do music streaming brands use in 2025 and 2026?
7 sources
- Arab Flags: Colors and Symbolsread 20 October 2026
- Spotify DESIGN.md (design system extraction)Published 12 May 2026, read 20 October 2026
- Anghami home page (HTML source)read 20 October 2026
- Apple Music web (HTML and stylesheet)read 20 October 2026
- YouTube Music home (HTML source)read 20 October 2026
- Cairo Design Week (student poster)read 20 October 2026
- Anghami logoread 20 October 2026
R-05 RQ-type: What Arabic type conventions hold for screen and social video in 2025 and 2026, how is Arabic paired with a Latin sans, and which open-licensed Arabic typefaces do the sources name?
5 sources
- Arabic typography guide (Insights / Publishing & Arabic Craft)Published 28 April 2026, read 20 October 2026
- The Graphic Design Trends Defining the UAE in 2026Published 3 September 2026, read 20 October 2026
- Arabic App Store Screenshots: 4 Typography Tripwires [2026]Published 9 June 2026, read 20 October 2026
- Cairo Design Week (student poster)read 20 October 2026
- METADATA.pb files of the Google Fonts library (one per family)read 20 October 2026
R-06 RQ-category: What do current music streaming ads and Spotify ads look like (structure, palette, type, motion, sound), and what does every other video on this subject look like?
17 sources
- Ad of the Day: Spotify Wrapped gets first TV spot featuring star-studded UK castPublished 3 December 2025, read 20 October 2026
- Your Favourite Artists reveal Spotify 2025 WrappedPublished 3 December 2025, read 20 October 2026
- What Your Top Song Says About You, Spotify Wrapped 2025, Emraan Hashmi and Raghav JuyalPublished 3 December 2025, read 20 October 2026
- It's time... Go get your Wrapped!Published 3 December 2025, read 20 October 2026
- Mopping Made Fun, Spotify ChalaoPublished 16 September 2026, read 20 October 2026
- أنغامي، جوك له صوت، صوتك بطريقتكPublished 6 November 2025, read 20 October 2026
- Hello India. Love, Amazon Music.Published 4 August 2026, read 20 October 2026
- HEAD TRIP.Published 14 October 2026, read 20 October 2026
- YT 16x9 Horizontal v2Published 7 October 2026, read 20 October 2026
- There's just something in the air today, What's on your #SpotifyWrapped?Published 3 December 2025, read 20 October 2026
- How Our 2025 Wrapped Campaign Turns Your Year in Listening Into a Global CelebrationPublished 3 December 2025, read 20 October 2026
- Spotify ads celebrate fans of Oasis, Doechii and Chappell RoanPublished 14 April 2025, read 20 October 2026
- Spotify highlights data challenges in Egypt in latest campaignPublished 30 June 2025, read 20 October 2026
- Spotify strikes a chord with Egyptian AudiencesPublished 26 July 2023, read 20 October 2026
- Regional focus key as Spotify launches 'Listening is Everything' campaign in Saudi Arabia and EgyptPublished 8 September 2020, read 20 October 2026
- Spotify Spotlights Egyptian Rap And Celebrates Fandom In Its Latest Campaign Melouk El ScenePublished 30 June 2022, read 20 October 2026
- Amazon Music cues Sonu Nigam and Usha Uthup for a nostalgic game of AntakshariPublished 6 August 2026, read 20 October 2026
R-07 RQ-ads: Which real 2024 to 2026 ads from Spotify and the competitors our sources name (Egypt, MENA and global) show the hooks, beat shapes, palettes, type, cut rates, sound and endings of this category?
24 sources
- Ad of the Day: Spotify Wrapped gets first TV spot featuring star-studded UK castPublished 3 December 2025, read 20 October 2026
- Your Favourite Artists reveal Spotify 2025 WrappedPublished 3 December 2025, read 20 October 2026
- Spotify, Wrapped 2025, Nattamai, Wrapped Ah Paathu Sollu, SarathkumarPublished 3 December 2025, read 20 October 2026
- What Your Top Song Says About You, Spotify Wrapped 2025, Emraan Hashmi and Raghav JuyalPublished 3 December 2025, read 20 October 2026
- Mopping Made Fun, Spotify ChalaoPublished 16 September 2026, read 20 October 2026
- Laundry Made Fun, Spotify ChalaainPublished 16 September 2026, read 20 October 2026
- It's time... Go get your Wrapped!Published 3 December 2025, read 20 October 2026
- There's just something in the air today, What's on your #SpotifyWrapped?Published 3 December 2025, read 20 October 2026
- Spotify India, channel video feedread 20 October 2026
- Spotify highlights data challenges in Egypt in latest campaignPublished 30 June 2025, read 20 October 2026
- أنغامي، جوك له صوت، صوتك بطريقتكPublished 6 November 2025, read 20 October 2026
- أنغامي، كل احساس له صوت، صوتك بطريقتكPublished 7 November 2025, read 20 October 2026
- أنغامي تشغلّك اللي يشبهك، صوتك بطريقتكPublished 13 November 2025, read 20 October 2026
- الصوت اللي يكمّله على أنغامي، صوتك بطريقتكPublished 27 November 2025, read 20 October 2026
- YT 16x9 Horizontal v2Published 7 October 2026, read 20 October 2026
- Anghami, channel video feedread 20 October 2026
- Anghami Latest TV AdPublished 30 March 2014, read 20 October 2026
- Amazon Music launches first India brand film celebrating Antakshari traditionPublished 5 August 2026, read 20 October 2026
- Amazon Music cues Sonu Nigam and Usha Uthup for a nostalgic game of AntakshariPublished 6 August 2026, read 20 October 2026
- Hello India. Love, Amazon Music.Published 4 August 2026, read 20 October 2026
- HEAD TRIP.Published 14 October 2026, read 20 October 2026
- Apple Music, channel video feedread 20 October 2026
- YouTube Music, channel video feedread 20 October 2026
- Nhar M3a AbduhPublished 16 October 2026, read 20 October 2026
R-08 RQ-refs: Which real, viewable, documented works can serve as benchmarks for narrative and transition grammar, for typography and composition, and for sound and pacing in a music streaming brand film?
18 sources
- Spreadbeats, ADC Awards 2025, Silver Cube, Craft in Motion / Film / Motion Graphicsread 20 October 2026
- Spotify at Cannes Lions 2025: The Week's Unmissable Highlights, Star Power, and MorePublished 24 June 2025, read 20 October 2026
- Spotify: Spreadbeatsread 20 October 2026
- SPOTIFY - Spreadbeats - FCB - Cannes Lions 2024Published 22 October 2024, read 20 October 2026
- Spotify - Spreadbeats (case study)Published 18 June 2024, read 20 October 2026
- Spreadbeats (Cannes Grand Prix 2024) - SpotifyPublished 18 June 2024, read 20 October 2026
- How Our 2025 Wrapped Campaign Turns Your Year in Listening Into a Global CelebrationPublished 3 December 2025, read 20 October 2026
- Spotify used Rive for Spotify Wrapped 2025Published 9 January 2026, read 20 October 2026
- It's time... Go get your Wrapped!Published 3 December 2025, read 20 October 2026
- There's just something in the air today, What's on your #SpotifyWrapped?Published 3 December 2025, read 20 October 2026
- Project Spotify: Music + Talk, Studio Dumbar/DEPT, European Design Awards 2022, Silver, Motion Logoread 20 October 2026
- Listening is Everything, D&AD 2021, Brandingread 20 October 2026
- Hello India. Love, Amazon Music.Published 4 August 2026, read 20 October 2026
- Amazon Music cues Sonu Nigam and Usha Uthup for a nostalgic game of AntakshariPublished 6 August 2026, read 20 October 2026
- Amazon Music launches first India brand film celebrating Antakshari traditionPublished 5 August 2026, read 20 October 2026
- Your Favourite Artists reveal Spotify 2025 WrappedPublished 3 December 2025, read 20 October 2026
- Ad of the Day: Spotify Wrapped gets first TV spot featuring star-studded UK castPublished 3 December 2025, read 20 October 2026
- Brand Film Awards 2026 winners revealedPublished 30 April 2026, read 20 October 2026
Checks on the delivered file
| Gate | Result | Measured |
|---|---|---|
| Cold-viewer clarity | Pass | 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 |
| Storyboard lint | Warn | 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) |
| Engine lint and check | Pass | page contract renders 1050 frames in order with one worker; cue sheet re-exports identically (53 events) |
| G0 render exists | Pass | 35.00 s matches the expected 35.00 s; audio present |
| 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 |
| G2 no empty frame | Pass | no run of more than 3 flat frames |
| 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) |
| 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) |
| G5 no page chrome | Pass | 0 rule hits, depth_layers median 5 |
| Film gate | Warn | 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 |
| Richness floor | Pass | 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 |
| 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) |
| Seams | Not applicable | one continuous camera, no cuts (look.py reads the drop flash at 19.53 s as a scene change) |
| 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) |
| Loudness | Pass | -14.0 LUFS, LRA 7.4 LU, true peak -1.4 dBFS (target -14, -1 dBTP, D-29) |
| Spec | Pass | 1920x1080, h264, 30 fps, 35.00 s |
| Template distance | Pass | 4 of 6 axes against ice-styles 01-flat-vector |
| 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) |
| Final Frame Contract | Pass | the last frame of the lossless final equals the static logo page on the whole frame: 0 differing pixels |
| 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) |
| 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 |
| 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 |
| 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 |
| Climax duel | Not run |
- -14LoudnessLUFS
- -1.4True peakdBTP
- 30Frame rateframes a second
- 1920 x 1080Resolutionpixels
| Language | Aspect | Length | File |
|---|---|---|---|
| English | 16:9 | 35 seconds | ice/ |
Credits and tools
- ice/audio/soundtrack_en.wav, local, code-generated, none, code-generated with mgaudio (MIT, project copy at ice/audio/lib/mgaudio, from Vincentwei1021/mg-styles-15), no third-party audio, score and SFX composed by code in ice/audio/score.py; mgaudio (c) 2026 Vincentwei1021, MIT, n/a (original output, mastered to -14 LUFS, -1 dBTP), English version, full soundtrack 0.0 to 49.0 s, 2026-10-20
- ice/audio/soundtrack_ar.wav, local, code-generated, none, code-generated with mgaudio (MIT, project copy at ice/audio/lib/mgaudio, from Vincentwei1021/mg-styles-15), no third-party audio, score and SFX composed by code in ice/audio/score.py; mgaudio (c) 2026 Vincentwei1021, MIT, n/a (original output, mastered to -14 LUFS, -1 dBTP), Arabic version, full soundtrack 0.0 to 49.0 s, 2026-10-20
- ice/audio/soundtrack_en_v2.wav, local, code-generated, none, code-generated with mgaudio (MIT, project copy at ice/audio/lib/mgaudio, from Vincentwei1021/mg-styles-15), no third-party audio, score and SFX composed by code in ice/audio/score.py (--v2); mgaudio (c) 2026 Vincentwei1021, MIT, version 2 levels for the social-profile LRA (mastered to -14 LUFS, -1 dBTP), English version, full soundtrack 0.0 to 49.0 s, 2026-10-20
- ice/audio/soundtrack_ar_v2.wav, local, code-generated, none, code-generated with mgaudio (MIT, project copy at ice/audio/lib/mgaudio, from Vincentwei1021/mg-styles-15), no third-party audio, score and SFX composed by code in ice/audio/score.py (--v2); mgaudio (c) 2026 Vincentwei1021, MIT, version 2 levels for the social-profile LRA (mastered to -14 LUFS, -1 dBTP), Arabic version, full soundtrack 0.0 to 49.0 s, 2026-10-20
All 25 credits
- ice/audio/soundtrack_en_v3.wav (and stems_en_v3/), local, code-generated, none, code-generated with mgaudio (MIT, project copy at ice/audio/lib/mgaudio, from Vincentwei1021/mg-styles-15), no third-party audio, score and SFX composed by code in ice/audio/score.py (--v3); mgaudio (c) 2026 Vincentwei1021, MIT, version 3: full-level frame-0 horn, no fade-in, end hit at 46.0 and a natural ring-out (mastered to -14 LUFS, -1 dBTP), English 16:9 delivery film, full soundtrack 0.0 to 49.0 s, 2026-10-20
- ice/audio/stems_en_v2/, ice/audio/stems_ar_v2/, local, code-generated, none, code-generated with mgaudio (MIT, project copy), no third-party audio, as above, pre-master stems written at -6 dB by mgaudio export, mix reference for 08b, 2026-10-20
- ice/audio/stems_en/, ice/audio/stems_ar/, local, code-generated, none, code-generated with mgaudio (MIT, project copy), no third-party audio, as above, pre-master stems written at -6 dB by mgaudio export, mix reference for 08b, 2026-10-20
- ice/audio/soundtrack_en_v4.wav, local, code-generated, none, code-generated with mgaudio (MIT, project copy at ice/audio/lib/mgaudio, from Vincentwei1021/mg-styles-15), no third-party audio, no samples, no AI generation, score and SFX composed by code in ice/audio/score.py (--v4); mgaudio (c) 2026 Vincentwei1021, MIT, version 4, the drawn street: timed from ice/plan/cue-sheet.json (36.0 s); mid-honk at frame 0, no fade-in, last hit at 33.5 and a natural ring-out (mastered to -14 LUFS, -1 dBTP; measured -14.08 LUFS, -1.21 dBTP), English 16:9 film, full soundtrack 0.0 to 36.0 s (08b input: ice/audio/master_input_en_v4.json), 2026-10-21
- ice/audio/soundtrack_en_v4.wav: SFX (street noise of the hero car, four jam vehicles, road breaker, pile rig and motorbike; 26 key ticks; soft UI open; soft whoosh; click; riser; impact), local, code-generated, none, horn, breaker, pile rig, motorbike and key models written in ice/audio/score.py (horn4, road_breaker, breaker_hat, pile_ram, pile_backbeat, bike_rev, key_tick, building on jack_hammer and engine_bass there); UI open, whoosh, click, riser, impact and the drum bodies from mgaudio sfx and drums (MIT, project copy), as above, original output, mixed into the soundtrack, English 16:9 film, 0.0 to 36.0 s, 2026-10-21
- ice/audio/stems_en_v4/, local, code-generated, none, code-generated with mgaudio (MIT, project copy), no third-party audio, as above, 31 pre-master stems written at -6 dB by mgaudio export, mix reference for 08b, 2026-10-21
- ice/audio/soundtrack_en_v5.wav, local, code-generated, none, code-generated with mgaudio (MIT, project copy at ice/audio/lib/mgaudio, from Vincentwei1021/mg-styles-15), no third-party audio, no samples, no AI generation, score and SFX composed by code in ice/audio/score.py (--lang en --v5); mgaudio (c) 2026 Vincentwei1021, MIT, version 5 (D-38 to D-42): timed from the re-timed ice/plan/cue-sheet.json (33.5 s), seven jam cars, an alive ending, smaller peaks at the source (mastered to -14 LUFS, -2.5 dBTP ceiling; measured -14.03 LUFS, -2.68 dBTP), English 16:9 film, full soundtrack 0.0 to 33.5 s (08b input: ice/audio/master_input_en_v5.json; mastered into ice/renders/draft-10-en-av.mp4), 2026-10-21
- ice/audio/soundtrack_en_v5.wav: SFX (street noise of the hero car, seven jam cars, road breaker, pile rig and motorbike; 26 key ticks; soft UI open; soft whoosh; click; riser; impact), local, code-generated, none, the same models as v4 in ice/audio/score.py (horn4 with seven horn timbres, road_breaker, breaker_hat, pile_ram, pile_backbeat, bike_rev, key_tick); UI open, whoosh, click, riser, impact (high-passed at 100 Hz) and the drum bodies from mgaudio sfx and drums (MIT, project copy), as above, original output, mixed into the soundtrack, English 16:9 film, 0.0 to 33.5 s, 2026-10-21
- ice/audio/stems_en_v5/, local, code-generated, none, code-generated with mgaudio (MIT, project copy), no third-party audio, as above, 34 pre-master stems written at -6 dB by mgaudio export, mix reference for 08b, 2026-10-21
- ice/audio/soundtrack_en_v6.wav, local, code-generated, none, code-generated with mgaudio (MIT, project copy at ice/audio/lib/mgaudio, from Vincentwei1021/mg-styles-15), no third-party audio, no samples, no AI generation, score and SFX composed by code in ice/audio/score.py (--lang en --v6); mgaudio (c) 2026 Vincentwei1021, MIT, version 6: the version 5 sound on the 35.0 s ice/plan/cue-sheet.json (last hit 32.5, ring-out to 35.0), the jam cars level-matched (mastered to -14 LUFS, -2.5 dBTP ceiling; measured -14.07 LUFS, -2.68 dBTP), English 16:9 film, full soundtrack 0.0 to 35.0 s (08b input: ice/audio/master_input_en_v6.json; mastered into ice/renders/draft-11-en-av.mp4), 2026-10-21
- ice/audio/soundtrack_en_v6.wav: SFX (street noise of the hero car, seven jam cars, road breaker, pile rig and motorbike; 26 key ticks; soft UI open; soft whoosh; click; riser; impact), local, code-generated, none, the same models as v5 in ice/audio/score.py; UI open, whoosh, click, riser, impact (high-passed at 100 Hz) and the drum bodies from mgaudio sfx and drums (MIT, project copy), as above, original output, mixed into the soundtrack, English 16:9 film, 0.0 to 35.0 s, 2026-10-21
- ice/audio/stems_en_v6/, local, code-generated, none, code-generated with mgaudio (MIT, project copy), no third-party audio, as above, 34 pre-master stems written at -6 dB by mgaudio export, mix reference for 08b, 2026-10-21
- ice/audio/soundtrack_en_v7.wav, local, code-generated, none, code-generated with mgaudio (MIT, project copy at ice/audio/lib/mgaudio, from Vincentwei1021/mg-styles-15), no third-party audio, no samples, no AI generation, score and SFX composed by code in ice/audio/score.py (--lang en --v7); mgaudio (c) 2026 Vincentwei1021, MIT, version 7: the version 6 sound with the black end card (D-44 to D-46): the groove under the field, the street dropping out with the fade to black, a reverse-cymbal swell under the logo entrance, the final hit at 32.5 and the ring-out (mastered to -14 LUFS, -2.3 dBTP ceiling; measured -14.04 LUFS, -2.48 dBTP), English 16:9 film, full soundtrack 0.0 to 35.0 s (08b input: ice/audio/master_input_en_v7.json; mastered into ice/renders/draft-12-en-av.mp4), 2026-10-21
- ice/audio/soundtrack_en_v7.wav: SFX (street noise of the hero car, seven jam cars, road breaker, pile rig and motorbike; 26 key ticks; soft UI open; soft whoosh; click; riser; impact; the swell into the final hit), local, code-generated, none, the same models as v6 in ice/audio/score.py; UI open, whoosh, click, riser, impact (high-passed at 100 Hz), the reverse cymbal of the logo entrance and the drum bodies from mgaudio sfx and drums (MIT, project copy; the cymbal is mgaudio's synthetic crash reversed, no sample pack installed), as above, original output, mixed into the soundtrack, English 16:9 film, 0.0 to 35.0 s, 2026-10-21
- ice/audio/stems_en_v7/, local, code-generated, none, code-generated with mgaudio (MIT, project copy), no third-party audio, as above, 35 pre-master stems written at -6 dB by mgaudio export, mix reference for 08b, 2026-10-21
- ice/audio/soundtrack_en_v8.wav, local, code-generated, none, code-generated with mgaudio (MIT, project copy at ice/audio/lib/mgaudio, from Vincentwei1021/mg-styles-15), no third-party audio, no samples, no AI generation, score and SFX composed by code in ice/audio/score.py (--lang en --v8); mgaudio (c) 2026 Vincentwei1021, MIT, version 8: version 7's sound on the re-timed ending (the field 27.5 to 31.5, the fade to black 31.5 to 32.0, the swell 31.9 to 33.5, the final hit at 33.5, the ring-out to 35.0) (mastered to -14 LUFS, -2.3 dBTP ceiling; measured -14.03 LUFS, -2.48 dBTP), English 16:9 film, full soundtrack 0.0 to 35.0 s (08b input: ice/audio/master_input_en_v8.json; mastered into ice/renders/draft-13-en-av.mp4), 2026-10-21
- ice/audio/soundtrack_en_v8.wav: SFX (street noise of the hero car, seven jam cars, road breaker, pile rig and motorbike; 26 key ticks; soft UI open; soft whoosh; click; riser; impact; the swell into the final hit), local, code-generated, none, the same models as v7 in ice/audio/score.py; UI open, whoosh, click, riser, impact (high-passed at 100 Hz), the reverse cymbal of the logo entrance (mgaudio's synthetic crash reversed) and the drum bodies from mgaudio sfx and drums (MIT, project copy), as above, original output, mixed into the soundtrack, English 16:9 film, 0.0 to 35.0 s, 2026-10-21
- ice/audio/stems_en_v8/, local, code-generated, none, code-generated with mgaudio (MIT, project copy), no third-party audio, as above, 35 pre-master stems written at -6 dB by mgaudio export, mix reference for 08b, 2026-10-21
- ice/audio/soundtrack_en_v9.wav, local, code-generated, none, code-generated with mgaudio (MIT, project copy at ice/audio/lib/mgaudio, from Vincentwei1021/mg-styles-15), no third-party audio, no samples, no AI generation, score and SFX composed by code in ice/audio/score.py (--lang en --v9); mgaudio (c) 2026 Vincentwei1021, MIT, version 9: version 8's sound on the end card re-timed for look.py G3 (the street fading 31.5 to 33.0, the swell 32.5 to the hit at 33.5) (mastered to -14 LUFS, -2.3 dBTP ceiling; measured -14.08 LUFS, -2.48 dBTP), English 16:9 film, full soundtrack 0.0 to 35.0 s (08b input: ice/audio/master_input_en_v9.json; mastered into ice/renders/draft-14-en-av.mp4), 2026-10-21
- ice/audio/soundtrack_en_v9.wav: SFX (as v8: street noise, 26 key ticks, UI open, whoosh, click, riser, impact, the swell into the final hit), local, code-generated, none, the same models as v8 in ice/audio/score.py and mgaudio sfx and drums (MIT, project copy), as above, original output, mixed into the soundtrack, English 16:9 film, 0.0 to 35.0 s, 2026-10-21
- ice/audio/stems_en_v9/, local, code-generated, none, code-generated with mgaudio (MIT, project copy), no third-party audio, as above, 35 pre-master stems written at -6 dB by mgaudio export, mix reference for 08b, 2026-10-21
look.pylint.mjsfilm_gate.pymotion_check.pyfrozen-time.mjsloudness.mjsprobe-mp4.mjstransitions.py
What the export could not find
mediaice/review/ui-fidelity/sheet-ar.png not exported: raw fidelity sheet kept local (it may hold other rights holders' content; only its masked share copy is exported)
mediaice/review/ui-fidelity/sheet-en-v2.png not exported: raw fidelity sheet kept local (it may hold other rights holders' content; only its masked share copy is exported)
mediaice/review/ui-fidelity/sheet-en.png not exported: raw fidelity sheet kept local (it may hold other rights holders' content; only its masked share copy is exported)
mediaice/review/ui-fidelity/sheet-tiles-ar.png not exported: raw fidelity sheet kept local (it may hold other rights holders' content; only its masked share copy is exported)
mediaice/review/ui-fidelity/sheet-tiles-en.png not exported: raw fidelity sheet kept local (it may hold other rights holders' content; only its masked share copy is exported)
stages[].minutesminutes per stage not recorded in ice/state.json stages
stages[06].artifactsno animatic render in the run files
gates[].thresholdNOTE.md gates table does not separate thresholds; they are inside each value where the report states them
run-log25 more images left out (24 at most)
run-logmasked in the export: 0 keys or tokens, 0 email addresses, 0 phone numbers, 1 absolute paths (ice/log/conversation.jsonl keeps the verbatim text)
Give your agent a director
Paste one line, then ask for a film in plain words. Ice takes it from brief to delivery and shows you its work at every step you want to see.
npx skills add Omar-Tnzxo/ice-motion-director -g --all 











