Context
PR #16138 resolved #16128 by making PRESENTING_LAUNCH_ARGS the unconditional
headed-E2E default. At dev head be17257b3f, that profile is defined by filtering
--disable-frame-rate-limit out of BASE_LAUNCH_ARGS; only exact
NEO_E2E_ENGINE_PROFILE=1 restores the flag.
Post-merge physical evidence on the active macOS Workstation seat reverses that
ticket's premise: ordinary/default launches opened multiple real Chrome windows whose
semantic app state stayed live while the visible windows were completely empty. The
controlled rerun with --disable-frame-rate-limit present rendered application
content. The operator identified animated OffscreenCanvas work as a likely contributor;
that mechanism remains a hypothesis and is not required to repair the launch contract.
This is new evidence after the predecessor resolved, so it needs a successor rather
than reopening #16128.
Live latest-open sweep: checked the 30 newest open issues plus the 50 most recent A2A
messages at 2026-07-29T22:32:47Z; no equivalent ticket or in-flight claim exists.
The Problem
The launcher now encodes the wrong baseline for UI tests:
standard E2E command
→ activeLaunchArgs() with no sentinel
→ PRESENTING_LAUNCH_ARGS
→ BASE_LAUNCH_ARGS without --disable-frame-rate-limit
→ physically empty native windows on the current seat
An empty-window profile is not a valid UI-test profile. Worker, DOM, and Neural Link
assertions can remain green while the visual subject does not exist, producing a
semantically plausible false-green receipt.
This must not be a flag peers remember, a sentinel they select, or a host-specific
command copied between sessions. The standard E2E configuration must include the
required launch baseline automatically. Specialized profiles may add benchmark or
GPU-intent flags; no UI-test profile may remove the flag required to render content.
The Architectural Reality
test/playwright/e2e/utils/gpuIntent.mjs is the single launch-argument authority.
Its current default removes the required flag.
test/playwright/playwright.config.e2e.mjs passes activeLaunchArgs() to both
gl-probe and the Chromium project, so the selector owns the physical browser
process rather than documentation alone.
NEO_E2E_ENGINE_PROFILE=1 selects additional GPU-intent/benchmark flags. That
distinction may remain useful, but it must not decide whether application pixels
exist.
NEO_FILM_TAKE=1 is a pacing/recording signal in Workstation specs. It must not
carry browser-correctness responsibility.
- The earlier #15912 / #16128 evidence described a historical host/harness
observation. The new post-merge physical receipt proves that it cannot remain an
unqualified universal launch contract.
- No product-side docking class owns this problem. The repair belongs in the E2E
launch authority and its focused selector tests.
The Fix
- Make
--disable-frame-rate-limit an unconditional member of the shared UI-test
browser baseline.
- Make the no-sentinel/default
activeLaunchArgs() result inherit that baseline.
- Make every retained UI-test variant—including film and engine/benchmark
selection—inherit the same baseline. A specialized variant may add flags, but it
must not remove
--disable-frame-rate-limit.
- Remove the flag-less
PRESENTING_LAUNCH_ARGS UI profile. If a future non-UI
experiment needs a flag-less browser, it belongs behind a separate explicitly
non-visual harness contract, never the E2E UI default.
- Keep film pacing/recording semantics independent of browser launch correctness.
- Update launcher JSDoc and affected comments so the ordinary command is the whole
user contract; peers should not need to know this flag exists.
- Pin the selector with focused tests and retain an exact-head headed Workstation
screenshot showing populated application pixels under the ordinary no-sentinel
command.
Contract Ledger
| Target Surface |
Source of Authority |
Proposed Behavior |
Fallback |
Docs |
Evidence |
| Shared UI launch baseline |
test/playwright/e2e/utils/gpuIntent.mjs |
Always contains --disable-frame-rate-limit |
None; empty windows invalidate UI evidence |
Owner JSDoc |
Exported-list unit matrix |
activeLaunchArgs() default |
gpuIntent.mjs |
Returns the shared flag-bearing baseline with no sentinel |
None |
Owner JSDoc + config comments |
Unset-env assertion + headed populated frame |
NEO_E2E_ENGINE_PROFILE |
gpuIntent.mjs:isEngineProfile() |
May add GPU-intent/benchmark flags; never gates the rendering flag |
Default baseline |
Owner JSDoc |
Exact-sentinel matrix |
| Film selection |
Workstation specs + gpuIntent.mjs |
Controls recording/pacing only; still inherits the rendering flag |
Ordinary test shape |
Existing spec JSDoc |
Film-only selector assertion |
Former PRESENTING_LAUNCH_ARGS |
gpuIntent.mjs |
Removed as a flag-less UI profile |
Shared UI baseline |
Owner JSDoc |
Absence assertion |
Acceptance Criteria
Out of Scope
- Product-side QT docking fixes or visual taxonomy work from #15955.
- Diagnosing the likely animated-OffscreenCanvas mechanism before restoring the safe
default.
- Film editing or capture choreography.
- Reopening resolved #16128 or #15912.
- Proving a universal Chromium rule across every host; this ticket repairs the
repository UI-test contract from current physical evidence.
- Running another known-invalid flag-less headed window merely to reproduce emptiness
again.
Avoided Traps
- Documentation-only reminder: rejected; the ordinary command must already be
correct.
- Engine-profile workaround: rejected as the UI contract; peers should not need to
know or remember the flag.
- Semantic assertion as visual proof: rejected; this failure class keeps worker
truth green behind empty windows.
- Flag-less “presenting” variant: rejected for UI tests; a profile with nothing to
present cannot establish UI evidence.
- Bundling with a docking product ticket: rejected; launch authority is
independently owned and one-PR-resolvable.
- Reopening the predecessor: rejected; the regression is post-merge successor
evidence.
Related
Successor to #16128 and PR #16138.
Related: #15912, #15955.
Decision Record impact: none.
Origin Session ID: 019fac4d-7844-7422-9486-7f73ccf308f5
Retrieval Hint: "post-16138 default drops disable-frame-rate-limit empty headed Workstation windows"
Context
PR #16138 resolved #16128 by making
PRESENTING_LAUNCH_ARGSthe unconditional headed-E2E default. Atdevheadbe17257b3f, that profile is defined by filtering--disable-frame-rate-limitout ofBASE_LAUNCH_ARGS; only exactNEO_E2E_ENGINE_PROFILE=1restores the flag.Post-merge physical evidence on the active macOS Workstation seat reverses that ticket's premise: ordinary/default launches opened multiple real Chrome windows whose semantic app state stayed live while the visible windows were completely empty. The controlled rerun with
--disable-frame-rate-limitpresent rendered application content. The operator identified animated OffscreenCanvas work as a likely contributor; that mechanism remains a hypothesis and is not required to repair the launch contract.This is new evidence after the predecessor resolved, so it needs a successor rather than reopening #16128.
Live latest-open sweep: checked the 30 newest open issues plus the 50 most recent A2A messages at 2026-07-29T22:32:47Z; no equivalent ticket or in-flight claim exists.
The Problem
The launcher now encodes the wrong baseline for UI tests:
An empty-window profile is not a valid UI-test profile. Worker, DOM, and Neural Link assertions can remain green while the visual subject does not exist, producing a semantically plausible false-green receipt.
This must not be a flag peers remember, a sentinel they select, or a host-specific command copied between sessions. The standard E2E configuration must include the required launch baseline automatically. Specialized profiles may add benchmark or GPU-intent flags; no UI-test profile may remove the flag required to render content.
The Architectural Reality
test/playwright/e2e/utils/gpuIntent.mjsis the single launch-argument authority. Its current default removes the required flag.test/playwright/playwright.config.e2e.mjspassesactiveLaunchArgs()to bothgl-probeand the Chromium project, so the selector owns the physical browser process rather than documentation alone.NEO_E2E_ENGINE_PROFILE=1selects additional GPU-intent/benchmark flags. That distinction may remain useful, but it must not decide whether application pixels exist.NEO_FILM_TAKE=1is a pacing/recording signal in Workstation specs. It must not carry browser-correctness responsibility.The Fix
--disable-frame-rate-limitan unconditional member of the shared UI-test browser baseline.activeLaunchArgs()result inherit that baseline.--disable-frame-rate-limit.PRESENTING_LAUNCH_ARGSUI profile. If a future non-UI experiment needs a flag-less browser, it belongs behind a separate explicitly non-visual harness contract, never the E2E UI default.Contract Ledger
test/playwright/e2e/utils/gpuIntent.mjs--disable-frame-rate-limitactiveLaunchArgs()defaultgpuIntent.mjsNEO_E2E_ENGINE_PROFILEgpuIntent.mjs:isEngineProfile()gpuIntent.mjsPRESENTING_LAUNCH_ARGSgpuIntent.mjsAcceptance Criteria
activeLaunchArgs()contains--disable-frame-rate-limit.--disable-frame-rate-limit.--disable-frame-rate-limit; profile selection can only add or otherwise tune flags.NEO_E2E_ENGINE_PROFILEmerely to obtain rendered content.Out of Scope
Avoided Traps
Related
Successor to #16128 and PR #16138.
Related: #15912, #15955.
Decision Record impact: none.
Origin Session ID: 019fac4d-7844-7422-9486-7f73ccf308f5
Retrieval Hint: "post-16138 default drops disable-frame-rate-limit empty headed Workstation windows"