Finished CI results are now asked about again every fourth scheduled refresh, instead of 10 minutes after they were fetched. That's hourly at the default 15-minute poll. With refreshes every 30 seconds or so on busy repos, a fixed 10 minutes meant asking every spindle about every finished PR several times an hour. The recheck exists only so a retried pipeline shows up, so it now follows the poll interval (pollMs in protocol.js). The cutoff is half a poll short of four, so timer jitter can't stretch it to five. Runs in progress and PRs with no cached result are asked about as before, and a new revision still drops a PR's cached results.
Diagnostics, in --diagnostics and Settings, now show how many finished results are cached ("… patches · N finished CI"). README and DESIGN describe the new recheck timing.
This is the version that came out of review of #26: the swarm stopped before resubmitting it, so #26 merged with the 10-minute rule. tests/ci-cache.test.js covers the cutoff at different poll intervals. 87 tests pass, and the typecheck passes.
🤖 Generated with Claude Code