--- id: TASK-150 title: Coalition simulator UI status: To Do assignee: [] created_date: '2026-04-16 18:57' labels: - rnetwork - governance - power-indices dependencies: - TASK-144 references: - src/encryptid/power-indices.ts - modules/rnetwork/components/folk-graph-viewer.ts priority: low --- ## Description Interactive coalition builder using the existing `/api/power-indices/simulate` endpoint. ## What Let users select a group of voters and instantly see: "Can this coalition pass a vote? Who is the swing voter?" Uses the simulate endpoint already built in TASK-144. ## Primitive: Coalition Picker Component - New `` element (or inline in power panel) - Checkbox list of top N voters (sorted by Banzhaf) - As checkboxes toggle: POST to simulate endpoint, show result: - ✅ "Winning coalition (67% of weight, needs 50%+1)" - Per-member: "Alice: swing voter ⚡" / "Bob: not swing (coalition wins without them)" - "Add 1 more voter to win" suggestion when losing ## Implementation - Can be embedded in the power panel of `folk-graph-viewer.ts` as a collapsible section - Or standalone `folk-coalition-sim.ts` for embedding in delegation manager - POST `/rnetwork/api/power-indices/simulate` with `{ space, authority, coalition: [did1, did2...] }` - Response already returns `isWinning`, `marginalContributions[].isSwing` - ~80 lines, zero backend changes (endpoint exists) ## Acceptance Criteria - [ ] #1 Checkbox selection of voters from top-N list - [ ] #2 Live POST to simulate endpoint on selection change - [ ] #3 Shows winning/losing status with weight vs quota - [ ] #4 Identifies swing voters in the coalition - [ ] #5 Suggests minimum additions to form winning coalition