dubbodeck: assemble each sig pile per-segment from the contributing seat's own deck (cross-deck), not one shared deck — TDD

Each polarity's 18-card sig pile now assembles from THREE seats by segment, each FROM THAT SEAT'S OWN deck: CROWNS/BRANDS courts (8) from the cb role's deck, GRAILS/BLADES courts (8) from the gb role's, majors 0/1 (2) from the tr role's — levity cb/gb/tr = PC/SC/NC, gravity = BC/AC/EC. So an RWS King of Grails (SC seat) can sit beside a Minchiate Queen of Wands (PC seat) in one levity pile, each carrying its own deck_variant -> per-card face/back art, NO schema change (cards already carry deck_variant).

- models.py: new _POLARITY_SEGMENT_ROLES + _seat_deck_for_role + _court_cards + _major_cards + _polarity_sig_cards. A missing seat/deck falls back to _room_deck_variant, so a single-deck (or CARTE-solo) room assembles the IDENTICAL 18-card pile it always did (16 courts + 2 majors). sig_deck_cards is now the UNION of both polarity piles (note-unfiltered) -> select_sig's pick validation (views.py:1664) accepts a card from EITHER deck/polarity with no view change. Dropped the now-dead _sig_unique_cards; _sig_unique_cards_for_deck stays for personal_sig_cards (my_sign, single equipped deck).

- TDD: DubbodeckAssemblyTest (4 ITs) — levity grails/blades come from the SC seat's distinct deck while crowns/brands stay earthman; the gravity pile is unaffected by a levity-seat deck; the validation set spans both decks; CARTE-solo one-deck feeds BOTH polarity piles sharing pks (no cross-polarity dedup). Existing SigDeckCompositionTest (36/16/16/4) + SigCardHelperTest (single-deck counts, note unlocks, share-pks, empty fallback) green — single-deck behavior preserved. 736 epic+drama ITs green.

- bundled (parallel work): rootvars.scss ongoing palette tuning.

[[project-deck-segment-model]] [[project-image-based-deck-face-rendering]]

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
Disco DeDisco
2026-06-08 19:53:45 -04:00
parent 6f1729010f
commit b4ffab186e
3 changed files with 143 additions and 31 deletions

View File

@@ -296,7 +296,7 @@
--terMrb: 115, 116, 117;
--quaMrb: 85, 86, 87;
--quiMrb: 55, 56, 57;
--sixMrb: 25, 26, 27;
--sixMrb: 35, 36, 37;
// flaming porphyry (Satisfaction)
--priPhy: 250, 105, 116;
--secPhy: 200, 85, 92;
@@ -306,7 +306,7 @@
--sixPhy: 66, 20, 32;
// threshold of adamant (Absolution)
--priAdm: 35, 40, 43;
--secAdm: 75, 81, 84;
--secAdm: 65, 71, 74;
--terAdm: 119, 131, 135;
--quaAdm: 164, 180, 186;
--quiAdm: 197, 213, 228;
@@ -329,7 +329,7 @@
--priBfp: 255, 92, 43;
// Animal Bundle
// • amber (clear honey)
--priClh: 238, 160, 70;
--priClh: 218, 145, 60;
--secClh: 255, 216, 171;
// • pink (common)
--terClh: 238, 70, 148;
@@ -347,7 +347,7 @@
/* Lord Baltimore Hues */
// yellow
--priBlt: 235, 191, 0;
--secBlt: 187, 147, 52;
--secBlt: 137, 107, 32;
// white
--terBlt: 255, 255, 255;
// --quaBlt: ;
@@ -359,7 +359,7 @@
--octBlt: 157, 34, 53;
// orange
--ninBlt: 221, 73, 38;
// --decBlt: ;
--decBlt: 181, 57, 30;
// Felt values
--undUser: var(--priFor);
@@ -420,16 +420,16 @@
}
/* Torre Terrestre Palette */
.palette-terrestre {
--priUser: var(--priAdm);
--priUser: var(--sixMrb);
--secUser: var(--quaAdm);
--terUser: var(--sixAdm);
--quaUser: var(--priPhy);
--quiUser: var(--quiPhy);
--sixUser: var(--terPer);
--sepUser: var(--quaMrb);
--sepUser: var(--secAdm);
--octUser: var(--priPer);
--ninUser: var(--sixPer);
--decUser: var(--terMrb);
--decUser: var(--priMrb);
}
/* Fantastia Celestia Palette */
.palette-celestia {
@@ -438,8 +438,8 @@
--terUser: var(--terClh);
--quaUser: var(--decClh);
--quiUser: var(--ninClh);
--sixUser: var(--sepClh);
--sepUser: var(--priClh);
--sixUser: var(--priClh);
--sepUser: var(--sepClh);
--octUser: var(--quaClh);
--ninUser: var(--secClh);
--decUser: var(--quiClh);
@@ -454,10 +454,10 @@
--secUser: var(--sixBlt);
--terUser: var(--ninBlt);
--quaUser: var(--priBlt);
--quiUser: var(--terMze);
--sixUser: var(--quiBlt);
--quiUser: var(--secBlt);
--sixUser: var(--ninBlt);
--sepUser: var(--quiBlt);
--octUser: var(--quiBlt);
--octUser: var(--decBlt);
--ninUser: var(--terBlt);
--decUser: var(--quiBlt);
}