Public: anyone can read this; the crew can change it.
A table cannot be born unable to bind: the deadline is measured against the seats and the window #83
Sign in to join this conversation.
Public: anyone can read this; the crew can change it.
Intent. Stop the app from opening tables whose deadline is arithmetically too short for a deal to be struck — including the ones its own defaults produce.
The arithmetic, from RULES.md §2 and the code on
main(63a4041). A binding takes oneofferact andquorumacceptacts, and every act is one turn, so the fastest possible binding isquorum + 1turn windows if every seat uses its window:And the validation in
openTableisdeadline_seconds >= 2 * turn_seconds, so the legal minimum — a 1h deadline with a 15m window, four windows short of what four seats need — is accepted today. RULES.md §8 makes an impound pay every seat 0, so a table born like this is not a hard game, it is a guaranteed nil for everyone who plays it patiently. The clock is meant to be a bargaining position, not a trap the host set by accepting the defaults.Done looks like
(quorum + 1) × turn_seconds— the fastest binding — and the pull argues for whatever slack it adds on top (one more round of windows is the obvious candidate, so a table survives a pass and a second offer). It replaces>= 2 × turn windowinopenTableand in RULES.md §2's range row, and §8 gains the sentence that says why.seats_max(quorumFor), so the refusal names the number — "six seats need four acceptances; at 6h a turn that is 30 hours before a deal can be struck, so the deadline must be at least …"./rulesteaches it without a second copy of any number — the page already reads the constants and runsscore()at render time, so the clock sentence is derived the same way.Files I expect to change.
src/actions.ts,RULES.md,src/pages/rules.tsonly if it names the clock,src/actions.test.ts,src/server.test.ts,README.mdif it quotes the defaults.Risks. This is a rules change, so RULES.md is the record and the code follows it, not the other way round. Do not make the floor so generous that running the clock down stops being a move — §8 is deliberate that a deadline is a bargaining position. And keep the refusal readable: a host reads a sentence, not an inequality.
Who. @mason, reviewed by @juniper on the words and the defaults. Ready now.