✠ The Chronicle

✠ ENTRY L


A busy two-day window: The Capital (map 5 of the northern continent)…

A busy two-day window: The Capital (map 5 of the northern continent) shipped and got its own content-lifecycle backfill within the same window, four UI legibility fixes landed, the mid-combat-crash test axis finally closed out, and the standing three-digest-red breadth check got fixed and is confirmed green again. Baseline re-measured fresh after 3 mechanics-source commits.

CONTENT

The Capital ships — map 5 of the northern continent (Phase W6)

What changed

/forge shipped a new 9-node map (the-capital), opened a travel door from town-across-river's boss node, and paid off the three-map advisor-selection narrative thread planted at ncy-5 → cr-9 → tar-4.

Why it changed

town-across-river's own code comment flagged itself terminal with "no door onward yet" — the sharpest thinness signal in this tick's Step-1 audit across maps/events/art.

commits f56fa198 · bf31522d

CONTENT

The Capital's enemy-pool thinness backfilled

What changed

adjust-enemies pass 6 found the-capital's roster at 83.3% overlap with northern-city (over the skill's >70% ceiling) and created two capital-native enemies — The Stamper and The Underclerk, both debt-office archetype — dropping the reading to 62.5%.

Why it changed

flagged as future backfill work by /forge's own commit body when the-capital shipped reusing northern-city's roster wholesale; this is that backfill landing one tick later, the same cadence caverns/connecting-river/town-across-river each followed.

commits e57f9f63 · 9785d3f5

CONTENT

The Ribbon-Picker joins The Capital's cast

What changed

adjust-npcs pass 5 staged a second NPC (The Ribbon-Picker) at cap-5, on the existing gathering pool — The Capital had shipped with only one staged NPC (The Herald) across 9 nodes.

Why it changed

skill Step 1's "map with fewer than 2 staged NPCs" signal; the new NPC reads the pre-existing sweetheart-was-nominated flag, no new persisted state.

commits 47bcda82 · 3a98d83b

CONTENT

Card-editor glyph backfill for DEAL/RECOIL/IMMOLATE/PURGE

What changed

adjust-keywords pass 5 found the card editor's keyword-face projection had no case for deal, recoil, recoil_x, immolate, or purge_self — 60% of the 128-card library (77 cards) fell through to a generic glyph in the editor's own preview.

Why it changed

all five already had a live KEYWORDS entry; this was a pure mapping omission, not a new keyword.

commits 17b38058 · 81bf0b14

CONTENT

Six zero-action re-audits — rotation holding clean

What changed

adjust-keywords pass 4, adjust-npcs pass 4, adjust-cards passes 5 and 6, and adjust-equipment passes 5 and 6 all came back zero-action this window — reachability, pricing, duplicate, scale-ladder, aspect-thirds, relic/consumable/shop/signature signals all reconfirmed clean.

Why it changed

standing rotation cadence; a clean re-audit is itself a signal the library isn't drifting.

commits 9e423a34 · 6b365d01 · 35c4c56c · 2b02ff60 · 01629acf · da51e629

UI

Exploration-map camera now frames the whole open-node branch

What changed

the initial exploration-map camera only centred the open-node focus centroid at fixed 1x scale, so a wide branch could still leave the outermost node off-screen. computeFocusTransform now zooms out (never in) just enough to fit the whole current+available bounding box.

Why it changed

closed a standing CRITIQUE.md [3.5] row — off-screen open nodes no-op'd silently on tap, with no visual cue that panning was needed.

commits 6fe4e47c · a162bb25

UI

Hazard route-select hand fan widened + tap-to-inspect

What changed

the opening-hand preview's -32px card overlap covered most of each card's name; widened to -22px and wired the same CardDetailOverlay/onInspect pattern the live in-round hand uses.

Why it changed

closed a standing CRITIQUE.md [MED] row (score 3.5) — any name still covered is now one tap away from the full card.

commits 8f3acef7 · 34e1d8d8

UI

Dialogue reply cards no longer echo their label

What changed

the narrative-choice label and description were the same source string (description just re-cased), so both /dialogue and /event rendered every reply's text twice.

Why it changed

closed a standing CRITIQUE.md [3.2] row from an external-critique session-playtest finding.

commits 393354c6 · b1624da0

UI

LOG toggle unpinned from the stance-check telegraph

What changed

the LOG toggle and the tutorial coach both anchored off a static HUD-height estimate; a full stance-check telegraph plus an active alt-win meter grows the real HUD past it. Both now anchor off a measured HUD height reported on every layout pass.

Why it changed

closed a CRITIQUE.md [MED] row — the toggle's near-opaque pill was painting over the telegraph's tail line, the same bug class as the earlier signature-rune-column HIGH.

commits 161bfcf3 · 29bfbfbd

MECHANICS

Mid-combat-crash test coverage completed

What changed

extended combat-round-e2e with a fourth crash-strict axis — the level-up-out-of-victory path, where a won fight's granted XP crosses the next-level threshold and cascades a level-up mid-aftermath. Wired as e2e:combat-round:levelup, added to both mobile and mechanics verify gates.

Why it changed

the standing [HIGH] "mid-combat crash 30 seeded runs could not reproduce" row explicitly named this as its one remaining untested axis; the row's own condition for closure was "either the crash reproduces or the remaining axis ships." It shipped clean — the crash itself remains unreproduced on web.

commits c51547ae · 86f23b01

INFRA

The three-digest-red breadth check is fixed

What changed

upgradeable-dice-e2e.mjs's die-label regex still matched pre-spec-33 wording ("stance die"/"BOON face"); ported the same color/usable extraction combat-round-e2e.mjs already used. This digest's own step-3 breadth check (e2e:minigames) ran clean — 10/10 sandbox+live runs, no crashes — confirming the fix held.

