ReviewOS

stacks/the-settlers-iii-remake

Coalesce duplicate demolition recoveries in one AI decision

#196
Closed chris opened this 8 days ago ·
8 days ago

The complete execution trace of an ordinary seed-5 two-economy match records a tick-9360 player-2 refusal: demolish, sequence 77, That building is not yours. Final bounded command history had already discarded it; full per-tick tracing exposes it.

At that decision, the exhausted fishing hut and stone-material shortage diagnoses both select building 1156 as their recovery. The policy emits two identical demolition commands. Sequence 76 demolishes the hut normally; sequence 77 necessarily fails. Conservation remains clean. The military guard correction in #195 is separate and has no military refusals in the traced matches.

Captured ordinary pre-decision checkpoint: SHA256 0084ea74c1fe13fcbbab475e7863555a86d313c78358783ddd69cf8839f4e2cf, 463346 bytes. Captured on main base 08d4eff3b50eb295e68324c2b453551cf829defb plus the explicitly retained #195 candidate. No world, inventory, tool, population or terrain edits. The repeated public observation and ordinary command batch reproduce both diagnoses, both orders and the refusal.

Acceptance:

  • Keep both real diagnoses and their feedback, while choosing one demolition per building in a decision batch.
  • Preserve recovery actions for distinct buildings and legitimate repeated consumable orders. Do not globally collapse unrelated commands.
  • Exercise the captured ordinary failure and public command execution with no duplicate ownership refusal, no double refund, clean conservation and deterministic restore.
  • Keep source simulation rules, profile identity and engine ownership/refund enforcement unchanged.
  • Retain full execution tracing and remaining unfinished-seed bottlenecks. Verify applicable web regressions and exact pushed-main CI before closing the scoped correction.

Related: #74, #76, #191, #194, #195 and #4. This is an engineering planner correction, not original Gold AI qualification.

8 days ago

The captured normal tick-9360 failure now has three public-seam regressions retained locally. Two fail on the current planner: it emits two demolitions for building 1156, and ordinary execution reproduces the second command's ownership refusal. The positive case passes: separate exhausted workplaces retain separate demolition recoveries. The same fixture retains both the exhausted-fisher and stone-material diagnoses.

The military correction #195 is finishing its separate browser gate before publication. No recovery-planner source edits are included in that candidate. The duplicate-recovery correction will follow it, preserving the engine's ownership and refund checks and the profile identity.

8 days ago

Published as https://github.com/stacksjs/the-settlers-iii-remake/commit/d834053a5815c85faf6bbe707ca08d45974e50e9, authored and committed as Chris Breuer without coauthors through a normal fast-forward push to main.

The planner retains both diagnoses but coalesces demolition by building within each decision. Separate building recoveries and other command kinds keep their ordering. Recovery actions have exact typed payloads; engine ownership/refunds, physics and profile0.10.0 are unchanged.

Three focused public policy/session regressions pass with20assertions, including the immutable captured checkpoint, actual one-command demolition, conservation, restore and two distinct workplaces. All292unit tests pass with22950assertions. Lint, type checks, assets, fidelity/roadmap validation and the production build pass. The fresh local58stepcampaign passes with empty error collections and a real save/reload.

Exact pushed-main CI is green: https://github.com/stacksjs/the-settlers-iii-remake/actions/runs/40230189820. Original artifact12613751390,19654bytes,SHA256 f0e259c60609ca69c597bd1384a0a03bada12337bbca97caf3ebec64baca40ae matches GitHub's digest and passes allZIPCRCs. All385steps across ten browser suites succeed with empty console-error, failed-request and collection-error arrays, including the full ordinary4xbattle and actual reload.

Complete per-tick tracing now records zero failed executions on ordinary seeds2,1,3,5, with clean accounting. Seed2finishes; the other three remain unfinished80000, so broader sustainable economies and skirmish acceptance remain open. The next isolated city-placement gap is #197. This does not establish Gold behavior, human victory or native game presentation.

Committed receipt: docs/roadmap/receipts/ai-recovery-actions-2026-10-25.json. Closing this scoped recovery-action correction after its exact main gates.

Sign in to comment on this issue.