docs(scheduler-core): commit accumulated brief/requirements/roadmap edits
These edits (three-thread picker correction in brief.md, record_dir path-validation and kvmgr-audit requirements in requirements.md, OPCode_schedAdmin folded into the peer-authentication-hardening backlog item in roadmap.md) were made during earlier requirements review and design work but left uncommitted. Reviewed for accuracy against the completed implementation — all still correct, persisting as-is. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
This commit is contained in:
parent
d7b4969095
commit
dfd8f5b342
3 changed files with 32 additions and 10 deletions
|
|
@ -35,7 +35,7 @@ Operators need configurable scheduling policies, and developers need a way to de
|
|||
|
||||
### 1. Pluggable Job Picker
|
||||
|
||||
The core scheduling loop calls `picker->next_job()` to get the next schedulable job, with zero knowledge of how jobs are selected. The picker runs synchronously in the core's scheduling thread — no dedicated picker thread, no `jbuf` cbuf.
|
||||
The core scheduling loop calls `picker->next_job()` to get the next schedulable job, with zero knowledge of how jobs are selected. The picker retains today's dedicated thread, communicating with the allocator thread via the existing `jbuf` cbuf (superseded by the full three-thread producer/consumer contract in requirements.md Req 1 AC 3-4 — this brief predates that decision).
|
||||
|
||||
Picker plugin interface (`xce_job_picker_iface_t`):
|
||||
|
||||
|
|
@ -54,7 +54,7 @@ Scheduler core is a passive, event-driven engine with zero controller I/O depend
|
|||
| Mode | Driver | Input | Output |
|
||||
|------|--------|-------|--------|
|
||||
| Normal | Controller-connected | capnp push/notify → core events | Core decisions → controller |
|
||||
| Simulation | Replay file | JSONL event file → core events | Core decisions → log |
|
||||
| Simulation | Replay file | `.replay` capnp binary stream → core events | Core decisions → log |
|
||||
|
||||
- **Mode-agnostic core**: no mode flag, no mode-specific code paths
|
||||
- **Virtualized clock**: `xce_core_now(core)` with two-base + speed formula
|
||||
|
|
@ -124,7 +124,7 @@ Normal: bases=0, speed=1/1 → returns wall clock. Simulation discrete: speed=0/
|
|||
- `xce_sched_core_t` / `xce_sched_driver_t` / `xce_sched_sim_driver_t`
|
||||
- `xce_core_event_t` — typed event interface
|
||||
- `xce_core_decision_cb_t` — decision callback
|
||||
- JSONL replay format + snapshot/restore
|
||||
- `.replay` capnp binary stream format + snapshot/restore
|
||||
- `xce_core_now()` — virtualized clock accessor
|
||||
- `builtin_fcfs` — single builtin picker
|
||||
- `job_pick_plugin` on scheduler + per-queue override
|
||||
|
|
@ -139,7 +139,7 @@ Normal: bases=0, speed=1/1 → returns wall clock. Simulation discrete: speed=0/
|
|||
- Core/driver separation: passive core, normal driver, simulation driver
|
||||
- Virtualized clock (`xce_core_now()` with two-base + speed formula)
|
||||
- Discrete event-driven virtual clock
|
||||
- JSONL replay format (HEADER + SNAPSHOT + events + DECISIONS)
|
||||
- `.replay` capnp binary stream format (HEADER + SNAPSHOT + events + DECISIONS)
|
||||
- State snapshot/restore
|
||||
- Deterministic replay guarantee
|
||||
- Runtime recording control via xceadmin commands
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue