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>
56 lines
2.4 KiB
Markdown
56 lines
2.4 KiB
Markdown
---
|
|
kind: REFERENCE
|
|
slug: agreement-between-documents-proves-nothing
|
|
title: 문서와 상수가 서로 일치하는 것으로는 아무것도 증명되지 않는다
|
|
topic: what-a-gate-does-not-prove
|
|
project: clean-architecture-backend-template
|
|
status: 게시 전
|
|
sourceRevision: 21234e38cdb9a926cbc92bb97a2aee2e4a7d2916
|
|
rootTreeNode: reference:agreement-between-documents-proves-nothing
|
|
verifiedOn: # 이 기록은 이번 회차에 실행 확인을 하지 않았다
|
|
---
|
|
|
|
# 문서와 상수가 서로 일치하는 것으로는 아무것도 증명되지 않는다
|
|
|
|
## 목적
|
|
|
|
두 선언이 서로 같다는 것을 그 선언이 실제 동작과 같다는 증거로 읽는 것을 막는다.
|
|
|
|
## 규칙
|
|
|
|
1. 일치의 양쪽이 모두 선언이면 아무것도 증명되지 않는다
|
|
문서와 상수가 같다는 것은 둘을 같이 고쳤다는 뜻이지 코드가 그렇게 동작한다는 뜻이 아니다.
|
|
|
|
2. 한쪽은 실행이어야 한다
|
|
비교 대상 중 하나가 실제 실행 결과이거나 실행 경로에서 읽히는 값이어야 한다.
|
|
|
|
3. 검사 경계를 명시한다
|
|
좁은 단언은 정당한 선택이지만, 무엇이 검사되고 무엇이 검사되지 않는지가 적혀 있지 않으면 통과가 전체 검증으로 읽힌다.
|
|
|
|
4. 표의 칸 수를 센다
|
|
행 이름이 일치한다는 것과 표 내용이 일치한다는 것은 다르다.
|
|
|
|
## 적용 조건
|
|
|
|
지원 매트릭스 능력 표 호환성 문서를 검증하는 모든 테스트
|
|
|
|
문서와 코드 상수를 대조하는 계약 테스트
|
|
|
|
## 예외
|
|
|
|
문서 사이의 일관성 자체가 목적인 검사는 이 규칙의 대상이 아니다. 그 경우 무엇을 위한 일관성인지가 명시되어야 한다.
|
|
|
|
## 예시
|
|
|
|
문서 계약 테스트의 단언 여덟 개는 등급 이름과 버전 문자열과 존재하지 않는 상수를 붙든다. 능력 표 60칸과 런타임 멤버십 문장과 제한 칸은 밖에 있고, 발견된 드리프트 세 건이 정확히 그 셋 안에 있었다.
|
|
|
|
지원 매트릭스에서 문자열을 수집하는 방식은 어느 표에서 왔는지도 그 행의 등급도 알지 못했다. 문장에서 한 번 언급된 버전이 지원으로 집계됐다.
|
|
|
|
## 관계
|
|
|
|
- **문서 계약 테스트의 단언 경계 밖에 발견된 드리프트 세 건이 전부 있었다**
|
|
이 규칙을 만든 사례다.
|
|
- **빠뜨림이 통과가 되는 게이트는 게이트가 아니다**
|
|
같은 계열의 상위 규칙이다.
|
|
|