Files
document-haness/docs/clean-architecture-backend-template/final/evidence/raw/333-eighteen-docs-source-drift-zero.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

97 lines
6.5 KiB
Plaintext

EVD-333 재검증 범위 확정 — 기존 18개 문서의 소스 드리프트 측정
측정일 2026-08-31 · workmachine
────────────────────────────────────────────────────────────────────────
1. 문서가 기록한 revision
────────────────────────────────────────────────────────────────────────
01-domain-core.md … 18-app-bootstrap.md 전부 동일:
a24ece9cf797f7ea647e33bf846b115208ed1ba5
현재 HEAD:
21234e38cdb9a926cbc92bb97a2aee2e4a7d2916 "feat: grpc 기능 deep 구현"
git log --oneline -5
21234e38 feat: grpc 기능 deep 구현
a24ece9c feat: web, websocket 어댑터 추가 구현
01372634 refactor: 각 어댑터터별 리펙토링 진행
e98b56eb feat: jpa, messaging, notification, mongo, graphql 어댑터터 리펙토링
2f5d2fc2 feat: jpa, messaging, notification, mongo, graphql 어댑터터 구현체 추가
(총 37 commit)
문서 기준점과 HEAD 사이는 정확히 커밋 1개다.
────────────────────────────────────────────────────────────────────────
2. 18개 리프 경로별 변경 파일 수 — a24ece9c..21234e38
────────────────────────────────────────────────────────────────────────
$ git diff --name-only a24ece9c 21234e38 -- <path> | wc -l
src/domain-core 0
src/shared-contract 0
src/application-core 0
src/adapter/outbound/support 0
src/adapter/outbound/persistence-jpa 0
src/adapter/outbound/persistence-mongo 0
src/adapter/outbound/identifier 0
src/adapter/outbound/fileserver 0
src/adapter/outbound/objectstorage 0
src/adapter/outbound/cache-redis 0
src/adapter/outbound/httpclient 0
src/adapter/outbound/messaging 0
src/adapter/outbound/notification 0
src/adapter/inbound/web 0
src/adapter/inbound/grpc 0
src/adapter/inbound/graphql 0
src/adapter/inbound/websocket 0
src/app-bootstrap 0
18개 전부 0. 커밋이 건드린 곳의 분포:
82 src/grpc/grpc-policy 41 src/grpc/grpc-core-api
36 src/grpc/grpc-testkit 25 src/grpc-advanced/grpc-advanced-compat
24 src/grpc/grpc-server 23 src/grpc-advanced/grpc-advanced-resilience
20 src/grpc-advanced/grpc-advanced-streaming 19 src/grpc/grpc-client
19 src/grpc/grpc-admin 16 src/grpc/grpc-codegen
13 src/grpc-advanced/grpc-advanced-bootstrap 11 src/grpc/grpc-proto-contract
11 src/grpc/grpc-discovery 11 src/grpc-advanced/grpc-advanced-edition
8 src/grpc/grpc-spring-boot-starter 8 src/grpc-advanced/grpc-advanced-diagnostics
7 src/grpc/grpc-operation-ledger-jpa 7 src/grpc/grpc-observability
1 src/grpc/CLAUDE.md 1 src/grpc-advanced/CLAUDE.md
1 src/config/architecture 1 src/build.gradle
1 docs/runbooks/grpc-platform-operations.md 외 docs 2
────────────────────────────────────────────────────────────────────────
3. 리프 밖 공통 파일 2개가 18개에 영향을 주는지
────────────────────────────────────────────────────────────────────────
(a) src/build.gradle — 변경은 한 곳, plain-JUnit 테스트 클래스패스 조건의 확장뿐이다.
- if (project.path in [':domain-core', ':application-core', ':shared-contract'] ||
- project.path.startsWith(':messaging:')) {
+ if (project.path in [':domain-core', ':application-core', ':shared-contract'] ||
+ project.path.startsWith(':messaging:') ||
+ project.path.startsWith(':grpc:') ||
+ project.path.startsWith(':grpc-advanced:')) {
18개 중 :domain-core·:application-core·:shared-contract 는 조건이 그대로이고,
나머지 15개는 이전과 동일하게 else 분기다. 영향 없음.
(b) src/config/architecture/modules.json — 197 insertions(+), 0 deletions(-).
diff 의 추가·삭제 줄에서 18개 리프 id
("domain-core" "shared-contract" "application-core" "adapter-*" "app-bootstrap")
가 등장한 횟수: 0. grpc 항목의 순수 추가다. 영향 없음.
────────────────────────────────────────────────────────────────────────
4. 판정 — 재검증이 실제로 해야 할 일
────────────────────────────────────────────────────────────────────────
18개 문서의 소스 기준 서술은 HEAD 에서도 유효하다. 재작성 대상이 아니다.
따라서 재검증의 실질은 다음 넷이며, 소스를 다시 읽는 일이 아니다.
① SSOT 게이트 준수 — §0 SSOT identity 블록(등록 leaf id ↔ canonical analysisFile),
registry allowed_dependencies / runtime_memberships 명시
② EVD 연결 — 18개 문서 모두 EVD 참조 0건, Source anchors 0건인 상태를 해소
③ lane 재실행 — 문서가 기록한 lane 결과를 HEAD 에서 다시 재현
④ 기록된 주장 중 재현되지 않거나 진단이 틀린 것 교정
(첫 사례: 11번 문서 §51 의 P1 진단 — EVD-332 가 반증)
주의: "소스 변경 0" 은 문서의 결론이 옳다는 뜻이 아니다. 대상이 움직이지 않았다는 뜻이며,
검증은 여전히 문서의 주장을 코드에 대고 다시 확인해야 한다. EVD-332 가 바로 그 경우다 —
소스는 한 줄도 안 바뀌었는데 문서의 진단은 틀렸다.