이번 파이프라인 작업과 무관하게 작업 트리에 남아 있던 것을 그대로 올린다. 사용자가 「전부 커밋」으로 정했고, 이번 작업과 섞이지 않게 커밋만 나눴다. 대부분은 clean-architecture-backend-template 의 그림 정본 재배치다 — final/assets/diagrams/<이름>/ 에 있던 것이 CLAUDE.md 가 적은 배치인 final/assets/<이름>/ 로 옮겨졌고 .techviz/<이름>/ 이 함께 들어왔다. 삽입 줄의 대부분(3.15M)이 그 .techviz context.json 이다. 그 밖에 ca-tmpl·document-haness 의 정리, .claude/agents/ 열한 개, writing-practitioner-guides 스킬, .playwright-mcp 세션 산출물, scripts/check-ssot-facts.py 와 그 시험이 들어 있다. 이 커밋의 내용은 내가 만든 것이 아니라 이전 세션이 남긴 것이고 검증하지 않았다. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
69 lines
3.5 KiB
Markdown
69 lines
3.5 KiB
Markdown
---
|
|
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
|
|
- final/document.md#a05
|
|
- final/document.md#a19
|
|
- final/document.md#a20
|
|
- final/document.md#10-5
|
|
---
|
|
|
|
# 지원 등급은 추론이 아니라 선언이고 증거 없이는 올라가지 않는다
|
|
|
|
능력의 지원 등급은 코드가 존재한다는 사실에서 추론하지 않고 명시적으로 선언하며, 승격은 정해진 증거를 요구한다. 등급을 추론하면 조립되지 않은 능력과 소비자가 없는 코디네이터와 적용 지점이 없는 검증기가 전부 지원으로 보고된다.
|
|
|
|
## 결정문
|
|
|
|
능력의 지원 등급은 코드가 존재한다는 사실에서 추론하지 않고 명시적으로 선언하며, 승격은 정해진 증거를 요구한다.
|
|
|
|
## 판단 이유
|
|
|
|
코드가 있다는 것과 그 능력이 지원된다는 것은 다르다. 이 저장소에는 그 차이가 실제로 벌어진 사례가 여럿 있다. 조립되지 않은 능력, 소비자가 없는 코디네이터, 적용 지점이 없는 검증기가 그렇다.
|
|
|
|
등급을 추론하면 그 사례들이 전부 지원으로 보고된다. 코드가 있기 때문이다.
|
|
|
|
그래서 등급을 값으로 둔다. 능력 선언 레코드가 능력과 등급과 제약 목록을 담고, 그 값이 리포트로 공개된다.
|
|
|
|
승격에는 증거가 붙는다. 증거에는 등급이 있고, 높은 등급은 결과의 내용뿐 아니라 출처까지 요구한다. 어떤 프로파일에서 돌았는지, 워크트리가 깨끗했는지, 실제 CI 잡이었는지, 산출물이 외부에 보존되었는지다.
|
|
|
|
그리고 실험 등급이 안정으로 적히지 않는지를 문서 계약 테스트가 확인한다.
|
|
|
|
## 영향
|
|
|
|
감수하는 것
|
|
|
|
능력이 실제로 동작하는데 선언이 없으면 지원되지 않는 것으로 보고된다. 과소 진술 방향의 드리프트가 생길 수 있다.
|
|
|
|
증거 조건을 만족시키려면 CI 를 거쳐야 한다. 로컬에서 승격할 수 없다.
|
|
|
|
선언과 코드가 어긋날 수 있다. 능력 표의 한 칸이 코드와 반대를 적은 사례가 실제로 있었고, 그것을 잡는 단언은 아직 없다.
|
|
|
|
얻는 것
|
|
|
|
조립되지 않은 코드가 지원으로 보고되지 않는다.
|
|
|
|
등급이 값이므로 리포트로 공개할 수 있고 기계로 검증할 수 있다.
|
|
|
|
## 근거
|
|
|
|
- **증거 등급과 provenance — R1과 R2를 가르는 것**
|
|
승격이 요구하는 증거 체계다.
|
|
- **후보 증거는 통과해도 R1에 머무르고 R2는 별도 게이트가 판정한다**
|
|
같은 체계의 승격 규칙이다.
|
|
- **지원 매트릭스가 코드와 반대를 적었고, 그 오해가 소비자에게 자기 멱등성을 생략하게 한다**
|
|
선언과 문서가 어긋난 사례다.
|
|
- **진단 리포트가 살아 있는 리소스를 담지 않도록 값 타입을 좁혔다**
|
|
등급을 담는 값 타입이 지키는 제약이다.
|
|
|