{ "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": {} }