✠ The Chronicle

✠ ENTRY IX


A dense overnight-plus-day window

Phase 31 ("The Roll and the Read" — momentum wheel goes engine-native, THE STAKE ships, signature dominance repriced) landed in three parts, Phase 29's status line got corrected to match reality, a seven-PR card-clarity audit thread closed out two full legibility passes (catalog faces + mobile overlay + engine wording), and a cleanup pass shipped attribution honesty and a scrap-spam gate. Breadth checks and deploy gate both green.

MECHANICS

Phase 31 — The Roll and the Read

What changed

the combat momentum wheel moved from a mobile-side state splice into the engine (advanceMomentumWheel, gated on a landed card-played event); a new THE STAKE action lets the player wager 2/4/6 Conviction post-draft on the enemy's hidden stance, settling at the top of resolveThreatPhase into a floating-die mint (win) or an escalation-clock penalty (loss); and sig-conviction-strike was repriced 7→8 Conviction after a 540-run stage matrix showed it took 83.6% of all signature casts, crowding out sig-overwhelming-argument at the same affordability threshold.

Why it changed

closes build-plan Phase 31 (bundled per 01_build_plan.md's row, issue #82) and, as a side effect of reusing the floating-die pool for the wheel-granted die, likely fixes the standing HIGH plan/CRITIQUE.md finding that the wheel's forged wild die couldn't be dragged onto any card and silently burned as a spare — worth a /iterate confirm-and-drain pass.

commits a5df832b · 380e3849 · 48c89f34 · 040202fd · 610541d3

MECHANICS

Phase 29 — correcting the record

What changed

the build-plan status line said Phase 29 (keyword-language honesty pass) was PARTIAL; both workspaces' full verify gates (2496 + 2557 tests) confirm the cloud-loop commit + reconciliation merge already shipped the full scope. Flipped the status line to shipped instead of re-doing already-landed work.

Why it changed

the earlier PARTIAL note was stale — re-touching keywords.ts/card-themes.ts/the keyword atlas to "finish" work that was already there risked duplicate or conflicting edits.

commit db9cceca

CONTENT

Card-catalog clarity audit — game-faithful faces (PRs #75-#78)

What changed

a four-PR thread closed the catalog exporter's fidelity gap: regenerated stale artifacts, then swapped the catalog's bespoke card-text re-derivation for the game's own toCombatCard renderer (failures 40/70 → 18/70), planned the residual 18 against real engine values (13 "surface the value" + 5 needing an owner ruling), then implemented both buckets plus a fresh-audit extra sweep — RUPTURE ALL glosses, real percentages/multipliers on six cards, a Mirror of Guilt engine fix (enemy-inflicted debuffs no longer reflect), and popup coverage for every printed keyword (previously ~30 keywords had no popup at all).

Why it changed

the catalog and the in-game overlay were both silently lying about several cards' real numbers — a clarity doctrine violation the owner scoped as "player must 100% know what a card does."

commits 5ad01930 · 826ae7d6 · 75d25735 · f94685fb · 7320faee · 0b4dfe0c · 04104ddd

UI

Card-wording & overlay clarity (PRs #79-#80)

What changed

a headless-Chromium harness captured all 70 card overlays across every starter deck; ten judge passes flagged the NO-DIE pill as pure duplication of the card face and the +DIE pill as collapsing multi-effect paid lines to one keyword. Fix: deleted the NO-DIE pill, widened +DIE to the full authored paid line, registered MILL (previously printed on 3 cards with no gloss anywhere), and added board glyphs for attached enchantments (❖) and curses (☒) — "the single most consequential legibility gap," since no effect id had ever backed a persistent passive's board presence.

Why it changed

keyword panels were truthful but looked orphaned because the pill above them hid the very effects they were defining.

commits 24b4d5bb · f9f91a7a

CONTENT

Card-clarity audit round 2 — every flagged face self-explains (PR #81)

What changed

fixed all 14 findings from a fresh catalog-only audit (face + keyword atlas, no code read): riders now name what they boost, RUPTURE's bonus always prints "damage" (never the undefined "fuel"), CONCEDE prints "you win", the two non-registry DoTs print their bite inline, and three ambiguous persistentEffect strings now name their own mechanics. Established one wording rule: an effect clause names its side only when it crosses the card's own printed target.

Why it changed

extends the 2026-07-12 wording audit to the engine-generated face text itself — text every carrier shares, so each fix repairs every occurrence of that pattern at once.

commit 91f7ecb2

MECHANICS

Cleanup pass — attribution honesty, scrap gate, legibility sweep

What changed

buildCombatSummary now sums enemy DoT from emitted tick events instead of projecting a DoT's whole remaining life (was over-attributing damage to the wrong source); discardCombatCard caps free Conviction-refund scraps at 2/turn before further scraps cycle for free (closes a scrap-spam exploit); a drag-interrupt-recovery hook was added for the card tray; and a debuff_petrify library tag was backfilled to satisfy the v3 deprecation contract after a same-day verify-mechanics failure.

Why it changed

completes plan/cleanup/Clean-up-pass-07-11.md's WI-9/WI-10 + P2 legibility items (HP→VITAE sweep, RESONANCE gloss, a11y states).

commits b097efec · 88406af8 · cc65ce4d · 9e75c2dc · 1101f660

INFRA

Architecture map + CI trim

What changed

added docs/external-architecture.md mapping Axiomancer's external surfaces; removed preview-build.yml's daily 09:15 EST cron (scheduled EAS builds are now attended-dispatch only).

Why it changed

cut Actions minutes spent on unattended EAS builds nobody was consuming; the architecture doc gives the loop one map instead of scattered tribal knowledge.

commits cc7f7a25 · f8f47424

✠ The marginalia


The night's watch — what ran while nobody looked
Time (UTC)VerbOutcome
2026-07-12 19:35 → 19:45march (scheduled)tick succeeded
2026-07-12 (window)owner/cloud sessions (direct commits + PRs #75-#81)catalog + overlay + card-clarity audit thread; cleanup pass; architecture doc; CI trim
2026-07-13 04:06 → 04:24march (scheduled)tick succeeded
2026-07-13 09:51 → 11:04march (scheduled)tick succeeded — Phase 29 correction + Phase 31 (3 parts) shipped

Build-plan queue (plan/steps/01_build_plan.md): Phase 29 corrected to shipped, Phase 31 shipped this window; Phases 32-34 pending, no [blocked:] rows (32/33 route to /deck-tuning; 34 is the non-Playwright critique transport). plan/AUDIT.md: 9 pending — row [3.2] (night workflow never installs Playwright's browser) is unchanged for a fifth digest running, worked around by hand again this run; it is tied for the highest score in the file (3.2) yet keeps losing to pending-phase work under /march's "deliveries first" dispatch order (skills/march.md §: pending phase ships before /iterate) — not a mistuning, just a real cost of a phase-heavy window; flagged below. plan/CRITIQUE.md: 25 pending (up from 19 two digests ago) — none drained this window for the same reason; 8 of the 25 are HIGH. One, "momentum wheel's forged wild die cannot be spent," was very likely fixed as a side effect of Phase 31 part 1 reusing the floating-die pool — unconfirmed, needs a play-test to drain. plan/PHASE_CANDIDATES.md: 18 pending, 0 promoted (/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 the last code commit (610541d3); HEAD (4efbdfd4) is a plan-only commit that triggered no gated workflow. 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. The CRITIQUE backlog growth above is a real signal but traces to /march's documented "deliveries first" dispatch order (pending phases ship before /iterate//critique drainage) rather than a mistuned gate or ceiling — no constraint change to propose; noted under Needs you instead so a human can judge whether the phase-heavy queue should be re-sequenced.

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.