Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
50 commits
Select commit Hold shift + click to select a range
915ffcf
Add RFC 9457 problem type model
aalsanie Oct 5, 2026
00a2a9a
Simplify core to problem types
aalsanie Oct 5, 2026
518d0f4
Rebuild Spring problem detail bridge
aalsanie Oct 5, 2026
a67aff0
Rebuild Spring problem detail bridge
aalsanie Oct 5, 2026
3b6a074
Update Spring API contract
aalsanie Oct 5, 2026
ad1c231
Update Spring API contract
aalsanie Oct 5, 2026
62692fc
Update Spring API snapshot
aalsanie Oct 5, 2026
3ed5939
Remove outcome Spring adapters
aalsanie Oct 5, 2026
c5758fe
Remove obsolete Spring adapter
aalsanie Oct 5, 2026
b113551
Remove obsolete adapters
aalsanie Oct 5, 2026
52426bd
Simplify Spring reference application
aalsanie Oct 5, 2026
2b90654
Update Java publication consumers
aalsanie Oct 5, 2026
71dfce0
Update Kotlin publication consumers
aalsanie Oct 5, 2026
37adcf7
Update publication verification
aalsanie Oct 5, 2026
78c7de4
Update publication contracts
aalsanie Oct 5, 2026
49c19ee
Update compatibility policy
aalsanie Oct 5, 2026
eeed507
Simplify Kotlin compatibility check
aalsanie Oct 5, 2026
bd33bcc
Update local publication script
aalsanie Oct 5, 2026
d38178d
Remove obsolete compatibility paths
aalsanie Oct 5, 2026
07c2133
Rewrite documentation for problem types
aalsanie Oct 5, 2026
9fa3520
Rewrite documentation for problem types
aalsanie Oct 5, 2026
3b24204
Rewrite problem type documentation
aalsanie Oct 5, 2026
7689792
Rewrite problem type documentation
aalsanie Oct 5, 2026
2ad2105
Rewrite problem type documentation
aalsanie Oct 5, 2026
46ebc7e
Update compatibility documentation
aalsanie Oct 5, 2026
6ab579f
Simplify CI for problem types
aalsanie Oct 5, 2026
f2b08a6
Simplify compatibility verification
aalsanie Oct 5, 2026
e003fa5
Simplify final release workflow
aalsanie Oct 5, 2026
ec2b6d7
Strengthen problem type tests
aalsanie Oct 5, 2026
c5eaec8
Fix reference application warnings
aalsanie Oct 5, 2026
e899650
Fix reference application warnings
aalsanie Oct 5, 2026
c8c9f72
Fix reference application warnings
aalsanie Oct 5, 2026
da271d4
Tighten Spring bridge tests
aalsanie Oct 5, 2026
6e641bc
Harden consumer builds
aalsanie Oct 5, 2026
1544c39
Harden consumer builds
aalsanie Oct 5, 2026
a664c02
Harden CI commands
aalsanie Oct 5, 2026
4c4fe61
Harden compatibility commands
aalsanie Oct 5, 2026
799b2e7
Harden release commands
aalsanie Oct 5, 2026
916e4c7
Fix Spring POM verification task
aalsanie Oct 5, 2026
d026028
Update CodeQL build targets
aalsanie Oct 5, 2026
aae53b1
Harden problem type invariants
aalsanie Oct 6, 2026
7b2fe4f
Add Spring wire contract tests
aalsanie Oct 6, 2026
f016050
Update 0.4.0 documentation
aalsanie Oct 6, 2026
942dca9
Harden compatibility and release checks
aalsanie Oct 6, 2026
939358e
Fix compatibility matrix output
aalsanie Oct 6, 2026
68d187b
Update problem type API snapshot
aalsanie Oct 6, 2026
656c0ff
Fix explicit path variable binding
aalsanie Oct 6, 2026
2e46c9d
Restore required compatibility checks
aalsanie Oct 6, 2026
f54e149
Refine 0.4.0 documentation
aalsanie Oct 6, 2026
c2dc38f
Align repository guidance with 0.4.0
aalsanie Oct 6, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion .github/ISSUE_TEMPLATE/bug.yml
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@ body:
id: version
attributes:
label: Codes version
placeholder: 0.3.0
placeholder: 0.4.0
validations:
required: true
- type: dropdown
Expand Down
8 changes: 5 additions & 3 deletions .github/ISSUE_TEMPLATE/feature.yml
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
name: Change request
description: Propose a core semantic, mapping, or integration change.
description: Propose a problem type or Spring integration change.
title: "request: "
labels: [enhancement]
body:
Expand All @@ -13,7 +13,7 @@ body:
- type: textarea
id: current
attributes:
label: Current integration
label: Current approach
description: Show how the problem is handled without the proposed change.
validations:
required: true
Expand All @@ -28,5 +28,7 @@ body:
attributes:
label: Contract impact
options:
- label: This changes the standard outcome catalog, state semantics, or a built-in mapping.
- label: This changes ProblemType validation or semantics.
- label: This changes the public Java API.
- label: This changes Spring ProblemDetail conversion behavior.
- label: This changes compatibility, dependency, or publication behavior.
136 changes: 100 additions & 36 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -13,27 +13,63 @@ concurrency:
cancel-in-progress: true

