✠ The Chronicle

✠ ENTRY XVI


A quieter night than the last two

one boss mechanic, one repo-wide logging system, and a swap-pool promotion PR, all landed before this digest opened. The stale baseline re-measured mid-game win rate climbing for the second day running (7.3% → 31.0% → 35.3%) while late-game sits flat at 0% against a 25-35% target — the collapse is splitting into a self-correcting half and a stuck half. Breadth check needed the same by-hand Playwright install as every recent run (still-open AUDIT [3.2]) but came back ALL PASS across all six suites once unblocked.

MECHANICS

THE COVETED DIE — phase 33c

What changed

boss and unique threat phases can now carry a stake: a die the boss steals on the 2nd step of all 18 authored boss/unique sequences (14 bosses + 4 uniques) unless the player answers the stance-check, blocks it, or staggers the phase to 0 first. The steal mirrors the momentum-surge temp-gold-die payout exactly (table-full overflow converts to +1 Conviction) and is capped once per phase index per combat so a repeating final phase can't be farmed.

Why it changed

closes #110 — gives named threats a mechanical "stakes" identity beyond damage numbers, reusing the existing payout/overflow plumbing rather than inventing a new one. Inert while the upgradeable-dice flag is off; no mobile UI yet (rides with a later follow-up).

commits fc7fddbf · 345cb0a6

INFRA

Repo-wide structured logging ships — engine, mobile, CLI

What changed

a new src/Log structured logger taps combat, the game store, and RNG seeding in the mechanics engine; the mobile app gets an __AXM_LOG__ bridge, a crash tail, a dev log viewer, and an error-screen log section; both the mechanics CLI and the playtest sweep CLI gained additive --log-level/--log-file flags, the latter with a per-cell replay index.

Why it changed

owner-directed, direct-to-main (contract in docs/logging.md) — gives CLIs, the mobile app, and future drivers one shared log stream instead of scattered console.log calls. Three deferrals (engine-side minigame taps, Sentry-class crash reporting, native clipboard) are filed as a plan/PHASE_CANDIDATES.md entry rather than bundled in.

commits 26a76560 · 56b589d0 · 4b5ae049 · fc427d86 · 97d66cb7

BALANCE

9 swap-pool candidates promoted into preset seats

What changed

nine measured candidates from the 2026-07-18 swap-pool pass move from sandbox into cards.library.ts (70 → 79 cards) and their preset recipes: poisoned-well (erosion), videtur-quod + quod-erat-demonstrandum (oratory), tempered-edge (foundry), half-spoken-prophecy (augury, recolored mind→body), grace-under-fire (grace), pebble-in-the-boot + the-anvil-speaks (bastion), and the-burden-of-repetition (refrain, recolored heart→body).

Why it changed

owner-ratified 2026-07-19 off combined-matrix evidence; D8 valve seats were re-seated where the law required. Full ledger in axiomancer-mechanics/docs/reports/deck-tuning-2026-07-19-promotions.md.

