{
  "status": "rendered and verified",
  "output_file": "08-explainer-video.mp4",
  "output_sha256": "340650e0ecd3ed3bdbdc5e4b36ba3d3d981b385d99b9d7bf8a6a321f90297166",
  "output_bytes": 12868033,
  "output_duration_seconds": 292.466667,
  "native_resolution": [
    1920,
    1080
  ],
  "upscaled": false,
  "frame_rate": "30/1",
  "frame_count": 8774,
  "video_stream": {
    "index": 0,
    "codec_name": "h264",
    "codec_long_name": "H.264 / AVC / MPEG-4 AVC / MPEG-4 part 10",
    "profile": "High",
    "codec_type": "video",
    "codec_tag_string": "avc1",
    "codec_tag": "0x31637661",
    "width": 1920,
    "height": 1080,
    "coded_width": 1920,
    "coded_height": 1080,
    "has_b_frames": 0,
    "sample_aspect_ratio": "1:1",
    "display_aspect_ratio": "16:9",
    "pix_fmt": "yuv420p",
    "level": 50,
    "color_range": "tv",
    "color_space": "bt709",
    "color_transfer": "bt709",
    "color_primaries": "bt709",
    "chroma_location": "left",
    "field_order": "progressive",
    "refs": 1,
    "is_avc": "true",
    "nal_length_size": "4",
    "id": "0x1",
    "r_frame_rate": "30/1",
    "avg_frame_rate": "30/1",
    "time_base": "1/15360",
    "start_pts": 0,
    "start_time": "0.000000",
    "duration_ts": 4492288,
    "duration": "292.466667",
    "bit_rate": "152889",
    "bits_per_raw_sample": "8",
    "nb_frames": "8774",
    "extradata_size": 50,
    "disposition": {
      "default": 1,
      "dub": 0,
      "original": 0,
      "comment": 0,
      "lyrics": 0,
      "karaoke": 0,
      "forced": 0,
      "hearing_impaired": 0,
      "visual_impaired": 0,
      "clean_effects": 0,
      "attached_pic": 0,
      "timed_thumbnails": 0,
      "non_diegetic": 0,
      "captions": 0,
      "descriptions": 0,
      "metadata": 0,
      "dependent": 0,
      "still_image": 0,
      "multilayer": 0
    },
    "tags": {
      "language": "und",
      "handler_name": "VideoHandler",
      "vendor_id": "[0][0][0][0]",
      "encoder": "Lavc62.11.100 libx264"
    }
  },
  "audio_stream": {
    "index": 1,
    "codec_name": "aac",
    "codec_long_name": "AAC (Advanced Audio Coding)",
    "profile": "LC",
    "codec_type": "audio",
    "codec_tag_string": "mp4a",
    "codec_tag": "0x6134706d",
    "sample_fmt": "fltp",
    "sample_rate": "48000",
    "channels": 2,
    "channel_layout": "stereo",
    "bits_per_sample": 0,
    "initial_padding": 0,
    "id": "0x2",
    "r_frame_rate": "0/0",
    "avg_frame_rate": "0/0",
    "time_base": "1/48000",
    "start_pts": 0,
    "start_time": "0.000000",
    "duration_ts": 14038368,
    "duration": "292.466000",
    "bit_rate": "192130",
    "nb_frames": "13711",
    "extradata_size": 2,
    "disposition": {
      "default": 1,
      "dub": 0,
      "original": 0,
      "comment": 0,
      "lyrics": 0,
      "karaoke": 0,
      "forced": 0,
      "hearing_impaired": 0,
      "visual_impaired": 0,
      "clean_effects": 0,
      "attached_pic": 0,
      "timed_thumbnails": 0,
      "non_diegetic": 0,
      "captions": 0,
      "descriptions": 0,
      "metadata": 0,
      "dependent": 0,
      "still_image": 0,
      "multilayer": 0
    },
    "tags": {
      "language": "und",
      "handler_name": "SoundHandler",
      "vendor_id": "[0][0][0][0]"
    }
  },
  "production_start_utc": "2026-10-27T17:03:16.892671+00:00",
  "verification_end_utc": "2026-10-27T17:35:15.260469+00:00",
  "production_elapsed_seconds": 1918.367798,
  "elapsed_definition": "Start of narration/asset preparation through final render verification; excludes prior book reading/writing and later packaging.",
  "render": {
    "started_at_utc": "2026-10-27T17:21:25.627767+00:00",
    "finished_at_utc": "2026-10-27T17:24:59.808555+00:00",
    "wall_seconds": 214.18078931499986,
    "exit_code": 0,
    "command": [
      "node",
      "/home/albert/.npm/_npx/d5029dd092d313d5/node_modules/hyperframes/bin/hyperframes.mjs",
      "render",
      "--quality",
      "delivery",
      "--fps",
      "30",
      "--workers",
      "2",
      "--no-browser-gpu",
      "--output",
      "renders/progression-handoff-explainer.mp4"
    ],
    "definition": "Full local HyperFrames render process, including validation, browser setup, capture, encoding and audio mux. Not pure GPU compute time.",
    "render_jobs_completed": 1,
    "render_jobs_failed": 0,
    "render_jobs_retried": 0,
    "browser_gpu": false,
    "workers_requested": 2
  },
  "render_pipeline_seconds": 212.868,
  "render_phase_seconds": {
    "compile": 0.165,
    "browser_probe": 0.049,
    "video_extract": 0.0,
    "audio_process": 2.004,
    "file_server": 0.003,
    "capture_disk": 209.898,
    "encode": 0.158,
    "assemble": 0.54
  },
  "summed_render_processing_seconds": 214.18078931499986,
  "scene_times": [
    {
      "scene": 1,
      "title": "Tomorrow starts before tomorrow",
      "start_seconds": 0,
      "end_seconds": 36.55733,
      "output_seconds": 36.55733,
      "voice_generation_seconds": 6.1365649700164795,
      "separate_render_time_seconds": null,
      "render_note": "One continuous render; individual scene render times are not exposed."
    },
    {
      "scene": 2,
      "title": "A buffer protects the deadline",
      "start_seconds": 36.55733,
      "end_seconds": 76.29333,
      "output_seconds": 39.736,
      "voice_generation_seconds": 7.348189353942871,
      "separate_render_time_seconds": null,
      "render_note": "One continuous render; individual scene render times are not exposed."
    },
    {
      "scene": 3,
      "title": "Make the promise find its way back",
      "start_seconds": 76.29333,
      "end_seconds": 117.26667,
      "output_seconds": 40.97334000000001,
      "voice_generation_seconds": 7.184427976608276,
      "separate_render_time_seconds": null,
      "render_note": "One continuous render; individual scene render times are not exposed."
    },
    {
      "scene": 4,
      "title": "Build a way back",
      "start_seconds": 117.26667,
      "end_seconds": 158.28267,
      "output_seconds": 41.01599999999999,
      "voice_generation_seconds": 7.57789421081543,
      "separate_render_time_seconds": null,
      "render_note": "One continuous render; individual scene render times are not exposed."
    },
    {
      "scene": 5,
      "title": "Capacity needs direction and support",
      "start_seconds": 158.28267,
      "end_seconds": 203.928,
      "output_seconds": 45.64533,
      "voice_generation_seconds": 8.963132381439209,
      "separate_render_time_seconds": null,
      "render_note": "One continuous render; individual scene render times are not exposed."
    },
    {
      "scene": 6,
      "title": "Follow the next consequence",
      "start_seconds": 203.928,
      "end_seconds": 246.01067,
      "output_seconds": 42.08267000000001,
      "voice_generation_seconds": 7.354669570922852,
      "separate_render_time_seconds": null,
      "render_note": "One continuous render; individual scene render times are not exposed."
    },
    {
      "scene": 7,
      "title": "Leave a stronger starting point",
      "start_seconds": 246.01067,
      "end_seconds": 292.464,
      "output_seconds": 46.453329999999994,
      "voice_generation_seconds": 5.586814641952515,
      "separate_render_time_seconds": null,
      "render_note": "One continuous render; individual scene render times are not exposed."
    }
  ],
  "voice": {
    "provider": "local Kokoro ONNX",
    "model": "Kokoro v1.0 82M",
    "model_sha256": "7d5df8ecf7d4b1878015a32686053fd0eebe2bc377234608764cc0ef3636a6c5",
    "model_bytes": 325532387,
    "voice": "bm_george",
    "speed": 1.0,
    "language": "en-gb",
    "device": "CPUExecutionProvider",
    "threads": 4,
    "sample_rate": 24000,
    "format": "WAV PCM signed 16-bit mono",
    "wall_seconds": 50.837008476257324,
    "sum_paragraph_generation_seconds": 50.15169310569763,
    "completed_jobs": 14,
    "failed_jobs": 0,
    "retried_jobs": 0,
    "clips": [
      {
        "scene": 1,
        "paragraph": 1,
        "text": "A productive day looks like something you achieve today. But some of it was already decided yesterday: whether the next task is clear, whether the materials are ready, and whether there is room to deal with a surprise.",
        "start": 0.6,
        "end": 13.48533,
        "duration": 12.885333333333334,
        "generation_seconds": 1.911677598953247,
        "path": "assets/voice/01-01.wav"
      },
      {
        "scene": 1,
        "paragraph": 2,
        "text": "In Progression, Sebastian Marshall calls attention to these upstream effects. Effort still matters. His point is that the same effort starts from a different position when preparation has already done part of the work. Instead of asking only how to push harder now, ask what you can change now that will make the next attempt easier.",
        "start": 13.84533,
        "end": 34.19733,
        "duration": 20.352,
        "generation_seconds": 4.224887371063232,
        "path": "assets/voice/01-02.wav"
      },
      {
        "scene": 2,
        "paragraph": 1,
        "text": "Marshall gives a personal example. After struggling to sustain an earlier newsletter, he relaunched with eight issues already written. The important change was not a more inspiring deadline. It was a buffer between the deadline and unfinished work.",
        "start": 37.15733,
        "end": 53.136,
        "duration": 15.978666666666667,
        "generation_seconds": 3.234869956970215,
        "path": "assets/voice/02-01.wav"
      },
      {
        "scene": 2,
        "paragraph": 2,
        "text": "Picture a regular stream of deliveries. If every delivery depends on work completed at the last instant, one interruption stops the stream. With prepared work in reserve, the same interruption can be absorbed while the underlying problem is repaired. The buffer does not remove the work. It changes when that work has to be done.",
        "start": 53.496,
        "end": 73.93333,
        "duration": 20.437333333333335,
        "generation_seconds": 4.113319396972656,
        "path": "assets/voice/02-02.wav"
      },
      {
        "scene": 3,
        "paragraph": 1,
        "text": "Preparation can also be a trained response. Marshall describes Greg Nance recording promises in a Commitments file, then reviewing that file regularly. A promise triggers capture. The review brings it back to action.",
        "start": 76.89333,
        "end": 90.824,
        "duration": 13.930666666666667,
        "generation_seconds": 2.4657177925109863,
        "path": "assets/voice/03-01.wav"
      },
      {
        "scene": 3,
        "paragraph": 2,
        "text": "Both connections matter. Recording without review creates a warehouse of forgotten intentions. Reviewing without capture leaves obligations missing from the start. Marshall's idea of entrainment is to practice the useful response until a familiar situation reliably calls it up. Begin with a small number of patterns, and adjust the cue when the usual circumstances change.",
        "start": 91.184,
        "end": 114.90667,
        "duration": 23.722666666666665,
        "generation_seconds": 4.71871018409729,
        "path": "assets/voice/03-02.wav"
      },
      {
        "scene": 4,
        "paragraph": 1,
        "text": "Even a useful routine will sometimes break. Travel, illness or too many obligations can change the conditions. Marshall's answer is to make recovery part of the system.",
        "start": 117.86667,
        "end": 129.57867,
        "duration": 11.712,
        "generation_seconds": 2.254261016845703,
        "path": "assets/voice/04-01.wav"
      },
      {
        "scene": 4,
        "paragraph": 2,
        "text": "A firebreak is a planned interruption that stops a bad stretch from spreading indefinitely. A weekly review can become that boundary: see what happened, choose what matters, and arrange a realistic restart. Rapid repair restores what can be restored. The aim is better adherence over time. A small review that actually happens can preserve more progress than an elaborate routine that disappears as soon as the week becomes difficult.",
        "start": 129.93867,
        "end": 155.92267,
        "duration": 25.984,
        "generation_seconds": 5.323633193969727,
        "path": "assets/voice/04-02.wav"
      },
      {
        "scene": 5,
        "paragraph": 1,
        "text": "The book then asks what all this capability is for. Toughness without a mission can become effort scattered in every direction. Marshall recommends clarifying the intended outcome, rehearsing useful responses, and reducing an overwhelming undertaking to the next appropriate action.",
        "start": 158.88267,
        "end": 177.18667,
        "duration": 18.304,
        "generation_seconds": 3.92811918258667,
        "path": "assets/voice/05-01.wav"
      },
      {
        "scene": 5,
        "paragraph": 2,
        "text": "He also insists that support matters. In his account of Greg Nance's mountain ordeal, individual action sits alongside encouragement from family and help from other climbers. The picture is not a lone person producing unlimited willpower. It is a person drawing on preparation, judgment and relationships. Build capacity, but keep asking what worthwhile purpose it serves.",
        "start": 177.54667,
        "end": 201.568,
        "duration": 24.021333333333335,
        "generation_seconds": 5.035013198852539,
        "path": "assets/voice/05-02.wav"
      },
      {
        "scene": 6,
        "paragraph": 1,
        "text": "Good intentions do not settle whether a plan will work. Marshall asks us to follow what an action changes next. A rule that solves one immediate problem may create another, or damage something more important.",
        "start": 204.528,
        "end": 217.81867,
        "duration": 13.290666666666667,
        "generation_seconds": 2.5838851928710938,
        "path": "assets/voice/06-01.wav"
      },
      {
        "scene": 6,
        "paragraph": 2,
        "text": "His contractor example is useful. Preventing every change request may protect today's schedule while weakening trust, satisfaction and future work. He suggests separating the outcomes, deciding which ones matter most, and adjusting the process\u2014for example, agreeing and paying for each stage before that stage begins. The method is to investigate the chain of effects, then check whether your prediction matches what actually happens.",
        "start": 218.17867,
        "end": 243.65067,
        "duration": 25.472,
        "generation_seconds": 4.770784378051758,
        "path": "assets/voice/06-02.wav"
      },
      {
        "scene": 7,
        "paragraph": 1,
        "text": "At the end of the book, the time horizon grows. Marshall remembers his grandmother describing childhood hunger, becoming a nurse, raising a family, and later teaching him reading and mathematics. At the age when she had struggled to survive, he was receiving opportunities her work had helped create.",
        "start": 246.61067,
        "end": 265.256,
        "duration": 18.645333333333333,
        "generation_seconds": 2.4610304832458496,
        "path": "assets/voice/07-01.wav"
      },
      {
        "scene": 7,
        "paragraph": 2,
        "text": "Progress can cross more than one lifetime. Marshall includes cultural successors as well as descendants: people who inherit knowledge, institutions and work worth building on. The visual connection we have used is an interpretation of the book: a good handoff. Prepare the next attempt. Leave a way back after disruption. And ask whether what you build gives the next person more room to act.",
        "start": 265.616,
        "end": 289.104,
        "duration": 23.488,
        "generation_seconds": 3.125784158706665,
        "path": "assets/voice/07-02.wav"
      }
    ],
    "peak_vram": "not applicable, CPU inference",
    "energy": "not recorded",
    "adapters": "none",
    "seed": "not exposed by API",
    "diffusion_settings": "not applicable"
  },
  "sound": {
    "source": "Original procedural score and sound cues; no external music or sampled effects",
    "seed": 27102026,
    "sample_rate": 48000,
    "stereo": true,
    "score_rhythm": "one three-note chord every 5 seconds with sparse delayed upper notes",
    "score_frequencies_hz": [
      [
        146.832,
        220,
        293.665
      ],
      [
        130.813,
        195.998,
        261.626
      ],
      [
        164.814,
        220,
        329.628
      ],
      [
        146.832,
        195.998,
        293.665
      ]
    ],
    "score_target_lufs": -36,
    "voice_target_lufs": -18,
    "speech_carve": "1200 Hz parametric cut, -12 dB, Q 0.65; lowpass 1800 Hz; highpass 90 Hz",
    "voice_processing": "65 Hz highpass; loudness normalization -18 LUFS, -2 dBTP, LRA9",
    "sfx_events": 28,
    "wall_seconds": 8.629280090332031,
    "completed": true,
    "generated_models": "None for score/SFX (deterministic DSP)",
    "audio_listened_to": false
  },
  "voice_quantization": "not independently verified; hash and bytes recorded",
  "render_model": "Authored vector animation; no generative video model",
  "software": {
    "hyperframes": "0.8.200",
    "gsap": "3.15.0",
    "node": "24.20.0",
    "ffmpeg_verification": "8.0.1-3ubuntu2",
    "kokoro_onnx": "0.4.7",
    "onnxruntime": "1.30.0"
  },
  "audio_preparation_attempts": {
    "completed": 1,
    "failed": 0,
    "retried": 0
  },
  "peak_vram": "not recorded",
  "energy": "not recorded",
  "steps_sampler_scheduler_guidance_denoise": "not applicable",
  "captions": "Measured paragraph boundaries; approximate sentence positions",
  "verification": {
    "decode": "pass, all audio and video frames decoded without errors",
    "metadata_assertions": "pass",
    "loudness": {
      "input_i": "-15.05",
      "input_tp": "-1.70",
      "input_lra": "2.00",
      "input_thresh": "-25.64",
      "output_i": "-18.03",
      "output_tp": "-4.58",
      "output_lra": "2.00",
      "output_thresh": "-28.58",
      "normalization_type": "dynamic",
      "target_offset": "0.03"
    },
    "audio_listened_to": false,
    "wall_seconds": 9.69454744000177,
    "sampled_decoded_frames": 9,
    "frame_review": "pass; 9 decoded frames visually inspected",
    "reader_playback": "Passed: served MP4 loaded 1920\u00d71080, readyState 4, played and sought through chapter button; HTTP byte range 206.",
    "out_of_order_seek": "150 \u2192 20 \u2192 150: complete animation SVG markup identical. Editor panels can resize, so cropped editor screenshot bytes were not used as pose evidence."
  },
  "warnings": {
    "lint": 0,
    "runtime": 0,
    "layout": 0,
    "motion": 0,
    "contrast": 0,
    "craft": 21
  },
  "readable_stats": [
    [
      "Output",
      "292.467 s \u00b7 1920 \u00d7 1080 native \u00b7 30 fps \u00b7 8774 frames \u00b7 no upscaling"
    ],
    [
      "File",
      "MP4 \u00b7 H.264 High \u00b7 yuv420p \u00b7 AAC 48000 Hz stereo \u00b7 12,868,033 bytes (12.27 MiB)"
    ],
    [
      "Elapsed",
      "1918.368 s from 2026-10-27T17:03:16.892671+00:00 to 2026-10-27T17:35:15.260469+00:00; narration/asset preparation through final render and reader verification, including authoring/review. Excludes prior book reading/writing and later packaging."
    ],
    [
      "Render processing",
      "One successful job \u00b7 214.181 s process wall time \u00b7 internal pipeline 212.868 s. Not pure GPU compute time."
    ],
    [
      "Render stages",
      "compile: 0.165 s \u00b7 browser_probe: 0.049 s \u00b7 video_extract: 0.000 s \u00b7 audio_process: 2.004 s \u00b7 file_server: 0.003 s \u00b7 capture_disk: 209.898 s \u00b7 encode: 0.158 s \u00b7 assemble: 0.540 s"
    ],
    [
      "Animation",
      "Authored SVG/GSAP 3.15.0 \u00b7 HyperFrames 0.8.200 \u00b7 Node 24.20.0 \u00b7 two software Chromium capture workers \u00b7 no generative video model or GPU encoder"
    ],
    [
      "Narration",
      "Local synthetic Kokoro v1.0 82M ONNX \u00b7 bm_george \u00b7 en-gb \u00b7 speed 1.0 \u00b7 CPUExecutionProvider, four threads \u00b7 kokoro-onnx 0.4.7 / ONNX Runtime 1.30.0 \u00b7 24 kHz mono PCM16 source. Quantization unverified; model SHA-256 and bytes saved; no adapters or exposed seed."
    ],
    [
      "Voice generation",
      "14 successful paragraph jobs \u00b7 0 failed/retried \u00b7 50.837 s elapsed \u00b7 50.152 s summed inference calls"
    ],
    [
      "Music and effects",
      "Original procedural DSP \u00b7 seed 27102026 \u00b7 28 cues \u00b7 48 kHz stereo stems \u00b7 8.629 s successful audio preparation \u00b7 0 failed/retried"
    ],
    [
      "Audio",
      "Finished mix -15.05 LUFS integrated, -1.70 dBTP, 2.00 LU range \u00b7 voice target \u221218 LUFS, score target \u221236 LUFS \u00b7 measured, not auditioned"
    ],
    [
      "Settings",
      "Delivery quality, 30 fps, software capture. No upscaling, interpolation or ComfyUI jobs. Diffusion steps, sampler, scheduler, guidance, denoise and adapters do not apply to authored vector animation."
    ],
    [
      "Resources",
      "CPU narration and software browser capture. Peak VRAM and energy not recorded."
    ],
    [
      "Verification",
      "Full decode passed; 9 decoded frames visually checked; zero validation/layout/runtime errors. 21 intentional narration/reading-hold warnings. Captions use measured paragraphs with approximate sentence timing."
    ],
    [
      "Scene 1 timing",
      "36.557 s output \u00b7 6.137 s voice generation. Separate scene render time not exposed."
    ],
    [
      "Scene 2 timing",
      "39.736 s output \u00b7 7.348 s voice generation. Separate scene render time not exposed."
    ],
    [
      "Scene 3 timing",
      "40.973 s output \u00b7 7.184 s voice generation. Separate scene render time not exposed."
    ],
    [
      "Scene 4 timing",
      "41.016 s output \u00b7 7.578 s voice generation. Separate scene render time not exposed."
    ],
    [
      "Scene 5 timing",
      "45.645 s output \u00b7 8.963 s voice generation. Separate scene render time not exposed."
    ],
    [
      "Scene 6 timing",
      "42.083 s output \u00b7 7.355 s voice generation. Separate scene render time not exposed."
    ],
    [
      "Scene 7 timing",
      "46.453 s output \u00b7 5.587 s voice generation. Separate scene render time not exposed."
    ]
  ],
  "editable_project": "/home/albert/Documents/ChatGPT/Codex/videos/progression-handoff",
  "local_only": true
}
