rspace-online/backlog/tasks/task-147 - Delegation-weigh...

1.9 KiB
Raw Permalink Blame History

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
TASK-144
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

  • #1 Space config toggle: credits-only vs delegation-weighted
  • #2 Vote weight multiplied by Shapley-Shubik when delegation-weighted
  • #3 Multiplier configurable per space (default 2.0)
  • #4 UI shows breakdown: credits × delegation multiplier = effective
  • #5 Graceful fallback to credits-only when no power data