Files
document-haness/docs/clean-architecture-backend-template/tech-log-studio/self-disclosure-grading/case/case-seven-rows-downgraded-by-the-family-itself.md
T
DongHyeonkaandClaude Opus 5 b2963105a8 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>
2026-09-04 22:51:59 +09:00

5.1 KiB

kind, slug, title, topic, project, status, sourceRevision, rootTreeNode, evidenceCapturedOn, assets, evidence, source
kind slug title topic project status sourceRevision rootTreeNode evidenceCapturedOn assets evidence source
CASE seven-rows-downgraded-by-the-family-itself 등급표 13행 중 일곱을 스스로 강등하고 한 행만 관측과 어긋났다 self-disclosure-grading clean-architecture-backend-template 게시 전 21234e38cdb9a926cbc92bb97a2aee2e4a7d2916 case:seven-rows-downgraded-by-the-family-itself 2026-09-01
key file
seven-rows-downgraded-by-the-family-itself ../../../final/evidence/rendered/seven-rows-downgraded-by-the-family-itself.svg
../../../final/evidence/raw/seven-rows-downgraded-by-the-family-itself.txt
원본 분석 절은 final/document.md#7-5 · analysis/16 §20.1, §29.1, §45.2 이다.

등급표 13행 중 일곱을 스스로 강등하고 한 행만 관측과 어긋났다

GraphQL 리프의 능력 등급표는 열세 행 중 일곱을 스스로 낮게 적는다. 분석이 그 표를 관측과 대조했을 때 어긋난 것은 한 행뿐이었다.

관계

  • 네 단계 공시 등급 — modelled에서 production-verified까지 이 표가 쓰는 등급 체계다.
  • 등급은 네 단계로 나누고 관측보다 높게 적지 않는다 이 사례가 검증한 규칙이다.
  • 시작 검증기가 커서 서명 키를 요구하는데 그 키로 서명하는 코드가 없다 어긋난 행과 관련된 사례다.

문제

능력 등급표는 자기 신고다. 작성자가 자기 코드의 성숙도를 적는다.

자기 신고는 대개 낙관적이다. 그래서 이런 표를 검증할 때의 기대는 실제보다 높게 적혀 있으리라는 것이다.

결론

반대였다.

열세 행 중 여섯 행이 스스로 modelled 로 적혀 있다. 그 등급의 정의는 정책과 계약 객체가 있고 단위 테스트가 있으며 요청 경로에는 없다는 것이다.

객체 인가는 답하는 계약을 중립 계층이 소유하고 이 리프는 매핑만 가지며 실행 경로에 연결하는 설정이 없다고 적는다 커서 서명은 자동설정이 둘 중 무엇도 생성하지 않는다고 적고 그 사실을 테스트가 고정한다고 덧붙인다 변경 멱등성은 인터셉터를 참조하는 설정이 없다고 적는다 지속 연산은 durable 구현체가 미제공이라고 적는다 구독과 웹소켓과 SSE 와 RSocket 은 정책과 상태 기계 단위 테스트만 있고 전송 핸들러가 없다고 적으며, 그래서 타입 이름도 승인 계열이라고 덧붙인다 페더레이션 계열은 단위 테스트만 있다고 적는다

일곱 번째 행은 등급조차 아니다. 실부하와 장애는 미달성으로 적히고, 증거가 없으면 릴리스 게이트가 거부한다는 사실이 함께 있다.

분석이 이 표를 관측과 대조했을 때 어긋난 것은 한 행뿐이었다.

이 결과가 이 사례의 내용이다. 자기 신고 등급표가 관측과 거의 일치했고, 그 일치는 등급을 낮게 적는 규칙과 증거 칸에 구체적인 수를 적는 관행에서 나왔다.

부재를 테스트로 고정하는 방식도 그 일치에 기여한다. 자동설정이 아무것도 생성하지 않는다는 사실을 테스트가 붙들고 있으므로, 나중에 누군가 배선하면 그 테스트가 깨지고 등급표를 함께 갱신하게 된다.

검증 환경

OpenJDK : 21.0.12 확인 방식 : 등급표 각 행과 해당 코드 및 테스트 대조 소스 수정 : x

재현 조건

원문은 final/evidence/raw/213-inbound-graphql-release-probes.txt 에 있다.

  1. 리프의 안내 문서에서 등급 정의와 등급표를 읽는다.
  2. 각 행의 등급과 증거 칸을 확인한다.
  3. modelled 로 적힌 행에 대해 실제로 요청 경로에 없는지 확인한다.
  4. wired 로 적힌 행에 대해 증거 칸이 지목하는 테스트를 확인한다.

본문

CLAUDE.md가 4등급을 정의하고 "현재 등급보다 높게 표현하지 않는다"를 규칙으로 선언한 뒤 13행 중 일곱을 스스로 modelled로 강등했다.

스스로 강등한 일곱 행

:::evidence key="seven-rows-downgraded-by-the-family-itself" alt="분석 문서 final/document.md 에서 이 기록의 근거 절을 그대로 잘라낸 18줄. 코드베이스를 측정한 것이 아니라 원본 판정이 무엇을 적었는지를 보여 준다." caption="final/document.md 발췌 — 18줄" zoom="true" :::

전수 대조 결과 12행이 일치했다

sub-scope 02~06의 파일 단위 배선 데이터와 13행을 대조했다. 요청 크기/Accept 협상 (http/) 한 행만 불일치이고 어긋나는 방향이 표가 금지한 "높게 표현" 쪽이다 — 인용된 두 증거가 endpoint 테스트가 아닌 순수 단위 테스트이고 대상 타입은 미배선이다.

기계 매니페스트와 사람이 읽는 표가 갈린다

커서에 대해 서로 다른 답을 준다.

확인하지 못한 것

wired 로 적힌 행 전부에 대해 그 테스트를 실행하지 않았다. 확인한 것은 테스트의 존재와 그것이 무엇을 단언하는지다.

없음 — 13행 전수 대조