96a00d0d0c
test.lua is the gate -- it fails on what is broken. This is the map: it reports what is merely suspicious, and (the actual point) it REMEMBERS. 32 jokers score ~0 against all 150: they give nothing but engine roles and want nothing, so the advisor has nothing to say about them. For most that is the correct answer, but I have now worked that question out from scratch twice, and the reasoning evaporated both times. VERDICTS records the conclusion for each one, so an audit only surfaces what is new. It preserves the traps: Steel Joker and Glass Joker look exactly like Blue Joker and Abstract Joker did, but they want Steel/Glass cards specifically, and the only enhance_gen givers make Gold and Stone -- so "fixing" them would invent a synergy that does not exist. That is written down now instead of being rediscovered. It also preserves the leads not yet chased (Ceremonial Dagger's positional destroy, Erosion vs the card-adders, Burglar + Ramen and Green Joker, Chaos + Flash Card), marked candidate because they are unverified. A newly-silent joker lands in "never looked at" and fails the audit until someone decides. AUDIT.md is committed so the map is readable without running anything. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
132 lines
6.1 KiB
Markdown
132 lines
6.1 KiB
Markdown
# 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 | 32 |
|
|
| Clashes | 22 |
|
|
| Cautions | 15 |
|
|
| Themes | 29 |
|
|
| Jokers in no famous pair | 108 |
|
|
|
|
## 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 | 20 |
|
|
| Silent, but a lead worth chasing | 12 |
|
|
| **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.
|
|
|
|
- **`j_baseball`** — xMult per Uncommon joker owned. We have no rarity tag, and adding one for a single payoff may not earn its keep.
|
|
- **`j_card_sharp`** — xMult when the hand type was already played this round -- it rewards repeating one hand, which is exactly what Obelisk punishes. Clash?
|
|
- **`j_ceremonial`** — positional like Blueprint: it DESTROYS the joker to its right. JCA.copy_source already reads board order -- the same machinery could warn "will destroy your Baron" before it eats something irreplaceable.
|
|
- **`j_chaos`** — free reroll each shop; see j_flash
|
|
- **`j_erosion`** — +Mult per card BELOW 52 in the deck, so it is the inverse of card_gen: DNA/Marble/Certificate permanently shrink it. Likely CLASHES, and possibly a synergy with anything that destroys cards (Trading Card).
|
|
- **`j_flash`** — +Mult per shop reroll. Chaos the Clown grants a free reroll each shop, which would give both of them a reason to exist (Chaos is inert today).
|
|
- **`j_green_joker`** — +Mult per hand, -Mult per discard: Burglar removes discards entirely. Same shape as the existing Burglar + Mystic Summit pair.
|
|
- **`j_obelisk`** — resets on your most-played hand, so it fights every hand-type build. Has a CAUTION already; the pairwise clashes may be worth adding.
|
|
- **`j_ramen`** — xMult decays per card discarded, so Burglar (zero discards all run) stops the decay dead. Likely a famous pair.
|
|
- **`j_ring_master`** — Showman allows duplicates in the pool. Enables copy/duplicate strategies, but we have no tag for "shop pool" effects and inventing one for a single joker is probably not worth it.
|
|
- **`j_square`** — +Chips on exactly-4-card hands; Four Fingers makes 4-card flushes and straights playable. Needs a tag that does not exist yet.
|
|
- **`j_supernova`** — Mult scales with times the hand was played; see j_card_sharp
|
|
|
|
### Reviewed, and deliberately silent
|
|
|
|
- **`j_cavendish`** — the reward for Gros Michel dying, not a partner
|
|
- **`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_mystic_summit`** — already paired with Burglar (zero discards, max Mult)
|
|
- **`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_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_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: 30
|
|
|