Skip to content

Commit ccb267c

Browse files
normanrzclaudekonstibob
authored
Add AGENTS.md/CLAUDE.md, CHANGELOG.md and a PR template (#104)
* Add agent instructions, changelog and PR template Adds contributor- and agent-facing documentation that the repository was missing: - CLAUDE.md with the project layout, Maven commands, test prerequisites and code conventions (IntelliJ formatting, Java 8 source compatibility). - AGENTS.md pointing at CLAUDE.md so agents following either convention find the same instructions. - CHANGELOG.md covering every release from 0.0.1 to 0.3.0, reconstructed from the commit history between tags. - A pull request template with a checklist mirroring the conventions documented in CLAUDE.md. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> * Add source-of-truth lookup order to AGENTS.md Merges the guidance from #107: check zarr-specs, zarr-extensions and zarr-python before implementing a feature. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> * Add OME-NGFF 0.6 spec URL to AGENTS.md Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> --------- Co-authored-by: Claude Opus 5 <noreply@anthropic.com> Co-authored-by: Konstantin <konsti.bobenko@gmail.com> Co-authored-by: konstibob <44369572+konstibob@users.noreply.github.com>
1 parent edbd839 commit ccb267c

4 files changed

Lines changed: 221 additions & 0 deletions

File tree

‎.github/pull_request_template.md‎

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
## Description
2+
3+
<!-- What does this PR change, and why? -->
4+
5+
## Related issues
6+
7+
<!-- e.g. Fixes #123 -->
8+
9+
## Checklist
10+
11+
- [ ] Added tests for the new behavior or bug fix
12+
- [ ] Added an entry to [CHANGELOG.md](../CHANGELOG.md) under `Unreleased`
13+
- [ ] Updated [USERGUIDE.md](../USERGUIDE.md) / [USERGUIDE-OME-ZARR.md](../USERGUIDE-OME-ZARR.md) if the public API changed

‎AGENTS.md‎

Lines changed: 58 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,58 @@
1+
# AGENTS.md
2+
3+
`zarr-java` (`dev.zarr:zarr-java`) is a Java implementation of the Zarr v2 and v3
4+
array storage specs, plus experimental OME-Zarr support. Public API entry points
5+
are `dev.zarr.zarrjava.v2.{Array,Group}` and `dev.zarr.zarrjava.v3.{Array,Group}`.
6+
7+
- Build: Maven, compiled with `maven.compiler.release=8` (build with JDK 11).
8+
- Arrays are backed by `ucar.ma2.Array` (netCDF-Java).
9+
- Metadata is (de)serialized with Jackson.
10+
11+
## Layout
12+
13+
- `core/` — version-agnostic base types (`Array`, `Group`, `ArrayMetadata`,
14+
`DataType`, `Attributes`), shared codecs (`core/codec`) and chunk key encodings.
15+
- `v2/`, `v3/` — spec-version-specific metadata, codecs and chunk grids.
16+
- `store/` — `Store` backends: `FilesystemStore`, `HttpStore`, `S3Store`,
17+
`MemoryStore`, `ZipStore`/`ReadOnlyZipStore`/`BufferedZipStore`. Keys are
18+
addressed through `StoreHandle`.
19+
- `experimental/ome/` — OME-Zarr (NGFF) v0.4 / v0.5 / v0.6 metadata models.
20+
- `cli/` — command line wrapper.
21+
- `utils/` — indexing helpers, notably `IndexingUtils`.
22+
23+
## Before implementing a feature
24+
25+
Before implementing a feature, codec, data type, or behaviour change, check whether it already
26+
exists or is specified elsewhere, and use that as context. Check in this order:
27+
28+
1. **zarr-specs**: the core Zarr v2/v3 specification. Is it specified, and how exactly?
29+
- https://github.com/zarr-developers/zarr-specs (rendered: https://zarr-specs.readthedocs.io)
30+
2. **zarr-extensions**: codecs, data types, chunk grids etc. that are not part of the core spec.
31+
- Local clone: `../zarr-extensions`
32+
- https://github.com/zarr-developers/zarr-extensions
33+
3. **zarr-python**: the reference implementation. Defines the actual behaviour (defaults, edge
34+
cases, error handling) that zarr-java must match.
35+
- Local clone: `../zarr-python`; the installed version is in `.venv/lib/python*/site-packages/zarr`
36+
- https://github.com/zarr-developers/zarr-python
37+
4. **OME-Zarr (NGFF)**: for anything under `experimental/ome/`, the current OME-NGFF
38+
specification is at https://ngff.openmicroscopy.org/specifications/0.6/index.html.
39+
40+
Prefer the local clones (grep) over fetching the web. If the spec and zarr-python disagree,
41+
match zarr-python and mention the discrepancy. If nothing relevant is found, say so before
42+
designing the feature from scratch.
43+
44+
## Conventions
45+
46+
- IntelliJ IDEA default Java formatting; run `Reformat Code` and
47+
`Optimize Imports` before submitting changes.
48+
- New user-visible changes go in [CHANGELOG.md](CHANGELOG.md) under `Unreleased`.
49+
- User-facing documentation lives in [USERGUIDE.md](USERGUIDE.md) and
50+
[USERGUIDE-OME-ZARR.md](USERGUIDE-OME-ZARR.md); update them alongside API changes.
51+
- When writing code comments, keep them short and concise, do not reference other code or previous behavior.
52+
53+
## Pull requests
54+
55+
- After opening a PR, make sure to add the PR number to added changelog entries, e.g. [#103](https://github.com/zarr-developers/zarr-java/pull/103).
56+
- Use the PR template at .github/pull_request_template.md.
57+
- Keep your summaries short and to the point.
58+
- When adding comments or replies to PRs, always mention that Claude wrote them.

‎CHANGELOG.md‎

Lines changed: 149 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,149 @@
1+
# Changelog
2+
3+
All notable changes to zarr-java are documented in this file.
4+
5+
The format is loosely based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/),
6+
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
7+
8+
## [Unreleased]
9+
10+
## [0.3.0] - 2026-09-09
11+
12+
### Added
13+
14+
- Support for open-ended byte ranges in `getInputStream` [#103](https://github.com/zarr-developers/zarr-java/pull/103).
15+
- `cast_value` codec [#83](https://github.com/zarr-developers/zarr-java/pull/83).
16+
- `gzip` codec for Zarr v2 arrays [#98](https://github.com/zarr-developers/zarr-java/pull/98).
17+
18+
### Fixed
19+
20+
- Fail loudly instead of silently on unreadable ZIP stores [#103](https://github.com/zarr-developers/zarr-java/pull/103).
21+
- Accept a `shuffle` value of `-1` in Zarr v2 blosc metadata [#102](https://github.com/zarr-developers/zarr-java/pull/102).
22+
- Logging of unknown fields in OME metadata is less severe [#75](https://github.com/zarr-developers/zarr-java/pull/75).
23+
24+
## [0.2.0] - 2026-07-29
25+
26+
### Added
27+
28+
- `reshape` codec.
29+
30+
### Changed
31+
32+
- Removed unnecessary `resolveOutputShape` calls.
33+
34+
## [0.1.3] - 2026-05-04
35+
36+
### Fixed
37+
38+
- Blosc `shuffle` handling; bumped `blosc-java`.
39+
- The shaded JAR is attached as a classifier instead of replacing the main artifact.
40+
41+
## [0.1.2] - 2026-03-31
42+
43+
### Added
44+
45+
- Command line wrapper [#45](https://github.com/zarr-developers/zarr-java/pull/45).
46+
47+
### Changed
48+
49+
- `CodecBuilder` accepts a compression `level` for the gzip and zstd codecs [#69](https://github.com/zarr-developers/zarr-java/pull/69).
50+
- OME-Zarr follow-up improvements [#68](https://github.com/zarr-developers/zarr-java/pull/68).
51+
52+
## [0.1.1] - 2026-03-23
53+
54+
### Added
55+
56+
- Experimental OME-Zarr (NGFF) support [#66](https://github.com/zarr-developers/zarr-java/pull/66).
57+
58+
## [0.1.0] - 2026-03-05
59+
60+
### Added
61+
62+
- User guide and expanded documentation [#55](https://github.com/zarr-developers/zarr-java/pull/55).
63+
- Big-endian data types for Zarr v2 [#60](https://github.com/zarr-developers/zarr-java/pull/60).
64+
- Retries for HTTP requests [#62](https://github.com/zarr-developers/zarr-java/pull/62).
65+
- Parallel decoding in `ShardingIndexedCodec` [#61](https://github.com/zarr-developers/zarr-java/pull/61).
66+
- Chunk data is deleted when an array is resized, plus additional tests [#49](https://github.com/zarr-developers/zarr-java/pull/49).
67+
68+
### Changed
69+
70+
- `Array.read` takes `long` shape arguments and store requests are validated [#54](https://github.com/zarr-developers/zarr-java/pull/54).
71+
- Replaced a `ByteBuffer.array()` call [#58](https://github.com/zarr-developers/zarr-java/pull/58).
72+
73+
### Fixed
74+
75+
- Race condition in `ShardingIndexedCodec` during parallel encoding [#61](https://github.com/zarr-developers/zarr-java/pull/61).
76+
- Removed an unnecessary double store read in sharding [#57](https://github.com/zarr-developers/zarr-java/pull/57).
77+
- `zstd` in combination with sharding [#56](https://github.com/zarr-developers/zarr-java/pull/56).
78+
79+
## [0.0.10] - 2026-01-30
80+
81+
### Added
82+
83+
- `ZipStore` [#37](https://github.com/zarr-developers/zarr-java/pull/37).
84+
- `MemoryStore` [#36](https://github.com/zarr-developers/zarr-java/pull/36).
85+
- Default chunk shape calculation for v2 and v3 arrays [#50](https://github.com/zarr-developers/zarr-java/pull/50).
86+
87+
### Fixed
88+
89+
- `IndexingUtils.computeProjection` [#48](https://github.com/zarr-developers/zarr-java/pull/48).
90+
- A missing `configuration` key for `chunkKeyEncoding` is accepted [#42](https://github.com/zarr-developers/zarr-java/pull/42).
91+
92+
## 0.0.6 – 0.0.9 - 2025-12-04
93+
94+
Release-process fixes only; no library changes.
95+
96+
## [0.0.5] - 2025-11-22
97+
98+
### Added
99+
100+
- Zarr v2 core features: arrays, groups and attributes [#22](https://github.com/zarr-developers/zarr-java/pull/22), [#25](https://github.com/zarr-developers/zarr-java/pull/25), [#28](https://github.com/zarr-developers/zarr-java/pull/28).
101+
- Support for arrays smaller than their chunk size [#9](https://github.com/zarr-developers/zarr-java/pull/9).
102+
- `storageTransformers` metadata attribute; array creation fails on non-empty storage transformers.
103+
- Reading a missing chunk returns a chunk filled with the fill value.
104+
105+
### Changed
106+
107+
- Dependency version updates [#26](https://github.com/zarr-developers/zarr-java/pull/26).
108+
- Clearer exception when requested data lies outside the array's domain.
109+
110+
### Fixed
111+
112+
- Codecs without a `configuration` entry [#34](https://github.com/zarr-developers/zarr-java/pull/34).
113+
- `S3Store.exists` catches `NoSuchKeyException` [#31](https://github.com/zarr-developers/zarr-java/pull/31).
114+
115+
## [0.0.4] - 2024-08-22
116+
117+
Version bump only.
118+
119+
## [0.0.3] - 2024-08-15
120+
121+
### Added
122+
123+
- Validation of sharding bounds and chunk bounds during metadata creation.
124+
125+
## [0.0.2] - 2024-07-04
126+
127+
### Changed
128+
129+
- Artifacts are published to Maven Central; sources are compiled with JDK 11
130+
targeting Java 8.
131+
- The blosc dependency is pulled from Maven instead of being downloaded manually.
132+
133+
## [0.0.1] - 2024-07-04
134+
135+
Initial release with Zarr v3 support.
136+
137+
[Unreleased]: https://github.com/zarr-developers/zarr-java/compare/0.3.0...HEAD
138+
[0.3.0]: https://github.com/zarr-developers/zarr-java/compare/0.2.0...0.3.0
139+
[0.2.0]: https://github.com/zarr-developers/zarr-java/compare/0.1.3...0.2.0
140+
[0.1.3]: https://github.com/zarr-developers/zarr-java/compare/0.1.2...0.1.3
141+
[0.1.2]: https://github.com/zarr-developers/zarr-java/compare/0.1.1...0.1.2
142+
[0.1.1]: https://github.com/zarr-developers/zarr-java/compare/0.1.0...0.1.1
143+
[0.1.0]: https://github.com/zarr-developers/zarr-java/compare/0.0.10...0.1.0
144+
[0.0.10]: https://github.com/zarr-developers/zarr-java/compare/0.0.9...0.0.10
145+
[0.0.5]: https://github.com/zarr-developers/zarr-java/compare/0.0.4...0.0.5
146+
[0.0.4]: https://github.com/zarr-developers/zarr-java/compare/0.0.3...0.0.4
147+
[0.0.3]: https://github.com/zarr-developers/zarr-java/compare/0.0.2...0.0.3
148+
[0.0.2]: https://github.com/zarr-developers/zarr-java/compare/0.0.1...0.0.2
149+
[0.0.1]: https://github.com/zarr-developers/zarr-java/releases/tag/0.0.1

‎CLAUDE.md‎

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
@AGENTS.md

0 commit comments

Comments
 (0)