chore: 이전 세션이 남긴 변경을 커밋한다

이번 파이프라인 작업과 무관하게 작업 트리에 남아 있던 것을 그대로 올린다.
사용자가 「전부 커밋」으로 정했고, 이번 작업과 섞이지 않게 커밋만 나눴다.

대부분은 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>
This commit is contained in:
DongHyeonka
2026-09-17 11:02:02 +09:00
co-authored by Claude Opus 5
parent 2109f726fe
commit ab59130196
1524 changed files with 3160026 additions and 8369 deletions
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
@@ -0,0 +1,114 @@
{
"version": "1.1",
"id": "messaging-testkit-f02",
"title": "강제가 없는 규칙",
"question": "isComplete 는 어느 어댑터에 실제로 걸리는가?",
"type": "sequence",
"direction": "LR",
"audience": [
"메시징 testkit 을 읽는 사람"
],
"summary": "isComplete 를 거는 테스트는 Experimental 어댑터에만 있고 Stable 어댑터에는 없다.",
"alt": "CrossBrokerContractSuite 가 isComplete 를 질의하고, 거기서 Experimental 어댑터로는 실선이, Stable 어댑터로는 점선이 간다.",
"long_description": "SSOT §12.4(a) 는 BrokerFailureMatrix 클래스 javadoc 이 \"A Stable adapter must cover every scenario\" 를 선언하고 그 규칙이 문서가 아니라 테스트로 강제된다고 적는다고 기록한다. 측정에서 isComplete 의 호출부는 CrossBrokerContractSuite 한 곳이고 그것은 Experimental 어댑터가 불완전함을 단언한다. Stable 인 messaging-kafka 는 gap 을 가진 채 통과한다.",
"source_context": {
"document": "docs/clean-architecture-backend-template/final/document.md",
"document_sha256": "8071fe71b3359d9cf60b95909c26c7b50653ce2f22bbc5fcf6988719bb91236d",
"anchor": {
"kind": "line",
"value": 40325,
"line": 40325
}
},
"composition": {
"profile": "sequence",
"diagram_only": true,
"reference_ids": [
"payment-approval-sequence"
],
"rationale": "한 호출부가 isComplete 를 부르는 순서가 있고, Stable 에 대한 호출이 그 순서에 없다는 것이 논지다.",
"focus_node": "matrix"
},
"groups": [],
"nodes": [
{
"id": "suite",
"label": "CrossBrokerContractSuite",
"kind": "test",
"role": "participant",
"evidence": [
{
"start_line": 40337,
"end_line": 40340
}
],
"assumption": false
},
{
"id": "matrix",
"label": "BrokerFailureMatrix",
"kind": "service",
"role": "participant",
"evidence": [
{
"start_line": 40325,
"end_line": 40337
}
],
"assumption": false,
"emphasis": "primary"
}
],
"edges": [
{
"id": "m1",
"from": "suite",
"to": "matrix",
"label": "isComplete Experimental",
"kind": "request",
"order": 1,
"evidence": [
{
"start_line": 40337,
"end_line": 40340
}
],
"assumption": false
},
{
"id": "m2",
"from": "matrix",
"to": "suite",
"label": "불완전 반환",
"kind": "response",
"order": 2,
"evidence": [
{
"start_line": 40340,
"end_line": 40340
}
],
"assumption": false,
"style": "dashed"
},
{
"id": "m3",
"from": "suite",
"to": "matrix",
"label": "isComplete Stable 없음",
"kind": "request",
"order": 3,
"evidence": [
{
"start_line": 40340,
"end_line": 40342
}
],
"assumption": false,
"style": "dashed",
"emphasis": "primary"
}
],
"legend": [],
"metadata": {}
}