Five probes fail on Linux and pass on Windows, with identical game code nf-29r4 ← Beads

closed priority 2 task unassigned session:probe-divergence

Twinned from https://github.com/cfsh/ninefold/issues/572 by tools/beads/import_github.py's reconcile pass.

Measured on the WSL office box while doing #566, on main + only the #566 commits (which touch test portability and Godot path lookup — nothing that could affect focus):

``` ──── 29 passed, 5 failed ──── FAIL focus-grammar FAIL focus-ring FAIL new-pattern FAIL playhead-song FAIL single-screen-pill ```

All five pass in main's recorded baseline (e010817, recorded on the Windows sandbox box).

This is not the baseline being stale. main has gained 8 commits since e010817 and they touch only CLAUDE.md, notes/*, DEVEL.md, art_dump/README.md, presubmit.py and run_godot_tests.shno game code at all. So the baseline and current main describe the same game behaviour, and the difference is the platform.

Not flake either, at least for focus-grammar: it reproduces, with the same assertion failing twice in one run.

``` $ NINEFOLD_PROBE_SKIP_BUILD=1 python3 probe.py tools/probes/focus-grammar.json [probe] expect_focus 'home' FAILED — focus is on SelectableChip '@Button@110' [probe] expect_focus 'home' FAILED — focus is on SelectableChip '@Button@110' [probe] done WITH ERRORS ```

So focus lands on a SelectableChip where Windows lands on home. That it is *focus* in every one of the five names is the interesting part — this smells like one root cause in focus/neighbour resolution, not five unrelated probe bugs.

Two ways this could go, and they want opposite fixes — which is exactly why it is filed rather than guessed at:

  1. A genuine focus bug that the Windows build happens to hide (control order, focus_neighbor resolution, or a first-frame timing difference before focus settles). Then the probes are right and the game needs the fix.
  2. Legitimately platform-sensitive behaviour — window activation and initial keyboard focus differ between the Windows and X11/Wayland backends, and Godot's own focus handling follows the platform. Then the probes are over-specified and should assert what is actually invariant.

Guessing wrong papers over a real bug in one direction and breaks a correct probe in the other.

Not blocking, and already fenced. #566 stamps the platform into the probe baseline and refuses to record across platforms, so a Linux merge reports these five and cannot overwrite the Windows baseline with them. The gate is safe to run here in the meantime.

Environment: WSL2, Ubuntu 26.04, Godot 4.7.1 mono at /opt/godot, rendering through WSLg on Mesa llvmpipe (software GL), no audio drivers (dummy driver).

Unclaimed.

Dependencies

None.

Comments

No comments.

Add a comment