# Human buffered one-timers meet the stick — 2026-10-30-r10

jdc reported a pass receiver repeatedly pressing shoot successfully releasing
the puck while it still looked far from the stick. Native co-op controller
inputs reproduced the problem: the buffered route launched16–37 pixels from
the actual native GetHot hotspot, with the forehand animation at phase0.

## Cause and change

The old frame hook waited only until B7AA named the pending receiver. Native
ownership precedes the puck settling onto the stick: pucknorm moves the held
puck one quarter of the remaining distance toward GetHot each update. The hook
immediately called doshot atC2F2 and began a new7FC windup. This could release
from the incoming puck position while the rendered stick was elsewhere.

The human frame now retains F736's pending actor until the actual puck is within
four pixels (squared distance16) of the current GetHot hotspot. It then uses
native contact/follow-through phase24 and refreshes its animation timer/glitch
throttle. The puck is not repositioned or teleported. Native skating and puck
follow continue while waiting. Possession/target-loss checks remain.

A fresh shoot press while owning the puck previously could enter an ordinary
windup before the buffered contact was ready. The original6-byte JSR FEE60 at
B810 is now a guarded tail-jump to2E100C. For the same pending/owning actor it
continues native skating at10750. Otherwise it restores registers/SR, replays
FEE60 exactly once and continues B816. This hook runs only when native input
already recognized a fresh owned C press; no-input gameplay adds no guard work.

The other co-op pad's C also previously cleared the shared F736 request in the
non-receiver path. Cancellation is now restricted to that request's own actor.
This preserves a legitimate receiver's request during the short contact wait.
No new RAM is allocated. Existing exports0/4/8 remain; export12 is the owned-C
handler. Only onetimer code2E1000..2E11FF and B810..B815 change outside release
strings/checksum. The ordinary shot function, native pickup/collision tables,
AI buffer and tactical routines are byte-identical. Mini division schedules,
selected OT duration, earned momentum and season rules remain from r9.

## Validation

The new native reset-vector regression executes432 actor/flip/contact boundary
cases using real GetHot and the actual buffered frame. It checks twelve actor
indices, four sprite flip combinations, accepted radius4 boundaries, rejected
corners/far points, retained pending requests and phase24 only on release.
Four owned-C guard cases verify waiting versus native continuation and D0
preservation. Five input cases verify unrelated-pad retention, cancellation,
real target buffering and the caught-owner path.

Three cold-boot native co-op profiles use ordinary menu/button inputs: old r9
mashing reproduces the distant release, current mashing and receiver-held C
exercise the correction. Only the private shot logger counter is initialized;
no game positions, owner, clock, RNG or outcomes are injected. A guarded native
doshot-entry probe records GetHot, puck/body coordinates, ownership and phase.
It adds measurement cycles and is not a strength benchmark. Actual input logs
and all shot attempts are retained in the private receipts. The test refuses
an empty buffered-shot sample or a pending owned shot stuck for two seconds.

Initial diagnostics used an artificial AI/practice scene and did not produce
valid human catches; they are not presented as native-play evidence. A first
contact-only candidate also exposed ordinary-windup preemption and unrelated-
pad cancellation. The final candidate includes both corrections and starts
follow-through at native phase24. Failed/partial diagnostics remain private.

Full78-suite results are in QA_STATUS.json and HUMAN_CONTACT_RESULT.json. The
known inherited finisher_hold positioning failure remains a failed required
check; the strict gate is not claimed as passing. No new win-rate test runs.
Independent rebuild, exact r9 rollback via `--legacy-onetimer-contact --version
2026-10-30-r9`, and original-base IPS reconstruction are verified. Current
no-hold/no-centered/no-plan/no-smart controls are rebuilt from these sources.
ROM SHA256:b28fa2c8f42bd792f3118bc3d71df2fed5f959957d4adc60f372f2d4863c2038; CRC32:F157EFEB.

Final exact-source matrix:77/78 pass, only identical inherited finisher_hold
geometry failure. All40 current raw active-game traces match40 fresh r9 controls
exactly. Older r6/r5 audit separately retains35 raw-exact traces and15 bounded
video observations across5 scenes. Rebuild/exact r9 rollback/IPS pass.

Cold native contact profiles:
- baseline-mash: 7 real buffered shots, maximum stick distance36.796739; 49 native pass selections.
- current-mash: 5 real buffered shots, maximum stick distance4.0; 47 native pass selections.
- current-held: 5 real buffered shots, maximum stick distance4.0; 47 native pass selections.
