--- id: "bug-1514" status: "fixed" status_updated: "2026-09-24" status_note: "" component: "scheduler" severity: "unknown" timestamp: "2026-08-10T18:46:00.000Z" last_seen: "2026-09-19T09:00:00Z" occurrences: 1 files: [".kiro/specs/component-failover-adoption/design.md", "tasks.md", "research.md"] tags: ["design-review", "thread-model", "kiro-validate-design", "scheduler", "critical-issue"] related: [] legacy: true --- # bug-1514: kiro-validate-design Critical Issue 1: design.md claims sched_job_picker/sched_allocator are… ## Description kiro-validate-design Critical Issue 1: design.md claims sched_job_picker/sched_allocator are 'unaffected' by a blocked xcecli_jobdispatch call, violating Req 3 AC1 ## Environment _Not recorded (migrated from buglog.json)._ ## Reproduction _Not recorded (migrated from buglog.json)._ ## Root cause design.md/tasks.md/research.md all wrongly claimed xcecli_jobdispatch executes on the sched_allocator thread. Verified against source: it actually runs on scheduler.c's main driver-loop thread (main.c while(1) -> xce_sched_driver_run_normal_mode_round -> driver.c on_decision -> sched_publish_dispatch, scheduler.c:1257), reached only after draining the decisions cbuf (capacity 5). sched_allocator only produces into decisions; it never calls xcecli_jobdispatch. jbuf (picker->allocator handoff) is a fixed capacity-1 scheduler-core invariant (core.c:161, never resizable). So a blocked dispatch call backpressures through decisions (5 slots) then jbuf (1 slot) -- picker/allocator get a bounded ~6-job grace window, then both stall. Not full isolation as originally claimed. ## Fix Corrected thread attribution and rejoin-call placement in design.md (SchedulerControllerClient section, sequence diagram note, traceability table) and tasks.md (task 3.1/3.2) to point at sched_publish_dispatch/main-loop thread instead of sched_allocator. Documented the real bounded-buffering model (jbuf cap 1 + decisions cap 5 = ~6-job grace window). Added a Req 3 AC1 scope-narrowing note as a Validation Hook -- flagged for human sign-off on requirements.md, not edited directly (requirements phase already approved). Corrected the same wrong claim at its source in research.md (lines 22, 30, 84). ## Verification _Not recorded (migrated from buglog.json)._ ## References _Not recorded (migrated from buglog.json)._