Story: Make every configuration screen follow one standard

Table of Contents

This page documents a story in Sprint 29. It captures the goal, current status, acceptance criteria, and the tasks that compose it.

1. Goal

One screen standard covers every configuration that comes off an ORE XML document: the same list, the same record page, the same sections, the same documentation, the same reach, the same history, the same import and the same lifecycle. A person who learns one configuration screen knows them all.

Two configurations carry the word "engine" and a person confuses them today. The standard gives each one a name that says what it decides, and every page says what the configuration is and which other configurations the same report binds.

2. Status

Field Value
State DONE
Parent sprint Sprint 29
Now Nothing.
Waiting on Nothing.
Next Nothing.
Last touched 2026-11-08

3. Acceptance

The story closes on the tasks it finished:

  • Apply the standard to the pricing engine configuration.
  • Author the documentation of every product type.
  • Correct the value sets against the ORE code.
  • Export a pricing engine configuration as ORE XML.
  • Extract the shared parameter list, control and edit lifecycle.
  • Fix the second value the parameter history test writes.
  • Import a pricing engine configuration as ORE XML.
  • Investigate the two engine-facing configurations.
  • Make the parameter data model the source of valid values and rules.
  • Manage the sensitivity templates.
  • Model the valid values of a parameter.
  • Move the curation out of the Python literals.
  • Move the engine settings groups out of code.
  • Move the pricing engine documentation onto the one contract.
  • Validate a saved document on the server.
  • Put the numbers-changing engine run settings through sign-off.
  • Record the sourcing and curation methodology.
  • Rename the configuration screens and their words.
  • Serve the history of the whole pricing engine document.
  • Show every party's configurations on the list.
  • Update the configuration journeys and prototypes.
  • Write the configuration screen standard.

4. Tasks

Task State Start End Description
Investigate the two engine-facing configurations DONE 2026-10-24 2026-10-27 Establish what the pricing engine configuration and the engine run settings each decide, where one ends and the other starts, how they are linked, and which names and patterns follow.
Write the configuration screen standard DONE 2026-10-24 2026-10-24 Generalise the engine run settings pattern into one UX standard for every configuration that comes off ORE XML, and record the pricing engine configuration as its second application.
Update the configuration journeys and prototypes DONE 2026-10-24 2026-10-24 Bring the pricing engine configuration and engine run settings journeys and prototypes onto the standard, and add the cross-links that say how the two configurations relate.
Rename the configuration screens and their words DONE 2026-10-24 2026-10-25 Apply the standard's screen words to the area cards, the list and record pages, the journeys and the translations.
Apply the standard to the pricing engine configuration DONE 2026-10-24 2026-10-25 Bring the pricing engine configuration list, page, dialogs, journey and import onto the standard.
Move the pricing engine documentation onto the one contract DONE 2026-10-25 2026-10-27 Extract the pricing engine pairs, models, engines and parameters from the ORE guide and source into the one documentation contract, with the format, the release and the XPath.
Put the numbers-changing engine run settings through sign-off DONE 2026-10-28 2026-11-08 A change to an engine run settings group that alters the numbers a run computes becomes a proposal, signed off by the kind's approval parts.
Manage the sensitivity templates DONE 2026-10-27 2026-10-27 Give the sensitivity templates a screen: the codes a pricing parameter refers to, with their asset class, method and description, and the shifts the configuration sets.
Record the sourcing and curation methodology DONE 2026-10-25 2026-10-25 Write the methodology for the pricing data: extraction, curation, generation, review and provenance, with the curation file schema.
Move the curation out of the Python literals DONE 2026-10-25 2026-10-25 Move the authored texts, name fixes, typo fixes, extra types and global parameters from Python dicts into curation data with reason, source and curator per entry.
Move the engine settings groups out of code DONE   2026-10-25 The GROUPS constant hard-codes the group and setting metadata while the pricing equivalent is in tables. Put the engine settings metadata in data so both screens read one shape.
Extract the shared parameter list, control and edit lifecycle DONE 2026-10-25 2026-10-25 One component for the parameter row, the control by domain, the filters and the edit state, used by product pricing, global parameters and engine settings.
Validate a saved document on the server DONE 2026-10-25 2026-10-25 Move the checks in the web's check() to the write path, so a client cannot save what the dialog refuses and every client gets the same answer.
Make the parameter data model the source of valid values and rules DONE 2026-10-29 2026-10-30 One clean model for a parameter: its value domain, enumerated values, range, regex, referenced catalogue, default, required flag, compatibility (type/model/engine pair), lifecycle and provenance. The write path enforces it; every screen reads it; no screen restates a valid value.
Serve the history of the whole pricing engine document DONE 2026-10-25 2026-10-25 Read the configuration, its products and its parameters as one timeline, so an edit to a setting appears in the History tab with its difference, drawn by the shared timeline.
Author the documentation of every product type DONE 2026-10-25 2026-10-25 Write a curated description for each of the 108 product types, so the workbench says what the product is instead of the generated sentence about its pairs.
Show every party's configurations on the list DONE 2026-10-25 2026-10-25 The list offers All parties but the read is scoped to the acting party. Decide how another party's configurations are reached, and make the filter say what it does.
Model the valid values of a parameter DONE 2026-10-25 2026-10-25 Give every ORE parameter a value set: its storage type, its allowed values and, where the values are other ORE Studio data, the catalogue they come from. The screen draws the control from it and the write path enforces it.
Export a pricing engine configuration as ORE XML BACKLOG     A server operation renders one pricing engine configuration as the ORE XML document ORE reads, with a download from the screen and a command in ores.shell.
Fix the second value the parameter history test writes DONE   2026-10-27 The history test appended a suffix to a real value to force a second version, which ORE cannot parse and the value set guard refuses.
Import a pricing engine configuration as ORE XML DONE 2026-10-27 2026-10-28 The import half of the ORE document pair: parse a pricingengine.xml on the server, state what it holds and what the vocabulary does not know, compare it with the target configuration, and write it on the press.
Correct the value sets against the ORE code DONE 2026-10-30 2026-10-30 The audit of the seeded sets found disagreements with ORE 1.8.17: sets that state text where ORE parses a fixed list or a switch, lists that refuse a value ORE accepts, and bounds ORE enforces that no set states. This task corrects the curation, restores the two catalogue sets whose registry could not check a document, and keeps the model honest about the two names ORE's builder registry decides.

