# Critic round 2
Copy for the case-study exporter of the full-film critic round 2, `critic-09-r2.md` (main report); the original stays the source.

Verdict: FIX P1 THEN SHIP

# Critic 09, round 2: mohawalat-fahm-france reel (9x16 master)

Read-only verification of `ice/renders/final/mohawalat-fahm-france_reel_9x16_master.mp4` (66.36 s, 1080x1920, 25 fps, 1659 frames, sha256 c151693d...e97da checked; -14.0 LUFS, LRA 2.0 LU, true peak -1.5 dBFS). Checked against `review/critic-09-r1.md`, DIRECTION D-31 to D-33, `plan/FIDELITY.md`, `plan/script.md` r4, `review/gates/f1-word-table.md`, `plan/plan.json`, critic-loop section 4, identity-tests sections 1 to 5 and the owner's four rules.
Evidence, kept outside the project in `scratch/critic-r2/`: `frames/` (every frame, full and quarter size), `sheets/` (0.2 s contact sheets, 25 fps strips around every text entry, crops), `meas/` (faster-whisper large-v3-turbo int8 on CPU: whole-file passes and windows around every text element and seam, on the master and on `audio/stems/dialogue.wav`; a cut-off test per word; face boxes; frame differences; envelopes), `audio/` (stems and master as float).
Times are reel seconds. Word onsets: windowed Whisper on both stems, then the 20 ms dialogue envelope and a 4 to 9 kHz band for fricatives, because Whisper hangs a pause onto the next word. "Readable" is the first legible frame after a word's blur-in (about 2 frames after it starts to show).

## What passes (measured)
- Lip sync: every EDL row has the same picture and audio offset; motion-signature match against the episode: 0 frames at 19.0 and 62.0, 1 frame at 36.0 (r 0.85 to 0.93).
- No click at any of the 9 seams: the largest sample step at a seam is 0.027 on the dialogue stem, against 0.0715 at the track's 99.9th percentile.
- F2: archive saturation 16 to 36 (55 on the two Macron frames with the disc) against studio 80 to 116; black level (2nd percentile) 20 to 107 against 8 to 17.
- F5: "محاولة" readable 64.08, spoken 63.94 (+3 frames); "فهم" readable 64.80, spoken 64.66 (+3 frames).
- The red correction leaves the guest untouched: cheek R/G shift from source to reel is +0.017 to +0.036 in the corrected spans (47.4 to 53.6, 58.4 to 61.4) and +0.016 to +0.031 on untouched shots (36 to 46); lips stay in the same spread; hands keep their colour.
- Forbidden list: words arrive in place inside their role, one colour per role, no per-word highlight, no rolling stack; text over archive only on T1, T2, T17b and T17c.
- Sound: the same library files as round 1 (Vanes; Sonniss GDC 2024; Freesound via Openverse, each with its JSON). Nothing made by code.
- Arabic spelling and joining correct on every element; the T6 sub-line now breaks after "الدولية،".

