diff --git a/CHANGELOG.md b/CHANGELOG.md
index 24fc1c0..5a2681f 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -6,6 +6,16 @@ The notable changes of every release. The section of a version is the text of it
## [Unreleased]
+## [0.3.0] - 2026-10-06
+
+POLL delivery that survives restarts and runs on several instances: acknowledgements wait in a
+store, optionally in the database, long polling keeps a request outstanding, and a SET is claimed
+while its handlers run so that two instances never acknowledge a SET one of them failed on.
+The JDBC schema gained a column and a table; migration scripts and startup upgrades come with it.
+Handlers get typed access to CAEP and RISC events with `SsfCaepEventHandler` and `SsfRiscEventHandler`,
+and the documentation now says in plain words that processing is at least once, with `idempotencyKey()`
+as the key for a handler's side effects.
+
### Added
- POLL delivery keeps the acknowledgements and error reports it owes the transmitter in an
@@ -118,6 +128,7 @@ Java library and as a Spring Boot 4.1 starter.
- The framework-free modules are Java modules; every artifact is signed, carries a CycloneDX
SBOM and a self-contained POM.
-[Unreleased]: https://github.com/easyssf/easyssf/compare/v0.2.0...HEAD
+[Unreleased]: https://github.com/easyssf/easyssf/compare/v0.3.0...HEAD
+[0.3.0]: https://github.com/easyssf/easyssf/compare/v0.2.0...v0.3.0
[0.2.0]: https://github.com/easyssf/easyssf/compare/v0.1.0...v0.2.0
[0.1.0]: https://github.com/easyssf/easyssf/releases/tag/v0.1.0
diff --git a/README.md b/README.md
index 08c3f96..d7244dc 100644
--- a/README.md
+++ b/README.md
@@ -80,7 +80,7 @@ which a build has to enable with `true
org.easyssf
easyssf-receiver-spring-boot-starter
- 0.2.0
+ 0.3.0
```
@@ -127,7 +127,7 @@ configuration reference.
org.easyssf
easyssf-receiver
- 0.2.0
+ 0.3.0
```
@@ -289,7 +289,7 @@ Spring Boot modules are automatic modules.
org.easyssf
easyssf-receiver
- 0.2.0
+ 0.3.0
```
@@ -374,7 +374,7 @@ stream management and poll endpoints. The tests of easyssf itself use it.
org.easyssf
easyssf-test
- 0.2.0
+ 0.3.0
test
```
diff --git a/easyssf-core/pom.xml b/easyssf-core/pom.xml
index c96cf4e..647b843 100644
--- a/easyssf-core/pom.xml
+++ b/easyssf-core/pom.xml
@@ -5,7 +5,7 @@
org.easyssf
easyssf-parent
- 0.3.0-SNAPSHOT
+ 0.4.0-SNAPSHOT
easyssf-core
easyssf-core
diff --git a/easyssf-receiver-jdbc/pom.xml b/easyssf-receiver-jdbc/pom.xml
index 6facec4..ee9f7fa 100644
--- a/easyssf-receiver-jdbc/pom.xml
+++ b/easyssf-receiver-jdbc/pom.xml
@@ -6,7 +6,7 @@
org.easyssf
easyssf-parent
- 0.3.0-SNAPSHOT
+ 0.4.0-SNAPSHOT
easyssf-receiver-jdbc
diff --git a/easyssf-receiver-spring-boot-autoconfigure/pom.xml b/easyssf-receiver-spring-boot-autoconfigure/pom.xml
index ffa276a..79e800c 100644
--- a/easyssf-receiver-spring-boot-autoconfigure/pom.xml
+++ b/easyssf-receiver-spring-boot-autoconfigure/pom.xml
@@ -5,7 +5,7 @@
org.easyssf
easyssf-parent
- 0.3.0-SNAPSHOT
+ 0.4.0-SNAPSHOT
easyssf-receiver-spring-boot-autoconfigure
easyssf-receiver-spring-boot-autoconfigure
diff --git a/easyssf-receiver-spring-boot-conformance-tests/pom.xml b/easyssf-receiver-spring-boot-conformance-tests/pom.xml
index a9d140d..2f848e3 100644
--- a/easyssf-receiver-spring-boot-conformance-tests/pom.xml
+++ b/easyssf-receiver-spring-boot-conformance-tests/pom.xml
@@ -5,7 +5,7 @@
org.easyssf
easyssf-parent
- 0.3.0-SNAPSHOT
+ 0.4.0-SNAPSHOT
easyssf-receiver-spring-boot-conformance-tests
easyssf-receiver-spring-boot-conformance-tests
diff --git a/easyssf-receiver-spring-boot-examples/example-oidc-client/pom.xml b/easyssf-receiver-spring-boot-examples/example-oidc-client/pom.xml
index 46262fe..e8f72b9 100644
--- a/easyssf-receiver-spring-boot-examples/example-oidc-client/pom.xml
+++ b/easyssf-receiver-spring-boot-examples/example-oidc-client/pom.xml
@@ -5,7 +5,7 @@
org.easyssf
easyssf-receiver-spring-boot-examples
- 0.3.0-SNAPSHOT
+ 0.4.0-SNAPSHOT
example-oidc-client
example-oidc-client
diff --git a/easyssf-receiver-spring-boot-examples/example-resource-server/pom.xml b/easyssf-receiver-spring-boot-examples/example-resource-server/pom.xml
index 09c7141..5024208 100644
--- a/easyssf-receiver-spring-boot-examples/example-resource-server/pom.xml
+++ b/easyssf-receiver-spring-boot-examples/example-resource-server/pom.xml
@@ -5,7 +5,7 @@
org.easyssf
easyssf-receiver-spring-boot-examples
- 0.3.0-SNAPSHOT
+ 0.4.0-SNAPSHOT
example-resource-server
example-resource-server
diff --git a/easyssf-receiver-spring-boot-examples/example-scim-provisioning/pom.xml b/easyssf-receiver-spring-boot-examples/example-scim-provisioning/pom.xml
index 4fd9cc9..7a2ed49 100644
--- a/easyssf-receiver-spring-boot-examples/example-scim-provisioning/pom.xml
+++ b/easyssf-receiver-spring-boot-examples/example-scim-provisioning/pom.xml
@@ -5,7 +5,7 @@
org.easyssf
easyssf-receiver-spring-boot-examples
- 0.3.0-SNAPSHOT
+ 0.4.0-SNAPSHOT
example-scim-provisioning
example-scim-provisioning
diff --git a/easyssf-receiver-spring-boot-examples/pom.xml b/easyssf-receiver-spring-boot-examples/pom.xml
index d138e27..6a9dcfd 100644
--- a/easyssf-receiver-spring-boot-examples/pom.xml
+++ b/easyssf-receiver-spring-boot-examples/pom.xml
@@ -5,7 +5,7 @@
org.easyssf
easyssf-parent
- 0.3.0-SNAPSHOT
+ 0.4.0-SNAPSHOT
easyssf-receiver-spring-boot-examples
easyssf-receiver-spring-boot-examples
diff --git a/easyssf-receiver-spring-boot-starter/README.md b/easyssf-receiver-spring-boot-starter/README.md
index 2a78078..6044f1d 100644
--- a/easyssf-receiver-spring-boot-starter/README.md
+++ b/easyssf-receiver-spring-boot-starter/README.md
@@ -10,7 +10,7 @@ Events, the test support.
org.easyssf
easyssf-receiver-spring-boot-starter
- 0.2.0
+ 0.3.0
```
diff --git a/easyssf-receiver-spring-boot-starter/pom.xml b/easyssf-receiver-spring-boot-starter/pom.xml
index abb8dba..d8dc7fa 100644
--- a/easyssf-receiver-spring-boot-starter/pom.xml
+++ b/easyssf-receiver-spring-boot-starter/pom.xml
@@ -5,7 +5,7 @@
org.easyssf
easyssf-parent
- 0.3.0-SNAPSHOT
+ 0.4.0-SNAPSHOT
easyssf-receiver-spring-boot-starter
easyssf-receiver-spring-boot-starter
diff --git a/easyssf-receiver/pom.xml b/easyssf-receiver/pom.xml
index 125de20..b1d0e54 100644
--- a/easyssf-receiver/pom.xml
+++ b/easyssf-receiver/pom.xml
@@ -5,7 +5,7 @@
org.easyssf
easyssf-parent
- 0.3.0-SNAPSHOT
+ 0.4.0-SNAPSHOT
easyssf-receiver
easyssf-receiver
diff --git a/easyssf-test-conformance/pom.xml b/easyssf-test-conformance/pom.xml
index fc2ed01..a791f60 100644
--- a/easyssf-test-conformance/pom.xml
+++ b/easyssf-test-conformance/pom.xml
@@ -6,7 +6,7 @@
org.easyssf
easyssf-parent
- 0.3.0-SNAPSHOT
+ 0.4.0-SNAPSHOT
easyssf-test-conformance
diff --git a/easyssf-test/pom.xml b/easyssf-test/pom.xml
index d768500..9c4d920 100644
--- a/easyssf-test/pom.xml
+++ b/easyssf-test/pom.xml
@@ -6,7 +6,7 @@
org.easyssf
easyssf-parent
- 0.3.0-SNAPSHOT
+ 0.4.0-SNAPSHOT
easyssf-test
diff --git a/pom.xml b/pom.xml
index 8096d2e..b0310de 100644
--- a/pom.xml
+++ b/pom.xml
@@ -6,7 +6,7 @@
org.easyssf
easyssf-parent
- 0.3.0-SNAPSHOT
+ 0.4.0-SNAPSHOT
pom
easyssf
Building blocks for the OpenID Shared Signals Framework (SSF)
@@ -65,7 +65,7 @@
the newest JDK: -Dbytebuddy.experimental=true -->
false
- 2026-10-04T13:28:33Z
+ 2026-10-05T23:58:41Z