fix: #412/#413/#414 runtime stability and PR governance preflight #415
Reference in New Issue
Block a user
Delete Branch "feature/issue-412-413-414-runtime-and-governance"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Linked Issue
Scope
REQ-OPS-001(운영 안정성 및 프로세스 무결성)TASK-OPS-001(runtime 모니터 안정화 및 거버넌스 preflight 추가)TEST-OPS-001(monitor pipefail 회귀 테스트 + governance ID 검증 테스트)Ticket Stage
ImplementedSummary
#413 — runtime_verify_monitor.sh pipefail 수정
find_live_pids()에서pgrep이 no-match(exit 1)를 반환할 때set -euo pipefail에 의해 스크립트 전체가 조기 종료되는 버그 수정local raw; raw=$(pgrep ...) || true패턴으로 pipefail 트리거 방지#412 — 스타트업 CancelledError 로깅 추가
sync_positions_from_broker호출부에asyncio.CancelledError캐치 추가except Exception은BaseException하위의CancelledError를 잡지 못하므로 별도 핸들러 추가#414 — PR 거버넌스 preflight 추가
scripts/validate_pr_body.py: REQ-ID/TASK-ID/TEST-ID 패턴 검증 추가 (--no-governance플래그로 비활성화 가능)docs/workflow.md: "PR Governance Preflight (Mandatory)" 섹션 추가docs/commands.md:tea pulls create전에 실행할 preflight 명령 문서화Main -> Verifier Directive Contract
Verifier Coverage Matrix (Required)
NOT_OBSERVED가 1개라도 있으면 승인/머지 금지.Gitea Preflight
docs/commands.md와docs/workflow.md트러블슈팅 선확인tea사용 (gh미사용)Session Handover Gate
python3 scripts/session_handover_check.py --strict통과workflow/session-handover.md최신 엔트리 갱신### 2026-03-04 | session=claude-issues412-413-414Docs Sync Gate (docs 파일 변경 시 필수)
python3 scripts/validate_docs_sync.py통과Runtime Evidence
pytest -q(1081 passed)READ-ONLY Approval (Required when touching READ-ONLY files)
Approval Gate
리뷰 코멘트 남깁니다.
scripts/validate_pr_body.py(거버넌스 ID 검사)재현:
EOT
python3 scripts/validate_pr_body.py --body-file /tmp/pr_body_spoof.md
[OK] PR body validation passed
보정 코멘트(포맷 정리):
scripts/validate_pr_body.py(거버넌스 ID 검사)재현:
권장 수정:
_strip_code_segments()결과(코드 영역 제외 텍스트) 기준으로 수행리뷰 반영 완료 (commit
01e4e0f)추가 리뷰 코멘트 남깁니다.
scripts/validate_pr_body.py재현 결과:
REQ-FAKE-999/TASK-FAKE-999/TEST-FAKE-999를 넣어도validate_pr_body.py --body-file ...가 통과합니다.권장:
_strip_code_segments()결과(코드 영역 제외 텍스트) 기준으로 수행해주세요.