Command: printf '%s\n' '--- baseline API entries ---'; grep 'dev.caskeleton.adapter.outbound.persistence.api' docs/architecture/jpa-api-surface.txt; printf '%s\n' '--- current API declarations ---'; python3 - <<'PY'
from pathlib import Path
import re
root=Path('src/adapter/outbound/persistence-jpa/src/main/java/dev/caskeleton/adapter/outbound/persistence/api')
for p in sorted(root.rglob('*.java')):
 t=p.read_text(); m=re.search(r'public\s+(?:final\s+)?(?:record|class|interface|enum)\s+(\w+)',t)
 if m:
  pkg=re.search(r'package\s+([^;]+);',t).group(1); print(pkg+'.'+m.group(1))
PY
printf '%s\n' '--- intended external statement ---'; sed -n '1,8p' docs/architecture/jpa-api-surface.txt
Working directory: /shared/codebase/clean-architecture-backend-template
Executed at: 2026-08-29T07:48:10Z
Source revision: a24ece9cf797f7ea647e33bf846b115208ed1ba5
Observation boundary: Compares the intended external api surface baseline with current public top-level api declarations and records named API/design references; it does not evaluate behavioral correctness of those types.
--- stdout/stderr ---
--- baseline API entries ---
dev.caskeleton.adapter.outbound.persistence.api.PersistenceOperationName
dev.caskeleton.adapter.outbound.persistence.api.capability.CapabilitySupport
dev.caskeleton.adapter.outbound.persistence.api.capability.JpaCapability
dev.caskeleton.adapter.outbound.persistence.api.capability.SupportLevel
dev.caskeleton.adapter.outbound.persistence.api.error.CheckConstraintViolationException
dev.caskeleton.adapter.outbound.persistence.api.error.ConnectionUnavailableException
dev.caskeleton.adapter.outbound.persistence.api.error.ConstraintCode
dev.caskeleton.adapter.outbound.persistence.api.error.ConstraintViolationDetails
dev.caskeleton.adapter.outbound.persistence.api.error.DataCorruptionException
dev.caskeleton.adapter.outbound.persistence.api.error.DeadlockDetectedException
dev.caskeleton.adapter.outbound.persistence.api.error.FailureCategory
dev.caskeleton.adapter.outbound.persistence.api.error.ForeignKeyViolationException
dev.caskeleton.adapter.outbound.persistence.api.error.JpaEntityNotFoundException
dev.caskeleton.adapter.outbound.persistence.api.error.JpaFailureContext
dev.caskeleton.adapter.outbound.persistence.api.error.JpaPersistenceException
dev.caskeleton.adapter.outbound.persistence.api.error.NotNullConstraintViolationException
dev.caskeleton.adapter.outbound.persistence.api.error.OptimisticConflictException
dev.caskeleton.adapter.outbound.persistence.api.error.PessimisticLockTimeoutException
dev.caskeleton.adapter.outbound.persistence.api.error.QueryTimeoutException
dev.caskeleton.adapter.outbound.persistence.api.error.SchemaMismatchException
dev.caskeleton.adapter.outbound.persistence.api.error.SerializationFailureException
dev.caskeleton.adapter.outbound.persistence.api.error.SqlExceptionSqlStateResolver
dev.caskeleton.adapter.outbound.persistence.api.error.SqlStateResolver
dev.caskeleton.adapter.outbound.persistence.api.error.TransactionCompletionUnknownException
dev.caskeleton.adapter.outbound.persistence.api.error.TransactionTimeoutException
dev.caskeleton.adapter.outbound.persistence.api.error.UniqueConstraintViolationException
dev.caskeleton.adapter.outbound.persistence.api.error.VendorFailureTranslator
dev.caskeleton.adapter.outbound.persistence.api.query.CursorCodec
dev.caskeleton.adapter.outbound.persistence.api.query.CursorPayloadCodec
dev.caskeleton.adapter.outbound.persistence.api.query.KeysetPageRequest
dev.caskeleton.adapter.outbound.persistence.api.query.KeysetSlice
dev.caskeleton.adapter.outbound.persistence.api.query.NoopQueryObservation
dev.caskeleton.adapter.outbound.persistence.api.query.QueryName
dev.caskeleton.adapter.outbound.persistence.api.query.QueryObservation
dev.caskeleton.adapter.outbound.persistence.api.query.QueryScope
dev.caskeleton.adapter.outbound.persistence.api.query.SignedJsonCursorCodec
dev.caskeleton.adapter.outbound.persistence.api.query.SortDirection
dev.caskeleton.adapter.outbound.persistence.api.transaction.IsolationLevel
dev.caskeleton.adapter.outbound.persistence.api.transaction.JitterMode
dev.caskeleton.adapter.outbound.persistence.api.transaction.JpaRetryPolicy
dev.caskeleton.adapter.outbound.persistence.api.transaction.JpaTransactionExecutor
dev.caskeleton.adapter.outbound.persistence.api.transaction.PropagationMode
dev.caskeleton.adapter.outbound.persistence.api.transaction.RetryDecision
dev.caskeleton.adapter.outbound.persistence.api.transaction.RetryDisposition
dev.caskeleton.adapter.outbound.persistence.api.transaction.RetryEventListener
dev.caskeleton.adapter.outbound.persistence.api.transaction.RetryProfile
dev.caskeleton.adapter.outbound.persistence.api.transaction.TransactionAttempt
dev.caskeleton.adapter.outbound.persistence.api.transaction.TransactionCompletionEvidence
dev.caskeleton.adapter.outbound.persistence.api.transaction.TransactionProfile
--- current API declarations ---
dev.caskeleton.adapter.outbound.persistence.api.PersistenceOperationName
dev.caskeleton.adapter.outbound.persistence.api.capability.CapabilitySupport
dev.caskeleton.adapter.outbound.persistence.api.capability.JpaCapability
dev.caskeleton.adapter.outbound.persistence.api.capability.SupportLevel
dev.caskeleton.adapter.outbound.persistence.api.error.CheckConstraintViolationException
dev.caskeleton.adapter.outbound.persistence.api.error.ConnectionUnavailableException
dev.caskeleton.adapter.outbound.persistence.api.error.ConstraintCode
dev.caskeleton.adapter.outbound.persistence.api.error.ConstraintViolationDetails
dev.caskeleton.adapter.outbound.persistence.api.error.DataCorruptionException
dev.caskeleton.adapter.outbound.persistence.api.error.DeadlockDetectedException
dev.caskeleton.adapter.outbound.persistence.api.error.FailureCategory
dev.caskeleton.adapter.outbound.persistence.api.error.ForeignKeyViolationException
dev.caskeleton.adapter.outbound.persistence.api.error.JpaEntityNotFoundException
dev.caskeleton.adapter.outbound.persistence.api.error.JpaFailureContext
dev.caskeleton.adapter.outbound.persistence.api.error.JpaPersistenceException
dev.caskeleton.adapter.outbound.persistence.api.error.NotNullConstraintViolationException
dev.caskeleton.adapter.outbound.persistence.api.error.OptimisticConflictException
dev.caskeleton.adapter.outbound.persistence.api.error.PessimisticLockTimeoutException
dev.caskeleton.adapter.outbound.persistence.api.error.QueryTimeoutException
dev.caskeleton.adapter.outbound.persistence.api.error.SchemaMismatchException
dev.caskeleton.adapter.outbound.persistence.api.error.SerializationFailureException
dev.caskeleton.adapter.outbound.persistence.api.error.SqlExceptionSqlStateResolver
dev.caskeleton.adapter.outbound.persistence.api.error.SqlStateResolver
dev.caskeleton.adapter.outbound.persistence.api.error.TransactionCompletionUnknownException
dev.caskeleton.adapter.outbound.persistence.api.error.TransactionTimeoutException
dev.caskeleton.adapter.outbound.persistence.api.error.UniqueConstraintViolationException
dev.caskeleton.adapter.outbound.persistence.api.error.VendorFailureTranslator
dev.caskeleton.adapter.outbound.persistence.api.query.CursorCodec
dev.caskeleton.adapter.outbound.persistence.api.query.CursorPayloadCodec
dev.caskeleton.adapter.outbound.persistence.api.query.KeysetPageRequest
dev.caskeleton.adapter.outbound.persistence.api.query.KeysetSlice
dev.caskeleton.adapter.outbound.persistence.api.query.NoopQueryObservation
dev.caskeleton.adapter.outbound.persistence.api.query.QueryName
dev.caskeleton.adapter.outbound.persistence.api.query.QueryObservation
dev.caskeleton.adapter.outbound.persistence.api.query.QueryScope
dev.caskeleton.adapter.outbound.persistence.api.query.SignedJsonCursorCodec
dev.caskeleton.adapter.outbound.persistence.api.query.SortDirection
dev.caskeleton.adapter.outbound.persistence.api.transaction.IsolationLevel
dev.caskeleton.adapter.outbound.persistence.api.transaction.JitterMode
dev.caskeleton.adapter.outbound.persistence.api.transaction.JpaRetryPolicy
dev.caskeleton.adapter.outbound.persistence.api.transaction.JpaTransactionExecutor
dev.caskeleton.adapter.outbound.persistence.api.transaction.PropagationMode
dev.caskeleton.adapter.outbound.persistence.api.transaction.RetryDecision
dev.caskeleton.adapter.outbound.persistence.api.transaction.RetryDisposition
dev.caskeleton.adapter.outbound.persistence.api.transaction.RetryEventListener
dev.caskeleton.adapter.outbound.persistence.api.transaction.RetryProfile
dev.caskeleton.adapter.outbound.persistence.api.transaction.TransactionAttempt
dev.caskeleton.adapter.outbound.persistence.api.transaction.TransactionCompletionEvidence
dev.caskeleton.adapter.outbound.persistence.api.transaction.TransactionProfile
--- intended external statement ---
# JPA persistence leaf public API surface — every public top-level type in src/main/java.
# A public type in a single-jar leaf is reachable from every adopter's code, so
# additions are reviewed rather than discovered. `api` is the intended external
# surface; the rest is implementation that has not been moved under an internal
# root yet.
# Update only after review with:
#   ./gradlew :adapter:outbound:persistence-jpa:updateJpaApiSurface -PapproveJpaApiSurfaceChange
# types: 338

Exit code: 0
