{
  "schemaVersion": 1,
  "id": "title-chunk-to-glyph",
  "title": "Two-line title: chunks become glyph bursts",
  "description": "A blank frame gives way to coarse sentence fragments, including a partial next word. An indented second line then takes over with uneven one-to-three-character increments. Both left origins stay fixed. Review-stage native opening excerpt, not a complete title hold or demo transition.",
  "families": ["opening", "typography"],
  "intents": ["introduce a chapter", "assemble a two-line statement", "shift from sentence fragments to glyph bursts"],
  "tags": ["fixed-origin", "mixed-granularity", "partial-word", "discrete-reveal", "native-frame", "silent", "review-stage"],
  "distinctness": {
    "mechanism": "A hierarchical two-line build changes reveal granularity within the same statement: a whole leading word, a chunk crossing into the next word, completion of that word, a whole trailing word, then an indented line with a held short lead and uneven single/multi-glyph bursts. Earlier text and both origins stay registered; no complete-field toggle, camera, caret, fade, mask or recentering substitutes for the partial-word states.",
    "notEquivalentTo": [
      "type-staggered-identity: two complete fields hard-on three frames apart; neither field builds internally. Its outgoing word deletion is also not this retained-prefix construction.",
      "agent-task-card-explanation: a predominantly single-character explanation on a pointer-attached card; no coarse-to-fine line relay. Shared text primitives alone do not make the source passages equivalent.",
      "type-paragraph-cuts: already formed type is read through changing crops, not assembled at fixed origins.",
      "type-masked-name-reel: translating candidates behind a mask, not retained-prefix text.",
      "codex-word-tiles-collage: independent colored occluders over a collage, not glyph accumulation.",
      "agent-wordmark-outline-finish: deleting and recentering text before a contour morph, not constructing two stable lines."
    ]
  },
  "source": {
    "film": "Interrupting and Adding Details in GPT-5.4 Thinking",
    "slug": "gpt54-thinking-interruptions",
    "url": "https://www.youtube.com/watch?v=qSHMlduU6Lw",
    "sha256": "bbd79235e848ce6d268ce076c8ede3dd5034088f01bd0cf8a6e0701271aee479",
    "fps": {"numerator": 30000, "denominator": 1001},
    "width": 1920,
    "height": 1080,
    "startFrame": 0,
    "endFrameExclusive": 33,
    "localMedia": "references/openai/corpus-2024-2026/source-media/qSHMlduU6Lw.mp4"
  },
  "canvas": {"width": 1920, "height": 1080, "background": "#ffffff"},
  "observations": [
    {
      "kind": "measured",
      "statement": "All 33 consecutive native source frames were decoded and inspected. Upper-line visible character counts are 0 at0, 12 at1, 18 at4, 23 at7 and 31 at10. Frame4 ends inside the third word, not on a word boundary.",
      "sourceFrames": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12],
      "evidence": ["benchmarks/remotion-library/research/expansion/title-chunk-to-glyph/source-evidence.json"]
    },
    {
      "kind": "measured",
      "statement": "Lower-line counts are 2 at13, 4 at17, 6 at18, 9 at19, 10 at20, 13 at21, 15 at22, 16 at23, 18 at24 and 19 at25, counting spaces. Completed type remains through frame32. No caret, fade or moving glyph edge is resolved.",
      "sourceFrames": [12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32],
      "evidence": ["benchmarks/remotion-library/research/expansion/title-chunk-to-glyph/source-evidence.json"]
    },
    {
      "kind": "measured",
      "statement": "Frame32 threshold-96 ink bounds are upper [294,444,1635,538] and lower [536,561,1388,655], exclusive right/bottom. Source PTS for frames0..32 run 0.000000..1.068000s, with frame33 at1.101000s. Native rational duration is 33033/30000s; rounded source PTS are retained separately, not treated as exact CFR timestamps.",
      "sourceFrames": [0, 1, 13, 25, 32],
      "evidence": ["benchmarks/remotion-library/research/expansion/title-chunk-to-glyph/source-evidence.json"]
    },
    {
      "kind": "estimate",
      "statement": "The completed lines appear centered as a group, but their left origins do not move during construction. White field and black type are visual/color estimates, not recovered design tokens. Ink bounds do not establish the original font's CSS boxes.",
      "sourceFrames": [1, 4, 10, 13, 17, 25, 32],
      "evidence": ["benchmarks/remotion-library/research/expansion/title-chunk-to-glyph/source/00032.png"]
    },
    {
      "kind": "implementation-choice",
      "statement": "Two shared TextLayers use explicit native-frame character steps. Fixed CSS origins [288,423] and [530,540], Geist98/650, -1.5px tracking and 1.17 line height are disclosed fits. Exact word-length patterns keep every partial-word boundary meaningful; measured advance limits reject unsuitable copy rather than shrinking or recentering it.",
      "sourceFrames": [1, 4, 13, 25],
      "evidence": ["benchmarks/remotion-library/project/examples/title-chunk-to-glyph/README.md"]
    },
    {
      "kind": "unresolved",
      "statement": "Geist is a licensed substitute, not the unidentified source font. Glyph shape, weight, ink height and completed-line centering differ with original copy. Source playback was captured at 1x in Chromium and the played states inspected; this is not an independent perceived-motion review. No fidelity/completed credit is claimed.",
      "sourceFrames": [1, 4, 17, 25, 32],
      "evidence": ["benchmarks/remotion-library/research/expansion/title-chunk-to-glyph/playback/source-1x-v2/playback.json"]
    }
  ],
  "fields": {
    "headline": {
      "kind": "text",
      "description": "Exactly four ASCII words of lengths 12,3,6,7, separated by single spaces. Frame4 exposes the first character of word3. Loaded-font width must also fit 1300..1380px; no automatic shrinking or wrapping.",
      "minLength": 31,
      "maxLength": 31,
      "exactLength": 31,
      "exactWords": 4,
      "maxLines": 1,
      "exactLines": 1,
      "lineLengths": [31],
      "pattern": "^[A-Z][a-z]{11} [a-z]{3} [a-z]{6} [a-z]{7}$"
    },
    "detail": {
      "kind": "text",
      "description": "Three ASCII words of lengths 2,7,8, separated by single spaces. The first word arrives whole, followed by uneven prefix increments. Loaded-font width must also fit 800..890px.",
      "minLength": 19,
      "maxLength": 19,
      "exactLength": 19,
      "exactWords": 3,
      "maxLines": 1,
      "exactLines": 1,
      "lineLengths": [19],
      "pattern": "^[a-z]{2} [A-Z][a-z]{6} [A-Z][a-z]{7}$"
    }
  },
  "defaults": {"headline": "Articulating the subtle details", "detail": "in Project Timeline"},
  "adaptation": {"headline": "Recollecting the little stories", "detail": "at Project Briefing"},
  "adaptationNotes": [
    "Both variants contain original editorial titles. Project Timeline and Project Briefing are fictional editorial labels, not demonstrated product capabilities.",
    "No OpenAI footage, text, logo or demo data enters either presentation render. Source imagery is confined to attributed research comparisons.",
    "The two content changes share exactly the same geometry, native timing, type settings, and two visible layers.",
    "The fitted text widths are authoring constraints, not source font measurements. Original copy changes the completed-line visual centers; no dynamic centering conceals that difference."
  ],
  "invariants": [
    "33 frames at 30000/1001 fps; no added holds, frame interpolation or active-time retiming.",
    "Frame0 blank. Upper counts 12/18/23/31 at1/4/7/10. Lower counts 2/4/6/9/10/13/15/16/18/19 at13/17/18/19/20/21/22/23/24/25.",
    "All formed prefixes remain visible. Both line origins and the 117px baseline separation remain fixed.",
    "No caret, fade, slide, wipe, outline, camera travel, recentering or automatic wrapping.",
    "The excerpt ends on the completed title. The rest of the source hold and the frame79 demo cut are not implemented."
  ],
  "unsupported": [
    "Arbitrary sentence lengths, emoji, combining glyphs, multilingual shaping and different word boundaries are outside this constrained API; reject rather than redistribute the native events.",
    "The full title-to-demo transition and any OBS playback cue are outside this 33-frame study.",
    "Different aspect ratios require reviewed relayout. No silent crop, slower timing or font shrinking.",
    "No missing animation primitive was identified for this bounded excerpt. Exact source typeface metrics remain unresolved; no custom renderer or bitmap pre-render substitutes for them.",
    "Neither a source-fidelity pass nor a fresh-context reuse pass has been obtained."
  ],
  "entry": {"field": "light", "description": "One blank white frame before the first coarse fragment.", "continuityKeys": []},
  "exit": {"field": "light", "description": "Completed two-line title, held from25 through32; source continues holding beyond this excerpt.", "continuityKeys": ["headline", "detail"]},
  "neighbors": {
    "before": ["light", "typography"],
    "after": ["light", "interface"],
    "rule": "A subsequent cut is an editorial choice, not a reconstructed source cut. Preserve the held final title if extending it; do not stretch the active build. Set OBS cue timing only against actual supplied speech."
  },
  "layers": [
    {
      "id": "coarse-prefix-line", "kind": "text", "slot": "headline", "start": 0, "end": 33,
      "x": 288, "y": 423, "width": 1380, "height": 118,
      "fontSize": 98, "weight": 650, "lineHeight": 1.17, "letterSpacing": -1.5,
      "color": "#000000", "align": "left", "lineWidthRanges": [{"min": 1300, "max": 1380}],
      "reveal": {"unit": "characters", "steps": [
        {"frame": 0, "count": 0}, {"frame": 1, "count": 12}, {"frame": 4, "count": 18},
        {"frame": 7, "count": 23}, {"frame": 10, "count": 31}
      ]}
    },
    {
      "id": "fine-prefix-line", "kind": "text", "slot": "detail", "start": 0, "end": 33,
      "x": 530, "y": 540, "width": 890, "height": 118,
      "fontSize": 98, "weight": 650, "lineHeight": 1.17, "letterSpacing": -1.5,
      "color": "#000000", "align": "left", "lineWidthRanges": [{"min": 800, "max": 890}],
      "reveal": {"unit": "characters", "steps": [
        {"frame": 0, "count": 0}, {"frame": 13, "count": 2}, {"frame": 17, "count": 4},
        {"frame": 18, "count": 6}, {"frame": 19, "count": 9}, {"frame": 20, "count": 10},
        {"frame": 21, "count": 13}, {"frame": 22, "count": 15}, {"frame": 23, "count": 16},
        {"frame": 24, "count": 18}, {"frame": 25, "count": 19}
      ]}
    }
  ],
  "inspection": {
    "method": "Native-resolution source PNGs0..32, nine existing consecutive source-region sheets, and unseeked 1x Chromium playback with native-resolution callback captures inspected afterward. Both rendered variants require the same source-indexed evidence and separate independent review.",
    "limits": ["Playback callbacks are not guaranteed to capture every displayed frame.", "The inspection is builder-led, not independent perceived-motion approval.", "Only [0,33) is implemented; frame33 used only as the timestamp boundary.", "Source glyph metrics are not reproduced exactly with Geist."],
    "boundaryFrames": [0, 1, 3, 4, 6, 7, 9, 10, 12, 13, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 32],
    "intermediateFrames": [2, 5, 8, 11, 14, 15, 27, 28, 29, 30, 31],
    "sourceEvidence": [
      "benchmarks/remotion-library/research/expansion/title-chunk-to-glyph/source-evidence.json",
      "benchmarks/remotion-library/research/expansion/title-chunk-to-glyph/playback/source-1x-v2/playback.json",
      "references/openai/corpus-2024-2026/publication/motion-reference/site-release/videos/motion/gpt54-thinking-interruptions/reference.json"
    ]
  }
}
