feat(scheduler-sim-repl-verbosity): task 4.1 - RED-phase sim_print_decision Gate tests

Adds 3 tests in a new test_sim_print_decision_gate.c covering the old
unconditional per-decision echo (sim_loop.c's sim_print_decision())
no longer duplicating the Round Rollup's per-round summary under
`continue` mode (Requirement 2.3), while `step` mode and headless
(non-interactive) batch runs stay completely unaffected (Requirements
5.1, 5.4). This is exactly the duplication bug-1610 reported.

1 of 3 tests fails as expected RED evidence (continue-mode bare
"[sim] PEND jobid=..." line still appears alongside the Round Rollup's
own summary today); the other 2 (step-mode and headless regression
checks) correctly pass since they pin already-correct, unaffected
behavior.

New file rather than extending either sibling: test_repl_round_rollup.c
is already 1022 lines (222 over the 800-line cap), and
test_repl_event_echo.c (704 lines) deliberately keeps its fixtures
job-free (bug-1595 discipline), which this task's decision-producing
fixtures cannot follow.

No production code touched (sim_loop.c/repl.c/repl_rollup.c/repl_break.c
untouched) - tests only, per this task's RED-phase boundary. The actual
gate implementation is task 4.2.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01YAWMhfRJFnmmnG8h97yUDd
This commit is contained in:
Rongsong Shen 2026-09-02 13:12:04 +00:00
parent cc78d09140
commit 3d08a43a35
No known key found for this signature in database
GPG key ID: 5BCDAAE0123E9FE2
3 changed files with 735 additions and 1 deletions

View file

@ -962,6 +962,33 @@ sched_repl_event_echo_test = executable(
dependencies: [scheduler_test_deps, libedit_dep],
install: false)
# Contract test for the interactive simulation REPL's `sim_print_decision`
# Gate component (scheduler-sim-repl-verbosity spec, task 4.1, Requirements
# 2.3, 5.1, 5.4 "retire the redundant per-decision echo during continuous
# execution"): under `continue` mode, sim_print_decision()'s (sim_loop.c)
# bare per-decision line must no longer appear outside the Round Rollup's
# own per-round summary; `step` mode and non-interactive (headless, no -i)
# batch runs are completely unaffected and keep printing that bare line
# exactly as today. Same white-box #include pattern as
# sched_repl_round_rollup_test/sched_repl_event_echo_test above (core.c,
# core_clock.c, core_events.c, core_session.c, decision.c, plugin.c,
# plugins/builtin_fcfs.c, recording.c, recording_session.c, sim.c,
# sim_loop.c, sim_record.c, sim_verify.c,
# snapshot.c/snapshot_wire.c/snapshot_load.c, repl.c, repl_rollup.c,
# repl_break.c, repl_info.c, repl_params.c). Split into its own file rather
# than extended onto either sibling: test_repl_round_rollup.c is already
# 1022 lines (222 over this project's 800-line cap) on its own, and
# test_repl_event_echo.c (704 lines) deliberately keeps every one of its
# own fixtures job-free (bug-1595 jobid-reuse safety discipline), which
# this task's decision-producing fixtures cannot follow -- see this file's
# own header comment for the full rationale.
sched_sim_print_decision_gate_test = executable(
'sched_sim_print_decision_gate_test',
['test_sim_print_decision_gate.c'],
include_directories:[incdir],
dependencies: [scheduler_test_deps, libedit_dep],
install: false)
# Contract test for the interactive simulation REPL's breakpoint and
# state-inspection slice (scheduler-core spec, task 12.2, Req 5 AC 22
# "Breakpoints"/"State inspection"): setting a breakpoint on a specific
@ -1418,6 +1445,9 @@ test('scheduler repl round rollup test',
test('scheduler repl event echo test',
sched_repl_event_echo_test, suite: 'scheduler',
env: ['ASAN_OPTIONS=detect_leaks=0'])
test('scheduler sim print decision gate test',
sched_sim_print_decision_gate_test, suite: 'scheduler',
env: ['ASAN_OPTIONS=detect_leaks=0'])
test('scheduler repl breakpoints inspection test',
sched_repl_breakpoints_inspection_test, suite: 'scheduler',
env: ['ASAN_OPTIONS=detect_leaks=0'])