diff --git a/.kiro/specs/ha-config-bootstrap/spec.json b/.kiro/specs/ha-config-bootstrap/spec.json index e4e514d0..86f5e0ec 100644 --- a/.kiro/specs/ha-config-bootstrap/spec.json +++ b/.kiro/specs/ha-config-bootstrap/spec.json @@ -3,9 +3,9 @@ "description": "Replace LSF-style priority election with Raft-style quorum voting, add majority-commit WAL and config replication, establish persistent control channels, and harden the controller startup sequence for full CP high-availability.", "phase": "implemented", "created_at": "2026-05-27T01:24:00-07:00", - "updated_at": "2026-05-27T17:35:00-07:00", + "updated_at": "2026-08-16T04:30:00-07:00", "language": "en", - "status": "active", + "status": "closed", "approvals": { "requirements": { "generated": true, @@ -20,5 +20,5 @@ "approved": true } }, - "note": "All tasks 1.x-11.x done (verified 2026-06-09 gap analysis). Known deviations: redirect fields never populated (dead end-to-end, successor-spec gated), WAL majority-commit covers WAL_JOB_SUBMIT only (sync-append coverage in ha-repl-hardening), commit timeout silently degrades (CP-vs-availability operator decision needed)." + "note": "CLOSED 2026-08-16. All 3 known deviations from the 2026-06-09 gap analysis resolved or deliberately superseded, confirmed by this spec's own 2026-06-18 re-audit (research.md) plus a fresh cross-check: (1) redirect fields never populated -- closed by libxce-failover's fill_redirect_reply() (join.c:28), validate-impl GO 2026-07-18, explicitly closing this spec's Req 7 gap. Caveat: OP_upgradeConfig replies still lack redirect wiring, a narrower still-open gap found by admin-config-tool task 6.3 (2026-08-16) -- NOT a reopening of this deviation, since Req 7 only ever covered libxce's generic retry path, never OP_upgradeConfig specifically; track it under whichever spec next touches xceadmin/config-push. (2) WAL majority-commit covers WAL_JOB_SUBMIT only -- superseded by the deliberate wal_classify() WAIT/RETAIN scheme (ha-commit-barrier-rollout/ha-consistency-invariants, complete 2026-07-13); not a coverage gap, an intentional latency-driven design, not ha-repl-hardening as originally noted. (3) commit timeout silently degrades -- resolved as bug-661 via ha-commit-durability (17/17 tasks, validate-impl GO, re-verified live 2026-07-18: 8/8 rolling+cold-restart soak rounds, zero job loss)." } diff --git a/.kiro/specs/resval-id-decoupling/spec.json b/.kiro/specs/resval-id-decoupling/spec.json index 6cb958b1..c4160055 100644 --- a/.kiro/specs/resval-id-decoupling/spec.json +++ b/.kiro/specs/resval-id-decoupling/spec.json @@ -1,11 +1,11 @@ { "feature_name": "resval-id-decoupling", - "description": "investigate a better solution to pass resource val from controller to scheduler/api server, the current solution has a very strong assumption that the idx/id of resource in controller and scheduler should keep the same, but this assumption may be too strong, the key function is collect_resval_with_idx() in src/controller/dataex.c", + "description": "Investigated the controller-to-scheduler/apiserver resource-value transport, which previously assumed idx/id parity between controller and scheduler resource arrays (collect_resval_with_idx(), src/controller/dataex.c) -- a silent-corruption risk on divergent registration order. Recommended and shipped a name-keyed replacement.", "phase": "implemented", "created_at": "2026-05-12T06:52:00-07:00", - "updated_at": "2026-06-09T17:45:00Z", + "updated_at": "2026-08-16T11:35:00Z", "language": "en", - "status": "active", + "status": "closed", "approvals": { "requirements": { "generated": true, @@ -19,5 +19,6 @@ "generated": true, "approved": true } - } + }, + "note": "CLOSED 2026-08-16. Recommended fix was implemented, not just proposed -- collect_resval_with_idx() replaced by name-keyed collect_resval() (commit d47b3375, 2026-05-13, landed one day after this spec was created). Verified in current code: zero remaining callers of the old idx-keyed function; controller.capnp's Worker.resvals/Conf4Sched.resvals are List(NameValue); scheduler resolves via key_find() by name (scheduler.c, schedobj.c). Related hazard bug-335 (UPDATE_RESVALS hardcoded slot 0) closed 2026-06-10. research.md's own Gap Re-Audit (2026-06-18): 21/23 EARS requirements met, functionally complete. 2 SHOULD-level residuals left as separate small cleanup, not a spec: delete the now-dead ValueWithIdx/xce_val_with_idx_t type (zero real callers); add one regression test for divergent controller/scheduler registration order (EARS-R6-1)." } diff --git a/.kiro/specs/scheduler-controller-msg-gap/spec.json b/.kiro/specs/scheduler-controller-msg-gap/spec.json index f8d5ddca..368cf47c 100644 --- a/.kiro/specs/scheduler-controller-msg-gap/spec.json +++ b/.kiro/specs/scheduler-controller-msg-gap/spec.json @@ -3,9 +3,9 @@ "description": "Analyze the codebase to find gaps in the scheduler's handling of controller messages \u2014 missing message types, unhandled edge cases, or incomplete message processing paths", "phase": "implemented", "created_at": "2026-05-11T01:34:00-07:00", - "updated_at": "2026-05-11T19:30:00-07:00", + "updated_at": "2026-08-16T04:30:00-07:00", "language": "en", - "status": "active", + "status": "closed", "approvals": { "requirements": { "generated": true, @@ -20,5 +20,5 @@ "approved": true } }, - "note": "Bugs 335/336 fixed 2026-06-10. Memory leaks in sched_pend_update_killer and test coverage gaps remain documented. Scheduler 15/15 tests green." + "note": "CLOSED 2026-08-16. Both open items resolved: sched_pend_update_killer leak fixed in commit 93124c56 (2026-06-19, bug-765 G-3) -- verified current scheduler.c:394-460 correctly frees all 5 payload types. Test coverage gap substantially closed in commit 276e26c3 (bug-765 G-6) -- added test_handlers.c (6 tests) + test_job_update.c (10 tests); msg-gap-relevant suites now 31/31 (the prior '15/15' predates these files). Bugs 335/336 confirmed fixed 2026-06-10. 3 low-value residuals remain individually documented in tasks.md's Implementation Notes (9.2 -ENOMEM fault-injection, 9.6 dormant worker-resvals apply path, 9.9 log-capture-gated WARN test) -- non-blocking, not worth standalone tracking." }