process: enforce issue-status consistency for completion marks (#390) #391

Merged
jihoson merged 3 commits from feature/issue-390-validate-completion-consistency into feature/v3-session-policy-stream 2026-03-02 10:38:21 +09:00
Collaborator

Summary

  • add issue-status consistency validation for docs/ouroboros/80_implementation_audit.md
  • fail when same issue id appears as both pending (잔여/오픈 상태/추적) and done (✅/머지/해소/완료)
  • add regression tests for conflict and done-only cases
  • align audit doc statuses for #328 and REQ-V3-004 to remove contradictory markings
  • sync docs/ouroboros/01_requirements_registry.md for governance policy-doc change gate

Traceability

  • REQ-ID: REQ-OPS-002, REQ-OPS-003
  • TASK-ID: TASK-OPS-002, TASK-OPS-003
  • TEST-ID: TEST-ACC-008, TEST-ACC-009

Validation

  • pytest -q tests/test_validate_ouroboros_docs.py tests/test_validate_docs_sync.py
  • python3 scripts/validate_ouroboros_docs.py
  • python3 scripts/validate_governance_assets.py feature/v3-session-policy-stream...HEAD

Linked Issue

## Summary - add issue-status consistency validation for `docs/ouroboros/80_implementation_audit.md` - fail when same issue id appears as both pending (`잔여/오픈 상태/추적`) and done (`✅/머지/해소/완료`) - add regression tests for conflict and done-only cases - align audit doc statuses for #328 and REQ-V3-004 to remove contradictory markings - sync `docs/ouroboros/01_requirements_registry.md` for governance policy-doc change gate ## Traceability - REQ-ID: `REQ-OPS-002`, `REQ-OPS-003` - TASK-ID: `TASK-OPS-002`, `TASK-OPS-003` - TEST-ID: `TEST-ACC-008`, `TEST-ACC-009` ## Validation - `pytest -q tests/test_validate_ouroboros_docs.py tests/test_validate_docs_sync.py` - `python3 scripts/validate_ouroboros_docs.py` - `python3 scripts/validate_governance_assets.py feature/v3-session-policy-stream...HEAD` ## Linked Issue - closes #390
agentson added 1 commit 2026-03-02 09:59:53 +09:00
process: enforce issue-status consistency in audit doc validation (#390)
Some checks failed
Gitea CI / test (push) Successful in 32s
Gitea CI / test (pull_request) Failing after 5s
ade5971387
agentson added 1 commit 2026-03-02 10:03:41 +09:00
docs: sync requirements registry for governance gate (#390)
All checks were successful
Gitea CI / test (push) Successful in 32s
Gitea CI / test (pull_request) Successful in 32s
453d67b91c
Author
Collaborator

PR #391 코드 리뷰 — process: enforce issue-status consistency for completion marks (#390)

범위: 80_implementation_audit.md의 이슈 완료/미완료 상태 모순 감지 검증 게이트 추가


통과 항목

1. validate_issue_status_consistency() 구현

  • 정규식 3개 정의: ISSUE_REF_PATTERN, ISSUE_DONE_PATTERN, ISSUE_PENDING_PATTERN
  • 줄별로 이슈 번호를 수집, done/pending 라인 집합을 각각 축적
  • 교집합 이슈에 대해 에러 발생 (done 줄 + pending 줄 목록 포함)
  • is_done = bool(ISSUE_DONE_PATTERN.search(line)) and not is_pending — 동일 줄에 두 패턴이 공존 시 pending 우선 처리

2. 적용 범위

  • main()path.name == "80_implementation_audit.md" 조건으로 한정
  • 이슈 상태 추적이 의미 있는 파일에만 적용

3. 테스트

  • test_validate_issue_status_consistency_reports_conflicts: #328 동일 이슈가 done/pending 양쪽 → 에러 1개 발생 검증
  • test_validate_issue_status_consistency_allows_done_only: done-only → 에러 0 검증
  • 로컬 실행: 13 passed in 0.03s

4. audit.md 상태 정합화

  • REQ-V3-004: ⚠️ 부분 → 완료
    • #328 (가격/세션 재검증 강화)는 PR #345로 feature/v3-session-policy-stream에 실제 머지 완료
  • GAP-4: ⚠️ 부분 해소 → 해소, 현 상태 설명 구체화
  • 잔여 개선 항목에서 "세션 경계 E2E 통합 테스트 보강 (GAP-3 잔여)" 제거 → PR #376 완료로 GAP-3 이미 , 타당

5. 문서 버전 1.0.12 + 변경 이력 섹션 추가


⚠️ 소견 1 — ISSUE_PENDING_PATTERN의 "추적" 키워드 false positive 가능성 (Non-blocking)

ISSUE_PENDING_PATTERN = re.compile(r"(?:잔여|오픈 상태|추적)")

현재 audit.md에서 "추적"이 이슈 번호와 동반된 경우는 모두 "잔여" 문맥(#372 잔여)이라 오분류 없음.
그러나 향후 "#390 추적성 검증 도구 추가 ( 완료)" 같은 문장이 생기면
"추적"을 포함하므로 is_pending=True가 되어 done으로 분류되지 않음 — 충돌 감지 우회 가능.

권장: r"(?:잔여|오픈 상태|추적 이슈)" 처럼 "추적 이슈"로 좁히거나,
또는 pending-only 케이스 테스트 추가(#999 잔여 추적 → 에러 없음)로 동작 명세화.


결론

LGTM — 검증 게이트 구현 명확, 테스트 통과, audit.md 상태 정합화 사실 기반.
소견은 Non-blocking으로 별도 처리 가능합니다.

## PR #391 코드 리뷰 — process: enforce issue-status consistency for completion marks (#390) **범위**: `80_implementation_audit.md`의 이슈 완료/미완료 상태 모순 감지 검증 게이트 추가 --- ### ✅ 통과 항목 **1. validate_issue_status_consistency() 구현** - 정규식 3개 정의: `ISSUE_REF_PATTERN`, `ISSUE_DONE_PATTERN`, `ISSUE_PENDING_PATTERN` - 줄별로 이슈 번호를 수집, done/pending 라인 집합을 각각 축적 - 교집합 이슈에 대해 에러 발생 (done 줄 + pending 줄 목록 포함) - `is_done = bool(ISSUE_DONE_PATTERN.search(line)) and not is_pending` — 동일 줄에 두 패턴이 공존 시 pending 우선 처리 ✅ **2. 적용 범위** - `main()` 내 `path.name == "80_implementation_audit.md"` 조건으로 한정 - 이슈 상태 추적이 의미 있는 파일에만 적용 ✅ **3. 테스트** - `test_validate_issue_status_consistency_reports_conflicts`: `#328` 동일 이슈가 done/pending 양쪽 → 에러 1개 발생 검증 - `test_validate_issue_status_consistency_allows_done_only`: done-only → 에러 0 검증 - 로컬 실행: 13 passed in 0.03s ✅ **4. audit.md 상태 정합화** - REQ-V3-004: ⚠️ 부분 → ✅ 완료 - `#328` (가격/세션 재검증 강화)는 PR #345로 `feature/v3-session-policy-stream`에 실제 머지 완료 ✅ - GAP-4: ⚠️ 부분 해소 → ✅ 해소, 현 상태 설명 구체화 - 잔여 개선 항목에서 "세션 경계 E2E 통합 테스트 보강 (GAP-3 잔여)" 제거 → PR #376 완료로 GAP-3 이미 ✅, 타당 **5. 문서 버전 1.0.12 + 변경 이력 섹션 추가** --- ### ⚠️ 소견 1 — ISSUE_PENDING_PATTERN의 "추적" 키워드 false positive 가능성 (Non-blocking) ```python ISSUE_PENDING_PATTERN = re.compile(r"(?:잔여|오픈 상태|추적)") ``` 현재 audit.md에서 "추적"이 이슈 번호와 동반된 경우는 모두 "잔여" 문맥(`#372` 잔여)이라 오분류 없음. 그러나 향후 "`#390` 추적성 검증 도구 추가 (✅ 완료)" 같은 문장이 생기면 "추적"을 포함하므로 `is_pending=True`가 되어 done으로 분류되지 않음 — 충돌 감지 우회 가능. 권장: `r"(?:잔여|오픈 상태|추적 이슈)"` 처럼 "추적 이슈"로 좁히거나, 또는 pending-only 케이스 테스트 추가(`#999 잔여 추적` → 에러 없음)로 동작 명세화. --- ### 결론 **LGTM** — 검증 게이트 구현 명확, 테스트 통과, audit.md 상태 정합화 사실 기반. 소견은 Non-blocking으로 별도 처리 가능합니다.
agentson added 1 commit 2026-03-02 10:34:01 +09:00
test: narrow pending keyword and add pending-only guard (#390)
All checks were successful
Gitea CI / test (pull_request) Successful in 33s
Gitea CI / test (push) Successful in 32s
7c17535c3d
Author
Collaborator

추가 리뷰 — test: narrow pending keyword and add pending-only guard (#390)

커밋: 7c17535

소견 반영 확인

소견 1 (추적 → 추적 이슈)

ISSUE_PENDING_PATTERN 좁히기:

# 이전
ISSUE_PENDING_PATTERN = re.compile(r"(?:잔여|오픈 상태|추적)")
# 이후
ISSUE_PENDING_PATTERN = re.compile(r"(?:잔여|오픈 상태|추적 이슈)")

"추적성", "추적 결과" 등 done 문맥에서 false positive 유발 가능성 제거

테스트 갱신

  • test_validate_issue_status_consistency_reports_conflicts: conflict 픽스처에서 추적잔여으로 교체 (패턴 변경과 일관성 유지)
  • test_validate_issue_status_consistency_allows_pending_only 신규:
    • "#390 추적 이슈"is_pending=True, 에러 없음 검증

로컬 실행: 8 passed in 0.02s


결론

LGTM — 소견 반영 완료. 머지 준비 완료.

## 추가 리뷰 — test: narrow pending keyword and add pending-only guard (#390) **커밋**: 7c17535 ### ✅ 소견 반영 확인 **소견 1 (추적 → 추적 이슈)** `ISSUE_PENDING_PATTERN` 좁히기: ```python # 이전 ISSUE_PENDING_PATTERN = re.compile(r"(?:잔여|오픈 상태|추적)") # 이후 ISSUE_PENDING_PATTERN = re.compile(r"(?:잔여|오픈 상태|추적 이슈)") ``` "추적성", "추적 결과" 등 done 문맥에서 false positive 유발 가능성 제거 ✅ **테스트 갱신** - `test_validate_issue_status_consistency_reports_conflicts`: conflict 픽스처에서 `추적` → `잔여`으로 교체 (패턴 변경과 일관성 유지) ✅ - `test_validate_issue_status_consistency_allows_pending_only` 신규: - `"#390 추적 이슈"` → `is_pending=True`, 에러 없음 검증 ✅ 로컬 실행: 8 passed in 0.02s ✅ --- ### 결론 **LGTM** — 소견 반영 완료. 머지 준비 완료.
jihoson merged commit 7cd818f1e2 into feature/v3-session-policy-stream 2026-03-02 10:38:21 +09:00
jihoson deleted branch feature/issue-390-validate-completion-consistency 2026-03-02 10:38:22 +09:00
Sign in to join this conversation.
No Reviewers
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: jihoson/The-Ouroboros#391