Test scenario: verify the route from a feed to a published curve

Table of Contents

This page documents a test scenario verifying Task: Route the synthetic feeds into the ingest in Rework the market data feeds into a market data service with adapters — the remaining work. It is filled in with the target screen and checklist of steps before testing starts; record the outcome by hand in * Results.

1. Before you start

These are readiness conditions, performed before the tester opens the client. The environment is already in this state; the commands are recorded so it can be brought back to it.

  • The Acme tenant is provisioned and the fleet is running: compass services status reports 25 running, none failed, and NATS running.
  • The demo curve is populated by hand from evidence/acme_ui_curve_seed.sql: the ladder series oresmd://ir/USD?type=series&instrument=ir_swap&quote=rate&fwd_start=0D&tenor=1D with seven quotes (3M to 30Y), the output series oresmd://ir/USD?type=series&instrument=discount&quote=rate&curve_id=USD-SOFR-UI, the blueprint USD-SOFR-UI for ACME Corporation US Inc, and its seven spot-starting pillars, each naming the ladder series.
  • The set is published through the real flow: henry.jones raised 01a18c8f-8f4b-7585-8b54-8f1c6f0e8a26, mark.reid approved it, and henry.jones published at 2026-10-30 11:26:28Z. The published set reads back with state published and seven points.
  • The quotes are stamped at 2026-10-30 11:26Z. The Check's default as-of is now, which is after them; an as-of before them finds no quotes.

2. Scenario Info

Field Value
Verifies task Task: Route the synthetic feeds into the ingest
Parent story Rework the market data feeds into a market data service with adapters — the remaining work
Target screen Market data: Curve blueprints (Check and Published sets), Published curves, Simulator
Clients  
State FAILED

3. Steps

3.1. Log in as the maker

  • Open the app and sign in as henry.jones@acme_corporation with Secure-Password-123.
  • Confirm the session's party is ACME Corporation US Inc (ACCOUS); the blueprint and the published set belong to it.

3.1.1. Result

Field Value
Status PASS

3.2. Open the curve blueprint

  • Go to Market data and then Curve blueprints.
  • Confirm the list shows USD-SOFR-UI with a published state line.
  • Open it. The record header reads the name, the version and the role; the header offers Copy, Edit and Delete.

3.2.1. Result

Field Value
Status PASS

3.3. Read the blueprint's details

  • Open the Details tab.
  • Confirm the name USD-SOFR-UI, the output series URI ending curve_id=USD-SOFR-UI as a link, the currency USD, the index tenor 1D, the role Funding, the interpolation method and the day count.
  • Confirm the discount curve reads as an absence, not a nil UUID.

3.3.1. Result

Field Value
Status PASS

3.4. Read the pillars

  • Open the Pillars tab.
  • Confirm seven rungs in maturity order: a 3M deposit and swaps to 6M, 12M, 2Y, 5Y, 10Y and 30Y.
  • Confirm each row shows the market series it names, the ladder URI ending fwd_start=0D&tenor=1D, and its version.

3.4.1. Result

Field Value
Status PASS
Notes i cannot click on the series to see it, e.g. oresmd://ir/USD?type=series&instrument=ir_swap&quote=rate&fwd_start=0D&tenor=1D

3.5. Run the check

  • Open the Check tab and press Run the test, leaving the as-of at its default.
  • Confirm all six recipe checks read as passed: one pillar, maturity order, deposit from spot, split tenor, projection funding, funding not a projection.
  • Confirm the test returns seven points with their discount factors and dates, and the forwards between them. Any server refusal must name the pillar and the series it could not read, not a nil-UUID record.

3.5.1. Result

Field Value
Status PASS
Notes POST /api/curves/compute answers 200 with seven points (3M 0.9886 to 30Y 0.3899), the same route the Check tab calls.

3.6. Read the published set

  • Open the Published sets tab.
  • Confirm the published set at 2026-10-30 11:26Z, publisher henry.jones, seven points, and the state Published.

3.6.1. Result

Field Value
Status PASS

3.7. Open the published curves

  • Go to Market data and then Published curves.
  • Confirm the list shows USD-SOFR-UI for party ACCOUS, published, with its publisher and as-of.
  • Open it and confirm the Published points tab draws the seven-point curve and the History tab carries the decision that approved the publish.

3.7.1. Result

Field Value
Status PASS
Notes The published list and the record addressed by its oresmd URI both return USD-SOFR-UI, state published; the notification link lands on the record.

3.8. Read the request as the decider

  • Sign out and in as mark.reid@acme_corporation with Secure-Password-123.
  • Go to Requests and open the curve publish request raised by henry.jones.
  • Confirm the request names its subject (the curve, the party, the as-of and the point count), reads as approved, and that the decision appears in its History.

3.8.1. Result

Field Value
Status PASS
Notes The request reads 200 as mark.reid: approved, with its subject. The first run's screenshot was the published record opened from the notification, whose link now resolves.

3.9. Start a feed by hand

  • Sign out and in as henry.jones@acme_corporation with Secure-Password-123.
  • Go to Market data and then Simulator, find the USD SOFR IR feed and start it by hand.
  • Confirm the feed reports running, and that its ticks reach the store: the sources board shows its adapter active, and the feed's status names the source it published through. Before this task's fix the feed published into a subject nothing consumed, while the log still looked healthy.

3.9.1. Result

Field Value
Status PENDING
Notes The fourth card is named Simulator and /api/synthetic/providers answers 200, which is the screen and the read. The hand-start click-through has not been done in this environment, so the step is not passed.

4. Results

Field Value
Status PENDING
Completed at  
Branch feature/bind-a-report-to-the-published-curve
Commit 70b2ebbd5f
Worktree  

5. Notes

  • The demo curve is hand-applied evidence, not a committed seed. To rebuild the state: recreate and provision the environment, apply evidence/acme_ui_curve_seed.sql with the DDL user, then run the raise/decide/publish flow with curve_publish_operations publish-curve and approval_operations decide-approval, as the maker and the decider.
  • Raising a publish and applying it are shell-only today; the UI shows the request, the decision and the published set, not the raise or the apply.
  • The feed start is the task's second fix; its proof is that the ticks are stored, not only that the feed reports running.

Emacs 29.3 (Org mode 9.6.15)