# MTG Python Deckbuilder v4.3.1 ## Summary Adds Smart Land Bases — automatic land count and mana-base profile selection driven by the commander's CMC and color-pip density, with no configuration required. ## Added ### Smart Land Bases When `ENABLE_SMART_LANDS=1` (default in Docker), the builder analyzes the commander profile at build time and automatically selects a land count, mana-base profile, and ETB tapped tolerance suited to the deck's speed and color complexity. **Speed detection** Commander CMC is used to classify the deck as fast (< 3.0), mid, or slow (> 4.0). The user's configured ideal land count is offset accordingly: - Fast: −2 lands - Mid: ±0 - Slow: +2 to +4, scaling with color count **Profile selection** Three mana-base profiles determine the ratio of basics to non-basics and the ETB tapped tolerance: - *Basics-heavy* (~60% basics) — 1–2 color decks or low pip density - *Balanced* — 2–3 colors with moderate pip density (standard) - *Fixing-heavy* — 3+ colors or high pip density (≥15 double-pip or ≥3 triple-or-more-pip cards); minimizes basics in favor of duals and fetches **ETB tapped tolerance** Automatically tightened for fast decks (fewer taplands allowed) and loosened for slow decks, so the land selection step reinforces the speed profile. **Budget override** When Budget Mode is active with a low cap and 3+ colors, the profile is automatically forced to basics-heavy to avoid recommending expensive fetch/shock lands the deck cannot afford. **Slot earmarking** After the land target is set, non-land ideal counts (creatures, ramp, removal, wipes, card draw, protection) are scaled proportionally to fit within the remaining slots. This prevents the spell-fill phases from consuming slots reserved for lands. **Backfill** A final land step (Step 9) pads the deck with basics if any land phase fell short, guaranteeing the deck reaches the configured land target. A swap mechanism handles the 100-card safety clamp so backfill basics are never silently trimmed. **Smart Lands notice** The Land Summary section in the build output explains the chosen profile, land target, and reasoning in plain English. **Overrides** - `LAND_PROFILE=basics|mid|fixing` — force a specific profile, bypassing auto-detection - `LAND_COUNT=` — force a specific land count, bypassing curve calculation