Parent epic: #53
Objective
Establish a real storage-sensitive test and packaging gate before changing copick-shared-ui's runtime dependencies.
Work
- Add pytest and offscreen Qt configuration and a workflow that fails if zero tests collect.
- Preserve the current Zarr 2 production runtime for this baseline phase.
- Add independently constructed OME-Zarr 0.4 / Zarr v2 and OME-Zarr 0.5 / Zarr v3 twins with numeric and nonnumeric metadata paths.
- Reproduce the current bug with metadata selecting
s0 while a distracting array named 0 exists.
- Cover unsharded, one-shard, multi-shard, alternate chunk, alternate key, and supported alternate codec layouts.
- Add invalid fixtures for empty and malformed stores, missing paths, root arrays, and non-3D arrays.
- Verify metadata selection, read-only behavior, source immutability, and error propagation through runtime tests; do not add AST parsing or structural source-guard tests.
- Align the formatter used by pre-commit, the lock, and CI.
- Run the baseline on Python 3.11 through 3.14, with the dependency-floor and locked jobs required by the migration plan.
Acceptance criteria
- The current metadata-selection defect is one explicit expected failure.
- All other baseline tests pass without production storage changes.
- Fixtures do not use the helper they are intended to test.
- CI fails if pytest collects no tests.
- Lock, lint, format, compile/import, build, and artifact checks pass.
Release context
This work starts immediately. It does not wait for another core release: copick 2.0.0-alpha.1 is already published.
Parent epic: #53
Objective
Establish a real storage-sensitive test and packaging gate before changing copick-shared-ui's runtime dependencies.
Work
s0while a distracting array named0exists.Acceptance criteria
Release context
This work starts immediately. It does not wait for another core release: copick
2.0.0-alpha.1is already published.