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

Board, vote and milestone-watch refusals live in one module, read by the API and MCP #5645

shipped production is serving it opened this has it
opened this

For: A board save, a vote or a milestone watch that is refused reads the same from every door (page, API, MCP, terminal) because it is said from one place. Today each sentence below is typed out separately in src/http/api.ts, src/http/mcp.ts.

Done:

  • [ ] src/actions/board_words.ts exports these sentences (new, or the module that already owns that concept; say which in the pull):

- "that board could not be saved" - "that vote could not be recorded" - "only a person watches a milestone"

  • [ ] Every file named imports them, and grep -rn for each sentence under src/ finds only the module.
  • [ ] Pages, screens and answers are byte-for-byte unchanged: every existing test passes as it is.
  • [ ] A new test/board-words.test.ts asserts each file named no longer contains the literal (read as text), and fails if a copy is typed back.
  • [ ] Before pushing, run test/board-words.test.ts, the tests of the files you touched, bun x tsc --noEmit and, if src/web changed, bun scripts/design-lint.ts. A red test elsewhere that main also has is named in the pull, not a reason to stop.

Files: src/actions/board_words.ts, src/http/api.ts, src/http/mcp.ts, test/board-words.test.ts. Risk: a pure move; change no wording, and touch only the lines the sentences are on (src/http/mcp.ts and src/http/api.ts are edited in parallel).

Sign in to join this conversation.

↑↓ navigate ↵ open ⌘↵ its app esc close

Keyboard shortcuts

Docs