Repository navigation
fix(release-vote-tally): keep email-only roster voters distinct - #1913
Merged
potiuk merged 1 commit intoOct 30, 2026
Merged
Conversation
Roster membership can resolve through Primary email without an Apache ID. Using the empty ID as a shared identity let different members supersede each other, causing both missing approvals and missing dissenting votes. Use the existing normalized-address identity when the Apache ID is absent. Keep roster-ID identities, binding resolution, and pass rules unchanged. Generated-by: Codex (GPT-6)
potiuk
approved these changes
Oct 30, 2026
potiuk
left a comment
Member
There was a problem hiding this comment.
The fix is correct: parse_roster keeps email-only rows, so _identity used to give every one of them the same roster: key and their votes superseded each other; guarding on apache_id as resolve_binding already does keeps them distinct, and the tests cover the false fail, the mixed-roster false pass, a changed vote and the CLI path.
This review was drafted by an AI-assisted tool and
confirmed by an Apache Magpie maintainer. The maintainer
approving this PR has read the findings and signed off. If
something feels off, please reply on the PR and a maintainer
will follow up.More on how Apache Magpie handles maintainer review:
Contributing guide.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
Type of change
tools/release-management)Test plan
Local checks run on upstream baseline
6fafad25with this patch, in Linux / Python 3.12:prek run --all-files --skip workspace-pytestpasses, including whole-tree link, symlink and static checks.prek run workspace-pytest --from-ref origin/main --to-ref HEADpasses.The seven new cases cover all four mechanisms, repeat votes with casing/display-name changes and reverse timestamps, mixed-roster dissent, and the CLI reviews/login-map/result-render path. The unspecified mechanism results remain null.
RFC-AI-0004 compliance
Linked issues
Closes #1912.
Notes for reviewers
The two changed files are byte-identical to the patch reviewed by the contributor at
1089c512; only the upstream base and resulting commit SHA differ.Prior Windows / Python 3.14 validation of the same package contents reports 716 passing tests and two baseline failures (11 subtests passed), with UTF-8 and Git Bash on PATH. The baseline reports 709 passing tests and the same two failures: the custom-build archive tree note, and a native Windows subprocess-to-sh argument round trip involving a literal backslash followed by $HOME. Passing the quoted command through shell standard input succeeds. These platform failures do not involve voter identity; Windows compatibility and audit-report handle resolution are outside this PR.
CodeQL's optional aggregate can be neutral when the existing path-based workflow omits the Actions-language configuration for a Python-only diff. The Python analysis and required checks are evaluated separately; upstream CI will be checked for this PR's own HEAD.
Suggested labels:
bug,family:release-management,capability:fix.AI disclosure and author review
AI assistance: Codex (GPT-6). The contributor has completed review of the patch and validation results. The commit carries a
Generated-by:trailer; no AI co-author is declared.