feat(editorial): Phase D synergy commander enrichment, augmentation, lint & docs\n\nAdds Phase D editorial tooling: synergy-based commander selection with 3/2/1 pattern, duplicate filtering, annotated synergy_commanders, promotion to minimum examples, and augmentation heuristics (e.g. Counters Matter/Proliferate injection). Includes new scripts (generate_theme_editorial_suggestions, lint, validate, catalog build/apply), updates orchestrator & web routes, expands CI workflow, and documents usage & non-determinism policies. Updates lint rules, type definitions, and docker configs.

This commit is contained in:
matt 2025-09-18 10:59:20 -07:00
parent 16261bbf09
commit f2a76d2ffc
35 changed files with 2818 additions and 509 deletions

View file

@ -9,6 +9,11 @@ services:
TERM: "xterm-256color"
DEBIAN_FRONTEND: "noninteractive"
# ------------------------------------------------------------------
# Core UI Feature Toggles
# (Enable/disable visibility of sections; most default to off in code)
# ------------------------------------------------------------------
# UI features/flags
SHOW_LOGS: "1" # 1=enable /logs page; 0=hide
SHOW_SETUP: "1" # 1=show Setup/Tagging card; 0=hide (still runs if WEB_AUTO_SETUP=1)
@ -20,6 +25,14 @@ services:
ALLOW_MUST_HAVES: "1" # 1=enable must-include/must-exclude cards feature; 0=disable
SHOW_MISC_POOL: "0"
# ------------------------------------------------------------------
# Random Build (Alpha) Feature Flags
# RANDOM_MODES: backend enablement (seeded selection endpoints)
# RANDOM_UI: enable Surprise/Reroll controls in UI
# RANDOM_MAX_ATTEMPTS: safety cap on retries for constraints
# RANDOM_TIMEOUT_MS: per-attempt timeout (ms) before giving up
# ------------------------------------------------------------------
# Random Modes (feature flags)
RANDOM_MODES: "0" # 1=enable random build endpoints and backend features
RANDOM_UI: "0" # 1=show Surprise/Theme/Reroll/Share controls in UI
@ -29,11 +42,33 @@ services:
# Theming
THEME: "dark" # system|light|dark
# ------------------------------------------------------------------
# Setup / Tagging / Catalog Controls
# WEB_AUTO_SETUP: auto-run initial tagging & theme generation when needed
# WEB_AUTO_REFRESH_DAYS: refresh card data if older than N days (0=never)
# WEB_TAG_PARALLEL + WEB_TAG_WORKERS: parallel tag extraction
# THEME_CATALOG_MODE: merge (Phase B) | legacy | build | phaseb (merge synonyms)
# WEB_AUTO_ENFORCE: 1=run bracket/legal compliance auto-export JSON after builds
# WEB_CUSTOM_EXPORT_BASE: override export path base (optional)
# APP_VERSION: surfaced in UI/health endpoints
# ------------------------------------------------------------------
# Setup/Tagging performance
WEB_AUTO_SETUP: "1" # 1=auto-run setup/tagging when needed
WEB_AUTO_REFRESH_DAYS: "7" # Refresh cards.csv if older than N days; 0=never
WEB_TAG_PARALLEL: "1" # 1=parallelize tagging
WEB_TAG_WORKERS: "4" # Worker count when parallel tagging
THEME_CATALOG_MODE: "merge" # Use merged Phase B catalog builder (with YAML export)
THEME_YAML_FAST_SKIP: "0" # 1=allow skipping per-theme YAML on fast path (rare; default always export)
WEB_AUTO_ENFORCE: "0" # 1=auto-run compliance export after builds
WEB_CUSTOM_EXPORT_BASE: "" # Optional: custom base dir for deck export artifacts
APP_VERSION: "dev" # Displayed version label (set per release/tag)
# ------------------------------------------------------------------
# Misc / Land Selection (Step 7) Environment Tuning
# Uncomment to fine-tune utility land heuristics. Theme weighting allows
# matching candidate lands to selected themes for bias.
# ------------------------------------------------------------------
# Misc land tuning (utility land selection Step 7)
# MISC_LAND_DEBUG: "1" # 1=write misc land debug CSVs (post-filter, candidates); off by default unless SHOW_DIAGNOSTICS=1
@ -45,12 +80,24 @@ services:
# MISC_LAND_THEME_MATCH_PER_EXTRA: "0.15" # Increment per extra matching tag beyond first
# MISC_LAND_THEME_MATCH_CAP: "2.0" # Cap for total theme multiplier
# ------------------------------------------------------------------
# Deck Export / Directory Overrides (headless & web browsing paths)
# DECK_EXPORTS / DECK_CONFIG: override mount points inside container
# OWNED_CARDS_DIR / CARD_LIBRARY_DIR: inventory upload path (alias preserved)
# ------------------------------------------------------------------
# Paths (optional overrides)
# DECK_EXPORTS: "/app/deck_files" # Where the deck browser looks for exports
# DECK_CONFIG: "/app/config" # Where the config browser looks for *.json
# OWNED_CARDS_DIR: "/app/owned_cards" # Preferred path for owned inventory uploads
# CARD_LIBRARY_DIR: "/app/owned_cards" # Back-compat alias for OWNED_CARDS_DIR
# ------------------------------------------------------------------
# Headless / Non-interactive Build Configuration
# Provide commander or tag indices/names; toggles for which phases to include
# Counts optionally tune land/fetch/ramp/etc targets.
# ------------------------------------------------------------------
# Headless-only settings
# DECK_MODE: "headless" # Auto-run headless flow in CLI mode
# HEADLESS_EXPORT_JSON: "1" # 1=export resolved run config JSON
@ -81,6 +128,12 @@ services:
# HOST: "0.0.0.0" # Uvicorn bind host
# PORT: "8080" # Uvicorn port
# WORKERS: "1" # Uvicorn workers
# (HOST/PORT honored by entrypoint; WORKERS for multi-worker uvicorn if desired)
# ------------------------------------------------------------------
# Testing / Diagnostics Specific (rarely changed in compose)
# SHOW_MISC_POOL: "1" # (already above) expose misc pool debug UI if implemented
# ------------------------------------------------------------------
volumes:
- ${PWD}/deck_files:/app/deck_files
- ${PWD}/logs:/app/logs