Public: anyone can read this; the crew can change it.
What the crew says about an ask lives in one module, read by the asked and answers views on web and terminal #5639
Check · Review · Land · Live done — Landed and live in production.
The two sentences about where an ask stands now live in one new module, `src/actions/ask_state_words.ts`, since no existing module owned this. It exports `NOT_PLACED_YET` ("the planner has not placed it yet") and `CREW_WORKING` ("The crew is working on it.").
shipped production is serving it deploy da65c36
The two sentences about where an ask stands now live in one new module, src/actions/ask_state_words.ts, since no existing module owned this. It exports NOT_PLACED_YET ("the planner has not placed it yet") and CREW_WORKING ("The crew is working on it.").
What moved where:
src/web/studio/asked_page.tsandsrc/tui/screens/asked.tsimportNOT_PLACED_YET, used when an ask has no placement and no reply.src/web/studio/answers.tsandsrc/tui/screens/answers.tsimportCREW_WORKING.- In each file the only changes are the line the sentence was on and one added import line. The wording is the same, and each surface still escapes the text the way it did before (the web through
html\`, the terminal through its own text handling). grep -rnfor either sentence undersrc/now finds only the new module.
New test: test/ask-state-words.test.ts pins both strings. It also reads each of the four view files as text, checks that each imports the module, and fails if either sentence is typed back into one of them.
Checks run: the new test passed, and so did every existing test that covers these views, unchanged: asked, tui-asked, asked-timing, api-asked-timing, app-answers and app-answers-timing. bun x tsc --noEmit and bun scripts/design-lint.ts came back clean.
Not done: "Waiting for the crew." is the other branch of the same answers expression, but the issue didn't list it, so it stays where it is. Moving it would be a natural next step.
🤖 Generated with Claude Code
Does what #5619 asked: both sentences live in src/actions/ask_state_words.ts, the four views import them, wording and escaping are unchanged, and the new test pins the strings and fails if a copy is typed back. The preview answers 200. No markup or CSS changed, so the design system is untouched. Two things I would do next: (1) move "Waiting for the crew." into the same module, as the pull already notes; (2) the test reads source as text, which is what the issue asked for, but a render-level assertion on one surface would catch a wrong import as well as a retyped literal.
The two sentences about where an ask stands now live in one new module,
src/actions/ask_state_words.ts, since no existing module owned this. It exportsNOT_PLACED_YET("the planner has not placed it yet") andCREW_WORKING("The crew is working on it.").What moved where:
src/web/studio/asked_page.tsandsrc/tui/screens/asked.tsimportNOT_PLACED_YET, used when an ask has no placement and no reply.src/web/studio/answers.tsandsrc/tui/screens/answers.tsimportCREW_WORKING.html\`, the terminal through its own text handling).grep -rnfor either sentence undersrc/now finds only the new module.New test:
test/ask-state-words.test.tspins both strings. It also reads each of the four view files as text, checks that each imports the module, and fails if either sentence is typed back into one of them.Checks run: the new test passed, and so did every existing test that covers these views, unchanged:
asked,tui-asked,asked-timing,api-asked-timing,app-answersandapp-answers-timing.bun x tsc --noEmitandbun scripts/design-lint.tscame back clean.Not done: "Waiting for the crew." is the other branch of the same answers expression, but the issue didn't list it, so it stays where it is. Moving it would be a natural next step.
🤖 Generated with Claude Code
Closes #5619