feat(scheduler-sim-decision-trace): capture the trace-off REPL transcript baseline

Task 1.1: scripted REPL session over a contention replay (license, cluster
and host limits, parallel and alternative jobs); transcript, recordings and
--sim-verify result committed as fixtures and compared byte for byte.

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
This commit is contained in:
Rongsong Shen 2026-10-08 07:21:38 +00:00
parent bf1e4b7245
commit e2d5662d28
Signed by untrusted user: rshen
GPG key ID: 80533536B0EB651C
9 changed files with 1206 additions and 1 deletions

View file

@ -6,7 +6,7 @@
> - "Under ASAN" means the standard debug + ASAN scheduler build.
- [ ] 1. Foundation: baselines, shared formatting, trace model and transport
- [ ] 1.1 Capture the trace-off REPL transcript baseline before any feature change
- [x] 1.1 Capture the trace-off REPL transcript baseline before any feature change
- Build a scripted REPL session over a resource-contention replay fixture. The fixture has several jobs competing for a shared license, a cluster-wide limit and a host-scoped limit, plus a parallel job and an alternative-requirement job.
- The session exercises step, continue with collapsed ranges, a decision breakpoint, a round-begin breakpoint, info subcommands, set units and set output.
- Store the captured console transcript, the `--sim-output` recording and the `--sim-verify` result as committed test fixtures. Add a test that replays the script and compares byte for byte, ignoring only wall-clock metadata fields.
@ -334,3 +334,6 @@
- Correct the stale file sizes in the scheduler component guide and list the new files.
- Done when the bounds test passes and a full ASAN build of all components passes with no test failures.
- _Requirements: 9.1, 9.3, 9.5, 11.2_
## Implementation Notes
- 1.1: build dir is src/xce.build. Baseline test sched_repl_trace_baseline_test runs the built xce_scheduler (depends: scheduler); regenerate fixtures with XCE_REPL_BASELINE_REGEN=1 (script.txt is hand-written). Fixture sends the license value as a RESVALS_FULL event because shared resvals in the snapshot are dropped on load (bug-1923). sim_output.replay has no session decisions (set output switches files before session 1 is finalized); decisions are covered by set_output.replay and sim_verify.txt.