meta: title: "은퇴자산포트폴리오 — 문서 소유권 맵" version: "2026-05-15-F10_fragmentation_guard" role: "governance" purpose: "파일별 책임 범위를 고정해 문서 파편화와 규칙 중복을 방지한다." ownership_map: "spec/00_execution_contract.yaml": owns: ["master_prohibitions", "hard_stops", "capture_read_ledger", "order_validation_contract"] must_not_own: ["종목 점수", "시장국면 세부 계산", "계좌별 세제 라우팅"] "spec/risk/aggregate_risk.yaml": owns: ["Total_Heat", "포트폴리오 하드스톱", "상관충격", "통합 리스크 엔진"] must_not_own: ["종목 진입 점수", "HTS 출력 스키마"] "spec/risk/circuit_breakers.yaml": owns: ["서킷브레이커", "거래비용 통제", "집중도 브레이크", "섹터 급락 대응"] must_not_own: ["종목 진입 점수", "HTS 출력 스키마"] "spec/risk/market_risk_cash.yaml": owns: ["MRS 현금 비중", "VIX/US10Y 위험 현금 룰"] must_not_own: ["종목 진입 점수", "HTS 출력 스키마"] "spec/risk/risk_control.yaml": owns: ["risk_control compatibility index"] must_not_own: ["새 임계값"] "spec/risk/portfolio_exposure.yaml": owns: ["cash_floor", "중복노출", "목표 버킷", "ETF 단계 감축", "현금 버퍼"] must_not_own: ["개별 종목 점수", "JSON Schema"] "spec/risk/quality_control.yaml": owns: ["리스크 품질관리 요약", "금지 규칙 참조"] must_not_own: ["새 임계값"] "spec/strategy/sector_model.yaml": owns: ["sector_model", "CSCS", "등급 alias"] must_not_own: ["계좌 라우팅", "현금 하한"] "spec/strategy/entry_gates.yaml": owns: ["entry_timing_guardrails", "daily_leader_scan", "anti_climax_buy_gate", "staged_entry", "pullback_reentry"] must_not_own: ["Total_Heat", "capture_read_ledger"] "spec/strategy/stock_model.yaml": owns: ["stock_model", "core_satellite_rule"] must_not_own: ["시장 전체 현금 비중"] "spec/strategy/rebalancing_trigger.yaml": owns: ["rebalancing_trigger"] must_not_own: ["손절/익절 세부 실행"] "spec/02_data_contract.yaml": owns: ["source_priority", "data_rule", "data_completeness_gate", "xlsx_analysis_protocol"] must_not_own: ["매수/매도 결론"] "spec/12_field_dictionary.yaml": owns: ["canonical field names", "field aliases", "field units", "field missing policy"] must_not_own: ["투자 판단 임계값", "매수/매도 결론"] "spec/13_formula_registry.yaml": owns: ["executable formulas", "formula inputs", "formula outputs", "formula missing policy"] must_not_own: ["보고서 양식", "예시 케이스"] "spec/14_raw_workbook_mapping.yaml": owns: ["raw workbook sheets", "raw workbook columns", "workbook to canonical field mapping"] must_not_own: ["계좌 보유수량", "계좌 현금"] "spec/15_account_snapshot_contract.yaml": owns: ["image capture account snapshot", "holding quantity", "average cost", "cash fields", "open orders"] must_not_own: ["시장 가격 수집", "섹터 점수"] "spec/05_position_sizing.yaml": owns: ["volatility_targeting", "bayesian_confidence", "kelly brake", "integer sizing"] must_not_own: ["보유수량 판독", "보고서 양식"] "spec/06_exit_policy.yaml": owns: ["exit policy compatibility index"] must_not_own: ["새 임계값", "신규매수 게이트"] "spec/exit/stop_loss.yaml": owns: ["stop_loss"] must_not_own: ["신규매수 게이트"] "spec/exit/take_profit.yaml": owns: ["take_profit"] must_not_own: ["신규매수 게이트"] "spec/exit/proactive_exit_radar.yaml": owns: ["proactive_exit_radar", "divergence_alert", "overhang_warning", "rotation_radar"] must_not_own: ["신규매수 게이트"] "spec/exit/event_response.yaml": owns: ["event_response"] must_not_own: ["신규매수 게이트"] "spec/exit/position_review.yaml": owns: ["position_review_cycle"] must_not_own: ["신규매수 게이트"] "spec/07_output_schema.yaml": owns: ["recommendation_grade", "HTS table columns", "human output contract"] must_not_own: ["투자 판단 임계값"] "schemas/output_schema.json": owns: ["machine-readable final output schema"] must_not_own: ["투자 규칙 수치"] # ── 호환 인덱스 (redirect-only, 실제 규칙은 canonical_split_files 참조) ── "spec/03_risk_policy.yaml": role: "compatibility_index" owns: ["legacy path alias for spec/risk/*.yaml"] must_not_own: ["수치 임계값", "새 리스크 규칙"] canonical_files: ["spec/risk/portfolio_exposure.yaml", "spec/risk/risk_control.yaml", "spec/risk/quality_control.yaml"] "spec/04_strategy_rules.yaml": role: "compatibility_index" owns: ["legacy path alias for spec/strategy/*.yaml"] must_not_own: ["수치 임계값", "새 전략 규칙"] canonical_files: ["spec/strategy/sector_model.yaml", "spec/strategy/entry_gates.yaml", "spec/strategy/stock_model.yaml", "spec/strategy/rebalancing_trigger.yaml"] "spec/06_exit_policy.yaml": role: "compatibility_index" owns: ["legacy path alias for spec/exit/*.yaml"] must_not_own: ["새 손절/익절 임계값"] canonical_files: ["spec/exit/stop_loss.yaml", "spec/exit/take_profit.yaml", "spec/exit/proactive_exit_radar.yaml", "spec/exit/event_response.yaml", "spec/exit/position_review.yaml"] # ── 계산 스키마 ─────────────────────────────────────────────────────────── "spec/08_scoring_rules.yaml": owns: ["SS001_SECTOR_MODEL_SCORE 계산 규칙", "SS001 6축 점수 임계값", "KOSDAQ 정규화 공식"] must_not_own: ["포트폴리오 현금 비중", "exit 규칙"] "spec/09_decision_flow.yaml": owns: ["Allowed_Action 결정 흐름", "하드게이트 우선순위 순서"] must_not_own: ["점수 임계값", "포지션 사이징 공식"] "spec/10_portfolio_rules.yaml": owns: ["버킷 할당 목표", "core/satellite 비율 규칙"] must_not_own: ["개별 종목 점수", "시장국면 판정"] "spec/11_market_regime.yaml": owns: ["MARKET_REGIME_V1 판정 로직", "MRS 계산 공식", "REGIME 6개 상태 정의"] must_not_own: ["개별 종목 점수", "포지션 사이징"] # ── 운영 계약서 ────────────────────────────────────────────────────────── "spec/16_data_gaps_roadmap.yaml": owns: ["미구현 항목 추적", "구현 우선순위 로드맵"] must_not_own: ["확정된 계산 공식", "임계값"] "spec/17_performance_contract.yaml": owns: ["performance 탭 구조", "Bayesian multiplier 계산 규칙", "fc_bucket 집계"] must_not_own: ["시장국면 판정", "종목 스크리닝"] "spec/18_settings_contract.yaml": owns: ["settings 탭 파라미터 정의", "total_asset_krw", "risk_budget_override", "orbit_* 키"] must_not_own: ["계산 공식", "임계값 수치"] "spec/21_harness_governance_contract.yaml": owns: ["하네스 거버넌스 3중잠금", "실행 하드락", "배포 차단 정책"] must_not_own: ["개별 종목 점수", "주문 가격 산출식"] "spec/strategy_execution_lock_policy.yaml": owns: ["전략 실행락 임계값", "점수 하네스 기반 BUY/SELL 통제 임계치"] must_not_own: ["주문 가격 산출식", "시장국면 판정"] # ── 전략 세부 파일 ────────────────────────────────────────────────────── "spec/strategy/discovery.yaml": owns: ["종목 발굴 기준", "스크리닝 필터"] must_not_own: ["손절/익절 실행", "계좌 현금"] "spec/strategy/entry_core.yaml": owns: ["진입 체크리스트", "core 포지션 진입 기준"] must_not_own: ["Total_Heat 계산", "capture_read_ledger"] policy: - "새 규칙 추가 전 ownership_map에서 소유 파일을 먼저 확인한다." - "must_not_own 영역에 규칙을 추가하면 validate_specs.py에서 실패 처리한다." - "임계값은 canonical 소유 파일에만 추가한다."