Files
document-haness/docs/clean-architecture-backend-template/final/evidence/raw/064-postgresql-vendor-manifest-reachability.txt
T
DongHyeonkaandClaude Opus 5 b2963105a8 docs(keycloak-session-store): import the session-storage lab as a new project
The keycloak project ended with four open questions that design could not
settle. A two-VM lab was built to answer them by measurement, and this is
that material: 26 experiments, 125 raw command outputs, 22 browser captures.

Follows the import procedure in README.md.

  source/     the originating repository verbatim — 78 documents, 28 SVGs,
              8 manifests, plus .source-revision recording the commit
  final/      the SSOT
    document.md   729 lines written from the 29 experiment documents, not
                  concatenated: what was predicted, what was measured, and
                  where the measurement itself was wrong
    evidence/raw    125 outputs, flattened to <experiment>__<file> because
                    the originals collided (01-baseline.txt appeared three
                    times) and the audit only globs the top level
    evidence/meta   one per raw file; command and exitCode are null and the
                    README says why rather than inventing them
    evidence/browser  22 captures
    assets/       three diagrams through techviz
    .techviz/     their VizSpecs

A separate project rather than an addition to keycloak: the B-layer answers
that project's four questions, but the A, C and D layers are about cluster
failure, SSO and operations, and one document.md should hold one subject.
The four question records there can point here through 관계.

Recorded rather than papered over: only three of the 28 diagrams were
remade. The repository forbids hand-drawn SVG and forbids titles inside the
canvas; all 28 originals carry both, so converting them is redrawing, not
reformatting. They stay in source/ and the gap is written into the document.

verify-pipeline.py passes. audit-records.py reports no issues.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-09-04 22:51:59 +09:00

110 lines
17 KiB
Plaintext

