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>
This commit is contained in:
DongHyeonka
2026-09-04 22:51:59 +09:00
co-authored by Claude Opus 5
parent 43bccd08a8
commit b2963105a8
5017 changed files with 372751 additions and 4943 deletions
@@ -0,0 +1,62 @@
---
kind: REFERENCE
slug: grades-may-understate-never-overstate
title: 등급은 네 단계로 나누고 관측보다 높게 적지 않는다
topic: self-disclosure-grading
project: clean-architecture-backend-template
status: 게시 전
sourceRevision: 21234e38cdb9a926cbc92bb97a2aee2e4a7d2916
rootTreeNode: reference:grades-may-understate-never-overstate
verifiedOn: # 이 기록은 이번 회차에 실행 확인을 하지 않았다
---
# 등급은 네 단계로 나누고 관측보다 높게 적지 않는다
## 목적
능력 성숙도를 자기 신고할 때 낙관적으로 적어, 그 표를 읽고 배포를 결정하는 사람이 없는 것을 있다고 믿는 것을 막는다.
## 규칙
1. 단계마다 요구하는 증거를 정의한다
코드가 있다는 것과 실행 경로에 있다는 것과 외부 시스템과 검증되었다는 것과 실부하에서 검증되었다는 것을 나눈다.
2. 낮게 적는 것은 허용하고 높게 적는 것은 금지한다
방향을 명시하면 애매한 경우의 처리가 정해진다.
3. 증거 칸에 구체적인 수를 적는다
테스트 이름만으로는 그 테스트가 무엇을 보장하는지 알 수 없다.
4. 부재를 함께 적고 테스트로 고정한다
요청 경로에 없다는 사실을 테스트가 붙들면, 나중에 배선될 때 그 테스트가 깨지고 등급표를 함께 갱신하게 된다.
5. 어느 단계에도 못 미치면 미달성으로 적는다
가장 낮은 등급을 주지 않는다.
## 적용 조건
능력 성숙도를 문서로 공시하는 모든 모듈
플랫폼 가족과 지원 매트릭스
## 예외
외부 계약으로 등급 어휘가 정해져 있으면 그것을 따른다. 그 경우에도 높게 적지 않는다는 규칙은 유지한다.
## 예시
GraphQL 리프의 등급표가 열세 행 중 여섯을 modelled 로, 하나를 미달성으로 적는다. 분석이 관측과 대조했을 때 어긋난 것은 한 행이었다.
관측 태그 카디널리티 행의 증거가 임의 이름 10,000개가 시계열 1개가 된다는 측정을 적는다.
커서 서명 행이 자동설정이 아무것도 생성하지 않는다는 사실과 그것을 고정하는 테스트를 함께 적는다.
## 관계
- **네 단계 공시 등급 — modelled에서 production-verified까지**
이 규칙이 나온 개념이다.
- **등급표 13행 중 일곱을 스스로 강등하고 한 행만 관측과 어긋났다**
이 규칙이 지켜졌을 때의 결과다.
- **능력 등급은 코드가 아니라 실행된 증거에서 파생한다**
같은 원칙을 채택한 결정이다.
@@ -0,0 +1,62 @@
---
kind: REFERENCE
slug: runtime-membership-decides-severity
title: runtime_memberships를 먼저 읽고 심각도를 정한다
topic: self-disclosure-grading
project: clean-architecture-backend-template
status: 게시 전
sourceRevision: 21234e38cdb9a926cbc92bb97a2aee2e4a7d2916
rootTreeNode: reference:runtime-membership-decides-severity
verifiedOn: # 이 기록은 이번 회차에 실행 확인을 하지 않았다
---
# runtime_memberships를 먼저 읽고 심각도를 정한다
## 목적
같은 형태의 결함에 같은 심각도를 매겨, 배포되지 않는 코드의 문제와 지금 도는 코드의 문제를 구별하지 못하는 것을 막는다.
## 규칙
1. 레지스트리를 먼저 읽는다
그 리프가 어떤 런타임 컴포지션에 속하는지가 첫 질문이다.
2. 멤버십이 비어 있으면 오늘의 사고가 아니다
배포되지 않는 코드의 미조립은 프로덕션 영향이 0 이다.
3. 그렇다고 기록하지 않는 것은 아니다
배선되는 날 한꺼번에 오늘의 사고가 된다. 그날의 목록이 지금 있어야 한다.
4. 배포되지 않는 상태가 테스트로 고정되어 있는지 확인한다
규약으로만 지켜지면 실수로 배선될 수 있다.
5. 문서가 그 상태를 공시하는지 확인한다
레지스트리가 비어 있는데 지원 매트릭스가 그 능력을 싣고 있으면, 심각도 판정과 문서가 어긋난다.
## 적용 조건
발견의 심각도를 매기는 모든 분석
플랫폼 가족처럼 배포 여부가 리프마다 다른 구조
## 예외
보안 결함은 배포되지 않아도 기록 우선순위가 높을 수 있다. 배선 시점에 그것이 함께 배포되기 때문이다.
## 예시
웹소켓 어댑터의 런타임 멤버십이 비어 있고, 조건부 전송 조립 계약 테스트의 빌드 전용 목록이 그 사실을 고정한다.
gRPC 가족 18개 리프 전부의 멤버십이 비어 있고, 호환성 문서가 출시되지 않았다고 공시한다.
같은 형태의 미조립이라도 messaging 쪽은 출하 아티팩트에 실리므로 심각도가 다르다.
## 관계
- **build-only 등급이 90개 파일의 미조립을 오늘의 사고에서 면제한다**
이 규칙을 만든 사례다.
- **gRPC 플랫폼은 build-only로 두고 애플리케이션 도달 경로를 먼저 정한다**
이 규칙이 결정으로 표현된 사례다.
- **Bean 애너테이션이 있다는 것은 조립 증거가 아니다**
같은 계열의 확인 규칙이다.