session-endlisted
Install: claude install-skill lumatic2/askewly-harness
세션을 마무리한다. 아래 4단계를 순서대로 실행한다.
## 파일과 역할
| 파일 | 역할 | 쓰기 방식 |
|---|---|---|
| `$HARNESS_JOURNAL_DIR` | 저널 — 나중에 질문할 작업 이력·증거 | **append** |
| `HANDOFF.md` (레포 루트, **git-tracked**) | 핸드오프 — 다음 세션이 즉시 이어받을 것. 기기 간에는 git 으로 흐른다 | **overwrite**, 30줄 상한, 헬퍼가 **단독 커밋+push** |
| `CLAUDE.local.md` (gitignored) | **기기-로컬 사실만** (이 기기에서만 참인 경로·데몬 상태 등). 없으면 두지 않는 선택 파일 | 있을 때만 갱신 |
| `ROADMAP.md` + cascade docs | 현재 milestone 상태판 | **read-only** |
**ROADMAP·cascade 는 읽기만 한다.** 생성·편집, `Status: [x]`·`status="completed"` 변경, compact, BACKLOG archive는 전부 하네스 흐름(`/harness-done`) 소유다. 반영이 필요해 보이면 고치지 말고 `HANDOFF.md` 주의점에 한 줄로 남긴다 (예: "M2 DoD 충족된 듯 — 다음 /harness-done 에서 확인").
**BACKLOG 아카이브 = ROADMAP 에서 마커째 제거** (M3 2026-08-19 확정). `docs/BACKLOG.md` 로 아카이브된 milestone 은 ROADMAP 에 completed 마커를 남기지 않는다 — `/harness-done` 의 `roadmap_sync.py compact` 가 블록을 삭제하고 BACKLOG 에 4줄 요약을 append 하기 때문이다. 그래서 **ROADMAP 에 남아 있는 completed 마커는 "아직 아카이브되지 않은 것"** 이고, 그것이 진행 섹션(Active·Pending)에 앉아 있으면 위생 문제다(아래 1-c ①). compact 는 150줄 상한을 넘긴 만큼만 오래된 것부터 걷어내므로, 같은 ROADMAP 에 마커 없는 milestone 과 completed 마커가 공존하는 것은 불일치가 아니라 정상이다. 집행(제거·이동)은 `/harness-done` 소유이고 session-end 는 읽고 알리기만 한다.
**두 처분은 다른 명령이다** (M5 2026-08-20). *섹션 이동* = `roadmap_sync.py relocate`(마커를 남긴 채 자리만 옮긴다) · *BACKLOG 아카이브* = `roadmap_sync.py compact`(마커째 제거 + 4줄 요약 append). 전에는 이동 명령이 아예 없어서 위생 안내가 "손으로 하라"는 뜻이었고, 그래서 아무도 안 했다(플릿 실측 33 레포). 지금은 `complete()` 가 닫는 순간 자동으로 옮기므로 **새로 닫는 milestone 은 소급이 필요 없다** — `relocate` 는 이미 닫혀 있는 것들을 위한 진입점이다. 배치