Story: Clean ores.service 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.service meets the Component Clean Standard: the items marked All and Protocol pass, each item that does not apply is recorded with its reason, and ores.service joins COMPONENTS_UNDER_TEST. Order 13 of 35 in the sprint 26 component clean-up, tier 2 (higher infrastructure).

2. Status

Field Value
State DONE
Parent sprint Sprint 26
Now Done. The task's record carries the item-by-item evidence.
Waiting on Nothing.
Next Nothing here; the registry gap is the standard's own recorded exception.
Last touched 2026-09-26

3. Acceptance

  • Every checklist item that applies to a component of kind Protocol 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.service is listed in COMPONENTS_UNDER_TEST, and check_component_drift.py --all passes.

4. Tasks

Task State Start End Description
Bring ores.service to the clean standard DONE 2026-09-26 2026-09-26 Work ores.service through the Component Clean Standard in order and record each item.

5. Notes

  • Survey on 2026-09-23: 0 entity, junction or operation models; 21 C++ files outside tests, 0 of them generated (0%); 2 messaging headers, 2 of them hand-written.
  • The work is recorded item by item on the task. The file count is 20 rather than 21 because the duplicate host-runner pair was deleted.
  • Three duplications were the real findings: the service lifecycle tail existed three times, the host-runner envelope twice, and the workflow step command header vocabulary twice across two components. Each is collapsed.
  • One generator defect was found and fixed at source, with a regression test: the component-diagram parser dropped an enumerator that carried a Doxygen trailing comment, so exit_code's box arrived empty and a refresh would have deleted the values.
  • The component had no test suite beyond main.cpp. It now has seven files and 39 cases covering the exit-code contract, the host envelope, the permission and stamping helpers, the wire decode, the JWT-to-context step and the systemd readiness datagram.
  • The component does not join COMPONENTS_UNDER_TEST, and cannot: the registry lists component_catalogue.org entries and a catalogue entry is a modeling directory codegen can read. The standard records this infrastructure-tier gap; ores.service joins the list of components it covers, alongside ores.connections and ores.orgmode.
  • The standard grew twice while the task ran, and trunk corrected its own checklist count at the same time. The record covers the 49 items the checklist holds on the branch, H05 included. H05 is the documentation item, which this pass satisfies by rewriting the overview and refreshing the diagram in the same piece of work.
  • The tree-wide build and validate_docs.sh were briefly red on trunk, for three defects the workflow shell and api scaffold left behind when PR #2173 merged: ores.shell.workflow.tests had no main.cpp, the ores.workflow.api target compiled none of its generated sources, and ores.shell.workflow had no modeling overview or diagram. None was this branch's, PR #2179 fixed all three, and the final rebase cleared them. The task records the sequence under V01 and V05.

6. Decisions

7. Out of scope

Emacs 29.3 (Org mode 9.6.15)