Task: Document currency pairs and conventions in the user manual
This page documents a task in the Currency pair support in reference data story. It captures the goal, current status, acceptance, and any notes or results.
Goal
Currency pairs and currency pair conventions have no coverage in
the user manual. Add a section (following the manual's existing
chapter/screenshot-placeholder conventions) covering: what a currency
pair is (pair_code derived live from Base/Quote and locked after
create, classification), what a currency pair convention is
(pair_code — a flagged combo picking an existing pair, locked after
create — pip_factor, tick_size, decimal_places,
advance_calendar, business_day_convention, spot_relative,
end_of_month), and how to manage both from the Qt client —
including the duplicate/inverted-pair rejection on create and the
"Conventions" cross-navigation toolbar button.
Deliverability (deliverable=/=settlement_currency) was modelled,
then dropped this sprint — a single boolean/optional-currency pair
can't express real FX settlement conventions. See
Model FX settlement type per currency pair for the future-work
capture — do not document deliverable/NDF/settlement currency as
current behaviour; that's not shipped.
Status
| Field | Value |
|---|---|
| State | DONE |
| Parent story | Currency pair support in reference data |
| Now | Complete — chapter written, wired in, all five screenshots captured, manual PDF and Qt help rebuilt. |
| Waiting on | Nothing. |
| Next | None. |
| Last touched | 2026-07-10 |
Acceptance
[X]User manual has a Currency Pairs section explaining pair_code derivation/immutability, classification, and duplicate/inverted-pair rejection on create.[X]User manual has a Currency Pair Conventions section explaining the pair_code picker (create-only, locked after) and pip_factor/tick_size/decimal_places/advance_calendar/business day convention/spot_relative/end_of_month, plus the Conventions cross-navigation toolbar button.[X]No mention of deliverable/NDF/settlement currency as current, shipped behaviour.[X]Screenshots (or placeholders) included per the manual's existing convention.[X]Manual PDF rebuilds cleanly with the new content.
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.)
Notes
PRs
| PR | Title |
|---|---|
| #1494 | [doc] Currency Pairs manual chapter, screenshot capture recipes, and env port fix |
Review
| # | Comment summary | File | Decision | Notes |
|---|---|---|---|---|
| 1 | "seven" leftover should say "five" (screenshot task description) | task_currency-pair-manual-screenshots.org | Applied | Fixed in ea480f107. |
| 2 | Stale OreStudio (unspaced) branding in newly-added recipe text | how_do_i_document_an_entity.org | Applied | Fixed in ea480f107 (3 instances). |
| 3 | _scan_ports has no upper bound; ~13th worktree re-enters the ephemeral range | env_init.py | Applied | Fixed in ea480f107 — raises RuntimeError at EPHEMERAL_PORT_FLOOR instead of silently colliding. |
| 4 | Task State STARTED / Acceptance unchecked despite chapter shipping | task_currency-pair-manual-chapter.org | Applied | Fixed in ea480f107 — flipped to DONE with Result. |
| 5 | story.org rows for both tasks out of sync with their own task docs | story.org | Applied | Fixed in ea480f107 — both rows synced to DONE with dates. |
Result
Shipped chapter_5b_currency_pairs.org, covering base/quote
precedence, major/minor/exotic/commodity classification, pip/tick/
settlement conventions (sourced from the Currency pairs domain hub), and
the Qt UI for both currency_pair and currency_pair_convention —
including the duplicate/inverted-pair rejection and the Conventions
cross-navigation toolbar button. Deliverability/NDF explicitly scoped
out as unshipped per the Goal above. All five screenshot placeholders
captured and wired in (see the sibling screenshots task); manual PDF
and Qt-embedded HTML help both rebuild cleanly. Along the way, this
work also generalised the authoring process into two recipes
(How do I document an entity?, How do I capture screenshots for a manual
chapter?) and a skill (doc-add-entity-chapter) chaining them, and fixed
an unrelated NATS port-collision bug in the dev environment scheme
discovered while readying up the environment for screenshot capture.