Task: Add artifact download verbs to the shell: download job inputs and outputs
Table of Contents
This page documents a task in the Manage the compute grid from the shell story. It captures the goal, current status, acceptance, and any notes or results.
1. Goal
The shell's compute menu gains two artifact download verbs:
download-input and download-output. They fetch a workunit's input
bundle and a result's output bundle from compute storage and unpack
the tar.gz into a target directory, so a test can verify what the
grid actually consumed and produced.
2. Status
| Field | Value |
|---|---|
| State | DONE |
| Parent story | Manage the compute grid from the shell |
| Now | Nothing. |
| Waiting on | Nothing. |
| Next | Nothing. |
| Last touched | 2026-08-25 |
3. Acceptance
compute download-input <workunit_id> <dest_dir>fetches the batch input bundle the workunit references from compute storage and unpacks the tar.gz into the destination.compute download-output <result_id> <dest_dir>fetches the output bundle the node uploaded with the result and unpacks the tar.gz into the destination.- Both verbs work against a live serving environment and report the fetch and unpack result.
4. Plan
Both verbs live in compute_commands.{hpp,cpp} and reuse
ores.storage.net.storage_transfer, already linked into the shell
via package_publisher. The bundle URI comes from the workunit or
result row (split_storage_uri); the verb fetches and unpacks
(fetch_and_unpack) into the target directory.
5. Notes
- Live proof (2026-08-11): scripted session against brave_hopper.
download-input 3002cb53-fc6e-4726-a14e-e851bed023e4(a workunit of the smoke batch) round-tripped the input bundle:input.txt, 38 bytes.download-output 4a2ef0b0-3e39-473a-b1c5-23a30c8218d3anddownload-output 4a8e61ec-d1d4-4753-9b59-de7f667a76ad(two results of the smoke batch, from two different hosts) round-tripped the output bundles:result.txt, 42 bytes each — the hello engine's output format. - Recipes live in
doc/recipes/shell/compute/(one per verb), tangled intoprojects/ores.shell/scripts/library/compute/, indexed under theComputesection ofdoc/recipes/shell/shell.org.
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 |
|---|---|
| #1992 | [ores.shell] Add compute grid management verbs to the shell |
8. Review
| Comment summary | File | Decision | Notes |
|---|---|---|---|
9. Result
- Two download verbs shipped in
compute_commands.{hpp,cpp}:download-inputanddownload-output, reusingores.storage.net.storage_transfer. - Acceptance met, verified live against brave_hopper (2026-08-11):
the smoke batch's input bundle round-tripped byte-for-byte
(
input.txt, 38 bytes) and two outputs from two different hosts round-tripped (result.txt, 42 bytes each). - The PR #1992 review round documented the batch-scoped input-key
convention at the dispatch site; a batch-scoped
input_keyhelper incompute_storageis captured as a follow-up. - Recipes live in
doc/recipes/shell/compute/(one per verb), tangled intoprojects/ores.shell/scripts/library/compute/, indexed under theComputesection ofdoc/recipes/shell/shell.org.