mirror of
https://github.com/mwisnowski/mtg_python_deckbuilder.git
synced 2025-12-16 23:50:12 +01:00
fix: allow theme catalog ids and refresh baseline
This commit is contained in:
parent
33570399f0
commit
c95b15ef56
4 changed files with 773 additions and 39 deletions
|
|
@ -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.
|
- Link PRs/issues inline when helpful, e.g., (#123) or [#123]. Reference-style links at the bottom are encouraged for readability.
|
||||||
|
|
||||||
## [Unreleased]
|
## [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
|
## [2.3.0] - 2025-09-26
|
||||||
### Added
|
### Added
|
||||||
|
|
|
||||||
|
|
@ -1,6 +1,7 @@
|
||||||
# MTG Python Deckbuilder ${VERSION}
|
# MTG Python Deckbuilder ${VERSION}
|
||||||
|
|
||||||
## Summary
|
## 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.
|
- 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.
|
- 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.
|
- 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.
|
- 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.
|
- 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
|
## Detailed changes
|
||||||
### Added
|
### Added
|
||||||
- **Validation & telemetry tests**
|
- **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.
|
- 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).
|
- 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.
|
- 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
|
### Deprecated
|
||||||
- Price/legality snippet integration remains deferred to the future Budget Mode rollout (`logs/roadmaps/roadmap_9_budget_mode.md`).
|
- 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.
|
- 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.
|
- 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.
|
- 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
|
## Upgrade notes
|
||||||
- Enable multi-theme random builds via existing Random Mode flags; strict matching persists automatically across UI, API, permalink, and export contexts.
|
- Enable multi-theme random builds via existing Random Mode flags; strict matching persists automatically across UI, API, permalink, and export contexts.
|
||||||
|
|
|
||||||
|
|
@ -21,6 +21,10 @@ PopularityBucket = Literal['Very Common', 'Common', 'Uncommon', 'Niche', 'Rare']
|
||||||
|
|
||||||
|
|
||||||
class ThemeEntry(BaseModel):
|
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")
|
theme: str = Field(..., description="Canonical theme display name")
|
||||||
synergies: List[str] = Field(default_factory=list, description="Ordered synergy list (curated > enforced > inferred, possibly trimmed)")
|
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")
|
primary_color: Optional[str] = Field(None, description="Primary color (TitleCase) if detectable")
|
||||||
|
|
|
||||||
|
|
@ -1,39 +1,760 @@
|
||||||
{{
|
{
|
||||||
|
"avg_ms": 11.44,
|
||||||
"event": "preview_perf_warm_baseline", "avg_ms": 47.75,
|
"count": 735,
|
||||||
|
"elapsed_s": 8.414,
|
||||||
"collected_at": "2025-09-23T18:45:00Z", "count": 735,
|
"loops": 735,
|
||||||
|
"mode": "all",
|
||||||
"mode": "warm-single-pass", "event": "preview_perf_warm_baseline",
|
"p50_ms": 6.0,
|
||||||
|
"p90_ms": 25.71,
|
||||||
"count": 735, "mode": "all",
|
"p95_ms": 27.31,
|
||||||
|
"passes": 1,
|
||||||
"p50_ms": 30.27, "p50_ms": 30.27,
|
"per_slug_requests": {
|
||||||
|
"0-1-counters": 1,
|
||||||
"p90_ms": 45.44, "p90_ms": 45.44,
|
"0-2-counters": 1,
|
||||||
|
"1-1-counters": 1,
|
||||||
"p95_ms": 58.77, "p95_ms": 58.77,
|
"adamant": 1,
|
||||||
|
"adapt": 1,
|
||||||
"avg_ms": 47.75, "slugs": [
|
"addendum": 1,
|
||||||
|
"advisor-kindred": 1,
|
||||||
"notes": "Captured from warm pass benchmarking after theme fast path rebuild.", "0-1-counters",
|
"aetherborn-kindred": 1,
|
||||||
|
"affinity": 1,
|
||||||
"slugs_sample": [ "0-2-counters",
|
"afflict": 1,
|
||||||
|
"afterlife": 1,
|
||||||
"plus1-plus1-counters", "1-1-counters",
|
"aftermath": 1,
|
||||||
|
"age-counters": 1,
|
||||||
"aggro", "adamant",
|
"aggro": 1,
|
||||||
|
"airbending": 1,
|
||||||
"eldrazi-kindred", "adapt",
|
"alien-kindred": 1,
|
||||||
|
"alliance": 1,
|
||||||
"vampire-kindred", "addendum",
|
"ally-kindred": 1,
|
||||||
|
"amass": 1,
|
||||||
"wizard-kindred" "advisor-kindred",
|
"amplify": 1,
|
||||||
|
"angel-kindred": 1,
|
||||||
] "aetherborn-kindred",
|
"annihilator": 1,
|
||||||
|
"antelope-kindred": 1,
|
||||||
} "affinity",
|
"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",
|
"afflict",
|
||||||
"afterlife",
|
"afterlife",
|
||||||
"aftermath",
|
"aftermath",
|
||||||
|
|
@ -761,7 +1482,6 @@
|
||||||
"zombie-kindred",
|
"zombie-kindred",
|
||||||
"zubera-kindred"
|
"zubera-kindred"
|
||||||
],
|
],
|
||||||
"source_pass": 2,
|
|
||||||
"total_slugs": 735,
|
"total_slugs": 735,
|
||||||
"warm_baseline": true
|
"warm": false
|
||||||
}
|
}
|
||||||
Loading…
Add table
Add a link
Reference in a new issue