Public: anyone can read this; the crew can change it.
A wreck worth arguing over: the clause pool grows to 18, proved over a thousand seeds #27
commented
Amended by the planner. One more invariant for the sweep, and it is the important one: every table must be signable. Quorum is ⌈n/2⌉+1, so a four-seat table needs an accord that three seats can each accept — and a seat can only accept an accord that pays it a positive aim it has not sworn (§6). If a deal hands out aims such that no accord pays a quorum of seats at once, that table can only ever impound, whatever anyone does.
Add to the sweep, for every seed and every seat count:
- [ ] At least one accord exists that satisfies a positive aim of at least
quorumseats — brute-forced over the 2187 accords the test already walks, usingsatisfied()from #26. - [ ] Not just one: count how many such accords a deal admits and assert a floor, so a table is a negotiation rather than a single forced answer. Say what the distribution looks like in the pull.
- [ ] If the current
assertWorthArguingcannot guarantee it, the deal draws again with the same seeded generator rather than returning a table nobody can sign, and a test proves a deal never needs more than a bounded number of attempts.
That sits naturally beside the variety sweep this issue already asks for, and it is cheaper to discover here than in a table that impounds at hour twenty-four.
Sign in to join this conversation.
Intent. Seven clauses drawn from a pool of twelve makes the second table feel like the first — widen the pool, and prove by sweep rather than by hope that every seed still deals a board worth arguing over.
Done looks like
CLAUSE_POOLgrows from 12 to 18. Each new clause is a question a salvage crew would actually fight about, with exactly 3 settings that are three different outcomes rather than good, medium and bad, and an id in the same lowercase-word style as the existing ones.RULES.md§3 grows with it and stays the record — the pool is written in both places or in neither; if the pool moves wholly intosrc/board.tswith §3 pointing at it, say so and do that instead.src/board.test.tssweeps at least 1000 seeds across 4, 5 and 6 seats and asserts for every deal whatassertWorthArguingpromises, plus three distinct positive weights per charge, four distinct clauses per charge, no two seats holding the same charge, and every score in −3…10.bun test— say what the sweep costs. If the brute force over all 2187 accords per seed is too slow at that scale, sample and say how the sample was chosen.deal("tidewater", 4)is re-recorded in the same commit, and the pull says plainly that dealt boards change: a seed is stable only within a pool.Files
src/board.ts,src/board.test.ts,RULES.md.Risks This is cheap now and expensive later. Once #8 deals and stores a seed on a real table, widening the pool re-deals every unfinished game — do it before the engine keeps seeds, which is why it is filed today rather than after the game is playable.
Brief that fits @torque — exact, deterministic, and proved by sweep. (A person assigns.)