Skip to content

docs: approval percentage counts all votes cast, not Approve + Reject - #23

Merged
mcfarhat merged 1 commit into
developfrom
docs/canon-approval-denominator
Aug 11, 2026
Merged

mcfarhat merged 1 commit into
developfrom
docs/canon-approval-denominator

Conversation

@mcfarhat

Copy link
Copy Markdown
Contributor

Corrects §4.2 of docs/planning/product-world-ux.md to match the ruling made today and already implemented in #22.

Why

The MVP canon rule counted different populations in its two halves:

  • quorum — "at least 5 total internal votes" → all four vote choices
  • approval — "count Approve against Approve + Reject" → only two

Measured against the implementation before the fix:

1 approve, 4 needs_revision      total=5  denom=1  bps=10000 -> APPROVED_FOR_PUBLICATION
1 approve, 4 alternate_timeline  total=5  denom=1  bps=10000 -> APPROVED_FOR_PUBLICATION
5 approve, 20 needs_revision     total=25 denom=5  bps=10000 -> APPROVED_FOR_PUBLICATION

So one supporter and four people asking for revision canonized a contribution permanently on Hive mainnet, and five supporters beat twenty dissenters. It also meant a voter choosing Needs Revision had less effect on the outcome than one voting Reject — penalising the more constructive option.

What changed

Approval now counts Approve against all votes cast. Both halves of the rule count the same population. With the new denominator:

1 approve, 4 needs_revision   -> 2000bps -> NEEDS_REVISION   (blocked)
5 approve, 20 needs_revision  -> 2000bps -> NEEDS_REVISION   (blocked)
4 approve, 1 needs_revision   -> 8000bps -> APPROVED         (still passes)
7 approve, 3 reject           -> 7000bps -> APPROVED         (boundary intact)

The trade-off Mohammad accepted: Needs Revision now behaves arithmetically like a soft Reject, with the distinction carried by the feedback rather than the maths.

Note

Docs-only, one line changed plus an inline note recording why, so the next person doesn't reimplement the original rule from the source of truth. The code change is already in #22 (canon-voting-policy.ts), verified across all seven boundary cases, with a regression test named "constructive dissent prevents approval instead of disappearing from the denominator".

🤖 Generated with Claude Code

The MVP canon rule counted different populations in its two halves: the
quorum counted all four vote choices, while the approval percentage
counted only Approve + Reject.

Measured against the implementation, that let 1 Approve + 4 Needs
Revision satisfy both conditions and canonize permanently on-chain, and
5 Approve + 20 Needs Revision did the same. It also meant a voter
choosing Needs Revision had less effect on the outcome than one voting
Reject, penalising the more constructive option.

Decision by Mohammad, 2026-08-11: count every vote cast in the
denominator so both halves of the rule count the same population.
Already implemented in PR #22.

Co-Authored-By: Claude <noreply@anthropic.com>
@github-actions

Copy link
Copy Markdown

Vercel preview is ready:

https://hivelore-c2cg8moza-kareemn1936s-projects.vercel.app

Commit: e6a6aee

@mcfarhat
mcfarhat merged commit 457fffe into develop Aug 11, 2026
2 checks passed
@mcfarhat
mcfarhat deleted the docs/canon-approval-denominator branch August 11, 2026 15:52
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant