Test scenario: verify the route from a feed to a published curve
Table of Contents
- 1. Before you start
- 2. Scenario Info
- 3. Steps
- 4. Results
- 5. Notes
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 statusreports 25 running, none failed, and NATS running. - The demo curve is populated by hand from
evidence/acme_ui_curve_seed.sql: the ladder seriesoresmd://ir/USD?type=series&instrument=ir_swap"e=rate&fwd_start=0D&tenor=1Dwith seven quotes (3M to 30Y), the output seriesoresmd://ir/USD?type=series&instrument=discount"e=rate&curve_id=USD-SOFR-UI, the blueprintUSD-SOFR-UIfor ACME Corporation US Inc, and its seven spot-starting pillars, each naming the ladder series. - The set is published through the real flow:
henry.jonesraised01a18c8f-8f4b-7585-8b54-8f1c6f0e8a26,mark.reidapproved it, andhenry.jonespublished at2026-10-30 11:26:28Z. The published set reads back with statepublishedand 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_corporationwithSecure-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-UIwith 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 endingcurve_id=USD-SOFR-UIas a link, the currencyUSD, the index tenor1D, the roleFunding, 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"e=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, publisherhenry.jones, seven points, and the statePublished.
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-UIfor partyACCOUS, 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_corporationwithSecure-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_corporationwithSecure-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.sqlwith the DDL user, then run the raise/decide/publish flow withcurve_publish_operations publish-curveandapproval_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.