## Round 1 items on the new master
| # | Status | Evidence |
|---|---|---|
| 1 Words before speech | PARTLY | 68 of 69 words now show 0 to +13 frames after their spoken start (round 1: 12 elements led by 9 to 68 frames). Round 1's worst words: "الباليستي" 6.80 vs 6.67, "الأول" 8.42 vs 8.30, "سد" 16.72 vs 16.60, "أموال" 22.06 vs 21.94, "لقطاع" 30.90 vs 30.77, "التعليم" 31.40 vs 31.27, "أصلًا" 37.02 vs 36.90, "تحصيل" 41.52 vs 41.42, "الجيش" 58.16 vs 58.05, "ذلك" 62.46 vs 62.34. Words after pauses checked on the envelope: "الدولة" readable 20.92, onset 20.94; "الحكومة" 27.08 vs 27.10; "قسمًا" 33.50 vs 33.52; "وجدت" 58.97 vs 58.84 (Whisper says 58.53; the pause runs 58.52 to 58.82); "نحاول" 61.60 vs 61.56. One word still leads: "ستعجز" (item A). |
| 2 Red glow behind the guest | PARTLY | Background beside the shoulders (x 100 to 300 and 880 to 1060, y 640 to 780) is now #281C16 to #331F19 over 48.0 to 59.4, against #201911 to #261D14 on 44 to 46 and round 1's #341C1B to #491A1E: brown, not red. No flicker: the matte edge is stable over 16 consecutive frames (49.60 to 50.20, lifted 2.5x). Left: the flying dot (item B), a thin red rim on the jacket outline and the episode's colour fringe at the desk (item F). |
| 3 Face to the frame edge | FIXED | Tight face (box centre plus or minus 38% of its width) inside x 65 to 888 in 599 of 611 detected frames; worst 904 at 39.24 to 39.60, 891 to 892 for one frame at 33.40 and 58.60. Ears reach x 1000 to 1040 at 33.4, 39.4 and 59.7, above the right rail. Round 1: face box to 1060 to 1076. Face motion by template matching is smooth, no alternating steps. One sway remains (item J). |
| 4 "ماكرون" | FIXED | Ink x 84 to 366, y 366 to 450; Macron's nose tip at x 427: 60 px clear. |
| 5 Seam 3.92, now 4.04 | FIXED | Whisper hears "باليستي" whole in the full passes of both stems and in the T2 and seam windows on both. The cut falls at -21.7 dB on the held vowel with a short fade to -50 dB, no click. |
| 6 Flag in the students' shot | FIXED | The shot is replaced (xli_CIpdWgg at 66.4). The new shot has its own problem (item C). |
| 7 "مديونيتها" | FIXED | The screen shows "مديونية" (D-31). Whisper writes "مديونة" in all six passes (p 0.84 to 0.95). Only a human ear is still missing. |
| 8 Turn at 32.24 | FIXED | Dialogue decays -20, -24, -37, -69 dB over 32.22 to 32.28, the same decay as the source at 1159.58 to 1159.64. The turn impact starts at 32.20 (-14 dB) over the last 60 ms; windows across the seam write "التعليف", the full passes and the T11 window "التعليم". Accept. |
| 9 Riser under "الأول" | FIXED | Under "الأول" (8.34 to 8.54, dialogue -18 to -21 dB) the riser is -30 to -37 and the music -30 to -40: 12 to 17 dB under. Whisper hears it in the full master pass and the T5 window. |
| 10 Payoff breath | FIXED | 0.40 s without speech; dialogue fades -26.5 to -61 dB over 61.02 to 61.10; the title is crimson to 61.12 and silver from 61.16 to 61.20 (word ends about 61.06); music +3 to 4 dB at 61.34. New: lips move in it (item H). |
| 11 Attention dip | FIXED | "بعض الهيئات" 44.40 to 46.96; longest text gap in the long take now 1.8 s (42.59 to 44.40). |
| 12 Subject of the framing line | FIXED | "قسمًا من الشارع الفرنسي" 33.50 to 35.12, word by word. Its second line breaks the safe zone (item D). |
| 13 Attribution | FIXED | "فيه ناس تقول لك:" heads the plates from 5.36 to 8.68. Small (item M). |
| 14 End title and freeze | FIXED | See F5 above; the hold from 64.84 has eyes open and mouth closed. |
| 15 Text over hands | PARTLY | The name plate (y 942 to 1176) is clear of hands. Hands still cross under T4 and T5 (7.40 to 7.60), T8 (17.60 to 18.20), T10 (27.20 to 27.40) and T11 (29.40 to 29.80). |
| 16 Soft wide shot | accepted | Unchanged; D-33 records the reason. |
| 17 Paperwork | FIXED | FIDELITY names the T17b and T17c exception; `plan.json` and `storyboard.md` say chest_band; "يعني" accepted. New gap: the F1 table states 3 frames and 0 early for every word (items A and G). |

## Fix list (open items)
1. **P1 (A), 15.58 to 15.80. "ستعجز" shows before it is said.**
   Visible from 15.58, readable 15.64. The pause after "واحدة" runs 15.42 to 15.80 at -46 to -56 dB, and its 4 to 9 kHz band stays at the pause floor (-71 to -74 dB, the same as the pause at 40.36); the /s/ starts at 15.80 (-44.7 dB in that band). Whisper on a window that starts at 15.72 still puts the word at 15.72. So it leads by 4 frames (5.5 from its first visible frame). The table's 15.46 is Whisper's start with the pause hung on it.
   Why: F1 ("zero words on screen" before they are said).
   Smallest fix: key the word to 15.80 (on screen 15.92). In `align_words.py`, after any pause over 0.2 s, take the onset from the envelope and the 4 to 9 kHz band.
