Skip to content

Host checks: follow the sources merged since wave 6 - #564

Merged
125hz merged 2 commits into
willfaust:mainfrom
NevesHenry:host-checks-follow-current-sources
Nov 5, 2026
Merged

125hz merged 2 commits into
willfaust:mainfrom
NevesHenry:host-checks-follow-current-sources

Conversation

@NevesHenry

Copy link
Copy Markdown
Contributor

In short

Eleven host checks fail on main (5fda6a0). In ten of them, production code changed after the check was written (waves 6 to 8 and the merges after them). The eleventh, check-vcrt-arm64-key, is broken by a compiler optimisation. This updates only checks under tests/host; no app, runtime or build code changes.

Details

check what changed in production the check now
background-run 1dbd877 added the suspended mark as a second line of madeira_audio_background's start condition; 0a2e6ed's render callback also bumps cb_epoch in its paused branch anchors the two-line condition (and asserts the suspended gate); takes the last cb_epoch
d3d9-older-nvidia 9145c13 rewrote the Compatibility row as compatLabel("Older NVIDIA card (Direct3D 9)", …); 04dda6d, merged after it, expected compatLabel(L(… accepts either form
epic-games, itch-store the Other games filter gained $0.listedInLibrary (0a2e6ed) and $0.gogProductID (fc5e7cb, GOG store) between the conditions the checks looked for look for the Epic and itch.io conditions on their own
hardware-input pSetCursorPos reports through winios_direct_cursor_warp when the app has it (0a2e6ed) the regex follows the warp/else branches
library-groups the Group by rules call L() (04dda6d) the harness defines L(), as check-frontend.py and check-runtime-settings.py do
pointer-capture the capture methods read Self.hiddenCursorAbsolute (#510) the fixture declares it, off
steam-library 7a158d4 declares the audio background mode and takes the grace period through BackgroundRun.shared.beginTask (check-background-run.py requires both) accepts audio as the only background mode and looks for BackgroundRun's task
vis-trace four lists were added since the count of 73 requires a config for every GameRecommendation
game-recommendations c998a06's Garry's Mod check also expected hl2.exe to name the game; the list matches App ID 4000, the GarrysMod folder and gmod.exe, as that commit says, and hl2.exe is also Half-Life 2's program drops the hl2.exe clause (App ID and folder cover both branches)
vcrt-arm64-key (no production change) clang 21 at -O1 turns the harness's init_unicode_string loop into libc wcslen, which counts 4-byte characters despite -fshort-wchar, so the fake registry created 14 keys instead of 2 builds the harness with -fno-builtin, as check-hidpad.py does (separate commit, so it can be dropped)

Validation

Linux (Ubuntu 22.04 on WSL2), Swift 6.4.1 toolchain (clang 21), gcc 11, Python 3.10, submodules at the pinned commits.

  • Each of the 11 checks fails on 5fda6a0 and passes with this branch. The first failing commit of each was found by bisecting main's first-parent history.
  • Each changed check still fails when the production rule it guards is broken on purpose (12 mutations, e.g. the suspended gate removed, mute moved after cb_epoch, itch.io/Epic dropped from the Other games filter, the warp's else removed, a second background mode added, Garry's Mod's program removed).
  • check-epic-games and check-steam-library still stop on Linux in parts this PR does not touch (Apple's Compression module, Python 3.14 compression.zstd); their static checks pass now.
  • Full host-check run: 248 of 281 pass on main, 258 of 281 on this branch, and no check that passed before fails. The rest are Mac-only (xcrun, Darwin/CryptoKit/Compression, -fobjc-arc, mach, TSan with libdispatch, wine/build-macos), plus check-config-catalog and check-depot-overlap.
  • Merges cleanly with draft iPhone Duo support, DOOM Eternal on Vulkan, and JIT and library fixes #506, the only open PR that touches one of these files. No device test needed (tests only).

AI assistance: prepared with Claude (Claude Code); I reviewed the change and ran the checks. Signed off (DCO).

🤖 Generated with Claude Code

NevesHenry and others added 2 commits November 4, 2026 11:02
Ten host checks fail on main (5fda6a0) because production code changed
after they were written. The production code is right in each case, so
the checks are updated and production is left alone:

- check-background-run: 1dbd877 added a second line (the
  MADEIRA_AUDIO_RESUME suspended mark) to madeira_audio_background's
  start condition, and 0a2e6ed's render callback also bumps cb_epoch in
  its paused branch, before mixing. The check now anchors the two-line
  condition and takes the last cb_epoch.
- check-d3d9-older-nvidia: willfaust#530 expected the label as
  compatLabel(L("Older NVIDIA card (Direct3D 9)"), but willfaust#528, merged
  just before it, rewrote that row without L(). Either form passes now.
- check-epic-games, check-itch-store: the Other games filter gained
  $0.listedInLibrary (0a2e6ed) and $0.gogProductID (GOG store, willfaust#551),
  in the middle of the substrings the checks looked for. They now look
  for the Epic and itch.io conditions on their own.
- check-hardware-input: since 0a2e6ed pSetCursorPos reports through
  winios_direct_cursor_warp when the app has it. The regex follows.
- check-library-groups: the production Group by rules call L() (willfaust#530).
  The harness defines it as check-frontend.py and
  check-runtime-settings.py do.
- check-pointer-capture: the production capture methods read
  Self.hiddenCursorAbsolute (willfaust#510). The fixture declares it, off.
- check-steam-library: willfaust#498 declares the audio background mode and moved
  the grace period to BackgroundRun.shared.beginTask, as
  check-background-run.py requires. The check now accepts audio as the
  only background mode and looks for BackgroundRun's task.
- check-vis-trace: the count of 73 lists went stale with each new list.
  It now requires a config for every GameRecommendation (77 today).
- check-game-recommendations: the Garry's Mod check (c998a06) also
  expected hl2.exe to name the game. The list matches App ID 4000, the
  GarrysMod folder and gmod.exe, as its commit says. hl2.exe is also
  Half-Life 2's program. The App ID and folder cover both branches.

Each check failed before this change and passes after it. Each one also
still fails when the production rule it guards is broken on purpose.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Signed-off-by: NevesHenry <henriquereisneves@hotmail.com>
With clang 21 (the Swift 6.4.1 toolchain on Linux) the fake-registry run
of check-vcrt-arm64-key fails: it counts 14 created keys instead of 2.
At -O1 clang turns the harness's init_unicode_string loop into a call to
the C library's wcslen. That wcslen counts 4-byte characters, whatever
-fshort-wchar says. Every UNICODE_STRING then gets the wrong length, and
"\Registry\Machine" is looked up as "\Registry".

-fno-builtin keeps the loop as written, as check-hidpad.py already does
for the same flags. The run passes with clang 21 and gcc 11, and it
still fails when ios_vcrt_arm64_key_publish stops counting the views
that are already there.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Signed-off-by: NevesHenry <henriquereisneves@hotmail.com>
@125hz
125hz merged commit f2fbc1a into willfaust:main Nov 5, 2026
13 checks passed
125hz pushed a commit that referenced this pull request Nov 5, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants