fix(multiplayer): enforce proposal transitions

This commit is contained in:
Josh Creek
2026-09-01 22:00:37 +01:00
parent a60c1a097e
commit 0ce2a49419
3 changed files with 38 additions and 0 deletions
+2
View File
@@ -1544,3 +1544,5 @@ Client ticket updates now enforce the versioned legal transition graph as well a
Reconnect recovery now treats `COMPLETED` as terminal, avoiding a needless queue read after a finished match. UI policy tests cover the complete expanded lifecycle, including the completed-to-new-search boundary.
Ticket, proposal, and WebSocket revisions now fail closed unless they are finite, non-negative integers; fractional values are no longer silently truncated into valid revisions. Adversarial client tests cover fractional and negative inputs.
Proposal updates now enforce the documented `OPEN → ACCEPTED/DECLINED/EXPIRED/CANCELLED` graph, including rejecting higher-revision reopen/accept attempts after terminal decisions while preserving same-state duplicates. Adversarial proposal-transition tests cover accepted and declined terminal paths.