From e3f5a813c6c3ee1161409d2f4fa545d607ed73f5 Mon Sep 17 00:00:00 2001 From: Rongsong Shen Date: Sat, 26 Sep 2026 03:33:15 +0000 Subject: [PATCH] chore(buglog): bug-1754 fixed (6876e4f6); log snapshot exit_info gap Co-Authored-By: Claude Opus 5.5 (1M context) --- .wolf/buglog.json | 30 +++++++++++++++++++++++++++--- 1 file changed, 27 insertions(+), 3 deletions(-) diff --git a/.wolf/buglog.json b/.wolf/buglog.json index be0462e8..da89ba67 100644 --- a/.wolf/buglog.json +++ b/.wolf/buglog.json @@ -24850,9 +24850,9 @@ }, { "id": "bug-1754", - "status": "open", - "status_updated": "2026-09-24", - "status_note": "failed job exit code never persisted: apply_job_fail_transition never sets exit_info (job.c)", + "status": "fixed", + "status_updated": "2026-09-26", + "status_note": "6876e4f6: WAL_JOB_FAIL carries an int32 code trailer; both apply seams adopt it into exit_info (non-POST_EXEC stages). Also fixed apply_wal_entry assigning wire state 0 for STAGE_FLAG FAIL entries.", "timestamp": "2026-09-01T13:00:00Z", "error_message": "Discovered while building worker-rejoin-resync task 7.1's full round-trip integration test (test_full_rejoin_reconciliation_round_trip, test_worker_resync.c): a worker-reported exit code for a finished-FAILURE outcome is never durably recorded by ANY existing path in this codebase, reconciliation or ordinary. record_job_fail_fact()'s WAL_JOB_FAIL payload (job.c, persist_submit_job_fact_ex(..., WAL_JOB_FAIL, jobid, 0, WAL_JOB_FAIL_STAGE_FLAG|stage)) carries no exit-code slot at all, and apply_job_fail_transition() (job.c:2831-2853) never touches job.job.exit_info for the FAIL path -- it stays NULL unconditionally for every job failure. The new round-trip test asserts this honestly (TEST_ASSERT_NULL on job.job.exit_info with an inline comment) rather than encoding a wrong 'correct' expectation.", "file": "src/controller/job.c", @@ -28038,6 +28038,30 @@ "related_bugs": [], "occurrences": 1, "last_seen": "2026-09-25T15:42:02Z" + }, + { + "id": "bug-1867", + "status": "open", + "status_updated": "2026-09-26", + "status_note": "found while fixing bug-1754; needs a Job.exitCode capnp field + encode/decode, snapshot round-trip test", + "timestamp": "2026-09-26T03:33:15Z", + "error_message": "Controller job snapshot/checkpoint drops job.exit_info: the capnp Job struct (controller.capnp) has no exit-info field, so capnp_encode_job() never writes it and a job restored from a snapshot (rather than WAL replay) has exit_info NULL for both DONE/EXIT (FINISH) and failed (FAIL) jobs", + "file": "src/schema/controller.capnp", + "root_cause": "struct Job in src/schema/controller.capnp has finishtime/runtime/pidinfo/pendreason but no exit code; xce_job_t.exit_info (job_exitinfo_t*) has no capnp mapping. bug-1689 and bug-1754 made WAL_JOB_FINISH/WAL_JOB_FAIL carry the exit code, but anything restored from a checkpoint/entity snapshot after WAL truncation loses it (persistence.md field-completeness).", + "fix": "", + "tags": [ + "persistence", + "snapshot", + "exit_info", + "field-completeness", + "controller" + ], + "related_bugs": [ + "bug-1689", + "bug-1754" + ], + "occurrences": 1, + "last_seen": "2026-09-26T03:33:15Z" } ] }