Story: Clean ores.analytics 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.analytics 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.analytics joins COMPONENTS_UNDER_TEST. Order 25 of 35 in the sprint 26 component clean-up, tier 3 (domain component).

2. Status

Field Value
State DONE
Parent sprint Sprint 26
Now Nothing.
Waiting on Nothing.
Next Nothing. The PR carries the work.
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.analytics is listed in COMPONENTS_UNDER_TEST, and check_component_drift.py --all passes.

4. Tasks

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

5. Notes

  • Survey on 2026-09-23: 4 entity, junction or operation models; 220 C++ files outside tests, 112 of them generated (50%); 21 messaging headers, 1 of them hand-written.

6. Decisions

  • 2026-09-26. The shell recipe sentinel for optional columns is recorded as a capture, not fixed here. _sentinel_value carries no std::optional entry, so an optional column falls back to __none__, while the shell reserves '-' for an absent optional. One generated analytics script aborts as a result. iam declares seven optional uuid columns, so the fix changes a closed component's committed recipes and its script library as well. One codegen-level change is better than two component stories each carrying half of it, and V04 explicitly permits recording a command that cannot run with its reason.
  • 2026-09-26. The declared-key finder defect is fixed inside this story. Analytics is where it first failed to build, the fix is output-neutral for every entity whose key is code, and the regression test belongs to the codegen suite rather than to the component.
  • 2026-09-26. The model section this pass added is the generator's input, not cosmetic. Without Table display the generated list tables rendered an empty header and no rows, so the section is what makes the component's list surface exist at all.

7. Out of scope

Emacs 29.3 (Org mode 9.6.15)