Command: current PostgreSQL vendor denominator/blob/reachability snapshot
Working directory: /shared/codebase/clean-architecture-backend-template
Executed at: 2026-08-29T08:41:14Z
Source revision: a24ece9cf797f7ea647e33bf846b115208ed1ba5
Observation boundary: 55 production Java + 9 dedicated unit Java + 9 vendor SQL migrations; static production reachability does not prove reflection/external consumers.
--- stdout/stderr ---
src/main/java/dev/caskeleton/adapter/outbound/persistence/postgresql files= 55 java= 55 sql= 0
src/test/java/dev/caskeleton/adapter/outbound/persistence/postgresql files= 9 java= 9 sql= 0
src/main/resources/db/migration/postgresql files= 9 java= 0 sql= 9
=== tracked blobs ===
e210c55ff2fc7104baafb410518f00d87ff61992 src/adapter/outbound/persistence-jpa/src/main/java/dev/caskeleton/adapter/outbound/persistence/postgresql/PostgreSqlIdempotencyClaimRepository.java
31a15ceab20d3f917f2245528622d767890c5fa7 src/adapter/outbound/persistence-jpa/src/main/java/dev/caskeleton/adapter/outbound/persistence/postgresql/PostgreSqlLocalTimeoutConfigurer.java
7ccf5807823732f307b4b78c182464d39a1ab3b0 src/adapter/outbound/persistence-jpa/src/main/java/dev/caskeleton/adapter/outbound/persistence/postgresql/PostgreSqlOutboxClaimRepository.java
a8d4f2ff53969521d8ab421d9e4199479c8c83a7 src/adapter/outbound/persistence-jpa/src/main/java/dev/caskeleton/adapter/outbound/persistence/postgresql/PostgreSqlPersistenceConfig.java
f44cea4ab24938198ebd20fc6df25518cf167621 src/adapter/outbound/persistence-jpa/src/main/java/dev/caskeleton/adapter/outbound/persistence/postgresql/PostgreSqlSqlStateErrorMapping.java
1921e42c5540fc320be91ed71e34d1e292cfca2a src/adapter/outbound/persistence-jpa/src/main/java/dev/caskeleton/adapter/outbound/persistence/postgresql/array/PostgreSqlArraySupport.java
ab72eea155bd448f8256d41f2a4647b405f05394 src/adapter/outbound/persistence-jpa/src/main/java/dev/caskeleton/adapter/outbound/persistence/postgresql/constraint/PostgreSqlConstraintCatalog.java
93d5ee3a7fb1dae72ce2404a3435f7402784ebc4 src/adapter/outbound/persistence-jpa/src/main/java/dev/caskeleton/adapter/outbound/persistence/postgresql/constraint/PostgreSqlConstraintViolationTranslator.java
0c58eb0767e9b41edb060e0073bf7fb75006d118 src/adapter/outbound/persistence-jpa/src/main/java/dev/caskeleton/adapter/outbound/persistence/postgresql/copy/BoundedCopyInputStream.java
4281c693611a6e2f96ce4b5f8943dfbc2556b086 src/adapter/outbound/persistence-jpa/src/main/java/dev/caskeleton/adapter/outbound/persistence/postgresql/copy/CopyAdminCapability.java
9e9a897662c5aec230a8e2887d8101265ee32a1c src/adapter/outbound/persistence-jpa/src/main/java/dev/caskeleton/adapter/outbound/persistence/postgresql/copy/CopyFormat.java
e0ca01fceacf915699de854fc425cc2dd5efc45c src/adapter/outbound/persistence-jpa/src/main/java/dev/caskeleton/adapter/outbound/persistence/postgresql/copy/CopyLimits.java
103ed96e08bcafbaddf98cfe13f24d7e0abde162 src/adapter/outbound/persistence-jpa/src/main/java/dev/caskeleton/adapter/outbound/persistence/postgresql/copy/CopyOperationName.java
b1bd50a35d9f99d7dc5b6ec3c51c1e0e573b1650 src/adapter/outbound/persistence-jpa/src/main/java/dev/caskeleton/adapter/outbound/persistence/postgresql/copy/CopyResult.java
79faba1dfaf12885740a5d3739295020ec38e024 src/adapter/outbound/persistence-jpa/src/main/java/dev/caskeleton/adapter/outbound/persistence/postgresql/copy/PostgreSqlCopyLoader.java
caca77feff6b5a2ac3a4d478e42989525c2b4185 src/adapter/outbound/persistence-jpa/src/main/java/dev/caskeleton/adapter/outbound/persistence/postgresql/copy/RegisteredCopyStatement.java
fa83d4d721b0875bfb5b904ae010d99d79c660a2 src/adapter/outbound/persistence-jpa/src/main/java/dev/caskeleton/adapter/outbound/persistence/postgresql/copy/RegisteredPostgreSqlCopyLoader.java
ca9bfd8ff01dbec0a50c6126a21b70047646e230 src/adapter/outbound/persistence-jpa/src/main/java/dev/caskeleton/adapter/outbound/persistence/postgresql/error/ConstraintCatalog.java
af979cf3dda8e13050c2298cb64986edd16524eb src/adapter/outbound/persistence-jpa/src/main/java/dev/caskeleton/adapter/outbound/persistence/postgresql/error/PostgreSqlExceptionTranslator.java
24afb0af6c08d914549210af1e5f8ef25ab0dd80 src/adapter/outbound/persistence-jpa/src/main/java/dev/caskeleton/adapter/outbound/persistence/postgresql/error/PostgreSqlFailureClassifier.java
bc1e253f5f3ab3799c3320d05d1dee43d89b4d12 src/adapter/outbound/persistence-jpa/src/main/java/dev/caskeleton/adapter/outbound/persistence/postgresql/error/PostgreSqlServerErrorFields.java
74675093b7635518e9416b170103cc84e5cfa58d src/adapter/outbound/persistence-jpa/src/main/java/dev/caskeleton/adapter/outbound/persistence/postgresql/error/PostgreSqlState.java
f574bd966aaa62b393ef67b365a832d300d55efc src/adapter/outbound/persistence-jpa/src/main/java/dev/caskeleton/adapter/outbound/persistence/postgresql/idempotency/IdempotencyCapabilityGuard.java
99688068acee94501b7ebbf4ecf1a9d67dc66018 src/adapter/outbound/persistence-jpa/src/main/java/dev/caskeleton/adapter/outbound/persistence/postgresql/idempotency/IdempotencyClaimGateway.java
f1c5a225ae14283e4d0063372328fac53563d6df src/adapter/outbound/persistence-jpa/src/main/java/dev/caskeleton/adapter/outbound/persistence/postgresql/idempotency/IdempotencyDigestPolicy.java
b7409d07805e4fc59f831df1109a1f4fd2eeed6c src/adapter/outbound/persistence-jpa/src/main/java/dev/caskeleton/adapter/outbound/persistence/postgresql/idempotency/IdempotencyRecordRow.java
d4d24a87f6c22e00d3050648914fc2f5d64aa33d src/adapter/outbound/persistence-jpa/src/main/java/dev/caskeleton/adapter/outbound/persistence/postgresql/idempotency/IdempotencyRowMapper.java
07571331ec0ba0f07661188404b56613e39d577c src/adapter/outbound/persistence-jpa/src/main/java/dev/caskeleton/adapter/outbound/persistence/postgresql/idempotency/IdempotencyTransitionGateway.java
dad9804ef50eb85adb15005dffeb659443696056 src/adapter/outbound/persistence-jpa/src/main/java/dev/caskeleton/adapter/outbound/persistence/postgresql/idempotency/PostgreSqlOwnerSafeIdempotencyStore.java
13986367170c46671dfd5359ad26cee6681eeca2 src/adapter/outbound/persistence-jpa/src/main/java/dev/caskeleton/adapter/outbound/persistence/postgresql/inbox/PostgreSqlSameStoreInboxAdapter.java
83f4f8f808166ee38641af73750b9494940d0469 src/adapter/outbound/persistence-jpa/src/main/java/dev/caskeleton/adapter/outbound/persistence/postgresql/json/JsonDocument.java
f4b157f1754ec7d83b01ef0f10959ace5587ac03 src/adapter/outbound/persistence-jpa/src/main/java/dev/caskeleton/adapter/outbound/persistence/postgresql/json/JsonDocumentCodec.java
4c5784b9fb827c101d513856309ac8116028edde src/adapter/outbound/persistence-jpa/src/main/java/dev/caskeleton/adapter/outbound/persistence/postgresql/json/JsonPathName.java
f19caae234b6c4207a1e1720ed2bd1f439b0379a src/adapter/outbound/persistence-jpa/src/main/java/dev/caskeleton/adapter/outbound/persistence/postgresql/json/PostgreSqlJsonQuerySupport.java
d4844280cebcf21136bd73ff0ef05f1610c1df93 src/adapter/outbound/persistence-jpa/src/main/java/dev/caskeleton/adapter/outbound/persistence/postgresql/lock/LockWaitObservation.java
56e76d1578fbec8c5610488cbbe391a45898f0e9 src/adapter/outbound/persistence-jpa/src/main/java/dev/caskeleton/adapter/outbound/persistence/postgresql/lock/PostgreSqlLockExceptionTranslator.java
1494b12062d5196956a2b5326c99c318f1837eab src/adapter/outbound/persistence-jpa/src/main/java/dev/caskeleton/adapter/outbound/persistence/postgresql/lock/PostgreSqlLockOptions.java
b123cbfcf55988d84073f2c0e3e5a46a6fe191b7 src/adapter/outbound/persistence-jpa/src/main/java/dev/caskeleton/adapter/outbound/persistence/postgresql/lock/PostgreSqlWorkClaimExecutor.java
43939171c67bd9aab00fbdff8851eeda5a054e1a src/adapter/outbound/persistence-jpa/src/main/java/dev/caskeleton/adapter/outbound/persistence/postgresql/lock/WorkClaim.java
d0b0de2159adf2cdb64b38659b2e38b135b7995f src/adapter/outbound/persistence-jpa/src/main/java/dev/caskeleton/adapter/outbound/persistence/postgresql/lock/WorkClaimExecutor.java
6fbd709b5fd83a86116550340e9916dd9d1cb92e src/adapter/outbound/persistence-jpa/src/main/java/dev/caskeleton/adapter/outbound/persistence/postgresql/lock/WorkQueueDefinition.java
bbebbb03d6a8bd188914512b294c99ec9c35ec16 src/adapter/outbound/persistence-jpa/src/main/java/dev/caskeleton/adapter/outbound/persistence/postgresql/lock/WorkQueueName.java
6ad95156dca8483bf6466791cbb3cd707f3a53dc src/adapter/outbound/persistence-jpa/src/main/java/dev/caskeleton/adapter/outbound/persistence/postgresql/outbox/PostgreSqlImmutableOutboxAppendAdapter.java
fef15d75ab780049138215967704e2f4951130ec src/adapter/outbound/persistence-jpa/src/main/java/dev/caskeleton/adapter/outbound/persistence/postgresql/outbox/PostgreSqlPollingDeliveryAdapter.java
501432fcd4eb03a3fc3e378326ffd36b3858bda9 src/adapter/outbound/persistence-jpa/src/main/java/dev/caskeleton/adapter/outbound/persistence/postgresql/range/PgRange.java
010a9cf71a3b058799e543abf87c40357211b864 src/adapter/outbound/persistence-jpa/src/main/java/dev/caskeleton/adapter/outbound/persistence/postgresql/range/PgRangeCodec.java
a8b05b0349b6bb3f123ab7eb202b13c1a2d66349 src/adapter/outbound/persistence-jpa/src/main/java/dev/caskeleton/adapter/outbound/persistence/postgresql/range/PgRangeJdbcType.java
84dbb0b9bca3d00a730b8c9929112716e5df1e75 src/adapter/outbound/persistence-jpa/src/main/java/dev/caskeleton/adapter/outbound/persistence/postgresql/range/PostgreSqlRangeQuerySupport.java
4497dd0e3a9ac6b151692796328cac187ed27989 src/adapter/outbound/persistence-jpa/src/main/java/dev/caskeleton/adapter/outbound/persistence/postgresql/write/NativeWriteName.java
d31c9342970bdb681916da3cfe334b08ae5afda1 src/adapter/outbound/persistence-jpa/src/main/java/dev/caskeleton/adapter/outbound/persistence/postgresql/write/PostgreSqlUpsertExecutor.java
145baeaaaf124ee84d4d543bf525e68a07d49422 src/adapter/outbound/persistence-jpa/src/main/java/dev/caskeleton/adapter/outbound/persistence/postgresql/write/RegisteredPostgreSqlUpsertExecutor.java
b307afb6da93242a22963aab4ffed159f4990e26 src/adapter/outbound/persistence-jpa/src/main/java/dev/caskeleton/adapter/outbound/persistence/postgresql/write/RegisteredUpsertStatement.java
b58a3688d624fc11d1cf835d58f9bc9a43025b8c src/adapter/outbound/persistence-jpa/src/main/java/dev/caskeleton/adapter/outbound/persistence/postgresql/write/UpsertConflictTarget.java
7ed6a25ba22e71487893f8c71176aee8c7950084 src/adapter/outbound/persistence-jpa/src/main/java/dev/caskeleton/adapter/outbound/persistence/postgresql/write/UpsertResult.java
daf7e6191903183de0105396919dd9ae459278b2 src/adapter/outbound/persistence-jpa/src/main/java/dev/caskeleton/adapter/outbound/persistence/postgresql/write/WriteDisposition.java
5c00fe377d8dd53bd63d0f65945fcbaa332c5ab1 src/adapter/outbound/persistence-jpa/src/main/resources/db/migration/postgresql/V10__idempotency_request_hash_varchar.sql
a2058af000d86b2d5161b4dc271492d4912e9e13 src/adapter/outbound/persistence-jpa/src/main/resources/db/migration/postgresql/V11__durable_operation.sql
9f3a4b53f07839e96b8f22a8a05c6080d9ebc4b7 src/adapter/outbound/persistence-jpa/src/main/resources/db/migration/postgresql/V12__live_event_log.sql
5976eeae3efedaa7d1cd81c7ea350f2bffc02741 src/adapter/outbound/persistence-jpa/src/main/resources/db/migration/postgresql/V1__idempotency_record.sql
c35fd5b60340a3add2badb4d11a9d18e9df4323e src/adapter/outbound/persistence-jpa/src/main/resources/db/migration/postgresql/V3__outbox_event.sql
c24dea51d458bb69ef0d93b52d0c90dcf5901eb3 src/adapter/outbound/persistence-jpa/src/main/resources/db/migration/postgresql/V4__int_lock.sql
0901128b59aa9dd6c3731e0a5a1660b589bd0724 src/adapter/outbound/persistence-jpa/src/main/resources/db/migration/postgresql/V5__int_lock_expired_after.sql
c72e38025f312565542199eebd99013197e194d5 src/adapter/outbound/persistence-jpa/src/main/resources/db/migration/postgresql/V6__capability_schema_registry_adoption.sql
22e1e0e7b5c3dbc51d1af4aed6a9f93f444307c3 src/adapter/outbound/persistence-jpa/src/main/resources/db/migration/postgresql/V9__widen_capability_schema_stream.sql
ab1792e640935b97872387f60c37d0ff1e67ccc3 src/adapter/outbound/persistence-jpa/src/test/java/dev/caskeleton/adapter/outbound/persistence/postgresql/PostgreSqlLocalTimeoutConfigurerTest.java
d81b2f3a90c20bec84ab8036716126d72a5a58d8 src/adapter/outbound/persistence-jpa/src/test/java/dev/caskeleton/adapter/outbound/persistence/postgresql/PostgreSqlSqlStateErrorMappingTest.java
f56a0ea4ca19b6baa1fa3223f72521346be3e7c9 src/adapter/outbound/persistence-jpa/src/test/java/dev/caskeleton/adapter/outbound/persistence/postgresql/PostgreSqlVendorFailureTranslatorRegistrationTest.java
aa73ae39894fda06274357dafb9dec4357494bf4 src/adapter/outbound/persistence-jpa/src/test/java/dev/caskeleton/adapter/outbound/persistence/postgresql/constraint/PostgreSqlConstraintCatalogTest.java
cf49c214796b840914d15ef7eb55ad44c293d07a src/adapter/outbound/persistence-jpa/src/test/java/dev/caskeleton/adapter/outbound/persistence/postgresql/error/PostgreSqlFailureClassifierTest.java
b1d4eb97523b66b04f78d8ab225d3ef9d76f3e13 src/adapter/outbound/persistence-jpa/src/test/java/dev/caskeleton/adapter/outbound/persistence/postgresql/idempotency/IdempotencyDigestPolicyTest.java
02427be4d365aa6ab9dcdf4160a978f33cbcf172 src/adapter/outbound/persistence-jpa/src/test/java/dev/caskeleton/adapter/outbound/persistence/postgresql/idempotency/OwnerSafeIdempotencyPreconditionTest.java
e1839ffd13c95bbe65d1ac950e1ed751ded6b80c src/adapter/outbound/persistence-jpa/src/test/java/dev/caskeleton/adapter/outbound/persistence/postgresql/lock/PostgreSqlLockOptionsTest.java
4059e40802a63d2577c75b78407f4609cc70e98e src/adapter/outbound/persistence-jpa/src/test/java/dev/caskeleton/adapter/outbound/persistence/postgresql/range/PgRangeTest.java
=== key production construction ===
--- PostgreSqlOwnerSafeIdempotencyStore
src/adapter/outbound/persistence-jpa/src/main/java/dev/caskeleton/adapter/outbound/persistence/postgresql/idempotency/PostgreSqlOwnerSafeIdempotencyStore.java:61:public class PostgreSqlOwnerSafeIdempotencyStore implements IdempotencyStorePortV2 {
src/adapter/outbound/persistence-jpa/src/main/java/dev/caskeleton/adapter/outbound/persistence/postgresql/idempotency/PostgreSqlOwnerSafeIdempotencyStore.java:84: public PostgreSqlOwnerSafeIdempotencyStore(JdbcOperations jdbc) {
src/adapter/outbound/persistence-jpa/src/main/java/dev/caskeleton/adapter/outbound/persistence/postgresql/idempotency/PostgreSqlOwnerSafeIdempotencyStore.java:88: PostgreSqlOwnerSafeIdempotencyStore(JdbcOperations jdbc, SecureRandom secureRandom) {
src/app-bootstrap/src/main/java/dev/caskeleton/bootstrap/idempotency/PostgreSqlIdempotencyProviderConfig.java:3:import dev.caskeleton.adapter.outbound.persistence.postgresql.idempotency.PostgreSqlOwnerSafeIdempotencyStore;
src/app-bootstrap/src/main/java/dev/caskeleton/bootstrap/idempotency/PostgreSqlIdempotencyProviderConfig.java:60: return new PostgreSqlOwnerSafeIdempotencyStore(jdbc);
--- PostgreSqlSameStoreInboxAdapter
src/adapter/outbound/persistence-jpa/src/main/java/dev/caskeleton/adapter/outbound/persistence/postgresql/inbox/PostgreSqlSameStoreInboxAdapter.java:49:public class PostgreSqlSameStoreInboxAdapter implements InboxStorePort {
src/adapter/outbound/persistence-jpa/src/main/java/dev/caskeleton/adapter/outbound/persistence/postgresql/inbox/PostgreSqlSameStoreInboxAdapter.java:204: public PostgreSqlSameStoreInboxAdapter(DataSource dataSource) {
src/adapter/outbound/persistence-jpa/src/main/java/dev/caskeleton/adapter/outbound/persistence/postgresql/inbox/PostgreSqlSameStoreInboxAdapter.java:208: PostgreSqlSameStoreInboxAdapter(
--- PostgreSqlPollingDeliveryAdapter
src/adapter/outbound/persistence-jpa/src/main/java/dev/caskeleton/adapter/outbound/persistence/postgresql/outbox/PostgreSqlPollingDeliveryAdapter.java:44:public class PostgreSqlPollingDeliveryAdapter implements OutboxPollingDeliveryPortV2 {
src/adapter/outbound/persistence-jpa/src/main/java/dev/caskeleton/adapter/outbound/persistence/postgresql/outbox/PostgreSqlPollingDeliveryAdapter.java:285: public PostgreSqlPollingDeliveryAdapter(DataSource dataSource) {
src/adapter/outbound/persistence-jpa/src/main/java/dev/caskeleton/adapter/outbound/persistence/postgresql/outbox/PostgreSqlPollingDeliveryAdapter.java:289: PostgreSqlPollingDeliveryAdapter(
--- PostgreSqlImmutableOutboxAppendAdapter
src/adapter/outbound/persistence-jpa/src/main/java/dev/caskeleton/adapter/outbound/persistence/postgresql/outbox/PostgreSqlImmutableOutboxAppendAdapter.java:45:public class PostgreSqlImmutableOutboxAppendAdapter implements OutboxAppendPortV2 {
src/adapter/outbound/persistence-jpa/src/main/java/dev/caskeleton/adapter/outbound/persistence/postgresql/outbox/PostgreSqlImmutableOutboxAppendAdapter.java:153: public PostgreSqlImmutableOutboxAppendAdapter(DataSource dataSource) {
src/adapter/outbound/persistence-jpa/src/main/java/dev/caskeleton/adapter/outbound/persistence/postgresql/outbox/PostgreSqlImmutableOutboxAppendAdapter.java:157: PostgreSqlImmutableOutboxAppendAdapter(DataSource dataSource, JdbcOperations jdbc) {
--- RegisteredPostgreSqlCopyLoader
src/adapter/outbound/persistence-jpa/src/main/java/dev/caskeleton/adapter/outbound/persistence/postgresql/copy/RegisteredPostgreSqlCopyLoader.java:30:public final class RegisteredPostgreSqlCopyLoader implements PostgreSqlCopyLoader {
src/adapter/outbound/persistence-jpa/src/main/java/dev/caskeleton/adapter/outbound/persistence/postgresql/copy/RegisteredPostgreSqlCopyLoader.java:41: public RegisteredPostgreSqlCopyLoader(
=== current git ===
a24ece9cf797f7ea647e33bf846b115208ed1ba5
Exit code: 0