✠ The Chronicle

✠ ENTRY XXIX


The queue shipped its first bounded balance phase in weeks

Phase 39 restored seven retired cards, reseated two preset identities, and retuned a fizzle gate — but the doctrine curve it was promoted to fix didn't move where it mattered: late-stage win rate is still a flat 0% and mid barely twitched (0.0% → 2.0%). The phase's own commit already said why (engine/enemy-scaling, not card composition); this digest files that as three owner-scoped findings instead of letting it quietly restate itself next cycle. Two other findings drained clean (a legibility gap, a test-coverage gap), critique pass 19 found one fresh comprehension bug, and every breadth leg is green.

BALANCE

Phase 39 ships — but the doctrine-curve gate it was built to close stays red

What changed

restored 7 of D8's 10 retired cards (filling peroration/forge/control/oracle/harvest's missing enchantment/ disenchant seats, cardLibrary 79 → 86), reseated foundry and grace's status-doctrine identity cards per owner ruling (entropy-tax replaces the mirror-of-longing borrow; heart-of-the- matter replaces the ouroboros borrow), resolved the resulting color-law mismatch with a compensating enchantment-seat shuffle, and retuned ouroboros's REPLAY_LAST fizzle gate toward its ~25% target (landed 11-17%).

Why it changed

six consecutive nightly baselines (08-01 → 08-07) had read byte-identical against doctrine (early ~80 / mid ~50 / late 25-35 / impossible 0): early 61.1%, mid 0.0%, late 0%, impossible 0%. The owner promoted one bounded phase via /oversight on 2026-08-08 to carry the repair rather than let three overlapping candidates keep restating the same signal.

But the gate stayed red. This digest's re-measure (reduced nightly, committed at 8eb33fb8) reads blind policy-pick early 61.1% (unchanged) / mid 2.0% (up from 0.0% — 3 wins across 150 runs, the first movement since 07-30, still deep in violation against ~50) / late 0.0% (unchanged, zero movement on the phase's named target) / impossible 0% (unchanged, correct). Phase 39's own shipping commit already flagged this as a needs-user-call: presets that already carried every proven staple still sat at 0% mid, which reads as engine/enemy-scaling shaped, not card-composition shaped. Filed as three plan/AUDIT.md rows this cycle (doctrine-curve confirmation + foundry's early-stage regression + the mid-cliff needs-user-call) and plan/CRITIQUE.md's [HIGH] late-stage global collapse row updated to record that Phase 39 landed without draining it. See Tuning proposals below.

commits 8d50591e · ae · e · 177 · 8eb33fb8 · bda · f

UI

Combat board surfaces the kill-path readout it always had the data for

What changed

forwarded mechanics' projectCombatOutcome selector (pending DoT / rounds-to-kill / lethal-in-flight) onto CombatEnemyPaneVM and rendered it on the combat board as a "DOT PENDING" / "LETHAL IN N" readout, reusing the existing AltWinMeter component slot.

Why it changed

build-plan Phase 2 shipped the selector but nothing in axiomancer-mobile ever consumed it — the status kill-path stayed invisible to players exactly as plan/CRITIQUE.md's "[LOW] Combat kill-path legibility" row (audit score 2.8) described.

commits 615ff26b · f · e · 174 · 1c915ac0 · ad · fd · ced

INFRA

GateSockets gets coverage a month after landing

What changed

9 colocated tests for GateSockets.tsx (the Gate of Assent / Foundation socket UI) pinning socket rendering, the distinctWords pocket dedupe, lay/take-back/clear behavior, the openSockets capacity guard, and submit ordering.

Why it changed

an /iterate audit sweep found the component owned real interactive state with zero coverage since it landed 2026-07-07, and the labyrinth e2e suite never touches testID="labyrinth-gate".

commits 10048947 · e · e · 175 · 1d2917e5 · ad · fd · ced

✠ The marginalia


