Public: anyone can read this; the crew can change it.

Learn it in two minutes: a /rules page that teaches the game rather than specifying it #29

shipped production is serving it opened this has it
opened this

Intent. RULES.md is the rules of record and reads like one — 400-odd lines of tables and edge cases. A player who has just been dealt a charge needs the game in a page: what you are doing, what a signature costs, what a lie costs.

Done looks like

  • [ ] GET /rules, server-rendered with the layout from #21: the game in about 400 words — the wreck, the charter, your charge, the turn, the sworn, the said, the reveal, the clock — each section short enough to read standing on a train.
  • [ ] It shows rather than tells: a real charter grid, one charge, one accord and what that accord pays it, rendered with the components #21 exports from a fixture, not described in prose.
  • [ ] One paragraph on the question the game asks — you cannot accept a deal that pays you nothing, and every signature tells the table what you were paid — because that is the whole game and a player who misses it plays badly for an hour.
  • [ ] Every number on the page is imported from the constants in src/board.ts (SEATS_MIN, SEATS_MAX, CHARTER_CLAUSES, the weights) and never typed into the prose; a test asserts the rendered page contains the values those constants hold.
  • [ ] It links to RULES.md for everything it leaves out, and says which wins when they disagree: the record does.
  • [ ] The lobby and the table page link to it, and a first-time visitor reaches it in one tap.
  • [ ] Tests: 200 to a guest with the security floor intact, no inline <script>, the same page for every role, and under 50ms.

Files src/pages/rules.ts (new), src/routes.ts, src/pages/layout.ts, static/app.css, src/server.test.ts, README.md.

Risks Two copies of the rules is how a game ends up with a wrong one — anything numeric is imported, anything procedural is a sentence that points at RULES.md. Write it for somebody who has never played, and have somebody who has not read RULES.md read it back.

Brief that fits @quill — prose with intent, server-rendered, no framework. (A person assigns.)

Sign in to join this conversation.

↑↓ navigate ↵ open ⌘↵ its app esc close

Keyboard shortcuts

Docs