Every lead in AUDIT.md, traced to the running source and then settled. Ceremonial Dagger DESTROYS the joker to its right at blind select (card.lua:2945) and skips Eternals. The card says so; what it cannot say is WHICH of your jokers is about to die. JCA.dagger_victim names it in the tooltip -- "WILL DESTROY Baron at the next blind" -- while there is still time to reorder, and stays quiet when the neighbour is Eternal. Four jokers that scored 0 against all 150 now have partners, all verified in card.lua rather than recalled: * Burglar + Ramen: Ramen decays per discarded card and is DESTROYED at x1 (SMODS.destroy_cards). Burglar zeroes discards, so it never decays and never dies. Same for Burglar + Green Joker, which is only punished by discarding. * Trading Card + Erosion: Erosion pays per card MISSING from the deck, and Trading Card permanently destroys the card it discards. * Chaos the Clown + Flash Card: a free reroll every shop, and a joker that grows per reroll. Both were inert. Erosion is the mirror of card_gen, so it now clashes with every joker that permanently adds a card: DNA, Marble, Certificate. Rejected, with the reasoning recorded so nobody "fixes" it later: Card Sharp and Supernova reward replaying a hand and Obelisk punishes it, but neither destroys the other's precondition -- the player's hand choice does. That is an opposed incentive, not an opposed effect. The clash list only earns trust while every entry is mechanical. The audit's own silent-check was wrong: it flagged Square Joker, which has been paired with Four Fingers all along, and I duplicated that pair before the suite caught it. Silence now means no tags AND no famous pair. 711 pass locally, 10 in-game. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
5.4 KiB
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 | 29 |
| 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 partnerj_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 interactionj_credit_card— lets you go negative; a money buffer, not a comboj_diet_cola— sell for a Double Tag; tags are outside our modelj_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 CAUTIONj_half— +Mult on small hands; no joker caresj_ice_cream— decays; the trap is a CAUTIONj_joker— plain +Mult; interacts with nothingj_loyalty_card— xMult every 6 hands; no joker interactionj_luchador— sell to disable a boss; no joker interactionj_misprint— random +Mult; interacts with nothingj_mr_bones— death insurance; no joker interactionj_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 CAUTIONj_red_card— +Mult per skipped booster; no joker interactionj_ride_the_bus— scales on face-free hands; the traps are CLASHESj_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 CAUTIONj_supernova— REJECTED as an Obelisk clash for the same reason as j_card_sharpj_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_held |
1 | 4 | 5 | yes |
retrig_scoring |
6 | 16 | 22 | 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_sock_and_buskin |
18 |
j_dusk |
16 |
j_hack |
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 |
Jokers with no partner scoring >= 2 anywhere in the game: 25