LearnNewsExamplesServices
Frontmatter
id15912
titleFilm-take launch profile: frame-rate-limit flag suppresses headed compositing
stateClosed
labels
bugaitesting
assigneesneo-fable
createdAtJul 25, 2026, 4:42 PM
updatedAtJul 25, 2026, 6:56 PM
githubUrlhttps://github.com/neomjs/neo/issues/15912
authorneo-fable
commentsCount2
parentIssuenull
subIssues[]
subIssuesCompleted0
subIssuesTotal0
contentTrust
projected
quarantined0
signals[]
blockedBy[]
blocking[]
closedAtJul 25, 2026, 6:56 PM

Film-take launch profile: frame-rate-limit flag suppresses headed compositing

Closed Backlog/active-chunk-9 bugaitesting
neo-fable
neo-fable commented on Jul 25, 2026, 4:42 PM

Context

The #15252 film pipeline's capture arc (13 takes + 3 renderer probes, receipts in the production root) isolated why every capture grain — display, region, and CGWindowID — recorded BLACK while the five-beat journey passed underneath: the headed E2E browser never composites a presentable frame under the benchmark launch args. page.screenshot() starves for the full 180s test timeout under E2E_LAUNCH_ARGS; the same run paints instantly (305KB rich frame, the full dense workstation) without them.

The Problem

Bisect receipts (each = one live headed morph run at dev 26a3e261a0-era heads, macOS 26.5.2 / M5 Max / retina + BenQ):

Args Composites? Vessel births? Morph
E2E_LAUNCH_ARGS (GPU intent + full base) NOpage.screenshot times out at 180s; all screen captures black yes green (worker-truth only)
none (Playwright defaults) yes NOexitFired=true, vessel never born (backgrounding throttles the newborn popup's renderer before its SharedWorker joins) red
BASE_LAUNCH_ARGS minus the 4 throttle/framerate flags yes NO (same birth failure) red
BASE_LAUNCH_ARGS minus ONLY --disable-frame-rate-limit (no GPU-intent args) yes (306KB painted probe) yes GREEN — 2 passed, 9.5s

So: --disable-frame-rate-limit suppresses compositing on this host class entirely (renderer runs, DOM/worker/NL all live, zero presented frames), while the backgrounding-disable trio is LOAD-BEARING for tear-out vessel birth (an occluded newborn popup throttles before joining the shared heap without them). The benchmark args stay correct for benchmarks; film takes need frames on glass.

Adjacent: this compositing suppression is a strong candidate mechanism for the #15813-family canvas-screenshot instability (the WorkstationNL tour-journey witness fails at targetCanvas.screenshot() "waiting for element to be stable" under the same args).

The Fix

test/playwright/playwright.config.e2e.mjs: the chromium project's launchOptions.args become env-conditional — NEO_FILM_TAKE=1 launches with BASE_LAUNCH_ARGS minus --disable-frame-rate-limit (no GPU-intent args; capture needs normal vsync compositing, not benchmark-grade rendering); the default path is byte-identical to today. One filtered-constant + one ternary, both documented against this ticket's receipt table.

Acceptance Criteria

  • NEO_FILM_TAKE=1 headed morph run paints (a page.screenshot completes with a rich frame) AND passes — the round-2 bisect receipt reproduced with the committed config.
  • Non-film runs launch with byte-identical E2E_LAUNCH_ARGS (gl-probe semantics untouched).
  • Post-merge: a real display-capture take shows the painted workstation (the first non-black film footage).

Out of Scope

Retuning the benchmark args themselves; the #15813-family canvas witness fix (candidate mechanism noted, separate verification); the v0 draft cut (assembly plan already banked in the production record).

Related

#15252 (the film — consumes this), PR #15840 / #15907 (increment 1, merged — its film-take mode ships the pacing/fronting this profile completes), #15906 (increment 2). Discovery instrument: the renderer-proof probe (page.screenshot compositor-starvation as a mechanical paint test).

Live latest-open sweep: checked latest 10 open issues at 2026-07-25T14:43Z; no equivalent. Own-lane continuation; no colliding claim.

Origin Session ID: b8c9e338-27b3-4385-99ac-dce459733940

Retrieval Hint: "film take launch profile disable-frame-rate-limit compositing black capture bisect"