mirror of
https://github.com/jcreek/CosmicClash.git
synced 2026-09-15 17:32:05 +00:00
feat: validate allocated assignment manifest
This commit is contained in:
+20
-16
@@ -35,19 +35,23 @@ product policy are in [`docs/MATCHMAKING.md`](docs/MATCHMAKING.md).
|
||||
[MATCHMAKING-SLOs.md](docs/MATCHMAKING-SLOs.md).
|
||||
- [x] Publish versioned OpenAPI/WebSocket contracts, stable IDs, legal state
|
||||
transitions, revisions and idempotency semantics ([v1 contracts](server/contracts/v1/)).
|
||||
- [ ] Add PostgreSQL queue ownership/active-participation fences, durable
|
||||
domain migrations/outbox and Redis indexes/TTLs; lost Redis writes must not
|
||||
split a proposal or corrupt durable state.
|
||||
- [ ] Define assignment compatibility and opt-in `ServerConfig` flags whose
|
||||
defaults reproduce the community-server path.
|
||||
- [ ] **IN PROGRESS:** Add PostgreSQL queue ownership/active-participation
|
||||
fences, durable domain migrations/outbox and Redis indexes/TTLs; lost Redis
|
||||
writes must not split a proposal or corrupt durable state. Initial migration
|
||||
and serializable store boundaries are implemented; live DB/cache repair gates remain.
|
||||
- [ ] **IN PROGRESS:** Define assignment compatibility and opt-in `ServerConfig`
|
||||
flags whose defaults reproduce the community-server path. Allocation manifest
|
||||
validation now covers client build and future expiry; signed admission remains.
|
||||
|
||||
## Phase 8 — identity and security
|
||||
|
||||
- [ ] Validate Steam Web API tickets only in the secure backend; issue
|
||||
revocable sessions and reconnect-safe match/identity/slot authorisations
|
||||
with server-owned connection-generation fencing.
|
||||
- [ ] Authenticate results with pod/GameServer-bound workload identity; make
|
||||
identical duplicates idempotent and conflicting results inert/alerting.
|
||||
- [ ] **IN PROGRESS:** Authenticate results with pod/GameServer-bound workload
|
||||
identity; make identical duplicates idempotent and conflicting results
|
||||
inert/alerting. Pure Go binding, hashing, reconciliation, and SQL boundaries exist;
|
||||
production credential validation remains.
|
||||
- [ ] Complete the threat model for forgery, replay, queue/flood/bot abuse,
|
||||
workload/insider compromise, DDoS, supply chain and denial-of-wallet.
|
||||
- [ ] Enforce restricted workloads/RBAC/networks/private stores/backups/secrets;
|
||||
@@ -58,23 +62,23 @@ product policy are in [`docs/MATCHMAKING.md`](docs/MATCHMAKING.md).
|
||||
|
||||
## Phase 8 — queues, playlists and rating
|
||||
|
||||
- [ ] Add one PostgreSQL-owned queue ticket/player with 10 s heartbeat, 30 s
|
||||
expiry, Redis candidate cache and restart/failover repair.
|
||||
- [ ] Validate opaque Steam ping locations and nonce-bound probes server-side;
|
||||
- [ ] **IN PROGRESS:** Add one PostgreSQL-owned queue ticket/player with 10 s
|
||||
heartbeat, 30 s expiry, Redis candidate cache and restart/failover repair.
|
||||
- [ ] **IN PROGRESS:** Validate opaque Steam ping locations and nonce-bound probes server-side;
|
||||
require <=100 ms, enforce discrepancy quarantine and the locked widening/
|
||||
region/team tie-break rules.
|
||||
- [ ] Send 10 s proposals to every selected human: ranked six, relaxed casual
|
||||
- [ ] **IN PROGRESS:** Send 10 s proposals to every selected human: ranked six, relaxed casual
|
||||
two to six with disclosed bots; enforce exact cooldown and queue-precedence
|
||||
behavior.
|
||||
- [ ] Fence proposals/participants in a PostgreSQL serializable transaction;
|
||||
- [ ] **IN PROGRESS:** Fence proposals/participants in a PostgreSQL serializable transaction;
|
||||
prove loss of an acknowledged Redis write cannot split players.
|
||||
- [ ] Casual: target 3v3 humans, after 60 s allow >=2 humans (one/team) plus
|
||||
bots, kickoff-only human backfill and no backfill loss/decline penalty.
|
||||
- [ ] Ranked: exactly six humans, solo-only, no bots/backfill, random-enabled
|
||||
non-elevated arenas only, 60 s reconnect grace and escalating abandons.
|
||||
- [ ] Implement the documented exact Glicko-2 equations, fractional 3v3
|
||||
- [ ] **IN PROGRESS:** Ranked: exactly six humans, solo-only, no bots/backfill,
|
||||
random-enabled non-elevated arenas only, 60 s reconnect grace and escalating abandons.
|
||||
- [ ] **IN PROGRESS:** Implement the documented exact Glicko-2 equations, fractional 3v3
|
||||
weights, inactivity/update locking/golden vectors and ten provisional games.
|
||||
- [ ] Add ranked-only exactly-once 12-week soft seasons; distinguish retryable
|
||||
- [ ] **IN PROGRESS:** Add ranked-only exactly-once 12-week soft seasons; distinguish retryable
|
||||
result-delivery outages from match-integrity failures and rating exemptions.
|
||||
|
||||
## Phase 8 — Agones and regional server capacity
|
||||
|
||||
Reference in New Issue
Block a user