Task: Use oresmd on the market data generation path
Table of Contents
This page documents a task in the Rework the market data feeds into a market data service with adapters — the remaining work story. It captures the goal, current status, acceptance, and any notes or results.
1. Goal
No runtime reader, feed or classifier composes an ORE key; the runtime identity is the oresmd URI, and ORE keys live only at the ORE XML boundary.
2. Status
| Field | Value |
|---|---|
| State | DONE |
| Parent story | Rework the market data feeds into a market data service with adapters — the remaining work |
| Now | Nothing. |
| Waiting on | Nothing. |
| Next | Nothing. |
| Last touched | 2026-10-29 |
3. Acceptance
- The synthetic IR feed builds native oresmd datums and publishes the same series the bootstrap reads.
- The series classifier keys its rules on the oresmd identity, with the rule catalogue migrated.
- The oresmd codec accepts a valid datum that has no ORE spelling; ORE import and export keep their keys.
4. Plan
(Implementation strategy. Written when work starts; key decisions
are distilled into the parent story's * Decisions at close, but the
plan itself stays — it is the historical record of what we did.)
5. Measurements
Every number this task claims about a tree, with the command that produced it
and the commit it was measured at. A number without both is not a measurement,
because a clean-up record describes a tree and trunk moves under a branch: a
consumer count, a gate's component count and a suite's size all change with no
code changing, and the reader of a bare number cannot tell which tree it came
from. Where the raw output matters, put it in an evidence/ file beside the
task and name that file in the Command column.
| What | Value | Command | Commit |
|---|---|---|---|
6. Notes
7. Test Scenarios
Manual QA scenarios (scaffolded via compass add test_scenario)
that verify this task. Link
new ones here as they're created; the scenario doc itself links back
via its "Verifies task" field.
| Scenario | State | Notes |
|---|---|---|
8. PRs
| PR | Title |
|---|---|
| #4060 | [marketdata] Use oresmd on the runtime's market data path |
9. Review
| Comment summary | File | Decision | Notes |
|---|---|---|---|
10. Result
The runtime no longer spells market data the ORE way; the ORE key lives only at the ORE XML boundary.
- The synthetic IR feed builds each quote as a market data model datum through one builder (pillar_quote_datum); pillar_quote_key is deleted.
- The series classifier keys on (key_kind, instrument, quote); index series read their class from their own schema row; the catalogue migrates from 42 ORE rows to 41 datum rows and 1 index row, and the GENERIC-MD wrapper row is gone.
- The oresmd codec accepts every datum the model admits; the ORE-key validation is removed in read and write; the ORE import and export keep their keys.
- The seeded blueprint is the spot-starting USD SOFR ladder reading one named series, because a meeting-dated ladder's series identity depends on the as-of.
Evidence: marketdata core 330, service 203, synthetic 94, shell and refdata suites, web 2327, BFF 1137, codegen idempotent, model and docs checks clean. Live: the IR feed publishes 12-point batches, no stored series or observation carries an ORE spelling, and the migrated catalogue classifies the stored series.
Open: no synthetic-provider tick reaches the store in this environment, so the compute, check and publish are proved by the suites and not live; the smoke aborts at trade generation on a missing handler. The delivery plumbing is the next task.