test(validation): 토큰 위생 및 플랫폼 통합 검증 체계 고도화
Snapshot Admin Web Validation / validate-snapshot-admin-smoke (push) Has been cancelled
Snapshot Admin Web Validation / validate-snapshot-admin-full (push) Has been cancelled
Quant Engine CI/CD Pipeline / validate-core (pull_request) Has been cancelled
Quant Engine CI/CD Pipeline / validate-ui-and-storage (pull_request) Has been cancelled
WBS-9.3 - NULL Policy CI Gate / NULL Policy Validation (pull_request) Has been cancelled

This commit is contained in:
2026-06-24 18:06:05 +09:00
parent 9abb8d3bc3
commit 27730704ae
24 changed files with 850 additions and 54 deletions
+20 -1
View File
@@ -40,7 +40,7 @@ def main() -> int:
gap_path = Path(args.gap) if Path(args.gap).is_absolute() else ROOT / args.gap
if not gap_path.exists():
print(f"FAIL: {gap_path} not found run build-completion-gap-v1 first")
print(f"FAIL: {gap_path} not found - run build-completion-gap-v1 first")
return 1
d = _load(gap_path)
@@ -52,6 +52,8 @@ def main() -> int:
for f in required:
if f not in d:
failures.append(f"missing field: {f}")
if "workflow_disciplines" not in d:
failures.append("missing field: workflow_disciplines")
if failures:
for f in failures:
@@ -100,6 +102,23 @@ def main() -> int:
if str(llm_field.get("current")) != "0" and llm_field.get("current") != 0:
failures.append("CRITICAL: llm_generated_decision_field_count != 0 — LLM 판단 개입")
workflow = d.get("workflow_disciplines") if isinstance(d.get("workflow_disciplines"), dict) else {}
required_order = workflow.get("required_preimplementation_order") if isinstance(workflow.get("required_preimplementation_order"), list) else []
expected_order = [
"로드맵/현황 확인",
"WBS 작성",
"목표 설정",
"성공판단 데이터 정의",
"구현",
"사후 검증",
"증빙 기록",
]
if required_order != expected_order:
failures.append(f"workflow_disciplines.required_preimplementation_order mismatch: {required_order}")
for key in ("completion_gate_rule", "small_change_rule", "scope_change_rule", "evidence_rule"):
if not str(workflow.get(key) or "").strip():
failures.append(f"workflow_disciplines missing or empty: {key}")
if failures:
for f in failures:
print("FAIL:", f)