commits fc98fb7a · 3188a154 · 02d4d907 · (PR · 138

MECHANICS

Phase D9 — authored stance-check variety

What changed

stanceCheck? now threads additively onto authored threat phases and branch outcomes; PR #109's 22-check content batch ports across 14 enemies, giving every boss ≥2 distinct named stances across its sequence per spec 33 §2. D6e's uniform default backfill is untouched — an authored value wins, an absent one still gets the default.

Why it changed

closes #137. The asymmetric authored checks carry less aggregate yield exposure than the uniform two-sided default, so the D7-ratified yield-income floor was lowered (0.15 → 0.12) with margin rather than re-authoring content back toward uniform density.

commits a336fcba · 2848fb6a · f8c902e4

UI

Combat declutter pass — smaller dice/cards, rail names, glyph pop

What changed

four owner-playtest follow-up commits: tray dice and cards both shrink (~1/8 and ~9%), the card name moves onto the stance rail as a centred rotated label (fixing a two-letter truncation bug along the way), FREE glyphs get an explicit z-order fix plus a dialed-in white-lift pop (0.3 → 0.12 after one overshoot), and the upgradeable-dice e2e's SWAY-commit guard was retargeted off the corner-medallion-occluded leftmost card.

Why it changed

the owner flagged the combat screen as reading too busy; each commit is a same-day playtest-and-fix pass. Filed 3 LOW CRITIQUE residue items along the way (medallion occlusion, dead flag-off render paths, hex-literal accretion) rather than scope-creep fixing them inline.

commits d636f946 · 5cb57a4e · 42d8837d · 249a9853 · (PR · 135

INFRA

Guard/telemetry hooks resolve via CLAUDE_PROJECT_DIR

What changed

the guard and telemetry hooks now resolve their paths off CLAUDE_PROJECT_DIR instead of a relative/cwd-dependent lookup.

Why it changed

hooks were breaking when invoked from a subdirectory cwd — this makes them cwd-independent.

commit a8b32ff7

✠ The marginalia


The night's watch — what ran while nobody looked
Time (UTC)VerbOutcome
07-19 13:56 → 14:04march (scheduled)combat declutter pass residue (PR #135 merge, D-FLIP block note)
07-19 19:34 → 19:56march (scheduled)Phase D9 briefed and shipped (authored stance-check variety)
07-20 04:07 → 04:30march (scheduled)repo-wide structured logging shipped (engine + mobile bridge)
(gap, no march tick)manual/direct sessionhooks CLAUDE_PROJECT_DIR fix + playtest-sweep CLI log flags landed between ticks
07-20 09:39 → 10:06march (scheduled)Phase 33c shipped (THE COVETED DIE)
07-20 (this run)digestthis entry — baseline re-measured (stale by 5 commits), breadth check re-run and unblocked by hand

25 commits landed since yesterday's digest (80c75e7b). Build-plan queue (plan/steps/01_build_plan.md): 53 [x], 2 [ ] (Phase 33d — GLYPHS pilot; Phase 37 — retire fallacy/paradox category), 1 [blocked:] (Phase D-FLIP, superseded by the unmerged D10-D12 teardown decision, awaiting /oversight). plan/AUDIT.md: 36 pending (4 marked [x] resolved but not yet filed to Done; two new rows filed this run — a doctrine-curve reconfirmation and a skill/reality drift in skills/digest.md itself, both below). plan/CRITIQUE.md: 39 pending, last pass 2026-07-17 — three days stale now. plan/PHASE_CANDIDATES.md: 30 pending. No open triage:needs-user or loop:do issues. Deploy gate: HEAD (345cb0a6) is a plan-only tick, no gated verify-* workflow triggered yet (grace window) — nothing to check. Breadth check (npm --workspace axiomancer-mobile run e2e:minigames — the digest skill's own SMOKE_SAMPLE=full npm run e2e doesn't exist in this repo, filed below): Playwright's Chromium headless-shell binary was missing again (still-open AUDIT [3.2], installed by hand a third time), then hazard, combat, gathering, encounter-routing, exploration-roundtrip, and upgradeable-dice all ALL PASS with no NOTEs.

The measure — did the fighting change?

Baseline was STALE by 5 mechanics-source commits at open (f8c902e4 → 5 commits ahead, including THE COVETED DIE and the swap-pool promotion). Re-measured reduced-nightly (30 runs/cell, seed 1, 345cb0a6) — directionally honest, not confirmation-grade:

StageThis runPrior (f8c902e4, full)Doctrine bandVerdict
early86.1%86.9%~80%in band, noise-level move
mid35.3%31.0%~50%still under band, but +4.3pt — second straight gain
late0.0%0.0%25-35%doctrine violation, flat zero, three measurements running
impossible0.0%0.0%0%in band, unchanged

Mid-game's two-digest climb (7.3% at the 2026-07-18 digest → 31.0% post-swap-pool-promotion → 35.3% tonight) looks like a real trend from general content/engine work, not noise. Late-game has not moved from 0% across the same window despite two boss-facing mechanics (D9's stance-check variety, 33c's coveted die) landing in between — neither targeted late-game difficulty directly, and neither moved it. Filed as an updated plan/AUDIT.md row (see above); no code/deck changes made here per the digest's own rails — the "Post-D8 flag-on curve repair" plan/PHASE_CANDIDATES.md entry is where this gets acted on.

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.