jobs:
matrix:
name: CI matrix policy
runs-on: ubuntu-latest
timeout-minutes: 5
outputs:
runtime_jdks: ${{ steps.matrix.outputs.runtime_jdks }}
kotlin: ${{ steps.matrix.outputs.kotlin }}
os: ${{ steps.matrix.outputs.os }}
steps:
- uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1
with:
persist-credentials: false

- name: Verify compatibility policy
run: python scripts/verify-compatibility-matrix.py

- id: matrix
name: Export required check matrices
shell: bash
run: |
python - <<'PY' >> "$GITHUB_OUTPUT"
import json
from pathlib import Path

matrix = json.loads(Path("compatibility/matrix.json").read_text(encoding="utf-8"))
compact = lambda value: json.dumps(value, separators=(",", ":"))

print("runtime_jdks=" + compact({
"java": [version for version in matrix["java"] if version != "17"]
}))
print("kotlin=" + compact({
"kotlin": matrix["kotlin"]["versions"]
}))
print("os=" + compact({
"os": matrix["os"]
}))
PY

verify:
needs: [matrix]
runs-on: ubuntu-latest
timeout-minutes: 30
steps:
- uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1
with:
persist-credentials: false

- name: Verify release promotion policy
run: python scripts/test-release-promotion-policy.py

- uses: actions/setup-java@03ad4de0992f5dab5e18fcb136590ce7c4a0ac95
with:
distribution: temurin
java-version: "17"

- uses: gradle/actions/setup-gradle@3f131e8634966bd73d06cc69884922b02e6faf92 # v6.2.0
- uses: gradle/actions/setup-gradle@3f131e8634966bd73d06cc69884922b02e6faf92
with:
cache-provider: basic

- name: Verify core, adapters, and references
- name: Verify library and reference application
run: ./gradlew clean verifyAll --stacktrace

- name: Publish clean compatibility artifacts
Expand All @@ -60,11 +96,7 @@ jobs:
run: |
set -euo pipefail
version="$(sh ./scripts/version.sh)"
mvn --batch-mode --no-transfer-progress \
"-Dmaven.repo.local=${GITHUB_WORKSPACE}/build/compatibility-maven" \
-f smoke-test-maven-java/pom.xml \
"-Dcodes.version=$version" \
clean verify
mvn --batch-mode --no-transfer-progress "-Dmaven.repo.local=${GITHUB_WORKSPACE}/build/compatibility-maven" -f smoke-test-maven-java/pom.xml "-Dcodes.version=$version" clean verify

- name: Verify Maven Kotlin consumer
env:
Expand All @@ -78,17 +110,16 @@ jobs:
path: |
build/reports/jacoco
codes-spring/build/reports/jacoco
codes-grpc-java/build/reports/jacoco
if-no-files-found: warn
retention-days: 14

kotlin-consumers:
needs: [matrix]
runs-on: ubuntu-latest
timeout-minutes: 25
strategy:
fail-fast: false
matrix:
kotlin: ["1.9.24", "2.0.21", "2.1.21", "2.2.20", "2.4.10"]
matrix: ${{ fromJSON(needs.matrix.outputs.kotlin) }}
steps:
- uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1
with:
Expand All @@ -99,42 +130,42 @@ jobs:
distribution: temurin
java-version: "17"

- uses: gradle/actions/setup-gradle@3f131e8634966bd73d06cc69884922b02e6faf92 # v6.2.0
- uses: gradle/actions/setup-gradle@3f131e8634966bd73d06cc69884922b02e6faf92
with:
cache-provider: basic

- name: Publish all artifacts locally
- name: Publish clean compatibility artifacts
run: sh scripts/prepare-compatibility-repository.sh build/compatibility-maven

- name: Verify Kotlin consumer
env:
MAVEN_REPO_LOCAL: ${{ github.workspace }}/build/compatibility-maven
run: sh ./scripts/verify-kotlin-nullability.sh "${{ matrix.kotlin }}"
run: sh scripts/verify-kotlin-nullability.sh "${{ matrix.kotlin }}"

