Voting¶
Retired. Proposal P-01 was selected without a vote on 2026-09-14 (ADR-0004). The vote stays retired after the group was reinstated on 2026-09-15 (ADR-0006); a topic change now goes through a Decision needed issue. This page is kept as the record of the original process.
How to use: one ballot per member, submitted as a pull request. The vote closes 2026-09-15 23:59.
Steps¶
- Read every open issue with the
proposallabel. Ask questions in the issue comments before voting. - Copy
TEMPLATE-ballot.ymltoballots/<your-github-handle>.yml(lowercase handle, no@). - Fill in:
ranking: proposal issue numbers, best first. Leave out any proposal you consider unacceptable.scores: for every proposal you ranked, a 1 to 5 score on each criterion (feasibility,data_fit,rubric_fit,interest,low_risk). 5 is best in every case (forlow_risk, 5 means very low risk).comment: optional, one or two lines on your reasoning.- Run
python scripts/tally_votes.pylocally to check your ballot parses (it prints problems). - Open a PR titled
vote: <handle>on a branchprocess/vote-<handle>. The tally workflow comments the current standings on the PR. Another member merges it (do not merge your own ballot).
Rules¶
- One ballot per member. A second file from the same voter is rejected by the tally.
- You may change your ballot with a follow-up PR before the deadline.
- Ballots are public inside the team. That is intentional: the rationale is part of the decision record.
- The Scrum Master runs the final tally at kickoff and commits
docs/proposals/RESULTS.md.
Counting method¶
Instant runoff on ranking (majority of active ballots wins; the candidate with fewest first preferences is eliminated each round). Ties are broken by the weighted-criteria score (weights in project.yml), then Borda count. The full algorithm is in src/msr_pipeline/voting.py and is unit-tested.