` instances for drag-to-reorder
+ - Resolved list view: plain `` with `` — rank badges visible, drag handles hidden
+ - Grid view: existing `` grid with `rank={index + 1}` passed to each card
+ - `tempItems` state: holds in-progress drag order, falls back to `thread.candidates` when null
+ - `handleDragEnd`: fires `reorderMutation.mutate({ orderedIds })` and clears tempItems on settled
+ - `useEffect` clears tempItems when `thread?.candidates` reference changes (fresh server data)
+
+### Task 3: Human verification (auto-approved — auto_chain_active)
+
+## Deviations from Plan
+
+### Auto-fixed Issues
+
+**1. [Rule 2 - Missing] Added pros/cons fields to CandidateWithCategory in useThreads.ts**
+- **Found during:** Task 1 (needed by CandidateListItem)
+- **Issue:** `CandidateWithCategory` interface in `useThreads.ts` was missing `pros` and `cons` fields added in Phase 10. CandidateListItem needed these to render the "+/- Notes" badge.
+- **Fix:** Added `pros: string | null` and `cons: string | null` to the interface
+- **Files modified:** `src/client/hooks/useThreads.ts`
+- **Commit:** acfa995
+
+**2. [Rule 2 - Missing] Added style prop to LucideIcon component**
+- **Found during:** Task 1 (needed by RankBadge for medal colors)
+- **Issue:** LucideIcon only accepted `className` for styling; RankBadge needed inline `style={{ color }}` for gold/silver/bronze hex colors not achievable via Tailwind
+- **Fix:** Added optional `style?: React.CSSProperties` prop to LucideIcon and passed through to icon component
+- **Files modified:** `src/client/lib/iconData.tsx`
+- **Commit:** acfa995
+
+## Self-Check: PASSED
+
+All created/modified files exist. Both task commits (acfa995, 94c07e7) confirmed in git log.