✠ The Chronicle

✠ ENTRY VIII


A one-day sprint that shipped five build-plan phases (26-30

the Turn Law, honest re-baseline, legibility sweep, keyword honesty, FREE-currency content pass), then reconciled that with a parallel owner session's 5/5/5 color-law rebalance and die-drop enforcement pass through one large, explicitly-documented merge. Breadth checks and deploy gate both green; nine fresh CRITIQUE findings filed from the review closeout, two of them HIGH.

MECHANICS

Phase 26 — the Turn Law

What changed

startTurn now refuses a second dice-tray roll within the same threat phase (a new turnTakenThisPhase invariant); resolveThreatPhase re-arms it at the phase boundary. Card plays, floats, and Reserve spends stay ungated — only the tray-roll is capped once per phase.

Why it changed

sim policies, autoplay, and the CLI had been silently exploiting an endTurnstartTurn loop to farm extra dice-trays per phase, which is what every pre-Turn-Law win-rate curve was actually measuring. KNOWN_CURVE_VIOLATORS dropped from 3 entries to 0 once the exploit closed — every starter preset now passes curve shape honestly.

commit 6ea123fc

BALANCE

Phase 27 — the honest re-baseline

What changed

re-ran the full combat matrix under the Turn Law and re-derived every curve band, statusEngagement figure, and dead-card rate from scratch.

Why it changed

the farmed numbers Phase 26 killed had propped up every prior balance decision. The honest cut: mid win rate 3-28% (was a farmed 50%+), late flat 0.0% against a 25-35% doctrine target — every pre-2026-07-10 plan/tuning/ number now carries an asterisk, lifted only by this report.

commits 70c64501 · ffadca96

UI

Phase 28 — Show the Engine (legibility sweep)

What changed

nine previously-invisible or silently-wrong engine states now render: a per-card rupture-burst preview, the Premise track + CONCEDE beat, a labeled BACKFIRE damage float, a foretold-card toast, a REPRISE discard-pile picker (was always auto-picked), a wall-math net-damage readout on enemy intents, and STAGGER-rung denial in the disrupt meter (previously under-reported).

Why it changed

the doctrine is "show the engine, don't narrate around it" — several of these (BACKFIRE having no FX case at all, the disrupt meter silently drifting from what resolveThreatPhase actually denied) were outright lying copy, not just missing polish.

commit 60af3044

CONTENT

Phase 29 (partial) — keyword-language honesty pass

What changed

folded 6 previously-unmapped debuff ids into the keyword registry (killing blank "◆ DIE" card faces), renamed 3 colliding keywords (FESTER→PROLONG, TRANSMUTE→REARGUE, REPRISE→RECALL), fixed 15 of 20 enchant/disenchant cards whose persistentEffect string named no live registry keyword, and added a systems glossary to the combat card-detail overlay.

Why it changed

status-effect play is this game's core fun path — keyword collisions and unglossed debuff ids made the win path illegible on the board itself.

commits cc39fb5f · 4e920d9c · 51 · edce · effec · deeed · in · e · ae · ee · — · still · aced · AA · in · e · bd · a · 256 · 7 · ea · e · e · ae01bdad

CONTENT

Phase 30 — FREE-currency law (70-card content pass)

What changed

retired the TICK registry-wide and rewrote all 50 spell cards' FREE lines to deposit theme currency (a MARK seed, +1 Premise, a short-fuse Bleed, persistent Guard, etc.) instead of generic damage or draw; added three new CardRider verbs end-to-end (barrier, recoil, millCards) and a permanent FREE-currency lint banning bare-utility FREE lines.

Why it changed

closes the owner's "weak basic chip OR real status effect" fork complaint — every FREE line now feeds the status-effect win path instead of offering a damage/draw escape hatch around it.

commit 5e723df3

BALANCE

5/5/5 preset color law + die-drop enforcement round 2

What changed

