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>
280 lines
10 KiB
JSON
280 lines
10 KiB
JSON
{
|
|
"schemaVersion": 1,
|
|
"project": "clean-architecture-backend-template",
|
|
"generatedAt": "2026-09-01T04:39:53.898008+00:00",
|
|
"sources": [
|
|
{
|
|
"path": "final/document.md",
|
|
"sha256": "880d3a4a7dba4f6303ff69be9475190b62f2a9d03b7794482b900457ee045ad6"
|
|
},
|
|
{
|
|
"path": "source-index.md",
|
|
"sha256": "946eea850acdb00396c85a78378d744ac95f7f53f719ff7746ecc8d69eb71a63"
|
|
},
|
|
{
|
|
"path": "analysis/00-project-overview.md",
|
|
"sha256": "150ad7e873d9c502941d4cac2d25d7f8de1719db373cfab8f2727819f9a61f9f"
|
|
},
|
|
{
|
|
"path": "analysis/01-domain-core.md",
|
|
"sha256": "059922e45700c04fd322d9f14cfa5a62338a503ef9d098d125849e0b25a9ea57"
|
|
},
|
|
{
|
|
"path": "analysis/02-shared-contract.md",
|
|
"sha256": "3c86063c4d4564e41b30613cbcb8f14c31b8ba803d4332c8b35c76f2f9f55495"
|
|
},
|
|
{
|
|
"path": "analysis/03-application-core.md",
|
|
"sha256": "f6341fd6d57fb273a2baa4cf0c9f5c0b49c454d76c494a167d025d5b212e4103"
|
|
},
|
|
{
|
|
"path": "analysis/04-adapter-outbound-support.md",
|
|
"sha256": "dea34bd0669b98dbd20ad5bb1811d15f312f075a767c5ff05676f8763fc7f93d"
|
|
},
|
|
{
|
|
"path": "analysis/05-adapter-outbound-persistence-jpa.md",
|
|
"sha256": "09ccc2046a70c2f5e49bc5766896fa61a80797d2e0f5b682f27f684adb06d45b"
|
|
},
|
|
{
|
|
"path": "analysis/06-adapter-outbound-persistence-mongo.md",
|
|
"sha256": "74a12d2b821f5653d0746b9233350a87b1849af0573c90405bf0a188f5322ffa"
|
|
},
|
|
{
|
|
"path": "analysis/07-adapter-outbound-identifier.md",
|
|
"sha256": "5943bdd890226be6e7549020228aca6b22f3572b31dbd96d5dd786f75f4d5b62"
|
|
},
|
|
{
|
|
"path": "analysis/08-adapter-outbound-fileserver.md",
|
|
"sha256": "ccb06eb97499c4dad3e8f2fc7ebb15ff35305116e7112af6ca4686851104ab25"
|
|
},
|
|
{
|
|
"path": "analysis/09-adapter-outbound-objectstorage.md",
|
|
"sha256": "e4b763a4a8e75b365ec660e88c47bed543c9dbaacc08d1d9e9bc09dad392e6f9"
|
|
},
|
|
{
|
|
"path": "analysis/10-adapter-outbound-cache-redis.md",
|
|
"sha256": "12e3738bc83626a3399bcf662ab5132db3ef56d91afbd36aaf8790ed2c940805"
|
|
},
|
|
{
|
|
"path": "analysis/11-adapter-outbound-httpclient.md",
|
|
"sha256": "704b7f71237819840850018491c625bb57f9f9de39c95e37be0ba53dae7647c7"
|
|
},
|
|
{
|
|
"path": "analysis/12-adapter-outbound-messaging.md",
|
|
"sha256": "135ba01cec71edcf1834451b941f11df23ea90e09b59bbdb4f035316aada7e5b"
|
|
},
|
|
{
|
|
"path": "analysis/13-adapter-outbound-notification.md",
|
|
"sha256": "bcd08c2faf37cba55da64c08a56d931261fad4bce941b45b1d5234ec24e24aa9"
|
|
},
|
|
{
|
|
"path": "analysis/14-adapter-inbound-web.md",
|
|
"sha256": "ff7af2b630184bbb0edc3948576fedbae6f19faecc3b7b3d46d80cc4cc00dbb5"
|
|
},
|
|
{
|
|
"path": "analysis/15-adapter-inbound-grpc.md",
|
|
"sha256": "d2f606133990440249ca1fdf8562338dd53dc04630f2a734a5fb4588a413a97d"
|
|
},
|
|
{
|
|
"path": "analysis/16-adapter-inbound-graphql.md",
|
|
"sha256": "2a451a4fd7d6e1bf9be0322e885843e23132ae73e54783b918eedb8b71df80a6"
|
|
},
|
|
{
|
|
"path": "analysis/17-adapter-inbound-websocket.md",
|
|
"sha256": "6a538e1aba77d066d29a48405c8b008162e67211c3546e9294a52ae9dfec3973"
|
|
},
|
|
{
|
|
"path": "analysis/18-app-bootstrap.md",
|
|
"sha256": "2291661392b566f6fc4dd92e392a88729cd9d4f48237b1743103c5f771ecb349"
|
|
},
|
|
{
|
|
"path": "analysis/19-messaging-platform.md",
|
|
"sha256": "a1f248c43efe3c72a8ab339051e6f0811bed4ecd0532d86907c5ec0cf3fd62c4"
|
|
},
|
|
{
|
|
"path": "analysis/20-grpc-platform.md",
|
|
"sha256": "9644b2ce5c49f9c8b231008d0d381ee7bb591fc36c0282c67f07337c84f250a8"
|
|
},
|
|
{
|
|
"path": "analysis/99-cross-scope.md",
|
|
"sha256": "538e4e72cf033a9e262d5bbccd4914ccb4f2aea405432efd034b719c64cd25ff"
|
|
},
|
|
{
|
|
"path": "analysis/grpc/grpc-admin.md",
|
|
"sha256": "31df9cb670f1d1239265d9e78fd53477d518e78e1fd1592c0ab5fa371b215f1c"
|
|
},
|
|
{
|
|
"path": "analysis/grpc/grpc-advanced-bootstrap.md",
|
|
"sha256": "1a3d4e0421114d1a9a4f1edd51811c196a10c025918920e3bc793b8c1474ce22"
|
|
},
|
|
{
|
|
"path": "analysis/grpc/grpc-advanced-compat.md",
|
|
"sha256": "108e118bce82ba5e84319bf32f25f7f1e1d10c32f4b34d937e87d3070d928082"
|
|
},
|
|
{
|
|
"path": "analysis/grpc/grpc-advanced-diagnostics.md",
|
|
"sha256": "bdd18ca776a63dfe36aaedb5ffef46fcb118c6338d8ba4de75b828a1a42b0a12"
|
|
},
|
|
{
|
|
"path": "analysis/grpc/grpc-advanced-edition.md",
|
|
"sha256": "5d7621a42a017610d457eb66822091bee83fb83df79414d109d34200ca05e66e"
|
|
},
|
|
{
|
|
"path": "analysis/grpc/grpc-advanced-resilience.md",
|
|
"sha256": "d684e476873691a71f123c457093b737015679755f2b096d94cfa32add42aeb4"
|
|
},
|
|
{
|
|
"path": "analysis/grpc/grpc-advanced-streaming.md",
|
|
"sha256": "b7144c2db129493b703afe03b22ca5661bb555ff1ca973cae6239de3abfca371"
|
|
},
|
|
{
|
|
"path": "analysis/grpc/grpc-client.md",
|
|
"sha256": "28d6152d2b54245f4206358410b9452bc6e6a2ddb6c3d4f4d3df9ef54f30d13f"
|
|
},
|
|
{
|
|
"path": "analysis/grpc/grpc-codegen.md",
|
|
"sha256": "c61302fde6accddadd43f64be9614e2c2127a6db132f763b1f88845dcb26143d"
|
|
},
|
|
{
|
|
"path": "analysis/grpc/grpc-core-api.md",
|
|
"sha256": "6bbbd265fddcf12b2481e211e76bfc4bd2dc92481b324640ca3e6e0f565c2591"
|
|
},
|
|
{
|
|
"path": "analysis/grpc/grpc-discovery.md",
|
|
"sha256": "4bff271cd3a94278bfcb37690086f8c3262df7ac5c676fc61df2adf36615dbac"
|
|
},
|
|
{
|
|
"path": "analysis/grpc/grpc-observability.md",
|
|
"sha256": "fc3c8ec2f575851a39d298c08d842fa9b6ac006fd44f08407894a2832f16dcd0"
|
|
},
|
|
{
|
|
"path": "analysis/grpc/grpc-operation-ledger-jpa.md",
|
|
"sha256": "177c0db29a2c8376bb992f7db0c91d15488ebfb72d8fe2a0d137bdb675887a52"
|
|
},
|
|
{
|
|
"path": "analysis/grpc/grpc-policy.md",
|
|
"sha256": "75f3faa3701327d30649e91fb4991103b3711a1a1764e955a4767fb592d6d02d"
|
|
},
|
|
{
|
|
"path": "analysis/grpc/grpc-proto-contract.md",
|
|
"sha256": "5b6c1cee71f6e9bae3ed339d193a1a99a71e6b250cfbfe10938473f4e3317718"
|
|
},
|
|
{
|
|
"path": "analysis/grpc/grpc-server.md",
|
|
"sha256": "af0a8823d0d2bc38f400151d51565bdf680c8428bb32157e1c745ad9cb13b8ef"
|
|
},
|
|
{
|
|
"path": "analysis/grpc/grpc-spring-boot-starter.md",
|
|
"sha256": "d6261a11306cb063e588ba31541630f2e68b619ab65290758ac7efcf69da4a00"
|
|
},
|
|
{
|
|
"path": "analysis/grpc/grpc-testkit.md",
|
|
"sha256": "fb7d5339c1c0272d247455c18b2b2f76f392f3af1f779882b8f38173fb4db8d8"
|
|
},
|
|
{
|
|
"path": "analysis/messaging/messaging-admin-api.md",
|
|
"sha256": "f0d7369cd9f3bbfe675e6eec456c1faa4c1ef6a7bbf7f531117875afab85d2fb"
|
|
},
|
|
{
|
|
"path": "analysis/messaging/messaging-admin-runtime.md",
|
|
"sha256": "6f38684eff11ce6f907914b62f5b51626dfebb5a5aa6bc010f170ee6177212c5"
|
|
},
|
|
{
|
|
"path": "analysis/messaging/messaging-claim-check.md",
|
|
"sha256": "132ae88c6d0dfe523d9e5518ccc5902bb8e5de96ff0f6079ddd615ff1153395f"
|
|
},
|
|
{
|
|
"path": "analysis/messaging/messaging-cloudevents.md",
|
|
"sha256": "b397c3e42ae12bf048b3f286ee7a2a67f9879c5c41b3de0dfaa3fcfaec675c22"
|
|
},
|
|
{
|
|
"path": "analysis/messaging/messaging-core-api.md",
|
|
"sha256": "61a599437cb559d18982f1d45cfbf0cabf224c60383a8776aef115f499dd9e14"
|
|
},
|
|
{
|
|
"path": "analysis/messaging/messaging-inbox-jdbc-postgresql.md",
|
|
"sha256": "c3d70602111fc08c9cbbb2318504fe5968bb982667f9348d18c6056901639650"
|
|
},
|
|
{
|
|
"path": "analysis/messaging/messaging-kafka-share-experimental.md",
|
|
"sha256": "5f1e5b95fb6af9a84fecb7019e3529acceeb2d5513762f3d32aa075910fddd08"
|
|
},
|
|
{
|
|
"path": "analysis/messaging/messaging-kafka.md",
|
|
"sha256": "260ece70cc29d836343f19a174249c51a8245be06bf69a1395e4724f427145a3"
|
|
},
|
|
{
|
|
"path": "analysis/messaging/messaging-nats-experimental.md",
|
|
"sha256": "332df2dd35f62637a9185232198ae1167f087b11662a60facac357033cb11953"
|
|
},
|
|
{
|
|
"path": "analysis/messaging/messaging-observability.md",
|
|
"sha256": "16e669f0683d55d54cb9b982342214c536c857fa08322bfb3d556d7d9bf1b8f6"
|
|
},
|
|
{
|
|
"path": "analysis/messaging/messaging-outbox-jdbc-postgresql.md",
|
|
"sha256": "f1e3837833d91c209c354752e3de751140ae3457965eba76e39be8a9a4f5c35d"
|
|
},
|
|
{
|
|
"path": "analysis/messaging/messaging-policy.md",
|
|
"sha256": "6262f535885e50072198c9783f45499bd15523cc2f7c394cca3d66e1644b70ad"
|
|
},
|
|
{
|
|
"path": "analysis/messaging/messaging-pulsar-experimental.md",
|
|
"sha256": "b3961fd214c27e5bf954944e850aed49d14bed9d937cb30db00a2fb0b9348cd3"
|
|
},
|
|
{
|
|
"path": "analysis/messaging/messaging-rabbit.md",
|
|
"sha256": "2c3a3e1c835ee979dc55a050bec2f1f18128c9cd4d38a25299ff79519db82881"
|
|
},
|
|
{
|
|
"path": "analysis/messaging/messaging-reliability-api.md",
|
|
"sha256": "7647a1c288d4b60a87641e58ca67ebd81c08bce4438b444e3205c9331df32549"
|
|
},
|
|
{
|
|
"path": "analysis/messaging/messaging-runtime-core.md",
|
|
"sha256": "f8f33c95d74d679a655045eb9eaf73a65fc1b93133ba4cc996ae3c56459f3636"
|
|
},
|
|
{
|
|
"path": "analysis/messaging/messaging-schema-api.md",
|
|
"sha256": "1e7c55115e9da56b57337b3d8babadebf666a26f571c6d6dae0f5a951ab27fce"
|
|
},
|
|
{
|
|
"path": "analysis/messaging/messaging-schema-avro.md",
|
|
"sha256": "910617a3d8f35746e1372d3713d875fcf94254555224de9e0140e9ec9761dc82"
|
|
},
|
|
{
|
|
"path": "analysis/messaging/messaging-schema-json.md",
|
|
"sha256": "f085336a7e9188d161b13e283e0aff49f0a4bbd364f5fdbc0628af03753730d3"
|
|
},
|
|
{
|
|
"path": "analysis/messaging/messaging-schema-protobuf.md",
|
|
"sha256": "78d1521e612078f03fa9ed5c634ce53a1ddc47cc9bf570359b1d36fbf6604935"
|
|
},
|
|
{
|
|
"path": "analysis/messaging/messaging-security.md",
|
|
"sha256": "8079cfb31bc97bbf7b7c1f4b57837eff5e796fd40671665f6e74201de26028ee"
|
|
},
|
|
{
|
|
"path": "analysis/messaging/messaging-spring-boot-starter.md",
|
|
"sha256": "d5524d1eead42c8f92fecd586b3989af700b45f8023f70ff27e26a9610deb41f"
|
|
},
|
|
{
|
|
"path": "analysis/messaging/messaging-spring-cloud-stream-bridge.md",
|
|
"sha256": "f0c60dcda83d85cc0b396f1103e13458cc6120607cc4e89d3ed9bb603fbd3fd3"
|
|
},
|
|
{
|
|
"path": "analysis/messaging/messaging-testkit.md",
|
|
"sha256": "e9c05c7a2a2cfd4b5eaae2cbffc28205f85282e76a174af7efa862e88db6d05a"
|
|
},
|
|
{
|
|
"path": "analysis/messaging/messaging-transport-spi.md",
|
|
"sha256": "49baa073fcdc67d453d868011d15a33b47a64bc72be13a3d441f9b75fc708652"
|
|
},
|
|
{
|
|
"path": "analysis/module.md",
|
|
"sha256": "94b4683d87d6086d51a756165e70fdf14c4cb0d0d6c6eb31f150776f04fad8f1"
|
|
}
|
|
]
|
|
}
|