✠ The Chronicle

✠ ENTRY XLVII


Content lifecycle hits its stride

cards, equipment, enemies, and keywords have all now logged a first /adjust-* pass (only npcs is still "never") — while the hosted kb-query MCP becomes the sole corpus path and a combat-playtest fix lands truth-telling + board legibility work. The nightly breadth check turned red for the first time in weeks: a die a11y copy-drift row filed two days ago finally tripped a hard assertion in upgradeable-dice-e2e, now escalated in plan/AUDIT.md. A fresh reduced-nightly measurement reads 97/96/86/26% terminal win rate across early/mid/late/impossible — directional, not confirmation-grade.

CONTENT

Content-lifecycle stewards complete their first sweep — 4 of 5 categories now report a pass

What changed

adjust-cards, adjust-equipment, adjust-enemies, and adjust-keywords each ran their debut pass this window. adjust-cards shipped 11 card-face-honesty fixes; adjust-equipment rewired 5 dead consumables that silently applied nothing on use; adjust-enemies created 2 cavern-native enemies (the caverns pool was 71% forest re-treads) and backfilled 3 missing Aporia boss portraits; adjust-keywords retired CURDLE (one live carrier, below the atlas's own ≥2-carrier discipline), fixed a stale drift note, and fixed a real parser bug in the axio-query MCP server's registry-count logic. Each pass also filed what it found but didn't act on solo — three [loop-call] rows now sit in plan/AUDIT.md awaiting an owner or a mechanics-expert pass.

Why it changed

/forge's per-item content lifecycle split (2026-09-03, PR #278) gave cards/equipment/enemies/keywords/NPCs each a standing steward with create/update/retire authority; this window is the first time the rate-limited /march gate actually rotated through four of the five.

commits f29cea5c · cad · a22673e3 · ee · 04d2bf0d · + · 43119a01 · eee · bf6223f1 · + · 42cc0412 · ed

MECHANICS

Combat playtest fix 2026-09-04 — engine truth-telling + board legibility

What changed

HIDE soak and RAVENOUS/REGROW/STAGE/THREAT heals now emit events so the UI can narrate what moved; FREE plays fire the card-played DoT clock (poison previously only ticked on paid plays); projected lethality now nets enemy heal-per-round so the "LETHAL IN N" meter stops lying against a healing foe. Mobile side: a persistent, scrollable combat log, a corrected stance-check readout, a fixed lethality meter, and a tutorial coach anchored under the HUD instead of over the dice.

Why it changed

An owner playtest session on 2026-09-04 surfaced several places where the board was either wrong (lethality meter ignoring heals) or illegible (stance-check text, tutorial coach placement); residue it didn't fix (art-register incoherence, the elite-tier first fight) was filed to plan/CRITIQUE.md instead of guessed at.

commit 636f3040

INFRA

KB sync retired — the hosted kb-query MCP becomes the sole corpus path

What changed

Deleted the gitignored kb/ snapshot and scripts/kb-sync.mjs along with every fallback reference across guards, skills, and design agents. external-architecture's file/script/CLI-fallback rule is now explicitly scoped to repo-owned data (axio-query, playwright); kb-query is named the deliberate exception, since the corpus is external and not ours to mirror. Wishlist writes move from a direct push into the KB's now-protected main to gh issue create --label wishlist.

Why it changed

The KB's MCP server is deployed and live over HTTP, so the local snapshot was dead weight papering over a fallback that no longer degrades gracefully — the docs now say so instead of implying otherwise.

commit 60b82f57

BALANCE

Card forge sweep flags a non-monotonic campaign lineage

What changed

A full stage/preset sweep found threadbare beating pilgrim at the late stage on nearly every enemy/policy cell, with apostate beating both — flagged as a headline follow-up rather than guessed at. One KB-grounded swap measurement (the-plague-pit for pauper's-pyre in apostate) showed a real tradeoff (+8pp impossible, -12pp vs the-abortive) and was left unshipped pending further diagnosis.

Why it changed

THE BIG NUMBERS REWRITE (2026-09-02) repealed the old CQI/win-rate-band doctrine this skill file still referenced; the report records that the stale doctrine couldn't be patched this pass (blocked by the permission classifier) rather than silently ship against it.

commit 195c4a18

INFRA

Combat/tooling stability cluster — Sentry crash reporting, a dice-tray occlusion fix, an end-turn crash, and a Windows e2e spawn bug

What changed

Four independent fixes landed via owner-directed sessions this window: native Sentry crash reporting for the seam the JS harness can't reach (PR #281), the signature rune column no longer occludes the dice tray (PR #280), a plain JS call inside a Reanimated worklet that crashed on end-turn, and npx.cmd/shell handling so the export step actually spawns on Windows CI runners (PR #284).

Why it changed

Each closes a concrete crash or CI-breadth gap rather than a cosmetic issue; grouped here because none is large enough alone to carry its own devlog card.

commits ef5c609c · 1464fae9 · 24978555 · ed · ca · 998542eb · + · a972bf87 · d · a

BALANCE

Baseline re-measured — directional stage read

What changed

The SessionStart hook flagged the standing baseline (934160bb, full confidence) stale by 4 mechanics-source commits. Re-measured via the reduced-nightly pass (30 runs/cell) at commit 42cc0412. Stage-level terminal outcomes across the 144-cell matrix: early 97% win (13 victory + 17 mercy of 30 avg), mid 96%, late 86%, impossible 26%. Average combat-quality index (not a governing score — read only) ranged 0.62-0.71 across stages, no directional outlier.

Why it changed

Four content-lifecycle passes plus the 2026-09-04 combat fix all touch mechanics-adjacent code; this digest's own §3b freshness gate exists so a balance question never gets answered against a stale engine.

Note: Reduced-nightly is directionally honest, not confirmation-grade — not a close of any open balance candidate, just current evidence for whoever revisits one.

commits 42cc0412 · baee · ee · this · c

✠ The marginalia


The night's watch — what ran while nobody looked
when (UTC)verboutcome
2026-09-03 14:06docs (manual)preset-rework gate reconciled with current law
2026-09-03 15:12user jotmid/late equipment/signature-skill ask filed to plan/CRITIQUE.md
2026-09-03 16:30–16:36marchsuccess, no-op
2026-09-03 ~16:41 (PR #279)owner sessionTHE PATH dice axes wired into the shipped spec-33 roll
2026-09-03 ~18:18 (PR #280)owner sessionrune column no longer sits on the dice tray
2026-09-03 21:06–21:10marchsuccess, no-op
2026-09-03 ~20:55 (PR #281)owner sessionnative Sentry crash reporting shipped
2026-09-04 00:08–00:16marchsuccess, no-op
2026-09-04 ~03:03 (PR #283)owner sessionend-turn Reanimated-worklet crash fixed
2026-09-04 04:40–05:21march → adjust-cardssuccess — pass 1, 11 card-face-honesty fixes
2026-09-04 ~05:35 (PR #284)owner sessionWindows e2e export-spawn bug fixed
2026-09-04 08:44 (PR #285)owner sessionkb/ sync retired, kb-query MCP is sole corpus path
2026-09-04 11:02balance/deck sessioncard forge report — non-monotonic lineage flagged
2026-09-04 11:25–11:35marchsuccess, no-op
2026-09-04 14:44 (PR #287)owner sessionplaytest 2026-09-04 fix — engine truth-telling + board legibility
2026-09-04 16:26–16:51march → adjust-equipmentsuccess — pass 1, 5 dead consumables rewired
2026-09-04 20:49–20:59march → critiquesuccess — pass 31, 1 MED finding
2026-09-05 00:09–00:46march → adjust-enemiessuccess — pass 1, 2 created (caverns), 3 updated (Aporia)
2026-09-05 04:36–04:40marchsuccess, no-op
2026-09-05 10:41–11:19march → adjust-keywordssuccess — pass 1, CURDLE retired + a parser bug fixed

All march runs since the last digest (2026-09-03) succeeded — no crashes, no cancelled runs. Several of this window's largest changes (the combat/tooling stability cluster, the KB retirement, the card-forge report) shipped through owner-directed PR sessions rather than ordinary loop ticks, matching the pattern the last few digests have noted.

The measure — did the fighting change?

None from this digest's own meta-loop rail this window — the pulse shows a healthy content-lifecycle rotation (4 of 5 categories drained in two days) and no starved queue or mistuned gate. /expand last ran 2026-09-03 (pass 11, 3 candidates); no new expand pass fell in this window.

What is still unfinished
  • Build plan: 0 open phases ([ ]), 11 partial ([-]), 7 explicitly

[skipped], 124 shipped through Phase 78 — unchanged this window.

  • plan/AUDIT.md: 112 rows under "Pending" (most resolved inline via

cross-references; ~15 genuinely open, including the newly escalated die a11y row).

  • plan/CRITIQUE.md: 57 rows under "Pending"; last full pass 2026-09-04

(pass 31, 1 new MED finding).

  • plan/PHASE_CANDIDATES.md: 52 rows under "Pending", unchanged — last

/expand pass (11) was 2026-09-03, before this window opened.

  • plan/CONTENT_LEDGER.md: cards/equipment/enemies/keywords all show

pass count 1 now; npcs still "never" — the stalest category next time the content-lifecycle gate fires.

  • No open triage:needs-user or loop:do issues.
  • Deploy: clean — HEAD 42cc0412 green on both verify-mechanics and

verify-mobile.

  • Nightly breadth (e2e:minigames): RED — hazard, combat-encounter,

encounter-routing, and the exploration/combat round-trip all pass; upgradeable-dice-e2e aborts at the SWAY-commit guard (see Needs you). Filed, not fixed here, per this skill's own rail.

  • Measurement: was STALE at session start (baseline 934160bb, 4

mechanics-source commits behind); re-measured this tick via npm run baseline:regen -- --runs=30 --confidence=reduced-nightly → now FRESH at 42cc0412. See the [balance] card above for the headline numbers.

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.