Headless mission integration test #13

Open
opened 2026-08-06 21:51:51 +00:00 by icub3d · 0 comments
Owner

The test that proves M1's architecture holds: a full mission, resolved headlessly, with
no rendering and no window.

If this test is hard to write, the simulation/presentation split is wrong, and that is
the finding — fix the split rather than the test.

Scope

  • Build a minimal App with MinimalPlugins, StatesPlugin, and only the combat,
    world, and character plugins — in the style of the headless() helper in
    src/core/state.rs and the roster test in src/character/mod.rs.
  • Drive a scripted sequence of actions from a fixed seed to a known victory.
  • Replay the identical sequence and seed, asserting an identical outcome — final
    positions, health, and the full event log.

Acceptance criteria

  • The test runs with no rendering plugins and no display.
  • Determinism is asserted on the whole event log, not just the winner.
  • The test completes fast enough to stay in the default cargo test run.
  • Running the same test twice in one process gives the same result — no leaked
    global state between missions.
The test that proves M1's architecture holds: a full mission, resolved headlessly, with no rendering and no window. If this test is hard to write, the simulation/presentation split is wrong, and that is the finding — fix the split rather than the test. ## Scope - Build a minimal `App` with `MinimalPlugins`, `StatesPlugin`, and only the combat, world, and character plugins — in the style of the `headless()` helper in `src/core/state.rs` and the roster test in `src/character/mod.rs`. - Drive a scripted sequence of actions from a fixed seed to a known victory. - Replay the identical sequence and seed, asserting an identical outcome — final positions, health, and the full event log. ## Acceptance criteria - [ ] The test runs with no rendering plugins and no display. - [ ] Determinism is asserted on the whole event log, not just the winner. - [ ] The test completes fast enough to stay in the default `cargo test` run. - [ ] Running the same test twice in one process gives the same result — no leaked global state between missions.
Sign in to join this conversation.
No description provided.