2.2 KiB
2.2 KiB
Phase 2 Acceptance Gate 결과
작성일: 2026-05-19
범위: Candidate Storage 및 Review 책임 경계. Lightweight/OntoCast 후보 저장 경로, review 상태 전이, audit trail, evidence 기반 promotion gate.
결과 요약
| # | Acceptance Gate 항목 | 상태 | 검증 방법 |
|---|---|---|---|
| 1 | extraction 결과가 candidate로 저장됨 | 통과 | tests/unit/test_candidate_repository.py |
| 2 | lightweight와 OntoCast 저장 경로가 분리됨 | 통과 | test_repository_saves_lightweight_candidates_with_evidence, test_repository_saves_ontocast_candidates_on_separate_source_path |
| 3 | 승인/반려/자동승인 상태 변경 이력이 남음 | 통과 | tests/unit/test_review_service.py |
| 4 | evidence 없는 항목은 승인 및 graph commit 대상이 아님 | 통과 | test_candidate_without_evidence_cannot_be_approved, test_promotion_plan_blocks_approved_candidate_without_evidence |
| 5 | Review API가 ingest/list/detail/approve/reject/promote 흐름을 제공함 | 통과 | tests/integration/test_review_api.py |
| 6 | Phase 0-1 회귀 없음 | 통과 | python -m pytest tests/unit tests/integration -q |
검증 이력
| 일자 | 검증자 | 결과 |
|---|---|---|
| 2026-05-19 | Codex | Phase 2 신규 테스트 9/9 통과. 전체 unit/integration 43/43 통과. 변경 파일 대상 ruff 통과. |
구현 메모
CandidateEntity,CandidateRelation에source_type,created_by,validation_passed,promoted_at을 추가해 review queue 계약을 명확히 했다.ReviewDecision으로 상태 변경 audit trail을 남긴다.CandidateRepository.save_lightweight_result()와save_ontocast_result()를 분리해 두 입력 경로가 같은 candidate contract로 정규화되되, 출처는 유지된다.ReviewService는pending -> approved/rejected/auto_approved,approved/auto_approved -> rejected만 허용한다.CandidatePromotionService는approved또는auto_approved이면서 evidence가 실제 존재하는 후보만 commit plan에 포함한다.- OntoCast vendored core는 수정하지 않았다.
다음 Gate
Phase 3은 Crawl4AI 수집 계층 및 Job Orchestration이다. 진행 전 PHASE_INDEX.md에서 Phase 3 항목만 명시적으로 선택해 작업한다.