Core objects
CardRecord = (name, qty, role, behavior_tag, mode_tags, tags, notes)
Deck = multiset of CardRecord
Run = (deck, config, scores, tensors, timestamps)
Offline-first scoring uses the fields you provide. Oracle text is optional enrichment (Phase 2+).
Composite score
DD = ( Σ_i w_i · D_i ) / ( Σ_i w_i )
Intel = Σ_i p^I_i · D_i
Wis = Σ_i p^W_i · D_i
Weights w_i and projections p are configurable.
Deck shape statistics
Entropy(counter) = - Σ p(x) log2 p(x)
Gini(qty) = dispersion of copy counts (singleton āThunderdomeā vs redundancy)
Shape stats are important: a deckās identity is often more about distribution than power.
Overcommit tensor (v0.2-inspired)
A general tensor for āpaying a drain and converting it into advantageā. This isnāt limited to Mercy effects: it models any planned tempo debt.
Drain(L,r) = (1-r)L
U(mode,L,r) = -Drain(L,r) + α·Gain(mode)
Asset iff U > 0