Story: Clean ores.marketdata 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.marketdata 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.marketdata joins COMPONENTS_UNDER_TEST. Order 29 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. |
| Last touched | 2026-10-01 |
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.marketdata is listed in
COMPONENTS_UNDER_TEST, andcheck_component_drift.py --allpasses.
4. Tasks
| Task | State | Start | End | Description |
|---|---|---|---|---|
| Bring ores.marketdata to the clean standard | DONE | 2026-09-26 | 2026-10-01 | Work ores.marketdata through the Component Clean Standard in order and record each item. 28 Pass, four Fail and one Partial, with each item that is not met named and its disposition recorded. |
| Give every fixing index name an oresmd identity | DONE | 2026-09-28 | 2026-09-30 | Map the fixing key space to oresmd so the identity cutover can land: a fixing's key is an index name, not the series key grammar, and the corpus carries 158 distinct ones across six asset classes. |
| Declare the asset class lists once | DONE | 2026-09-30 | 2026-09-30 | The refdata product taxonomy and the oresmd market-data namespace are two different lists that overlap, and each is hand-copied in dozens of places. Declare both once in a codegen model, generate the seed SQL, the DQ badges, the briefs and the docs from it, and validate the oresmd authorities against it. |
| Make the oresmd URI the series identity | DONE | 2026-09-30 | Cut the market series identity over to the oresmd URI: the column on market_series and feed_binding, the import writing it, and the registry triple gone. |
5. Notes
- Survey on 2026-09-23: 15 entity, junction or operation models; 262 C++ files outside tests, 185 of them generated (70%); 40 messaging headers, 12 of them hand-written.
- Eight models are oresmd quote types, a metatype of their own. Classify them under B02.
- Review on 2026-10-02, after the grammar story closed: Review of ores.marketdata after the grammar story. It re-checks the checklist record against the tree and finds M06 and P04 met, 16 items unrecorded, and the component listed with no accepted exceptions.
6. Decisions
- The identity is the oresmd URI.
market_series.oresmd_uriis not null, non-empty and unique withparty_id, and the registry's three columns no longer key the row. A key the grammar cannot name is dropped and reported rather than stored with no identity. - A fixing's key is an index name, not the series key grammar. The fixing key space has its own identity path, and the corpus's index names read back as they arrived.
- The asset class lists are declared once. The refdata product taxonomy and the oresmd namespace are two different lists that overlap; one codegen model declares both and generates the seed SQL, the DQ badges, the briefs and the docs, and validates the oresmd authorities against it.
7. Result
Closed with the checklist at 28 items Pass, four Fail and one Partial. The
acceptance says every applicable item passes; the record does not, and names
each item that is not met with its disposition in
the checklist task's * Result.
Two are captured for follow-up (the six unmapped protocol headers, and the
vacuous permission check), one is deferred to backlog story F15A8480, and one
is a deliberate stop recorded rather than forced.
Three things this story delivered, and one thing it exposed:
- Every fixing index name has an oresmd identity.
- The asset class lists are declared once and generated.
- The oresmd URI is the series identity.
- Cutting the identity over to the URI exposed that the grammar cannot say what a datum is: a surface coordinate is one comma-joined string, and the model subtype is dropped from the series identity, so the corpus's lognormal and normal vol for one underlying collide. That is Make the oresmd URI grammar explicit and typed, opened at this close.