fix: #412/#413/#414 runtime stability and PR governance preflight
## #413 — runtime_verify_monitor.sh pipefail fix - find_live_pids() now captures pgrep output via local variable with || true so pipefail never triggers on no-match (pgrep exit 1) - Regression test added: monitor survives MAX_LOOPS=1 without crash ## #412 — startup crash logging improvement - Add asyncio.CancelledError catch in sync_positions_from_broker call so BaseException-level cancellations are logged before propagating - Provides evidence in run log if CancelledError causes future startup aborts ## #414 — PR governance preflight - validate_pr_body.py: add REQ-ID/TASK-ID/TEST-ID pattern checks (--no-governance flag to skip) - docs/workflow.md: new "PR Governance Preflight (Mandatory)" section - docs/commands.md: "PR Body Governance Preflight" section before tea pulls create - Tests: 4 new governance traceability tests in test_validate_pr_body.py Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
@@ -59,6 +59,20 @@ scripts/tea_comment.sh 374 /tmp/comment.md
|
||||
- `scripts/tea_comment.sh` accepts stdin with `-` as body source.
|
||||
- The helper fails fast when body looks like escaped-newline text only.
|
||||
|
||||
#### PR Body Governance Preflight (Mandatory before `tea pulls create`)
|
||||
|
||||
PR 본문 파일 준비 후, **생성 전에** 아래 명령으로 형식 + 거버넌스 traceability를 검증한다.
|
||||
|
||||
```bash
|
||||
python3 scripts/validate_pr_body.py --body-file /tmp/pr_body.md
|
||||
```
|
||||
|
||||
검증 항목: `\n` 이스케이프, 마크다운 헤더, 리스트, **REQ-ID, TASK-ID, TEST-ID** 포함.
|
||||
|
||||
검증 실패 시:
|
||||
- PR 본문에 실제 REQ-ID/TASK-ID/TEST-ID를 채운 뒤 재검증 통과 후에만 `tea pulls create` 실행
|
||||
- placeholder(`REQ-...`, `TASK-...`, `TEST-...`) 형태는 CI에서 실패 처리됨
|
||||
|
||||
#### PR Body Post-Check (Mandatory)
|
||||
|
||||
PR 생성 직후 본문이 `\n` 문자열로 깨지지 않았는지 반드시 확인한다.
|
||||
|
||||
@@ -30,6 +30,27 @@ Gitea 이슈/PR/코멘트 작업 전에 모든 에이전트는 아래를 먼저
|
||||
- `tea` 실패 시 동일 명령 재시도 전에 원인/수정사항을 PR 코멘트에 남긴다.
|
||||
- 필요한 경우에만 Gitea API(`localhost:3000`)를 fallback으로 사용한다.
|
||||
|
||||
## PR Governance Preflight (Mandatory before `tea pr create`)
|
||||
|
||||
`tea pulls create` 실행 전에 아래 명령으로 PR 본문을 검증해야 한다.
|
||||
|
||||
```bash
|
||||
# PR 본문을 파일로 저장한 뒤 검증
|
||||
python3 scripts/validate_pr_body.py --body-file /tmp/pr_body.md
|
||||
```
|
||||
|
||||
검증 항목:
|
||||
- `\n` 이스케이프 없음
|
||||
- 마크다운 섹션 헤더(`## ...`) 존재
|
||||
- 리스트 아이템 존재
|
||||
- **REQ-ID** (`REQ-XXX-NNN`) 포함 — 거버넌스 traceability 필수
|
||||
- **TASK-ID** (`TASK-XXX-NNN`) 포함 — 거버넌스 traceability 필수
|
||||
- **TEST-ID** (`TEST-XXX-NNN`) 포함 — 거버넌스 traceability 필수
|
||||
|
||||
강제 규칙:
|
||||
- 검증 실패 시 PR 본문에 해당 ID를 보강하고 재검증 통과 후에만 PR 생성
|
||||
- REQ/TASK/TEST ID는 `docs/ouroboros/` 문서의 실제 ID 사용 (placeholder `REQ-...` 금지)
|
||||
|
||||
## Session Handover Gate (Mandatory)
|
||||
|
||||
새 세션에서 구현/검증을 시작하기 전에 아래를 선행해야 한다.
|
||||
|
||||
Reference in New Issue
Block a user