Repository navigation
[WIP] Remind an assignee midweek when feedback stays unanswered #129
Description
Overview
The sweep unassigns a contributor with no warning. The first message they receive is the
unassignment itself. With the limit dropping to 14 days in #128, a contributor who misses one
week of feedback loses the issue.
Add a midweek reminder. It comments when feedback stays unanswered, and it names what it waits
for and the date the assignment ends.
Context
#128 defines inactivity as feedback that the assignee left unanswered. That gives the reminder a
clean trigger, because the same helper returns the pending feedback and its age.
The reminder posts a bot comment. Under #128 a bot comment starts no clock and answers nothing,
so the reminder never extends the assignment it warns about. Today it would, because the sweep
reads issue.updated_at.
The Change
Add an inactivity-reminder automation. A new script, a new leaf, and a registry entry on a
Thursday cron, 1 0 * * 4. The sweep stays on Monday.
Comment when feedback stays unanswered for INACTIVITY_WARNING_DAYS, set to 7 in
scripts/constants.js. The reminder reads the pending feedback helper that #128 exports, so the
sweep and the reminder agree on the number.
Name the feedback and the deadline. The comment links the comment or review that waits for an
answer, and it states the date the assignment ends. It asks for a commit or a pull request, not
for a confirmation of interest, because under #128 a comment only delays the removal by
COMMENT_GRACE_DAYS and never answers the feedback.
Post at most once a week per issue. The comment carries an INACTIVITY_REMINDER marker, and
the script uses the existing hasRecentBotComment helper to skip an issue it already warned.
Use the same exemptions as the sweep. Organization members and site admins are skipped.
Cadence
Removal runs Monday at 14 days, and the reminder runs Thursday at 7 days:
| Range | |
|---|---|
| Notice before removal | 4 to 11 days |
| Unanswered feedback to removal | 14 to 20 days |
A comment from the assignee adds the COMMENT_GRACE_DAYS window from #128, so the upper figure
becomes 27 days in that case.
The spread comes from the weekly crons. Feedback that lands on a Tuesday waits until day 20,
because day 13 is a Monday and the limit is not met yet. Running both daily makes it exactly 7
days of notice and removal at 14. The sweep job took 14 seconds on kolibri on 2026-10-26, so
cost is not the obstacle.
Out of Scope
- Changing
INACTIVITY_DAYSor what counts as an answer. Both belong to [WIP] Measure inactivity as unanswered feedback to the assignee #128. - Reminding anyone other than the assignee.
- Any reminder on a pull request that carries no linked issue.
Acceptance Criteria
- An assignee with feedback unanswered for 7 days receives a comment.
- The comment links the feedback it waits for and states the date the assignment ends.
- An assignee with no feedback pending receives nothing.
- An assignee waiting on review receives nothing.
- The reminder posts at most once a week on one issue.
- The reminder does not reset the inactivity clock.
- Organization members and site admins receive nothing.
- An assignee who answers after a reminder is not unassigned.
Testing
Test in test-actions. See
testing the automations.
Dispatch the workflow by hand rather than waiting for the cron.
- Assign a contributor account, comment from the maintainer account, then dispatch the reminder.
Expect no comment, because the feedback is recent. - Backdate the feedback past 7 days and dispatch the reminder. Expect one comment that links the
feedback and names the end date. - Dispatch the reminder again. Expect no second comment.
- Dispatch the sweep. Expect no unassignment, because the limit is 14 days.
- Answer the feedback from the contributor account, then dispatch both. Expect no comment and no
unassignment.
References
#128 defines the measure this reminder reads, and it must land first. #127 covers the cooldown
after a removal.
AI usage
I used Claude Code to confirm the cron and runtime of the current sweep, to check that
hasRecentBotComment already supports a marker and a window, and to work out the notice range
that two weekly crons produce. I decided the Thursday cadence and the 7-day warning point.
Activity