Story: Update ORE to v17
Table of Contents
This page documents a story in Sprint 25. It captures the goal, current status, acceptance criteria, and the tasks that compose it.
1. Goal
Bring the vendored ORE engine up to v1.8.17.0, and keep v1.8.16.0 in service beside it. Three things move: the XML (examples and XSD), the binaries (a new self-tested engine package), and the packages the compute grid publishes.
The two versions are separate app versions of the same ORE compute
app. ACME provisioning publishes both, so a grid job picks the engine
version it wants and we can compare the two on live jobs.
2. Status
| Field | Value |
|---|---|
| State | ABANDONED |
| Parent sprint | Sprint 25 |
| Now | Nothing. |
| Waiting on | Nothing. |
| Next | Nothing. |
| Last touched | 2026-09-23 |
3. Acceptance
- The vendored examples and XSD match the v1.8.17.0 engine checkout.
- The v1.8.17.0 package builds with
external/ore/tools/package_ore.shand passes its TA002 self-test. external/ore/packages/manifest.jsondescribes the tarball that is actually tracked, with a matching version, size and sha256.- The C++ domain types regenerate from the v1.8.17.0 XSD with no unexplained diff.
- The v1.8.16.0 package stays in place, and every existing reference to it still resolves.
- ACME provisioning registers both engine versions, each with its own platform package, and a grid job runs on either one.
TA002_IR_Swap.tar.gzis byte-identical, or the change is explained and accepted.
4. Tasks
| Task | State | Start | End | Description |
|---|---|---|---|---|
| Scaffold story: Update ORE to v17 | DONE | 2026-09-11 | 2026-09-11 | Story scaffolding rides this task: documents, sprint wiring, and the scaffold PR. Close it before merging that PR. |
| Sync ORE examples and XSD to v1.8.17.0 | DONE | 2026-09-11 | 2026-09-12 | Sync external/ore/examples/ and external/ore/xsd/ from the v1.8.17.0 engine checkout, and regenerate the C++ domain types from the new XSD. |
| Build and vendor the ORE v1.8.17.0 engine package | DONE | 2026-09-11 | 2026-09-12 | Build the v1.8.17.0 engine into one self-contained package with external/ore/tools/package_ore.sh, self-test it against TA002, and commit it beside the v1.8.16.0 package. |
| Publish both ORE engine versions during provisioning | ABANDONED | 2026-09-11 | 2026-09-23 | Register both engine versions in the compute seed and publish both packages during ACME provisioning, so a grid job can run on v1.8.16.0 or v1.8.17.0. |
| Cover the seven new ORE v1.8.17.0 trade types | ABANDONED | 2026-09-23 | Add mapper and round-trip coverage for the trade types that appear for the first time in v1.8.17.0, none of which maps into an ORES trading type today. | |
| Generate the ORE reference data types and fix the bond future mapper | DONE | 2026-09-12 | 2026-09-12 | main does not build: ORE v17 moved the bond future's contract terms from the trade into reference data, which codegen never emitted because xsdcpp only generates types reachable from the Trade root. |
5. Decisions
- Keep v1.8.16.0 and add v1.8.17.0 beside it. Both ship as app versions
of the
OREcompute app, so a grid job chooses the version. Retiring v1.8.16.0 is a later decision, not this story. - Fold in the stale
external/ore/packages/manifest.json. It still names the1.8.16.0-3-g3b62ba248tarball, but the tracked file isore-1.8.16.0-4-g3b62ba248-x64-linux.tar.gz. The seed SQL carries the correct sha256 (9288aecd…) for the tracked file, so the drift is confined to the manifest. - Enforce example coverage by walking the examples tree, not by
extending the hand-kept lists in the twelve golden suites. The v17
sync adds
xml_example_coverage_tests.cpp, which fails on any example inProducts/Example_Tradesthat has no golden. The next engine bump cannot add a product without serialization coverage. - Repair the three v17 schema breaks in the code that reads them, at the mapper or the test. The XSD is vendored as upstream ships it, so the fixes belong downstream of the generated types.
6. Out of scope
- Retiring the v1.8.16.0 package, and migrating existing jobs to v1.8.17.0.
- Engine changes. We vendor an upstream build and do not modify it.
- Regenerating
assets/test_data/domain_roundtrip/. A fresh run changes about 1190 paths, which would bury the sync, and which of the two round-trip datasets is canonical is unresolved. Tracked by Regenerate or retire the domain round-trip dataset.
7. Result
Abandoned at sprint 25 close, as part of the reset to one approach for sprint 26. The work is not in the sprint 26 plan. The done tasks stay as the record of what shipped.