Fix gaps the triage sweeps hit on the backlog

Merged
JS
1d ago
+174-52

The triage sweeps missed or mishandled several cases during this week's backlog pass, and maintainers' recent review answers had no home in the skills. The issue sweep left every collaborator's issue out of unanswered, so #330, a measured proposal that ends in a decision only the maintainers can make, sat in no list. It also spent about 35 s in jq, because its lint checks ran scan and gsub over every body, which costs time quadratic in the matches. The PR sweep recognized only the fixed rebase text, so on #326 it posted that text on a head where a maintainer had already asked for a rebase in their own words an hour earlier.

The issue sweep now leaves out only the viewer's own issues and those of deleted accounts, does not count a collaborator's comments on their own issue as an answer, and counts text by code point; it takes about 5 s. The PR sweep treats any visible changes-requested review on the current head that mentions rebase as the standing request: it does not ask again, hides the older fixed-text requests, never offers that review for hiding, and keeps the PR out of stale while it conflicts. The docs record the rulings: retests build from source and post the cargo run -- --version line (#216, #221), maintainers may close a silent report before its reminder date, a contract bundle bounds a build only from below, a merged PR that cites an issue as an example is a mention, a recipe reads a failed or timed-out Actions job from statusCheckRollup (#300), and the cargo-audit stale-base rule (#304, #305, #331).

Validation: shellcheck passes on both scripts. On the live backlog the speedup commit leaves the issue sweep's output byte-identical to main, and the cleanup pass left both sweeps byte-identical. The new character counts match the old regex checks on 160 recorded bodies, and a 50,000-line body takes 0.33 s. jq fixtures cover the rebase cases: a hand-written request on the current head of a conflicting PR, the same on a PR that merges, a review that does not mention rebase, and older fixed requests beside a hand-written one. Every relative link and anchor under .claude/skills/ resolves. scripts/test.sh does not cover .claude/. Agy and Codex reviewed the diff; Codex's one finding, that stale still nudged on a hand-written rebase request, is fixed in the third commit.


Summary by cubic

Fixes the gaps the triage sweeps hit on this week's backlog pass. The issue sweep now keeps collaborator issues in unanswered—only the viewer's own and deleted accounts are excluded—and counts text by code point, cutting runtime from ~35 s to ~5 s. The PR sweep treats any visible changes-requested review on the current head that mentions rebase as the standing request, so PRs like #326 no longer get the fixed text posted beside an existing hand-written request.

Skill updates

  • Retests build from source and post the cargo run -- --version line (#216, #221); a merged PR that cites an issue as an example is a mention, not a fix.
  • Maintainers may close a silent report before its reminder date; a saved contract bundle bounds a build only from below, and one older than a fix's own only proves the build predates it, keeping the report a possible duplicate until a log names the cause.
  • The PR guide gains a recipe for reading failed or timed-out Actions jobs from statusCheckRollup, records the cargo-audit stale-base rule with its exceptions (#304, #305, #331), and tightens what counts as authorization to sweep the PRs. The collaboration guide adds updating the PR description after folding changes and answering on GitHub rather than by reply email.

Validation

  • shellcheck passes; on the live backlog the speedup commit leaves the issue sweep byte-identical to main, and the cleanup pass left both sweeps byte-identical.
  • jq fixtures cover the rebase cases: hand-written requests on conflicting and merging PRs, a review that does not mention rebase, and older fixed requests beside a hand-written one.