diff --git a/CHANGELOG.md b/CHANGELOG.md index 60878f4..ddb511c 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -10,8 +10,10 @@ `Grid.from_meta(meta, voxel_size=t).box` already was; it was the stored data's extent, so `read(box)` could return fewer voxels than `shape` (cellmap-flow's 7 voxels of 8 nm at 24 nm: box ended at 56 nm, now 72). No voxel moves. -- The unit table knows kilometres (`kilometer`, `kilometre`, `km`, 1e3 m), so they - convert, abbreviate to `km` and are written as OME's `kilometer` (chunkmirage's ask). +- **Unit table change.** The unit table knows kilometres (`kilometer`, `kilometre`, `km`, + 1e3 m), so they convert, abbreviate to `km` and are written as OME's `kilometer` + (chunkmirage's ask). This should have been a minor release (spec section 8): cellmap-flow + exports the table and its CI failed until it moved its pin to `>=0.3.1`. - README: the placement rule gains the corner formula, a worked example, why the centre is the model, and how the read rule follows from it. diff --git a/docs/spec.md b/docs/spec.md index 4d49fa8..5744526 100644 --- a/docs/spec.md +++ b/docs/spec.md @@ -1084,10 +1084,14 @@ tests, minimal reusable code. The README is sections 1 to 5 of this file; a beha is not stated here is not implemented without adding the statement first. Versioning. Every consumer pins a floating range and its CI installs the newest version in -it, so a change in where any voxel sits is a **minor** release, never a patch: 0.1.1 moved -offset-less N5 pyramids by half a base voxel as a patch, and cellmap-flow's CI was red on -every open PR within the hour until it pinned 0.1.1. A patch release reads more stores or -reads them faster and places nothing differently; a minor release may move voxels or add -API, and its changelog entry starts with **Placement change** when it does; nothing before -1.0 promises more. Consumers that cannot absorb a move between CI runs pin -`>=0.x,<0.(x+1)`. +it within the hour of a release, so the version number says what a release can break. A +**patch** release brings the code back to what this spec says, or reads more stores or +reads them faster; it places nothing differently and adds nothing public. A **minor** +release is anything else: it may move voxels or add API, and an entry added to, renamed in +or removed from the unit table is API (`wa.units.TABLE` is public, and cellmap-flow exports +it to its browser app behind a freshness test). Both were once shipped as patches and both +turned cellmap-flow's CI red on every open PR within the hour: 0.1.1 moved offset-less N5 +pyramids by half a base voxel, and 0.3.1 added kilometres. A changelog entry starts with +**Placement change** when voxels move and **Unit table change** when the table does, and the +release message to each consumer repeats those lines; nothing before 1.0 promises more. +Consumers that cannot absorb a move between CI runs pin `>=0.x,<0.(x+1)`.