Story: Manage the compute grid from the shell

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.

Goal

ores.shell gains a comprehensive compute command set so the compute grid can be driven entirely from the shell, with no UI:

  • Read the grid: list apps, app versions, platforms, hosts and batches.
  • Drive jobs: add a batch, dispatch N consecutive jobs from it, list its workunits and results.
  • Fetch artifacts: download a job's input bundle and a result's output bundle from compute storage.
  • Observe the grid: grid-stats renders the telemetry summary as a per-node table (host, heartbeat age, tasks completed, bytes moved); delete-host removes a host row.
  • Prove the grid: a library script dispatches 10-20 consecutive jobs and asserts every online node was exercised and every result succeeded — the "did all engines kick in" test, runnable without a UI.

Status

Field Value
State STARTED
Parent sprint Sprint 25
Now Story scaffolded; all five tasks defined.
Waiting on Nothing.
Next Pick up the read-verbs task when work begins.
Last touched 2026-08-10

Acceptance

  • Every verb above exists in the shell's compute menu and works against a live serving environment.
  • A script can add a batch, dispatch 10-20 consecutive jobs, poll grid-stats until the batch drains, and assert every online node was exercised and every result has outcome Success.
  • The smoke-test script is proven live against brave_hopper with the Newton compute node online; per-node task counts show jobs spread across the grid, not all on one host.

Tasks

Task State Start End Description
Scaffold story: Manage the compute grid from the shell DONE 2026-08-10 2026-08-10 Story scaffolding rides this task: documents, sprint wiring, and the scaffold PR. Close it before merging that PR.
Add compute read verbs to the shell: list apps, app versions, platforms, hosts and batches BACKLOG     Read-only verbs over the compute domain: list apps, app versions, platforms, hosts and batches, with the fields a script needs.
Add job lifecycle verbs to the shell: add-batch, dispatch-batch with a job-count loop, list-workunits and list-results BACKLOG     Shell verbs to drive the compute job lifecycle end-to-end without a UI: create a batch, dispatch N consecutive jobs from it (pack and upload the input bundle once, then loop N saves), list the workunits of a batch, and list the results with their outcome and host.
Add grid monitoring verbs to the shell: grid-stats with per-node detail and delete-host BACKLOG     Shell verbs to observe the compute grid: grid-stats fetches the telemetry grid summary and renders a per-node table (host, heartbeat age, tasks completed, input/output bytes), so a test can verify every online node was exercised; delete-host removes a host row by id.
Add artifact download verbs to the shell: download job inputs and outputs BACKLOG     Shell verbs to fetch a job's input bundle and a result's output bundle from compute storage (ores.storage.net.storage_transfer is already linked into the shell via package_publisher): download-input and download-output, taking the workunit id or result id and unpacking the tar.gz into a target directory.
Add a compute grid smoke-test script and prove it live BACKLOG     Library .ores script that exercises the whole grid from the shell: add a batch, dispatch 10-20 consecutive jobs, poll grid-stats until the batch drains, then assert every online node was exercised and every result has outcome Success. Prove it live against brave_hopper with the Newton node online, and record the proof in the task result.

Decisions

Out of scope

  • Backend changes to the compute service: it already exposes every required API subject; this story is the shell verb layer only.
  • Desktop client UI: the shell is the delivery vehicle here.
  • Process-workflow verbs: the shell workflow menu already covers that domain; this story is compute jobs.

Emacs 29.3 (Org mode 9.6.15)