Repository navigation
Practice CoD auto-stop: confirm a short VICTORY/DEFEAT splash by follow-up - #153
Merged
Merged
Conversation
…ow-up match-20261111-165658 read the end word for 0.74 s (2 reads) and never read the owner row, so the sustained rule (8 reads / 4 s) never fired and the recording ran ~65 s past the end until Enter. Two confirmed reads of the same word within 1.5 s after the 120 s arm now open a candidate. For up to 30 s the watcher reads the owner row itself on every frame. The candidate is confirmed by the owner row, the same word again >= 2 s later, or 8 s with no gameplay HUD event (hitmarker, kill popup, killfeed); it is cancelled by the other word or the 30 s window. The sustained path, gate, arm, 12 s tail (from confirmation), stop path and info-only cod_end_stop.json are unchanged; the record and stop note now name the path and follow-up. Tests: regression replay of the match timing, killcam/no word, gameplay HUD after a splash, killcam HUD delay, single read, split pair, pre-arm, word switch, reader error, real-fixture owner row. Floors 919/901.
ConWan30
marked this pull request as ready for review
November 11, 2026 23:35
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Fixes the #151 practice CoD auto-stop missing a short end splash (match-20261111-165658, build 9594001: end word read 182486–183222 ms, about 2 reads; owner row never read; recording ran ~65 s past the end until Enter).
New rule. The sustained path from #151 stays as it was. A second path is added: two confirmed reads of the same VICTORY/DEFEAT word within 1.5 s, after the 120 s arm, open a candidate. For up to 30 s the watcher reads the owner row on every frame (before, the runner only read it on frames that also had the word). The candidate is confirmed by the owner row being read, by the same word again ≥ 2 s later, or by 8 s with no gameplay HUD event (hitmarker / kill popup / killfeed; the crosshair and pause stubs and the scoreboard hook are ignored). It is cancelled by the other word or when the 30 s window ends. The 12 s tail (clamped 10–15) counts from confirmation: on the quiet path the stop comes at least 20 s after the first word. Gate (practice + CoD + AUTOCLOSE=1), stop path, stop_reason values, receipt.v0, contracts/, schema/, src/ are unchanged.
cod_end_stop.jsonis still info-only and now recordspath,follow_up,follow_up_ms,hud_events_in_candidate, the candidate / cancel counts and the new config. Thestop note:line names the path and follow-up.Killcam. A killcam shows no end word, so it cannot open a candidate (tested). If one plays after the splash and replays HUD events, each event restarts the 8 s quiet count, so the stop comes later rather than sooner (tested with synthetic events). Honest limit: on the real match only 2 of 3834 HUD region reads succeeded, so "no gameplay HUD" mostly measures time. The quiet path relies on read_end not misreading a word twice in 1.5 s mid-match: no false positives in the 413 non-end frames sampled, but there is no killcam footage to test against.
Tests: test_qorcap_cod_endstop.py goes from 25 to 39 (regression replay of this match's timing, which stops; killcam with no word; gameplay HUD returning after a splash; killcam HUD delaying the stop; a single read; reads too far apart; pre-arm splash; word switch; owner-reader error; owner_row and word_again confirms; record/note; a real-fixture owner row). The old sustained tests run with
splash=False. CI floors 905/887 → 919/901.Draft only. Do not merge.