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