The objective function moved from stage averages to per-preset floors (targets 40/25/10 by stage) and a ≤98% ceiling. New [preset-spread] telemetry prints every preset's early/mid/late rate on every run — the 53.7% mid average was hiding four presets near 100% next to four near 0%.
All 21 signature rows gate-marked: PREMISE/PERORATION and STAGGER/BACKFIRE flagged dominant; RUPTURE/REAP/KINDLE/PIP flagged cap-blocked; SWAY/OMEN/SOUL/THORNS flagged late-unreachable; ECHO/REPRISE proven by the Ouroboros fix.
The flat 80-HP RUPTURE cap (bottleneck named by four decks) became a scaling formula; the Tithe 200-cap exception was retired into the same formula as a floor. Early/mid behavior bit-identical; against a 1,500 HP boss the cap is now 375. Swept at f = 0.20 / 0.25 through the matrix.
Penitent: mid 0.80→0.92, late 0.02→0.40 (the round-2 regression, erased) · Erosion late 0.00→0.08
Every card's PAID face is played into one rich fixture (DoT fuel, MARK stacks, FALLEN, Souls, Premises, dice, discard) and must produce the observable delta its data declares — magnitudes checked, so a payoff bursting for 0 fails. Unmapped future mechanic kinds throw. The Ouroboros class of bug ("card plays but does nothing") is now caught at commit time.
CONCEDE premises scale by enemy class (8 normal / 10 elite / 12 boss). CAPITULATE became a Dawncaster-Charmed-style threshold — SWAY ≥ max(10, 0.35 × maxHP), clamped to current HP — instead of matching the entire health bar. Bosses regrow 1 telegraph rung/turn (capped 2× natural). 15 new hermetic e2e incl. pins proving small-enemy behavior is byte-identical.
Grace late 0.00→0.75 — Charm's no-strike win is finally reachable against bosses. Every other preset exactly unchanged.
Erosion late reached only 0.08 under scaled caps — durationed DoTs still decay before eroding an 11-round boss. The fix (afflictions persist by stacks, never round timers — the Dawncaster model) reprices ~a third of the library, so it stayed owner-gated.
Foundry (no tier-3 line) and Bastion (no kill-path vs non-attackers) still hit hard walls that no constant fixes. Each theme's rare redesigned as its own boss answer — see Recommendations below.
| Preset | Late before | Late after | Movement | What moved it / what still blocks it |
|---|---|---|---|---|
| Penitent | 0.02 | 0.40 | +38 pts | Scaling caps (item 2) — the round-2 regression is gone |
| Grace | 0.00 | 0.75 | +75 pts | CAPITULATE resolve threshold (item 1) |
| Erosion | 0.00 | 0.08 | +8 pts | Caps helped; DoT decay wall remains (item 3) |
| Refrain | 0.65 | 0.65 | held | Already fixed by the round-2 Ouroboros repair |
| Oratory / Standstill | 1.00 | 1.00 | ceiling breach | See Finding F2 — the dominance isn't where we thought |
| Foundry / Tithe / Augury / Bastion | 0.00 | 0.00 | unmoved | Structural theme gaps — items 3 & 5 + Recommendations |
Round 2's correctness pass (fixing every lying card) moved stage averages ~4-6 pts. Two scaling changes (items 1+2) moved individual decks +38 and +75 pts. Suggestion: spend future tuning effort on scaling shape (how a number grows across stages), not magnitude nudges — the pricing lint already polices magnitudes.
With scaled CONCEDE, Oratory concedes less (81/120 vs ~100%) but still wins 119/120 — it falls through to ordinary damage wins. Standstill's late lock is BACKFIRE's flat per-rung drip, not permanent denial (rung regrowth verified working). Suggestion: this is now a forge-side numbers item — tune BACKFIRE intensity and Oratory's premise-fueled damage down via sandbox A/B; no engine work needed. The 0.98 ceiling in the balance-band e2e is the ratchet to enforce it.
Even with a 375-HP detonation ceiling, Erosion late = 0.08: durationed DoTs expire before eroding an 11-round boss pool. Suggestion: item 3 (persist-by-stack, the Dawncaster affliction model) is confirmed necessary, not speculative. Bound payoff windows, not the afflictions.
Foundry, Augury, Tithe, Bastion all: fine early, ~0 from mid boss fights on. Their engines (pips, omens, souls, walls) build resources but their spenders don't scale. Suggestion: every engine theme needs exactly one spender whose output scales with something that grows during the fight (bank size, fight length, enemy maxHP) — see Recommendations.
The effectiveness lint catches a declared PAID mechanic that silently no-ops. It cannot see a payoff authored only on the FREE face (absent from PAID data entirely — the original Ouroboros shape). Suggestion: a small static authoring rule ("damage-bearing riders on rank ≥ 5 spells must appear on the PAID face") closes it; runtime testing can't.
Target is ~1% (losing is the design), currently 0% flat. Low priority, but once late is healthy, verify a lucky run CAN thread it — a hard-0 "impossible" reads as scripted, not brutal.
Four mechanic kinds exist in the CardSpecialMechanic union that no library card uses: strip_random_buff, befriend_attempt, convert_die_color, reroll_spent. A meta-test now pins this so a card adopting one gets a strict assertion written for it. Candidates for pruning or for future card designs.
src/CLI/_audit-preset-sim.ts is marked TEMP / delete-after-use and still present.src/Cards/types.ts comments reference src/Tuning/focus.parser.ts — that file doesn't exist (aspirational/stale).agent-vitest-reporter.engine.test.ts fails on Windows only (path-separator expectations); green on Linux CI.draft / medium confidence) — leads, not canon.CONCEDE_HIGH_TIER_LEVEL/_STEP) — replaced by enemy.difficulty-derived floors.bossRungGrowth + rung-regrown event are UI-visible if the mobile app wants to telegraph "the boss recovers."The matrix pits the same 15-card preset against early wolves and 1,500-HP late bosses. Real play doesn't work that way: the player drafts, learns higher-rank cards, and upgrades as they go. So "Foundry late = 0%" conflates two different questions — "is the theme broken late?" and "is a starter deck supposed to beat a boss?" (it isn't). Some of the late wall is real (the DoT decay math), but some is measurement artifact.
Fix the harness, not just the cards — add a deck-maturity axis:
base (current 15-card recipe), developed (mid: swap 2 commons for the theme's uncommons at full copies), apex (late: + both rares guaranteed, commons upgraded to their higher-rank versions when item "upgrade paths" exist).Upgrade/Upgradeable/Ascend keywords and StS's card-upgrade economy.Implementation is cheap: presets already have card-id lists; snapshots are two more lists per theme in combat.deck-presets.ts + a matrix flag. No engine changes.
Grounded in the spread data and Dawncaster prior art (all analogues are community-sourced leads — kb:dawncaster, confidence medium). The 30-keyword proving gate still holds: anything marked NEW KW is a candidate for when you open the registry (or a swap for a failing keyword); everything else composes existing keywords.
Sequencing suggestion: maturity snapshots (§04) → re-baseline floors → item 3 → the four mid spenders as sandbox A/Bs via /deck-tuning → late rares → then judge whether DOOM/MOMENTUM/LIFEDRAIN earn registry slots with the proving-gate scoreboard as the evidence.