Task: Publish both ORE engine versions during provisioning
Table of Contents
This page documents a task in the Update ORE to v17 story. It captures the goal, current status, acceptance, and any notes or results.
1. Goal
Make both engine versions available to the compute grid. The seed registers both app versions with their platform packages, and provisioning uploads both tarballs. Then submit a job on each version to prove the choice works.
2. Status
| Field | Value |
|---|---|
| State | ABANDONED |
| Parent story | Update ORE to v17 |
| Now | Nothing. |
| Waiting on | Nothing. |
| Next | Nothing. |
| Last touched | 2026-09-23 |
3. Acceptance
- compute_ore_app_seed.sql registers the ORE app with both engine versions and their platform packages.
- The ACME provisioning recipe publishes both engine packages, and the tangled .ores script matches it.
- A grid job runs on v1.8.16.0 and another runs on v1.8.17.0.
4. Plan
- Add a second app-version block to
compute_ore_app_seed.sqlfor1.8.17.0, with the package URI and the sha256 the v17 tarball actually has. Leave the1.8.16.0block alone so both versions stay seeded. The file is hand-maintained, not generated. - Add a second
compute publish-packageline to the ACME provisioning recipe, then regenerate the tangled.oresfrom it. The.oresfile carries a "do not edit by hand" header, socompass build --direct tangle_shell_scriptsowns it. - Change nothing in CMake.
vendor_compute_packagesglobs every*-x64-linux.tar.gzinexternal/ore/packages/, so the v17 tarball is vendored as soon as it lands in that directory. - Verify by provisioning a fresh database from the recipe and running
one grid job per engine version.
compute publish-packageupserts by app name and merges platforms, so the second call adds a version rather than replacing the first.
5. Notes
- The seed block is a copy of the
1.8.16.0block with the version, the package URI, and the sha256 substituted. The sha256 is the v17 value recorded inexternal/ore/packages/manifest.json. package_ore.shalready tells the packager to update this seed file when a package replaces the seeded version. This task adds a version instead of replacing one, so both blocks stay.- The v17 version string is the provisional tag on the engine fork. When
upstream tags
1.8.17.0properly, the tarball is rebuilt, and the sha256 here and in the manifest change with it. - The storage key is built from the app-name argument, not from the file
name.
compute_storage::package_keyconcatenatespackages/{app_name}/{version}/{app_name}-{version}-{platform_code}and the publisher'sextdefault is.tar.gz, sopublish-package ORE 1.8.17.0 x64-linux --file .../ore-1.8.17.0-x64-linux.tar.gzuploads topackages/ORE/1.8.17.0/ORE-1.8.17.0-x64-linux.tar.gz. That is byte-for-byte thepackage_uriin the seed, so the lowercase file name and the uppercase key do not conflict. Checked inprojects/ores.compute/api/.../compute_storage.hppandpackage_publisher.hpp. - The seed was run against the live database inside a transaction that
was then rolled back. It reported
INSERT 0 0for the ORE app and for the1.8.16.0block, andINSERT 0 1for the1.8.17.0block, so both idempotence guards hold and the new block inserts exactly one platform row. The rollback left the database untouched. compass sqlruns aspostgresby default, and that account is not a validmodified_byfor the compute tables: the insert triggers reject it with "Invalid modified_by: postgres". Pass-u ddlto check these tables by hand.
6. Test Scenarios
Manual QA scenarios (scaffolded via compass add test_scenario, run
through the QA Validation Runner panel) 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 |
|---|---|---|
7. PRs
| PR | Title |
|---|---|
8. Review
| Comment summary | File | Decision | Notes |
|---|---|---|---|
9. 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.