# Native Electron startup matrix

Before: [80e62619f5](https://github.com/pingdotgg/t3code/commit/80e62619f5c01d84579bcf70ea6d566712007412). After: [1b38b8ce40](https://github.com/pingdotgg/t3code/commit/1b38b8ce4013459df0066f29528632bf26a3057f).

C = CDPScreenshotNewSurface; W = WaylandWpColorManagerV1; ∅ = absent switch; empty code = present empty switch; ␠ = space. E/D = native enable-features/disable-features value. Appends are cumulative E/D counts after all calls. Starting cells retain original input; results come from Electron getSwitchValue/hasSwitch.

Linux x64 Ubuntu 24.04.4; Electron 44.10.1; --no-sandbox --disable-gpu; A ozone=x11; L ozone=wayland. Real DesktopPreReadyPlatform.make, bundled separately from each checkout; app.isReady=false on all 54 calls, 44 real Electron processes, all exit 0. No mock app or flag parser.

L fixtures only: PATH starts with supplied hyprctl stub; XDG_CURRENT_DESKTOP=Hyprland and XDG_SESSION_DESKTOP=Hyprland; command observed: hyprctl version -j; clean tag v0.48.0, commit 5ee35f914f921e5696030698e74fb5566a804768. This verifies switch merging, not a Wayland compositor.

| Row / calls | Starting switches | Before result | After result | Expected after / assertion |
|---|---|---|---|---|
| A0 clean / 2 | ∅ | E=∅; D=∅; appends 0/0 | E=`C`; D=∅; appends 1/0 | E=`C`; D=∅; PASS |
| A1 empty-E / 1 | `--enable-features=` | E=``; D=∅; appends 0/0 | E=`C`; D=∅; appends 1/0 | E=`C`; D=∅; PASS |
| A1 bare-E / 1 | `--enable-features` | E=``; D=∅; appends 0/0 | E=`C`; D=∅; appends 1/0 | E=`C`; D=∅; PASS |
| A1 whitespace-E / 1 | `--enable-features=␠␠␠` | E=``; D=∅; appends 0/0 | E=`C`; D=∅; appends 1/0 | E=`C`; D=∅; PASS |
| A1 empty-D / 1 | `--disable-features=` | E=∅; D=``; appends 0/0 | E=`C`; D=``; appends 1/0 | E=`C`; D=``; PASS |
| A1 bare-D / 1 | `--disable-features` | E=∅; D=``; appends 0/0 | E=`C`; D=``; appends 1/0 | E=`C`; D=``; PASS |
| A1 whitespace-D / 1 | `--disable-features=␠␠␠` | E=∅; D=``; appends 0/0 | E=`C`; D=``; appends 1/0 | E=`C`; D=``; PASS |
| A2 ordinary-repeat / 2 | `--enable-features=WebRTCPipeWireCapturer,UseOzonePlatform` | E=`WebRTCPipeWireCapturer,UseOzonePlatform`; D=∅; appends 0/0 | E=`WebRTCPipeWireCapturer,UseOzonePlatform,C`; D=∅; appends 1/0 | E=`WebRTCPipeWireCapturer,UseOzonePlatform,C`; D=∅; PASS |
| A3 syntax-boundary / 1 | `--enable-features=␠ExistingFeature<Study.Group:param/value,CExtra,cdpscreenshotnewsurface␠␠` | E=`␠ExistingFeature<Study.Group:param/value,CExtra,cdpscreenshotnewsurface`; D=∅; appends 0/0 | E=`ExistingFeature<Study.Group:param/value,CExtra,cdpscreenshotnewsurface,C`; D=∅; appends 1/0 | E=`ExistingFeature<Study.Group:param/value,CExtra,cdpscreenshotnewsurface,C`; D=∅; PASS |
| A4 bare-enabled / 2 | `--enable-features=C` | E=`C`; D=∅; appends 0/0 | E=`C`; D=∅; appends 0/0 | E=`C`; D=∅; PASS |
| A4 list-enabled / 2 | `--enable-features=Other,C` | E=`Other,C`; D=∅; appends 0/0 | E=`Other,C`; D=∅; appends 0/0 | E=`Other,C`; D=∅; PASS |
| A4 decorated-enabled / 2 | `--enable-features=Other,␠*C<Study.Group:param/value` | E=`Other,␠*C<Study.Group:param/value`; D=∅; appends 0/0 | E=`Other,␠*C<Study.Group:param/value`; D=∅; appends 0/0 | E=`Other,␠*C<Study.Group:param/value`; D=∅; PASS |
| A5 bare-optout / 1 | `--disable-features=C` | E=∅; D=`C`; appends 0/0 | E=∅; D=`C`; appends 0/0 | E=∅; D=`C`; PASS |
| A6 bare-optout / 1 | `--enable-features=Other<Study.Group:param/value`<br>`--disable-features=Vulkan,C` | E=`Other<Study.Group:param/value`; D=`Vulkan,C`; appends 0/0 | E=`Other<Study.Group:param/value`; D=`Vulkan,C`; appends 0/0 | E=`Other<Study.Group:param/value`; D=`Vulkan,C`; PASS |
| A6 decorated-optout / 1 | `--enable-features=Other<Study.Group:param/value`<br>`--disable-features=Vulkan,␠*C<Study.Group:param/value` | E=`Other<Study.Group:param/value`; D=`Vulkan,␠*C<Study.Group:param/value`; appends 0/0 | E=`Other<Study.Group:param/value`; D=`Vulkan,␠*C<Study.Group:param/value`; appends 0/0 | E=`Other<Study.Group:param/value`; D=`Vulkan,␠*C<Study.Group:param/value`; PASS |
| A7 both-lists / 1 | `--enable-features=Other,C`<br>`--disable-features=Vulkan,C` | E=`Other,C`; D=`Vulkan,C`; appends 0/0 | E=`Other,C`; D=`Vulkan,C`; appends 0/0 | E=`Other,C`; D=`Vulkan,C`; PASS |
| A8 no-enable / 1 | `--disable-features=Vulkan` | E=∅; D=`Vulkan`; appends 0/0 | E=`C`; D=`Vulkan`; appends 1/0 | E=`C`; D=`Vulkan`; PASS |
| A8 existing-enable / 1 | `--enable-features=Other`<br>`--disable-features=Vulkan` | E=`Other`; D=`Vulkan`; appends 0/0 | E=`Other,C`; D=`Vulkan`; appends 1/0 | E=`Other,C`; D=`Vulkan`; PASS |
| L1 hyprland / 1 | ∅ | E=∅; D=`W`; appends 0/1 | E=`C`; D=`W`; appends 1/1 | E=`C`; D=`W`; PASS |
| L2 hyprland / 1 | `--enable-features=Other`<br>`--disable-features=Vulkan` | E=`Other`; D=`Vulkan,W`; appends 0/1 | E=`Other,C`; D=`Vulkan,W`; appends 1/1 | E=`Other,C`; D=`Vulkan,W`; PASS |
| L3 hyprland / 1 | `--enable-features=Other`<br>`--disable-features=Vulkan,C` | E=`Other`; D=`Vulkan,C,W`; appends 0/1 | E=`Other`; D=`Vulkan,C,W`; appends 0/1 | E=`Other`; D=`Vulkan,C,W`; PASS |
| L4 hyprland / 1 | `--enable-features=Other,C`<br>`--disable-features=Vulkan` | E=`Other,C`; D=`Vulkan,W`; appends 0/1 | E=`Other,C`; D=`Vulkan,W`; appends 0/1 | E=`Other,C`; D=`Vulkan,W`; PASS |
