Working-deck state with local drafts + cloud sync.
Scope
DeckContext/useDeck (mounted under CardDataProvider): addCard/removeCard/setQuantity/markCore/setGameplan/renameDeck/clearDeck.
deckStorage.ts — localStorage draft persistence built exactly like features/voting/lib/voteStorage.ts (inkweave:deck:* keys, safe read/write, schemaVersion).
- Debounced Supabase sync when authed (last-write-wins by
updatedAt).
- First-sign-in draft → cloud migration (idempotent, guarded by
inkweave:deck:migrated:<uid>).
Tests: deckStorage namespacing + corruption-clear; migration idempotency.
Part of #451 · Deck Builder & Engine Score milestone.
Working-deck state with local drafts + cloud sync.
Scope
DeckContext/useDeck(mounted underCardDataProvider):addCard/removeCard/setQuantity/markCore/setGameplan/renameDeck/clearDeck.deckStorage.ts— localStorage draft persistence built exactly likefeatures/voting/lib/voteStorage.ts(inkweave:deck:*keys, safe read/write, schemaVersion).updatedAt).inkweave:deck:migrated:<uid>).Tests:
deckStoragenamespacing + corruption-clear; migration idempotency.Part of #451 · Deck Builder & Engine Score milestone.