✠ The Chronicle

✠ ENTRY XI


Phase 32 (Theme Deep Work) finished its back half

Control, Oratory, Forge, and Oracle each landed a capstone mechanic in four back-to-back ticks. A same-day effects audit fixed two genuinely dead consumables and a silently-inert buff grant. The phase-mirror issue investigation from yesterday closed out — 9 stale issues shut by hand, Phase 35 queued to make the fix durable. Breadth checks and deploy gate both green; a large owner-authored combat-redesign decision brief landed in plan/ideas/ with seven unresolved calls waiting on you.

MECHANICS

Phase 32 parts 4a-4d — Control, Oratory, Forge, and Oracle capstones

What changed

four Gate-2 theme-defining mechanics shipped back to back. Control's TURNABOUT banks a per-combat rungsDeniedTotal ledger (accrued wherever BACKFIRE already reads its drip basis) and cashes the whole thing as one burst, replacing paralysis-of-analysis in its exact 70-card library seat. Oratory's milestone drip grants STAGGER rungs every PREMISE_MILESTONE_EVERY premises crossed, universal across every Premise source (own-card, borrowed FREE rider, or a future cross-theme grant). Forge's OVERHEAT lets a Reserve die already at its safe pip cap push further for OVERHEAT_BUST_CHANCE (35%) risk per pip, up to OVERHEAT_PIP_CEILING; a bust halves the die's pips instead of zeroing them, and half-step (the theme's most-played common) now carries the mechanic. Oracle's OMEN v2 kills the "always predicts HEART" complaint at the API level — a player now stakes a stance + window claim (play.omenClaim) with anteConviction paid up front, instead of a silent die-derived guess; a bolder (narrower) claim pays and costs more.

Why it changed

closes out build-plan Phase 32 (Theme Deep Work) parts 4a-4d — each of the four remaining themes gets a mechanic no other theme touches, the same Gate-2 bar Harvest/Bulwark/Akrasia cleared in parts 1-3. Only Part 1b (Souls cross-combat persistence, deliberately deferred) and the last Part 4 items (charm resolve milestones, echo) remain before Phase 32 closes entirely.

commits ab6aae15 · f4dd16bb · 543c090d · 8a78cb24

MECHANICS

Effect-wiring audit — two dead consumables, one silently-inert buff grant, two DoT timing fixes

What changed

a full pass over every combat effect payload for correct behavior and timing under the Hazard-Pattern engine turned up real bugs left over from the "THE STRIKE IS DEAD" redesign. Antidote and clarity-serum applied buff_cleanse, an empty duration-0 effect — items advertising "purges venoms" did nothing; buff_cleanse now carries a real payload.cleanse and routes through removeEffectsByType. Grace Momentum's payload used an undeclared field read only via a local cast — the working field is now declared on EffectPayload and the cast is gone. Separately, buff_haste (and its re-themed siblings) granted guaranteed stance advantage but clampPlayerRead never checked for it — the buff was cosmetic; it now actually grants the read. Two DoT-timing suspects were ratified as correct rather than changed.

Why it changed

the redesign left these payloads structurally present but functionally dead — nothing in the type system or the sim caught an effect with no readable payload, so the audit was the only way to surface them. Two pricing-relevant re-themes and cross-package (mobile, card-editor) doc drift shipped alongside.

commits 3d0479af · eed · 86

INFRA

Phase-mirror issue close made reliable — 9 stale issues closed, Phase 35 queued

What changed

root-caused yesterday's [2.4] AUDIT finding: GitHub only honors a commit's Closes #N trailer for pushes made directly to main, not for cross-session claude/* branches reconciled via merge — even when the trailer is present (Phase 32 Part 1's 7392573c had one and #83 still never closed). Closed the 9 confirmed-stale phase mirrors (#22, #25, #36, #47, #52, #54, #65, #69, #74) by hand, then queued Phase 35 to make ship-a-phase Step 12.5 close the issue idempotently via the GitHub API (state=closed) instead of trusting the trailer, keeping the trailer as belt-and-suspenders.

Why it changed

the phase-mirror issue list is exactly the signal /digest's pulse gather and /oversight read — a coin-flip close rate silently degrades "what's in flight" into an unreliable mix of open and long-done. Diagnosed and shipped same-day via issue-triage 2026-07-14 (merged PR #87).

commits c61bef48 · eed · 87

UI

DevLog catalog renders each card as its real in-combat face

What changed

the Cards catalog previously showed a bare painting plus a list of stat chips and rules text. It now renders the actual in-game card face — art window with stance tint, stance orb + category glyph, name band, the ◇ FREE / ◆ DIE split rail, printed die line, and type strip — produced by the game's own faceStats presenter (the exact VM the combat board renders), so the catalog face can never drift from what a player sees on the board.

Why it changed

the old chip-list view was catalog-only styling that could silently diverge from the real card face; sourcing the render from the shared presenter closes that gap permanently instead of re-auditing it by hand each time a card face changes.

commits 6c7770f6 · eed · 85

✠ The marginalia


The night's watch — what ran while nobody looked
Time (UTC)VerbOutcome
2026-07-14 08:31 → 08:38march (scheduled)tick succeeded
2026-07-14 (window)issue-triage session (PR #87)9 stale phase issues closed, Phase 35 queued
2026-07-14 (window)oversightdrained resolved CardSpecialMechanic export finding
2026-07-14 12:40 (window)owner/cloud session (PR #85, #86)DevLog catalog face render + effect-wiring audit merged
2026-07-14 14:19 → 15:27march (scheduled)tick succeeded — Phase 32 part 4a (TURNABOUT) shipped
2026-07-14 19:49 → 20:14march (scheduled)tick succeeded — Phase 32 part 4b (Oratory milestone drip) shipped
2026-07-14 (window)docs archivecombat foundational redesign decision brief landed in plan/ideas/
2026-07-15 03:41 → 04:26march (scheduled)tick succeeded — Phase 32 part 4c (Forge OVERHEAT) shipped
2026-07-15 08:38 → 09:49march (scheduled)tick succeeded — Phase 32 part 4d (Oracle OMEN v2) shipped

15 commits landed since yesterday's digest. Build-plan queue (plan/steps/01_build_plan.md): Phase 32 (Theme Deep Work) now has parts 1-4a-4d shipped; Part 1b (Souls persistence, deferred) and the remainder of Part 4 (charm resolve milestones, echo) are what's left before the phase closes. Phase 35 (reliable phase-issue auto-close) is freshly queued behind it. plan/AUDIT.md: 10 pending — the CardSpecialMechanic export finding drained via oversight, the Playwright-install gap ([3.2]) is still open (worked around by hand again this run — see Needs you), and [2.4] (phase-mirror close) stays open in form even though its root cause is now understood and Phase 35 is queued to actually fix it. plan/CRITIQUE.md: unchanged at 25 pending (last pass 2026-07-10 at commit 3dc27d24, now 112 commits back) — 8 HIGH rows still queued, so /march's critique gate correctly stays closed rather than starved. plan/PHASE_CANDIDATES.md: 10 pending, untouched this window. No open triage:needs-user or loop:do issues. Deploy gate: HEAD (c70ed546) is a plan-only commit — no gated verify-* workflow triggered, nothing to check. Breadth check (SMOKE_SAMPLE=full npm run e2e:minigames, browser installed by hand again — AUDIT [3.2] is still open): hazard, combat, gathering, encounter-routing, exploration-roundtrip — ALL PASS.

The measure — did the fighting change?

None filed by digest this pass. /march's critique gate is correctly held closed by the 8-HIGH-row backlog condition, not by starvation — no constraint change 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.