Story: Refactor conventions onto families and bundles — the remaining work
Table of Contents
This page documents a story in Sprint 30, carried unfinished from Sprint 28 at close. It captures the goal, current status, acceptance criteria, and the tasks that compose it.
1. Goal
A convention is declared once, in its own entity, and carries only its own fields. When this story closes, nothing in the code holds every family at the same time, so a change to one family cannot break another family's build. An import applies the families it carries as one unit of work, and a failure names the family that failed. The ORE conventions file is a package the boundary maps, not a type the components share.
2. Status
| Field | Value |
|---|---|
| State | BACKLOG |
| Parent sprint | Sprint 30 |
| Now | Not yet started. Split from Refactor conventions onto families and bundles, which closed in sprint 28 with its done tasks. |
| Waiting on | Nothing. |
| Next | Triage into a sprint. |
| Last touched | 2026-11-08 |
3. Acceptance
- Each convention family has its own operation model, generated from its entity, and no reflected type in refdata carries every family.
- One generated list names the families, their scope, and their repository, and nothing hand-maintained duplicates it.
- An import applies its families in one unit of work and reports an outcome for each family. A failure rolls the whole import back and leaves it staging.
- The ORE conventions file crosses into and out of refdata as a package. No component shares a type that holds every family.
- The web reads the family list from the generated registry rather than a hand-written table.
- The configuration document protocol compiles on MSVC without a compiler flag that deepens constexpr evaluation.
- Every read an export takes is taken at one bitemporal instant.
4. Tasks
| Task | State | Start | End | Description |
|---|---|---|---|---|
| Prove the Windows build | BACKLOG | An MSVC job compiles the new translation units. Success is the C1202 failure gone with the old aggregate, and the build green on Windows, Linux and macOS. | ||
| Use as_of consistently for reads | BACKLOG | Every exported set is read at one bitemporal instant. Route paged reads through the generated as_of path and record the instant in the manifest. | ||
| Apply the same shape to the curve configuration document | BACKLOG | The curve configuration document is the same defect: one aggregate carrying every curve family, still on the wire in the translation unit that failed on MSVC. Move it onto its families and a bundle, as the conventions document was moved. |
5. Decisions
- Split from Refactor conventions onto families and bundles on 2026-10-24 at sprint 28 close. The acceptance above is copied from that story; its done tasks are recorded there.
- Reviewed on 2026-11-08 at sprint 30 start. PR #3476 only filed the curve configuration task, so that task is still open. Sequence this story with Import and export conventions without a document aggregate.
6. Out of scope
- Collapsing the tenor basis swap family into one registry entry.
- Changing the ORE XML model. The generated
conventions.hppstays as it is. This story changes what crosses a component boundary, not the file format.