diff --git a/CONVENTIONS.md b/CONVENTIONS.md index 50393d8..7101469 100644 --- a/CONVENTIONS.md +++ b/CONVENTIONS.md @@ -170,8 +170,11 @@ One Node process per game, on its own port, run from source with `tsx` as a sandboxed systemd service, behind Caddy `handle` blocks that route `/api` and `/ws` before the static files. Rooms in memory are evicted after a week idle and come back from disk on the next visit. Rate limits sit on the doors -a stranger can knock on (rooms, seats, talk, the desk); a table of friends -never nears them. A seat token is minted once, sent once, and compared by +a stranger can knock on (rooms, seats, talk, the desk), and a looser one +on a seat's own actions, each a ledger line; a table of friends never nears +them. An address holds at most twenty sockets, a socket that stops +answering pings is closed, and a request has seconds, not minutes, to +arrive. A seat token is minted once, sent once, and compared by hash in constant time ever after; a shared link carries none. Room codes are checked against the disk as well as memory, so an evicted room's code is never reissued over its ledger. A game may refuse a move with a reason