Skip to content

Commit e4c873c

Browse files
docs(release): 📝 prepare v0.9.0 changelog and docs sweep (#166)
## Summary Prepare changelog and documentation for v0.9.0 release. This version adds opt-in CAS retry and unifies the Volume option surface with the shared `Option` interface. ## Highlights - Add v0.9.0 CHANGELOG entry covering CAS retry feature, unified Option interface, and VolumeOption/WithVolumeChecksum removal - Update V1_READINESS.md to reflect VolumeOption→Option unification - Update compare links for [Unreleased] and new version entry ## Test plan - [ ] CHANGELOG format follows Keep a Changelog conventions - [ ] Compare links resolve correctly after tag is created - [ ] No stale VolumeOption/WithVolumeChecksum references in live docs (README, PUBLIC_API, contracts) - [ ] `go test ./...` passes 🤖 Generated with [Claude Code](https://claude.com/claude-code) --------- Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
1 parent be520ea commit e4c873c

2 files changed

Lines changed: 37 additions & 2 deletions

File tree

CHANGELOG.md

Lines changed: 36 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,40 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
1111

1212
---
1313

14+
## [0.9.0] - 2026-03-08
15+
16+
### Added
17+
18+
- **Opt-in CAS retry**: `WithRetryCount(n)` enables automatic bounded retry on `ErrSnapshotConflict` within the commit path for both Dataset and Volume. Data files are written once; only the manifest re-parent and pointer CAS are retried. ([#164](https://github.com/pithecene-io/lode/pull/164), closes [#163](https://github.com/pithecene-io/lode/issues/163))
19+
- **Backoff customization**: `WithRetryBaseDelay(d)`, `WithRetryMaxDelay(d)`, `WithRetryJitter(j)` for full control over jittered exponential backoff. Defaults: 10ms base, 2s max, full jitter.
20+
- **`ErrOptionNotValidForVolume`**: Sentinel error for options that do not apply to Volume construction.
21+
22+
### Changed
23+
24+
- **Unified `Option` interface**: `VolumeOption` function type replaced by the shared `Option` interface (already used by Dataset and DatasetReader). `NewVolume` now takes `...Option`. Options that do not apply to a given constructor return an error at construction time. ([#164](https://github.com/pithecene-io/lode/pull/164))
25+
- **`WithVolumeChecksum``WithChecksum`**: Volume block checksums now use the same `WithChecksum(c)` option as Dataset file checksums.
26+
27+
### Breaking Changes
28+
29+
- **`VolumeOption` type removed**: Replace `lode.VolumeOption` with `lode.Option`.
30+
- **`WithVolumeChecksum` removed**: Replace `lode.WithVolumeChecksum(c)` with `lode.WithChecksum(c)`.
31+
32+
### Upgrade Notes
33+
34+
- **Search-and-replace migration**:
35+
- `lode.VolumeOption``lode.Option`
36+
- `lode.WithVolumeChecksum(``lode.WithChecksum(`
37+
- **Retry is opt-in**: Default behavior (0 retries) is unchanged. Existing callers see no difference unless they configure `WithRetryCount`.
38+
- **No data migration required**: Storage layout and manifest format are unchanged.
39+
40+
### References
41+
42+
- [CONTRACT_WRITE_API.md](docs/contracts/CONTRACT_WRITE_API.md) — Automatic retry semantics
43+
- [CONTRACT_VOLUME.md](docs/contracts/CONTRACT_VOLUME.md) — Unified Option interface, Volume retry
44+
- [CONTRACT_ERRORS.md](docs/contracts/CONTRACT_ERRORS.md) — Automatic retry guidance for ErrSnapshotConflict
45+
46+
---
47+
1448
## [0.8.0] - 2026-02-24
1549

1650
### Added
@@ -445,7 +479,8 @@ Post-v0.3.0 improvements planned:
445479

446480
---
447481

448-
[Unreleased]: https://github.com/pithecene-io/lode/compare/v0.8.0...HEAD
482+
[Unreleased]: https://github.com/pithecene-io/lode/compare/v0.9.0...HEAD
483+
[0.9.0]: https://github.com/pithecene-io/lode/compare/v0.8.0...v0.9.0
449484
[0.8.0]: https://github.com/pithecene-io/lode/compare/v0.7.4...v0.8.0
450485
[0.7.4]: https://github.com/pithecene-io/lode/compare/v0.7.3...v0.7.4
451486
[0.7.3]: https://github.com/pithecene-io/lode/compare/v0.7.2...v0.7.3

docs/V1_READINESS.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -90,7 +90,7 @@ as `(private)` instead of by number.
9090
> Summary: —
9191
> Issue: #___
9292
93-
- [ ] Option / VolumeOption surface has not expanded since dogfooding began
93+
- [ ] Option surface has not expanded since v0.9.0 (freeze window reset: v0.9.0 added WithRetryCount/BaseDelay/MaxDelay/Jitter, ErrOptionNotValidForVolume; removed VolumeOption, WithVolumeChecksum)
9494

9595
> **Evidence:** _not yet recorded_
9696
> Date: — | Observer: — | Project: —

0 commit comments

Comments
 (0)