Task: Hand each configuration to its owner by id at an as-of

Table of Contents

This page documents a task in the Gather each trade set and its market data — the remaining work story. It captures the goal, current status, acceptance, and any notes or results.

1. Goal

The run document's configuration documents are pulled synchronously inside prepare_ore_package: export_run calls each owner's document operation in turn, with the run token, and waits. One call answers for every configuration, so nothing is an artifact, nothing can be produced in parallel, and the package step cannot start until the slowest owner has answered.

Ask each owner for one configuration by its id and an as-of, have the owner write it to storage, and let the mapping happen afterwards.

2. Status

Field Value
State BACKLOG
Parent story Gather each trade set and its market data — the remaining work
Now Not yet started.
Waiting on Nothing.
Next Begin implementation.
Last touched 2026-10-07

3. Acceptance

  • Each configuration is requested on its own, naming its configuration id and the as-of date.
  • The owner writes the document to storage as an artifact the run declares, so the package step waits on artifacts rather than on a blocking call.
  • The run document itself is one of these artifacts, not a special case.
  • A configuration whose document is missing fails the run and names the configuration.

4. Plan

The precedent is already in the tree and this task follows it rather than inventing one: for the configuration documents, the owners return neutral documents and ores.ore.core renders the ORE XML through curve_configuration_mapper::reverse, todays_market_mapper::reverse, pricing_engine_mapper::reverse and conventions_mapper::reverse. The owners do not know the ORE schema, and that stays true — only the transport changes.

So the shape is: reporting asks the owner for one configuration by id at an as-of; the owner writes the neutral document to the run's storage prefix; the run declares it as an artifact; and ores.ore consumes it when it renders the package. The id is the configuration row the definition already binds, and today's export_run walk is the list of owners this splits into.

The one question the task must answer is what carries the document: the neutral domain type serialised to storage, or a new message type per configuration kind. The first keeps one transport shape for every kind, which is what makes the package step indifferent to which owner produced what.

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

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

Emacs 29.3 (Org mode 9.6.15)