Skip to content

Add server-backed processing using slicer_cli_web - #100

Merged
PaulHax merged 12 commits into
mainfrom
just-jobs
Jul 21, 2026
Merged

Add server-backed processing using slicer_cli_web#100
PaulHax merged 12 commits into
mainfrom
just-jobs

Conversation

@PaulHax

@PaulHax PaulHax commented Jul 21, 2026

Copy link
Copy Markdown
Collaborator

Add server-backed processing using slicer_cli_web, Girder Jobs, Girder Worker, and containerized Slicer CLIs.

This gives VolView a backend contract for task discovery, task specifications,
input staging, submission, status polling, durable job history, result loading,
cancellation, and deletion. It also preserves existing session behavior and
adds compatibility coverage for sessions created by older VolView releases.

What changed

  • Add folder-scoped processing endpoints for task discovery, task specs, job
    submission, input staging, and job history.
  • Add job-addressed endpoints for status, detail, results, cancellation, and
    deletion, protected by each job's own ACL.
  • Translate Slicer Execution Model XML into VolView's processing task contract.
  • Validate submitted parameters against the CLI declaration and reject reserved
    credentials, undeclared inputs, invalid values, and caller-selected output
    destinations.
  • Resolve Girder file handles with the submitting user's permissions and copy
    transient client-generated inputs into job-owned storage.
  • Create a private output folder for every job and correlate uploaded results by
    folder ownership and declared output reference rather than filename.
  • Project Girder job states and output files into VolView status, history, and
    declarative result-intent responses.
  • Clean up transient inputs when jobs settle and cascade deletion between a
    terminal job and its owned output folder.
  • Keep completed jobs discoverable through durable, paginated, folder-scoped
    history.
  • Update launch and save/restore behavior to support processing results while
    retaining fresh-versus-resume semantics for items, checked resources, grouped
    DICOM rows, and saved sessions.

CLI isolation

The underlying slicer_cli_web catalog may also contain tasks registered for
HistomicsUI and DIVE-DSA. VolView filters that shared catalog by the CLI XML
<category> and repeats the scope check for task-spec requests and submission.

The default VolView categories are Radiology, Segmentation, and Filtering;
deployments can override them with
VOLVIEW_PROCESSING_ALLOWED_CATEGORIES. HistomicsUI's HistomicsTK tasks,
DIVE-DSA tasks in other categories, uncategorized tasks, and malformed task
descriptions remain outside the VolView UI. Radiology images and tasks must also
use unique registration identities so they do not replace entries belonging to
the other applications.

Client and deployment

  • Update the pinned VolView package and consume its packaged
    backend-contract as the normative processing wire contract.
  • Add repeatable development deployment scripts and an idempotent helper that
    builds, registers, and verifies the local
    volview-radiology-cli image.
  • Replace the previous CircleCI configuration with GitHub Actions coverage for
    Python lint, server tests, and web-client lint.
  • Add a Playwright harness that captures sessions on a pinned baseline, deploys
    this branch, verifies backward-compatible restoration, and exercises current
    save/load/restore and processing workflows.

Depends on this VolView client update Kitware/VolView#904

@PaulHax
PaulHax merged commit 32022d5 into main Jul 21, 2026
5 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant