THE MEDIA CUSTOMS LAUNCH CONTROL Google Cloud Agent Builder Powered by Grafana
Home Agent Studio
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.

Stream connecting 48 events
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