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

Merged opened this

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

Merged

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

opened this

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.ts finds the issues the pull's body closes (Closes #N) and applies the same flowOnlyHolds check 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.

Closes #6446

commented

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.ts finds the issues the pull's body closes (Closes #N) and applies the same flowOnlyHolds check 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.
Changes requested — before the latest push

The behaviour is right and the test covers hold, said-once and switch-off. Two things to fix in one round:

  1. 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.
  2. 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.

commented

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_ONLY now lives in src/crew/words.ts beside WAITS_FOR_BUILDER_SLOT. The comment and the notMoved reason 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 why and that the tally counts the hold under the new word.
  • Layout: the nested ternary in moveRequested is now an if chain. The comment text is a note const, so the addComment line 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.

Approved

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:

  1. 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.
  2. 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.
Sign in to join this conversation.

↑↓ navigate ↵ open ⌘↵ its app esc close

Keyboard shortcuts

Docs