governance: harden fail-fast checks for traceability and task-test pairing (#372) #379

Merged
jihoson merged 2 commits from feature/issue-372-validator-hardening into feature/v3-session-policy-stream 2026-03-02 01:52:50 +09:00
Collaborator

Linked Issue

Scope Mapping

  • REQ: REQ-OPS-001, REQ-OPS-002, REQ-OPS-003, REQ-OPS-004
  • TASK: TASK-OPS-001, TASK-OPS-003, TASK-OPS-004
  • TEST: TEST-ACC-007, TEST-ACC-008, TEST-ACC-009, TEST-ACC-019

Summary

#378에서 처리한 comment newline guard 외에, #372의 핵심 fail-fast 강화 항목을 반영했습니다.

1) warning-only -> error 승격

  • PR traceability(REQ/TASK/TEST) 누락을 advisory가 아닌 fail-fast로 전환
  • READ-ONLY 파일 변경 시 PR body 미제공 케이스를 warning이 아닌 fail-fast로 전환

2) TASK-TEST 동반 강제

  • docs/ouroboros/30_code_level_work_orders.mdTASK-* 정의에 TEST-* 매핑을 명시
  • validator에서 각 TASK 라인에 TEST 매핑이 없으면 실패하도록 규칙 추가

3) REQ-OPS-001 fail-fast 규칙 추가

  • KST/UTC 타임존 정책 토큰의 존재를 핵심 거버넌스 문서에서 fail-fast로 검증
    • docs/ouroboros/01_requirements_registry.md
    • docs/ouroboros/30_code_level_work_orders.md
    • docs/workflow.md

Files

  • scripts/validate_governance_assets.py
  • tests/test_validate_governance_assets.py
  • docs/ouroboros/30_code_level_work_orders.md
  • docs/ouroboros/01_requirements_registry.md

Validation

  • python3 scripts/validate_governance_assets.py origin/feature/v3-session-policy-stream...HEAD
  • python3 scripts/validate_ouroboros_docs.py
  • python3 scripts/validate_docs_sync.py
  • pytest -q tests/test_validate_governance_assets.py tests/test_validate_ouroboros_docs.py
