Mission feed
Mission feed
Every move the crew made, in the order it made it. Not a spinner. This is the crew's own event log, streamed over server-sent events straight out of the run store. Stage errors are in here too, because a clearance tool that silently skips a shot is worse than one that admits it.
Getting everything ready Setting the run up and handing your commercial to the crew. ingest -> detecting shots pipeline 3 events 17:04:39.5
17:04:39.5
console accepted 6090901-uhd_2160_3840_25fps.mp4 (15.4s) for GLOBAL, EU, CN-CCTV3, CN-HUNAN, FR-ARTE, FR-CANAL, NG-ARISE, NG-NTA, TH-CH3, TH-CH7
17:04:39.5
run run_407e1b7c4b9e started: asset=runs/uploads/9c00519aaa47/6090901-uhd_2160_3840_25fps.mp4 markets=['GLOBAL', 'EU', 'CN-CCTV3', 'CN-HUNAN', 'FR-ARTE', 'FR-CANAL', 'NG-ARISE', 'NG-NTA', 'TH-CH3', 'TH-CH7']
17:04:39.5
ingest -> detecting shots
Watching the film for the first time Cutting your commercial into its own shots, listening to the soundtrack, and measuring the picture for flashing that could trouble a photosensitive viewer. found 1 cut(s) in 15.4s of film ingest 2 events 17:04:39.5
17:04:39.5
watching the film end to end, hunting for the cuts
17:04:46.5
found 1 cut(s) in 15.4s of film
Getting everything ready Setting the run up and handing your commercial to the crew. ingest -> 1 raw shot(s) merged to 1 pipeline 1 event 17:04:46.5
17:04:46.5
ingest -> 1 raw shot(s) merged to 1
Watching the film for the first time Cutting your commercial into its own shots, listening to the soundtrack, and measuring the picture for flashing that could trouble a photosensitive viewer. 1 shot(s) to read, one at a time, no skimming ingest 1 event 17:04:46.5
17:04:46.5
1 shot(s) to read, one at a time, no skimming
Listening to what is said Writing down the words in each shot, so a claim that is only spoken is caught as surely as one on screen. stage_error: shot_0: MediaError("ffmpeg exited 234: speex --enable-libtheora --enable-libtwolame --enable-libvidstab --enable-libvorbis --enable-libvpx --enable-libwebp --enable-libx265 --enable-libxml2 --enable-libxvid --enable-libzimg --enable-openal --enable-opencl --enable-opengl --disable-sndio --enable-libvpl --enable-libdc1394 --enable-libdrm --enable-libiec61883 --enable-chromaprint --enable-frei0r --enable-ladspa --enable-libbluray --enable-libcaca --enable-libdvdnav --enable-libdvdread --enable-libjack --enable-libpulse --enable-librabbitmq --enable-librist --enable-libsrt --enable-libssh --enable-libsvtav1 --enable-libx264 --enable-libzmq --enable-libzvbi --enable-lv2 --enable-sdl2 --enable-libplacebo --enable-librav1e --enable-pocketsphinx --enable-librsvg --enable-libjxl --enable-shared\n libavutil 59. 39.100 / 59. 39.100\n libavcodec 61. 19.101 / 61. 19.101\n libavformat 61. 7.103 / 61. 7.103\n libavdevice 61. 3.100 / 61. 3.100\n libavfilter 10. 5.100 / 10. 5.100\n libswscale 8. 3.100 / 8. 3.100\n libswresample 5. 3.100 / 5. 3.100\n libpostproc 58. 3.100 / 58. 3.100\nInput #0, mov,mp4,m4a,3gp,3g2,mj2, from 'runs/uploads/9c00519aaa47/6090901-uhd_2160_3840_25fps.mp4':\n Metadata:\n major_brand : mp42\n minor_version : 0\n compatible_brands: mp42mp41isomavc1\n creation_time : 2020-12-05T16:50:21.000000Z\n Duration: 00:00:15.36, start: 0.000000, bitrate: 2082 kb/s\n Stream #0:0[0x1](und): Video: h264 (High) (avc1 / 0x31637661), yuv420p(tv, bt709, progressive), 1440x2560, 2079 kb/s, 25 fps, 25 tbr, 25 tbn (default)\n Metadata:\n creation_time : 2020-12-05T16:50:21.000000Z\n handler_name : L-SMASH Video Handler\n vendor_id : [0][0][0][0]\n encoder : AVC Coding\nOutput #0, wav, to 'runs/work/run_407e1b7c4b9e/audio/shot_0.wav':\n[out#0/wav @ 0x55aba5783040] Output file does not contain any stream\nError opening output file runs/work/run_407e1b7c4b9e/audio/shot_0.wav.\nError opening output files: Invalid argument\n") transcription 2 events 17:04:46.5
17:04:46.5
listening to shot_0 (1/1), 15.4s of audio
17:04:50.1
stage_error: shot_0: MediaError("ffmpeg exited 234: speex --enable-libtheora --enable-libtwolame --enable-libvidstab --enable-libvorbis --enable-libvpx --enable-libwebp --enable-libx265 --enable-libxml2 --enable-libxvid --enable-libzimg --enable-openal --enable-opencl --enable-opengl --disable-sndio --enable-libvpl --enable-libdc1394 --enable-libdrm --enable-libiec61883 --enable-chromaprint --enable-frei0r --enable-ladspa --enable-libbluray --enable-libcaca --enable-libdvdnav --enable-libdvdread --enable-libjack --enable-libpulse --enable-librabbitmq --enable-librist --enable-libsrt --enable-libssh --enable-libsvtav1 --enable-libx264 --enable-libzmq --enable-libzvbi --enable-lv2 --enable-sdl2 --enable-libplacebo --enable-librav1e --enable-pocketsphinx --enable-librsvg --enable-libjxl --enable-shared\n libavutil 59. 39.100 / 59. 39.100\n libavcodec 61. 19.101 / 61. 19.101\n libavformat 61. 7.103 / 61. 7.103\n libavdevice 61. 3.100 / 61. 3.100\n libavfilter 10. 5.100 / 10. 5.100\n libswscale 8. 3.100 / 8. 3.100\n libswresample 5. 3.100 / 5. 3.100\n libpostproc 58. 3.100 / 58. 3.100\nInput #0, mov,mp4,m4a,3gp,3g2,mj2, from 'runs/uploads/9c00519aaa47/6090901-uhd_2160_3840_25fps.mp4':\n Metadata:\n major_brand : mp42\n minor_version : 0\n compatible_brands: mp42mp41isomavc1\n creation_time : 2020-12-05T16:50:21.000000Z\n Duration: 00:00:15.36, start: 0.000000, bitrate: 2082 kb/s\n Stream #0:0[0x1](und): Video: h264 (High) (avc1 / 0x31637661), yuv420p(tv, bt709, progressive), 1440x2560, 2079 kb/s, 25 fps, 25 tbr, 25 tbn (default)\n Metadata:\n creation_time : 2020-12-05T16:50:21.000000Z\n handler_name : L-SMASH Video Handler\n vendor_id : [0][0][0][0]\n encoder : AVC Coding\nOutput #0, wav, to 'runs/work/run_407e1b7c4b9e/audio/shot_0.wav':\n[out#0/wav @ 0x55aba5783040] Output file does not contain any stream\nError opening output file runs/work/run_407e1b7c4b9e/audio/shot_0.wav.\nError opening output files: Invalid argument\n")
Writing down what is actually there Looking at every shot once and describing what it holds -- a glass, a hemline, a logo -- in neutral sentences, with no verdict attached. Every market will argue about these same sentences. shot_0 -> noted 2 thing(s) worth writing down analyst 3 events 17:05:11.2
17:05:11.2
looking at shot_0 (1/1) with no idea which country will object
17:05:11.2
observe -> shot_0
17:05:30.0
shot_0 -> noted 2 thing(s) worth writing down
Getting everything ready Setting the run up and handing your commercial to the crew. analyst -> 2 observation(s) persisted pipeline 1 event 17:05:30.0
17:05:30.0
analyst -> 2 observation(s) persisted
Asking every market what it thinks One adjudicator per jurisdiction, all at once, each holding its own rulebook and looking up the statute behind anything it objects to. TH-CH7 clearance -> cleared (0 finding(s)) adjudicator 24 events 17:05:31.8
17:05:31.8
judge -> FR-ARTE (1 candidates)
17:05:31.9
judge -> CN-CCTV3 (0 candidates)
17:05:32.0
judge -> CN-HUNAN (0 candidates)
17:05:32.0
judge -> GLOBAL (0 candidates)
17:05:32.1
judge -> TH-CH7 (0 candidates)
17:05:32.1
judge -> EU (0 candidates)
17:05:32.1
judge -> NG-NTA (0 candidates)
17:05:32.1
judge -> TH-CH3 (0 candidates)
17:05:32.1
judge -> NG-ARISE (0 candidates)
17:05:32.1
judge -> FR-CANAL (1 candidates)
17:05:39.4
citation check -> FR-CANAL FR-VIOL-01 for obs_shot_0_000
17:05:40.6
citation check -> FR-ARTE FR-VIOL-01 for obs_shot_0_000
17:05:57.0
judge -> FR-CANAL (1 candidates)
17:06:05.3
citation check -> FR-CANAL FR-VIOL-01 for obs_shot_0_000
17:06:13.3
GLOBAL clearance -> cleared (0 finding(s))
17:06:13.3
EU clearance -> cleared (0 finding(s))
17:06:13.3
CN-CCTV3 clearance -> cleared (0 finding(s))
17:06:13.3
CN-HUNAN clearance -> cleared (0 finding(s))
17:06:13.3
FR-ARTE clearance -> cleared (1 finding(s))
17:06:13.3
FR-CANAL clearance -> cleared (1 finding(s))
17:06:13.3
NG-ARISE clearance -> cleared (0 finding(s))
17:06:13.3
NG-NTA clearance -> cleared (0 finding(s))
17:06:13.3
TH-CH3 clearance -> cleared (0 finding(s))
17:06:13.3
TH-CH7 clearance -> cleared (0 finding(s))
Getting everything ready Setting the run up and handing your commercial to the crew. adjudicate -> 2 finding(s) persisted across 10 market(s) pipeline 1 event 17:06:13.3
17:06:13.3
adjudicate -> 2 finding(s) persisted across 10 market(s)
Putting it all into Grafana Calling Grafana and making sure everything lands there: the numbers, the finding detail, the dashboards to read them on and the alerts that will wake the crew if something needs fixing. mcp update_dashboard('customs-overview', replace $.description) publisher 8 events 17:06:13.3
17:06:13.3
publisher -> connecting to Grafana
17:06:27.9
push_verdicts -> 2 verdict(s), 0 of them a market looking and saying no
17:06:29.6
push_observations -> 2 observation(s) to Loki, 2 indexed for search
17:06:30.6
push_run_telemetry -> {'run_id': 'run_407e1b7c4b9e', 'markets': ['GLOBAL', 'EU', 'CN-CCTV3', 'CN-HUNAN', 'FR-ARTE', 'FR-CANAL', 'NG-ARISE', 'NG-NTA', 'TH-CH3', 'TH-CH7'], 'clearances': {'GLOBAL': 'cleared', 'EU': 'cleared', 'CN-CCTV3': 'cleared', 'CN-HUNAN': 'cleared', 'FR-ARTE': 'cleared', 'FR-CANAL': 'cleared', 'NG-ARISE': 'cleared', 'NG-NTA': 'cleared', 'TH-CH3': 'cleared', 'TH-CH7': 'cleared'}, 'risk_samples': '10 market(s) x 15s', 'logs': 2, 'annotations_created': 2, 'annotations_skipped_as_duplicates': 0, 'failed_stages': ['transcription']}
17:06:33.8
ensure_dashboards -> ['customs-findings', 'customs-grid', 'customs-history', 'customs-insight', 'customs-lanes', 'customs-market', 'customs-overview', 'customs-remediation', 'customs-timeline']
17:06:36.0
mcp search_dashboards('customs')
17:06:39.8
mcp get_dashboard_by_uid('customs-overview')
17:06:45.6
mcp update_dashboard('customs-overview', replace $.description)
Getting everything ready Setting the run up and handing your commercial to the crew. snapshot store=True artifacts=43 pipeline 2 events 17:06:52.3
17:06:52.3
run run_407e1b7c4b9e done
17:07:10.9
snapshot store=True artifacts=43