docs(clean-architecture-backend-template): fold analysis into final and re-select one topic
- analysis/·source-index·state.json 을 final/document.md 제2부·제3부로 접었다. SSOT 는 하나다 - 파일럿 — commit-ambiguity-as-a-result 를 새 기준으로 재선별. 후보 14 → 글감 5 (PROMOTE 5 · MERGE_INTO 3 · KEEP_IN_SSOT 4 · 보류 2). 기록 5건을 다시 썼고 그림 1개를 techviz 로 만들었다 - 재선별이 잡은 것: 제1부 §6.2·§11.1 이 자기 §13.2 와 어긋나 있었다(레인을 안 돌렸다 vs 돌렸다) — 정정. 이미 답이 나와 있던 Question 을 HEAD 재실행 질문으로 다시 세웠다. Concept 이 인용한 코드가 SSOT 에 없어 뺐다 - candidateScope·sourceRepository 기록. 나머지 43개 주제는 재선별 대기(PENDING 905) Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
This commit is contained in:
co-authored by
Claude Fable 5.1
parent
9d2a3725c5
commit
b25357c48a
+15747
File diff suppressed because one or more lines are too long
+16009
File diff suppressed because one or more lines are too long
+255
@@ -0,0 +1,255 @@
|
||||
{
|
||||
"version": "1.1",
|
||||
"id": "commit-evidence-phase-machine",
|
||||
"title": "커밋 요청 뒤의 결과 판정",
|
||||
"question": "커밋을 넘긴 뒤 어떤 관측이 어느 결과 변형으로 이어지는가?",
|
||||
"type": "flow",
|
||||
"direction": "TB",
|
||||
"audience": [
|
||||
"백엔드 엔지니어"
|
||||
],
|
||||
"summary": "COMMIT_REQUESTED 관측 뒤 provider commit 의 결과가 네 변형 중 하나로 갈라진다.",
|
||||
"alt": "커밋 요청에서 시작해 provider commit 을 거쳐 Committed, CommittedWithPostCommitFailure, DeterminateRollback, Indeterminate 네 결과로 갈라지는 흐름도",
|
||||
"long_description": "tracker 가 COMMIT_REQUESTED 를 관측한 뒤 provider commit 을 호출한다. 예외가 없으면 Committed 다. RuntimeException 이 오면 먼저 commitAcknowledged 를 보고, 이미 afterCommit 이 왔으면 CommittedWithPostCommitFailure 다. 그렇지 않으면 rolledBack 과 UnexpectedRollbackException 과 replay 후보 여부를 보고, 하나라도 성립하면 DeterminateRollback 이다. 어느 것도 성립하지 않으면 Indeterminate 로 남는다.",
|
||||
"source_context": {
|
||||
"document": "docs/clean-architecture-backend-template/final/document.md",
|
||||
"document_sha256": "74b4986fd8621f6fd61791232777dc0e6c8ef999cbc2343df050bd5921ea03ac",
|
||||
"anchor": {
|
||||
"kind": "heading",
|
||||
"value": "3.2 트랜잭션 — `application-core` 포트에서 PostgreSQL local timeout까지",
|
||||
"line": 352
|
||||
}
|
||||
},
|
||||
"composition": {
|
||||
"profile": "component-flow",
|
||||
"diagram_only": true,
|
||||
"reference_ids": [
|
||||
"payment-event-flow"
|
||||
],
|
||||
"rationale": "커밋 요청 하나가 관측 두 번을 거쳐 네 결과 중 하나로 흘러가는 방향 있는 경로다. 참여자 간 왕복이 아니라 한 방향 갈래이므로 sequence 가 아니라 component-flow 다.",
|
||||
"focus_node": "indeterminate"
|
||||
},
|
||||
"groups": [],
|
||||
"nodes": [
|
||||
{
|
||||
"id": "commit-requested",
|
||||
"label": "COMMIT_REQUESTED",
|
||||
"kind": "process",
|
||||
"role": "source",
|
||||
"evidence": [
|
||||
{
|
||||
"start_line": 397,
|
||||
"end_line": 397
|
||||
}
|
||||
],
|
||||
"assumption": false
|
||||
},
|
||||
{
|
||||
"id": "provider-commit",
|
||||
"label": "provider commit",
|
||||
"kind": "service",
|
||||
"role": "service",
|
||||
"evidence": [
|
||||
{
|
||||
"start_line": 398,
|
||||
"end_line": 400
|
||||
}
|
||||
],
|
||||
"assumption": false
|
||||
},
|
||||
{
|
||||
"id": "ack-check",
|
||||
"label": "commitAcknowledged",
|
||||
"kind": "process",
|
||||
"role": "service",
|
||||
"evidence": [
|
||||
{
|
||||
"start_line": 401,
|
||||
"end_line": 401
|
||||
}
|
||||
],
|
||||
"assumption": false
|
||||
},
|
||||
{
|
||||
"id": "rollback-check",
|
||||
"label": "rolledBack · replay 후보",
|
||||
"kind": "process",
|
||||
"role": "service",
|
||||
"evidence": [
|
||||
{
|
||||
"start_line": 404,
|
||||
"end_line": 406
|
||||
}
|
||||
],
|
||||
"assumption": false
|
||||
},
|
||||
{
|
||||
"id": "committed",
|
||||
"label": "Committed",
|
||||
"kind": "result",
|
||||
"role": "sink",
|
||||
"evidence": [
|
||||
{
|
||||
"start_line": 388,
|
||||
"end_line": 388
|
||||
},
|
||||
{
|
||||
"start_line": 396,
|
||||
"end_line": 400
|
||||
}
|
||||
],
|
||||
"assumption": false
|
||||
},
|
||||
{
|
||||
"id": "post-commit-failure",
|
||||
"label": "CommittedWithPostCommitFailure",
|
||||
"kind": "result",
|
||||
"role": "sink",
|
||||
"evidence": [
|
||||
{
|
||||
"start_line": 402,
|
||||
"end_line": 402
|
||||
}
|
||||
],
|
||||
"assumption": false
|
||||
},
|
||||
{
|
||||
"id": "determinate-rollback",
|
||||
"label": "DeterminateRollback",
|
||||
"kind": "result",
|
||||
"role": "sink",
|
||||
"evidence": [
|
||||
{
|
||||
"start_line": 407,
|
||||
"end_line": 407
|
||||
}
|
||||
],
|
||||
"assumption": false
|
||||
},
|
||||
{
|
||||
"id": "indeterminate",
|
||||
"label": "Indeterminate",
|
||||
"kind": "result",
|
||||
"role": "sink",
|
||||
"evidence": [
|
||||
{
|
||||
"start_line": 391,
|
||||
"end_line": 391
|
||||
},
|
||||
{
|
||||
"start_line": 409,
|
||||
"end_line": 409
|
||||
}
|
||||
],
|
||||
"assumption": false,
|
||||
"emphasis": "primary"
|
||||
}
|
||||
],
|
||||
"edges": [
|
||||
{
|
||||
"id": "hand-over",
|
||||
"from": "commit-requested",
|
||||
"to": "provider-commit",
|
||||
"label": "commit(status)",
|
||||
"kind": "request",
|
||||
"evidence": [
|
||||
{
|
||||
"start_line": 397,
|
||||
"end_line": 399
|
||||
}
|
||||
],
|
||||
"assumption": false
|
||||
},
|
||||
{
|
||||
"id": "no-exception",
|
||||
"from": "provider-commit",
|
||||
"to": "committed",
|
||||
"label": "예외 없음",
|
||||
"kind": "response",
|
||||
"evidence": [
|
||||
{
|
||||
"start_line": 388,
|
||||
"end_line": 388
|
||||
},
|
||||
{
|
||||
"start_line": 396,
|
||||
"end_line": 400
|
||||
}
|
||||
],
|
||||
"assumption": false
|
||||
},
|
||||
{
|
||||
"id": "runtime-exception",
|
||||
"from": "provider-commit",
|
||||
"to": "ack-check",
|
||||
"label": "RuntimeException",
|
||||
"kind": "response",
|
||||
"evidence": [
|
||||
{
|
||||
"start_line": 400,
|
||||
"end_line": 401
|
||||
}
|
||||
],
|
||||
"assumption": false
|
||||
},
|
||||
{
|
||||
"id": "already-acked",
|
||||
"from": "ack-check",
|
||||
"to": "post-commit-failure",
|
||||
"label": "afterCommit 도착",
|
||||
"kind": "data",
|
||||
"evidence": [
|
||||
{
|
||||
"start_line": 401,
|
||||
"end_line": 402
|
||||
}
|
||||
],
|
||||
"assumption": false
|
||||
},
|
||||
{
|
||||
"id": "not-acked",
|
||||
"from": "ack-check",
|
||||
"to": "rollback-check",
|
||||
"label": "미도착",
|
||||
"kind": "data",
|
||||
"evidence": [
|
||||
{
|
||||
"start_line": 403,
|
||||
"end_line": 404
|
||||
}
|
||||
],
|
||||
"assumption": false
|
||||
},
|
||||
{
|
||||
"id": "rollback-confirmed",
|
||||
"from": "rollback-check",
|
||||
"to": "determinate-rollback",
|
||||
"label": "하나라도 성립",
|
||||
"kind": "data",
|
||||
"evidence": [
|
||||
{
|
||||
"start_line": 404,
|
||||
"end_line": 407
|
||||
}
|
||||
],
|
||||
"assumption": false
|
||||
},
|
||||
{
|
||||
"id": "no-signal",
|
||||
"from": "rollback-check",
|
||||
"to": "indeterminate",
|
||||
"label": "판정 근거 없음",
|
||||
"kind": "data",
|
||||
"evidence": [
|
||||
{
|
||||
"start_line": 409,
|
||||
"end_line": 409
|
||||
}
|
||||
],
|
||||
"assumption": false,
|
||||
"emphasis": "primary"
|
||||
}
|
||||
],
|
||||
"legend": [],
|
||||
"metadata": {}
|
||||
}
|
||||
Reference in New Issue
Block a user