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, andcheck_component_drift.py --allpasses.
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_valuecarries nostd::optionalentry, 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 displaythe generated list tables rendered an empty header and no rows, so the section is what makes the component's list surface exist at all.