| id |
title |
status |
assignee |
created_date |
labels |
dependencies |
references |
priority |
| TASK-147 |
Delegation-weighted voting mode for rVote |
To Do |
|
2026-04-16 18:56 |
| rvote |
| governance |
| power-indices |
|
|
| modules/rvote/mod.ts |
| src/encryptid/power-indices.ts |
|
high |
Description
Optional voting mode where conviction vote weight is multiplied by the voter's Shapley-Shubik index.
What
Currently rVote uses credit-based quadratic voting (1 vote = 1 credit, 2 = 4 credits). Add an optional space-level toggle: "delegation-weighted voting" where each vote's effective weight = creditWeight × shapleyShubikIndex. This lets delegated authority flow into proposal ranking.
Primitive: Power Weight Multiplier
- New field in space voting config:
weightMode: 'credits-only' | 'delegation-weighted'
- When
delegation-weighted: fetch voter's power index at vote time
effectiveWeight = creditWeight × (1 + shapleyShubik × delegationMultiplier)
- Default
delegationMultiplier = 2.0 (configurable per space)
- Fallback: if no power index data, effectiveWeight = creditWeight (graceful degradation)
Implementation
modules/rvote/mod.ts: In POST /api/proposals/:id/vote handler, check space config
- If delegation-weighted: fetch from EncryptID
/api/power-indices/:did?space={space}
- Multiply vote weight before storing in Automerge doc
- Display in UI: "Your vote: 3 credits × 1.4x delegation = 4.2 effective weight"
- ~50 lines server, ~20 lines UI display
Acceptance Criteria