## Linked Issue - Closes #372 ## Scope Mapping - REQ: `REQ-OPS-001`, `REQ-OPS-002`, `REQ-OPS-003`, `REQ-OPS-004` - TASK: `TASK-OPS-001`, `TASK-OPS-003`, `TASK-OPS-004` - TEST: `TEST-ACC-007`, `TEST-ACC-008`, `TEST-ACC-009`, `TEST-ACC-019` ## Summary `#378`에서 처리한 comment newline guard 외에, #372의 핵심 fail-fast 강화 항목을 반영했습니다. ### 1) warning-only -> error 승격 - PR traceability(`REQ/TASK/TEST`) 누락을 advisory가 아닌 fail-fast로 전환 - READ-ONLY 파일 변경 시 PR body 미제공 케이스를 warning이 아닌 fail-fast로 전환 ### 2) TASK-TEST 동반 강제 - `docs/ouroboros/30_code_level_work_orders.md`의 `TASK-*` 정의에 `TEST-*` 매핑을 명시 - validator에서 각 TASK 라인에 TEST 매핑이 없으면 실패하도록 규칙 추가 ### 3) REQ-OPS-001 fail-fast 규칙 추가 - `KST/UTC` 타임존 정책 토큰의 존재를 핵심 거버넌스 문서에서 fail-fast로 검증 - `docs/ouroboros/01_requirements_registry.md` - `docs/ouroboros/30_code_level_work_orders.md` - `docs/workflow.md` ## Files - `scripts/validate_governance_assets.py` - `tests/test_validate_governance_assets.py` - `docs/ouroboros/30_code_level_work_orders.md` - `docs/ouroboros/01_requirements_registry.md` ## Validation - `python3 scripts/validate_governance_assets.py origin/feature/v3-session-policy-stream...HEAD` - `python3 scripts/validate_ouroboros_docs.py` - `python3 scripts/validate_docs_sync.py` - `pytest -q tests/test_validate_governance_assets.py tests/test_validate_ouroboros_docs.py`
agentson added 1 commit 2026-03-02 01:41:17 +09:00
governance: enforce fail-fast ops traceability and task-test pairing (#372)
Some checks failed
Gitea CI / test (push) Successful in 32s
Gitea CI / test (pull_request) Failing after 5s
53a6ef2968
Author
Collaborator

PR 리뷰 (Claude Code)

전체 판정: CI 실패 — 원인 확인됨 (수정 간단)


[BLOCK] CI 실패: PR 자체가 새 validator 규칙을 위반

CI 실패 원인을 로컬에서 재현했습니다.

GOVERNANCE_PR_TITLE="governance: harden..." GOVERNANCE_PR_BODY="..." python3 scripts/validate_governance_assets.py

[FAIL] governance asset validation failed
- PR text missing REQ-ID reference
- PR text missing TASK-ID reference
- PR text missing TEST-ID reference

이 PR이 도입한 validate_pr_traceability warning→error 승격이 이 PR 자체에 적용되어 실패하고 있습니다. PR body에 REQ-*, TASK-*, TEST-* 형식의 참조가 없기 때문입니다.

로컬 테스트(pytest)가 통과하는 이유는 GOVERNANCE_PR_TITLE/BODY 환경 변수가 없으면 early return하기 때문입니다. CI는 이 변수들을 실제 PR 정보로 주입하므로 실패합니다.

수정 방법: PR body에 관련 ID를 추가합니다. 예:

- REQ-OPS-002 (정책 수치 변경 시 선수정 CI 체크)
- TASK-OPS-003 (TASK-*/TEST-* 검증 게이트)
- TEST-ACC-009 (validator 테스트)

코드 품질: 양호

CI 실패를 제외하면 변경 내용은 #372의 AC를 충실히 반영합니다.

  • warning→error 승격 2건 (traceability, READ-ONLY body 미제공) — 적절
  • validate_task_test_pairing: TASK_DEF_LINE 정규식 재사용, happy/unhappy path 테스트 쌍으로 커버
  • validate_timezone_policy_tokens: 3개 문서 대상 KST/UTC 토큰 검사, 같은 테스트에서 happy/unhappy 모두 검증
  • 30_code_level_work_orders.md: 모든 TASK에 TEST-* 매핑 추가 — validator 통과 확인됨
  • 기존 테스트 이름/assert도 warn→error 변경과 일관되게 갱신됨
## PR 리뷰 (Claude Code) ### 전체 판정: ❌ CI 실패 — 원인 확인됨 (수정 간단) --- ### [BLOCK] CI 실패: PR 자체가 새 validator 규칙을 위반 CI 실패 원인을 로컬에서 재현했습니다. ``` GOVERNANCE_PR_TITLE="governance: harden..." GOVERNANCE_PR_BODY="..." python3 scripts/validate_governance_assets.py [FAIL] governance asset validation failed - PR text missing REQ-ID reference - PR text missing TASK-ID reference - PR text missing TEST-ID reference ``` 이 PR이 도입한 `validate_pr_traceability` warning→error 승격이 이 PR 자체에 적용되어 실패하고 있습니다. PR body에 `REQ-*`, `TASK-*`, `TEST-*` 형식의 참조가 없기 때문입니다. 로컬 테스트(`pytest`)가 통과하는 이유는 `GOVERNANCE_PR_TITLE/BODY` 환경 변수가 없으면 early return하기 때문입니다. CI는 이 변수들을 실제 PR 정보로 주입하므로 실패합니다. **수정 방법:** PR body에 관련 ID를 추가합니다. 예: ``` - REQ-OPS-002 (정책 수치 변경 시 선수정 CI 체크) - TASK-OPS-003 (TASK-*/TEST-* 검증 게이트) - TEST-ACC-009 (validator 테스트) ``` --- ### 코드 품질: ✅ 양호 CI 실패를 제외하면 변경 내용은 #372의 AC를 충실히 반영합니다. - warning→error 승격 2건 (traceability, READ-ONLY body 미제공) — 적절 - `validate_task_test_pairing`: TASK_DEF_LINE 정규식 재사용, happy/unhappy path 테스트 쌍으로 커버 - `validate_timezone_policy_tokens`: 3개 문서 대상 KST/UTC 토큰 검사, 같은 테스트에서 happy/unhappy 모두 검증 - `30_code_level_work_orders.md`: 모든 TASK에 TEST-* 매핑 추가 — validator 통과 확인됨 - 기존 테스트 이름/assert도 warn→error 변경과 일관되게 갱신됨
Author
Collaborator

리뷰 반영했습니다.\n\n- PR 본문에 Scope Mapping(REP/TASK/TEST ID) 추가\n - REQ-OPS-001/002/003/004\n - TASK-OPS-001/003/004\n - TEST-ACC-007/008/009/019\n- CI와 동일하게 GOVERNANCE_PR_TITLE/BODY 환경변수 주입으로 validator 재현 확인\n\n검증:\n- GOVERNANCE_PR_TITLE/BODY 주입 후 [OK] governance assets validated 통과

리뷰 반영했습니다.\n\n- PR 본문에 Scope Mapping(REP/TASK/TEST ID) 추가\n - REQ-OPS-001/002/003/004\n - TASK-OPS-001/003/004\n - TEST-ACC-007/008/009/019\n- CI와 동일하게 GOVERNANCE_PR_TITLE/BODY 환경변수 주입으로 validator 재현 확인\n\n검증:\n- GOVERNANCE_PR_TITLE/BODY 주입 후 [OK] governance assets validated 통과
Author
Collaborator

리뷰 반영했습니다.

  • PR 본문에 Scope Mapping(REQ/TASK/TEST ID) 추가
    • REQ-OPS-001/002/003/004
    • TASK-OPS-001/003/004
    • TEST-ACC-007/008/009/019
  • CI와 동일하게 GOVERNANCE_PR_TITLE/BODY 환경변수 주입으로 validator 재현 확인

검증:

  • GOVERNANCE_PR_TITLE/BODY 주입 후 python3 scripts/validate_governance_assets.py 통과
리뷰 반영했습니다. - PR 본문에 Scope Mapping(REQ/TASK/TEST ID) 추가 - REQ-OPS-001/002/003/004 - TASK-OPS-001/003/004 - TEST-ACC-007/008/009/019 - CI와 동일하게 `GOVERNANCE_PR_TITLE/BODY` 환경변수 주입으로 validator 재현 확인 검증: - `GOVERNANCE_PR_TITLE/BODY` 주입 후 `python3 scripts/validate_governance_assets.py` 통과
Author
Collaborator

추가 리뷰 (Claude Code)

이전 지적 반영 현황

항목 상태
PR body에 REQ/TASK/TEST 참조 추가 반영

판정: LGTM (CI 재트리거 필요)

업데이트된 PR body로 validator를 로컬 재현한 결과:

GOVERNANCE_PR_TITLE="..." GOVERNANCE_PR_BODY="..." python3 scripts/validate_governance_assets.py
[OK] governance assets validated

코드/테스트/문서 모두 이전 리뷰에서 양호 판정이었고, 이번 수정으로 유일한 BLOCK이 해소되었습니다.

CI 재트리거 필요

표시된 CI 실패(Failing after 5s)는 PR body 업데이트 이전 실행 결과입니다. PR body 업데이트는 Gitea CI를 자동 재트리거하지 않습니다. 빈 커밋을 추가하거나 Gitea에서 CI를 수동 재실행하면 됩니다.

git commit --allow-empty -m "ci: retrigger after PR body update"
git push origin feature/issue-372-validator-hardening
## 추가 리뷰 (Claude Code) ### 이전 지적 반영 현황 | 항목 | 상태 | |------|------| | PR body에 REQ/TASK/TEST 참조 추가 | ✅ 반영 | ### 판정: ✅ LGTM (CI 재트리거 필요) 업데이트된 PR body로 validator를 로컬 재현한 결과: ``` GOVERNANCE_PR_TITLE="..." GOVERNANCE_PR_BODY="..." python3 scripts/validate_governance_assets.py [OK] governance assets validated ``` 코드/테스트/문서 모두 이전 리뷰에서 양호 판정이었고, 이번 수정으로 유일한 BLOCK이 해소되었습니다. ### CI 재트리거 필요 표시된 CI 실패(`Failing after 5s`)는 PR body 업데이트 이전 실행 결과입니다. PR body 업데이트는 Gitea CI를 자동 재트리거하지 않습니다. 빈 커밋을 추가하거나 Gitea에서 CI를 수동 재실행하면 됩니다. ```bash git commit --allow-empty -m "ci: retrigger after PR body update" git push origin feature/issue-372-validator-hardening ```
agentson added 1 commit 2026-03-02 01:51:29 +09:00
ci: retrigger after PR body update
All checks were successful
Gitea CI / test (push) Successful in 33s
Gitea CI / test (pull_request) Successful in 32s
c849e60199
jihoson merged commit 0b64206c01 into feature/v3-session-policy-stream 2026-03-02 01:52:50 +09:00
jihoson deleted branch feature/issue-372-validator-hardening 2026-03-02 01:52:50 +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#379