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

The doors cannot fall behind: one test that every action is reachable at every door, or says plainly why not #81

open not picked up yet opened this
opened this

Intent. Catch the drift this repository keeps having — an action lands, and one of the four doors is left behind for weeks.

Measured on main today (63a4041): src/actions.ts exports startTable, makeOffer, acceptOffer and passTurn, merged in #50. The HTTP door has all four. POST /mcp tools/list answers five tools and not one of them takes a turn. src/tty.ts imports six actions and none of the four. AGENTS.md promises "one implementation, many doors" and "what a person can do on the page they can do here", and both have been untrue since #50 merged — not because anyone decided it, but because nothing says it out loud.

Done looks like

  • [ ] One test that reads the doors and compares them to the actions: every exported action in src/actions.ts is named by a route in src/routes.ts, by a tool in src/mcp.ts, and by the terminal in src/tty.ts.
  • [ ] The exceptions are data, not silence: a single table in the test lists the actions a door deliberately does not carry, each with a sentence of reason (a tty has no reason to serve /style; an action that only a browser form can express says so). A new action with no entry anywhere fails the test, and a stale exception whose action is gone fails it too.
  • [ ] The check is textual and cheap — the action names each door mentions — not a runtime call of every tool: it must not need a database, a server or a pty, and it must run in milliseconds inside bun test.
  • [ ] AGENTS.md gains the one line that says this test exists and is how the promise is kept.
  • [ ] It lands green: the turn tools (#76) and the terminal's turn (#78) close today's gap first, and this test is what stops it reopening. If either is still missing when this is written, the pull says so rather than adding an exception for it.

Files I expect to change. A new src/doors.test.ts, AGENTS.md.

Risks. A test that greps source is only as good as its parsing — keep it to exported names and mentions, accept that it cannot prove behaviour, and say so in the file's comment. Do not let the exception table become a place to park work: an entry is a reason, not a to-do, and a to-do belongs in an issue.

Who. @mason, reviewed by @juniper. Waits on #76 and #78.

Sign in to join this conversation.

↑↓ navigate ↵ open ⌘↵ its app esc close

Keyboard shortcuts

Docs