Josh Creek
4248e51c60
fix(server): enforce durable identity bans on session issuance and auth
...
banned_until and ban_reason have been in the schema since 0001, but no
production query ever read them -- grepping the tree found no reference
outside the migration itself. The only ban check was an in-memory map on
domain.TicketVerifier used by domain tests. Once real Steam login is
wired, a banned identity would keep full access through every existing
session until expiry and could obtain new ones.
Make the ban part of the durable authentication transaction rather than
a policy each login adapter must remember to re-implement:
- Session issuance inserts only when the identity exists and has no
active ban, so a banned player cannot mint a session.
- Authentication joins the identity and rejects an active ban on every
request, so a ban takes effect immediately on every replica rather
than at session expiry.
- ApplyIdentityBan sets the ban and revokes that identity's sessions in
one serializable transaction, closing the window where the ban is
durable but another replica still accepts an issued session.
Bans are time-bounded and clearing one does not resurrect sessions the
ban revoked.
Tests cover enforcement across two independently constructed stores
standing in for two replicas, expiry/unban semantics, and -- separately,
because revocation would otherwise mask it -- that a ban applied without
revoking anything still blocks the next request.
2026-09-05 10:26:25 +01:00
Josh Creek
d64920b0f9
fix(multiplayer): repair allocated compose verification
2026-09-04 16:38:10 +01:00
Josh Creek
2463713cde
feat(multiplayer): persist live reconnect abandonments
2026-09-03 20:53:28 +01:00
Josh Creek
2e9da3032c
fix(multiplayer): complete live results atomically
2026-09-03 13:29:31 +01:00
Josh Creek
8c28374eb4
fix(multiplayer): harden reconnect lifecycle fencing
2026-09-03 13:24:52 +01:00
Josh Creek
a15368ed29
fix(multiplayer): fence client queue cancellation states
2026-09-03 00:15:41 +01:00
Josh Creek
f8af212e3f
fix(multiplayer): terminate proposal offenders atomically
2026-09-03 00:09:07 +01:00
Josh Creek
aa446cfbfe
fix(multiplayer): reconcile authoritative initial connections
2026-09-03 00:02:04 +01:00
Josh Creek
55b88a3aa5
fix(multiplayer): converge events through REST
2026-09-02 18:54:10 +01:00
Josh Creek
91658fbc13
fix(multiplayer): recover assignment handoff
2026-09-02 18:47:00 +01:00
Josh Creek
ffc7856993
fix(multiplayer): align proposal participant contract
2026-09-01 22:52:52 +01:00
Josh Creek
51f6e19339
feat(multiplayer): expose ranked season countdown
2026-09-01 21:49:48 +01:00
Josh Creek
eb3b685af0
feat(multiplayer): expose active ranked season
2026-09-01 21:34:57 +01:00
Josh Creek
701d7a9a2e
fix(multiplayer): centralize arena path validation
2026-09-01 21:18:48 +01:00
Josh Creek
2ff348adf0
fix(multiplayer): persist arena identity on allocations
2026-09-01 21:16:42 +01:00
Josh Creek
bd617dbf06
fix(multiplayer): validate ranked arena paths durably
2026-09-01 21:07:56 +01:00
Josh Creek
ff80ab46b7
feat(multiplayer): rotate ranked arenas deterministically
2026-09-01 21:06:26 +01:00
Josh Creek
84372204fd
feat(multiplayer): persist ranked arena allocations
2026-09-01 21:04:55 +01:00
Josh Creek
5630c5c8dc
feat(multiplayer): harden ranked arena admission
2026-09-01 19:39:11 +01:00
Josh Creek
455055c67c
feat(multiplayer): enforce proposal decline cooldowns
2026-09-01 19:30:45 +01:00
Josh Creek
9ae01ecc5a
fix(multiplayer): propagate allocated playlist
2026-09-01 17:00:37 +01:00
Josh Creek
b7642ad2be
feat(multiplayer): model initial connect outcomes
2026-09-01 16:21:40 +01:00
Josh Creek
04b5d3b29d
feat(multiplayer): verify ranked profile delivery
2026-09-01 15:29:49 +01:00
Josh Creek
d081a72b9a
feat(multiplayer): wire ranked profile runtime policy
2026-09-01 15:28:37 +01:00
Josh Creek
03ff8e485e
feat: promote accepted proposals from API
2026-09-01 10:29:50 +01:00
Josh Creek
eebab1bc19
feat: add workload-authenticated result API
2026-09-01 10:01:04 +01:00
Josh Creek
def60169a8
feat: persist authenticated queue probe RTT
2026-09-01 09:40:25 +01:00
Josh Creek
e25d61d80e
feat: verify allocated join authorisations with hmac
2026-09-01 08:48:48 +01:00
Josh Creek
99680dbf6f
fix: bind queue idempotency to compatibility
2026-08-31 22:51:00 +01:00
Josh Creek
66a67c931d
feat: add participant-scoped proposal recovery
2026-08-31 22:41:26 +01:00
Josh Creek
4d3a8cc217
feat: add ban policy to ticket verification
2026-08-31 22:28:45 +01:00
Josh Creek
ae164e625a
fix: expire abandoned auth attempts
2026-08-31 22:22:33 +01:00
Josh Creek
9fe6c57b5d
feat: model asynchronous Steam auth sessions
2026-08-31 22:21:31 +01:00
Josh Creek
3b208ae860
fix: bind queue candidates to their owner
2026-08-31 22:05:44 +01:00
Josh Creek
b47c7dc3fa
fix: enforce matchmaking compatibility boundaries
2026-08-31 22:04:57 +01:00
Josh Creek
b2ee9ec92d
feat: validate queue compatibility metadata
2026-08-31 21:57:40 +01:00
Josh Creek
7b6e22292a
feat: sign reconnect authorisations
2026-08-31 21:44:27 +01:00
Josh Creek
229ded8613
feat: gate proposals on formed match policy
2026-08-31 21:38:47 +01:00
Josh Creek
4dcf98cbb0
feat: form matches from queue projections
2026-08-31 21:36:00 +01:00
Josh Creek
0f1cc17af6
feat: add authenticated queue recovery
2026-08-31 21:29:33 +01:00
Josh Creek
846663e320
feat: derive authoritative ranked tiers
2026-08-31 21:25:53 +01:00
Josh Creek
726fe1ce2e
feat: gate assignment publication on allocation
2026-08-31 21:24:19 +01:00
Josh Creek
79e66c7a95
feat: validate workload-bound result credentials
2026-08-31 21:20:12 +01:00
Josh Creek
caa875f15c
fix: fence concurrent queue mutations
2026-08-31 21:09:58 +01:00
Josh Creek
bc7136b2cb
feat: add ranked season window policy
2026-08-31 21:08:10 +01:00
Josh Creek
e13a64756f
feat: add authoritative rating outcome scoring
2026-08-31 21:07:04 +01:00
Josh Creek
63332435d2
feat: classify match integrity separately from delivery
2026-08-31 21:05:54 +01:00
Josh Creek
723f8aea5d
test: verify offline matchmaking pipeline
2026-08-31 21:04:22 +01:00
Josh Creek
1902084523
test: add multiplayer control-plane fuzz targets
2026-08-31 20:59:29 +01:00
Josh Creek
3b5f50023b
feat: enforce ranked admission policy
2026-08-31 20:55:11 +01:00