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 joins COMPONENTS_UNDER_TEST, and with it the shared --all list, in the job_instance unit (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 in ores.reporting, and that list is verified by git grep at the same revision: cron_expression, its rfl::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_definition unit is done: the model is resynced and bound to uuid-identified-lookup, the entity stack is generated, the retired schedule, unschedule and schedule-batch subjects are gone in favour of the canonical put, put_many and delete verbs, ores.reporting has 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_instance model 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-wide component_files.cmake sweep, 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.

6. Decisions

7. Out of scope

Emacs 29.3 (Org mode 9.6.15)