Task: Rewire the ORE path to families and packages

Table of Contents

This page documents a task in the Refactor conventions onto families and bundles story. It captures the goal, current status, acceptance, and any notes or results.

1. Goal

The ORE path stops handing refdata one value that holds every family. It maps a conventions file into per-family payloads, stages them, and commits them as a bundle. Export goes the other way, one family at a time, and the file it writes is the same file it read.

2. Status

Field Value
State DONE
Parent story Refactor conventions onto families and bundles
Now Nothing.
Waiting on Nothing.
Next Nothing.
Last touched 2026-10-18

3. Acceptance

  • The importer maps a conventions file into per-family payloads and stages each one. No message it sends carries every family.
  • The exporter reads each family on its own and rebuilds the ORE file from those reads.
  • The ORE conventions file is a package at the boundary. No refdata type that holds every family reaches ores.ore.
  • A conventions file imported and exported unchanged produces the file it started from.

4. Plan

Move the service path onto begin, stage and commit first. Then move the run store and the export, which is what allows the aggregate to go.

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
       

6. Notes

  • The ORE conventions import ran as one call carrying the whole document. That call is gone from the service. projects/ores.ore/service/src/messaging/run_configuration_operations.cpp now opens an import, stages one message per family, and commits, and the export asks for each family in turn.
  • A second path still saves the whole document. projects/ores.ore/core/src/store/run_store.cpp calls conventions_document_service to store the conventions a run's input package carries, and calls it again to write them back out. That service is the only refdata service that builds the aggregate, and the run store is its only production caller. ores.ore still holds the type in five places, the mapper pair, the legacy importer and exporter, the diff, and the service import, so moving the run store alone does not delete it.
  • The FX convention has no family of its own. The export skips it and the boundary mapper derives it from the currency pair.
  • The export currently asks with a null as_of, so the families it reads are not read at one instant. Task 7 owns that.

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
#3567 [agile] Close the rewire task
#3475 [ore,refdata] Move the ORE path onto the conventions import

9. Review

Comment summary File Decision Notes
       

10. Result

The ORE path no longer hands refdata one value that holds every family. A conventions file splits into a package of one bundle and the FX projection. The run store and the run configuration operations apply and read that bundle, and the exporter reads each family on its own and joins the rows back into the file.

What shipped:

  • #3542 and #3554 wrote and read a bundle of family payloads in the caller's transaction.
  • #3562 made the package the ORE boundary and moved both production callers onto it.
  • #3564 deleted the aggregate, the whole-document service and the mapper pair, which was the work this task waited on.

Acceptance, point by point:

  • The importer maps a file into per-family payloads, and no message carries every family. Met.
  • The exporter reads each family on its own and rebuilds the file from those reads. Met.
  • The conventions file is a package at the boundary, and no refdata type that holds every family reaches ores.ore. Met.
  • A file imported and exported unchanged produces the file it started from. Met, and the pinned export digests and the run store round trip prove it.

The export reads at one instant are task 7, which stays open on its own.

Emacs 29.3 (Org mode 9.6.15)