mirror of
https://github.com/mwisnowski/mtg_python_deckbuilder.git
synced 2026-04-05 12:47:17 +02:00
110 lines
4.3 KiB
Markdown
110 lines
4.3 KiB
Markdown
|
|
# Bracket Compliance
|
||
|
|
|
||
|
|
Select a power level for your deck and get a detailed compliance report against the official Commander bracket rules.
|
||
|
|
|
||
|
|
---
|
||
|
|
|
||
|
|
## Overview
|
||
|
|
|
||
|
|
Commander brackets define five power tiers from Exhibition (casual) to cEDH (competitive). The builder checks your finished deck against the rules for your selected bracket and surfaces a PASS / WARN / FAIL report per category.
|
||
|
|
|
||
|
|
Bracket selection lives in the **New Deck modal**. The compliance report appears in Step 5 and is exported to the compliance JSON sidecar (`deck_files/*_compliance.json`).
|
||
|
|
|
||
|
|
---
|
||
|
|
|
||
|
|
## Bracket Tiers
|
||
|
|
|
||
|
|
| Bracket | Name | Key restrictions |
|
||
|
|
|---------|------|-----------------|
|
||
|
|
| 1 | Exhibition | No Game Changers; no two-card infinite combos; no mass land denial; extra turns discouraged; tutors sparse |
|
||
|
|
| 2 | Core | No Game Changers; no two-card infinite combos; no mass land denial; extra turns not chained; tutors sparse |
|
||
|
|
| 3 | Upgraded | Up to 3 Game Changers; no mass land denial; no early/cheap two-card combos; extra turns not chained |
|
||
|
|
| 4 | Optimized | No bracket restrictions (banned list still applies) |
|
||
|
|
| 5 | cEDH | No bracket restrictions (banned list still applies; competitive mindset) |
|
||
|
|
|
||
|
|
Bracket rules follow the official Wizards of the Coast Commander bracket definitions. The card lists used for compliance checks are stored in `config/card_lists/` and can be updated as WotC revises the lists.
|
||
|
|
|
||
|
|
---
|
||
|
|
|
||
|
|
## Compliance Categories
|
||
|
|
|
||
|
|
For each build, the compliance report checks:
|
||
|
|
|
||
|
|
| Category | What is checked |
|
||
|
|
|----------|----------------|
|
||
|
|
| **Game Changers** | Cards on the official Game Changers list (`config/card_lists/game_changers.json`) |
|
||
|
|
| **Extra turns** | Cards that grant extra turns (`extra_turns.json`) |
|
||
|
|
| **Mass land denial** | Cards that destroy, exile, or bounce many lands (`mass_land_denial.json`) |
|
||
|
|
| **Non-land tutors** | Cards that search the library for non-land cards |
|
||
|
|
| **Two-card combos** | Known two-card infinite combos (`combos.json`), with a flag for early/cheap combos |
|
||
|
|
|
||
|
|
Each category returns a PASS / WARN / FAIL verdict and lists the flagged cards with links.
|
||
|
|
|
||
|
|
If the **commander itself** is on the Game Changers list, it is surfaced separately at the top of the report.
|
||
|
|
|
||
|
|
---
|
||
|
|
|
||
|
|
## Enforcement Mode
|
||
|
|
|
||
|
|
Set `enforcement_mode` in your JSON config to control how the builder handles bracket violations:
|
||
|
|
|
||
|
|
| Mode | Behavior |
|
||
|
|
|------|----------|
|
||
|
|
| `validate` | Build freely, then report violations. No cards are blocked. _(default)_ |
|
||
|
|
| `prefer` | During selection, avoid adding disallowed categories; cap Game Changers for Bracket 3. |
|
||
|
|
| `strict` | Block additions that would violate the bracket. Build fails with a clear message if unavoidable. |
|
||
|
|
|
||
|
|
```json
|
||
|
|
{
|
||
|
|
"bracket": "core",
|
||
|
|
"enforcement_mode": "prefer"
|
||
|
|
}
|
||
|
|
```
|
||
|
|
|
||
|
|
---
|
||
|
|
|
||
|
|
## Rule Zero Notes
|
||
|
|
|
||
|
|
The `rule_zero_notes` field in the JSON config lets you document table agreements that override standard bracket rules:
|
||
|
|
|
||
|
|
```json
|
||
|
|
{
|
||
|
|
"bracket": "upgraded",
|
||
|
|
"rule_zero_notes": "Mass land denial allowed by table agreement. Two-card combos capped at 1."
|
||
|
|
}
|
||
|
|
```
|
||
|
|
|
||
|
|
Rule zero notes appear in the compliance report header and are exported to the compliance JSON.
|
||
|
|
|
||
|
|
---
|
||
|
|
|
||
|
|
## Web UI
|
||
|
|
|
||
|
|
- The bracket dropdown in the New Deck modal defaults to **Core (Bracket 2)** when no bracket is set.
|
||
|
|
- The compliance banner in Step 5 shows a color-coded overall verdict (green=PASS, yellow=WARN, red=FAIL) and expandable per-category details.
|
||
|
|
- `WEB_AUTO_ENFORCE=1` re-runs compliance export automatically after each completed build.
|
||
|
|
|
||
|
|
---
|
||
|
|
|
||
|
|
## Maintaining the Card Lists
|
||
|
|
|
||
|
|
The Game Changers list and companion lists are static JSON files in `config/card_lists/`. Each file includes `source_url` and `generated_at` metadata. Update them manually when WotC publishes revisions. Unknown cards in lookups are skipped with a note in the compliance report — they do not cause a hard failure.
|
||
|
|
|
||
|
|
---
|
||
|
|
|
||
|
|
## Environment Variables
|
||
|
|
|
||
|
|
| Variable | Default | Purpose |
|
||
|
|
|----------|---------|---------|
|
||
|
|
| `WEB_AUTO_ENFORCE` | `0` | Auto-run compliance export after every build. |
|
||
|
|
|
||
|
|
---
|
||
|
|
|
||
|
|
## JSON Config Keys
|
||
|
|
|
||
|
|
| Key | Values | Purpose |
|
||
|
|
|-----|--------|---------|
|
||
|
|
| `bracket` | `exhibition` \| `core` \| `upgraded` \| `optimized` \| `cedh` | Bracket selection. Defaults to `core` if unset. |
|
||
|
|
| `enforcement_mode` | `validate` \| `prefer` \| `strict` | How violations are handled during building. |
|
||
|
|
| `rule_zero_notes` | string | Optional table agreement notes included in the compliance report. |
|