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

A pull's re-check and conflict sentences live in one module, read by the pull page, conflicts and the terminal #5629

Merged opened this

Check · Review · Land · Live done — Landed and live in production.

Merged

The two sentences a pull answers with after someone asks for something now live in one new module, `src/actions/pull_ask_words.ts`. The four places that used to type them out import them instead. No wording changed.

shipped production is serving it deploy aa26afa

opened this

The two sentences a pull answers with after someone asks for something now live in one new module, src/actions/pull_ask_words.ts. The four places that used to type them out import them instead. No wording changed.

  • CHECK_ASKED ("Check asked for at the current head.") is used by src/web/pages/pull.ts and src/tui/screens/stalled.ts.
  • RESOLUTION_ASKED ("Asked: the crew is resolving it on the pull's own branch.") is used by src/web/pages/conflicts.ts and src/tui/screens/pull.ts.

In each of the four files only two lines changed: the line with the sentence and one new import. grep -rn for either sentence under src/ now finds only the new module. I made it a new module rather than adding the resolution sentence to src/crew/proposal.ts, where PROPOSE_WHY lives, because the check sentence has nothing to do with proposals. That keeps both sentences in one place.

The new test/pull-ask-words.test.ts pins both sentences to their exact wording. It reads each of the four files as text and fails if one stops importing the module or if a sentence is typed back in.

bun x tsc --noEmit, bun scripts/design-lint.ts and the new test pass. I also ran the 28 test files that cover the touched files: 363 passed and 1 failed. The failure was "the crew proposes a resolution > one tap lands a commit on the head branch and a note on the pull" in test/crew-proposal.test.ts, which ran out of time at 5 s while the machine was loaded. Run on its own, that file passes all 14 tests both on this branch and on main.

🤖 Generated with Claude Code

Closes #5620

commented

The two sentences a pull answers with after someone asks for something now live in one new module, src/actions/pull_ask_words.ts. The four places that used to type them out import them instead. No wording changed.

  • CHECK_ASKED ("Check asked for at the current head.") is used by src/web/pages/pull.ts and src/tui/screens/stalled.ts.
  • RESOLUTION_ASKED ("Asked: the crew is resolving it on the pull's own branch.") is used by src/web/pages/conflicts.ts and src/tui/screens/pull.ts.

In each of the four files only two lines changed: the line with the sentence and one new import. grep -rn for either sentence under src/ now finds only the new module. I made it a new module rather than adding the resolution sentence to src/crew/proposal.ts, where PROPOSE_WHY lives, because the check sentence has nothing to do with proposals. That keeps both sentences in one place.

The new test/pull-ask-words.test.ts pins both sentences to their exact wording. It reads each of the four files as text and fails if one stops importing the module or if a sentence is typed back in.

bun x tsc --noEmit, bun scripts/design-lint.ts and the new test pass. I also ran the 28 test files that cover the touched files: 363 passed and 1 failed. The failure was "the crew proposes a resolution > one tap lands a commit on the head branch and a note on the pull" in test/crew-proposal.test.ts, which ran out of time at 5 s while the machine was loaded. Run on its own, that file passes all 14 tests both on this branch and on main.

🤖 Generated with Claude Code

Approved — before the latest push

Clean, and it does exactly what #5620 asked. Both sentences now live in src/actions/pull_ask_words.ts. The four readers import them, and the only lines that changed are the ones the sentences were on. The wording is byte-for-byte the same.

What I checked at the pull's head:

  • grep -rn for either sentence under src/ finds only the new module.
  • bun x tsc --noEmit is clean.
  • bun scripts/design-lint.ts passes.
  • test/pull-ask-words.test.ts passes. It would fail if any reader dropped the import or typed a sentence back in.

Security: there's no new input, output, write path or auth surface. The flash and toast text was already escaped at render and still is. Both doors still say the same thing because they read from one place. Nothing user-visible changed, so the README doesn't need an update. The preview boots and / answers 200; the preview's own data has no copy of this repo, so I couldn't try the pull pages there, and this change doesn't alter what they show.

The module is small and its name says what it holds, and it adds no dependency. Approved.

commented

The re-check and conflict sentences now live in one module, src/actions/pull_ask_words.ts. The pull page, the conflicts view and the terminal all read them from there instead of each keeping its own copy, and the wording people see is unchanged.

This push merges main into the branch. The only conflict was in the imports at the top of src/web/pages/pull.ts. main had moved a different set of sentences on the same page (review verdicts, comments, "pull request is no longer here") into their own modules, so the branch needed CHECK_ASKED from pull_ask_words.ts and main needed reviewWords from review_words.ts. Both imports are kept. The two changes move different sentences, so nothing else had to be reconciled.

The type check is clean, the pull, conflict and ask test files pass (214 tests, 0 failures), and bun scripts/design-lint.ts passes.

🤖 Generated with Claude Code

Approved

Approved. This moves two sentences into src/actions/pull_ask_words.ts and four readers (pull page, conflicts page, and the two terminal screens) import them. The wording is unchanged. It adds no input, write path, auth surface or dependency, and nothing in src/web/ changes in markup, so the design system is untouched. The preview answers 200 on /. I read the diff and did not exercise the pull pages in the preview. The two flash and toast messages are the same strings as before, so the experience is the same on both doors.

Two things I would do next:

  1. The test greps source text for the sentences. That is brittle: a reworded copy would slip past it. A behavioural test that triggers the flash on each door would be sturdier.
  2. Look for other sentences the page and terminal still type twice, and move them the same way, one pull each.
Sign in to join this conversation.

↑↓ navigate ↵ open ⌘↵ its app esc close

Keyboard shortcuts

Docs