Grouped because each is a one-line fix. Full reasoning in docs/notes/2026-08-20-plan-3a-review-triage.md under "LOW". Split out any one that turns out to be bigger.
- The "waiting" notice is suppressed for the life of the process —
supervisor.rb:249
- The cursor stores
created_at but since filters updated_at — poller.rb:154
- An item with no repository or number is dropped with no trace —
poller.rb:196
no_route is a fourth event state the schema does not document — poller.rb:126
want writes a decision an unconfigured board can never act on — board.rb:37
MILL_BIND= binds nowhere — config/puma.rb:4
- The rate-limit block message is off by one and names the wrong stage —
runner.rb:163
require './app' creates ~/.mill and opens the database — app.rb:20
- A trailing slash on
origin makes a clone invisible — repo.rb:31 (tracked with the Repo.slug issue)
rate_limit_pause calls .to_i on an unvalidated field — runner.rb:183
Grouped because each is a one-line fix. Full reasoning in
docs/notes/2026-08-20-plan-3a-review-triage.mdunder "LOW". Split out any one that turns out to be bigger.supervisor.rb:249created_atbutsincefiltersupdated_at—poller.rb:154poller.rb:196no_routeis a fourth event state the schema does not document —poller.rb:126wantwrites a decision an unconfigured board can never act on —board.rb:37MILL_BIND=binds nowhere —config/puma.rb:4runner.rb:163require './app'creates~/.milland opens the database —app.rb:20originmakes a clone invisible —repo.rb:31(tracked with theRepo.slugissue)rate_limit_pausecalls.to_ion an unvalidated field —runner.rb:183