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>
66 lines
6.5 KiB
Plaintext
66 lines
6.5 KiB
Plaintext
Command: printf '%s\n' '--- support README named claims ---'; grep -n -E 'allowedProjectDependencies|CLAUDE|OutboundHttpDependencyLogger|project\(' src/adapter/outbound/support/README.md; printf '%s\n' '--- current policy authority ---'; git grep -n -E 'modules\.json|verifyCleanArchitectureDependencies' -- AGENTS.md src/adapter/outbound/support/CLAUDE.md src/build.gradle | head -180; printf '%s\n' '--- current exact http logger references ---'; git grep -n -w 'OutboundHttpDependencyLogger' -- 'src/**'; echo "http-logger-current-exit=$?"; printf '%s\n' '--- symbol history ---'; git log --all --name-status --format='COMMIT %H %s' -S'OutboundHttpDependencyLogger' -- src | sed -n '1,180p'
|
|
Working directory: /shared/codebase/clean-architecture-backend-template
|
|
Executed at: 2026-08-29T07:19:26Z
|
|
Source revision: a24ece9cf797f7ea647e33bf846b115208ed1ba5
|
|
Observation boundary: Compares named support README claims with current policy documents/source and records history for OutboundHttpDependencyLogger; this is textual/document history evidence, not a general documentation audit.
|
|
--- stdout/stderr ---
|
|
--- support README named claims ---
|
|
8:`allowedProjectDependencies['adapter:outbound:support']` 항목이 SSOT 다(이 모듈은 아직 별도
|
|
9:CLAUDE.md 를 두지 않았다). 이 문서는 코드 주석에서 덜어낸 **설계 결정의 근거**를 모아둔 참조용
|
|
17:project(':adapter:outbound:support')` 로 이 모듈에 의존한다.
|
|
24:`OutboundHttpDependencyLogger` 와 명확히 구분된다. 메서드 시그니처가 본문·수신자·페이로드를
|
|
--- current policy authority ---
|
|
AGENTS.md:21:5. 프로젝트 의존성이 `src/config/architecture/modules.json` 또는 Gradle 의존성 검증을 위반한다.
|
|
AGENTS.md:52:- `src/config/architecture/modules.json`: 등록된 모든 leaf의 ID, repository-relative 소스 경로,
|
|
AGENTS.md:57:- `src/build.gradle`: 같은 registry를 읽는 `verifyCleanArchitectureDependencies`와 그 밖의
|
|
AGENTS.md:107:`src/config/architecture/modules.json`이 SSOT다. focused test는 소유 leaf의 `gradle_path`에서
|
|
AGENTS.md:136:개별 edge는 `src/config/architecture/modules.json`의 `allowed_dependencies`가 유일한 목록이다.
|
|
AGENTS.md:179:./gradlew check # check 가 verifyCleanArchitectureDependencies + verifyEnvKeys 2종을 전이 실행한다 (src/build.gradle)
|
|
AGENTS.md:180:./gradlew verifyCleanArchitectureDependencies
|
|
AGENTS.md:185:소유 leaf의 정확한 Gradle path는 `src/config/architecture/modules.json`에서 읽고 focused test
|
|
src/adapter/outbound/support/CLAUDE.md:9:- Registry SSOT: `src/config/architecture/modules.json`.
|
|
src/build.gradle:574: dependsOn rootProject.tasks.named('verifyCleanArchitectureDependencies')
|
|
src/build.gradle:1101: dependsOn 'verifyCleanArchitectureDependencies'
|
|
src/build.gradle:1310: File moduleRegistryFile = new File(rootProject.projectDir, 'config/architecture/modules.json')
|
|
src/build.gradle:1401:tasks.register('verifyCleanArchitectureDependencies') {
|
|
src/build.gradle:1405: File moduleRegistryFile = new File(rootProject.projectDir, 'config/architecture/modules.json')
|
|
src/build.gradle:1440: "Gradle modules ${missingFromPolicy} are not covered by verifyCleanArchitectureDependencies. " +
|
|
src/build.gradle:2152: File moduleRegistryFile = new File(rootProject.projectDir, 'config/architecture/modules.json')
|
|
--- current exact http logger references ---
|
|
src/adapter/outbound/support/README.md:24:`OutboundHttpDependencyLogger` 와 명확히 구분된다. 메서드 시그니처가 본문·수신자·페이로드를
|
|
http-logger-current-exit=0
|
|
--- symbol history ---
|
|
COMMIT 5f10b791d35a02a4842814b90a0e0362dcef3982 chore: record pre-existing uncommitted repository state
|
|
|
|
M src/adapter/outbound/httpclient/README.md
|
|
D src/adapter/outbound/httpclient/src/main/java/dev/caskeleton/adapter/outbound/httpclient/OutboundHttpCallObserver.java
|
|
D src/adapter/outbound/httpclient/src/main/java/dev/caskeleton/adapter/outbound/httpclient/OutboundHttpClient.java
|
|
D src/adapter/outbound/httpclient/src/main/java/dev/caskeleton/adapter/outbound/httpclient/OutboundHttpClientConfig.java
|
|
D src/adapter/outbound/httpclient/src/main/java/dev/caskeleton/adapter/outbound/httpclient/diagnostics/OutboundHttpDependencyLogger.java
|
|
D src/adapter/outbound/httpclient/src/test/java/dev/caskeleton/adapter/outbound/httpclient/OutboundHttpCallObserverTest.java
|
|
D src/adapter/outbound/httpclient/src/test/java/dev/caskeleton/adapter/outbound/httpclient/OutboundHttpClientDeadlineTest.java
|
|
D src/adapter/outbound/httpclient/src/test/java/dev/caskeleton/adapter/outbound/httpclient/OutboundHttpClientSafetyRegressionTest.java
|
|
D src/adapter/outbound/httpclient/src/test/java/dev/caskeleton/adapter/outbound/httpclient/OutboundHttpClientTest.java
|
|
D src/adapter/outbound/httpclient/src/test/java/dev/caskeleton/adapter/outbound/httpclient/diagnostics/OutboundHttpDependencyLoggerTest.java
|
|
M src/app-bootstrap/src/test/java/dev/caskeleton/bootstrap/architecture/CleanArchitectureTest.java
|
|
COMMIT 567422f2e5ff0557e76b233fe5174812d63b515e feat: add production capability foundations
|
|
|
|
M src/app-bootstrap/src/test/java/dev/caskeleton/bootstrap/architecture/CleanArchitectureTest.java
|
|
COMMIT b3add0162df8d4a0a11e749e514901defe0a62a3 feat: redis, fileserver, httpclient 런타임 시점 구현 추가
|
|
|
|
A src/adapter/outbound/httpclient/src/test/java/dev/caskeleton/adapter/outbound/httpclient/OutboundHttpClientDeadlineTest.java
|
|
A src/adapter/outbound/httpclient/src/test/java/dev/caskeleton/adapter/outbound/httpclient/OutboundHttpClientSafetyRegressionTest.java
|
|
COMMIT 821fe00c323b5335980f271c7ee47b92ac2168f2 init: 클린 아키텍처 백엔드
|
|
|
|
A src/adapter/outbound/httpclient/README.md
|
|
A src/adapter/outbound/httpclient/src/main/java/dev/caskeleton/adapter/outbound/httpclient/OutboundHttpCallObserver.java
|
|
A src/adapter/outbound/httpclient/src/main/java/dev/caskeleton/adapter/outbound/httpclient/OutboundHttpClient.java
|
|
A src/adapter/outbound/httpclient/src/main/java/dev/caskeleton/adapter/outbound/httpclient/OutboundHttpClientConfig.java
|
|
A src/adapter/outbound/httpclient/src/main/java/dev/caskeleton/adapter/outbound/httpclient/diagnostics/OutboundHttpDependencyLogger.java
|
|
A src/adapter/outbound/httpclient/src/test/java/dev/caskeleton/adapter/outbound/httpclient/OutboundHttpCallObserverTest.java
|
|
A src/adapter/outbound/httpclient/src/test/java/dev/caskeleton/adapter/outbound/httpclient/OutboundHttpClientTest.java
|
|
A src/adapter/outbound/httpclient/src/test/java/dev/caskeleton/adapter/outbound/httpclient/diagnostics/OutboundHttpDependencyLoggerTest.java
|
|
A src/adapter/outbound/support/README.md
|
|
|
|
Exit code: 0
|