{ "version": "1.1", "id": "messaging-schema-api-c03", "audience": [ "메시징 플랫폼을 읽는 사람" ], "source_context": { "document": "docs/clean-architecture-backend-template/final/document.md", "document_sha256": "8071fe71b3359d9cf60b95909c26c7b50653ce2f22bbc5fcf6988719bb91236d", "anchor": { "kind": "line", "value": 35530, "line": 35530 } }, "groups": [], "legend": [], "metadata": {}, "title": "타입만 키로 잡은 경로", "question": "미등록 버전 라벨은 어떻게 잘못된 성공이 되는가?", "type": "sequence", "direction": "LR", "summary": "타입만으로 키를 잡으면 미등록 버전이 v1 파서로 디코딩되고 v999 라벨을 단 채 성공한다.", "alt": "소비자가 v999 봉투를 받고 레지스트리에 타입만 조회해 v1 파서를 받아 디코딩한 뒤 v999 라벨이 붙은 결과를 돌려받는 순서.", "long_description": "SSOT §4.1 이 인용한 MessageContractKey javadoc 은 타입만으로 키를 잡는 것이 미등록 버전을 디코딩하게 만든 원인이라고 적는다. order.created v999 를 받은 소비자는 order.created 를 찾아 v1 클래스나 파서로 디코딩하고 결과에 v999 라벨을 유지한다. 아무것도 실패하지 않고 하위 감사 기록까지 오염된다.", "composition": { "profile": "sequence", "diagram_only": true, "reference_ids": [ "payment-approval-sequence" ], "rationale": "실패가 나지 않고 잘못된 성공이 되는 순서가 논지다.", "focus_node": "registry" }, "nodes": [ { "id": "consumer", "label": "소비자", "kind": "service", "role": "participant", "evidence": [ { "start_line": 35535, "end_line": 35541 } ], "assumption": false }, { "id": "registry", "label": "codec 레지스트리", "kind": "service", "role": "participant", "evidence": [ { "start_line": 35535, "end_line": 35541 } ], "assumption": false, "emphasis": "primary" }, { "id": "parser", "label": "v1 파서", "kind": "service", "role": "participant", "evidence": [ { "start_line": 35537, "end_line": 35539 } ], "assumption": false } ], "edges": [ { "id": "m1", "from": "consumer", "to": "registry", "label": "order.created v999 수신", "kind": "request", "evidence": [ { "start_line": 35536, "end_line": 35538 } ], "assumption": false, "order": 1 }, { "id": "m2", "from": "registry", "to": "parser", "label": "타입만 조회", "kind": "request", "evidence": [ { "start_line": 35537, "end_line": 35538 } ], "assumption": false, "order": 2 }, { "id": "m3", "from": "parser", "to": "registry", "label": "v1 파서 반환", "kind": "response", "evidence": [ { "start_line": 35538, "end_line": 35539 } ], "assumption": false, "order": 3, "style": "dashed" }, { "id": "m4", "from": "registry", "to": "consumer", "label": "v999 라벨 유지 성공", "kind": "response", "evidence": [ { "start_line": 35539, "end_line": 35543 } ], "assumption": false, "order": 4, "style": "dashed", "emphasis": "primary" } ] }