Task: Move the pricing engine documentation onto the one contract

Table of Contents

This page documents a task in the Make every configuration screen follow one standard story. It captures the goal, current status, acceptance, and any notes or results.

1. Goal

Every pricing engine choice and parameter carries the same documentation fields as an engine run setting, so one screen pattern reads both.

2. Status

Field Value
State DONE
Parent story Make every configuration screen follow one standard
Now Nothing.
Waiting on Nothing.
Next Nothing.
Last touched 2026-10-24

3. Acceptance

  • Every pricing model, engine, pair and setting carries the contract's fields: label, help, description, default, format, introduced in, removed in, XPath and whether it changes the numbers.
  • The extraction reads the ORE guide chapter and the ORE source, and records the ORE commit it measured.
  • A missing entry shows the ORE name and a note on the screen.
  • The vocabulary tables keep the mappings a person chooses from, and no longer hold the wording.

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
Pricing setting rows 646 unique (type, scope, name) generate_ore_parameters_dataset.py see the branch head
Global parameters documented 17 generate_ore_parameters_dataset.py see the branch head
Settings documented on the live API 834 of 834 GET /api/reporting/pricing-engines/vocabulary see the branch head
Models documented 25 of 25 same see the branch head
Engines documented 74 of 74 same see the branch head
Pairs documented 194 of 194 same see the branch head
Web tests 1972 pass npx vitest run in packages/web see the branch head
BFF tests 941 pass npx vitest run in packages/bff see the branch head
ORE commit measured 3d75a6908 git -C /home/marco/Vault/Development/ORE/Engine rev-parse --short HEAD —

6. Notes

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
   

9. Review

Comment summary File Decision Notes
       

10. Result

Every pricing parameter now carries the one contract: a label, a help line, the description from the ORE user guide, the value the examples use, the format, the release it entered and the XPath of the leaf. 646 setting rows cover every (type, scope, name) the guide describes, and 17 global rows cover the guide's global section and the pseudo-currency block the ORE source reads. The release each parameter entered is measured from the ORE release tags and kept in pricing_parameter_releases.json.

The vocabulary joins the rows by (scope, product type, name), so the Product pricing screen reads one field shape: 834 of 834 settings on the live API carry their documentation, and the Global parameters tab reads the globals array.

The models, the engines and the pairs joined the same contract: 956 pricing rows in all, with 25 models, 74 engines and 194 pairs documented on the live API. The vocabulary no longer serves its own wording: the settings carry no note, and the model, engine and pair text comes from the contract. The authoring journey reads help, not note.

One acceptance item remains, and it is now only dead data: the vocabulary tables still carry the wording columns (note on the pairs and settings, and the description and detail on the models and methods). The API no longer reads them. Drop the columns in a codegen change, so no later reader can take the wording from the wrong place.

Emacs 29.3 (Org mode 9.6.15)