NEC-111: e2e flake: collaborator pointer test sees a pointer after a touch move #173

Merged
nectenda-agent merged 3 commits from worktree-nec-111-e2e-flake-collaborator-pointer-test-sees into main 2026-09-25 17:27:00 +01:00
Collaborator

Task: NEC-111 — https://projectron.nerchure.com/tasks/111

Fixes the intermittent 'a touch drew a pointer' failure in the collaborator-pointer e2e test (CI tasks 1320, 1344). Both failures drew the same fresh pointer from B at the same pixel: something pointing from a fixed place, not the touch. One trusted OS mouse move into B during the check reproduces the failure exactly (collab-b, edge null, opacity 0.72, animationDelay 2.9998s against CI's 2.9999s). The pointer tests now stop trusted pointer events at the window, clear B's pointer before the touch, and label each test step. Every run prints the trusted events it saw, with screen position, focus, whether each was blocked, and the step, so CI can confirm or rule out the Xvfb stationary-cursor explanation. A new test proves both halves: an unshielded OS move is drawn in A, a shielded one is recorded and not drawn. Mutation-checked: a touch-sending plugin fails the touch check, and a shield that doesn't block fails the new test. Test-only change. Filed along the way: NEC-112 (pointer returning to the same anchor drawn already faded) and NEC-113 (directory-manifest ETag hashes volatile fields, flaky 304 test).

Spec: docs/changes/NEC-111-pointer-touch-flake/spec.md

Changelog

NONE

Task: NEC-111 — https://projectron.nerchure.com/tasks/111 Fixes the intermittent 'a touch drew a pointer' failure in the collaborator-pointer e2e test (CI tasks 1320, 1344). Both failures drew the same fresh pointer from B at the same pixel: something pointing from a fixed place, not the touch. One trusted OS mouse move into B during the check reproduces the failure exactly (collab-b, edge null, opacity 0.72, animationDelay 2.9998s against CI's 2.9999s). The pointer tests now stop trusted pointer events at the window, clear B's pointer before the touch, and label each test step. Every run prints the trusted events it saw, with screen position, focus, whether each was blocked, and the step, so CI can confirm or rule out the Xvfb stationary-cursor explanation. A new test proves both halves: an unshielded OS move is drawn in A, a shielded one is recorded and not drawn. Mutation-checked: a touch-sending plugin fails the touch check, and a shield that doesn't block fails the new test. Test-only change. Filed along the way: NEC-112 (pointer returning to the same anchor drawn already faded) and NEC-113 (directory-manifest ETag hashes volatile fields, flaky 304 test). Spec: `docs/changes/NEC-111-pointer-touch-flake/spec.md` ## Changelog NONE
The touch check in the collaborator-pointer tests failed on CI twice with
a fresh pointer from B at the same pixel both times. A trusted mouse move
into B reproduces that failure exactly. So the pointer tests now stop
trusted pointer events at the window. They record each one with where it
landed, whether it was blocked, and the step running, and print the log on
every run. They also clear B's pointer before the touch. A new test shows
both halves: an unshielded OS move is drawn in A, a shielded one is not.

Task: NEC-111

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01FGckKvM58WJBmZm5GHAs6h
Task: NEC-111

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01FGckKvM58WJBmZm5GHAs6h
Label every pointer test's step, and correct two claims the review caught
All checks were successful
Release note / release-note (pull_request) Successful in 13s
CI / build (pull_request) Successful in 5m7s
CI / e2e (pull_request) Successful in 5m24s
CI / promote (pull_request) Has been skipped
40b63fcad5
The tests after the OS cursor proof inherited its step label, so events
they cause would have read as the proof test's. The NEC-112 comment named
the wrong half, and the spec described a CDP fallback that was not built.

Task: NEC-111

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01FGckKvM58WJBmZm5GHAs6h
cruelacid force-pushed worktree-nec-111-e2e-flake-collaborator-pointer-test-sees from 40b63fcad5
All checks were successful
Release note / release-note (pull_request) Successful in 13s
CI / build (pull_request) Successful in 5m7s
CI / e2e (pull_request) Successful in 5m24s
CI / promote (pull_request) Has been skipped
to b368b34172
All checks were successful
Release note / release-note (pull_request) Successful in 12s
CI / build (pull_request) Successful in 4m29s
CI / e2e (pull_request) Successful in 5m15s
CI / promote (pull_request) Has been skipped
CI / build (push) Successful in 5m19s
CI / e2e (push) Successful in 5m21s
CI / promote (push) Successful in 33s
2026-09-25 17:20:59 +01:00
Compare
Sign in to join this conversation.
No reviewers
No milestone
No project
No assignees
2 participants
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set

Reference
Nectenda/nectenda!173
No description provided.