fix: allow theme catalog ids and refresh baseline

This commit is contained in:
matt 2025-09-27 15:53:47 -07:00
parent 33570399f0
commit c95b15ef56
4 changed files with 773 additions and 39 deletions

View file

@ -13,7 +13,11 @@ This format follows Keep a Changelog principles and aims for Semantic Versioning
- Link PRs/issues inline when helpful, e.g., (#123) or [#123]. Reference-style links at the bottom are encouraged for readability.
## [Unreleased]
_No unreleased changes._
### Changed
- Theme catalog schema now accepts optional `id` values on entries so refreshed catalogs validate cleanly.
### Fixed
- Regenerated `logs/perf/theme_preview_warm_baseline.json` to repair preview performance CI regressions caused by a malformed baseline file and verified the regression gate passes with the refreshed data.
## [2.3.0] - 2025-09-26
### Added

View file

@ -1,6 +1,7 @@
# MTG Python Deckbuilder ${VERSION}
## Summary
- Hardened theme catalog schema to accept optional IDs and refreshed the preview performance baseline to keep CI checks green.
- Delivered multi-theme random builds with deterministic cascade, strict match support, and polished HTMX/UI flows.
- Added opt-in telemetry counters, reroll throttling safeguards, and structured diagnostics exports.
- Expanded tooling, documentation, and QA coverage for theme governance, performance profiling, and seed history management.
@ -26,6 +27,9 @@
- Sidecar exports include multi-theme metadata and locked commander indicators with consistent artifact sets.
- Manual QA checklist updates and broader pytest coverage for multi-theme flows, reroll behavior, performance, and telemetry.
### Maintenance & CI
- Theme catalog schema now accepts optional IDs and the preview performance warm baseline was regenerated to restore the regression gate.
## Detailed changes
### Added
- **Validation & telemetry tests**
@ -61,6 +65,7 @@
- Cache bust hooks now clear filter/preview caches on catalog refresh or tagging completion; metrics expose `preview_last_bust_at` and warm cache stats.
- Theme normalization standardizes terms (ETB → Enter the Battlefield, Pillow Fort → Pillowfort, etc.), with synergy output capped at five entries (curated > enforced > inferred ordering).
- README, CHANGELOG, and governance docs updated to reflect new workflows, taxonomy snapshots, and telemetry controls.
- Theme catalog schema now allows optional `id` fields on entries so regenerated catalogs validate cleanly.
### Deprecated
- Price/legality snippet integration remains deferred to the future Budget Mode rollout (`logs/roadmaps/roadmap_9_budget_mode.md`).
@ -72,6 +77,7 @@
- Suppressed legacy double-export path to prevent creation of `*_1.csv` / `*_1.txt` artifacts.
- Removed ultra-rare themes (frequency ≤1) unless protected via whitelist, keeping results focused on supported experiences.
- Corrected commander eligibility rules to restrict non-creature legendary permanents and honor “can be your commander” text.
- Refreshed `logs/perf/theme_preview_warm_baseline.json` to fix preview performance CI failures stemming from malformed baseline data.
## Upgrade notes
- Enable multi-theme random builds via existing Random Mode flags; strict matching persists automatically across UI, API, permalink, and export contexts.

View file

@ -21,6 +21,10 @@ PopularityBucket = Literal['Very Common', 'Common', 'Uncommon', 'Niche', 'Rare']
class ThemeEntry(BaseModel):
id: Optional[str] = Field(
None,
description="Stable, slugified identifier for the theme (mirrors fast-path catalog id); optional for backward compatibility.",
)
theme: str = Field(..., description="Canonical theme display name")
synergies: List[str] = Field(default_factory=list, description="Ordered synergy list (curated > enforced > inferred, possibly trimmed)")
primary_color: Optional[str] = Field(None, description="Primary color (TitleCase) if detectable")

View file

@ -1,39 +1,760 @@
{{
"event": "preview_perf_warm_baseline", "avg_ms": 47.75,
"collected_at": "2025-09-23T18:45:00Z", "count": 735,
"mode": "warm-single-pass", "event": "preview_perf_warm_baseline",
"count": 735, "mode": "all",
"p50_ms": 30.27, "p50_ms": 30.27,
"p90_ms": 45.44, "p90_ms": 45.44,
"p95_ms": 58.77, "p95_ms": 58.77,
"avg_ms": 47.75, "slugs": [
"notes": "Captured from warm pass benchmarking after theme fast path rebuild.", "0-1-counters",
"slugs_sample": [ "0-2-counters",
"plus1-plus1-counters", "1-1-counters",
"aggro", "adamant",
"eldrazi-kindred", "adapt",
"vampire-kindred", "addendum",
"wizard-kindred" "advisor-kindred",
] "aetherborn-kindred",
} "affinity",
{
"avg_ms": 11.44,
"count": 735,
"elapsed_s": 8.414,
"loops": 735,
"mode": "all",
"p50_ms": 6.0,
"p90_ms": 25.71,
"p95_ms": 27.31,
"passes": 1,
"per_slug_requests": {
"0-1-counters": 1,
"0-2-counters": 1,
"1-1-counters": 1,
"adamant": 1,
"adapt": 1,
"addendum": 1,
"advisor-kindred": 1,
"aetherborn-kindred": 1,
"affinity": 1,
"afflict": 1,
"afterlife": 1,
"aftermath": 1,
"age-counters": 1,
"aggro": 1,
"airbending": 1,
"alien-kindred": 1,
"alliance": 1,
"ally-kindred": 1,
"amass": 1,
"amplify": 1,
"angel-kindred": 1,
"annihilator": 1,
"antelope-kindred": 1,
"ape-kindred": 1,
"archer-kindred": 1,
"archon-kindred": 1,
"aristocrats": 1,
"armadillo-kindred": 1,
"army-kindred": 1,
"artifact-tokens": 1,
"artifacts-matter": 1,
"artificer-kindred": 1,
"ascend": 1,
"assassin-kindred": 1,
"assembly-worker-kindred": 1,
"assist": 1,
"astartes-kindred": 1,
"atog-kindred": 1,
"auras": 1,
"aurochs-kindred": 1,
"avatar-kindred": 1,
"awaken": 1,
"azra-kindred": 1,
"backgrounds-matter": 1,
"backup": 1,
"badger-kindred": 1,
"banding": 1,
"barbarian-kindred": 1,
"bard-kindred": 1,
"bargain": 1,
"basic-landcycling": 1,
"basilisk-kindred": 1,
"bat-kindred": 1,
"battalion": 1,
"battle-cry": 1,
"battles-matter": 1,
"bear-kindred": 1,
"beast-kindred": 1,
"beaver-kindred": 1,
"beeble-kindred": 1,
"behold": 1,
"beholder-kindred": 1,
"berserker-kindred": 1,
"bestow": 1,
"big-mana": 1,
"bird-kindred": 1,
"blaze-counters": 1,
"blink": 1,
"blitz": 1,
"blood-token": 1,
"bloodrush": 1,
"bloodthirst": 1,
"boar-kindred": 1,
"board-wipes": 1,
"boast": 1,
"bolster": 1,
"bounty-counters": 1,
"bracket-extraturn": 1,
"bracket-gamechanger": 1,
"bracket-masslanddenial": 1,
"bracket-tutornonland": 1,
"brushwagg-kindred": 1,
"burn": 1,
"bushido": 1,
"buyback": 1,
"c-tan-kindred": 1,
"camarid-kindred": 1,
"camel-kindred": 1,
"cantrips": 1,
"capybara-kindred": 1,
"card-draw": 1,
"card-selection": 1,
"carrier-kindred": 1,
"cascade": 1,
"cases-matter": 1,
"casualty": 1,
"cat-kindred": 1,
"celebration": 1,
"centaur-kindred": 1,
"champion": 1,
"changeling": 1,
"channel": 1,
"charge-counters": 1,
"child-kindred": 1,
"chimera-kindred": 1,
"choose-a-background": 1,
"chroma": 1,
"cipher": 1,
"citizen-kindred": 1,
"clash": 1,
"cleave": 1,
"cleric-kindred": 1,
"cloak": 1,
"clones": 1,
"clown-kindred": 1,
"clue-token": 1,
"cockatrice-kindred": 1,
"cohort": 1,
"collect-evidence": 1,
"combat-matters": 1,
"combat-tricks": 1,
"compleated": 1,
"conditional-draw": 1,
"conjure": 1,
"connive": 1,
"conspire": 1,
"constellation": 1,
"construct-kindred": 1,
"control": 1,
"converge": 1,
"convert": 1,
"convoke": 1,
"corpse-counters": 1,
"corrupted": 1,
"cost-reduction": 1,
"cost-scaling": 1,
"council-s-dilemma": 1,
"counters-matter": 1,
"counterspells": 1,
"coven": 1,
"coward-kindred": 1,
"coyote-kindred": 1,
"crab-kindred": 1,
"craft": 1,
"creature-tokens": 1,
"crew": 1,
"crocodile-kindred": 1,
"cumulative-upkeep": 1,
"custodes-kindred": 1,
"cyberman-kindred": 1,
"cycling": 1,
"cyclops-kindred": 1,
"dalek-kindred": 1,
"dash": 1,
"dauthi-kindred": 1,
"daybound": 1,
"deathtouch": 1,
"defender": 1,
"defense-counters": 1,
"delay-counters": 1,
"delirium": 1,
"delve": 1,
"demigod-kindred": 1,
"demon-kindred": 1,
"demonstrate": 1,
"depletion-counters": 1,
"descend": 1,
"deserter-kindred": 1,
"detain": 1,
"detective-kindred": 1,
"dethrone": 1,
"devil-kindred": 1,
"devoid": 1,
"devotion-counters": 1,
"devour": 1,
"dinosaur-kindred": 1,
"discard-matters": 1,
"discover": 1,
"disguise": 1,
"disturb": 1,
"divinity-counters": 1,
"djinn-kindred": 1,
"doctor-kindred": 1,
"doctor-s-companion": 1,
"dog-kindred": 1,
"domain": 1,
"doom-counters": 1,
"double-strike": 1,
"dragon-kindred": 1,
"drake-kindred": 1,
"dreadnought-kindred": 1,
"dredge": 1,
"drone-kindred": 1,
"druid-kindred": 1,
"dryad-kindred": 1,
"dwarf-kindred": 1,
"earthbend": 1,
"echo": 1,
"eerie": 1,
"efreet-kindred": 1,
"egg-kindred": 1,
"elder-kindred": 1,
"eldrazi-kindred": 1,
"elemental-kindred": 1,
"elephant-kindred": 1,
"elf-kindred": 1,
"elk-kindred": 1,
"embalm": 1,
"emerge": 1,
"employee-kindred": 1,
"enchant": 1,
"enchantment-tokens": 1,
"enchantments-matter": 1,
"encore": 1,
"endure": 1,
"energy": 1,
"energy-counters": 1,
"enlist": 1,
"enrage": 1,
"enter-the-battlefield": 1,
"entwine": 1,
"eon-counters": 1,
"epic": 1,
"equip": 1,
"equipment": 1,
"equipment-matters": 1,
"escalate": 1,
"escape": 1,
"eternalize": 1,
"evoke": 1,
"evolve": 1,
"exalted": 1,
"exert": 1,
"exhaust": 1,
"exile-matters": 1,
"experience-counters": 1,
"exploit": 1,
"explore": 1,
"extort": 1,
"eye-kindred": 1,
"fabricate": 1,
"fade-counters": 1,
"fading": 1,
"faerie-kindred": 1,
"fateful-hour": 1,
"fateseal": 1,
"fathomless-descent": 1,
"fear": 1,
"ferocious": 1,
"ferret-kindred": 1,
"fight": 1,
"finality-counters": 1,
"firebending": 1,
"first-strike": 1,
"fish-kindred": 1,
"flagbearer-kindred": 1,
"flanking": 1,
"flash": 1,
"flashback": 1,
"flood-counters": 1,
"flurry": 1,
"flying": 1,
"food": 1,
"food-token": 1,
"for-mirrodin": 1,
"forage": 1,
"forecast": 1,
"forestcycling": 1,
"forestwalk": 1,
"foretell": 1,
"formidable": 1,
"fox-kindred": 1,
"fractal-kindred": 1,
"freerunning": 1,
"frog-kindred": 1,
"fungus-counters": 1,
"fungus-kindred": 1,
"fuse-counters": 1,
"gargoyle-kindred": 1,
"germ-kindred": 1,
"giant-kindred": 1,
"gift": 1,
"gith-kindred": 1,
"glimmer-kindred": 1,
"gnoll-kindred": 1,
"gnome-kindred": 1,
"goad": 1,
"goat-kindred": 1,
"goblin-kindred": 1,
"god-kindred": 1,
"gold-token": 1,
"golem-kindred": 1,
"gorgon-kindred": 1,
"graft": 1,
"grandeur": 1,
"gravestorm": 1,
"graveyard-matters": 1,
"gremlin-kindred": 1,
"griffin-kindred": 1,
"group-hug": 1,
"growth-counters": 1,
"guest-kindred": 1,
"hag-kindred": 1,
"halfling-kindred": 1,
"hamster-kindred": 1,
"harmonize": 1,
"harpy-kindred": 1,
"haste": 1,
"hatching-counters": 1,
"hatchling-counters": 1,
"haunt": 1,
"healing-counters": 1,
"hellbent": 1,
"hellion-kindred": 1,
"hero-kindred": 1,
"heroic": 1,
"hexproof": 1,
"hexproof-from": 1,
"hideaway": 1,
"hippo-kindred": 1,
"hippogriff-kindred": 1,
"historics-matter": 1,
"hit-counters": 1,
"homarid-kindred": 1,
"homunculus-kindred": 1,
"horror-kindred": 1,
"horse-kindred": 1,
"horsemanship": 1,
"hour-counters": 1,
"human-kindred": 1,
"hydra-kindred": 1,
"hyena-kindred": 1,
"ice-counters": 1,
"illusion-kindred": 1,
"imp-kindred": 1,
"impending": 1,
"imprint": 1,
"improvise": 1,
"impulse": 1,
"incarnation-kindred": 1,
"incubate": 1,
"incubator-token": 1,
"indestructible": 1,
"infect": 1,
"infection-counters": 1,
"ingest": 1,
"inkling-kindred": 1,
"insect-kindred": 1,
"inspired": 1,
"interaction": 1,
"intimidate": 1,
"investigate": 1,
"islandcycling": 1,
"islandwalk": 1,
"jackal-kindred": 1,
"jellyfish-kindred": 1,
"job-select": 1,
"join-forces": 1,
"judgment-counters": 1,
"juggernaut-kindred": 1,
"jump": 1,
"jump-start": 1,
"junk-token": 1,
"junk-tokens": 1,
"kavu-kindred": 1,
"ki-counters": 1,
"kicker": 1,
"kinship": 1,
"kirin-kindred": 1,
"kithkin-kindred": 1,
"knight-kindred": 1,
"kobold-kindred": 1,
"kor-kindred": 1,
"kraken-kindred": 1,
"lamia-kindred": 1,
"lammasu-kindred": 1,
"land-types-matter": 1,
"landcycling": 1,
"landfall": 1,
"lands-matter": 1,
"landwalk": 1,
"learn": 1,
"leave-the-battlefield": 1,
"leech-kindred": 1,
"legends-matter": 1,
"level-counters": 1,
"level-up": 1,
"leviathan-kindred": 1,
"lhurgoyf-kindred": 1,
"licid-kindred": 1,
"lieutenant": 1,
"life-matters": 1,
"life-to-draw": 1,
"lifegain": 1,
"lifegain-triggers": 1,
"lifelink": 1,
"lifeloss": 1,
"lifeloss-triggers": 1,
"little-fellas": 1,
"living-metal": 1,
"living-weapon": 1,
"lizard-kindred": 1,
"loot": 1,
"lore-counters": 1,
"loyalty-counters": 1,
"madness": 1,
"magecraft": 1,
"mana-dork": 1,
"mana-rock": 1,
"manifest": 1,
"manifest-dread": 1,
"manticore-kindred": 1,
"map-token": 1,
"max-speed": 1,
"mayhem": 1,
"megamorph": 1,
"meld": 1,
"melee": 1,
"menace": 1,
"mentor": 1,
"mercenary-kindred": 1,
"merfolk-kindred": 1,
"metalcraft": 1,
"metathran-kindred": 1,
"midrange": 1,
"mill": 1,
"minion-kindred": 1,
"minotaur-kindred": 1,
"miracle": 1,
"mite-kindred": 1,
"mobilize": 1,
"modal": 1,
"modular": 1,
"mole-kindred": 1,
"monarch": 1,
"monger-kindred": 1,
"mongoose-kindred": 1,
"monk-kindred": 1,
"monkey-kindred": 1,
"monstrosity": 1,
"moonfolk-kindred": 1,
"morbid": 1,
"more-than-meets-the-eye": 1,
"morph": 1,
"mount-kindred": 1,
"mountaincycling": 1,
"mountainwalk": 1,
"mouse-kindred": 1,
"multikicker": 1,
"multiple-copies": 1,
"mutant-kindred": 1,
"mutate": 1,
"myr-kindred": 1,
"myriad": 1,
"mystic-kindred": 1,
"nautilus-kindred": 1,
"necron-kindred": 1,
"net-counters": 1,
"nightbound": 1,
"nightmare-kindred": 1,
"nightstalker-kindred": 1,
"ninja-kindred": 1,
"ninjutsu": 1,
"noble-kindred": 1,
"nomad-kindred": 1,
"nymph-kindred": 1,
"octopus-kindred": 1,
"offering": 1,
"offspring": 1,
"ogre-kindred": 1,
"oil-counters": 1,
"omen-counters": 1,
"ooze-kindred": 1,
"open-an-attraction": 1,
"orb-kindred": 1,
"orc-kindred": 1,
"ore-counters": 1,
"orgg-kindred": 1,
"otter-kindred": 1,
"ouphe-kindred": 1,
"outlast": 1,
"outlaw-kindred": 1,
"overload": 1,
"ox-kindred": 1,
"oyster-kindred": 1,
"pack-tactics": 1,
"pangolin-kindred": 1,
"paradox": 1,
"parley": 1,
"partner": 1,
"partner-with": 1,
"peasant-kindred": 1,
"pegasus-kindred": 1,
"performer-kindred": 1,
"persist": 1,
"pest-kindred": 1,
"phasing": 1,
"phoenix-kindred": 1,
"phyrexian-kindred": 1,
"pillowfort": 1,
"pilot-kindred": 1,
"pingers": 1,
"pirate-kindred": 1,
"plague-counters": 1,
"plainscycling": 1,
"plainswalk": 1,
"planeswalkers": 1,
"plant-kindred": 1,
"plot": 1,
"plus0-plus1-counters": 1,
"plus1-plus0-counters": 1,
"plus1-plus1-counters": 1,
"plus2-plus2-counters": 1,
"poison-counters": 1,
"politics": 1,
"populate": 1,
"porcupine-kindred": 1,
"possum-kindred": 1,
"powerstone-token": 1,
"praetor-kindred": 1,
"primarch-kindred": 1,
"processor-kindred": 1,
"proliferate": 1,
"protection": 1,
"prototype": 1,
"provoke": 1,
"prowess": 1,
"prowl": 1,
"quest-counters": 1,
"rabbit-kindred": 1,
"raccoon-kindred": 1,
"rad-counters": 1,
"radiance": 1,
"raid": 1,
"rally": 1,
"ramp": 1,
"rampage": 1,
"ranger-kindred": 1,
"rat-kindred": 1,
"ravenous": 1,
"reach": 1,
"read-ahead": 1,
"reanimate": 1,
"rebel-kindred": 1,
"rebound": 1,
"reconfigure": 1,
"recover": 1,
"reflection-kindred": 1,
"reinforce": 1,
"removal": 1,
"renew": 1,
"renown": 1,
"replacement-draw": 1,
"replicate": 1,
"resource-engine": 1,
"retrace": 1,
"revolt": 1,
"rhino-kindred": 1,
"rigger-kindred": 1,
"riot": 1,
"ripple": 1,
"robot-kindred": 1,
"rogue-kindred": 1,
"role-token": 1,
"roll-to-visit-your-attractions": 1,
"rooms-matter": 1,
"sacrifice-matters": 1,
"sacrifice-to-draw": 1,
"saddle": 1,
"sagas-matter": 1,
"salamander-kindred": 1,
"samurai-kindred": 1,
"sand-kindred": 1,
"saproling-kindred": 1,
"satyr-kindred": 1,
"scarecrow-kindred": 1,
"scavenge": 1,
"scientist-kindred": 1,
"scion-kindred": 1,
"scorpion-kindred": 1,
"scout-kindred": 1,
"scream-counters": 1,
"scry": 1,
"sculpture-kindred": 1,
"secret-council": 1,
"serf-kindred": 1,
"serpent-kindred": 1,
"servo-kindred": 1,
"shade-kindred": 1,
"shadow": 1,
"shaman-kindred": 1,
"shapeshifter-kindred": 1,
"shark-kindred": 1,
"sheep-kindred": 1,
"shield-counters": 1,
"shrines-matter": 1,
"shroud": 1,
"siren-kindred": 1,
"skeleton-kindred": 1,
"skulk": 1,
"skunk-kindred": 1,
"slime-counters": 1,
"slith-kindred": 1,
"sliver-kindred": 1,
"sloth-kindred": 1,
"slug-kindred": 1,
"snail-kindred": 1,
"snake-kindred": 1,
"soldier-kindred": 1,
"soltari-kindred": 1,
"soul-counters": 1,
"soulbond": 1,
"soulshift": 1,
"spawn-kindred": 1,
"spectacle": 1,
"specter-kindred": 1,
"spell-copy": 1,
"spell-mastery": 1,
"spells-matter": 1,
"spellshaper-kindred": 1,
"spellslinger": 1,
"sphinx-kindred": 1,
"spider-kindred": 1,
"spike-kindred": 1,
"spirit-kindred": 1,
"splice": 1,
"split-second": 1,
"sponge-kindred": 1,
"spore-counters": 1,
"spree": 1,
"squad": 1,
"squid-kindred": 1,
"squirrel-kindred": 1,
"starfish-kindred": 1,
"start-your-engines": 1,
"stash-counters": 1,
"station": 1,
"stax": 1,
"storage-counters": 1,
"storm": 1,
"strive": 1,
"stun-counters": 1,
"super-friends": 1,
"superfriends": 1,
"support": 1,
"surge": 1,
"surrakar-kindred": 1,
"surveil": 1,
"survival": 1,
"survivor-kindred": 1,
"suspect": 1,
"suspend": 1,
"swampcycling": 1,
"swampwalk": 1,
"sweep": 1,
"synth-kindred": 1,
"tempting-offer": 1,
"tentacle-kindred": 1,
"thalakos-kindred": 1,
"theft": 1,
"thopter-kindred": 1,
"threshold": 1,
"thrull-kindred": 1,
"tide-counters": 1,
"tiefling-kindred": 1,
"time-counters": 1,
"time-travel": 1,
"token-creation": 1,
"token-modification": 1,
"tokens-matter": 1,
"toolbox": 1,
"topdeck": 1,
"toughness-matters": 1,
"toxic": 1,
"toy-kindred": 1,
"training": 1,
"trample": 1,
"transform": 1,
"transmute": 1,
"treasure": 1,
"treasure-token": 1,
"treefolk-kindred": 1,
"tribute": 1,
"trilobite-kindred": 1,
"troll-kindred": 1,
"turtle-kindred": 1,
"tyranid-kindred": 1,
"umbra-armor": 1,
"unconditional-draw": 1,
"undaunted": 1,
"undergrowth": 1,
"undying": 1,
"unearth": 1,
"unicorn-kindred": 1,
"unleash": 1,
"valiant": 1,
"vampire-kindred": 1,
"vanishing": 1,
"varmint-kindred": 1,
"vedalken-kindred": 1,
"vehicles": 1,
"venture-into-the-dungeon": 1,
"verse-counters": 1,
"vigilance": 1,
"void": 1,
"void-counters": 1,
"voltron": 1,
"wall-kindred": 1,
"ward": 1,
"warlock-kindred": 1,
"warp": 1,
"warrior-kindred": 1,
"waterbending": 1,
"weasel-kindred": 1,
"weird-kindred": 1,
"werewolf-kindred": 1,
"whale-kindred": 1,
"wheels": 1,
"will-of-the-council": 1,
"will-of-the-planeswalkers": 1,
"wind-counters": 1,
"wish-counters": 1,
"wither": 1,
"wizard-kindred": 1,
"wizardcycling": 1,
"wolf-kindred": 1,
"wolverine-kindred": 1,
"wombat-kindred": 1,
"worm-kindred": 1,
"wraith-kindred": 1,
"wurm-kindred": 1,
"x-spells": 1,
"yeti-kindred": 1,
"zombie-kindred": 1,
"zubera-kindred": 1
},
"slugs": [
"0-1-counters",
"0-2-counters",
"1-1-counters",
"adamant",
"adapt",
"addendum",
"advisor-kindred",
"aetherborn-kindred",
"affinity",
"afflict",
"afterlife",
"aftermath",
@ -761,7 +1482,6 @@
"zombie-kindred",
"zubera-kindred"
],
"source_pass": 2,
"total_slugs": 735,
"warm_baseline": true
"warm": false
}