From fd9da98abf2661323a38fbe5b02ca002493d13a4 Mon Sep 17 00:00:00 2001 From: cndgrr <59120057+cndgrr@users.noreply.github.com> Date: Mon, 3 Aug 2026 23:40:48 +0000 Subject: [PATCH] docs(labels): the evidence clock names what the sweep actually reads "a comment, a review or a commit" is the ruling nudge's house phrasing and false on the issue surface twice over: there is no review or commit fact in what the sweep reads, and an assignment is no longer counted here. Say what is read, and say what does not buy another 7 days of silence. Refs #254 --- LABELS.md | 15 +++++++++------ changelog.d/254.md | 10 ++++++---- test/issueflow-reconcile.test.sh | 1 + 3 files changed, 16 insertions(+), 10 deletions(-) diff --git a/LABELS.md b/LABELS.md index 7f62a58..406455c 100644 --- a/LABELS.md +++ b/LABELS.md @@ -69,12 +69,15 @@ that the claim is released and that triage owes a follow-up naming the owner and wake condition for completion. Triage writes that full transition comment in the same tick when it or the operator makes the move by hand. The sweep never reclaims `post-merge`: weeks of quiet can be the state working. It does -make the quiet visible — after 7 days without a comment, a review or a commit -the sweep posts one nudge naming the triage actor, saying the wake evidence is -owed and linking the item. Which criterion starved is prose the machine never -judges; the link is the payload. Like the ruling nudge it carries no -idempotency marker on purpose — the comment is itself activity, so the rule -self-rate-limits to one nudge per 7 quiet days — and it writes no label. +make the quiet visible — after 7 days with no comment on the issue, the sweep +posts one nudge naming the triage actor, saying the wake evidence is owed and +linking the item. Only a comment resets that clock: label churn does not, and +neither does an assignment, which is the claim clock's fact and on this queue +state is the invalid composition flagged below. Which criterion starved is +prose the machine never judges; the link is the payload. Like the ruling nudge +it carries no idempotency marker on purpose — the comment is itself activity, +so the rule self-rate-limits to one nudge per 7 quiet days — and it writes no +label. `post-merge` never composes with `blocked`; the transition comment carries the wait. It never composes with `attention`, because releasing the claim clears diff --git a/changelog.d/254.md b/changelog.d/254.md index 4b0761e..92ca2d5 100644 --- a/changelog.d/254.md +++ b/changelog.d/254.md @@ -1,9 +1,11 @@ ### Added -- A `post-merge` item with no comment, review or commit for 7 days now draws - one nudge from the issue sweep: the wake evidence is owed. A starving - criterion used to be found only when someone happened to run the right read - (#254). +- A `post-merge` item with no comment for 7 days now draws one nudge from the + issue sweep: the wake evidence is owed. A starving criterion used to be + found only when someone happened to run the right read (#254). +- Label churn does not reset that clock, and neither does an assignment: on + `post-merge` an assignee is an invalid composition, not activity, and it + must not buy the item another 7 days of silence (#254). - The nudge names the triage actor from `triage-actors=`, not the human reviewer: `post-merge` is triage's completion queue, so the starved wake condition is triage's to answer (#254). diff --git a/test/issueflow-reconcile.test.sh b/test/issueflow-reconcile.test.sh index 7c9fde9..a1b9486 100644 --- a/test/issueflow-reconcile.test.sh +++ b/test/issueflow-reconcile.test.sh @@ -749,6 +749,7 @@ check "the claim clock counts the assignment, the evidence clock the comment" 0 "$((INOW - 3600)) $((INOW - 5 * 86400))" printf '%s\n' "$two_clocks" # One body, two callers: a second activity computation is the drift the # reuse exists to prevent, so the timeline read has exactly one spelling. +# shellcheck disable=SC2016 # the read is asserted as a literal, unexpanded check "the timeline read is not respelled for the evidence clock" 0 "1" \ grep -c 'issues/\$n/timeline' \ "$ROOT/actions/issueflow-reconcile/issueflow-reconcile.sh"