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,136 @@
{
"version": "1.1",
"id": "adapter-outbound-support-c02",
"title": "판정과 기록의 갈림",
"question": "fail-open 실패를 누가 정하고 로거는 무엇을 하는가?",
"type": "data-flow",
"direction": "LR",
"audience": [
"플랫폼 어댑터를 읽는 사람"
],
"summary": "fail-open 여부는 호출 지점이 정하고 로거는 이미 정해진 결과를 관측만 한다.",
"alt": "호출 지점에서 fail-open outcome 으로 판정이 가고, outcome 에서 호출자로 결과가, 로거로 관측이 간다. 로거에서 나가는 화살표는 없다.",
"long_description": "SSOT §3 은 FailOpenDependencyLogger 가 retry·recovery·fallback 을 수행하지 않고 이미 결정된 fail-open outcome 을 관측하는 기술 seam 이라고 적는다(3205). WARN 을 고른 이유도 core use case 자체는 성공했기 때문이다(3203). 그래서 로거에서 업무 경로로 되돌아오는 화살표가 없다.",
"source_context": {
"document": "docs/clean-architecture-backend-template/final/document.md",
"document_sha256": "8071fe71b3359d9cf60b95909c26c7b50653ce2f22bbc5fcf6988719bb91236d",
"anchor": {
"kind": "line",
"value": 3186,
"line": 3186
}
},
"composition": {
"profile": "component-flow",
"diagram_only": true,
"reference_ids": [
"payment-event-flow"
],
"rationale": "결과가 호출 지점에서 호출자와 로거로 흐르는 방향이 논지다. 로거가 끝점이라는 것이 그림의 주장이다.",
"focus_node": "outcome"
},
"groups": [],
"nodes": [
{
"id": "call-site",
"label": "호출 지점",
"kind": "service",
"role": "source",
"evidence": [
{
"start_line": 3209,
"end_line": 3219
}
],
"assumption": false
},
{
"id": "outcome",
"label": "fail-open outcome",
"kind": "service",
"role": "service",
"evidence": [
{
"start_line": 3203,
"end_line": 3205
}
],
"assumption": false,
"emphasis": "primary"
},
{
"id": "caller",
"label": "호출자",
"kind": "service",
"role": "sink",
"evidence": [
{
"start_line": 3203,
"end_line": 3203
}
],
"assumption": false
},
{
"id": "logger",
"label": "FailOpenDependencyLogger",
"kind": "observability",
"role": "sink",
"evidence": [
{
"start_line": 3205,
"end_line": 3205
}
],
"assumption": false
}
],
"edges": [
{
"id": "decide",
"from": "call-site",
"to": "outcome",
"label": "fail-open 판정",
"kind": "request",
"evidence": [
{
"start_line": 3205,
"end_line": 3205
}
],
"assumption": false
},
{
"id": "result",
"from": "outcome",
"to": "caller",
"label": "결과 반환",
"kind": "response",
"evidence": [
{
"start_line": 3203,
"end_line": 3203
}
],
"assumption": false,
"emphasis": "primary"
},
{
"id": "observe",
"from": "outcome",
"to": "logger",
"label": "관측",
"kind": "data",
"evidence": [
{
"start_line": 3205,
"end_line": 3205
}
],
"assumption": false,
"style": "dashed"
}
],
"legend": [],
"metadata": {}
}