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>
3.3 KiB
3.3 KiB
Tech Log 초안 리뷰 체크리스트 — cycle 2 재실행
실행일 : 2026-09-01 (cycle 2 downstream 재생성 후) 대상 : clean-architecture-backend-template · 레코드 333건 (CONCEPT 21 · CASE 217 · REFERENCE 53 · QUESTION 17 · DECISION 25) 근거 root tree : root-tree.md (노드 334 · 생성 차단 1) 소스 리비전 : 21234e38cdb9a926cbc92bb97a2aee2e4a7d2916
이번 실행이 이전 실행과 다른 점
첫 실행(같은 날, 레코드 326건)에서 유일하게 열려 있던 항목은 upstream 상태였다 — document-detail 이 cycle 2 재분석 중이라 analysisStatus 가 IN_PROGRESS 였고 downstream 셋이 NOT_STARTED 였다. 그 항목이 닫혔다.
Provenance
- upstream 전부 COMPLETE — analysisStatus COMPLETE · 스코프 61 COMPLETE + 1 EXCLUDED · crossScopeAnalysis / finalDocument / rootTree 전부 COMPLETE · reanalysis.completedAt 기록됨
- 23개 리프가 canonical SSOT 를 갖고 FULL_READ 로 전환됐다. STRUCTURAL_ONLY 잔여 0.
- 레코드 333건 전부 root tree 노드에 slug 로 대응. 미대응 0.
- readiness READY/OPEN 만 생성. NEEDS_DECISION 노드 1건은 decision-evidence 부재로 차단 유지.
- 레코드 sourceRevision 333건 전부 root tree 리비전과 일치.
- root tree 노드 334건 전부 source 앵커 보유. 참조 파일 290건 중 결측 0.
- 라인 앵커 전부 헤딩 착지. 어긋남 0.
Record kind
- kind ↔ 노드 kind 일치 333/333 · 디렉터리 배치 일치
- bodyMarkdown 은 CASE·CONCEPT 만 사용
- DECISION 25건 전부 근거 기록 보유 · OPEN QUESTION 17건 전부 미지수와 다음 검증 보유
Facts / Body / Relations
- 비본문 필드의 마크다운 문법 유입 0 · 제목 중복 0
- body-syntax 화이트리스트 위반 0
- 관계 설명 누락 0 · root tree 끊긴 relations 0
downstream 재생성 요약
| 산출물 | 변경 |
|---|---|
analysis/99-cross-scope.md |
306 → 428줄. §1.2(전수 통독) 신설 · §3.2·§3.5 확장 · §3.7(전송 계열 가정) 신설 · §4 6~9항 · §6 |
final/document.md |
1,680 → 1,765줄. §14.2 신설 · §5.5 확장 · §8.2 9~13항 · 헤더 표 |
root-tree.md |
4,097 → 4,174줄. 노드 327 → 334 |
candidate-ledger.json |
340/291 → 347/298 |
| 레코드 | 326 → 333 |
새로 낸 노드 7건
| 노드 | Topic |
|---|---|
case:assigned-id-turns-claim-into-upsert |
state-ownership-and-concurrency |
case:complete-drain-rolls-back-a-rotation |
〃 |
case:startup-validator-is-the-only-reader-of-four-keys |
runtime-reachability-and-composition |
case:validator-declared-and-never-injected |
〃 |
reference:a-validator-is-enforced-by-injection |
〃 |
case:capability-constant-outlives-its-condition |
transport-and-provider-semantics |
case:ipv4-only-mask-passes-every-other-form |
security-policy-enforcement |
통독의 새 finding 52건 중 노드로 낸 것은 7건이다. 나머지는 리프 SSOT §17 에 남는다 —
기존 REFERENCE 가 이미 그 규칙을 갖고 있거나(예: atomic-type-is-not-atomicity),
같은 사건의 다른 인스턴스여서 노드를 늘릴 이유가 없는 경우다.
미결
없다. 다음 단계는 humanizing-korean-tech-writing 편집 패스이며, 체크리스트가 별도 패스로 규정한 것이다.