You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
The v3 path treated every codecs[].name as a compression codec, so the always-present bytes serialization codec made viewers with a real codec allowlist (e.g. Neuroglancer) falsely incompatible. Add classifyCodec and compare only compression codecs against compression_codecs; ignore structural codecs; warn (not error) on unrecognized codecs.
Copy file name to clipboardExpand all lines: README.md
+3-1Lines changed: 3 additions & 1 deletion
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -205,7 +205,7 @@ The checks performed, in order:
205
205
| Check | Metadata field | Manifest field | Level | Result if mismatch |
206
206
| --- | --- | --- | --- | --- |
207
207
| OME-Zarr version | `version` or `multiscales[0].version` | `ome_zarr_versions` | **Compatibility** | **Error** — viewer cannot load this version |
208
-
| Compression codec | `compressor.id` | `compression_codecs` | **Compatibility** | **Error** if codec not listed; **Warning** if viewer declares no codecs (unknown support) |
208
+
| Compression codec | `compressor.id` (Zarr v2) or compression codecs in `codecs[]` (Zarr v3) | `compression_codecs` | **Compatibility** | **Error** if codec not listed; **Warning** if viewer declares no codecs (unknown support) |
209
209
| Axes metadata | `axes` | `axes` | **Support** | **Warning** — axis names/units may be ignored |
210
210
| Channel support | `axes` contains c/channel | `channels` | **Support** | **Warning** — multi-channel data may not render correctly |
211
211
| Timepoint support | `axes` contains t/time | `timepoints` | **Support** | **Warning** — time-series data may not render correctly |
@@ -216,6 +216,8 @@ The checks performed, in order:
216
216
| Translation offsets | `multiscales[].datasets[].coordinateTransformations` type `translation` | `translation` | **Support** | **Warning** — coordinate offsets may be ignored |
217
217
| bioformats2raw layout | `bioformats2raw_layout` | `bioformats2raw_layout` | **Support** | **Warning** — layout may not be traversed correctly |
218
218
219
+
> **Note on Zarr v3 codecs:** A Zarr v3 array declares an ordered codec pipeline (`codecs[]`) containing array_to_array transforms (e.g. `transpose`), an array_to_bytes serialization codec (`bytes`, `sharding_indexed` — always present), and bytes_to_bytes codecs (compression such as `blosc`/`zstd`, plus checksums such as `crc32c`). Only the *compression* codecs are compared against `compression_codecs`; serialization, transform, and checksum codecs are ignored. An unrecognized codec produces a **Warning** (compatibility unknown) rather than an error, so a novel codec never silently hides a viewer. See `classifyCodec`.
220
+
219
221
> **Note on `rfcs_supported`:** Although `rfcs_supported` is a hard compatibility requirement (it determines whether a viewer can parse RFC-mandated metadata structures), no validation check is currently implemented. OME-NGFF metadata does not yet expose which RFCs a dataset requires — this is a spec-level gap. When the spec defines a `rfcs_required` field, the validator will compare it against `viewer.capabilities.rfcs_supported` and produce an error on mismatch.
220
222
221
223
A viewer is considered **data-compatible** (`dataCompatible: true`) when there are zero errors — it should be shown to the user. `dataFeaturesSupported` is `false` when there are warnings, indicating the viewer can open the data but may not display all features.
0 commit comments