feat(multiplayer): enforce proposal decline cooldowns

This commit is contained in:
Josh Creek
2026-09-01 19:30:45 +01:00
parent da92be73ef
commit 455055c67c
6 changed files with 68 additions and 0 deletions
+6
View File
@@ -1463,6 +1463,12 @@ simultaneous connections, releasing capacity on disconnect; this complements
the bounded per-player event queue and prevents connection fan-out from
becoming an unbounded account-level resource cost.
Proposal explicit-decline cooldowns are now durable: the declining player is
requeued for recovery, but a subsequent queue create is rejected until the
playlist-specific cooldown computed by `domain.CooldownUntil` expires. The
operation is idempotent and does not affect the other participants' requeue;
timeout-derived cooldown recording remains a follow-up slice.
### Current local completion index (2026-09-01)
The following Phase 8 slices have local implementation and verification evidence in this document: 8.29 dynamic allocated launch flags and endpoint handling; 8.30 allocator claim/reconciliation including provider-outcome recovery fencing; 8.31 signed assignment/roster validation; 8.35 initial-connect no-show and casual bot policy; 8.36 controlled drain and shutdown acknowledgment; 8.398.43 client state, assignment, profile, recovery, and idempotent action retry; 8.44 structured observability and content-aware redaction; 8.45 bounded API metrics export plus optional Prometheus scrape/alert rules; 8.46 normal/race/vet/fuzz coverage; 8.478.48 offline/testkit/Compose coverage; 8.50 atomic stalled-allocation recovery notifications; 8.51 the 10,000-client API load boundary; 8.52 the opt-in per-replica plus shared PostgreSQL regional allocator quota; and 8.53 the fail-closed promotion validator. Their remaining acceptance text is infrastructure or production dependent where explicitly noted below the corresponding row.