diff --git a/changelog.d/307.md b/changelog.d/307.md new file mode 100644 index 0000000..5c59de4 --- /dev/null +++ b/changelog.d/307.md @@ -0,0 +1,6 @@ +### Added + +- The issue-flow sweep's `claimed`-branch ruling pre-read is pinned: an + unassigned claim under `needs-ruling` must draw its board diagnostic and + its ruling nudge in one sweep, so a read that drifts below the diagnostic + reds instead of silently costing the escalation 7 days (#284, #307). diff --git a/test/issueflow-reconcile.test.sh b/test/issueflow-reconcile.test.sh index 1f39de6..f0231ec 100644 --- a/test/issueflow-reconcile.test.sh +++ b/test/issueflow-reconcile.test.sh @@ -945,6 +945,25 @@ check "an hour-old claim does not silence a ruling 9 days quiet" 0 "" \ check "...and the fresh assignment is not reclaim bait either" 1 "" \ grep -q 'reclaimed' <<<"$claimed_fresh" +# The claimed branch's top read, pinned. `claimed` + `needs-ruling` with no +# assignee is the one composition where this branch posts BEFORE the ruling +# block: `claim_decision` returns FLAG_UNASSIGNED and the +# `claimed-unassigned` comment goes out, so a ruling clock read down there +# would date the issue by the sweep's own writing and buy the escalation +# another 7 quiet days — the #274 hazard, on the very branch #284 D6 exists +# to hold. Probe 101 does not reach it: it carries an assignee and an open +# PR. One sweep, both outputs — the board diagnostic and the nudge it must +# not silence — because asserting only the nudge would pass with the +# diagnostic silently gone. Reds the moment the top read drifts below the +# post, and the deletion of that read is what proved it (#284 D6, #307). +ruling_quiet 110 +timeline_add 110 assigned 3600 +unassigned_flag="$(issue_probe 110 $'claimed\nneeds-ruling' 0 false)" +check "an unassigned claim under a ruling still draws its board flag" 0 "1" \ + grep -cF '' "$TMP/posted-110" +check "...and the ruling nudge fires beside it, undated by it" 0 "" \ + grep -q 'ruling nudge' <<<"$unassigned_flag" + # The clock rule alone, no assignee in the way: an assigned/unassigned pair # in the timeline is the claim's history, not activity toward the ruling. ruling_quiet 102