{
  "schema_version": 1,
  "review_date": "2026-09-05",
  "techniques": [
    {
      "id": "title-cut",
      "composition": "TitleCut",
      "title": "Type a premise, then cut to the product",
      "purpose": "Separate the claim from its visual proof.",
      "boundary": "Adjacent source frames 596 (19.867 s) and 597 (19.900 s) change from title to browser. This is a direct cut, not a dissolve.",
      "framing": "Centered two-line title gives way to a wide browser inside a colored field. The browser continues enlarging after the cut.",
      "layers": "Title on white; then browser, page, cursor and background replace it together.",
      "motion": "Characters accumulate and the text recenters. A formed browser arrives at the cut; subsequent camera scale changes are separate.",
      "typography": "Black, heavy, centered type. Exact font and metrics are not recovered.",
      "order": "Page context → title construction → complete title → browser proof.",
      "holds": "The complete phrase is present in the 19.033 s sample and through 19.867 s: at least 0.834 s of sampled complete-title visibility, not its exact full hold.",
      "matches": "Growing centered text, complete-title hold and one-frame title-to-window replacement.",
      "differs": "Original wording, neutral fixture and chosen type metrics. The recreation keeps the arriving window fixed instead of continuing the source scale-up.",
      "measured": [
        "Cut pair: 19.867 / 19.900 s, source frames 596 / 597."
      ],
      "inferred": [
        "Reading begins when the complete phrase is available; no comprehension duration was measured."
      ],
      "source_url": "https://www.youtube.com/watch?v=Ej6hnsQgV_c",
      "film_title": "Introducing ChatGPT Atlas",
      "publication_timestamp": "2025-10-21T10:22:07-07:00",
      "publication_date_source": "playerMicroformatRenderer.publishDate",
      "source_sha256": "74bd47a01176497da7c28cfb61233a9a6ae5a9d40b199654bd8310f72ddf125f",
      "inspected_interval_s": [
        16.5,
        20.5
      ],
      "native_interval_s": [
        19.75,
        20.05
      ],
      "source_excerpt_first_pts_s": 16.5,
      "native_frame_count": 9,
      "defaults_status": "All Remotion phase frames, cubic Bézier (.16,1,.3,1), geometry, colors, font choice and reading holds are chosen defaults. None is a recovered OpenAI specification.",
      "annotated_frames": [
        {
          "file": "annotations/title-cut/01.webp",
          "frame": 517,
          "pts_s": 17.233,
          "caption": "Title construction replaces the page"
        },
        {
          "file": "annotations/title-cut/02.webp",
          "frame": 571,
          "pts_s": 19.033,
          "caption": "Complete phrase visible in this sample"
        },
        {
          "file": "annotations/title-cut/03.webp",
          "frame": 596,
          "pts_s": 19.867,
          "caption": "Last title frame before the cut"
        },
        {
          "file": "annotations/title-cut/04.webp",
          "frame": 597,
          "pts_s": 19.9,
          "caption": "First browser frame; later scale-up is separate"
        }
      ]
    },
    {
      "id": "punch-cut",
      "composition": "PunchCut",
      "title": "Cut directly from context to detail",
      "purpose": "Make an interaction readable without spending time on camera travel.",
      "boundary": "Frame 690 at 23.000 s is wide; frame 691 at 23.033 s is the tight sidebar composition.",
      "framing": "The sidebar composer becomes the subject. Part of the property page remains at the left as an orientation landmark.",
      "layers": "Page and sidebar share the crop; there is no separate moving callout or title.",
      "motion": "An abrupt scale/position discontinuity. Neighboring frames do not show intervening magnifications.",
      "typography": "Native UI text enlarges with its surface; no independently animated title.",
      "order": "Established browser → direct crop → readable composer.",
      "holds": "The detail persists through this 24.8 s window; later interaction lies outside it.",
      "matches": "A single-frame crop of exactly the same original artifact, with no tween.",
      "differs": "Focus point, 1.55× default magnification and output hold are chosen. Source crop is not numerically fitted.",
      "measured": [
        "Cut pair: 23.000 / 23.033 s, frames 690 / 691."
      ],
      "inferred": [
        "Remaining page content supplies orientation."
      ],
      "source_url": "https://www.youtube.com/watch?v=Ej6hnsQgV_c",
      "film_title": "Introducing ChatGPT Atlas",
      "publication_timestamp": "2025-10-21T10:22:07-07:00",
      "publication_date_source": "playerMicroformatRenderer.publishDate",
      "source_sha256": "74bd47a01176497da7c28cfb61233a9a6ae5a9d40b199654bd8310f72ddf125f",
      "inspected_interval_s": [
        22.5,
        24.8
      ],
      "native_interval_s": [
        22.9,
        23.2
      ],
      "source_excerpt_first_pts_s": 22.5,
      "native_frame_count": 9,
      "defaults_status": "All Remotion phase frames, cubic Bézier (.16,1,.3,1), geometry, colors, font choice and reading holds are chosen defaults. None is a recovered OpenAI specification.",
      "annotated_frames": [
        {
          "file": "annotations/punch-cut/01.webp",
          "frame": 687,
          "pts_s": 22.9,
          "caption": "Browser context with sidebar open"
        },
        {
          "file": "annotations/punch-cut/02.webp",
          "frame": 690,
          "pts_s": 23.0,
          "caption": "Last wide frame"
        },
        {
          "file": "annotations/punch-cut/03.webp",
          "frame": 691,
          "pts_s": 23.033,
          "caption": "First detail frame: no travel between them"
        },
        {
          "file": "annotations/punch-cut/04.webp",
          "frame": 695,
          "pts_s": 23.166,
          "caption": "Same composer remains in the detail"
        }
      ]
    },
    {
      "id": "camera-push",
      "composition": "CameraPush",
      "title": "Move the camera, then expose the action",
      "purpose": "Guide attention toward a target after establishing the workspace.",
      "boundary": "No cut is claimed during the inspected push: multiple intermediate magnifications are visible.",
      "framing": "The complete window grows beyond the frame edges and brings the workspace selector forward.",
      "layers": "Window and native cursor participate in the source framing; the selector menu is an internal UI layer.",
      "motion": "Large scale changes around 3.963–4.255 s precede the visible selector menu at 4.296 s. Motion blur is visible in intermediate frames.",
      "typography": "Existing application type scales with the camera; no new chapter copy.",
      "order": "Wide context → rapid push → menu appears → menu remains readable.",
      "holds": "The menu is visible in the 4.296–4.463 s consecutive frames and later overview samples. No exact fitted settle threshold.",
      "matches": "Shared workspace camera, short attention move, then an action label at rest.",
      "differs": "No source motion blur, exact zoom or easing reconstruction. The supplied cubic Bézier and 15-frame travel are chosen.",
      "measured": [
        "Intermediate source frames 96–102, 4.004–4.255 s; menu visible at frame 103, 4.296 s."
      ],
      "inferred": [
        "Menu follows the large push; residual motion is not claimed to be exactly zero."
      ],
      "source_url": "https://www.youtube.com/watch?v=0e-Brv-gS9Q",
      "film_title": "A first look at the Codex app",
      "publication_timestamp": "2026-02-02T10:03:33-08:00",
      "publication_date_source": "playerMicroformatRenderer.publishDate",
      "source_sha256": "d5f8b05e7d123aa336f22d01210b315bfd914aa3d380e70ca21783f023174895",
      "inspected_interval_s": [
        3.4,
        5.8
      ],
      "native_interval_s": [
        3.85,
        4.5
      ],
      "source_excerpt_first_pts_s": 3.42,
      "native_frame_count": 15,
      "defaults_status": "All Remotion phase frames, cubic Bézier (.16,1,.3,1), geometry, colors, font choice and reading holds are chosen defaults. None is a recovered OpenAI specification.",
      "annotated_frames": [
        {
          "file": "annotations/camera-push/01.webp",
          "frame": 94,
          "pts_s": 3.921,
          "caption": "Wide context before the large move"
        },
        {
          "file": "annotations/camera-push/02.webp",
          "frame": 96,
          "pts_s": 4.004,
          "caption": "Intermediate scale with visible blur"
        },
        {
          "file": "annotations/camera-push/03.webp",
          "frame": 100,
          "pts_s": 4.171,
          "caption": "Further intermediate magnification"
        },
        {
          "file": "annotations/camera-push/04.webp",
          "frame": 103,
          "pts_s": 4.296,
          "caption": "Menu now visible after the large push"
        }
      ]
    },
    {
      "id": "pointer-type",
      "composition": "FocusType",
      "title": "Establish the input before typing",
      "purpose": "Make the target of an instruction clear before the words arrive.",
      "boundary": "This excerpt is a reframe and input beat, not evidence of a submission cut.",
      "framing": "The view moves down from the workspace selector toward the composer. The lower window edge remains an orientation cue.",
      "layers": "Native composer, caret/pointer and window chrome; no editorial keystroke overlay.",
      "motion": "Camera reframing precedes the request growth visible from roughly 9 s. The later text does not fully finish in this window.",
      "typography": "Native sentence grows along the composer baseline. Its typing rate is not recovered.",
      "order": "Target is located → field remains visible → text begins growing.",
      "holds": "Empty input is available across several samples before typing. This interval does not establish complete-request reading time or submission.",
      "matches": "Pointer aim before text growth, stable field and baseline.",
      "differs": "The original example completes a shorter request and holds it. No submission is animated or inferred; camera movement is omitted to isolate focus order.",
      "measured": [
        "Inspected 6.500–10.500 s request, consecutive subset 7.500–8.500 s."
      ],
      "inferred": [
        "Target-first sequencing helps causal legibility; source caret and camera timing are not fitted."
      ],
      "source_url": "https://www.youtube.com/watch?v=0e-Brv-gS9Q",
      "film_title": "A first look at the Codex app",
      "publication_timestamp": "2026-02-02T10:03:33-08:00",
      "publication_date_source": "playerMicroformatRenderer.publishDate",
      "source_sha256": "d5f8b05e7d123aa336f22d01210b315bfd914aa3d380e70ca21783f023174895",
      "inspected_interval_s": [
        6.5,
        10.5
      ],
      "native_interval_s": [
        7.5,
        8.5
      ],
      "source_excerpt_first_pts_s": 6.507,
      "native_frame_count": 24,
      "defaults_status": "All Remotion phase frames, cubic Bézier (.16,1,.3,1), geometry, colors, font choice and reading holds are chosen defaults. None is a recovered OpenAI specification.",
      "annotated_frames": [
        {
          "file": "annotations/pointer-type/01.webp",
          "frame": 156,
          "pts_s": 6.507,
          "caption": "Workspace area before composer reframe"
        },
        {
          "file": "annotations/pointer-type/02.webp",
          "frame": 173,
          "pts_s": 7.216,
          "caption": "Composer now occupies the lower frame"
        },
        {
          "file": "annotations/pointer-type/03.webp",
          "frame": 199,
          "pts_s": 8.3,
          "caption": "Empty input remains available"
        },
        {
          "file": "annotations/pointer-type/04.webp",
          "frame": 243,
          "pts_s": 10.135,
          "caption": "Request growing; submission not shown"
        }
      ]
    },
    {
      "id": "chapter-return",
      "composition": "ChapterReturn",
      "title": "Interrupt a task and return to its state",
      "purpose": "Mark a new part of the argument without losing the task.",
      "boundary": "A white chapter card separates two views of the same agent setup. Cut onsets outside the native subset are only sample-bracketed.",
      "framing": "Two-pane application → centered single-line chapter → two-pane application.",
      "layers": "Chapter replaces the entire product composition. No background task is implied to complete behind it.",
      "motion": "Letter construction on the title, then product return and later composer input.",
      "typography": "One centered heavy sentence grows; complete text is visible by the 70.917 s sample.",
      "order": "Setup summary → test chapter → same setup context → next request.",
      "holds": "Complete chapter is present at 70.917, 71.633 and 72.367 s; the app has returned by 73.083 s. These bound, not exactly measure, the hold.",
      "matches": "A title interruption and return to an identical original task snapshot.",
      "differs": "Exact pixel identity across our return is an implementation invariant, not a measured source guarantee. Copy, timing and geometry differ.",
      "measured": [
        "Native inspection 69.500–70.750 s; broader interval 68–76 s."
      ],
      "inferred": [
        "Task continuity comes from the same agent setup, not from a claimed unchanged backend state."
      ],
      "source_url": "https://www.youtube.com/watch?v=HnSPedbA02Q",
      "film_title": "Workspace agents in ChatGPT: Third-party risk management agent",
      "publication_timestamp": "2026-04-24T13:00:56-07:00",
      "publication_date_source": "playerMicroformatRenderer.publishDate",
      "source_sha256": "5835f85d7e330116302428404d11e7774edb533602094fcc0aa908b9d4a7a5bc",
      "inspected_interval_s": [
        68,
        76
      ],
      "native_interval_s": [
        69.5,
        70.75
      ],
      "source_excerpt_first_pts_s": 68.0,
      "native_frame_count": 75,
      "defaults_status": "All Remotion phase frames, cubic Bézier (.16,1,.3,1), geometry, colors, font choice and reading holds are chosen defaults. None is a recovered OpenAI specification.",
      "annotated_frames": [
        {
          "file": "annotations/chapter-return/01.webp",
          "frame": 4080,
          "pts_s": 68.0,
          "caption": "Established two-pane task"
        },
        {
          "file": "annotations/chapter-return/02.webp",
          "frame": 4211,
          "pts_s": 70.183333,
          "caption": "Chapter sentence still growing"
        },
        {
          "file": "annotations/chapter-return/03.webp",
          "frame": 4342,
          "pts_s": 72.366667,
          "caption": "Complete chapter holds"
        },
        {
          "file": "annotations/chapter-return/04.webp",
          "frame": 4385,
          "pts_s": 73.083333,
          "caption": "Return to the same task context"
        }
      ]
    },
    {
      "id": "selection-context",
      "composition": "SelectionContext",
      "title": "Keep the selected scope through a reframe",
      "purpose": "Connect an edit request to the object it addresses.",
      "boundary": "A move into the selected table is followed later by a pullback; this is not a proven instantaneous crop cut.",
      "framing": "Table close-up becomes readable while the presenter inset stays screen-anchored. The wider conversation returns near the end.",
      "layers": "Selection under table text, attached action/input, document and conversation; separate presenter inset.",
      "motion": "The contextual action becomes a request field, text grows, then the camera pulls back.",
      "typography": "Table glyphs remain above selection fill; entered request stays attached to selected scope.",
      "order": "Selected table already present → close view → request → wider context.",
      "holds": "Request is complete in the 26.276 s sample; pullback appears at 26.693 s. Selection onset predates the interval.",
      "matches": "Selection, attached request and restored context remain related.",
      "differs": "Original table rows and simplified request. The source already has selection; ours introduces it. No presenter inset is included in the presentation study.",
      "measured": [
        "Consecutive 23–24 s frames; full inspected interval 23–27.5 s."
      ],
      "inferred": [
        "The selection identifies scope, but this interval does not prove the requested modification completed."
      ],
      "source_url": "https://www.youtube.com/watch?v=E3dDr_QtBuo",
      "film_title": "Work with docs, sheets, and slides in ChatGPT",
      "publication_timestamp": "2026-07-23T07:17:31-07:00",
      "publication_date_source": "playerMicroformatRenderer.publishDate",
      "source_sha256": "a26e0d15e19bf589eaae945b803ed2f7224b53c1cd8c6ff498ff4fd84c52dc6b",
      "inspected_interval_s": [
        23,
        27.5
      ],
      "native_interval_s": [
        23,
        24
      ],
      "source_excerpt_first_pts_s": 23.023,
      "native_frame_count": 24,
      "defaults_status": "All Remotion phase frames, cubic Bézier (.16,1,.3,1), geometry, colors, font choice and reading holds are chosen defaults. None is a recovered OpenAI specification.",
      "annotated_frames": [
        {
          "file": "annotations/selection-context/01.webp",
          "frame": 552,
          "pts_s": 23.023,
          "caption": "Table already selected before the close view"
        },
        {
          "file": "annotations/selection-context/02.webp",
          "frame": 561,
          "pts_s": 23.398375,
          "caption": "Attached action in close framing"
        },
        {
          "file": "annotations/selection-context/03.webp",
          "frame": 630,
          "pts_s": 26.27625,
          "caption": "Complete request visible in sample"
        },
        {
          "file": "annotations/selection-context/04.webp",
          "frame": 650,
          "pts_s": 27.110417,
          "caption": "Wider context returns"
        }
      ]
    },
    {
      "id": "scroll-mask",
      "composition": "ScrollMask",
      "title": "Move the document, not the viewport",
      "purpose": "Land on a result while retaining orientation.",
      "boundary": "Continuous content scrolling within the inspected native window; no scene cut is inferred from large pixel changes.",
      "framing": "A calendar rises into view. Outer window title and presenter inset stay in frame space.",
      "layers": "Scrollable document under a clipped viewport, fixed header, fixed inset.",
      "motion": "Upward content movement brings the calendar into view, then slows and leaves the calendar available.",
      "typography": "Text moves with the document; no simultaneous reading task is added during travel.",
      "order": "Request and partial calendar → scroll → calendar fills viewport → reading.",
      "holds": "The calendar is substantially exposed by 47.631 s and remains through 48.965 s. Residual document motion is visible; this is not an exact zero-motion hold.",
      "matches": "Fixed viewport and header with content-only translation and a protected destination hold.",
      "differs": "Original catalog instead of calendar; chosen 360 px offset and easing. The example fully stops the document and does not include a person.",
      "measured": [
        "36 consecutive frames within 46.750–48.250 s."
      ],
      "inferred": [
        "The landing establishes the result; source scroll physics are not recovered."
      ],
      "source_url": "https://www.youtube.com/watch?v=jzmNh8lbSp8",
      "film_title": "Make information visual with ChatGPT",
      "publication_timestamp": "2026-08-24T16:09:56-07:00",
      "publication_date_source": "playerMicroformatRenderer.publishDate",
      "source_sha256": "631dd67fc14e4f5861fd7efeeb1ab502a66a1793f8f8b7003c3055b149f81745",
      "inspected_interval_s": [
        44,
        49
      ],
      "native_interval_s": [
        46.75,
        48.25
      ],
      "source_excerpt_first_pts_s": 44.002292,
      "native_frame_count": 36,
      "defaults_status": "All Remotion phase frames, cubic Bézier (.16,1,.3,1), geometry, colors, font choice and reading holds are chosen defaults. None is a recovered OpenAI specification.",
      "annotated_frames": [
        {
          "file": "annotations/scroll-mask/01.webp",
          "frame": 1055,
          "pts_s": 44.002292,
          "caption": "Partial result below the request"
        },
        {
          "file": "annotations/scroll-mask/02.webp",
          "frame": 1120,
          "pts_s": 46.713333,
          "caption": "Content before the main upward travel"
        },
        {
          "file": "annotations/scroll-mask/03.webp",
          "frame": 1131,
          "pts_s": 47.172125,
          "caption": "Calendar rises; header and inset remain"
        },
        {
          "file": "annotations/scroll-mask/04.webp",
          "frame": 1153,
          "pts_s": 48.089708,
          "caption": "Destination occupies most of the viewport"
        }
      ]
    },
    {
      "id": "split-result",
      "composition": "SplitResult",
      "title": "Reveal a result pane before its content",
      "purpose": "Show where a result comes from while making it readable.",
      "boundary": "Within the same window, the conversation narrows and a right-hand preview becomes available. It is not a cut to an unrelated finished output.",
      "framing": "Full conversation becomes a left column next to a wider preview.",
      "layers": "Outer window, conversation, empty preview container, then loaded prototype.",
      "motion": "Pane geometry changes before the calendar content arrives. Source camera framing continues changing after arrival.",
      "typography": "Conversation reflows into a narrower column; preview has its own application text.",
      "order": "Conversation → room for preview → empty preview → loaded content.",
      "holds": "Right pane is blank at the 52.833 s sample and populated by 53.267 s. Content remains available through 55.967 s, while the outer framing moves.",
      "matches": "Container-before-content order and retained request. A separate settle boundary protects the completed result.",
      "differs": "Original static artwork rather than a running calendar. Longer stationary read hold, chosen opacity/translation and no simulated application latency.",
      "measured": [
        "45 consecutive frames in 51.500–53.000 s; arrival bracket is sampled at 52.833–53.267 s."
      ],
      "inferred": [
        "Visible container is not yet readable proof; exact load duration and final chart-like settlement are not established here."
      ],
      "source_url": "https://www.youtube.com/watch?v=_9ImjmzAyus",
      "film_title": "Build and share interactive prototypes in Codex",
      "publication_timestamp": "2026-06-04T11:06:29-07:00",
      "publication_date_source": "playerMicroformatRenderer.publishDate",
      "source_sha256": "4160a9600cb24ae556bb60397fbe5f9499301702b8fcdaf96b0940fe28ed19fe",
      "inspected_interval_s": [
        51,
        56
      ],
      "native_interval_s": [
        51.5,
        53
      ],
      "source_excerpt_first_pts_s": 51.0,
      "native_frame_count": 45,
      "defaults_status": "All Remotion phase frames, cubic Bézier (.16,1,.3,1), geometry, colors, font choice and reading holds are chosen defaults. None is a recovered OpenAI specification.",
      "annotated_frames": [
        {
          "file": "annotations/split-result/01.webp",
          "frame": 1530,
          "pts_s": 51.0,
          "caption": "Conversation before the split"
        },
        {
          "file": "annotations/split-result/02.webp",
          "frame": 1571,
          "pts_s": 52.366667,
          "caption": "Empty preview beside retained conversation"
        },
        {
          "file": "annotations/split-result/03.webp",
          "frame": 1585,
          "pts_s": 52.833333,
          "caption": "Container present, content still absent"
        },
        {
          "file": "annotations/split-result/04.webp",
          "frame": 1598,
          "pts_s": 53.266667,
          "caption": "Content available; camera behavior remains separate"
        }
      ]
    },
    {
      "id": "object-context",
      "composition": "ObjectContext",
      "title": "Carry identity across a container cut",
      "purpose": "Retain the same request when moving from isolated input to device context.",
      "boundary": "Source frame 487 at 8.116667 s shows isolated input; frame 488 at 8.133333 s shows an almost-empty phone. No geometric morph connects them.",
      "framing": "Readable isolated composer gives way to a smaller request inside a tall phone on a colored field.",
      "layers": "White field and composer are replaced by phone and background; the request is introduced within the phone after the cut.",
      "motion": "Phone establishes with changing scale/position, then the request grows into view. The same sentence supplies semantic continuity.",
      "typography": "The same text changes scale and line breaks when it returns; identity does not imply fixed coordinates.",
      "order": "Submitted-looking input → cut → briefly empty phone → same request → later response.",
      "holds": "The native frames show request content returning from about 8.216667 s and becoming complete by roughly 8.300 s. No exact product latency is implied.",
      "matches": "Hard container cut, a brief empty-device interval, then the same request returns.",
      "differs": "Original artwork is added as a second continuity cue. Four output frames of empty device and the 30-frame settle interval are chosen, slower than the source.",
      "measured": [
        "Cut pair 8.116667 / 8.133333 s, frames 487 / 488."
      ],
      "inferred": [
        "Semantic handoff rather than pixel-matched object motion."
      ],
      "source_url": "https://www.youtube.com/watch?v=th8u0bqYsQk",
      "film_title": "Find the perfect gift by shopping with ChatGPT",
      "publication_timestamp": "2026-03-27T13:55:13-07:00",
      "publication_date_source": "playerMicroformatRenderer.publishDate",
      "source_sha256": "bbdc4f174ec401b6b52c2291a8957f396485be1ecb856f7d8efa998dcebc9099",
      "inspected_interval_s": [
        7.5,
        11.5
      ],
      "native_interval_s": [
        8,
        8.7
      ],
      "source_excerpt_first_pts_s": 7.5,
      "native_frame_count": 42,
      "defaults_status": "All Remotion phase frames, cubic Bézier (.16,1,.3,1), geometry, colors, font choice and reading holds are chosen defaults. None is a recovered OpenAI specification.",
      "annotated_frames": [
        {
          "file": "annotations/object-context/01.webp",
          "frame": 487,
          "pts_s": 8.116667,
          "caption": "Last isolated composer frame"
        },
        {
          "file": "annotations/object-context/02.webp",
          "frame": 488,
          "pts_s": 8.133333,
          "caption": "First phone frame: no continuous morph"
        },
        {
          "file": "annotations/object-context/03.webp",
          "frame": 493,
          "pts_s": 8.216667,
          "caption": "Request begins returning within the phone"
        },
        {
          "file": "annotations/object-context/04.webp",
          "frame": 498,
          "pts_s": 8.3,
          "caption": "Same request now readable in its new context"
        }
      ]
    },
    {
      "id": "caption-cut",
      "composition": "CaptionCut",
      "title": "Keep a caption outside the shot transform",
      "purpose": "Retain identity while the underlying shot changes scale.",
      "boundary": "Source frame 237 at 9.884875 s is the wider presenter shot; frame 238 at 9.926583 s is a closer angle.",
      "framing": "The person changes scale and background framing. Name and role remain at the same screen location.",
      "layers": "Live-action shot beneath independently positioned white identifier text.",
      "motion": "One direct shot replacement; caption does not scale with the person.",
      "typography": "Name and role remain on one horizontal line. Native font and backing treatment are not recovered.",
      "order": "Presenter → identifier appears → cut to closer presenter with identifier retained.",
      "holds": "Identifier survives the 9.926583 s cut and remains through the sampled close shot; it disappears before the later screen-demo composition.",
      "matches": "Caption persists unchanged in screen space while the original workspace below it cuts to detail.",
      "differs": "An artifact label on a contrast panel, not a speaker lower third or live-action recreation. It does not combine a talking head with presentation video.",
      "measured": [
        "Adjacent cut frames 237 / 238 at 9.884875 / 9.926583 s."
      ],
      "inferred": [
        "Screen anchoring is visible; actual compositing software is unknown."
      ],
      "source_url": "https://www.youtube.com/watch?v=dB6pOolO7io",
      "film_title": "ChatGPT can now complete tasks on your computer",
      "publication_timestamp": "2026-07-16T11:00:16-07:00",
      "publication_date_source": "playerMicroformatRenderer.publishDate",
      "source_sha256": "d0363a9494a429830df74b4e8c4a9579dc545732889f3fd8a8d4ecf2a3afa6a2",
      "inspected_interval_s": [
        6.15,
        12.8
      ],
      "native_interval_s": [
        9.8,
        10.4
      ],
      "source_excerpt_first_pts_s": 6.172833,
      "native_frame_count": 15,
      "defaults_status": "All Remotion phase frames, cubic Bézier (.16,1,.3,1), geometry, colors, font choice and reading holds are chosen defaults. None is a recovered OpenAI specification.",
      "annotated_frames": [
        {
          "file": "annotations/caption-cut/01.webp",
          "frame": 237,
          "pts_s": 9.884875,
          "caption": "Last wide shot; identifier at lower left"
        },
        {
          "file": "annotations/caption-cut/02.webp",
          "frame": 238,
          "pts_s": 9.926583,
          "caption": "Closer shot; identifier stays screen-anchored"
        },
        {
          "file": "annotations/caption-cut/03.webp",
          "frame": 243,
          "pts_s": 10.135125,
          "caption": "Caption holds independently of subject motion"
        },
        {
          "file": "annotations/caption-cut/04.webp",
          "frame": 278,
          "pts_s": 11.594917,
          "caption": "Close shot still carries the identifier"
        }
      ]
    },
    {
      "id": "motif-montage",
      "composition": "MotifMontage",
      "title": "Cut among variants without losing the motif",
      "purpose": "Compare a family of outputs rather than demonstrate a control sequence.",
      "boundary": "After the longer western vignette, native frames show rapid portrait replacements. Examples begin at 49.167, 49.267, 49.367 and 49.467 s.",
      "framing": "Portrait images sit within a white field; size, crop and angle vary. Recurring character, not exact registration, provides continuity.",
      "layers": "One output image at a time on a stable field; no native application UI.",
      "motion": "Motion inside a vignette is followed by hard cuts among distinct character treatments.",
      "typography": "No reading text in this selected montage interval; later word-based storytelling is a different study.",
      "order": "Longer subject action → rapid variants → continued sequence outside this window.",
      "holds": "Several portraits last about three 30 fps source frames, roughly 0.1 s. This is a fast visual rhythm, not adequate time to read dense output.",
      "matches": "One recognizable silhouette survives direct variant replacements.",
      "differs": "Original geometric artwork at a fixed footprint, three variants, 0.8 s default cadence and a longer last hold. No generated character or source image is reused.",
      "measured": [
        "Native changes at frames 1475, 1478, 1481 and 1484 (49.167–49.467 s)."
      ],
      "inferred": [
        "The recurring subject unifies the montage; no consistency benchmark is inferred."
      ],
      "source_url": "https://www.youtube.com/watch?v=6SIDwCQZkU8",
      "film_title": "ChatGPT Images — Chameleon",
      "publication_timestamp": "2026-04-21T12:23:50-07:00",
      "publication_date_source": "playerMicroformatRenderer.publishDate",
      "source_sha256": "5b6d5cbb1e9afe0a95ac28fac73088174d1c16e37bc431045ff36d48add794bb",
      "inspected_interval_s": [
        46,
        50
      ],
      "native_interval_s": [
        49,
        50
      ],
      "source_excerpt_first_pts_s": 46.0,
      "native_frame_count": 30,
      "defaults_status": "All Remotion phase frames, cubic Bézier (.16,1,.3,1), geometry, colors, font choice and reading holds are chosen defaults. None is a recovered OpenAI specification.",
      "annotated_frames": [
        {
          "file": "annotations/motif-montage/01.webp",
          "frame": 1474,
          "pts_s": 49.134,
          "caption": "Last western-portrait frame before new variant"
        },
        {
          "file": "annotations/motif-montage/02.webp",
          "frame": 1475,
          "pts_s": 49.167,
          "caption": "New character treatment"
        },
        {
          "file": "annotations/motif-montage/03.webp",
          "frame": 1478,
          "pts_s": 49.267,
          "caption": "Next hard-cut variant after three frames"
        },
        {
          "file": "annotations/motif-montage/04.webp",
          "frame": 1481,
          "pts_s": 49.367,
          "caption": "Another treatment; same recurring subject"
        }
      ]
    },
    {
      "id": "density-collapse",
      "composition": "DensityCollapse",
      "title": "Collapse a busy wall into a sparse takeaway",
      "purpose": "Create a clear density change before the closing message.",
      "boundary": "The visible output field shrinks into a tiny central cluster and clears for bracketed text. The clearing and title introduction are separate states.",
      "framing": "Edge-to-edge overlapping outputs become a small center cluster on white.",
      "layers": "Overlapping cards with changing positions; group scale; later title and footer.",
      "motion": "Large field travel precedes a fast group collapse. The source does not identify a 3D camera or spring.",
      "typography": "The later title is isolated from the dense output wall, with a small availability footer.",
      "order": "Many outputs → rapid shrink → tiny cluster → sparse type.",
      "holds": "Cluster is small by the 39.083 s sample; brackets are present at 39.55 s. Wider ending timing lies outside the clip.",
      "matches": "Shared group scale and an explicit clearing before the title.",
      "differs": "Six original cards, less relative card motion, no motion blur, chosen easing and slower 24-frame collapse. No source footer or branding.",
      "measured": [
        "60 consecutive frames from 38.500 to 39.500 s; sample anchors at 39.083 and 39.550 s."
      ],
      "inferred": [
        "Density reset separates evidence from takeaway; no recovered plugin or animation rig."
      ],
      "source_url": "https://www.youtube.com/watch?v=5UlRL_ImvQ0",
      "film_title": "Build and share apps in Codex",
      "publication_timestamp": "2026-06-02T09:29:33-07:00",
      "publication_date_source": "playerMicroformatRenderer.publishDate",
      "source_sha256": "48fdcf37ab3bfa5d990c2bd0b979ae14cf1618e52d73bba14bd1451e4cc43fee",
      "inspected_interval_s": [
        35,
        40
      ],
      "native_interval_s": [
        38.5,
        39.5
      ],
      "source_excerpt_first_pts_s": 35.0,
      "native_frame_count": 60,
      "defaults_status": "All Remotion phase frames, cubic Bézier (.16,1,.3,1), geometry, colors, font choice and reading holds are chosen defaults. None is a recovered OpenAI specification.",
      "annotated_frames": [
        {
          "file": "annotations/density-collapse/01.webp",
          "frame": 2318,
          "pts_s": 38.633333,
          "caption": "Dense output field before collapse"
        },
        {
          "file": "annotations/density-collapse/02.webp",
          "frame": 2332,
          "pts_s": 38.866667,
          "caption": "Group scale change underway"
        },
        {
          "file": "annotations/density-collapse/03.webp",
          "frame": 2345,
          "pts_s": 39.083333,
          "caption": "Tiny central cluster"
        },
        {
          "file": "annotations/density-collapse/04.webp",
          "frame": 2373,
          "pts_s": 39.55,
          "caption": "Sparse title state replaces the wall"
        }
      ]
    },
    {
      "id": "quiet-ending",
      "composition": "QuietEnding",
      "title": "Reserve the last beat for a quiet mark",
      "purpose": "Let a finished presentation stop demanding attention.",
      "boundary": "The source builds its wordmark, deletes letters, introduces the knot and reaches a quiet endpoint; this is not a dissolve template.",
      "framing": "Small centered identity on a white field with ample margins.",
      "layers": "Wordmark, changing knot geometry and background. Exact original layer construction is unknown.",
      "motion": "Letter changes and a brief mark turn precede the mostly stable last samples.",
      "typography": "Source wordmark behavior is studied, not licensed or reproduced.",
      "order": "Wordmark build → hold → deletion → mark change → quiet ending.",
      "holds": "The mark appears stable across 130.881, 131.298, 131.757, 132.174 and 132.591 s samples. These samples do not prove every intervening pixel is frozen.",
      "matches": "Short original identity construction followed by a guaranteed motionless tail.",
      "differs": "Three simple original bars, not the source wordmark or knot. Letter deletion and knot rotation are not recreated; the supported recipe is quiet-ending structure only.",
      "measured": [
        "Exact inspected excerpt 127.85–132.61 s; consecutive subset 128.0–128.8 s covers the early wordmark, not the final hold."
      ],
      "inferred": [
        "Quiet final samples suggest an attention release, not a prescribed OBS buffer."
      ],
      "source_url": "https://www.youtube.com/watch?v=0e-Brv-gS9Q",
      "film_title": "A first look at the Codex app",
      "publication_timestamp": "2026-02-02T10:03:33-08:00",
      "publication_date_source": "playerMicroformatRenderer.publishDate",
      "source_sha256": "d5f8b05e7d123aa336f22d01210b315bfd914aa3d380e70ca21783f023174895",
      "inspected_interval_s": [
        127.85,
        132.61
      ],
      "native_interval_s": [
        128,
        128.8
      ],
      "source_excerpt_first_pts_s": 127.878,
      "native_frame_count": 20,
      "defaults_status": "All Remotion phase frames, cubic Bézier (.16,1,.3,1), geometry, colors, font choice and reading holds are chosen defaults. None is a recovered OpenAI specification.",
      "annotated_frames": [
        {
          "file": "annotations/quiet-ending/01.webp",
          "frame": 3076,
          "pts_s": 128.295,
          "caption": "Source wordmark established"
        },
        {
          "file": "annotations/quiet-ending/02.webp",
          "frame": 3117,
          "pts_s": 130.005,
          "caption": "Letters retreat before the mark"
        },
        {
          "file": "annotations/quiet-ending/03.webp",
          "frame": 3138,
          "pts_s": 130.881,
          "caption": "Mark in a later stable-looking sample"
        },
        {
          "file": "annotations/quiet-ending/04.webp",
          "frame": 3179,
          "pts_s": 132.591,
          "caption": "Final inspected sample remains quiet"
        }
      ]
    }
  ],
  "new_film_investigation": {
    "source_url": "https://www.youtube.com/watch?v=D-QteDHdHes",
    "title": "Use ChatGPT Work to build custom creative tools",
    "publication_timestamp": "2026-09-04T05:27:16-07:00",
    "source_sha256": "1bf07570a0982e6cde086bcf4e37fa224da144a00c5ad6afd8142964bbc6c95e",
    "existing_100_member": false,
    "full_film_overview": "0–166.683333 s at four-second targets; purposive overview, not every-frame inspection.",
    "moving_excerpt_s": [
      133,
      145
    ],
    "native_subset_s": [
      133.5,
      134.5
    ],
    "finding": "The delivered-site hero holds, the page scrolls through two result sections, then the image-editor context replaces it. The native subset is a hero hold; it does not locate the later cut. This corroborates result holds, scrolling and context cuts rather than establishing a new transition mechanism.",
    "limits": "One additional recent tutorial cannot characterize all 341 in-period uploads outside the existing 100-film study. No soundtrack, generated-output reliability or product availability is evaluated."
  },
  "scope": "Thirteen supported adaptations from ten existing in-period films; one additional recent film investigated. Distinct techniques include direct cuts, state return, semantic continuity and frame-space overlays, as well as in-shot movement. This is a supported vocabulary, not an exhaustive census of every edit in 421 uploads."
}
