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:
co-authored by
Claude Opus 5
parent
43bccd08a8
commit
b2963105a8
+65
@@ -0,0 +1,65 @@
|
||||
---
|
||||
kind: PROJECT_DECISION
|
||||
slug: capability-grade-is-declared-not-inferred
|
||||
title: 지원 등급은 추론이 아니라 선언이고 증거 없이는 올라가지 않는다
|
||||
topic: drift-direction
|
||||
project: clean-architecture-backend-template
|
||||
status: 게시 전
|
||||
sourceRevision: 21234e38cdb9a926cbc92bb97a2aee2e4a7d2916
|
||||
rootTreeNode: decision:capability-grade-is-declared-not-inferred
|
||||
decisionStatus: ADOPTED
|
||||
decidedOn: 2026-08-30
|
||||
source:
|
||||
- src/adapter/outbound/persistence-jpa/src/main/java/dev/caskeleton/adapter/outbound/persistence/api/capability/CapabilitySupport.java
|
||||
- src/gradle/jpa-evidence.gradle
|
||||
- src/messaging/messaging-testkit/src/test/java/dev/caskeleton/messaging/testkit/MessagingDocumentationContractTest.java
|
||||
- analysis/05-adapter-outbound-persistence-jpa.md
|
||||
- analysis/19-messaging-platform.md
|
||||
- analysis/20-grpc-platform.md
|
||||
---
|
||||
|
||||
# 지원 등급은 추론이 아니라 선언이고 증거 없이는 올라가지 않는다
|
||||
|
||||
## 결정문
|
||||
|
||||
능력의 지원 등급은 코드가 존재한다는 사실에서 추론하지 않고 명시적으로 선언하며, 승격은 정해진 증거를 요구한다.
|
||||
|
||||
## 판단 이유
|
||||
|
||||
코드가 있다는 것과 그 능력이 지원된다는 것은 다르다. 이 저장소에는 그 차이가 실제로 벌어진 사례가 여럿 있다. 조립되지 않은 능력, 소비자가 없는 코디네이터, 적용 지점이 없는 검증기가 그렇다.
|
||||
|
||||
등급을 추론하면 그 사례들이 전부 지원으로 보고된다. 코드가 있기 때문이다.
|
||||
|
||||
그래서 등급을 값으로 둔다. 능력 선언 레코드가 능력과 등급과 제약 목록을 담고, 그 값이 리포트로 공개된다.
|
||||
|
||||
승격에는 증거가 붙는다. 증거에는 등급이 있고, 높은 등급은 결과의 내용뿐 아니라 출처까지 요구한다. 어떤 프로파일에서 돌았는지, 워크트리가 깨끗했는지, 실제 CI 잡이었는지, 산출물이 외부에 보존되었는지다.
|
||||
|
||||
그리고 실험 등급이 안정으로 적히지 않는지를 문서 계약 테스트가 확인한다.
|
||||
|
||||
## 영향
|
||||
|
||||
감수하는 것
|
||||
|
||||
능력이 실제로 동작하는데 선언이 없으면 지원되지 않는 것으로 보고된다. 과소 진술 방향의 드리프트가 생길 수 있다.
|
||||
|
||||
증거 조건을 만족시키려면 CI 를 거쳐야 한다. 로컬에서 승격할 수 없다.
|
||||
|
||||
선언과 코드가 어긋날 수 있다. 능력 표의 한 칸이 코드와 반대를 적은 사례가 실제로 있었고, 그것을 잡는 단언은 아직 없다.
|
||||
|
||||
얻는 것
|
||||
|
||||
조립되지 않은 코드가 지원으로 보고되지 않는다.
|
||||
|
||||
등급이 값이므로 리포트로 공개할 수 있고 기계로 검증할 수 있다.
|
||||
|
||||
## 근거
|
||||
|
||||
- **증거 등급과 provenance — R1과 R2를 가르는 것**
|
||||
승격이 요구하는 증거 체계다.
|
||||
- **후보 증거는 통과해도 R1에 머무르고 R2는 별도 게이트가 판정한다**
|
||||
같은 체계의 승격 규칙이다.
|
||||
- **지원 매트릭스가 코드와 반대를 적었고, 그 오해가 소비자에게 자기 멱등성을 생략하게 한다**
|
||||
선언과 문서가 어긋난 사례다.
|
||||
- **진단 리포트가 살아 있는 리소스를 담지 않도록 값 타입을 좁혔다**
|
||||
등급을 담는 값 타입이 지키는 제약이다.
|
||||
|
||||
Reference in New Issue
Block a user