feat(scheduler-allocation): add lazy plan/host iterator contracts
Defines xce_alloc_plan_t (partition of a job's task count into per-host slot buckets), xce_alloc_plan_iter_t, and xce_host_iter_t (init/next/fini vtables, stack-allocate-then-init-in-place convention matching sched_ctx_init) as reusable abstractions any allocator can adopt. Proven usable by a trivial no-op reference implementation and a fresh-per-bucket host_iter composition test, no allocator wired in yet. Task 1.1 (scheduler-allocation spec). Requirements 2.1, 3.1. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01XYdtrEWWZfKRRGED7raEYg
This commit is contained in:
parent
d1a3e158ae
commit
d5d2c1caf5
4 changed files with 482 additions and 1 deletions
|
|
@ -1,7 +1,7 @@
|
|||
# Implementation Plan
|
||||
|
||||
- [ ] 1. Foundation: allocation data types and extension points
|
||||
- [ ] 1.1 Add the lazy plan-generation and host-candidate iterator contracts
|
||||
- [x] 1.1 Add the lazy plan-generation and host-candidate iterator contracts
|
||||
- Define the plan representation as a partition of a job's task count into per-host slot buckets, most-preferred ordering to be produced by whichever component generates plans
|
||||
- Define the plan-iterator and host-iterator contracts (initialize, produce next candidate, release resources) as reusable abstractions any allocator can adopt
|
||||
- Observable: the contracts compile and are referenced by at least a stub/no-op implementation with no allocator wired in yet
|
||||
|
|
@ -103,3 +103,7 @@
|
|||
- Observable: the soak reports zero new job loss, divergence, or liveness stall attributable to this feature
|
||||
- _Requirements: 9.4_
|
||||
- _Depends: 6.1_
|
||||
|
||||
## Implementation Notes
|
||||
|
||||
- (1.1) `xce_host_iter_t.next()` returns `xce_sched_worker_t*` (`sched/types.h`, carries `resvals`/`resInUse`/`host_eval_ctx`) — never `xce_worker_t*` (`xce/types.h`, the wire/config type `make_sched_worker()` converts FROM). requirements.md/design.md briefly had this wrong; fixed in commit `d1a3e158`. Task 2.1 (`host_iter.c`'s real implementation) and any later task touching worker candidates must use `xce_sched_worker_t*` from the start.
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue