# Synergy database audit Generated by `lua audit.lua --write`. Do not edit by hand. `test.lua` is the gate (it fails on what is broken). This is the map: it reports what is merely *suspicious*, and records what we already decided so the analysis does not get redone from scratch every session. ## Totals | | | |---|---| | Jokers in the database | 150 | | Famous pairs | 36 | | Clashes | 25 | | Cautions | 15 | | Themes | 31 | | Jokers in no famous pair | 102 | ## Jokers the advisor is silent about These give nothing but engine roles (Mult/Chips/xMult) and want nothing, so they score at most the generic +1 against any joker in the game. That is a legitimate answer for some of them -- but it should be a decision, not an accident. | | count | |---|---| | Silent, reviewed, staying that way | 25 | | Silent, but a lead worth chasing | 0 | | **Silent and never looked at** | **0** | ### Leads worth chasing Unverified. Check each against the Lovely dump before acting on it -- a wrong synergy is worse than a missing one. ### Reviewed, and deliberately silent - **`j_baseball`** — xMult per Uncommon joker owned. A rarity tag would have exactly one payoff, and every giver would be "is uncommon" -- noise, not synergy. - **`j_card_sharp`** — REJECTED as a clash with Obelisk. Card Sharp rewards replaying a hand and Obelisk punishes replaying your MOST played hand -- but neither destroys the other precondition; the player's hand choice does. That is an opposed incentive, not an opposed effect. Flagging it would dilute the clash signal, which only earns trust while every entry is mechanical. - **`j_cavendish`** — the reward for Gros Michel dying, not a partner - **`j_ceremonial`** — RESOLVED: it destroys the joker to its right at blind select (card.lua:2945), skipping Eternals. JCA.dagger_victim now names the joker about to die, in the tooltip, while there is still time to reorder. - **`j_chicot`** — disables the boss blind; no joker interaction - **`j_credit_card`** — lets you go negative; a money buffer, not a combo - **`j_diet_cola`** — sell for a Double Tag; tags are outside our model - **`j_glass`** — wants GLASS cards, and no vanilla joker creates them. Same trap as Steel Joker: enhance_gen is too coarse a tag to use here. - **`j_gros_michel`** — self-destructs; the trap is a CAUTION - **`j_half`** — +Mult on small hands; no joker cares - **`j_ice_cream`** — decays; the trap is a CAUTION - **`j_joker`** — plain +Mult; interacts with nothing - **`j_loyalty_card`** — xMult every 6 hands; no joker interaction - **`j_luchador`** — sell to disable a boss; no joker interaction - **`j_misprint`** — random +Mult; interacts with nothing - **`j_mr_bones`** — death insurance; no joker interaction - **`j_obelisk`** — The trap is real but it is a CAUTION ("resets on your most played hand"), not a set of pairwise clashes. See j_card_sharp. - **`j_popcorn`** — decays; the trap is a CAUTION - **`j_red_card`** — +Mult per skipped booster; no joker interaction - **`j_ride_the_bus`** — scales on face-free hands; the traps are CLASHES - **`j_ring_master`** — Showman allows duplicates in the shop pool. We have no tag for pool effects, and one joker does not justify inventing one. - **`j_steel_joker`** — wants STEEL cards. The only enhance_gen givers make Gold (Midas) and Stone (Marble), so tagging it enhance_gen would invent a synergy that does not exist. No vanilla joker creates Steel cards. Leave it alone. - **`j_stuntman`** — big chips, -2 hand size; the trap is a CAUTION - **`j_supernova`** — REJECTED as an Obelisk clash for the same reason as j_card_sharp - **`j_throwback`** — xMult per skipped blind; no joker interaction ## Tag health A tag with one member can never fire (it takes two jokers to make a synergy). A tag with two is fragile: drop either joker and the theme dies. | tag | givers | wanters | jokers | theme? | |---|---|---|---|---| | `card_gen` | 3 | 2 | 5 | yes | | `clubs` | 3 | 4 | 4 | yes | | `copy_target` | 10 | 3 | 13 | yes | | `diamonds` | 2 | 2 | **2** | yes | | `discards_up` | 2 | 8 | 10 | yes | | `enhance_gen` | 2 | 2 | 4 | yes | | `faces` | 1 | 9 | 10 | yes | | `flush` | 5 | 4 | 6 | yes | | `four_kind` | 2 | 1 | **2** | yes | | `gold_gen` | 1 | 1 | **2** | yes | | `hand_size` | 3 | 4 | 7 | yes | | `hands_up` | 1 | 1 | **2** | yes | | `hearts` | 2 | 2 | **2** | yes | | `joker_gen` | 1 | 3 | 4 | yes | | `money` | 15 | 3 | 17 | yes | | `pair` | 4 | 3 | 4 | yes | | `planet` | 3 | 3 | 3 | yes | | `probability` | 1 | 7 | 8 | yes | | `retrig_faces` | 1 | 10 | 11 | yes | | `retrig_held` | 1 | 4 | 5 | yes | | `retrig_low` | 1 | 11 | 12 | yes | | `retrig_scoring` | 4 | 16 | 20 | yes | | `sell_value` | 2 | 2 | 4 | yes | | `spades` | 2 | 3 | 3 | yes | | `spectral_gen` | 2 | 2 | **2** | yes | | `stone_gen` | 1 | 1 | **2** | yes | | `straight` | 7 | 6 | 8 | yes | | `suit_flex` | 1 | 11 | 12 | yes | | `tarot_gen` | 6 | 2 | 7 | yes | | `three_kind` | 4 | 3 | 4 | yes | | `two_pair` | 3 | 3 | 3 | yes | ## Load-bearing jokers The jokers that appear in the most scoring relationships. If one of these is mis-tagged, the error is spread across the whole database. | joker | partners scoring >= 2 | |---|---| | `j_dusk` | 16 | | `j_hanging_chad` | 16 | | `j_selzer` | 16 | | `j_smeared` | 16 | | `j_splash` | 16 | | `j_to_the_moon` | 16 | | `j_bootstraps` | 15 | | `j_bull` | 15 | | `j_four_fingers` | 12 | | `j_seance` | 12 | | `j_sock_and_buskin` | 12 | | `j_blueprint` | 11 | Jokers with **no** partner scoring >= 2 anywhere in the game: 25