harness-runlisted
Install: claude install-skill lumatic2/askewly-harness
# /harness-run — 무개입 실행 → 검증 → 커밋 (git 을 소유한다)
> 하네스 3종 세트의 실행 단계: `harness-plan`(계획) → **`harness-run`** → `harness-done`(완료). 셋은 ��� 세트다 — 함께 배포·토글한다.
>
> **기계장치는 한 곳** — 3종이 부르는 스크립트는 전부 이 스킬의 `scripts/` 에 산다. `$HARNESS_SCRIPTS` 해석 (`~/.claude/...` 하드코딩 금지 — Codex 배포본 경로가 다르다):
> ```bash
> HARNESS_SCRIPTS="$HOME/.codex/skills/harness-run/scripts"
> [ -d "$HARNESS_SCRIPTS" ] || HARNESS_SCRIPTS="$HOME/.claude/skills/harness-run/scripts"
> ```
실행은 **인라인**이다 — 에이전트 자신이 step 을 수행하고 외부 subprocess 를 띄우지 않는다. (구 `scripts/execute.py` 는 2026-08-07 제거됐다: `phases/index.json` 모델 위에서 도는 무인 엔진이었는데, 그 모델 자체가 2026-07-23 재조립 P4 에서 `docs/plans` + `.harness/work.json` 으로 대체됐다. 기존 레포의 `phases/` 디렉터리는 과거 기록으로 남는다.)
## 진입 조건 — 승인 영수증
- run 은 **승인된 계획 위에서만 돈다.** `.harness/work.json` 에 approval receipt(plan SHA-256)가 있고 hash 가 현재 plan 과 일치해야 한다 — 없거나 어긋나면 실행·continuation 금지, `/harness-plan` 으로 돌아간다.
- 승인 등록(approve)은 **실행할 바로 그 체크아웃**에서 이뤄졌어야 한다(work.json 은 checkout-local, HQ1). 다른 체크아웃의 approve 는 이 워크트리를 지키지 못한다.
- **다른 세션이 연 work 의 이어받기 — 세션 핸드오프 (M17 2026-08-14)**: work.json 의 소유 세션이 아니면 continuation 이 이 세션에 발화하지 않는다. 절차 = ① `python ~/.codex/hooks/harness_work_state.py diagnose --root .` 로 상태·문서화된 정지 여부 확인 ② `... resume --root . --work-id <id> --session <runtime>:<uuid>` 로 소유 승계(문서화된 정지 잔존 시 거부 — 재개는 아래 RL1) ③ 승인 hash 가 현재 plan 과 일치함을 확인한 뒤 다음 unchecked step 부터 continuation. 어느 경로로 와도 이 계약은 같다.
- 단일 step·가벼운 작업(계획서 없는 pass-through)은 receipt 없이 진행하되, `/harness-plan` 의 한 줄 통지("produce 끝 → run