Story: Clean ores.scheduler to the component clean standard
Table of Contents
This page documents a story in Sprint 26. It captures the goal, current status, acceptance criteria, and the tasks that compose it.
1. Goal
ores.scheduler meets the Component Clean Standard: every item: All, Protocol and Entity pass, each item that does not apply is recorded with its reason, and ores.scheduler joins COMPONENTS_UNDER_TEST. Order 20 of 35 in the sprint 26 component clean-up, tier 2 (higher infrastructure).
2. Status
| Field | Value |
|---|---|
| State | STARTED |
| Parent sprint | Sprint 26 |
| Now | The job_definition entity is modelled, regenerated and wired; its hand-written stack and the retired custom operations are gone. |
| Waiting on | Nothing. |
| Next | The remaining units on the task: the diagram manual pass, the shell part, and the job_instance entity. |
| Last touched | 2026-09-26 |
3. Acceptance
- Every checklist item that applies to a component of kind Entity passes, with its evidence recorded on the task.
- Every item that does not apply is recorded as not applicable, with the reason.
- Every generator defect found is fixed at its source, with a regression test.
- ores.scheduler passes its own gate,
check_component_drift.py --component scheduler-cpp. It joinsCOMPONENTS_UNDER_TEST, and with it the shared--alllist, in thejob_instanceunit (V06); the shared list deliberately covers only a component whose regeneration leaves the tree fully clean.
4. Tasks
| Task | State | Start | End | Description |
|---|---|---|---|---|
| Bring ores.scheduler to the clean standard | BACKLOG | Work ores.scheduler through the Component Clean Standard in order and record each item. |
5. Notes
- Survey on 2026-09-23: 1 entity, junction or operation models; 62 C++ files outside tests, 0 of them generated (0%); 5 messaging headers, 5 of them hand-written.
- Nothing is generated yet. Known work sits in the inbox story "Complete the LLM skills catalogue": the scheduler audit findings, the hand-written operations to model, and the custom history handler to replace. Take those tasks into this story.
- Survey on 2026-09-26, before any edit: 39 public headers, reproduced by command at
f7fc9396b7; nine of the names they declare had a production consumer outside the component, all of them inores.reporting, and that list is verified bygit grepat the same revision:cron_expression, itsrfl::Reflector,job_definition, and the three request and response pairs of the old protocol. The survey also tallied 59 declared symbols, a manual count that no command reproduces – counting named types alone gives 45 – so the task keeps the verified list rather than a ratio. One model was visible to codegen, eight subject literals were in code, and regeneration would have rewritten 19 files and created 12. - The
job_definitionunit is done: the model is resynced and bound touuid-identified-lookup, the entity stack is generated, the retiredschedule,unscheduleandschedule-batchsubjects are gone in favour of the canonical put, put_many and delete verbs,ores.reportinghas moved to them, and the generated history provider replaces the custom history handler. Five generator defects were found and fixed at source, each with a regression test. - The units that remain are recorded on the task, each with its size: the
job_instancemodel and the registry entry (M06, V06 and V05's last clause), the scheduler shell part and its commands (S01, S02 and V04), the scheduler loop's I/O path – the decisions it computes are tested now, the database and NATS work is not – the model-property reference gap, the repository-widecomponent_files.cmakesweep, the drift check's repository-wide diff, the SQL ER diagram that no gate covers, and the diagram generator's inability to regenerate a composite component's modules.