From 5d194db9b1287346d6931db71323ac3868cbceed Mon Sep 17 00:00:00 2001 From: Rongsong Shen Date: Sat, 22 Aug 2026 12:48:23 +0000 Subject: [PATCH] chore(wolf): checkpoint buglog.json (1004 bugs) --- .wolf/buglog.json | 24 +++++++++++++++++++++++- 1 file changed, 23 insertions(+), 1 deletion(-) diff --git a/.wolf/buglog.json b/.wolf/buglog.json index c1da3b1a..4d95fa08 100644 --- a/.wolf/buglog.json +++ b/.wolf/buglog.json @@ -18209,6 +18209,28 @@ "related_bugs": [], "occurrences": 1, "last_seen": "2026-08-22T09:40:00Z" + }, + { + "id": "bug-1623", + "timestamp": "2026-08-22T12:40:00Z", + "error_message": "Test-authoring bug while building scheduler-sim-decision-parity task 4.3 (test_sim_e2e_original_motivation.c): initial version asserted resInUse checkpoints of 17.00/18.00/20.00/12.00 (derived from the RECORDING driver own in-memory resInUse arithmetic) but the actual replay-side info worker output showed only 12.00 (ANCHOR own charge) at every checkpoint -- the first three assertions failed.", + "file": "src/scheduler/testsuite/test_sim_e2e_original_motivation.c", + "root_cause": "Recorded-Decision Reconciliation (sim_reconcile_unaccounted_jobs(), sim_loop.c, scheduler-sim-decision-parity tasks 2.2-2.4/3) matches a RUN-state, unaccounted job against a DISPATCH decision recorded in THAT SAME replayed round only -- never an earlier or later round (each round decoded_session is decoded fresh and freed immediately after that round own processing). A job that arrives PEND and is genuinely live-dispatched by a real allocator in round K, then confirmed RUN via a JOB_STATE_CHANGE event in a LATER round K+1, can never be reconciled during replay: round K+1 own decoded decisions do not contain a match (the real DISPATCH is in round K own data), so the job stays RUN+unaccounted forever (Requirement 4 graceful degradation, correctly, not a bug in production). This is structurally impossible to avoid for ANY organically-arriving job, since a job cannot simultaneously be a fresh PEND candidate for a live picker (required to ever get a real DISPATCH decision) AND already-RUN-before-the-picker-runs (required for reconciliation to even consider it) in the same round -- confirmed by direct source read of sim_loop.c/driver.c/builtin_fcfs.c before writing any test code, then independently reconfirmed empirically by running the real test binary. Only ONE job in the whole fixture (ANCHOR_ID) was deliberately engineered so its arrival+RUN-confirmation events AND its own injected DISPATCH decision land in the exact same round (round 1) -- every other churn job (J2-J12) arrives and is genuinely live-dispatched by the test own capacity-aware allocator thread in ITS OWN arrival round, so its dispatch can never be reconciled later, exactly like every other real production job whose confirmation lags its dispatch by more than zero rounds.", + "fix": "Changed all four info-worker checkpoint assertions from the RECORDING-side arithmetic (17.00/18.00/20.00/12.00, i.e. what a normal-mode continuation of the same session would show) to the REPLAY-side reality: a constant used=12.00 (ANCHOR_ID own charge only) at all four checkpoints spanning the 24-round replay, since no churn job dispatch is ever reconciled. Added an explicit non-tautology guard (used=0.00 never appears) and an extensive header-comment/round-table-comment explanation of why churn-job charges never surface during replay, so a future reader does not mistake this for an oversight. Also independently reconfirmed via a live discriminating-power check: commenting out sim_loop.c own sim_reconcile_unaccounted_jobs() call site made the ANCHOR_ID DISPATCH-visibility assertion fail for the right reason; restoring it (git diff clean on production files afterward) made the whole suite green again.", + "tags": [ + "scheduler", + "sim", + "replay", + "reconciliation", + "test-authoring", + "scheduler-sim-decision-parity" + ], + "related_bugs": [ + "bug-1611", + "bug-1613" + ], + "occurrences": 1, + "last_seen": "2026-08-22T12:40:00Z" } ] -} +} \ No newline at end of file