Liking cljdoc? Tell your friends :D

v1.2.0 Release Checklist

This checklist makes the v1.2.0 release repeatable and keeps irreversible Clojars publication separate from validation.

1. Release metadata

  • [x] CHANGELOG.md contains 1.2.0 notes dated 2026-07-30
  • [x] README dependency examples use 1.2.0
  • [x] the public API contract includes synchronous reports and managed capture
  • [x] the development fallback version is 1.2.0-SNAPSHOT
  • [x] the roadmap records the completed v1.2 implementation and acceptance work

2. Local gates

Run from the repository root:

clojure -T:build javac
clojure -M:test
clojure -M:eastwood
clj-kondo --lint src test dev
clojure-lsp clean-ns --dry
clojure-lsp format --dry
dev/script/mdlint.sh
clojure -M:perf-gate
clojure -M:perf --mode offline --profile quick --output target/perf-v1.2.0
PACLO_VERSION=1.2.0 clojure -T:build jar

Confirm the release artifact and embedded Maven metadata:

test -f target/paclo-1.2.0.jar
test -f target/classes/META-INF/maven/org.clojars.nanto/paclo/pom.xml
grep -F "<version>1.2.0</version>" \
  target/classes/META-INF/maven/org.clojars.nanto/paclo/pom.xml

Recorded local results on 2026-07-30:

  • unit tests: 236 tests / 675 assertions / 0 failures / 0 errors
  • Eastwood: 56 existing performance/reflection warnings / 0 exceptions
  • clj-kondo: 0 errors / 0 warnings
  • clojure-lsp clean and format dry-runs: no changes
  • Markdown lint: successful
  • performance gate: 549.9 ms (warn=1000, fail=1200)
  • offline quick profile: all 27 case/scenario combinations completed
  • release jar/POM: 1.2.0 coordinates and public namespaces verified
  • post-implementation main CI: successful (run 30530828070)

3. CI and publish dry-run

  • [x] the release-preparation PR is green on every required CI job
  • [x] the latest dependency-audit run has no release-blocking finding
  • [x] the release-preparation PR is merged to main
  • [x] the publish workflow dry-run succeeds on the exact main commit
  • [x] the dry-run artifact contains the 1.2.0 jar and POM

After merging the preparation PR, run:

gh workflow run publish.yml \
  --ref main \
  -f version=1.2.0 \
  -f dry_run=true

The dry-run performs source/version validation, tests, the performance gate, and the release build. It does not contact Clojars.

Recorded validation results on 2026-07-30:

  • release-preparation CI: successful (run 30532048720)
  • Dependency Audit on post-implementation main: successful (run 30531457081)
  • merged release commit: 3dfcabd8eee4845d7aed8708604cb4466f5d802a
  • post-merge main CI: successful (run 30536370620)
  • publish dry-run: successful (run 30536443063)
  • dry-run artifact: paclo-1.2.0.jar and POM verified; jar SHA-256 55a8689e34d21a0f84770c9905c4f1a50faceefbf2cdcfc7406bf582e0667d00

4. Tag and publish

Resolve and review the exact commit before creating the tag:

git switch main
git pull --ff-only origin main
git status --short
git log -1 --oneline
git tag -a v1.2.0 -m "v1.2.0"
git push origin v1.2.0

Pushing the tag starts the publish workflow with publication enabled. Confirm that it publishes org.clojars.nanto/paclo:1.2.0.

If the tag-triggered workflow fails before Clojars accepts the artifact, use the manual recovery path:

gh workflow run publish.yml \
  --ref main \
  -f version=1.2.0 \
  -f dry_run=false

Do not use the recovery path after Clojars reports a successful publication; released coordinates are immutable and cannot be overwritten.

Recorded publication results on 2026-07-30:

  • tagged commit: 3dfcabd8eee4845d7aed8708604cb4466f5d802a
  • Clojars publication: successful (run 30538425161)

5. Release verification

  • [x] Clojars shows org.clojars.nanto/paclo:1.2.0
  • [x] cljdoc builds and serves version 1.2.0
  • [x] a clean consumer project resolves the Clojars coordinate
  • [x] the Git tag resolves to the release-preparation commit
  • [x] the GitHub Release is published as the latest stable release
  • [x] the roadmap release status is updated from candidate to released

After Clojars succeeds, create the GitHub Release:

gh release create v1.2.0 \
  --verify-tag \
  --title v1.2.0 \
  --generate-notes

Recorded release results on 2026-07-30:

  • clean consumer resolution downloaded the 1.2.0 POM and JAR from Clojars and loaded reduce-packets-report and start-capture
  • cljdoc build 108741 completed with nine namespaces, and the v1.2.0 API includes all managed-capture functions
  • GitHub Release: v1.2.0

If a release defect is discovered, do not move the tag or replace the Clojars artifact. Correct it with a new patch release.

Historical roadmap acceptance record (archived)

  • [x] Define a schema-versioned execution statistics contract
  • [x] Add synchronous result-plus-statistics reduction
  • [x] Add an opaque, Closeable managed capture handle
  • [x] Add explicit idempotent stop and single-consumer packet delivery
  • [x] Make shutdown independent of queue capacity
  • [x] Add lifecycle, early-reduction, and full-queue regression tests
  • [x] Add managed-capture performance scenarios
  • [x] Run loopback and separate-host real-NIC acceptance probes
  • [x] Complete static, compatibility, and packaging gates
  • [x] Complete the publication dry-run
  • [x] Publish v1.2.0 to Clojars and verify cljdoc

The v1.2 scope intentionally excludes multiple consumers, pub/sub, dynamic BPF replacement, pause/resume, borrowed buffers, batching, parallel decode, mmap, and PCAPNG. These capabilities require separate evidence and contracts.

Can you improve this documentation?Edit on GitHub

cljdoc builds & hosts documentation for Clojure/Script libraries

Keyboard shortcuts
Ctrl+kJump to recent docs
←Move to previous article
→Move to next article
Ctrl+/Jump to the search field
× close