Task: Read the child-row outputs
Table of Contents
This page documents a task in the Model every output ORE writes story. It captures the goal, current status, acceptance, and any notes or results.
1. Goal
The three child-row families are read into typed rows that keep the key that gives each figure its meaning.
2. Status
| Field | Value |
|---|---|
| State | DONE |
| Parent story | Model every output ORE writes |
| Now | Nothing. |
| Waiting on | Nothing. |
| Next | Nothing. |
| Last touched | 2026-10-31 |
3. Acceptance
flows,stresstest_flowsandtodaysmarketcalibration_cashflowseach have a typed row and a reader.- A flow row keeps its trade, leg, cashflow number and pay date, and the reader refuses a row that omits one of them.
- A stressed flow states base, scenario and difference for each figure, and the reader refuses a row that states fewer than three.
- The tests read the checked-in sample of each family.
4. Plan
Three families, three typed rows, three readers, because their meaning is the relation between columns rather than a bag of figures. Each reader asks for the columns that make the row a row — trade, leg, cashflow number and pay date — and refuses a row that omits one. A figure the engine states as its null string stays empty, so a flow with no fixing is not a flow with a zero fixing.
Two cases the corpus does not ship are stated as fixtures beside the suite: a flow row without its pay date, and a stressed flow that states a base without a scenario. The reader's rules came from the corpus first: the volatility figures are stated with a base and a scenario and no difference, so a difference is optional and only the base and the scenario are required.
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 |
|---|---|---|---|
| Test cases and assertions | 7 cases, 42 assertions | ores.ore.core.tests "[child_row_reader]" |
MEASURED |
| The whole ore core suite | 453 cases, 483 504 assertions | ores.ore.core.tests |
MEASURED |
| Synthetic fixtures | 3 files: a missing pay date, a figure that is not a number, a stressed flow with no scenario | ls projects/ores.ore/core/tests/fixtures |
MEASURED |
6. Notes
7. Notes
- The corpus states the floor and cap volatilities with a base and a scenario and no difference, so a stressed figure requires two parts and carries a third when it exists. The fixture states the refusal case: a base with no scenario.
- A flow without its pay date is a fixture rather than a corpus case, because every checked-in flow states one. The reader refuses it rather than guessing a date.
- The three families are read by three functions rather than one generic one because the row types differ: a flow, a stressed flow and a calibration flow share almost no columns.
8. 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 |
|---|---|---|
9. PRs
| PR | Title |
|---|---|
10. Review
| Comment summary | File | Decision | Notes |
|---|---|---|---|
11. Result
Three typed readers, one for each child-row family, and 42 assertions over 7 cases. A flow keeps its trade, leg, cashflow number, pay date, flow type and currency, and carries each figure as an optional, so a null fixing is absent rather than zero. A stressed flow carries its base, scenario and difference per figure, with the difference optional because the corpus omits it for the volatilities. A calibration flow keeps the market object, pillar and rate helper that made the flow.
The suite reads the checked-in sample of each family and three synthetic fixtures for what the corpus does not show.
Superseded on 2026-10-31 by the next task in the story. A typed row carried eight of the figures a family states and the store needs them all, so the three readers were replaced by one reader driven by the catalogue, which names each figure by its heading and each part of a stressed figure by the part it is.
Open at close: the light gate's curve-sections-wiring check fails on this
branch, and the generated file it names is not one this branch touches: main is
inconsistent there and another environment owns it.