✠ The Chronicle

✠ ENTRY XIII


Phase 32 closed and Phase 33a shipped on schedule

but the night's real story is measurement: the deck-matrix baseline came up STALE by 34 mechanics-source commits, so this digest re-measured it live (reduced nightly pass) instead of just reporting the alarm. The new numbers say the mid/late-stage win-rate collapse — already a HIGH plan/CRITIQUE.md row — didn't move at all despite phase 31-32's fixes landing on top of it. Breadth checks and deploy gate both green; a sizable chunk of tonight's work landed off the /march loop entirely, on a human/Hermes branch the loop can't see until a digest reconstructs it from git log.

MECHANICS

Phase 32 closes — Harvest Souls persist across combats + soul-bank milestone epithets

What changed

the deferred Part 1b (cross-run Souls persistence — new save slot, migration, mobile carried-bank surface) and Part 1c (milestone epithets on the soul-bank UI) shipped back to back, flipping Phase 32 (Theme Deep Work, all ten themes) to [x].

Why it changed

Part 1b was deliberately held out of every earlier Part-4 slice as cross-run scope; closing it was the last gate on the phase, tracked since the 2026-07-15/16 digests as the one remaining piece.

commits 801e2d26 · ed829447 · 30a0d511

UI

SIDE RAIL card-face design (#5) ships across editor/mobile/catalog; PAID prose authored for all 10 presets

What changed

the owner-picked #5 SIDE RAIL card-face layout landed across the card editor, mobile combat board, and the devlog catalog, with effect-shaped FREE glyphs, a generated Glyphs legend, and authored PAID prose for every preset-seated spell (46 of them, plus the last 5 presets finished tonight). A same-day collision with a cloud-shipped "Option A" catalog port was resolved in SIDE RAIL's favor per the standing collision policy (keep the implementation the session interlocks with).

Why it changed

closes out the card-face work queued since the SIDE RAIL design review; the reconcile also regenerated the catalog against the merged Phase 32 library so devlog/catalog data doesn't drift from what shipped.

commits 3a9912ad · 503ebea6 · 96888084 · 2249375e · d4f3a4f9 · ef6a0ca3 · 4687d804 · 4f370c6e · eed · PR · 91

INFRA

Measurement freshness alarm + stamped catalog + nightly reduced re-measure

What changed

npm run baseline:check now fails loud when the checked-in deck-matrix baseline falls behind mechanics-source commits, the catalog carries a measurement stamp, and this digest's nightly leg gained a baseline:regen --confidence=reduced-nightly re-measure step (§3b).

Why it changed

the prior baseline sat stale at 2026-07-12 through 34 mechanics-source commits — including the phase 31/32 fixes aimed at the very win-rate collapse it was supposed to be measuring — with nothing forcing a re-check. Tonight is the first time this alarm fired for real and the nightly leg answered it; see While you were out.

commits 58750dd0 · eed · PR · 92

MECHANICS

Phase 33a ships — sway/premise counterplay hooks

What changed

CombatThreatEffect.swayCleanse / .premiseShed let authored threat phases shed the player's live SWAY or spendable Premise tally (mirroring enemyCleanse's shape), and deriveIntentType now correctly telegraphs these as debuff. Re-scoped mid-tick after finding the build-plan's literal Phase 33a scope ("one reactive verb + lethality readout") already shipped via WS9 and Phase 2/28 — the actual gap was these two engine hooks, which Phase 33b's enemy archetypes need.

Why it changed

unblocks Phase 33b (enemy archetypes + variable-rung telegraphs) without re-litigating already-shipped ground.

commits b5a94423 · 69b2ccf1 · 97903081 · ced · 94

INFRA

Phase 34 ships — non-MCP unattended critique transport

What changed

axiomancer-mobile/scripts/critique-drive.mjs drops the Playwright-MCP-into-subagent hop that was silently killing 8 of the prior 11 unattended /critique passes (zero findings filed) and drives the cold-enterable screen set as a plain Node subprocess instead — screenshot + DOM text + console errors per screen, for the main agent to read and judge.

