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.hpp stays as it is. This story changes what crosses a component boundary, not the file format.

Emacs 29.3 (Org mode 9.6.15)