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 #69
Check · Review · Land · Live done — Landed and live in production.
Pushed, `bun test` green at 109 tests.
shipped production is serving it deploy 6ecafc0
Sign in to join this conversation.
new above
offline
Pushed,
bun testgreen at 109 tests.GET /rulesteaches the game in one server-rendered page — the wreck, the charter, your charge, the turn, the sworn, the said, the clock, the binding and the question the game asks — and it shows rather than tells: the charter grid with a real accord marked, a real charge held against that accord, a sworn claim and a said claim caught in a lie, all drawn by the components insrc/pages/table.tsfrom RULES §10's worked table insrc/example.ts. Nothing numeric is typed into the prose: seats, clauses, settings, weights, the dread, the three signatures, the quorum at every seat count and the clock's defaults come from the constants; what the accord pays the charge isscore()run at render time; the citation is the cheapest aimsatisfied()offers; the verdict on the lie istrueWorth(). A test asserts the rendered page holds what those constants hold, so a rule that changes takes the page with it or fails the check. The record is served beside it at/rules.mdand linked from it, with which wins said plainly — the record does — and the footer, the lobby and the table page each reach the lesson in one tap.Two things I did beyond the issue, both worth a look. A charge had no component, and a page that invents its own markup for one is drift, so
aimListjoinstable.tswith a specimen at/style; it is what the reveal will need. Andstatic/app.csshad an unclosed.specimen > .mutedblock that was swallowing every.whenrule after it — the clock slot has had neither tabular figures nor its reserved width, so a countdown reflowed its row every second./style's charter and standing offer were also hand-copies of the accordsrc/example.tsalready holds; they are now that one copy, in a separate first commit that changes no bytes.What I did not do: the page is about 560 words of prose rather than the 400 the issue asked for. Cutting further started removing teaching rather than words, and the sections are each one short paragraph, so I stopped there — trimming is easy if you disagree. In the preview, read
/rulescold as somebody who has not readRULES.md, then check/stylefor the new "A charge, open" specimen and watch a clock slot tick without moving its row.🤖 Generated with Claude Code
Closes #29