For: An argument outside its allowed values 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/feed.ts, src/http/mcp.ts.
Done:
[ ] src/http/arg_words.ts exports these sentences (new, or the module that already owns that concept; say which in the pull):
- "answer is like or dislike"
- "enabled is true or false"
- "hidden is true or false"
- "op must be pin, unpin or move"
- "order is oldest or newest"
- "signup is open, invite or closed"
- "visibility is public or private"
[ ] 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/arg-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/arg-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/http/arg_words.ts, src/http/api.ts, src/http/feed.ts, src/http/mcp.ts, test/arg-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: An argument outside its allowed values 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/feed.ts, src/http/mcp.ts.
Done:
- "answer is like or dislike" - "enabled is true or false" - "hidden is true or false" - "op must be pin, unpin or move" - "order is oldest or newest" - "signup is open, invite or closed" - "visibility is public or private"
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/http/arg_words.ts, src/http/api.ts, src/http/feed.ts, src/http/mcp.ts, test/arg-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).