Found by the plan-023 adversarial review of ci.yml (2026-08-09). Pre-existing and deliberately left out of that plan's scope, because changing the required-check set is a repo-policy decision.
The gap
ci-success is the single required check on main (and release.yml's ci-gate refuses to release unless it is green on the tagged commit). Its needs list is:
needs: [changes, rust-lint, harness-unit, themes-parity, rust-build,
swift-mac, gtk-build, iced-build-e2e, iced-release, e2e-gtk, e2e-mac]
Two e2e lanes that exist as jobs are not in it:
e2e-gtk-wayland
e2e-gtk-wayland-drag
So two of the five e2e lanes can fail without the required check noticing. The drag lane is the only automated coverage of the cage+uinput Wayland pointer-drag guard — the tier that cannot run in Docker and needs a real kernel with /dev/uinput.
Why it is worth deciding rather than just fixing
Adding them is a two-place edit (needs and the separately-maintained results string — they are not derived from each other, which is its own latent trap). But it also makes them blocking, and the Wayland lanes are the most environment-sensitive in the suite. Making a flaky lane required is how a release gets blocked at a bad moment. That is an owner call, not a mechanical one.
Options:
- Add both to
ci-success. Strongest guarantee; accepts their flake risk on the release path.
- Add
e2e-gtk-wayland only, leave the uinput drag lane advisory — it is the most environment-dependent of the two.
- Leave as-is and document it, so the next person reading the required-check list knows the omission is deliberate rather than an oversight.
Related, already fixed
The same review found a live greenwash one level up: changes was in needs but omitted from the results string, so a failure in the job that gates every other job skipped them all and ci-success went green with nothing built. Fixed in the plan-023 release-smoke PR — same class as the #306 abandoned incident the step's own comment describes.
That fix is the reason this one is worth looking at: the needs/results duplication means membership has to be maintained twice, and it has already drifted twice.
Refs
.github/workflows/ci.yml — ci-success (needs + the results string), e2e-gtk-wayland, e2e-gtk-wayland-drag
.github/workflows/release.yml — ci-gate, which trusts this check
- Plan 023 §D5 item 5
Found by the plan-023 adversarial review of
ci.yml(2026-08-09). Pre-existing and deliberately left out of that plan's scope, because changing the required-check set is a repo-policy decision.The gap
ci-successis the single required check onmain(andrelease.yml'sci-gaterefuses to release unless it is green on the tagged commit). Itsneedslist is:Two e2e lanes that exist as jobs are not in it:
e2e-gtk-waylande2e-gtk-wayland-dragSo two of the five e2e lanes can fail without the required check noticing. The drag lane is the only automated coverage of the cage+uinput Wayland pointer-drag guard — the tier that cannot run in Docker and needs a real kernel with
/dev/uinput.Why it is worth deciding rather than just fixing
Adding them is a two-place edit (
needsand the separately-maintainedresultsstring — they are not derived from each other, which is its own latent trap). But it also makes them blocking, and the Wayland lanes are the most environment-sensitive in the suite. Making a flaky lane required is how a release gets blocked at a bad moment. That is an owner call, not a mechanical one.Options:
ci-success. Strongest guarantee; accepts their flake risk on the release path.e2e-gtk-waylandonly, leave the uinput drag lane advisory — it is the most environment-dependent of the two.Related, already fixed
The same review found a live greenwash one level up:
changeswas inneedsbut omitted from theresultsstring, so a failure in the job that gates every other job skipped them all andci-successwent green with nothing built. Fixed in the plan-023 release-smoke PR — same class as the #306abandonedincident the step's own comment describes.That fix is the reason this one is worth looking at: the
needs/resultsduplication means membership has to be maintained twice, and it has already drifted twice.Refs
.github/workflows/ci.yml—ci-success(needs+ theresultsstring),e2e-gtk-wayland,e2e-gtk-wayland-drag.github/workflows/release.yml—ci-gate, which trusts this check