fix(validate_specs): Temp/ 런타임 아티팩트 파일 존재 체크 CI 스킵

load_sequence / bundle_profiles 파일 존재 검증 시
Temp/ 경로는 런타임 생성 아티팩트이므로 CI 체크아웃 환경에서
존재하지 않음 → 파일명이 Temp/로 시작하면 체크 스킵

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
2026-06-13 22:04:24 +09:00
parent 30f6814fcf
commit 44141ecbee
+5 -3
View File
@@ -647,12 +647,13 @@ def main() -> int:
manifest = load_yaml(ROOT / "RetirementAssetPortfolio.yaml", errors) or {}
for step_name, step in (manifest.get("load_sequence") or {}).items():
for file_name in step.get("files", []):
if "*" not in file_name and not (ROOT / file_name).exists():
# Temp/ 파일은 런타임 생성 아티팩트 — CI 체크아웃 환경에서는 존재하지 않음
if "*" not in file_name and not file_name.startswith("Temp/") and not (ROOT / file_name).exists():
fail(errors, f"manifest load_sequence missing file: {step_name}: {file_name}")
for key, file_name in (manifest.get("spec_files") or {}).items():
if not isinstance(file_name, str):
continue
if "*" not in file_name and not (ROOT / file_name).exists():
if "*" not in file_name and not file_name.startswith("Temp/") and not (ROOT / file_name).exists():
fail(errors, f"manifest spec_files missing file: {key}: {file_name}")
# All spec YAML files should be registered in manifest, governance, split indexes, or compatibility indexes.
@@ -810,7 +811,8 @@ def main() -> int:
fail(errors, f"manifest missing bundle_profiles.{profile_name}")
continue
for file_name in profile.get("files", []):
if "*" not in file_name and not (ROOT / file_name).exists():
# Temp/ 파일은 런타임 생성 아티팩트 — CI 환경에서는 스킵
if "*" not in file_name and not file_name.startswith("Temp/") and not (ROOT / file_name).exists():
fail(errors, f"bundle profile missing file: {profile_name}: {file_name}")
ownership = load_yaml(ROOT / "spec" / "ownership_map.yaml", errors) or {}