Relocates sched_job_picker()/sched_allocator() out of scheduler.c (1382 lines, already over this project's 800-line cap) into a new sched_election.c, retyped to xce_sched_core_t* -- the single implementation both drivers will spawn (task 4.1 wires simulation mode onto it). Independently verified bit-for-bit identical to the pre-relocation bodies modulo the sched->/core-> rename; no statement reordered, no branch changed. sched_make_allocation() becomes extern (was static, sole caller moved translation units); the old commit_decision() thin wrapper is deleted, its sole caller now calls sched_commit_decision() directly with identical semantics. sched_init() updated to spawn the relocated pair against &(sched->core). Adds an end-to-end fixture test proving a job flows from picked to a committed decision against bare (non-xce_scheduler_t) core state. Routes around, rather than fixes, two pre-existing out-of-boundary gaps this fixture exposed (seqjob/parjob allocator init still reading plugin->sched; make_sched_job()'s parse path not threading maxtasks/mintasks) -- both documented in the test's own comments for future follow-up. sched_election.c added to the normal build only; sched_sim_isolation_lib membership deferred to task 4.1, which is where sim mode actually starts spawning these threads. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01RLSNJhNoULvVcUhXEFafQC |
||
|---|---|---|
| .. | ||
| settings | ||
| specs | ||
| steering | ||