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 가 바로 그 경우다 —
소스는 한 줄도 안 바뀌었는데 문서의 진단은 틀렸다.
