Skip to content

spec: draft 3, the 0.2 and 0.3 contract - #1

Merged
davidackerman merged 2 commits into
mainfrom
spec-0.2-0.3
Oct 22, 2026
Merged

davidackerman merged 2 commits into
mainfrom
spec-0.2-0.3

Conversation

@davidackerman

Copy link
Copy Markdown
Member

Specification only; no code changes. docs/spec.md becomes draft 3 with the contract for the next two versions, for review before anything is built.

0.2, metadata and placed creation (Behaviours 10 to 16): ome_multiscales with explicit per-level placement, level_placement and level_shape (Convention 1's BigDataViewer rule inverted, with the level's origin, so mesh-n-bone's ROI-origin bug cannot be expressed), chunk_key and parse_chunk_key for zarr v2, zarr v3 (sharded too), N5 and precomputed, create (the format follows the group, OME 0.4 with v2 and 0.5 with v3, chunks required, codecs explicit with a zstd default, exists="error" or "adopt" with verification naming every difference, registration-station's create-race backoff, fill-only units not stored), open(mode="r+"), write_index with whole-unit alignment and an explicit partial mode, write, write_shape, and add_level as metadata plus an empty array. The package never deletes, truncates or overwrites; downsampling, scheduling, N5 and precomputed writing stay out.

0.3, grids and blocks (Behaviours 17 to 19): Grid, blocks with context and clipping, write_chunk, level_factors, public store.join/parent/basename, units.abbreviation.

Section 6 gains the writer migration table and the census of 2026-10-22 (what the five repos still carry, what 0.1 already covers, what 0.2 and 0.3 remove). Section 7 gains open questions 5 to 10: legacy funlib attributes on new outputs, the block iterator's shape (to confirm with mesh-n-bone and cellmap-analyze), registration-station's sidecar attributes, creation races on NRS, the codec default, sharding.

https://claude.ai/code/session_0141wgF8mkGbjGfBFKfKhp64

0.2, metadata and placed creation: ome_multiscales with explicit per-level
placement, level_placement and level_shape (the BigDataViewer rule inverted,
origin included), chunk_key and parse_chunk_key, create (format follows the
group, chunks required, codecs explicit with a zstd default, exists error or
adopt-with-verify, create-race backoff, no delete or overwrite anywhere),
open(mode="r+"), write_index with whole-unit alignment and an explicit
partial mode, write, write_shape, add_level as metadata plus an empty array.
0.3, grids and blocks: Grid, blocks with context and clipping, write_chunk,
level_factors, public store path helpers, units.abbreviation.

Written from the five writer sessions' answers of 2026-10-22 and a census of
the I/O code the five repos still carry (section 6); the new open questions
cover legacy attributes, the block iterator's shape, sidecar attributes, NRS
creation races, the codec default and sharding.

Claude-Session: https://claude.ai/code/session_0141wgF8mkGbjGfBFKfKhp64
0.1.1 moved offset-less N5 pyramids by half a base voxel as a patch release;
every consumer pins a floating range and installs the newest version in CI,
so cellmap-flow's CI was red on every open PR until it pinned 0.1.1. Section 8
now says what a patch may and may not do.

Claude-Session: https://claude.ai/code/session_0141wgF8mkGbjGfBFKfKhp64
@davidackerman
davidackerman merged commit 2f9d581 into main Oct 22, 2026
4 checks passed
@davidackerman
davidackerman deleted the spec-0.2-0.3 branch October 22, 2026 18:46
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