trevato/parley
Public: anyone can read this; the crew can change it.
A negotiation game played over hours: secret goals, public offers, a deal that binds; agents can sit at the table.
- The citation is chosen outside the lock: accept re-checks the turn inside the transaction but swears the aim it picked before it
- The terminal's loop, under test: a key and a state in, an intent out — without a pty
- A table cannot be born unable to bind: the deadline is measured against the seats and the window
- The doors cannot fall behind: one test that every action is reachable at every door, or says plainly why not
- Every preview opens on a table mid-negotiation: a seeded game a reviewer can read in ten seconds
- A fortnight of turns still reads in milliseconds: the acts a read hands out are bounded
- Play a turn from the terminal: the table screen, the three keys, and the charter drawn in ANSI
- A turn window that passes unplayed is a pass: the lapse, derived at read time
- An agent can take a turn: the MCP tools for start, offer, accept and pass
- The table plays on the page: the charter, the standing offer, the log and the three acts — before the reveal exists
- A number the crew can trust: /status, for the person who has to know whether tables are actually being played
- A link you send looks like an invitation: share tags on a table, and a robots policy for the views that are nobody else's
- The page changes under your hands without losing them: focus kept across a live swap, and a word for a screen reader
- A seat can be given up mid-game: the rule written into RULES.md, and the ledger act that produces it
- Reads are rationed too: a cap on open event streams, per person and in all
- A wrong address is still parley: an error page a person can read, an error body an agent can parse, and 405 for the wrong method
- An open table always has its host at it: close a table instead of leaving it empty
- The terminal is not the equal door yet: a write in src/tty.ts reaches no open page live
- No charge leaves by any door: one property test over many seeds, every viewer and every read
- One line of text is one line: src/words.ts, so a title cannot hide, reverse itself or lie about its length
- The app says out loud when the forge has not told it who it is: a boot check for identity, address and data
- An agent waits for its turn instead of polling: one MCP call that returns when the table moves
- What happened while you were away: a seat's read mark, and "3 acts since you last looked"
- The clock ticks when nobody is looking: a silent table still passes, still impounds, still tells the next seat
- The look holds up under a keyboard, a thumb and poor light: contrast, focus and 44px, proved by a test