2. **P1 (B), 46.96 to 47.32. The flying dot is still in the render, and red over the guest's head.**
   A dot about 50 px across crosses the curtain from left to right at y 120 to 260. It is grey where the inverted matte works and crimson (RGB about 147,87,77 at x 348, y 155 and 171,77,77 at x 616, y 192) at 47.12 to 47.20, where it passes over the top of his head and the person matte shields it. D-32 records it as inpainted.
   Why: owner's rule (a); F3 (no red attention on the speaker); a fix claimed in DIRECTION but absent from the pixels.
   Smallest fix: inpaint the dot on the source frames 1681.40 to 1681.84 (reel 46.92 to 47.36) before the matte step.
3. **P1 (C), 25.44 to 26.62. The new students' shot shows identifiable pupils, and a party flag.**
   Several faces in medium close-up, the foreground girl looking into the lens at 26.04 to 26.44, held 1.18 s and enlarged about 2.5x from a 428 px crop. The same shot carries a La France Insoumise "φ" flag (25.5 to 26.3, left of centre) that no line names: the same class as round 1's flag.
   Why: COMPLIANCE RC2 (round 1's bar: no minor's face over 0.5 s); owner's rule (b).
   Smallest fix: re-crop to the building and the placard "PLUS DE FRIC POUR L'ÉCOLE PUBLIQUE" (top right at 26.3 to 26.6) with no face and no flag in frame, or hold the aerial (24.34 to 25.44) through the beat.
4. **P1 (D), 33.50 to 35.12 and 47.16 to 50.88. Two captions leave the safe zone at the bottom.**
   T12a and T15 wrap, and their second line "الفرنسي" sits at y about 1255 to 1340, under the bottom of the safe zone (1248; Meta and YouTube keep 672 px). In round 1, T15 was one line ("من المجتمع الفرنسي" at 48.50); adding "أجزاء" made it wrap.
   Why: D-22 union safe zone; a layout check failure.
   Smallest fix: lift two-line captions by 100 px so line 2 ends near 1240, or split each into two timed one-line captions.
5. **P1 (E), 57.72 to 58.16. "نفقات" sits on two chins.**
   T17c lands on Macron's chin and jaw (57.72 to 57.96), then on the guest's beard during his zoomed blur-in (58.00 to 58.16).
   Why: no text over faces (round 1 item 4 was P1 for less).
   Smallest fix: set T17c about 110 px lower (y about 1040 to 1160) until 58.20, then back to the title band.
6. **P2 (F), 47.1 to 53.7 and 58.0 to 61.5. Leftovers of the episode's quote card.** A thin red rim (3 to 5 px) follows the jacket outline on both shoulders (stable, faint at normal level). The bottom of the frame keeps the card's soft focus and an RGB-split fringe (cyan, yellow, magenta) on the cup and hands, absent before 47.08. Fix: erode the inverted matte 4 to 6 px at its edge; accept the fringe with a note or crop it out.
7. **P2 (G), 60.42 to 60.96. The payoff word lands late.** "موارد" starts at 60.42 (dip 60.32 to 60.40, then -25 dB; both windows say 60.42 to 60.44). It shows at 60.80 and reads at 60.96: +13 frames, inside F1's 4 to 20 but not the 3 the table states, and in the middle of the held vowel. Fix: key it to 60.54.
8. **P2 (H), 61.32 to 61.44. Lips move in the silent breath.** The picture runs on into the guest's next word (source 1695.92) while no voice plays. Fix: hold the 61.08 frame for the 10 frames of the breath.
9. **P2 (I), 3.36 to 3.56. A dark scrim waits for "باليستي".** A soft dark oval sits on the bright launch sky where the word lands, 5 to 6 frames early. Fix: give each word its own scrim, faded in with the word.
10. **P2 (J), 46.5 to 49.4. The guest sways left and back.** The episode slides its picture about 300 px left as its card enters (face centre 607 to 309 between 46.20 and 47.48, 10 to 15 px per frame), and the tracker pulls back only from 47.9 to 49.4. Fix: start the counter-move with the episode's slide at 46.52.
11. **P2 (K), 0.00 to 0.46. The opening impact covers "في صورة".** Impact -11 to -19 dB against speech -18 to -24 dB on the stems; Whisper on a 0 to 1.46 s window of the master does not hear "لماكرون". Fix: duck the impact 6 dB after its first 80 ms.
12. **P2 (L). Hands under text** (item 15 above). Readable; lift T8 and T10 60 to 80 px while the hands are raised, or accept.
13. **P2 (M), 5.36 to 8.68. The attribution header is small.** Ink height 35 px (type about 38 px), plates 50 px: under D-22's 62 and 46 px and at platform-specs' 40 px floor for secondary text. Fix: header 44 px.
14. **P2 (N), 51.64 to 51.88. "أطروحة كاذبة" touches the safe line.** Ink x 65 to 882: zero margin on the left. Fix: shorten the kashida by 20 px.
15. **P2 (O), 29.80. "أموال" in T11 needs an ear.** Whisper writes "أمور" in four passes (p 0.73 to 0.75) and "أموان" in one (0.77); the screen word is the one the sentence needs. Fix: one human listen at 29.66 to 29.92, as D-31 did with measured forms.
16. **P2 (P). Small frame repeats.** The first frame of four shots shows twice (10.56, 11.48, 11.68, 26.64): fix with src_in one frame later. The missile shot (2.72 to 4.73) repeats every third frame in the official source itself: accept.

