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-23a30c8218d3 and download-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 into projects/ores.shell/scripts/library/compute/, indexed under the Compute section of doc/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-input and download-output, reusing ores.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_key helper in compute_storage is captured as a follow-up.
  • Recipes live in doc/recipes/shell/compute/ (one per verb), tangled into projects/ores.shell/scripts/library/compute/, indexed under the Compute section of doc/recipes/shell/shell.org.

Emacs 29.3 (Org mode 9.6.15)