v0.9.10 — 티켓 완주 후 다음 티켓 진행 가능 (durable state checkpoint)
티켓을 끝낸 뒤 다음 티켓을 시작할 수 있습니다 (REQ-2026-057~059). 실제 Nuxt 소비자 프로젝트에 설치 → REQ 워크플로 사용 → 제거까지 전 과정을 따라간 감사에서 나온 P1 2건 + 안내·진단 7건을 정리했습니다.
-
작업 상태가 승인 증거와 함께 커밋됩니다 — durable state checkpoint (REQ-2026-057). 지금까지
req:commit의 evidence-finalize는responses/만 커밋하고 소비된 상태는 커밋 뒤에 디스크에만 썼습니다. 그래서 티켓을 정상 완주해도state.json이 dirty로 남아 다음req:new의 clean-tree 게이트를 막았고(req:new의 스크래치 예외는 증거 변조를 막으려state.json을 의도적으로 제외합니다), 계약·문서는 그 파일을 직접 커밋하지 말라고 하므로 남겨도 막히고 버려도 안 되는 상태였습니다. 실제로 버리면 커밋된 승인 증거가 있는데도req:next가 설계 재리뷰를 지시했습니다(유료 Codex 호출).git checkout <다른 브랜치>도 같은 이유로 막혔습니다.이제 design 승인 직후와 phase 소비 직후에 해당 티켓의
state.json한 경로만 담는 pathspec 커밋을 냅니다. 🔴 순서는 바꾸지 않았습니다 — 소비를 evidence 커밋 앞으로 옮기면consumeState가pending_evidence_for·approval_evidence를 제거해req:commit --finalize복구가 근거를 잃습니다. 🔴 evidence 커밋의 "responses/외 staged 금지" 가드도 완화하지 않았습니다. 커밋 전에 디스크 내용이 도구가 방금 쓴 상태와 바이트 동일한지,state.id가 대상 티켓과 일치하는지 확인하고 아니면 fail-closed합니다. 변경이 없으면 커밋하지 않습니다(멱등). checkpoint 실패는 승인·커밋 판정을 바꾸지 않습니다.computeReviewSemanticIdentity에서state.json을 제외했습니다 — checkpoint가 인덱스의 그 항목을 갱신하므로, 제외하지 않으면 방금 승인한 리뷰를req:nextG2가 stale로 오판합니다(responses/를 제외한 것과 같은 이유). 승인 바인딩(D9)은 그대로입니다. -
안내가 그대로 실행 가능해지고, 정상 상태가 실패처럼 보이지 않습니다 (REQ-2026-058).
req:next의 사람 승인(AWAIT_HUMAN) 경로가 내던 커밋 명령에 메시지 자리표시자가 빠져 있어, 그대로 실행하면 doctor 17개 체크를 모두 통과한 뒤에커밋 메시지 필요로 죽었습니다(자동 커밋 경로에만 있었습니다). 두 경로가 같은 상수를 공유합니다.- HEAD에 증거가 아직 없는 정상 상태에서 git의
fatal: path … does not exist in 'HEAD'가 그대로 노출됐습니다. 부재가 정상인 조회 4곳에만 stderr를 버리는 runner를 씁니다 — 전역 억제가 아니라 그 조회 한정이라 진짜 오류의 진단은 그대로입니다. commitgate uninstall이 도입 커밋 revert를 권하면서 그 커밋에 든workflow/.gitignore가 함께 사라져 기존 티켓 scratch가 드러난다는 파급을 예고하지 않았습니다(증거 보존 지시와 서로 무효화). 보존할 증거가 있을 때만 경고와 선택지를 냅니다. 그 밖에 Stage B에 없는scripts/를 잔여 후보에서 빼고,not-installed에서도 남은 티켓 증거를 고지하며,_npx삭제가 사용자의 모든 npx 패키지 캐시를 지운다는 범위를 밝힙니다.- 설치 안내의 lockfile 인과를 Stage B 사실대로 고쳤습니다 — lockfile을 바꾸는 것은
init이전의npm i -D commitgate입니다.
-
테스트 픽스처 정리 결정화 (REQ-2026-059). 새 near-e2e 픽스처의 임시 저장소 정리가 git의 detached auto 유지보수와 경합해
ENOTEMPTY로 간헐 실패했습니다(단언은 전부 통과, ubuntu·Node 20에서만 재현). 픽스처에서gc.auto·maintenance.auto를 모두 끄고 정리에 짧은 재시도를 더했습니다. 단언은 변경하지 않았습니다.
전체 테스트 1709 → 1729. CI 9/9(ubuntu·windows·macos × node 18/20/22) green.