Files
JokerComboAdvisor/AUDIT.md
T
funman300 8ce5619273 Chase the audit's leads: verify, implement, or reject
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>
2026-07-14 12:36:01 -07:00

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 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_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