Objective
Migrate copick-web to the published copick 2.0 alpha contract so the application reads both legacy OME-Zarr 0.4 / Zarr v2 and OME-Zarr 0.5 / Zarr v3, including canonical sharded output, without regressing viewer behavior or remote-backend efficiency.
Core prerequisite: copick-v2.0.0-alpha.1 at 5b3aff2ae4bf9bcf85b4a1d4132205640171f85b.
Target branch: v2.0.
Related migrations:
Locked approach
- Establish deterministic fixtures and always-reporting CI gates before runtime changes.
- Replace the server's synchronous mapping assumption with the async Zarr 3
Store contract.
- Preserve existing URLs while adding correct
HEAD and single-range HTTP semantics.
- Prove the current Idetik/Zarrita lock against OME-Zarr 0.4/0.5 and Zarr v2/v3 before considering a viewer dependency upgrade.
- Validate local, S3, SSH, and ML Croissant end to end; record SMB as optional until core promotes it.
- Release server and client together via GitHub prereleases and versioned GHCR images. Do not establish PyPI/npm publishing.
- Protect
main and v2.0; add required status contexts only after the test-gate issue creates stable non-skipped jobs.
Workstreams
Definition of done
- Legacy OME-Zarr 0.4 / Zarr v2 and OME-Zarr 0.5 / Zarr v3 render in the same build.
- Canonical sharded integer and shuffled floating-point arrays decode to fixture checksums.
GET, HEAD, and byte ranges are correct and range reads remain bounded through the Zarr store.
- Tomogram, segmentation, channel, contrast, orientation, and pick behavior retain parity.
- Python 3.11-3.14 and Node 20.19/22 gates pass with nonzero test collection.
- Local, S3, SSH, and ML Croissant backend gates and pinned production-container smoke tests pass.
- Exact alpha artifacts pass a post-release smoke test; alpha images never move
latest.
- Server and client promote together to stable
2.0.0 with deployment and rollback documentation.
Artifact policy
The authoritative artifacts are GitHub release/prerelease records and the ghcr.io/copick/copick-web-server / ghcr.io/copick/copick-web-client images. PyPI and npm publication are out of scope.
Objective
Migrate copick-web to the published copick 2.0 alpha contract so the application reads both legacy OME-Zarr 0.4 / Zarr v2 and OME-Zarr 0.5 / Zarr v3, including canonical sharded output, without regressing viewer behavior or remote-backend efficiency.
Core prerequisite:
copick-v2.0.0-alpha.1at5b3aff2ae4bf9bcf85b4a1d4132205640171f85b.Target branch:
v2.0.Related migrations:
Locked approach
Storecontract.HEADand single-range HTTP semantics.mainandv2.0; add required status contexts only after the test-gate issue creates stable non-skipped jobs.Workstreams
Definition of done
GET,HEAD, and byte ranges are correct and range reads remain bounded through the Zarr store.latest.2.0.0with deployment and rollback documentation.Artifact policy
The authoritative artifacts are GitHub release/prerelease records and the
ghcr.io/copick/copick-web-server/ghcr.io/copick/copick-web-clientimages. PyPI and npm publication are out of scope.