From d0ee598d4edb180fcac11be6a6609bff1ae94396 Mon Sep 17 00:00:00 2001 From: "Impy[bot]" <314283863+ii-impy@users.noreply.github.com> Date: Sun, 8 Nov 2026 14:31:55 -0500 Subject: [PATCH] Hunter bird: sample the person's outline clear of the idle reticle test_person_has_white_fill_and_ink_outline checked the outline at v 0.62, exactly where the idle reticle's upper-right tick crosses the standing person's left edge. The tick wobbles through a sin-based hash, so where it lands differs by GPU: on llvmpipe (CI) it misses the sampled pixels, on Intel hardware Mesa it covers them in half-alpha rust and the ink check fails. Neither the shader nor the eyes change (#160) is at fault; the failure reproduces with the original #159 shaders. Sample at v 0.74 instead, above the reticle's reach, and assert that precondition from Buffer B so a future move of the reticle fails loudly rather than flakily. Co-Authored-By: Claude Opus 5.5 --- ShowControl/FundingCAPTCHA/test_hunter_bird.py | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) diff --git a/ShowControl/FundingCAPTCHA/test_hunter_bird.py b/ShowControl/FundingCAPTCHA/test_hunter_bird.py index f3cd2dd..1cc4c05 100644 --- a/ShowControl/FundingCAPTCHA/test_hunter_bird.py +++ b/ShowControl/FundingCAPTCHA/test_hunter_bird.py @@ -363,9 +363,15 @@ def test_person_has_white_fill_and_ink_outline(ctx): rig = Rig(ctx, BIG) rig.run(standing(10)) # rect(36, 8, 46, 36): UV x 0.5625–0.719, y 0.1–0.8 img = rig.image() - assert near(img[to_px(0.64, 0.62)], "white") # upper body: fill - row = to_px(0.64, 0.62)[0] - left = to_px(0.5625, 0.62)[1] + # Sample above the idle reticle: it rests near the centre, and its upper-right tick + # crosses this edge around v 0.62, where it covers the outline on some GPUs, not others. + v = 0.74 + rx, ry, rr, _ = rig.reticle() + aspect = BIG[0] / BIG[1] + assert np.hypot((0.5625 - rx) * aspect, v - ry) > rr + 16 / 360 # beyond the reticle's reach + assert near(img[to_px(0.64, v)], "white") # upper body: fill + row = to_px(0.64, v)[0] + left = to_px(0.5625, v)[1] assert any(near(img[row, c], "ink") for c in range(left - 3, left + 1)) # outline just outside