Task: Cover the no-sample families with synthetic data

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

Every output the seed names is read, from a checked-in sample or from a synthetic fixture that states what its writer writes.

2. Status

Field Value
State DONE
Parent story Model every output ORE writes
Now Nothing.
Waiting on Nothing.
Next Nothing.
Last touched 2026-11-02

3. Acceptance

  • Every output the seed names is a family with a sample, real or synthetic, or is stated out of scope with a reason, and the generator refuses one that is neither.
  • A synthetic fixture's columns come from the writer that produces it at ORE v1.8.17.0, and each fixture names its writer.
  • The catalogue marks a family whose only fixture is synthetic, so a reader can tell a sample ORE shipped from one we wrote.
  • The corpus gate reads a synthetic fixture exactly as it reads a sample, and fails when a family has neither.

4. Plan

The seed names 44 output files; 27 had no family. The writers at ORE v1.8.17.0 (3d75a6908, the version the project vendors) sort them:

  • Real samples outside the suites. runtimes and scenariodump are in the notebook examples, timeaveragedexposure in the legacy ones, and pricingstats is captured from a run here. Each source is read for the named families only, because the notebooks and legacy examples repeat the suites.
  • Synthetic. crif, capital_crif, sacva_sensitivity, jacobi and jacobi_inverse have a writer and no sample; each fixture states its writer's columns in order, with two rows, and the catalogue marks it synthetic.
  • Other names. A report the run configuration does not name is written under the engine's report name: cashflow.csv is flows and saccrdetail.csv is saccr_detail, which a run here wrote and the catalogue missed. The seed names the initial margin files .txt. A family now carries alias patterns.
  • Stems. pca.csv and meanReversion.csv are written per currency, as the pca and mean-reversion families already match.
  • No writer. crossgamma, productclass_mapping, creditcurves, parsensi, the aggregation scenario dump and the xvaSensitivity jacobi names are parameters no code reads at v1.8.17.0.
  • Not a report. The .dat files are binary data the engine reads back; the .csv.gz cubes are compressed copies of what rawcube and netcube state as text.
  • Text-valued. additional_results, marketObjects, riskFactors and the calibrated model's XML have no figure, so no reader here holds them. They are a new task, Store the text-valued outputs.

The generator states each out-of-scope file with its reason and refuses a seed output that is neither a family nor stated, so the list cannot drift.

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
Catalogue families 72, 5 synthetic; every seed output covered or excused python3 projects/ores.ore/scripts/generate_output_catalogue.py af7009a36c
ore core suite 480 cases pass ores.ore.core.tests af7009a36c
marketdata, reporting core suites 365 and 246 cases pass ores.marketdata.core.tests, ores.reporting.core.tests af7009a36c
Group Consolidated Exposure run completed; npv 36, pricingstats 219 and runtimes 45 figures, saccr 2, 2 quotes; cashflow.csv, saccrdetail.csv and capital_crif.csv read with headings only instance fd8bccd5, SQL af7009a36c

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
#4376 [ore] Prove every output the seed names, or say why not

9. Review

# Comment summary File Decision Notes
1 Local review: spelling check over the changed files   Clean  
2 fnmatch imported out of order generate_output_catalogue.py Accepted Sorted.
3 The generator's fnmatch and the C++ matcher could disagree; dim_evolution.txt untested results_output_catalogue_tests.cpp Accepted The C++ test now finds every alias, dim_evolution.txt included.
4 Say that dim_regression*.txt also matches the bare name generate_output_catalogue.py Declined The seed names dim_regression.txt and the engine takes a list of names; the pattern is meant to match both.
5 The out-of-scope reasons cite v1.8.17.0 and nothing re-checks them README.org, generate_output_catalogue.py Accepted Both say to re-check the writers and the reasons when the vendored ORE moves.
6 Synthetic fixtures prove columns, not figures; the synthetic test names five codes   No change Stated in the PR and marked in the catalogue.
7 Run compass check PR Declined The operator asked for builds and tests instead; the new org files carry ids.
         

10. Result

Every output the seed names is a family with a sample or is stated out of scope with its reason, and the generator refuses one that is neither. The catalogue gained nine families: four from real samples outside the suites (runtimes, scenariodump, timeaveragedexposure, and pricingstats captured from a run here) and five from fixtures written from their writers at ORE v1.8.17.0, marked synthetic. A family now carries the other names it is written under, which fixed a gap a run here showed: cashflow.csv and saccrdetail.csv were left unread. A run now stores its pricing statistics and run times too. The four text-valued outputs moved to a new task, Store the text-valued outputs.

Emacs 29.3 (Org mode 9.6.15)