## Status against the contract and the owner's rules
- F1 PARTLY (A; the table is off for A and G). F2 PASS. F3 FAIL on B for 3 frames, otherwise PASS (the disc sits behind Macron only, 0.50 to 2.70 and 56.00 to 58.00; the glow is gone from the background). F4 PASS (zoom keys on phrase starts unchanged; the face track is smooth). F5 PASS.
- (a) The speaker stays lit: PASS on luma and on the background; FAIL on B (red over his head); thin rim in F.
- (b) Every element ties to its line: FAIL on C (party flag) and B (the dot belongs to the episode's card); every added title, disc, pulse and plate has its word.
- (c) Finishing layer measured and applied for a reason: PASS for everything added (no grain, blur-in on titles and plates, glow only on the programme title and pins); the inherited colour fringe at the desk (F) has no measured reason.
- (d) Real library recordings only: PASS.

## Competitor swap (identity-tests sections 1 to 5)
Competitor: BBC News Arabic. The brief names no rival; for a pan-Arab current-affairs explainer cut from a studio interview, it is the best-known Arabic broadcaster after Al Jazeera that posts vertical explainer and interview cuts with Arabic captions. Al Arabiya would give the same result.

| Beat | Time | What BBC News Arabic would have to change beyond name, logo, UI and colours | Brand-owned element (section 2) |
|---|---|---|---|
| Hook archive | 0.00 to 4.73 | Nothing in the footage (official French defence pictures). It would have to drop the crimson disc swooping behind the named person and the house letterforms with long kashida | the programme's attention device (measured in ref-a and ref-b); proprietary type |
| Host's contrast | 4.73 to 8.68 | A re-shoot: the programme's presenter in its warm curtained studio; the frosted plates with the crimson pin | presenter and set (its real place) |
| Proof montage | 8.68 to 11.80 | Nothing | none (category footage) |
| Debt and claim | 11.80 to 22.40 | The interview set (curtains, cups, table) recorded for this episode | set |
| Students | 22.40 to 26.62 | The wide shot of the set; the archive needs nothing | set (wide shot only) |
| The turn | 26.62 to 53.74 | Set; the kashida titles "عاجزة" and "أطروحة كاذبة" | set; type |
| War and army | 53.74 to 58.00 | Footage nothing; the disc behind Macron and the house titles | disc device; type |
| **Payoff (hero)** | 58.00 to 61.48 | The set, and "وجدت موارد" rising crimson in the house type and cooling to silver as the word ends | set; type; the programme's title behaviour |
| Sign-off | 61.48 to 66.36 | The presenter and set (the programme's name and "الجزيرة" do not count) | presenter and set |

Result: PASS. The hero holds the programme's set and its title device, and the hook and the host's beat each hold another (the disc; the presenter and set). Weak spots: the montage and the archive halves of the hook and the payoff are the category's; in the free-font master the type drops out and the swap rests on the set, the presenter and the disc. Seen vs measured: judged on unmasked frames of the master at 0.2 s and 25 fps strips; the masked brand test is the cold viewer's (`review/identity/masked-09-r2.txt`), not run here.

Five P1 items and no P0. Four of the five came with the round 2 changes (B was claimed fixed, C, D and E are new), so each fix needs before and after crops in `fixes.json` and one look at the touched frames of the new render (15.5 to 16.0, 25.4 to 26.7, 33.4 to 35.2, 46.9 to 47.4, 47.1 to 50.9, 57.6 to 58.3), not a full round.

Round verdict: FIX P1 THEN SHIP

