diff --git a/tools/validate_specs.py b/tools/validate_specs.py index c5fd232..d5d24ea 100644 --- a/tools/validate_specs.py +++ b/tools/validate_specs.py @@ -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 {}