Public: anyone can read this; the crew can change it.
A mirror's "do it there" sentence lives in one module, read by issue teams and the thread page #5638
Check · Review · Land · Live done — Landed and live in production.
The mirror's refusal sentence, "This repository mirrors an origin — do it there, and the next sync brings it back.", now lives in one place. It is `MIRRORED_DO_IT_THERE` in the new module `src/actions/mirror_words.ts`. No existing module covered mirror wording, so this is a new file rather than an addition to one.
shipped production is serving it deploy da65c36
The mirror's refusal sentence, "This repository mirrors an origin — do it there, and the next sync brings it back.", now lives in one place. It is MIRRORED_DO_IT_THERE in the new module src/actions/mirror_words.ts. No existing module covered mirror wording, so this is a new file rather than an addition to one.
src/actions/issue_teams.ts:ISSUE_TEAMS_SAY.mirroredreads the constant.src/web/pages/thread.ts:originError'smirroredentry reads the constant.
Only the import lines and the lines the sentence was on changed. The wording is the same, so pages and answers come out byte-for-byte as before. grep -rn for the sentence under src/ now finds only src/actions/mirror_words.ts.
test/mirror-words.test.ts checks that every sentence the module exports is a non-empty string. It also reads both files as text and checks that each imports mirror_words.ts, uses the constant's name, and does not contain the sentence itself. It fails if a copy is typed back.
Other files say similar but differently worded sentences: src/http/api.ts, src/contract/openapi.ts, src/tui/screens/common.ts, and the edit and branches pages. I left them alone; the issue covers only this one sentence, and changing their wording would change what they output.
Run before pushing, all passing: test/mirror-words.test.ts, test/issue-teams.test.ts, test/issue-teams-doors.test.ts, test/thread-render-timing.test.ts (25 pass, 0 fail), plus bun x tsc --noEmit and bun scripts/design-lint.ts.
🤖 Generated with Claude Code
Does what #5591 asked: the sentence lives once in src/actions/mirror_words.ts, both files import it, wording is unchanged so pages and answers are byte-identical, and the test fails if a copy is typed back. Preview / answers 200. No new surface, no security or design-system impact (no markup or CSS touched), no dependency. A new module was the right call and the pull says so. Next two things: (1) the similar sentences in src/tui/screens/common.ts:880 and src/contract/openapi.ts:46,1189 are worded differently, so decide deliberately whether the terminal and the contract should say the same sentence as the page; (2) the test checks source text, so it would not notice a sentence reworded by one character in a third file; a shared grep over src/ for the whole sentence would widen it.
The mirror's refusal sentence, "This repository mirrors an origin — do it there, and the next sync brings it back.", now lives in one place. It is
MIRRORED_DO_IT_THEREin the new modulesrc/actions/mirror_words.ts. No existing module covered mirror wording, so this is a new file rather than an addition to one.src/actions/issue_teams.ts:ISSUE_TEAMS_SAY.mirroredreads the constant.src/web/pages/thread.ts:originError'smirroredentry reads the constant.Only the import lines and the lines the sentence was on changed. The wording is the same, so pages and answers come out byte-for-byte as before.
grep -rnfor the sentence undersrc/now finds onlysrc/actions/mirror_words.ts.test/mirror-words.test.tschecks that every sentence the module exports is a non-empty string. It also reads both files as text and checks that each importsmirror_words.ts, uses the constant's name, and does not contain the sentence itself. It fails if a copy is typed back.Other files say similar but differently worded sentences:
src/http/api.ts,src/contract/openapi.ts,src/tui/screens/common.ts, and the edit and branches pages. I left them alone; the issue covers only this one sentence, and changing their wording would change what they output.Run before pushing, all passing:
test/mirror-words.test.ts,test/issue-teams.test.ts,test/issue-teams-doors.test.ts,test/thread-render-timing.test.ts(25 pass, 0 fail), plusbun x tsc --noEmitandbun scripts/design-lint.ts.🤖 Generated with Claude Code
Closes #5591