name: vote-severity description: Phase 4 — Run multi-model severity voting on confirmed issues. Writes votes.json next to each issue (append-only). user-invocable: true allowed-tools: Bash, Read, Write, Edit, Glob
Phase 4: Multi-Model Severity Voting
Run from the repo root. Requires investigated and deduplicated issues from Phases 2-3.
Execute severity voting
Look for the roboree scripts path in the system prompt (it will say "roboree scripts are at:
python <r2-scripts-path>/vote_severity.py \
--review-dir .review/ \
--config .review/config.json
The script:
- Finds all confirmed, canonical issues (using
dedup.jsonif present) - Skips issues that already have
votes.json(resumable) - Runs an edsl cross-product: issues x models (from config)
- Writes
votes.jsonnext to eachissue.json - Writes a top-level
.review/severity.jsonsummary
Output
Per-issue — votes.json written next to issue.json:
{
"votes": [
{"model": "claude-sonnet-4-6", "severity": "major", "reasoning": "..."},
{"model": "gpt-4o", "severity": "major", "reasoning": "..."},
{"model": "gemini-2.5-pro", "severity": "moderate", "reasoning": "..."}
],
"consensus": "major",
"agreement": 0.67,
"voted_at": "<ISO timestamp>"
}
Top-level — .review/severity.json:
{
"issues": {
"chunks/model-00-a3f2/undefined_symbols": {"severity": "major", "agreement": 0.67}
},
"summary": {"major": 3, "moderate": 5, "minor": 2},
"voted_not_an_issue": ["chunks/intro-00-b7c1/logical_gaps"],
"created_at": "<ISO timestamp>"
}
Issues voted not_an_issue are NOT moved or deleted — they simply have a votes.json with "consensus": "not_an_issue" and are listed in the voted_not_an_issue array.
After completion
git add -A
git commit -m "review: severity voting — <M> major, <Mo> moderate, <Mi> minor"
Report: breakdown by severity, any issues rejected as not_an_issue.