diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml
index d8f1ecae..224c468e 100644
--- a/.github/workflows/ci.yml
+++ b/.github/workflows/ci.yml
@@ -118,6 +118,41 @@ jobs:
path: examples/target/generated-pdfs/**
if-no-files-found: error
+ binary-compat:
+ name: Binary Compatibility (japicmp vs v1.6.5)
+ if: github.event_name == 'pull_request'
+ needs: architecture-and-documentation-guards
+ runs-on: ubuntu-latest
+ env:
+ JAVA_TOOL_OPTIONS: -Djava.awt.headless=true
+
+ steps:
+ - name: Check out repository
+ uses: actions/checkout@v6
+
+ - name: Set up Temurin JDK 17
+ uses: actions/setup-java@v5
+ with:
+ distribution: temurin
+ java-version: '17'
+ cache: maven
+
+ - name: Compare public API against baseline
+ # The `japicmp` profile pulls the v1.6.5 jar from JitPack and
+ # diffs it against the freshly-built artifact. Fails the job on
+ # any binary-incompatible modification to the public surface.
+ # Source-incompatible changes are reported only (phased policy).
+ # See Track E1 in the v1.6.5→1.7 readiness taskboard.
+ run: ./mvnw -B -ntp -DskipTests -P japicmp verify -pl .
+
+ - name: Upload japicmp report
+ if: always()
+ uses: actions/upload-artifact@v7
+ with:
+ name: japicmp-report-${{ github.run_id }}
+ path: target/japicmp/**
+ if-no-files-found: ignore
+
perf-smoke:
name: Performance Smoke Check
if: github.event_name == 'pull_request'
diff --git a/CHANGELOG.md b/CHANGELOG.md
index c7c30d53..484b3c5a 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -3,6 +3,25 @@
All notable changes to GraphCompose are documented here. Versions
follow semantic versioning; release dates are ISO 8601.
+## v1.6.6 — Planned
+
+First Maven Central release. Adds publishable sources/javadoc jars,
+GPG-signed artifacts, a binary-compatibility gate against v1.6.5, and
+the metadata Maven Central requires. Zero breaking changes; users on
+JitPack continue to resolve through the existing coordinates.
+
+### Build
+
+- **Binary-compatibility gate against v1.6.5** (`japicmp` profile,
+ Track E1). The new `binary-compat` CI job builds the artifact on every
+ pull request and diffs it against `com.github.DemchaAV:GraphCompose:v1.6.5`
+ pulled from JitPack. Binary-incompatible modifications to the public
+ surface fail the build; source-incompatible changes are reported only
+ (phased policy, will tighten after the 1.6.6 cut). Run locally with
+ `./mvnw -DskipTests -P japicmp verify -pl .`; HTML/MD/XML reports
+ land in `target/japicmp/`. JitPack repository is scoped to the
+ `japicmp` profile, so downstream consumers do not inherit it.
+
## v1.6.5 — 2026-05-30
### Templates v2
diff --git a/pom.xml b/pom.xml
index cc3dc92b..7242a31c 100644
--- a/pom.xml
+++ b/pom.xml
@@ -68,6 +68,10 @@
3.15.0
3.12.0
3.5.5
+
+
+ 0.23.1
+ v1.6.5
@@ -355,4 +359,66 @@
+
+
+
+
+ japicmp
+
+
+ jitpack.io
+ https://jitpack.io
+
+
+
+
+
+ com.github.siom79.japicmp
+ japicmp-maven-plugin
+ ${japicmp.version}
+
+
+ japicmp-against-baseline
+ verify
+
+ cmp
+
+
+
+
+
+
+ com.github.DemchaAV
+ GraphCompose
+ ${japicmp.baseline}
+
+
+
+
+ ${project.build.directory}/${project.build.finalName}.jar
+
+
+
+ true
+ true
+ false
+ false
+ true
+ true
+
+
+
+
+
+
+