sots-re/campaign/rollout/engine-worker-state.md

64 lines
4.7 KiB
Markdown

# Engine worker checkpoint
Updated: 2026-09-09
## Followup checkpoint (openai/gpt-5.6-terra)
- Source worktree: `/home/alex/sots-engine` at `7741d42fc5e4e761e6449bdaf0e4a61d00036a23`;
RE state root: `/home/alex/sots-re` at `3bfde5a70d874a723e797a695bbd847fd82c0aa7`.
- Preserved command-replay leaf writes during `RunStrategicTurn`'s final record fold, then added
an `app_command_replay` regression that verifies an applied replay write changes the board and
is included exactly once beyond all phase records.
- Changed configured empty save directories from skips to failures in the modified app turn,
app turn-record, design census, Mars save, and Mars domain corpus consumers. Unset dependencies
retain their existing skip behavior; unreadable and parse-error saves remain failures without
skip wording.
- Observation: `git diff --check` passed before focused build/test execution. Existing unrelated
rollout changes are present in the engine worktree and were left untouched.
- `mars_stream_test_save` now stops after reporting parser errors, before accessing typed-shape
assumptions. `mars_stream_domains` reports parse/read errors and omits those saves from its
domain archive. This turned the malformed-save signal termination into ordinary nonzero test
failures; it is a test-boundary fix within the assigned contract, not an architecture change.
- Results: fresh `/tmp/opencode/sots-engine-followup` host build succeeded. With
`SOTS_SAVES_DIR=/home/alex/sots-re/verify/results/saves`, `ctest --test-dir
/tmp/opencode/sots-engine-followup --output-on-failure -R
'^(app_command_replay|app_turn|app_turn_record|mars_stream_save|mars_stream_domains)$'`
passed 5/5 twice, after the final test-boundary change.
- Negative evidence: each modified corpus executable returned nonzero for the configured empty
directory `/tmp/opencode/sots-empty-corpus`: app turn, app turn-record, Mars save, Mars
domains, and design census (the census was given `SOTS_DATA_DIR=/tmp/opencode`). Each of the
four applicable consumers returned a normal nonzero failure for configured malformed
`/tmp/opencode/sots-invalid-corpus/malformed.sav`; no skip wording or signal termination.
- Skip evidence: `env -u SOTS_SAVES_DIR -u SOTS_DATA_DIR ctest --test-dir
/tmp/opencode/sots-engine-followup --output-on-failure -R
'^(app_turn|app_turn_record|mars_stream_save|mars_stream_domains|game_design_census)$'`
reported all five as CTest skipped. Only unset dependencies take that path.
- `git diff --check` passed after the final edits. No broad gate was run. Existing unrelated
rollout changes in both worktrees remain untouched.
- Completion: followup contract implemented and focused evidence recorded. Next action: stop;
lead may consume this checkpoint for the coordinated source-stable gate.
- Implemented nonserialized `MT19937::words_drawn()` accounting. It resets on `seed()` and
successful `load_state()` and is not included in save serialization.
- `CountingRandom` now measures bounded-integer rejection consumption from that monotone count,
so a rejection loop may cross any number of twists.
- Removed S13 wrapper aggregation of P01..P12 counters; appended player records are the only
contributors to final turn totals.
- Added MT boundary/rejection and reset/load tests, plus an app corpus test that validates
reported RNG words against the independently persisted generator post-state.
- Corpus absence now returns 77 for app/census tests; unreadable or parse-error saves fail and
nonzero executed saves remain required. CTest skip properties were added to dependency tests.
- Verification: fresh build at `/tmp/opencode/sots-engine-accounting` configured and built
successfully. `SOTS_SAVES_DIR=/home/alex/sots-re/verify/results/saves ctest --output-on-failure`
passed 52 of 59 tests; the remaining 7 were reported by CTest as skipped.
- Skip inventory verified with verbose CTest: `game_config_replay` lacks `SOTS_M1_TRACE` and
`SOTS_DATA_DIR`; `game_data_realdata`, `game_design_realdata`, and `mars_text_realdata` lack
data inputs; `game_design_census` lacks `SOTS_DATA_DIR`; `game_sim_smoke_real_save` lacks
`SOTS_SAVES_JSON`; `mars_vfs_realdata` lacks `SOTS_GOB_DIR`. No configured corpus failure was
skipped: `app_turn`, `app_turn_record`, `mars_stream_save`, and `mars_stream_domains` executed
against the required saves directory and passed.
- Focused rerun passed `mars_rng_unit`, `app_turn`, and `app_turn_record`; `game_design_census`
was CTest-skipped for its missing data-root dependency. `git diff --check` is clean.
- Limitation: full asset-dependent acceptance remains unavailable locally because the listed asset
and trace paths are unset. The configure cache does not consume `-DSOTS_SAVES_DIR`; the required
path was supplied to CTest through its runtime environment.