For: A run waiting for a builder 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/crew/finishing.ts, src/crew/requested.ts.
Done:
[ ] src/crew/words.ts exports these sentences (new, or the module that already owns that concept; say which in the pull):
- "waits for a builder slot"
- "no builder on the crew"
[ ] 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/crew-wait-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/crew-wait-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/crew/words.ts, src/crew/finishing.ts, src/crew/requested.ts, test/crew-wait-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).
For: A run waiting for a builder 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/crew/finishing.ts, src/crew/requested.ts.
Done:
- "waits for a builder slot" - "no builder on the crew"
grep -rnfor each sentence under src/ finds only the module.bun x tsc --noEmitand, 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/crew/words.ts, src/crew/finishing.ts, src/crew/requested.ts, test/crew-wait-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).