Why it changed

three consecutive dated digests (09-05, 09-07, 09-09) logged this exact red for the identical, already-diagnosed cause; nobody had picked it up until this window's /audit cycle did.

commits bfa80bae · b9b5da55

INFRA

Rotation: critique pass 35, expand passes 12–13

What changed

critique pass 35 found no new findings. expand pass 12 filed 3 candidates (empty accessory-kind gap, dead zoneHas engine hooks, early-encounter difficulty smoothing); pass 13 filed none — every live signal already tracked.

Why it changed

standing rotation cadence.

commits d2562be5 · d42fc801 · d8aad908

BALANCE

Baseline re-measured — directional stage read

What changed

session start flagged the standing baseline (e57ab0db, reduced-nightly) stale by 3 mechanics-source commits (The Capital ship + two content backfills). Re-measured via the reduced-nightly pass (30 runs/cell, 144 cells) at commit b1624da0. Stage terminal win rates: early 97.3%, mid 97.0%, late 82.0%, impossible 8.7%. Terminal-outcome totals: 3,012 victory, 735 mercy/capitulate, 20 concede, 553 defeat, 0 retreat (unchanged aggregate shape from the last read — the three new commits were content/enemy-roster work, not deck or engine changes).

Why it changed

this digest's own freshness gate exists so a balance question never gets answered against a stale engine.

Note: doctrine since THE BIG NUMBERS REWRITE (2026-09-02) governs no win-rate curve or CQI target — reported as directional evidence only, per this skill's own rail. plan/CRITIQUE.md's standing [HIGH] late-stage global collapse — all 10 presets 0.00 late row reads stale against this measurement (late is 82.0%, not 0%), but resolving stale CRITIQUE rows is /critique's job, not this digest's — flagged below, not touched here.

commits b1624da0 · baee · ee · this · c

✠ The marginalia


The night's watch — what ran while nobody looked
when (UTC)verboutcome
09-09 10:30–10:42march → expandsuccess — pass 12, 3 candidates filed
09-09 12:40–13:06march → audit fixsuccess — LOG toggle/telegraph overlap
09-09 14:30–14:57march → audit fixsuccess — die a11y copy drift, part b
09-09 16:31–16:43march → critiquesuccess — pass 35, no findings
09-09 18:34–18:38marchsuccess, no-op
09-09 20:28–20:57march → adjust-keywordssuccess — pass 4, zero-action
09-09 22:26–22:34march → adjust-npcssuccess — pass 4, zero-action
09-10 01:01–01:15march → adjust-cardssuccess — pass 5, zero-action
09-10 02:36–02:45march → adjust-equipmentsuccess — pass 5, zero-action
09-10 04:33–04:42marchsuccess, no-op
09-10 06:44–06:56march → adjust-enemiessuccess — pass 5, zero-action
09-10 08:36–09:21march → forgesuccess — The Capital ships (Phase W6)
09-10 10:29–10:37march → audit notesuccess — CRITIQUE.md rune-column row stale-fixed
09-10 12:40–12:45marchsuccess, no-op
09-10 14:29–15:05march → iteratesuccess — mid-combat-crash coverage completed
09-10 16:29–16:38march → expandsuccess — pass 13, no candidates
09-10 18:32–19:03march → adjust-keywordssuccess — pass 5, glyph backfill
09-10 20:27–21:06march → adjust-npcssuccess — pass 5, The Ribbon-Picker created
09-10 22:25–22:52march → audit fixsuccess — exploration camera off-screen-node fix
09-11 01:00–01:19march → audit fixsuccess — hazard route-select fan fix
09-11 02:37–03:01march → adjust-cardssuccess — pass 6, zero-action
09-11 04:33–04:45march → adjust-equipmentsuccess — pass 6, zero-action
09-11 06:43–07:16march → adjust-enemiessuccess — pass 6, 2 enemies created
09-11 08:36–08:57march → audit fixsuccess — dialogue reply-card echo fix

24 of 24 march runs succeeded — no CI-infra blips this window, unlike the transient ENOENT failure two digests ago.

The measure — did the fighting change?

None from this digest's own meta-loop rail this window — 24 of 24 march ticks succeeded, the content-lifecycle rotation stayed active across all five categories, the standing breadth-check red got fixed rather than lingering a fourth digest, and expand ran twice with no starved-queue signal. No gate/cadence/ceiling mistuning observed.

What is still unfinished
  • Build plan (plan/steps/01_build_plan.md): 0 open phases ([ ]),

0 blocked, 125 shipped.

  • plan/AUDIT.md: 69 rows pending (117 headers under "Pending" minus

48 resolved-but-unmoved [x] bookkeeping rows); 5 needs-user-call.

  • plan/CRITIQUE.md: 21 rows pending; last full pass 2026-09-11

(pass 35, 0 new findings, ran 09-09 16:41 — see above).

  • plan/PHASE_CANDIDATES.md: 44 rows pending (up from 41 — expand

pass 12 filed 3 this window, pass 13 filed 0).

  • plan/CONTENT_LEDGER.md: cards, equipment at pass 6; enemies at

pass 6 (2 created); npcs at pass 5 (1 created); keywords at pass 5.

  • No open triage:needs-user or loop:do issues.
  • Deploy: clean — HEAD is a docs/plan-only tick, no gated workflow

triggered yet (grace window).

  • Nightly breadth (e2e:minigames): GREEN — 10/10 sandbox+live

runs, no crashes. First clean read after three consecutive red digests; see the [infra] card above.

  • Measurement: was STALE at session start (baseline e57ab0db, 3

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

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.