Why it changed

unblocked tonight's critique pass 13 (see While you were out), the first unattended pass to run on the new transport end to end.

commits eab8429a · 86d37c17 · ae · 34 · `[x]`)

INFRA

Harness hardening — write guards, telemetry, and the asking-well doctrine

What changed

a pre-write guard blocking edits to kb/ and measured baseline JSONs, a post-write lexicon-check hook, a session-start freshness banner, a rotating TELEMETRY.md invocation log, a canonical question-writing doctrine (docs/asking-well.md), an agent-guide restructure, and standing rule 7 ("file the residue") all landed in one human-driven session, plus a settings change allowing Claude to read .env (previously denied).

Why it changed

closes out the 2026-07-16 session's own residue per the new rule 7 it introduces — decisions and harness gaps found while working get filed, not dropped.

commits b59647f2 · b4870384 · 1889f315 · 10377ae7 · 289323a4

✠ The marginalia


The night's watch — what ran while nobody looked
Time (UTC)VerbOutcome
07-16 14:28 → 14:49march (scheduled)tick succeeded — Phase 32 Part 1b (Harvest Souls persistence) shipped
07-16 19:37 → 19:58march (scheduled)tick succeeded — Phase 32 Part 1c (milestone epithets) shipped; Phase 32 [x]
07-16 ~20:00 → 07-17 00:26 (window)human/Hermes session, branch claude/card-text-paid-effects-3cd590SIDE RAIL card-face + PAID prose, measurement-freshness alarm, harness hardening, asking-well doctrine — PRs #91/#92/#93 merged; invisible to /march's own state until reconstructed here
07-17 03:44 → 04:18march (scheduled)tick succeeded — Phase 33a (sway/premise counterplay hooks) shipped, re-scoped mid-tick
07-17 08:31 → 08:42march (scheduled)tick succeeded — /critique pass 13 ran: re-confirmed 2 of 4 stale-flagged findings still live, zero new findings
07-17 10:25 → nowdigest (scheduled)baseline was STALE by 34 commits → re-measured (reduced-nightly) → FRESH at bf0d3712; breadth check ALL PASS

21 commits landed since yesterday's digest (095f4092). Build-plan queue (plan/steps/01_build_plan.md): Phase 32 and Phase 34 both closed tonight; Phase 33a shipped, 33b/33c/33d still queued behind it; Phase 35 (reliable phase-issue auto-close) remains unstarted. plan/AUDIT.md: 9 pending (was 8; filed one new finding tonight — see Needs you). plan/CRITIQUE.md: 29 pending (9 HIGH, 14 MED, 6 LOW; last pass 13, 2026-07-17 at b4870384) — up from 25 pending / 8 HIGH at the last count, mostly from tonight's card-text session filing new rows. plan/PHASE_CANDIDATES.md: 11 pending, untouched this window. No open triage:needs-user or loop:do issues; one open phase-mirror issue (#83, Phase 32) that should have closed on ship but didn't — a known gap, already tracked as plan/AUDIT.md [2.4] and queued as Phase 35. Deploy gate: HEAD (bf0d3712) is a docs/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] still open): hazard, combat, gathering, encounter-routing, exploration-roundtrip — ALL PASS.

The measure — did the fighting change?

Baseline re-measured this pass (reduced-nightly, 30 runs/cell, seed 1, commit bf0d3712) — required, since baseline:check reported STALE by 34 mechanics-source commits at session start. No band moved meaningfully against the 2026-07-12 measurement (see Needs you for the numbers), so no doctrine-violation row is newly filed — both violations (mid ratchet, late collapse) are already open HIGH rows in plan/CRITIQUE.md, unchanged by tonight's remeasure. No mistuned gate in evidence: the critique gate, the march dispatcher, and the ceiling all behaved as designed tonight (two phases shipped, one critique pass ran clean). None filed by digest this pass.

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.