{"assertions":{"A1_bug_present_old_code_verbatim":{"observed":"shipped handler body copied verbatim from mainline@a0f9c55 into a driver test; the PR's own test was not runnable against mainline because advanceTripleTap does not exist there","status":"passed"},"A2_mainline_real_hardware_triple_tap":{"expected":"documented behavior: toggle fires after 3 x 3-finger taps","observed":"0 toggles: each tap arrives as 1-, then 2-, then 3-finger touchstarts; the leading events reset tapCount to 0 every time (defect 1)","status":"failed (bug reproduced)"},"A3_mainline_double_tap_threshold":{"expected":"documented triple-tap: no toggle before 3 taps","observed":"1 toggle after only 2 x 3-finger touchstarts (fires at tapCount >= 2, defect 2)","status":"failed (bug reproduced)"},"A4_mainline_control_isolated_events_accumulate":{"observed":"1 toggle after 2 isolated 3-finger touchstarts, proving the interleaved 1-/2-finger events are what zero the counter","status":"passed"},"A5_pr_variant_own_tests":{"observed":"5/5 pass (third-tap trigger; leading events do not reset; two taps do not trigger; out-of-window restart; reset after trigger)","status":"passed"},"A6_pr_variant_wiring_real_hardware":{"observed":"exactly 1 toggle after the real-hardware 3-tap sequence driven through the patched handler wiring","status":"passed"},"A7_pr_variant_wiring_double_tap":{"observed":"0 toggles after 2 taps; threshold is now a true triple","status":"passed"},"A8_pr_variant_wiring_leading_events":{"observed":"leading 1-/2-finger events before the gesture do not poison the window","status":"passed"},"A9_pr_variant_no_regressions":{"observed":"full hooks/__tests__ dir: 26 files, 180 tests, all pass","status":"passed"}},"client":{"browser":{"binary":"/opt/meta-chromium/chrome","mode":"not used; pure gesture-recognizer logic (no DOM)","version":"Chrome/152.0.7977.64"},"mainline_commit":"a0f9c55d7aef13e4875ac8137c016948e5f66e12","mainline_commit_date":"2026-09-10 (fetched 2026-09-10T03:13Z)","node_modules":"symlinked from ~/workspace/dev/phase/client/node_modules (546M, not re-installed)","pr_branch_deleted_from_remote":false,"pr_head":"8e1803eea18486eb18900013d3de5da943129922","pr_head_date":"2026-07-06T01:35:32-04:00","pr_head_fetch":"infeasible from the VM (git fetch origin pull/5189/head stalled >3 min, killed); published patch from https://github.com/phase-rs/phase/pull/5189.patch applied instead","pr_merged":false,"pr_patch_application":"new files (tripleTap.ts, __tests__/tripleTap.test.ts) applied cleanly with git apply; the useKeyboardShortcuts.ts hunk was context-drifted (mainline renamed exportGameStateDebugZip -> exportAuthoritativeGameStateZip since the PR head), so the + lines were applied manually and verified byte-identical to the published patch (pr_patch_applied_*.diff preserve the exact changes)","pr_review_state":"deferred by maintainer intake policy (pr-review-deferred, 2026-07-19/2026-07-29/2026-07-30)","repo_pins":{"package_manager":"pnpm@9.15.9","vitest":"4.1.0 (invoked directly, --coverage.enabled=false)"},"trees":{"mainline":"~/workspace/dev/phase-backfill/client-test/phase-5189-main (git worktree of origin/main @ a0f9c55)","pr_variant":"~/workspace/dev/phase-backfill/client-test/phase-5189-pr (worktree copy + PR patch applied)"}},"defect_sites":[{"file":"client/src/hooks/useKeyboardShortcuts.ts","line":"old inline handler: 'if (e.touches.length !== REQUIRED_FINGERS) { tapCount = 0; return; }' then 'if (tapCount >= 2) { ... toggleDebugPanel(); }'"}],"method":"repo-pinned vitest 4.1.0 on two trees: (mainline) driver test replicating the shipped inline handler verbatim; (PR variant) the PR's own new tripleTap.test.ts plus a wiring driver mirroring the patched handler exactly","release_check":{"advanced":false,"engine_exercised":false,"latest_stable":"v0.78.0","note":"No release advance since the v0.78.0 pin. phase-server was not started for this client-only run; pinned v0.78.0 artifacts verified present under server/releases/."},"result":"reproduced on current mainline (a0f9c55): the verbatim old gesture logic never toggles on a real-hardware triple-tap sequence (0 toggles, leading 1-/2-finger events reset the counter each time), and it fires on a mere double-tap (wrong threshold). With the PR's patch applied, the PR's own 5 tests pass 5/5 and the hook-wiring driver confirms the real-hardware triple-tap toggles exactly once while a double-tap no longer fires; full hooks test dir 26 files / 180 tests green, no regressions.","underlying_pr":{"labels":["bug","defer-fe"],"number":5189,"state":"open","title":"fix(client): make the debug triple-tap gesture actually recognize three taps"}}