Skip to content

Engine panic: "resolved-rules journal settlement ordinal overflow: UnknownNode(ActivatedMana(SettlementNodeOrdinal(6)))" (game_state.rs) #7136

Description

@mcbradd

Assertion

thread 'ai-commander-driver' panicked at crates\engine\src\types\game_state.rs:16203:14:
resolved-rules journal settlement ordinal overflow: UnknownNode(ActivatedMana(SettlementNodeOrdinal(6)))

begin_activated_mana_journal_node (CR 605.4a region) unwraps resolved_rules_journal.begin_activated_mana(...). Here it came back UnknownNode(ActivatedMana(SettlementNodeOrdinal(6))) - the journal was asked to open an activated-mana node whose parent settlement ordinal it does not know - and the expect aborted the process (exit 101). Unchanged on main @ cbdfa042a: types/game_state.rs:19115 and :19133 carry the same .expect, so both the activated-mana and (adjacent) triggered-mana journal entry points share the failure mode.

The failing ordinal is 6, i.e. a fairly deep chain of nested mana activations, which fits the "nested activation records its active parent as the causal dependency" doc comment directly above the call.

Evidence

pod-lab headless 4-player Commander batch, 2000 games (two candidate decks x 1000), engine pin 1b2021e7b, card data 4587508ed14801cb, K=40 workers, 540 s/game, measurement mode. 48/2000 games (2.4%) exited 101 across 7 distinct assertion sites; 1 lands here. It did not appear at all in the equivalent 2000-game batch at the older pin d960fc8b3, so it is either new in that window or simply rare.

seed run tier T/actions wall pod (P0 to P3)
92000363 plunder Medium T15/200 70.7 s Blood Rites, Scrappy Survivors, Turtle Power!, Plunder the Graves (Meren of Clan Nel Toth)

Filed separately rather than rolled up because it is a distinct invariant with its own recorded seed and full saved stdout; low frequency, but a p0-class abort.

Repro shape

ai-commander <card-data-dir> --seed 92000363 --difficulty Medium --feed <4-deck-feed.json>

One game per process; panic = exit 101. The exact pod feed is reconstructable from the recorded seat ids - happy to attach it on request.

Replay caveat, stated plainly: seed replay is only faithful when the opponent pool is byte-identical to the recording run, and the pool has grown 105 -> 119 decks since. Two other seeds from this same run replay deterministically today (92000008 -> #6209, 92000014 -> #6822, exit 101 on every attempt); three longer-game seeds from the same run did not. This seed's replay is in flight and I will post the result here.

Sibling sites from the same run

#7134 (pending-replacement mana cost, 17x - most frequent), #6209 / #7103 (ChangeZone terminal member, 14x), #6822 / #7052 (draw bookkeeping, 8x), #6706 (exile-play ledger, 3x), #6867 (paused-child continuation, 3x), #4155 (announced entry at finalize, 2x), #7135 (buried reveal continuation, 2x at the older pin).

Evidence only - no fix attempted.

Claude Code

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions