Task: Name a feed by its oresmd URI

Table of Contents

This page documents a task in the Implement the synthetic market data journeys in ores.web story. It captures the goal, current status, acceptance, and any notes or results.

1. Goal

An FX feed names the datum it simulates by its ORE key (fx_spot_generation_config.ore_key, e.g. FX/RATE/EUR/USD). The feed turns that key into an oresmd URI at run time (fx_spot_feed.cpp) and the market data ingest turns it back (tick_plan.cpp). ORE keys are an import format, not our identity: the feed should hold the oresmd URI (or the series identity the resolver takes), the web screen should show and pick it as the identity, and the ORE key should be derived for export only. This also lets the feed screen read the feed's stored ticks through the series reads (get_series_slice, get_series_evolution), which take the oresmd identity.

2. Status

Field Value
State DONE
Parent story Implement the synthetic market data journeys in ores.web
Now Nothing.
Waiting on Nothing.
Next Nothing.
Last touched 2026-10-12

3. Acceptance

  • fx_spot_generation_config holds the oresmd identity in place of ore_key; a migration converts every existing row and every seeded dataset.
  • The synthetic feed, the vintage lookup and the market data ingest read the oresmd identity, with no ORE key round trip.
  • The FX feed screen shows and edits the identity, and derives it from base and quote as it derives the ORE key today.
  • The Qt market simulator reads the same identity.
  • The IR curve feed is checked for the same problem and either fixed here or given its own task.

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

  • A related capture in the inbox: A feed binding's existence claim is keyed on the ORE key alone. The binding is the feed's consumer side and keys on the same ORE key, so work the two together.
  • The FX feed screen and its standard are in place (PR of Build the FX price feed screen); the screen derives the ORE key from the pair in completeFeed and shows it on Details, which this task replaces with the oresmd identity.
  • The Ticks tab reads the BFF's tick buffer until the feed holds its series identity; with it, the tab can read the stored observations.

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
#3152 Name every synthetic feed by its oresmd reference

9. Review

Comment summary File Decision Notes
       

10. Result

Done by the story Name every synthetic feed by its oresmd reference, in PR 3152. The FX feed table holds oresmd_uri in place of ore_key. No migration was written: the data is test data and the database is recreated. The republish subject still uses the ORE key; the task Name the republish subject by the oresmd URI tracks it.

Emacs 29.3 (Org mode 9.6.15)