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.sh and passes its TA002 self-test.
  • external/ore/packages/manifest.json describes 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.gz is 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 ORE compute 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 the 1.8.16.0-3-g3b62ba248 tarball, but the tracked file is ore-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 in Products/Example_Trades that 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.

Emacs 29.3 (Org mode 9.6.15)