# 로드맵 규칙

`agent-ops/roadmap/` 디렉터리가 있는 프로젝트에서만 적용한다.

## 로딩

- 세션 최초 1회 `agent-ops/roadmap/current.md`를 읽고 활성 Milestone 후보의 이름, 경로, 선택 규칙만 짧게 기억한다.
- 활성 Milestone 후보는 `agent-ops/roadmap/milestones/` 하위 문서만 대상으로 한다.
- Milestone의 목표, 주요 범위, 범위 제외는 선택한 활성 Milestone 문서에서 확인한다.
- 일반 작업에서는 `ROADMAP.md`를 읽지 않는다.
- `ROADMAP.md`는 로드맵 생성/갱신, Phase 전환, Milestone 추가/수정, 활성 Milestone 밖 작업 확인 때만 읽는다.
- `agent-ops/roadmap/archive/**`는 사용자가 과거 Milestone 상세 확인이나 복원을 명시적으로 요청한 경우에만 읽는다.

## Milestone 선택

- `current.md`는 현재 작업 위치가 아니라 활성 Milestone 후보 목록이다.
- 기능 추가, 구조 변경, 스킬/문서 구조 변경 전에는 요청, 브랜치, 변경 파일, 관련 경로를 보고 관련 Milestone 문서를 1회 읽는다.
- 선택한 Milestone의 목표 또는 범위 제외와 요청이 충돌하면 구현 전에 사용자에게 확인한다.
- `current.md`가 아카이브 경로를 가리키면 그 항목은 활성 후보로 읽지 말고 로드맵 갱신이 필요하다고 보고한다.

## 구현 잠금

- 선택한 Milestone에 `구현 잠금` 섹션이 없거나 상태가 `잠금`이면 코드 구현, `agent-task` 구현 계획, 세부 API/파일 구조 확정을 시작하지 않는다.
- 단순 "진행", "구현", "계획 작성" 요청은 잠금을 해제하지 않는다.
- 잠금 해제는 사용자가 Milestone 구체화 업데이트 또는 잠금 해제를 명시한 경우에만 검토한다.

## 필수 기능 item-id

- Milestone 문서의 `필수 기능` 체크리스트는 `- [ ] [item-id] 설명` 형식을 사용한다.
- item-id는 공백 없는 짧은 ASCII 토큰이며, 영문/숫자 segment 1~4개로 작성하고 segment 구분자는 `-`, `_`, `+`, `=`만 사용한다. 가능하면 1~3 segment를 우선하며, 전체 길이는 32자 이하를 권장한다.
- item-id는 해당 Milestone 안에서만 유일하면 된다.
- 다른 Milestone에서는 같은 item-id를 다시 사용할 수 있다. 여러 Milestone 후보에서 같은 item-id가 발견되면 Milestone 이름이나 문서 경로로 대상을 확정한다.
- 사용자가 item-id를 언급하면 해당 Milestone의 `필수 기능` 항목을 우선 anchor로 삼고, 기존 item-id는 명시적 요청 없이 바꾸지 않는다.

## 작업 지점 분석

- 현재 작업 지점이나 남은 작업 분석 요청은 `analyze-roadmap-position` 스킬로 처리한다.
- 이때 `current.md`만으로 단정하지 말고 코드, git 상태, diff, 활성 Milestone 문서를 함께 본다.

## Milestone 아카이브

- 완료 또는 폐기되어 현재 작업 후보에서 제외할 Milestone은 `update-roadmap` 스킬로 아카이빙한다.
- 아카이브 대상 문서는 `agent-ops/roadmap/archive/YYYY/MM/<milestone-slug>.md`로 이동한다.
- 아카이빙할 때는 `ROADMAP.md`에 당시 요약만 남기고, 아카이브 문서 자체는 최신 템플릿이나 스킬 규약에 맞춰 재포맷하지 않는다.
- 아카이브된 Milestone은 `current.md`에 남기지 않고, 일반 Milestone 선택이나 위치 분석의 후보로 삼지 않는다.