rebalanced all 10 starter presets to exactly 5 body / 5 mind / 5 heart cards under a 4+1/4+1/2+2+1 partition, un-stranding three decks whose mid-stage win rate was near zero from color starvation (oratory 0.05→0.40, penitent 0.13→0.42, refrain 0.05→0.45); die-drag now rejects off-color or already-armed drops with a shake/haptic/red-x ghost instead of silently failing, and mobile's END PHASE now correctly banks the unspent drafted die to Reserve instead of wiping it.

Why it changed

owner playtest directives, ratified 2026-07-12 (spec 32 §12 item 9) — three presets were effectively unplayable past the early stage before this fix.

commit f325c423

INFRA

Reconciliation merge — Phase 30 vs. the 5/5/5 color-law session

What changed

merged origin/main's Phase 30 (FREE-currency 70-card pass) with this session's honest re-baseline + review-fix + color-law work under an explicit, written per-area resolution policy (cards, sandbox, effects, engine each called out separately), then regenerated the deck-matrix baseline at the merged tree.

Why it changed

two large sessions landed the same content area on the same day — the merge commit is the reconciliation record so neither side's work silently lost the other's.

commit 9723d31a

CONTENT

Dawncaster comparison → 11-workstream plan, doctrine hygiene

What changed

a full card/keyword/combat comparison against the Dawncaster corpus produced an 11-workstream execution plan; WS0 (doctrine hygiene) shipped first — deleted the dead 'strike' signature arm and STRIKE_DAMAGE_MULT, deprecated the legacy die-cost classifier, and removed dead legacy-equipment residue.

Why it changed

a clean vocabulary gate before the larger content workstreams (FREE/PAID telemetry, per-theme rares, sequencing grammar) could safely build on top of it.

commits 62edb375 · 1a215438 · f196d219 · 44b07c85 · 51a54882 · 0bf9828f

✠ The marginalia


The night's watch — what ran while nobody looked
Time (UTC)VerbOutcome
2026-07-11 13:57 → 14:50marchtick succeeded, no product ship this cycle
2026-07-11 15:03 → 16:34march (workflow_dispatch)cancelled — owner took the branch over for the day-long Dawncaster/color-law session
2026-07-11 (all day) → 2026-07-12 09:19owner (direct, branch sessions)Phases 26-30 shipped; Dawncaster comparison + WS0 doctrine hygiene; 5/5/5 color law + die-drop enforcement; reconciliation merge; PR #68/#71 merged

Build-plan queue (plan/steps/01_build_plan.md): Phases 26, 27, 28, 30 shipped this window; Phase 29 stays PARTIAL (KW-2/5/6/7 open); 5 phases pending (29 partial, 31-34), no [blocked:] rows. plan/AUDIT.md: 8 pending — row [3.2] (night workflow never installs Playwright's browser) is unchanged for a fourth digest running, worked around by hand again this run. plan/CRITIQUE.md: 19 pending — 9 new rows filed this session's review closeout (2 HIGH: the tuning-harness draft scorer starving new cards, and the global late-stage 0.00-win-rate collapse across all 10 presets), plus the 6 playtester findings from pass 12 and the 2 legacy external-critique patterns, all still open. plan/PHASE_CANDIDATES.md: 10 pending, 0 promoted this pass (/expand has never run — pass count 0). No open triage:needs-user or loop:do issues. Deploy gate: CI green — all 3 verify-* workflows succeeded for HEAD (ac068da0). Breadth check (npm run e2e:minigames, browser installed by hand): hazard, combat, gathering, encounter-routing, exploration-roundtrip — ALL PASS.

The measure — did the fighting change?

None filed by digest this pass (in scope: loop-gate mistuning only). The one march run in this window that didn't complete was an owner workflow_dispatch cancellation to take the branch over for manual work, not a gate failure — no mistuning signal to propose.

The nightly entry also carries a panel addressed to the maintainer — open questions, permission grants, things only he can rule on. It is held back from this page: it is correspondence, not a report. The unfinished work it tracks is published above, in plain words.