5. Decisions

  • The screen words, decided by the owner on 2026-10-24. The configuration that selects the model and the engine for each product type is a Pricing engine configuration. The configuration that holds the Setup choices of a run is Engine run settings. The pricing page's Settings tab is Parameters. The model names, the configuration type codes and the API routes are unchanged. The analysis is in Investigation: the two engine-facing configurations.
  • The lifecycle attaches to a section, not to a kind, decided by the owner on 2026-10-24. A write to a section that changes the numbers a run computes is a proposal and needs the kind's sign-off. A write to an operational section lands directly with a reason and a history entry. One record may hold both.
  • A configuration no report binds is a draft and changes in place, following the draft rule the pricing engine configuration already has. It becomes governed the moment a report binds it. Decided with the section rule on 2026-10-24.
  • The journeys and prototypes come first. The owner signs them off before the standard is written and before any code changes. Decided by the owner on 2026-10-24.
  • A value set is the one statement of a parameter's control and its rule. A parameter's allowed values, bounds, pattern and catalogue live in the value set tables and nowhere else. The per-pair kind and options columns are gone, and so are the four control columns of the group settings table. A screen draws its control from the set, and the write path refuses a value by the same set.
  • The set states a number's bounds, and one function enforces them. The parameter trigger and the sign-off proposal path call the same function, so a proposal cannot ask a person to sign a value the store would refuse.
  • The engine run settings join the contract through the Setup scope. Each of the fifteen settings links to a set by its ORE name, and the screen reads the same fields the pricing screen reads.
  • A link is keyed by scope and name, not by pair. A setting that two engine families read differently states the union of the two lists and says so in the set's description. A per-pair difference needs a model change, and no screen needs one today.
  • A gate keeps the model true. check_parameter_value_sets.py fails when a drawn parameter has no set, when a set breaks its own rule, when the seed is stale, or when a per-pair override column returns.
  • The set contents are verified against the ORE code, not the guide, and that work is separate. An audit of the seeded sets against ORE 1.8.17 found 31 disagreements: wrong kinds, wrong bounds, and lists that refuse a value ORE accepts. The report is Investigation: Verify the value sets against the ORE code, and the correction is its own task. A set that states a stricter rule than ORE is not yet a correct set.
  • Closed on 2026-11-08 at sprint 29 close with its done tasks. The open tasks and the original acceptance moved to Make every configuration screen follow one standard — the remaining work.

6. Out of scope

  • Renaming a table, a configuration type code or an API route. The screen words change; the model does not.
  • Changing the pricing engine model. The analysis found six live Setup choices that the model does not hold; whether to add them is an open question in the investigation.

Emacs 29.3 (Org mode 9.6.15)