kotlin-consumers-gate:
name: Kotlin consumers gate
if: always()
needs: [kotlin-consumers]
needs: [matrix, kotlin-consumers]
runs-on: ubuntu-latest
timeout-minutes: 5
steps:
- name: Verify Kotlin consumer matrix
env:
RESULT: ${{ needs.kotlin-consumers.result }}
- name: Require Kotlin consumer matrix
shell: bash
env:
MATRIX_RESULT: ${{ needs.matrix.result }}
KOTLIN_RESULT: ${{ needs.kotlin-consumers.result }}
run: |
if [ "$RESULT" != "success" ]; then
echo "Kotlin consumer matrix result: $RESULT"
exit 1
fi
set -euo pipefail
test "$MATRIX_RESULT" = "success"
test "$KOTLIN_RESULT" = "success"

runtime-jdks:
needs: [matrix]
runs-on: ubuntu-latest
timeout-minutes: 15
timeout-minutes: 20
strategy:
fail-fast: false
matrix:
java: ["21", "25"]
matrix: ${{ fromJSON(needs.matrix.outputs.runtime_jdks) }}
steps:
- uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1
with:
Expand All @@ -145,20 +176,29 @@ jobs:
distribution: temurin
java-version: ${{ matrix.java }}

- uses: gradle/actions/setup-gradle@3f131e8634966bd73d06cc69884922b02e6faf92 # v6.2.0
- uses: gradle/actions/setup-gradle@3f131e8634966bd73d06cc69884922b02e6faf92
with:
cache-provider: basic

- name: Test core on runtime JDK
run: ./gradlew :test --stacktrace
- name: Publish clean compatibility artifacts
run: sh scripts/prepare-compatibility-repository.sh build/compatibility-maven

- name: Verify Java consumer on runtime JDK
run: >-
./gradlew
-p smoke-test-java
-Dmaven.repo.local=${{ github.workspace }}/build/compatibility-maven
-PconsumerJavaVersion=${{ matrix.java }}
clean check
--stacktrace

operating-systems:
needs: [matrix]
runs-on: ${{ matrix.os }}
timeout-minutes: 25
timeout-minutes: 30
strategy:
fail-fast: false
matrix:
os: [windows-latest, macos-latest]
matrix: ${{ fromJSON(needs.matrix.outputs.os) }}
steps:
- uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1
with:
Expand All @@ -169,9 +209,33 @@ jobs:
distribution: temurin
java-version: "17"

- uses: gradle/actions/setup-gradle@3f131e8634966bd73d06cc69884922b02e6faf92 # v6.2.0
- uses: gradle/actions/setup-gradle@3f131e8634966bd73d06cc69884922b02e6faf92
with:
cache-provider: basic

- name: Test core and adapters
run: ./gradlew :test :codes-spring:test :codes-grpc-java:test --stacktrace
- name: Verify published consumers on Unix
if: runner.os != 'Windows'
shell: bash
run: |
set -euo pipefail
sh scripts/prepare-compatibility-repository.sh build/compatibility-maven

./gradlew -p smoke-test-java "-Dmaven.repo.local=${GITHUB_WORKSPACE}/build/compatibility-maven" clean check --stacktrace

./gradlew -p smoke-test-kotlin "-Dmaven.repo.local=${GITHUB_WORKSPACE}/build/compatibility-maven" clean check --stacktrace

- name: Verify published consumers on Windows
if: runner.os == 'Windows'
shell: pwsh
run: |
$ErrorActionPreference = "Stop"
$repo = Join-Path $env:GITHUB_WORKSPACE "build\compatibility-maven"

.\gradlew.bat "-Dmaven.repo.local=$repo" :publishToMavenLocal :codes-spring:publishToMavenLocal --stacktrace
if ($LASTEXITCODE -ne 0) { exit $LASTEXITCODE }

.\gradlew.bat -p smoke-test-java "-Dmaven.repo.local=$repo" clean check --stacktrace
if ($LASTEXITCODE -ne 0) { exit $LASTEXITCODE }

.\gradlew.bat -p smoke-test-kotlin "-Dmaven.repo.local=$repo" clean check --stacktrace
if ($LASTEXITCODE -ne 0) { exit $LASTEXITCODE }
4 changes: 1 addition & 3 deletions .github/workflows/codeql.yml
Original file line number Diff line number Diff line change
Expand Up @@ -29,7 +29,7 @@ jobs:
distribution: temurin
java-version: "17"

- uses: gradle/actions/setup-gradle@3f131e8634966bd73d06cc69884922b02e6faf92 # v6.2.0
- uses: gradle/actions/setup-gradle@3f131e8634966bd73d06cc69884922b02e6faf92
with:
cache-provider: basic

Expand All @@ -43,9 +43,7 @@ jobs:
./gradlew clean
:testClasses
:codes-spring:testClasses
:codes-grpc-java:testClasses
:reference-spring-orders:testClasses
:reference-grpc-orders:testClasses
--stacktrace

- uses: github/codeql-action/analyze@5595ccaf912efad79be6eef63a5619ff05969be3
Loading
Loading