# Overtime length and post-whistle momentum — 2026-10-30-r8

Requested by jdc: a tied5-minute game gets5-minute overtime;7 gets7,10 gets10,
and20 gets20. The crowd/power meter that boosts ratings must not charge from
post-whistle action. This concerns team momentum, not the separate shot-charge bar.

## Code and native rules

The existing timer export at2AC000 branches to2AC024. That handler now calls
native ClockLength at784E and continues at782E. The native table reads D050 and
returns300/420/600/1200 seconds. The removed override forced600 in overtime.
The continuation initializes C468 (clock), C46C (period duration) and its native
randomized window. Sudden death and the existing on-rink shootout are retained.
Entry offsets +0..+32 remain stable. `--legacy-overtime` restores the r7 override.

The existing crowd frame hook15ED4→2E0000 is retained. `crowd.s:events` still
awards200 per live shot on goal and150 per live body check to a shared signed
M, capped at±1000. Its changed-counter branch now checks native play state at
2E072E: C2EA mask51 (stopped/highlight/game over), C2EC mask81 (pause/foreign
view), C2F2 bit2 (faceoff) and F738 A502..A507 (replay/Stars). Blocked events
call `snap` to update all four baseline counters without changing M. Counters
therefore cannot accumulate for a deferred award when play resumes. Existing
clock-based decay and rating application are retained. Unchanged counters take
the same taken-branch path cost as before; the guard runs only after an increase. The live branch combines home/away
deltas before multiplication using equivalent word arithmetic and absolute-short
RAM operands;11 NOPs balance its saved cycles against the guard. Forty native
replays were raw-exact to r7 during the timing correction preflight.
No new RAM, collision hook, stat suppression or animation/speed change is added.
`--legacy-whistle-momentum` restores r7 behavior.

Only the relocated shootout region2AC000..2ADFFF and crowd code2E0000..2E07FF
may change, apart from version/checksum. Other code/assets remain byte-exact.
The native keeper, pass requests, Crit lock and Icing On defaults are retained.

## Validation

The full76-suite matrix is recorded in QA_STATUS.json. The pre-existing
receiver-hold geometry failure remains explicitly tracked; strict gate status
must not be presented as passing while that failure remains. No new win-rate
qualification is claimed.

The new native 68000 momentum regression records60 observations across
Normal/Hard/Easy. It checks both teams, previously earned M, stopped checks,
stopped/pause/menu/replay/Stars shots, faceoff/highlight/game over, repeated
blocked counters, normal resume, live shots/checks and new-game reset. All12
objects'16 rating bytes and all four consumed counters are checked. Running it
on exact r7 reproduces the bug at the first stopped home check:200→350 instead
of staying200. These are deliberate native routine fixtures, not claimed
input-only full matches.

Native regulation→OT→sudden-death goal tests cover all four selected durations.
League/playoff shootout result, cooperative controls, stats and save cases are
also rerun with the new expected times. Test clocks are shortened only after the
actual selected overtime duration has been observed; goals cross the native
line. The mandatory maintenance audit keeps its original strict action/puck/
match-clock comparisons and bounded isolated video-observation rules. It also
freshly replays exact r7 and r6 controls to preserve the r7 default-only proof.

Independent rebuild, exact r7 rollback with both legacy flags and versionr7,
and IPS reconstruction against original v5.1W all pass. Original base MD5:
8f863ecb108c1d213953bada9b98f4f2.
ROM SHA256:083f45ffbfff3986d55fbe2ea13384916c4c5b4f1d0b6c5e21e39aa80af80e02; CRC32:D813665F.

An unreleased first build passed the new rule regressions but failed the strict
maintenance sampling comparison at three isolated puck/animation observations.
Its extra live-event guard cycles were removed by the equivalent combined-delta
calculation and cycle padding. The corrected image reproduced all40 raw r7
trajectories in preflight; the complete release matrix is rerun for this image.
The initial centered-pass comparison also used a stale ablation; rebuilding the
control with the same OT/momentum rules passed. Final isolated AI controls are
all rebuilt from current sources. Initial failures remain in private evidence.

Exact matrix result:75 of76 pass; only inherited finisher_hold fails.
Maintenance current raw traces exact to fresh r7:40/40.
Current raw traces exact to r5:35/40;
15 bounded isolated observations are separately
recorded. All40 strict native event/action/puck/match-clock timelines pass.
Native OT/shootout integration cases:40.
