{ "feature_name": "scheduler-allocation", "created_at": "2026-07-27T00:00:00Z", "updated_at": "2026-09-25T00:00:00Z", "language": "en", "phase": "implementation-complete", "parent_spec": "scheduler-framework", "description": "Lazy iterator-driven allocation architecture with parallel job support and resreq caching for the XCE scheduler", "approvals": { "requirements": { "generated": true, "approved": true }, "design": { "generated": true, "approved": true }, "tasks": { "generated": true, "approved": true } }, "ready_for_implementation": true, "blocked_on": [ "RESOLVED 2026-09-03: scheduler-core reached implementation-complete (2026-08-19). scheduler-dispatch-commit reached implementation-complete (2026-08-24), including bug-1624 (task 2.1/3.1, 2026-08-23), the resInUse/sharedInUse corruption this spec's try_alloc_on_host() sequencing note was waiting on.", "RESOLVED 2026-09-04: requirements.md approved after extensive review -- 7 original findings plus several more surfaced during live design discussion (a self-contradiction in the parjob_allocator changes section, a plan/host-iterator init calling-convention mismatch vs. the declared struct interface, and a real correctness bug in the composition algorithm: host_iter was shared/forward-only across all buckets of a multi-bucket plan instead of freshly re-scanned per bucket, which would silently drop solvable multi-host allocations), all fixed in place; brief.md brought back into alignment with requirements.md's corrected architecture (it had drifted, still showing the pre-fix 2-level algorithm). Two adjacent, pre-existing gaps found along the way (sched_make_compound_allocation()'s missing rollback on partial failure; the recurring schedobj-reconstruction-duplication pattern in snapshot_load.c) logged as bug-1766/bug-1767 and deliberately kept out of this spec's boundary. No remaining blocker -- design phase clear to start." ], "sibling_specs": ["scheduler-core", "scheduler-preemption", "scheduler-dispatch-commit"], "sequencing_note": "Added 2026-08-23 (user directive): blocked on scheduler-dispatch-commit landing first -- this spec's try_alloc_on_host() reads the same resInUse/sharedInUse totals bug-1624 (fixed by scheduler-dispatch-commit) corrupts, and the planned XCE_ALLOC_PREEMPT borrowing mode interacts with what counts as committed/borrowable under that spec's redefined RUN-state timing.", "gitea": { "milestone_id": 44, "issues": { "requirements_design": 195, "implementation": 196, "validation": 197 } }, "completion_note": "Verified 2026-09-24/25 (kiro-verify-completion): scheduler suite 87/87 ASAN; live multi-host e2e PASS (33-task plain + array element split across 2 hosts, DONE) after bug-1857 fixture fix 3cc2f6e3; HA soak sequential PASS + chaotic PASS (after bug-1858 9e9f2798, bug-1859 7c98c056, bug-1862 c29518b2); bug-1770 (no parjob production path) fixed by resreq-maxtasks-wiring. Out-of-scope follow-ups remain open: bug-1766, bug-1768, bug-1769, bug-1771 (adjacent allocation defects), bug-1860." }