The night's watch — what ran while nobody looked
Tick (UTC)VerbOutcome
08-07 13:44 → 13:58/march/iterateshipped — combat kill-path legibility (#174)
08-07 19:25 → 19:45/march/iterateshipped — GateSockets test coverage (#175)
08-07 ~21:08 (attended)/oversightpromoted Phase 39 + Phase 40, drained 4 needs-user-calls (#176)
08-08 02:26 → 02:38/march/critiquepass 19 — 1 finding (exploration hub regionProgress mismatch)
08-08 07:26 → 08:52/march/ship-a-phaseshipped — Phase 39 curve repair + library theme-symmetry (#177)
  • loop:phase GitHub issues (the phase mirror): unchanged cadence,

no stale-open rows found this sweep.

  • plan/AUDIT.md: 3 new Pending rows filed this cycle (doctrine-curve

confirmation + 2 needs-user-call rows mined from Phase 39's own commit body); 2 rows drained since last digest (#174, #175).

  • plan/CRITIQUE.md: pass 19 today (commit 18eb0ddb469a5694),

1 fresh MED finding (exploration hub static/dynamic node-count mismatch); the standing [HIGH] late-stage global collapse row updated to record Phase 39 landing without draining it.

  • plan/PHASE_CANDIDATES.md: 34 pending candidates; the "Post-D8

flag-on curve repair + library theme-symmetry" candidate moved to Promoted (now Phase 39, shipped).

  • triage:needs-user / loop:do issues: 0 open. No open PRs.
  • Deploy: nothing to check yet — HEAD is inside the grace window, no

gated verify-* workflow triggered for this digest commit's paths.

  • Breadth check (npm --workspace axiomancer-mobile run e2e:minigames)

ran full and green: hazard, combat, gathering, encounter-routing, exploration/combat-prelude round-trip, and upgradeable-dice all ALL PASS.

  • Deck-matrix baseline re-measured this cycle — see Tuning proposals.
The measure — did the fighting change?

baseline:check opened this cycle stale by exactly one mechanics-source commit (8d50591e, Phase 39 itself) — re-measured with the reduced nightly pass (npm run baseline:regen -- --runs=30 --confidence=reduced-nightly), now committed at 8eb33fb8.

This is the first baseline read to actually move since 07-30 — the prior six were byte-identical because nothing in that window touched scoreCard or draftCombatDeck's construction path. Phase 39 does touch both (card restorations, preset reseats, a fizzle-gate retune), so a real diff was expected. Read (blind policy-pick, doctrine early ~80 / mid ~50 / late 25-35 / impossible 0): early 61.1% (unchanged), mid 2.0% (up from 0.0%, 3 wins / 150 runs — real movement, but two orders of magnitude short of the ~50 target), late 0.0% (unchanged — the phase's named target didn't move at all), impossible 0% (unchanged, correct).

No new tuning action from this digest — the repair already ran, and its own commit correctly diagnosed why the gate stayed red (see Needs you above). Filed as findings, not proposals, because the fix this data points at is a manual engine constant (enemy HP/threat scaling), which is explicitly outside /deck-tuning's card-only remit and outside this loop's authority to self-legislate. Full detail in plan/AUDIT.md and the updated plan/CRITIQUE.md [HIGH] row.

Today's intent

No baseline screenshots changed since the last digest, so no UI shots this cycle. The headline number here isn't the two small findings that drained clean — it's that a phase explicitly scoped and promoted to fix a six-cycle-confirmed doctrine violation shipped clean, green, and fully verified, and the violation is still there. That's not a failure of execution (the phase's own commit reasoned through why, correctly, in real time) — it's a signal that the next productive move on this thread is an owner call on engine constants, not another card-tuning pass. Filed as three findings rather than one, so /oversight can act on the specific asks (scope a scaling phase? queue foundry's win-condition card?) instead of re-deriving them from a wall of prose.

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.