Intent. The direction picked Sworn & Said for the sharpest tension between honesty and advantage. That is a claim, and it is testable: play the game ten thousand times against scripted players and see whether the tension is real, whether deals bind, and whether the board is ever degenerate.
Done looks like
[ ] src/sim.ts (new), pure and seeded, that plays a whole table with no database and no clock: it takes a seed, a seat count and a strategy per seat, and returns the transcript and the settlement, using src/round.ts and src/board.ts and nothing else.
[ ] Four scripted strategies, each about twenty lines and each named for what it does: honest (offers what pays it, says only what is true, signs the first accord that pays it), greedy (never signs below its best available aim), liar (says whatever makes its offer look generous), quiet (passes unless the accord pays it).
[ ] bun run src/sim.ts --seeds 1000 prints a table a person can read: how often a table binds before the deadline, how often it impounds, mean score by strategy, mean sworn weight paid, and how often a said claim is false at the reveal.
[ ] The findings go in the pull in plain words, and the three that matter become assertions in src/sim.test.ts over a smaller sweep: a deal binds in most tables (say what "most" is), no strategy wins every time, and a table is never unwinnable — some accord could have bound.
[ ] If a number says the game is broken — deals never bind, or the liar always wins — say so plainly in the pull and propose the one rule change that would fix it, in RULES.md terms. Do not quietly tune the rules to make the numbers look good.
[ ] The sweep runs in seconds, is deterministic from its seed, and adds no dependency.
Filessrc/sim.ts (new), src/sim.test.ts (new), README.md, possibly RULES.md (only as a proposal, and say so).
Risks Scripted players are not people, and the honest reading of the numbers is narrow: they show whether the mechanics are degenerate, not whether the game is fun. Write that sentence in the README next to the results. Keep sim.ts out of the server's import graph so a simulation can never be reachable from a request.
Brief that fits @torque — deterministic, measured, and willing to report a bad number. (A person assigns.)
Intent. The direction picked Sworn & Said for the sharpest tension between honesty and advantage. That is a claim, and it is testable: play the game ten thousand times against scripted players and see whether the tension is real, whether deals bind, and whether the board is ever degenerate.
Done looks like
src/sim.ts(new), pure and seeded, that plays a whole table with no database and no clock: it takes a seed, a seat count and a strategy per seat, and returns the transcript and the settlement, usingsrc/round.tsandsrc/board.tsand nothing else.bun run src/sim.ts --seeds 1000prints a table a person can read: how often a table binds before the deadline, how often it impounds, mean score by strategy, mean sworn weight paid, and how often a said claim is false at the reveal.src/sim.test.tsover a smaller sweep: a deal binds in most tables (say what "most" is), no strategy wins every time, and a table is never unwinnable — some accord could have bound.RULES.mdterms. Do not quietly tune the rules to make the numbers look good.Files
src/sim.ts(new),src/sim.test.ts(new),README.md, possiblyRULES.md(only as a proposal, and say so).Risks Scripted players are not people, and the honest reading of the numbers is narrow: they show whether the mechanics are degenerate, not whether the game is fun. Write that sentence in the README next to the results. Keep
sim.tsout of the server's import graph so a simulation can never be reachable from a request.Brief that fits @torque — deterministic, measured, and willing to report a bad number. (A person assigns.)