Task: Design the bootstrapping screens

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

Journeys and a signed-off-ready prototype describe the bootstrapping screens for the web, from the Qt prior art.

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-28

3. Acceptance

  • A journey for managing an IR curve bootstrap configuration, with its screens, fields and actions.
  • A prototype with its design note, group row and inventory, awaiting sign-off. No implementation.

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
Journey pages added to the market data group 2 git show --stat 13287c06 13287c06381f
Prototypes the market data group lists 25 python3 build/scripts/check_prototype_inventory.py 8742f4888acd
Query states of the prototype that render their markers 29 google-chrome --headless=new --dump-dom 'file://\$PWD/doc/prototypes/market_data/curve-blueprints/index.html?bp=SEK-STIBOR-6M&tab=check', run for each state, with a --user-data-dir because the headless browser cannot create one 8742f4888acd

6. Notes

The journeys name the record a curve blueprint, the word the market data group already uses for the IR curve bootstrap config, and keep the model's words for the permission codes.

The Qt workbench is prior art for the job and not for the layout. The journeys record each place they part from it: a record page replaces the three-tab workbench, the pillars become parts written one at a time, the source series is not asked for at all, the output series is minted by the server, the derived pillar order is stated rather than silently applied, and the copy becomes the kind's own action with the three fields that name the curve.

Two defects in the prior art are named in the journey so they are not inherited: the delete confirmation names a UUID twice instead of the curve, and the discount-curve picker's first column is headed "Output Series Id" while it draws the series' qualifier.

The prototype was rendered headless for every state the design note lists. The verification needs a --user-data-dir and a writable profile: bare headless Chrome fails with "Failed to create a unique user data directory".

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
#3991 [marketdata] Design the curve blueprint screens

9. Review

Comment summary File Decision Notes
       

10. Result

Signed off on 2026-10-28, with two small points applied.

  • Two journeys: maintain the curve blueprints, and check that a blueprint builds. They name the record a curve blueprint, its five tabs, its dialogs, and the Qt workbench's departures with a reason for each.
  • The prototype draws the list, the record, five tabs, four dialogs, the in-dialog record picker, and the Market data area card, with 34 states verified headless.
  • Every coded value is drawn through one renderer, after the app's CodedValue: a pill where the label catalogue paints it, the code where it does not. The note lists the six domains the seed would need and that the curve codes are plain until it has them.
  • The card: Curve blueprints, first in the Market data area, at /market-data/curve-blueprints, reading refdata::ir_curve_bootstrap_configs:read, in the words the other cards use.

Open, recorded in the note and the journeys: the record's key, the minted output series, retire, delete while published, whether Check is a tab, the Curves menu entry, and whether the seed gains the six badge domains.

The journeys and the prototype are on branch feature/design-the-bootstrapping-screens in two commits:

Commit What it holds
13287c06 The journeys: maintain the curve blueprints, and check that a curve blueprint builds
8742f48 The prototype, its design note, the group row and the counts

The prototype answers both journeys and does not mirror them. The design note carries a coverage table for each, naming every step, the part of the screen that carries it, and what is deliberately not drawn.

Four things a journey asks for have no home on the page, and each is recorded in the note: a retire action, because the record has no status; a message under a wrong field, because the only wrong value the page can draw is a pillar the Check tab judges; a test result held against a version; and a save that writes the recipe and its pillars together.

No code changed. No route, no BFF entry and no React screen was added.

Emacs 29.3 (Org mode 9.6.15)