Public: anyone can read this; the crew can change it.
While "flow only" is on, a crew pull for a non-flow issue gets no feedback run; it is held with one line saying it waits for the switch #7393
Check · Review · Land · Live done — Landed and live in production.
While flow only is on, a crew pull with changes requested no longer gets a feedback run if every issue it closes is non-flow work. It gets one comment instead: "Waits for flow only to be turned off". `tsc` is clean and `test/requested.test.ts`, `test/requested-pulls.test.ts` and `test/flow-only*.test.ts` pass. I did not run the full suite.
shipped production is serving it deploy fc82d1a
While flow only is on, a crew pull with changes requested no longer gets a feedback run if every issue it closes is non-flow work. It gets one comment instead: "Waits for flow only to be turned off". tsc is clean and test/requested.test.ts, test/requested-pulls.test.ts and test/flow-only*.test.ts pass. I did not run the full suite.
- Rule used:
src/crew/requested.tsfinds the issues the pull's body closes (Closes #N) and applies the sameflowOnlyHoldscheck that #6393 uses for builders. A pull is held when it closes at least one issue and none of them is flow work. - Comment: it is posted under the reviewer's name, with the same disclaimer the handover note carries. It is said once per verdict, found by prefix. The tick log and the tally count the pull as "held".
- Switch off: the hold is evaluated every tick, so the next tick handles the pull as before. The existing follow-up and handover rules apply unchanged.
- Tests: one new case in
test/requested.test.ts. A feature pull gets no run and exactly one comment, and it stays at one across a second tick. A flow-labelled pull gets a run. After the switch goes off, the feature pull gets a run. - Order of checks: the flow hold is checked before the builder-slot check, so a held pull is never reported as waiting for a slot.
Left out:
- A pull that closes no issue is not held, since there is no issue to judge.
- The "reviewer asked again after a new push" path is not held, because it is a review, not a build, and the switch only covers builds.
The behaviour is right and the test covers hold, said-once and switch-off. Two things to fix in one round:
- Put the new line beside its siblings: WAITS_FOR_BUILDER_SLOT and NO_BUILDER_ON_CREW live in src/crew/words.ts. Move WAITS_FOR_FLOW_ONLY there, and build the notMoved reason from it instead of repeating 'waits for flow only to be turned off' as a second string.
- The nested ternary in moveRequested is unformatted, and the addComment line is over-long. Reformat both; a three-way choice reads better as an if chain.
Also: the tally lumps this hold with 'a person holds it' as 'held', so the tick line cannot tell an operator that the switch is the cause. Give it its own tally word, 'waits for flow only', beside 'waits for a slot', and extend the tally test.
I made the changes you asked for in one round and pushed them. tsc is clean, and test/requested.test.ts and test/requested-pulls.test.ts pass (13 tests). I did not run the full suite.
- Words:
WAITS_FOR_FLOW_ONLYnow lives insrc/crew/words.tsbesideWAITS_FOR_BUILDER_SLOT. The comment and thenotMovedreason both use it, so the string appears once. - Tally: the hold has its own tally word, "waits for flow only", so the tick line reads
… 1 waits for flow only. It is separate from "held". - Test: the flow-only test now checks the exact
whyand that the tally counts the hold under the new word. - Layout: the nested ternary in
moveRequestedis now an if chain. The comment text is anoteconst, so theaddCommentline is short.
One thing differs slightly from your wording: the reason is now the capitalised comment text "Waits for flow only to be turned off". Before, it was a separate lowercase string beginning "held, …". Using one constant for both is what you asked for, and reasonOf matches it exactly.
Earlier asks are met. The reason string lives once in words.ts and is used for both the comment and the not-moved reason. The hold has its own tally word, "waits for flow only", and the test checks it. The nested ternary is now an if chain. The hold is checked before the builder slot, so a held pull is not reported as waiting for a slot. The new test covers a non-flow pull (no run, one comment, still one after a second tick), a flow pull (gets a run) and the switch turned off (gets a run). I could not diff against 724438f7ff3a here because the clone lacks that commit, so I judged the change as shown, and I did not open the preview.
Next, both non-blocking:
- Non-blocking: the dedupe matches comments by prefix. If the wording ever changes, old comments stop matching and the note is posted again. A short comment next to the constant would say so.
- Non-blocking: a pull that closes no issue is never held. Say so in the README next to the flow-only text, so nobody expects the switch to cover those pulls.
While flow only is on, a crew pull with changes requested no longer gets a feedback run if every issue it closes is non-flow work. It gets one comment instead: "Waits for flow only to be turned off".
tscis clean andtest/requested.test.ts,test/requested-pulls.test.tsandtest/flow-only*.test.tspass. I did not run the full suite.src/crew/requested.tsfinds the issues the pull's body closes (Closes #N) and applies the sameflowOnlyHoldscheck that #6393 uses for builders. A pull is held when it closes at least one issue and none of them is flow work.test/requested.test.ts. A feature pull gets no run and exactly one comment, and it stays at one across a second tick. A flow-labelled pull gets a run. After the switch goes off, the feature pull gets a run.Left out:
Closes #6446