Story: Rework the market data feeds into a market data service with adapters — the remaining work

Table of Contents

This page documents a story in Sprint 30, carried unfinished from Sprint 29 at close. It captures the goal, current status, acceptance criteria, and the tasks that compose it.

1. Goal

ores.marketdata owns the catalogue, the mapping, the ingest path, routing and metering. Adapters, including the simulator, publish vendor-id ticks over NATS and answer a demand set. Every simulated feed belongs to the system tenant and the system party, a party takes a provider by subscription, and no part of the system behaves differently because a source is simulated.

2. Status

Field Value
State BACKLOG
Parent sprint Sprint 30
Now Not yet started. Split from Rework the market data feeds into a market data service with adapters — the remaining work, which closed in sprint 29 with its done tasks.
Waiting on Nothing.
Next Triage into a sprint.
Last touched 2026-11-08

3. Acceptance

  • The catalogue holds providers, sources with a kind, vendor instruments and mappings, installed by a system bundle.
  • An adapter announces itself, answers a demand set, publishes vendor-id ticks and sends a heartbeat, and the service maps, checks, stores and delivers them.
  • A party holds a subscription with rights and one route per provider, and a source switch is audited and effective-dated.
  • The simulator is an adapter under ores.marketdata.synthetic, its generators belong to the system tenant and system party, and no subject, table or constraint carries a mark of the simulator.
  • Usage events, rate cards, rating and allocation give each party a bill, and a simulated source gives a shadow bill.
  • The screens and the shell follow the architecture pages, and a scenario shows a development party on a simulated source and a prelive party on a live source side by side.

4. Tasks

Task State Start End Description
Add a replay adapter BACKLOG     Add an adapter that replays recorded vendor ticks as a source of kind replay.
Build the curve blueprint screens DONE 2026-10-28 2026-11-08 Implement the signed-off prototype with the standard record infrastructure.
Build the market data service screens BACKLOG     Build the catalogue, subscriptions and routes, usage and cost, and source status screens, and retire the bindings screen.
Check a development party and a prelive party side by side BACKLOG     Write and run a scenario with one party routed to the simulated source and one to the live-kind source, both running.
Draw the prototypes and wireframes for the new journeys BACKLOG     Draw the wireframes and prototypes for the subscriptions, sources and offer-a-collection journeys.
Refresh the simulator adapters when the catalogue changes BACKLOG     The simulator builds its adapters once, at start. A new simulated source needs a restart.
Remove the marks of the simulator from names, subjects and constraints BACKLOG     Remove the synthetic prefix, subjects, constraints and screen marks so that nothing in the system depends on the simulator.
Rename the simulator component to ores.marketdata.synthetic BACKLOG     Rename the synthetic component to ores.marketdata.synthetic, with the codegen identity, the paths and the namespaces.
Repair the baseline drift the gate reports DONE   2026-11-08 Commodity, workflow and reporting merges left generated artefacts, seeded permissions and pgTAP expectations stale.
Rework the shell commands for the market data service BACKLOG     Add shell commands for the catalogue, subscriptions, routes, sources and usage, and move the simulator commands.
Split trade generation into ores.trading.synthetic BACKLOG     Move the trade generators out of ores.synthetic into ores.trading.synthetic.
Store one tick for each source BACKLOG     Write each tick once under the system tenant, point the per-party series at it, and remove the ingest's routes read.
Write the vendor tickers of the curve pillars BACKLOG     Give each rate curve pillar of Bloomberg and LSEG a vendor id, so the native simulator can serve curves.

5. Decisions

  • Split from Rework the market data feeds into a market data service with adapters — the remaining work on 2026-11-08 at sprint 29 close. The acceptance above is copied from that story; its done tasks are recorded there.
  • Reviewed on 2026-11-08 at sprint 30 start. Eight sensitivity ladder tasks moved to Build the sensitivity ladders, because they are report work and not the market data service. PR #3769 modelled the tick table and did not deliver Store one tick for each source, so that task stays open.

6. Out of scope

Emacs 29.3 (Org mode 9.6.15)