{ "schema_version": 2, "document": "`application-core`는 왜 Spring DI만 허용했을까", "citation_style": "hidden", "reader_document_contains_internal_source_ids": false, "sections": [ { "section_id": "01-problem-scene", "intent": "problem_scene", "title": "코드보다 먼저 드러난 문제", "reader_question": "독자가 공감할 수 있는 구체적인 상황에서 어떤 문제가 드러났는가?", "decision_requirements": [], "evidence": [ { "id": "Lbe6cb7d8e8", "title": "branch / feature-application-port-usecase-contract — 결정 사항", "source_type": "branch-note", "status": "verified", "path": "raw/branch-notes/feature-application-port-usecase-contract.md", "heading": "결정 사항", "line_start": 14, "line_end": 21, "url": "repo:///raw/branch-notes/feature-application-port-usecase-contract.md", "accessed": "", "claim_ids": [], "decision_ids": [ "D11", "D13", "D3" ], "priority": 103.785277 }, { "id": "Lf440ea562d", "title": "branch / feature-application-port-usecase-contract — 선택의 비용", "source_type": "branch-note", "status": "verified", "path": "raw/branch-notes/feature-application-port-usecase-contract.md", "heading": "선택의 비용", "line_start": 26, "line_end": 28, "url": "repo:///raw/branch-notes/feature-application-port-usecase-contract.md", "accessed": "", "claim_ids": [], "decision_ids": [], "priority": 114.102502 }, { "id": "Ld4394f2f14", "title": "ca-tmpl - Clean Architecture 패키지 레이아웃 결정 — 실제 구현 내용", "source_type": "canonical-project", "status": "verified", "path": "wiki/projects/ca-tmpl/clean-architecture-package-layout.md", "heading": "실제 구현 내용", "line_start": 14, "line_end": 21, "url": "repo:///wiki/projects/ca-tmpl/clean-architecture-package-layout.md", "accessed": "", "claim_ids": [], "decision_ids": [], "priority": 49.973142 }, { "id": "L8db0ff5b86", "title": "ca-tmpl - Clean Architecture 패키지 레이아웃 결정 — 검증 범위", "source_type": "canonical-project", "status": "verified", "path": "wiki/projects/ca-tmpl/clean-architecture-package-layout.md", "heading": "검증 범위", "line_start": 28, "line_end": 30, "url": "repo:///wiki/projects/ca-tmpl/clean-architecture-package-layout.md", "accessed": "", "claim_ids": [], "decision_ids": [], "priority": 52.655538 } ], "evidence_gap": false }, { "section_id": "02-constraints", "intent": "constraints", "title": "문제를 어렵게 만든 제약", "reader_question": "단순한 해법을 막은 프로젝트 제약은 무엇이었는가?", "decision_requirements": [], "evidence": [ { "id": "Lbe6cb7d8e8", "title": "branch / feature-application-port-usecase-contract — 결정 사항", "source_type": "branch-note", "status": "verified", "path": "raw/branch-notes/feature-application-port-usecase-contract.md", "heading": "결정 사항", "line_start": 14, "line_end": 21, "url": "repo:///raw/branch-notes/feature-application-port-usecase-contract.md", "accessed": "", "claim_ids": [], "decision_ids": [ "D11", "D13", "D3" ], "priority": 103.785277 }, { "id": "Lf440ea562d", "title": "branch / feature-application-port-usecase-contract — 선택의 비용", "source_type": "branch-note", "status": "verified", "path": "raw/branch-notes/feature-application-port-usecase-contract.md", "heading": "선택의 비용", "line_start": 26, "line_end": 28, "url": "repo:///raw/branch-notes/feature-application-port-usecase-contract.md", "accessed": "", "claim_ids": [], "decision_ids": [], "priority": 114.102502 }, { "id": "Ld4394f2f14", "title": "ca-tmpl - Clean Architecture 패키지 레이아웃 결정 — 실제 구현 내용", "source_type": "canonical-project", "status": "verified", "path": "wiki/projects/ca-tmpl/clean-architecture-package-layout.md", "heading": "실제 구현 내용", "line_start": 14, "line_end": 21, "url": "repo:///wiki/projects/ca-tmpl/clean-architecture-package-layout.md", "accessed": "", "claim_ids": [], "decision_ids": [], "priority": 49.973142 }, { "id": "L8db0ff5b86", "title": "ca-tmpl - Clean Architecture 패키지 레이아웃 결정 — 검증 범위", "source_type": "canonical-project", "status": "verified", "path": "wiki/projects/ca-tmpl/clean-architecture-package-layout.md", "heading": "검증 범위", "line_start": 28, "line_end": 30, "url": "repo:///wiki/projects/ca-tmpl/clean-architecture-package-layout.md", "accessed": "", "claim_ids": [], "decision_ids": [], "priority": 52.655538 } ], "evidence_gap": false }, { "section_id": "03-options", "intent": "options", "title": "검토한 선택지와 막힌 지점", "reader_question": "어떤 대안들을 검토했고 각각 어디에서 비용이 생겼는가?", "decision_requirements": [ "상황·제약", "선택", "선택 이유", "검토한 대안", "수용한 비용", "보완 가드레일" ], "evidence": [ { "id": "Lbe6cb7d8e8", "title": "branch / feature-application-port-usecase-contract — 결정 사항", "source_type": "branch-note", "status": "verified", "path": "raw/branch-notes/feature-application-port-usecase-contract.md", "heading": "결정 사항", "line_start": 14, "line_end": 21, "url": "repo:///raw/branch-notes/feature-application-port-usecase-contract.md", "accessed": "", "claim_ids": [], "decision_ids": [ "D11", "D13", "D3" ], "priority": 103.785277 }, { "id": "Lf440ea562d", "title": "branch / feature-application-port-usecase-contract — 선택의 비용", "source_type": "branch-note", "status": "verified", "path": "raw/branch-notes/feature-application-port-usecase-contract.md", "heading": "선택의 비용", "line_start": 26, "line_end": 28, "url": "repo:///raw/branch-notes/feature-application-port-usecase-contract.md", "accessed": "", "claim_ids": [], "decision_ids": [], "priority": 114.102502 }, { "id": "Ld4394f2f14", "title": "ca-tmpl - Clean Architecture 패키지 레이아웃 결정 — 실제 구현 내용", "source_type": "canonical-project", "status": "verified", "path": "wiki/projects/ca-tmpl/clean-architecture-package-layout.md", "heading": "실제 구현 내용", "line_start": 14, "line_end": 21, "url": "repo:///wiki/projects/ca-tmpl/clean-architecture-package-layout.md", "accessed": "", "claim_ids": [], "decision_ids": [], "priority": 49.973142 }, { "id": "L8db0ff5b86", "title": "ca-tmpl - Clean Architecture 패키지 레이아웃 결정 — 검증 범위", "source_type": "canonical-project", "status": "verified", "path": "wiki/projects/ca-tmpl/clean-architecture-package-layout.md", "heading": "검증 범위", "line_start": 28, "line_end": 30, "url": "repo:///wiki/projects/ca-tmpl/clean-architecture-package-layout.md", "accessed": "", "claim_ids": [], "decision_ids": [], "priority": 52.655538 } ], "evidence_gap": false }, { "section_id": "04-decision-rationale", "intent": "decision_rationale", "title": "선택의 이유와 지킨 경계", "reader_question": "왜 이 선택을 했으며 무엇을 일부러 포기하거나 금지했는가?", "decision_requirements": [ "상황·제약", "선택", "선택 이유", "검토한 대안", "수용한 비용", "보완 가드레일" ], "evidence": [ { "id": "Lbe6cb7d8e8", "title": "branch / feature-application-port-usecase-contract — 결정 사항", "source_type": "branch-note", "status": "verified", "path": "raw/branch-notes/feature-application-port-usecase-contract.md", "heading": "결정 사항", "line_start": 14, "line_end": 21, "url": "repo:///raw/branch-notes/feature-application-port-usecase-contract.md", "accessed": "", "claim_ids": [], "decision_ids": [ "D11", "D13", "D3" ], "priority": 103.785277 }, { "id": "Lf440ea562d", "title": "branch / feature-application-port-usecase-contract — 선택의 비용", "source_type": "branch-note", "status": "verified", "path": "raw/branch-notes/feature-application-port-usecase-contract.md", "heading": "선택의 비용", "line_start": 26, "line_end": 28, "url": "repo:///raw/branch-notes/feature-application-port-usecase-contract.md", "accessed": "", "claim_ids": [], "decision_ids": [], "priority": 114.102502 }, { "id": "Ld4394f2f14", "title": "ca-tmpl - Clean Architecture 패키지 레이아웃 결정 — 실제 구현 내용", "source_type": "canonical-project", "status": "verified", "path": "wiki/projects/ca-tmpl/clean-architecture-package-layout.md", "heading": "실제 구현 내용", "line_start": 14, "line_end": 21, "url": "repo:///wiki/projects/ca-tmpl/clean-architecture-package-layout.md", "accessed": "", "claim_ids": [], "decision_ids": [], "priority": 49.973142 }, { "id": "L8db0ff5b86", "title": "ca-tmpl - Clean Architecture 패키지 레이아웃 결정 — 검증 범위", "source_type": "canonical-project", "status": "verified", "path": "wiki/projects/ca-tmpl/clean-architecture-package-layout.md", "heading": "검증 범위", "line_start": 28, "line_end": 30, "url": "repo:///wiki/projects/ca-tmpl/clean-architecture-package-layout.md", "accessed": "", "claim_ids": [], "decision_ids": [], "priority": 52.655538 } ], "evidence_gap": false }, { "section_id": "05-mechanism", "intent": "mechanism", "title": "선택이 코드와 흐름에 반영되는 방식", "reader_question": "결정이 모듈, 인터페이스, 제어 흐름에 어떻게 반영되는가?", "decision_requirements": [], "evidence": [ { "id": "Lbe6cb7d8e8", "title": "branch / feature-application-port-usecase-contract — 결정 사항", "source_type": "branch-note", "status": "verified", "path": "raw/branch-notes/feature-application-port-usecase-contract.md", "heading": "결정 사항", "line_start": 14, "line_end": 21, "url": "repo:///raw/branch-notes/feature-application-port-usecase-contract.md", "accessed": "", "claim_ids": [], "decision_ids": [ "D11", "D13", "D3" ], "priority": 103.785277 }, { "id": "Lf440ea562d", "title": "branch / feature-application-port-usecase-contract — 선택의 비용", "source_type": "branch-note", "status": "verified", "path": "raw/branch-notes/feature-application-port-usecase-contract.md", "heading": "선택의 비용", "line_start": 26, "line_end": 28, "url": "repo:///raw/branch-notes/feature-application-port-usecase-contract.md", "accessed": "", "claim_ids": [], "decision_ids": [], "priority": 114.102502 }, { "id": "Ld4394f2f14", "title": "ca-tmpl - Clean Architecture 패키지 레이아웃 결정 — 실제 구현 내용", "source_type": "canonical-project", "status": "verified", "path": "wiki/projects/ca-tmpl/clean-architecture-package-layout.md", "heading": "실제 구현 내용", "line_start": 14, "line_end": 21, "url": "repo:///wiki/projects/ca-tmpl/clean-architecture-package-layout.md", "accessed": "", "claim_ids": [], "decision_ids": [], "priority": 49.973142 }, { "id": "L8db0ff5b86", "title": "ca-tmpl - Clean Architecture 패키지 레이아웃 결정 — 검증 범위", "source_type": "canonical-project", "status": "verified", "path": "wiki/projects/ca-tmpl/clean-architecture-package-layout.md", "heading": "검증 범위", "line_start": 28, "line_end": 30, "url": "repo:///wiki/projects/ca-tmpl/clean-architecture-package-layout.md", "accessed": "", "claim_ids": [], "decision_ids": [], "priority": 52.655538 } ], "evidence_gap": false }, { "section_id": "06-evidence-verification", "intent": "evidence_verification", "title": "결정이 지켜지는지 확인하는 방법", "reader_question": "설명한 경계와 결과가 실제로 유지되는지 어떻게 확인하는가?", "decision_requirements": [], "evidence": [ { "id": "Lbe6cb7d8e8", "title": "branch / feature-application-port-usecase-contract — 결정 사항", "source_type": "branch-note", "status": "verified", "path": "raw/branch-notes/feature-application-port-usecase-contract.md", "heading": "결정 사항", "line_start": 14, "line_end": 21, "url": "repo:///raw/branch-notes/feature-application-port-usecase-contract.md", "accessed": "", "claim_ids": [], "decision_ids": [ "D11", "D13", "D3" ], "priority": 103.785277 }, { "id": "Lf440ea562d", "title": "branch / feature-application-port-usecase-contract — 선택의 비용", "source_type": "branch-note", "status": "verified", "path": "raw/branch-notes/feature-application-port-usecase-contract.md", "heading": "선택의 비용", "line_start": 26, "line_end": 28, "url": "repo:///raw/branch-notes/feature-application-port-usecase-contract.md", "accessed": "", "claim_ids": [], "decision_ids": [], "priority": 114.102502 }, { "id": "L8db0ff5b86", "title": "ca-tmpl - Clean Architecture 패키지 레이아웃 결정 — 검증 범위", "source_type": "canonical-project", "status": "verified", "path": "wiki/projects/ca-tmpl/clean-architecture-package-layout.md", "heading": "검증 범위", "line_start": 28, "line_end": 30, "url": "repo:///wiki/projects/ca-tmpl/clean-architecture-package-layout.md", "accessed": "", "claim_ids": [], "decision_ids": [], "priority": 52.655538 }, { "id": "Ld4394f2f14", "title": "ca-tmpl - Clean Architecture 패키지 레이아웃 결정 — 실제 구현 내용", "source_type": "canonical-project", "status": "verified", "path": "wiki/projects/ca-tmpl/clean-architecture-package-layout.md", "heading": "실제 구현 내용", "line_start": 14, "line_end": 21, "url": "repo:///wiki/projects/ca-tmpl/clean-architecture-package-layout.md", "accessed": "", "claim_ids": [], "decision_ids": [], "priority": 49.973142 } ], "evidence_gap": false }, { "section_id": "07-tradeoffs", "intent": "tradeoffs", "title": "얻은 것, 잃은 것, 적용하지 않을 때", "reader_question": "이 선택의 비용과 한계는 무엇이며 언제 다른 선택이 나은가?", "decision_requirements": [ "상황·제약", "선택", "선택 이유", "검토한 대안", "수용한 비용", "보완 가드레일" ], "evidence": [ { "id": "Lbe6cb7d8e8", "title": "branch / feature-application-port-usecase-contract — 결정 사항", "source_type": "branch-note", "status": "verified", "path": "raw/branch-notes/feature-application-port-usecase-contract.md", "heading": "결정 사항", "line_start": 14, "line_end": 21, "url": "repo:///raw/branch-notes/feature-application-port-usecase-contract.md", "accessed": "", "claim_ids": [], "decision_ids": [ "D11", "D13", "D3" ], "priority": 103.785277 }, { "id": "Lf440ea562d", "title": "branch / feature-application-port-usecase-contract — 선택의 비용", "source_type": "branch-note", "status": "verified", "path": "raw/branch-notes/feature-application-port-usecase-contract.md", "heading": "선택의 비용", "line_start": 26, "line_end": 28, "url": "repo:///raw/branch-notes/feature-application-port-usecase-contract.md", "accessed": "", "claim_ids": [], "decision_ids": [], "priority": 114.102502 }, { "id": "Ld4394f2f14", "title": "ca-tmpl - Clean Architecture 패키지 레이아웃 결정 — 실제 구현 내용", "source_type": "canonical-project", "status": "verified", "path": "wiki/projects/ca-tmpl/clean-architecture-package-layout.md", "heading": "실제 구현 내용", "line_start": 14, "line_end": 21, "url": "repo:///wiki/projects/ca-tmpl/clean-architecture-package-layout.md", "accessed": "", "claim_ids": [], "decision_ids": [], "priority": 49.973142 }, { "id": "L54271e62b5", "title": "ca-tmpl - Clean Architecture 패키지 레이아웃 결정 — 경계 검증", "source_type": "canonical-project", "status": "verified", "path": "wiki/projects/ca-tmpl/clean-architecture-package-layout.md", "heading": "경계 검증", "line_start": 22, "line_end": 27, "url": "repo:///wiki/projects/ca-tmpl/clean-architecture-package-layout.md", "accessed": "", "claim_ids": [], "decision_ids": [], "priority": 48.650226 } ], "evidence_gap": false }, { "section_id": "08-conclusion", "intent": "conclusion", "title": "결국 지키려던 것은 무엇이었나", "reader_question": "세부 기술을 걷어냈을 때 남는 판단은 무엇인가?", "decision_requirements": [], "evidence": [], "evidence_gap": false } ], "sources": [ { "id": "Lf440ea562d", "title": "branch / feature-application-port-usecase-contract — 선택의 비용", "source_type": "branch-note", "status": "verified", "path": "raw/branch-notes/feature-application-port-usecase-contract.md", "heading": "선택의 비용", "line_start": 26, "line_end": 28, "url": "repo:///raw/branch-notes/feature-application-port-usecase-contract.md", "accessed": "", "claim_ids": [], "decision_ids": [], "priority": 114.102502 }, { "id": "Lbe6cb7d8e8", "title": "branch / feature-application-port-usecase-contract — 결정 사항", "source_type": "branch-note", "status": "verified", "path": "raw/branch-notes/feature-application-port-usecase-contract.md", "heading": "결정 사항", "line_start": 14, "line_end": 21, "url": "repo:///raw/branch-notes/feature-application-port-usecase-contract.md", "accessed": "", "claim_ids": [], "decision_ids": [ "D11", "D13", "D3" ], "priority": 103.785277 }, { "id": "L8db0ff5b86", "title": "ca-tmpl - Clean Architecture 패키지 레이아웃 결정 — 검증 범위", "source_type": "canonical-project", "status": "verified", "path": "wiki/projects/ca-tmpl/clean-architecture-package-layout.md", "heading": "검증 범위", "line_start": 28, "line_end": 30, "url": "repo:///wiki/projects/ca-tmpl/clean-architecture-package-layout.md", "accessed": "", "claim_ids": [], "decision_ids": [], "priority": 52.655538 }, { "id": "Ld4394f2f14", "title": "ca-tmpl - Clean Architecture 패키지 레이아웃 결정 — 실제 구현 내용", "source_type": "canonical-project", "status": "verified", "path": "wiki/projects/ca-tmpl/clean-architecture-package-layout.md", "heading": "실제 구현 내용", "line_start": 14, "line_end": 21, "url": "repo:///wiki/projects/ca-tmpl/clean-architecture-package-layout.md", "accessed": "", "claim_ids": [], "decision_ids": [], "priority": 49.973142 }, { "id": "L54271e62b5", "title": "ca-tmpl - Clean Architecture 패키지 레이아웃 결정 — 경계 검증", "source_type": "canonical-project", "status": "verified", "path": "wiki/projects/ca-tmpl/clean-architecture-package-layout.md", "heading": "경계 검증", "line_start": 22, "line_end": 27, "url": "repo:///wiki/projects/ca-tmpl/clean-architecture-package-layout.md", "accessed": "", "claim_ids": [], "decision_ids": [], "priority": 48.650226 }, { "id": "L6d3ebbb7a0", "title": "branch / feature-application-port-usecase-contract — 구현 및 검증", "source_type": "branch-note", "status": "verified", "path": "raw/branch-notes/feature-application-port-usecase-contract.md", "heading": "구현 및 검증", "line_start": 22, "line_end": 25, "url": "repo:///raw/branch-notes/feature-application-port-usecase-contract.md", "accessed": "", "claim_ids": [], "decision_ids": [], "priority": 37.568259 }, { "id": "L1259369d94", "title": "branch / feature-log-management-contract — 근거 경계", "source_type": "branch-note", "status": "raw", "path": "raw/branch-notes/feature-log-management-contract.md", "heading": "근거 경계", "line_start": 15, "line_end": 19, "url": "repo:///raw/branch-notes/feature-log-management-contract.md", "accessed": "", "claim_ids": [], "decision_ids": [], "priority": 35.500648 }, { "id": "Lcb081a533b", "title": "Spring component stereotype and scanning notes — Evidence boundary", "source_type": "official-doc", "status": "reviewed", "path": "raw/official-docs/spring-component-scanning.md", "heading": "Evidence boundary", "line_start": 13, "line_end": 15, "url": "repo:///raw/official-docs/spring-component-scanning.md", "accessed": "", "claim_ids": [], "decision_ids": [], "priority": 22.580387 }, { "id": "L058b642200", "title": "Spring component stereotype and scanning notes — Supported behavior", "source_type": "official-doc", "status": "reviewed", "path": "raw/official-docs/spring-component-scanning.md", "heading": "Supported behavior", "line_start": 9, "line_end": 12, "url": "repo:///raw/official-docs/spring-component-scanning.md", "accessed": "", "claim_ids": [], "decision_ids": [], "priority": 15.066716 }, { "id": "L0ed1686206", "title": "branch / feature-log-management-contract — 결정 사항", "source_type": "branch-note", "status": "raw", "path": "raw/branch-notes/feature-log-management-contract.md", "heading": "결정 사항", "line_start": 10, "line_end": 14, "url": "repo:///raw/branch-notes/feature-log-management-contract.md", "accessed": "", "claim_ids": [], "decision_ids": [], "priority": 11.50868 } ] }