From 9ddae51ab29da359e48630ea944398b20c25950b Mon Sep 17 00:00:00 2001 From: toki Date: Wed, 27 May 2026 12:58:39 +0900 Subject: [PATCH] update agent-ops and agent-roadmap --- agent-ops/bin/ai-ignore.sh | 30 +++++++------- agent-ops/rules/common/rules-roadmap.md | 30 +++++++------- agent-ops/rules/common/rules.md | 4 +- agent-ops/rules/project/rules.md | 2 +- .../_templates/roadmap-current-template.md | 12 +++--- .../_templates/roadmap-milestone-template.md | 4 +- .../_templates/roadmap-phase-template.md | 2 +- .../roadmap-position-report-template.md | 10 ++--- .../common/_templates/roadmap-template.md | 18 ++++----- .../common/analyze-roadmap-position/SKILL.md | 10 ++--- .../common/check-roadmap-dependency/SKILL.md | 10 ++--- agent-ops/skills/common/code-review/SKILL.md | 4 +- .../skills/common/create-readme/SKILL.md | 4 +- .../skills/common/create-roadmap/SKILL.md | 39 +++++++++---------- .../skills/common/init-agent-ops/SKILL.md | 22 +++++------ agent-ops/skills/common/plan/SKILL.md | 6 +-- agent-ops/skills/common/sync-pull/SKILL.md | 6 +-- agent-ops/skills/common/sync-push/SKILL.md | 14 +++---- .../skills/common/update-roadmap/SKILL.md | 32 +++++++-------- .../roadmap => agent-roadmap}/ROADMAP.md | 20 +++++----- .../cli-automation-runtime-stabilization.md | 0 .../flutter-first-portal-migration.md | 0 .../edge-node-execution-foundation/PHASE.md | 4 +- .../milestones/edge-input-surfaces.md | 0 .../edge-node-execution-skeleton.md | 0 .../milestones/model-serving-load-routing.md | 4 +- .../ollama-field-validation-follow-up.md | 4 +- .../roadmap => agent-roadmap}/current.md | 8 ++-- .../phase/automation-runtime-bridge/PHASE.md | 8 ++-- .../agent-bootstrap-oto-enrollment.md | 6 +-- .../milestones/remote-terminal-bridge-poc.md | 4 +- ...ecialized-agent-proto-socket-foundation.md | 8 ++-- .../phase/control-plane-portal-ops/PHASE.md | 10 ++--- .../client-integration-clone-adoption.md | 4 +- .../milestones/control-plane-portal.md | 4 +- .../milestones/multi-edge-operations.md | 4 +- .../milestones/policy-history-audit.md | 4 +- .../inference-provider-extension/PHASE.md | 2 +- .../sglang-provider-serving-validation.md | 4 +- .../PHASE.md | 2 +- .../knowledge-tool-validation-optimization.md | 6 +-- .../serving-routing-optimization/PHASE.md | 6 +-- .../field-bootstrap-test-port-readiness.md | 16 +++++--- 43 files changed, 196 insertions(+), 191 deletions(-) rename {agent-ops/roadmap => agent-roadmap}/ROADMAP.md (86%) rename {agent-ops/roadmap => agent-roadmap}/archive/phase/automation-runtime-bridge/milestones/cli-automation-runtime-stabilization.md (100%) rename {agent-ops/roadmap => agent-roadmap}/archive/phase/control-plane-portal-ops/milestones/flutter-first-portal-migration.md (100%) rename {agent-ops/roadmap => agent-roadmap}/archive/phase/edge-node-execution-foundation/PHASE.md (80%) rename {agent-ops/roadmap => agent-roadmap}/archive/phase/edge-node-execution-foundation/milestones/edge-input-surfaces.md (100%) rename {agent-ops/roadmap => agent-roadmap}/archive/phase/edge-node-execution-foundation/milestones/edge-node-execution-skeleton.md (100%) rename {agent-ops/roadmap => agent-roadmap}/archive/phase/serving-routing-optimization/milestones/model-serving-load-routing.md (99%) rename {agent-ops/roadmap => agent-roadmap}/archive/phase/serving-routing-optimization/milestones/ollama-field-validation-follow-up.md (97%) rename {agent-ops/roadmap => agent-roadmap}/current.md (79%) rename {agent-ops/roadmap => agent-roadmap}/phase/automation-runtime-bridge/PHASE.md (80%) rename {agent-ops/roadmap => agent-roadmap}/phase/automation-runtime-bridge/milestones/agent-bootstrap-oto-enrollment.md (94%) rename {agent-ops/roadmap => agent-roadmap}/phase/automation-runtime-bridge/milestones/remote-terminal-bridge-poc.md (96%) rename {agent-ops/roadmap => agent-roadmap}/phase/automation-runtime-bridge/milestones/specialized-agent-proto-socket-foundation.md (92%) rename {agent-ops/roadmap => agent-roadmap}/phase/control-plane-portal-ops/PHASE.md (79%) rename {agent-ops/roadmap => agent-roadmap}/phase/control-plane-portal-ops/milestones/client-integration-clone-adoption.md (97%) rename {agent-ops/roadmap => agent-roadmap}/phase/control-plane-portal-ops/milestones/control-plane-portal.md (97%) rename {agent-ops/roadmap => agent-roadmap}/phase/control-plane-portal-ops/milestones/multi-edge-operations.md (96%) rename {agent-ops/roadmap => agent-roadmap}/phase/control-plane-portal-ops/milestones/policy-history-audit.md (96%) rename {agent-ops/roadmap => agent-roadmap}/phase/inference-provider-extension/PHASE.md (92%) rename {agent-ops/roadmap => agent-roadmap}/phase/inference-provider-extension/milestones/sglang-provider-serving-validation.md (96%) rename {agent-ops/roadmap => agent-roadmap}/phase/knowledge-tool-optimization-extension/PHASE.md (92%) rename {agent-ops/roadmap => agent-roadmap}/phase/knowledge-tool-optimization-extension/milestones/knowledge-tool-validation-optimization.md (92%) rename {agent-ops/roadmap => agent-roadmap}/phase/serving-routing-optimization/PHASE.md (86%) rename {agent-ops/roadmap => agent-roadmap}/phase/serving-routing-optimization/milestones/field-bootstrap-test-port-readiness.md (71%) diff --git a/agent-ops/bin/ai-ignore.sh b/agent-ops/bin/ai-ignore.sh index 1431c15..47d05ae 100755 --- a/agent-ops/bin/ai-ignore.sh +++ b/agent-ops/bin/ai-ignore.sh @@ -2,7 +2,7 @@ # Shared AI ignore / permission defaults for init and sync flows. AGENT_OPS_TASK_ARCHIVE_IGNORE_PATTERN="agent-task/archive/**" -AGENT_OPS_ROADMAP_ARCHIVE_IGNORE_PATTERN="agent-ops/roadmap/archive/**" +AGENT_ROADMAP_ARCHIVE_IGNORE_PATTERN="agent-roadmap/archive/**" AGENT_OPS_AI_IGNORE_BLOCK_BEGIN="# BEGIN Agent-Ops managed ignore" AGENT_OPS_AI_IGNORE_BLOCK_END="# END Agent-Ops managed ignore" AGENT_OPS_AI_IGNORE_FILES=(".geminiignore" ".aiexclude" ".cursorignore" ".clineignore") @@ -21,7 +21,7 @@ agent_ops_ensure_ai_ignore_block() { -v begin="$AGENT_OPS_AI_IGNORE_BLOCK_BEGIN" \ -v end="$AGENT_OPS_AI_IGNORE_BLOCK_END" \ -v task="$AGENT_OPS_TASK_ARCHIVE_IGNORE_PATTERN" \ - -v roadmap="$AGENT_OPS_ROADMAP_ARCHIVE_IGNORE_PATTERN" ' + -v roadmap="$AGENT_ROADMAP_ARCHIVE_IGNORE_PATTERN" ' $0 == begin { print begin print task @@ -43,7 +43,7 @@ agent_ops_ensure_ai_ignore_block() { fi printf "%s\n" "$AGENT_OPS_AI_IGNORE_BLOCK_BEGIN" >> "$file" printf "%s\n" "$AGENT_OPS_TASK_ARCHIVE_IGNORE_PATTERN" >> "$file" - printf "%s\n" "$AGENT_OPS_ROADMAP_ARCHIVE_IGNORE_PATTERN" >> "$file" + printf "%s\n" "$AGENT_ROADMAP_ARCHIVE_IGNORE_PATTERN" >> "$file" printf "%s\n" "$AGENT_OPS_AI_IGNORE_BLOCK_END" >> "$file" fi } @@ -81,7 +81,7 @@ def as_object: .permissions = ((.permissions // {}) | as_object) | .permissions.deny = ( (.permissions.deny | as_array) - | map(select(. != "Read(./agent-ops/roadmap/archive/**)")) + | map(select(. != "Read(./agent-roadmap/archive/**)")) | append_unique("Read(./agent-task/archive/**)") ) ' @@ -89,7 +89,7 @@ def as_object: agent_ops_merge_json_with_jq \ "$file" \ "$filter" \ - "Note: .claude/settings.json exists; add Read(./agent-task/archive/**) and remove Read(./agent-ops/roadmap/archive/**) manually." + "Note: .claude/settings.json exists; add Read(./agent-task/archive/**) and remove Read(./agent-roadmap/archive/**) manually." } agent_ops_claude_settings_complete() { @@ -101,7 +101,7 @@ def as_array: (.permissions.deny | as_array) as $deny | (($deny | index("Read(./agent-task/archive/**)")) != null) -and (($deny | index("Read(./agent-ops/roadmap/archive/**)")) == null) +and (($deny | index("Read(./agent-roadmap/archive/**)")) == null) ' if command -v jq >/dev/null 2>&1; then @@ -124,22 +124,22 @@ def as_object: .permission = ((.permission // {}) | as_object) | .permission.read = ((.permission.read // {}) | as_object) | .permission.read["agent-task/archive/**"] = "deny" -| del(.permission.read["agent-ops/roadmap/archive/**"]) +| del(.permission.read["agent-roadmap/archive/**"]) | .permission.glob = ((.permission.glob // {}) | as_object) | .permission.glob["agent-task/archive/**"] = "deny" -| del(.permission.glob["agent-ops/roadmap/archive/**"]) +| del(.permission.glob["agent-roadmap/archive/**"]) | .watcher = ((.watcher // {}) | as_object) | .watcher.ignore = ( (.watcher.ignore | as_array) | append_unique("agent-task/archive/**") - | append_unique("agent-ops/roadmap/archive/**") + | append_unique("agent-roadmap/archive/**") ) ' agent_ops_merge_json_with_jq \ "$file" \ "$filter" \ - "Note: opencode.json exists; add agent-task/archive/** read/glob deny, remove agent-ops/roadmap/archive/** read/glob hard deny, and add agent-task/archive/** plus agent-ops/roadmap/archive/** watcher ignore manually." + "Note: opencode.json exists; add agent-task/archive/** read/glob deny, remove agent-roadmap/archive/** read/glob hard deny, and add agent-task/archive/** plus agent-roadmap/archive/** watcher ignore manually." } agent_ops_opencode_config_complete() { @@ -150,15 +150,15 @@ def as_array: (.permission.read["agent-task/archive/**"] == "deny") and (.permission.glob["agent-task/archive/**"] == "deny") -and (.permission.read["agent-ops/roadmap/archive/**"] != "deny") -and (.permission.glob["agent-ops/roadmap/archive/**"] != "deny") -and ((.watcher.ignore | as_array) as $ignore | (($ignore | index("agent-task/archive/**")) != null) and (($ignore | index("agent-ops/roadmap/archive/**")) != null)) +and (.permission.read["agent-roadmap/archive/**"] != "deny") +and (.permission.glob["agent-roadmap/archive/**"] != "deny") +and ((.watcher.ignore | as_array) as $ignore | (($ignore | index("agent-task/archive/**")) != null) and (($ignore | index("agent-roadmap/archive/**")) != null)) ' if command -v jq >/dev/null 2>&1; then jq -e "$filter" "$file" >/dev/null 2>&1 else - grep -q "agent-task/archive" "$file" && grep -q "agent-ops/roadmap/archive" "$file" + grep -q "agent-task/archive" "$file" && grep -q "agent-roadmap/archive" "$file" fi } @@ -206,7 +206,7 @@ EOF "watcher": { "ignore": [ "agent-task/archive/**", - "agent-ops/roadmap/archive/**" + "agent-roadmap/archive/**" ] } } diff --git a/agent-ops/rules/common/rules-roadmap.md b/agent-ops/rules/common/rules-roadmap.md index d38775d..28ac15a 100644 --- a/agent-ops/rules/common/rules-roadmap.md +++ b/agent-ops/rules/common/rules-roadmap.md @@ -1,22 +1,22 @@ # 로드맵 규칙 -`agent-ops/roadmap/` 디렉터리가 있는 프로젝트에서만 적용한다. +`agent-roadmap/` 디렉터리가 있는 프로젝트에서만 적용한다. ## 구조 -- 최상위 로드맵은 `agent-ops/roadmap/ROADMAP.md`다. -- 활성 Phase는 `agent-ops/roadmap/phase//PHASE.md`에 둔다. -- 활성 Milestone은 해당 Phase 아래 `agent-ops/roadmap/phase//milestones/.md`에 둔다. +- 최상위 로드맵은 `agent-roadmap/ROADMAP.md`다. +- 활성 Phase는 `agent-roadmap/phase//PHASE.md`에 둔다. +- 활성 Milestone은 해당 Phase 아래 `agent-roadmap/phase//milestones/.md`에 둔다. - ``와 ``는 소문자 영문, 숫자, 하이픈만 사용한다. -- 완료된 Phase는 scaffold 그대로 `agent-ops/roadmap/archive/phase//PHASE.md`로 이동하고, 하위 Milestone도 `archive/phase//milestones/` 아래에 둔다. -- 진행중 Phase 안에서 완료된 Milestone은 활성 `PHASE.md`에 짧은 archive 링크를 남기고, 상세 문서는 `agent-ops/roadmap/archive/phase//milestones/`로 이동한다. +- 완료된 Phase는 scaffold 그대로 `agent-roadmap/archive/phase//PHASE.md`로 이동하고, 하위 Milestone도 `archive/phase//milestones/` 아래에 둔다. +- 진행중 Phase 안에서 완료된 Milestone은 활성 `PHASE.md`에 짧은 archive 링크를 남기고, 상세 문서는 `agent-roadmap/archive/phase//milestones/`로 이동한다. - archive `PHASE.md`는 Phase 자체가 완료/폐기될 때만 만들며, 진행중 Phase의 완료 Milestone만 archive된 경우 archive Phase 디렉터리에 `milestones/`만 있을 수 있다. ## 로딩 -- 세션 최초 1회 `agent-ops/roadmap/current.md`를 읽고 활성 Phase, 활성 Milestone의 이름, 경로, 선택 규칙만 짧게 기억한다. +- 세션 최초 1회 `agent-roadmap/current.md`를 읽고 활성 Phase, 활성 Milestone의 이름, 경로, 선택 규칙만 짧게 기억한다. - 일반 작업에서는 `ROADMAP.md`를 읽지 않는다. -- 일반 작업에서는 `agent-ops/roadmap/archive/**`를 읽지 않는다. +- 일반 작업에서는 `agent-roadmap/archive/**`를 읽지 않는다. - 기능 추가, 구조 변경, 구현 계획 전에는 요청과 변경 파일에 맞는 활성 Phase와 활성 Milestone 문서를 읽는다. - 로드맵 현지점 확인은 `current.md`, `ROADMAP.md`의 Phase 흐름, 활성 `PHASE.md`의 Milestone 흐름, 활성 Milestone의 제목/목표/상태만 기본으로 읽는다. - `ROADMAP.md`는 로드맵 생성/갱신, Phase 추가/삭제/전환, 전체 구조 변경, 활성 범위 밖 작업 확인 때만 읽는다. @@ -25,8 +25,8 @@ ## Phase와 Milestone 선택 - `current.md`는 현재 작업 위치가 아니라 활성 Phase와 활성 Milestone 후보 목록이다. -- 활성 Phase는 `agent-ops/roadmap/phase/**/PHASE.md`만 대상으로 한다. -- 활성 Milestone은 `agent-ops/roadmap/phase/**/milestones/*.md`만 대상으로 한다. +- 활성 Phase는 `agent-roadmap/phase/**/PHASE.md`만 대상으로 한다. +- 활성 Milestone은 `agent-roadmap/phase/**/milestones/*.md`만 대상으로 한다. - `current.md`에는 `[완료]` 또는 `[폐기]` Phase/Milestone을 남기지 않는다. 완료 후보는 승인 전까지 `[검토중]`으로 둔다. - "로드맵에 추가", "마일스톤에 추가"처럼 target 없는 신규 작업 추가 요청은 `update-roadmap` 스킬로 처리하고, Phase/Milestone/Epic/Task 배치를 자동 판단한다. - target 없는 신규 추가 요청은 먼저 요청 규모를 `phase`, `milestone`, `epic`, `task`, `subtask`, `context` 중 가장 작은 충분한 단위로 판정한다. @@ -71,13 +71,13 @@ - entry는 `id`, `locked`, `rely-on[].target`, `rely-on[].status`, `rely-on[].note`만 사용한다. - `locks.yaml`은 root sequence block style을 기본으로 작성한다. 예: `- id: ...` 아래에 `locked`, `rely-on`을 둔다. - `id`는 기본적으로 `<잠긴-project>:<잠긴-milestone-slug>`로 만든다. -- `locked`와 `rely-on[].target`은 `:agent-ops/roadmap/phase//milestones/.md` 형식으로 기록한다. -- Milestone 경로가 `agent-ops/roadmap/...` 상대 경로이면 현재 프로젝트명을 prefix로 붙인다. workspace 하위 절대/상대 경로이면 workspace 바로 아래 디렉터리명을 project로 삼고, 그 뒤 `agent-ops/roadmap/...` 경로를 붙인다. +- `locked`와 `rely-on[].target`은 `:agent-roadmap/phase//milestones/.md` 형식으로 기록한다. +- Milestone 경로가 `agent-roadmap/...` 상대 경로이면 현재 프로젝트명을 prefix로 붙인다. workspace 하위 절대/상대 경로이면 workspace 바로 아래 디렉터리명을 project로 삼고, 그 뒤 `agent-roadmap/...` 경로를 붙인다. - `locked`는 잠긴 Milestone, `rely-on.target`은 선행 조건 Milestone이다. 둘 다 같은 workspace의 어느 활성 Phase 하위 Milestone이어도 된다. 의존 대상이 `current.md`에 있어야 한다고 가정하지 않는다. - "현재 마일스톤은 X 프로젝트 작업 뒤에 진행", "X 프로젝트 때문에 현재 작업 잠금", "의존성 설정해"처럼 잠긴 Milestone을 생략한 외부 의존 잠금 요청은 현재 프로젝트 `current.md`의 활성 Milestone 단일 후보를 잠긴 대상으로 삼는다. - 의존 대상은 명시 경로, 명시 slug, 명시 제목, 잠긴 Milestone 문서의 선행 Milestone 힌트, 대상 프로젝트 `current.md` 단일 후보 순서로 확정한다. - 정규화 비교는 소문자 변환, backtick/따옴표 제거, 영문/숫자가 아닌 연속 문자를 `-` 하나로 치환, 앞뒤 `-` 제거 후 Milestone 파일 slug와 정규화한 제목에 대조한다. -- 의존 대상 탐색은 대상 프로젝트의 `agent-ops/roadmap/phase/*/milestones/*.md` 활성 문서만 대상으로 한다. archive 문서는 사용자가 archive 경로를 명시한 경우 외에는 읽거나 후보로 삼지 않는다. +- 의존 대상 탐색은 대상 프로젝트의 `agent-roadmap/phase/*/milestones/*.md` 활성 문서만 대상으로 한다. archive 문서는 사용자가 archive 경로를 명시한 경우 외에는 읽거나 후보로 삼지 않는다. - 후보가 없거나 둘 이상이면 locks.yaml을 만들거나 고치지 말고 사용자에게 대상 Milestone 선택을 요청한다. - 외부 의존 잠금을 만들 때 대상 Milestone의 `구현 잠금`은 `잠금`으로 둔다. - 새 `rely-on.status`는 선행 Milestone 상태에서 파생한다. `[검토중]` 또는 `[완료]`이면 `enable`, 그 외 상태거나 상태를 확인할 수 없으면 `disable`이다. @@ -135,8 +135,8 @@ - 완료 또는 폐기되어 현재 작업 후보에서 제외할 Phase/Milestone은 `update-roadmap` 스킬로 아카이빙한다. - `[검토중]` Phase/Milestone은 archive 대상이 아니며, 사용자 승인 전까지 활성 경로에 남긴다. -- Phase 아카이브 대상은 `agent-ops/roadmap/archive/phase//PHASE.md`와 같은 scaffold로 이동한다. -- Milestone 아카이브 대상은 `agent-ops/roadmap/archive/phase//milestones/.md`로 이동한다. +- Phase 아카이브 대상은 `agent-roadmap/archive/phase//PHASE.md`와 같은 scaffold로 이동한다. +- Milestone 아카이브 대상은 `agent-roadmap/archive/phase//milestones/.md`로 이동한다. - 아카이빙할 때는 활성 `ROADMAP.md` 또는 활성 `PHASE.md`에 archive 문서 링크와 짧은 요약만 남긴다. - 아카이브된 Phase/Milestone은 `current.md`에 남기지 않고, 일반 Phase/Milestone 선택이나 위치 분석의 후보로 삼지 않는다. - 아카이브 문서는 과거 기록 스냅샷으로 보고, 최신 템플릿이나 스킬 규약에 맞춰 재포맷하지 않는다. diff --git a/agent-ops/rules/common/rules.md b/agent-ops/rules/common/rules.md index cbbc8c7..a3f81d4 100644 --- a/agent-ops/rules/common/rules.md +++ b/agent-ops/rules/common/rules.md @@ -6,14 +6,14 @@ - 요청 범위를 넘는 변경을 하지 않는다. - 불확실하면 단정하지 말고 후보를 제시한다. - `agent-task/archive/**`는 사용자가 명시적으로 요청한 경우에만 읽는다. -- `agent-ops/roadmap/` 디렉터리가 있는 프로젝트에서도 `agent-ops/roadmap/archive/**`는 일반 작업에서 읽지 않는다. 로드맵 과거 완료 내용, 완료 근거, 복원, 비교가 필요한 경우에만 `agent-ops/rules/common/rules-roadmap.md`의 archive 접근 규칙을 따른다. +- `agent-roadmap/` 디렉터리가 있는 프로젝트에서도 `agent-roadmap/archive/**`는 일반 작업에서 읽지 않는다. 로드맵 과거 완료 내용, 완료 근거, 복원, 비교가 필요한 경우에만 `agent-ops/rules/common/rules-roadmap.md`의 archive 접근 규칙을 따른다. - agent-ops 구조, 규칙, 스킬, 로드맵, 런타임 책임 경계를 설계하거나 수정할 때만 `agent-ops/rules/common/philosophy.md`를 읽는다. **세션 최초 1회 아래 파일을 순서대로 반드시 읽는다.** 파일이나 디렉터리가 없는 항목은 건너뛴다. 그외에 스킵은 금지한다. 1. `agent-ops/rules/project/rules.md` 2. `agent-ops/rules/private/rules.md` -3. `agent-ops/roadmap/` 디렉터리가 있으면 `agent-ops/rules/common/rules-roadmap.md` +3. `agent-roadmap/` 디렉터리가 있으면 `agent-ops/rules/common/rules-roadmap.md` # 프로젝트 간 잠금 diff --git a/agent-ops/rules/project/rules.md b/agent-ops/rules/project/rules.md index 89ef10e..3010ac5 100644 --- a/agent-ops/rules/project/rules.md +++ b/agent-ops/rules/project/rules.md @@ -85,5 +85,5 @@ ## 스킬 라우팅 - 사용자 실행 파이프라인 검증, bin shell 사용자 흐름, 메시지 2회 왕복, edge command 응답, 보조 E2E smoke, full-cycle 실제 구동, `bin/edge.sh`/`bin/node.sh` 통합 테스트: `agent-ops/skills/project/e2e-smoke/SKILL.md` -- field 테스트 포트, artifact/bootstrap HTTP, one-line Node bootstrap, code-server compose 기반 외부 테스트 환경: `docs/deploy-dev.md`와 활성 Milestone `agent-ops/roadmap/phase/serving-routing-optimization/milestones/field-bootstrap-test-port-readiness.md` +- field 테스트 포트, artifact/bootstrap HTTP, one-line Node bootstrap, code-server compose 기반 외부 테스트 환경: `docs/deploy-dev.md`와 활성 Milestone `agent-roadmap/phase/serving-routing-optimization/milestones/field-bootstrap-test-port-readiness.md` - 반복 작업이 확인되면 `agent-ops/skills/project//SKILL.md`를 생성하고 이 표에 등록한다. diff --git a/agent-ops/skills/common/_templates/roadmap-current-template.md b/agent-ops/skills/common/_templates/roadmap-current-template.md index 628f934..3169df9 100644 --- a/agent-ops/skills/common/_templates/roadmap-current-template.md +++ b/agent-ops/skills/common/_templates/roadmap-current-template.md @@ -3,26 +3,26 @@ ## 활성 Phase - [<스케치 | 계획 | 진행중 | 검토중 | 보류>] - - 경로: `agent-ops/roadmap/phase//PHASE.md` + - 경로: `agent-roadmap/phase//PHASE.md` ## 활성 Milestone - [<스케치 | 계획 | 진행중 | 검토중 | 보류>] - - Phase: `agent-ops/roadmap/phase//PHASE.md` - - 경로: `agent-ops/roadmap/phase//milestones/.md` + - Phase: `agent-roadmap/phase//PHASE.md` + - 경로: `agent-roadmap/phase//milestones/.md` ## 선택 규칙 - 이 문서는 활성 Phase와 활성 Milestone 후보 목록이며, 개인별 현재 작업 위치나 완료 상태를 기록하지 않는다. -- 활성 Phase는 `agent-ops/roadmap/phase//PHASE.md`를 가리킨다. -- 활성 Milestone은 `agent-ops/roadmap/phase//milestones/.md`를 가리킨다. +- 활성 Phase는 `agent-roadmap/phase//PHASE.md`를 가리킨다. +- 활성 Milestone은 `agent-roadmap/phase//milestones/.md`를 가리킨다. - 활성 항목은 아카이브 경로를 포함하지 않는다. - `[검토중]` 항목은 사용자 완료 확인 전까지 활성 항목으로 남길 수 있다. - `[스케치]` 항목은 활성 후보로 남길 수 있지만 구현 계획 생성 대상은 아니며, `[계획]` 승격 조건을 정리하는 대상으로만 다룬다. - `[완료]` 또는 `[폐기]` 항목은 archive 링크를 남긴 뒤 활성 항목에서 제거한다. - 요청 내용, 현재 브랜치, 변경 파일, 관련 코드 경로를 보고 가장 관련 있는 Phase와 Milestone을 선택하고 같은 세션에서 1회 읽는다. - 활성 Phase 또는 Milestone 둘 이상에 걸치면 필요한 문서를 모두 읽고 작업 범위를 좁힌다. -- 활성 범위 밖의 작업이면 `agent-ops/roadmap/ROADMAP.md`의 Phase 흐름을 확인하고 사용자에게 진행 또는 전환 여부를 확인한다. +- 활성 범위 밖의 작업이면 `agent-roadmap/ROADMAP.md`의 Phase 흐름을 확인하고 사용자에게 진행 또는 전환 여부를 확인한다. - 완료된 과거 내용이 필요할 때만 `ROADMAP.md` 또는 `PHASE.md`에 있는 archive 링크를 따라가서 읽는다. - 선택된 Milestone의 `구현 잠금` 섹션이 없거나 상태가 `잠금`이면 구현이나 구현 계획을 시작하기 전에 현재 요청에 직접 영향을 주는 `결정 필요` 항목만 확인한다. 관련 결정이 없고 표준선으로 처리 가능하면 잠금을 유지한 채 진행할 수 있으며, Milestone 전체에서 사용자만 결정할 항목이 더 이상 없을 때만 `구현 잠금` 상태를 `해제`로 둔다. - 선택된 Milestone 상태가 `[스케치]`이면 `구현 잠금` 상태와 관계없이 구현이나 구현 계획을 시작하지 않고 `[계획]` 승격 필요를 보고한다. diff --git a/agent-ops/skills/common/_templates/roadmap-milestone-template.md b/agent-ops/skills/common/_templates/roadmap-milestone-template.md index 36f9878..669bc84 100644 --- a/agent-ops/skills/common/_templates/roadmap-milestone-template.md +++ b/agent-ops/skills/common/_templates/roadmap-milestone-template.md @@ -2,8 +2,8 @@ ## 위치 -- Roadmap: `agent-ops/roadmap/ROADMAP.md` -- Phase: `agent-ops/roadmap/phase//PHASE.md` +- Roadmap: `agent-roadmap/ROADMAP.md` +- Phase: `agent-roadmap/phase//PHASE.md` ## 목표 diff --git a/agent-ops/skills/common/_templates/roadmap-phase-template.md b/agent-ops/skills/common/_templates/roadmap-phase-template.md index a35a127..08daa5d 100644 --- a/agent-ops/skills/common/_templates/roadmap-phase-template.md +++ b/agent-ops/skills/common/_templates/roadmap-phase-template.md @@ -15,7 +15,7 @@ 스케치 Milestone은 아직 구현 가능한 계획이 아니므로 계획 Milestone보다 아래에 둔다. - [<스케치 | 계획 | 진행중 | 검토중 | 완료 | 보류 | 폐기>] - - 경로: `agent-ops/roadmap/phase//milestones/.md` 또는 `agent-ops/roadmap/archive/phase//milestones/.md` + - 경로: `agent-roadmap/phase//milestones/.md` 또는 `agent-roadmap/archive/phase//milestones/.md` - 요약: <목표 또는 결과 1문장> ## Phase 경계 diff --git a/agent-ops/skills/common/_templates/roadmap-position-report-template.md b/agent-ops/skills/common/_templates/roadmap-position-report-template.md index 14c210e..ac7f9f5 100644 --- a/agent-ops/skills/common/_templates/roadmap-position-report-template.md +++ b/agent-ops/skills/common/_templates/roadmap-position-report-template.md @@ -1,12 +1,12 @@ # 로드맵 현지점 -- [current.md](agent-ops/roadmap/current.md) +- [current.md](agent-roadmap/current.md) -- [로드맵: ](agent-ops/roadmap/ROADMAP.md) - - [Phase: ](agent-ops/roadmap/phase//PHASE.md) - - [Milestone: ](agent-ops/roadmap/phase//milestones/.md) +- [로드맵: ](agent-roadmap/ROADMAP.md) + - [Phase: ](agent-roadmap/phase//PHASE.md) + - [Milestone: ](agent-roadmap/phase//milestones/.md) - [<상태>] <목표 또는 역할 한 줄> - - [Milestone: ](agent-ops/roadmap/phase//milestones/.md) + - [Milestone: ](agent-roadmap/phase//milestones/.md) - [<상태>] <목표 또는 역할 한 줄> ## 전체 Phase 흐름 diff --git a/agent-ops/skills/common/_templates/roadmap-template.md b/agent-ops/skills/common/_templates/roadmap-template.md index 6daeb4b..a8ecce3 100644 --- a/agent-ops/skills/common/_templates/roadmap-template.md +++ b/agent-ops/skills/common/_templates/roadmap-template.md @@ -12,18 +12,18 @@ 스케치 Phase는 아직 구현 가능한 계획이 아니므로 계획 Phase보다 아래에 둔다. - [<스케치 | 계획 | 진행중 | 검토중 | 완료 | 보류 | 폐기>] - - 경로: `agent-ops/roadmap/phase//PHASE.md` 또는 `agent-ops/roadmap/archive/phase//PHASE.md` + - 경로: `agent-roadmap/phase//PHASE.md` 또는 `agent-roadmap/archive/phase//PHASE.md` - 요약: <이 Phase의 목표와 역할 1문장> ## 로딩 정책 -- 일반 작업에서는 `agent-ops/roadmap/ROADMAP.md`를 매번 읽지 않는다. -- 기능 추가, 구조 변경, 스킬 추가/수정, 문서 구조 변경 작업을 수행할 때는 `agent-ops/roadmap/current.md`를 먼저 읽는다. +- 일반 작업에서는 `agent-roadmap/ROADMAP.md`를 매번 읽지 않는다. +- 기능 추가, 구조 변경, 스킬 추가/수정, 문서 구조 변경 작업을 수행할 때는 `agent-roadmap/current.md`를 먼저 읽는다. - `current.md`는 현재 작업 위치가 아니라 활성 Phase와 활성 Milestone 후보 목록이다. - `current.md`에는 개인별 현재 작업 위치나 완료 상태를 기록하지 않는다. -- `current.md`의 활성 Phase는 `agent-ops/roadmap/phase//PHASE.md`를 가리킨다. -- `current.md`의 활성 Milestone은 `agent-ops/roadmap/phase//milestones/.md`를 가리킨다. -- `current.md`는 `agent-ops/roadmap/archive/**` 경로를 활성 항목으로 포함하지 않는다. +- `current.md`의 활성 Phase는 `agent-roadmap/phase//PHASE.md`를 가리킨다. +- `current.md`의 활성 Milestone은 `agent-roadmap/phase//milestones/.md`를 가리킨다. +- `current.md`는 `agent-roadmap/archive/**` 경로를 활성 항목으로 포함하지 않는다. - 요청 내용, 현재 브랜치, 변경 파일, 관련 코드 경로를 보고 가장 관련 있는 활성 Phase와 Milestone 문서를 같은 세션에서 1회 읽는다. - 활성 Phase 또는 Milestone 밖의 작업이면 이 문서의 Phase 흐름을 확인하고 사용자에게 진행 또는 전환 여부를 확인한다. - 이 문서는 로드맵 생성/갱신, Phase 전환, Phase 추가/수정, 전체 구조 변경 요청이 있을 때만 읽는다. @@ -31,10 +31,10 @@ - `[스케치]` Phase/Milestone은 방향성, 문제의식, 후보 범위, 미정 질문을 기록하는 컨셉 상태이며 구현 계획 생성 대상이 아니다. - `[스케치]` 항목은 `승격 조건`을 정리해 `[계획]`으로 전환한 뒤 구현 계획을 만든다. - 모든 기능 Task와 Task 안에 명시된 검증이 충족된 Milestone은 먼저 `[검토중]`으로 두고, 사용자 완료 확인과 archive 승인을 받은 뒤 `[완료]`로 전환한다. -- 완료된 Phase는 `agent-ops/roadmap/archive/phase//PHASE.md`로 이동하고, 하위 Milestone도 같은 archive Phase scaffold 아래에 둔다. -- 진행중 Phase 안에서 완료된 Milestone은 활성 Phase 문서에 짧은 링크를 남기고, 상세 문서는 `agent-ops/roadmap/archive/phase//milestones/`로 이동한다. +- 완료된 Phase는 `agent-roadmap/archive/phase//PHASE.md`로 이동하고, 하위 Milestone도 같은 archive Phase scaffold 아래에 둔다. +- 진행중 Phase 안에서 완료된 Milestone은 활성 Phase 문서에 짧은 링크를 남기고, 상세 문서는 `agent-roadmap/archive/phase//milestones/`로 이동한다. - archive `PHASE.md`는 Phase 자체가 완료 또는 폐기될 때만 만들며, 진행중 Phase의 완료 Milestone만 archive된 경우 archive Phase 디렉터리에 `milestones/`만 있을 수 있다. -- `agent-ops/roadmap/archive/**`는 일반 작업에서 읽지 않는다. 과거 완료 내용, 완료 근거, 복원, 비교가 필요한 경우에만 `ROADMAP.md` 또는 `PHASE.md`의 archive 링크를 따라가서 읽는다. +- `agent-roadmap/archive/**`는 일반 작업에서 읽지 않는다. 과거 완료 내용, 완료 근거, 복원, 비교가 필요한 경우에만 `ROADMAP.md` 또는 `PHASE.md`의 archive 링크를 따라가서 읽는다. - 아카이브된 Phase/Milestone 문서는 최신 템플릿이나 스킬 규약에 맞춰 재포맷하지 않는다. - 선택된 Milestone의 `구현 잠금` 섹션이 없거나 상태가 `잠금`이면 코드 구현, `agent-task` 구현 계획 생성, 세부 API/파일 구조 확정을 시작하기 전에 현재 요청에 직접 영향을 주는 `결정 필요` 항목만 확인한다. - 현재 요청과 직접 관련 없는 미정 항목은 잠금 상태로 남겨도 되며, 기존 구조/도메인 rule/플랫폼 관례로 정할 수 있는 작업은 표준선으로 기록하고 진행할 수 있다. diff --git a/agent-ops/skills/common/analyze-roadmap-position/SKILL.md b/agent-ops/skills/common/analyze-roadmap-position/SKILL.md index 16cf3b3..44d8728 100644 --- a/agent-ops/skills/common/analyze-roadmap-position/SKILL.md +++ b/agent-ops/skills/common/analyze-roadmap-position/SKILL.md @@ -22,8 +22,8 @@ description: "여러 레포를 전환할 때 코드/git 분석 없이 전체 ROA ## 먼저 확인할 것 - [ ] `agent-ops/skills/common/_templates/roadmap-position-report-template.md`를 읽어 최신 답변 템플릿 확인 -- [ ] `agent-ops/roadmap/` 디렉터리 존재 여부 확인 -- [ ] `agent-ops/roadmap/current.md` 존재 여부 확인 +- [ ] `agent-roadmap/` 디렉터리 존재 여부 확인 +- [ ] `agent-roadmap/current.md` 존재 여부 확인 - [ ] 로드맵이 있으면 `ROADMAP.md`의 `Phase 흐름`을 확인 - [ ] `current.md`의 활성 Phase와 활성 Milestone 이름, 상태, 경로 확인 - [ ] 활성 Phase 문서의 `Milestone 흐름` 확인 @@ -31,10 +31,10 @@ description: "여러 레포를 전환할 때 코드/git 분석 없이 전체 ROA ## 실행 절차 -1. `agent-ops/roadmap/` 존재 여부를 확인한다. +1. `agent-roadmap/` 존재 여부를 확인한다. - 없으면 로드맵 없음으로 짧게 보고하고 멈춘다. 2. `agent-ops/skills/common/_templates/roadmap-position-report-template.md`를 읽는다. -3. `agent-ops/roadmap/current.md`를 확인한다. +3. `agent-roadmap/current.md`를 확인한다. - 없으면 current 없음으로 보고하고, `ROADMAP.md`가 있으면 `Phase 흐름`만 보여준다. 4. `ROADMAP.md`의 `Phase 흐름`을 읽어 전체 Phase 목록을 만든다. - 각 Phase는 상태, 이름, 링크만 남긴다. @@ -71,4 +71,4 @@ description: "여러 레포를 전환할 때 코드/git 분석 없이 전체 ROA - 기본 동작에서 Milestone의 `기능` 체크리스트를 감사하지 않는다. - 완료 여부, 남은 작업, 코드와 문서의 동기화 상태를 evidence 기반으로 판정하지 않는다. - 사용자가 명시하지 않은 상태에서 `ROADMAP.md`, `current.md`, Phase, Milestone 문서를 수정하지 않는다. -- 사용자가 과거 기록 확인을 명시하지 않으면 `agent-ops/roadmap/archive/**`를 읽지 않는다. +- 사용자가 과거 기록 확인을 명시하지 않으면 `agent-roadmap/archive/**`를 읽지 않는다. diff --git a/agent-ops/skills/common/check-roadmap-dependency/SKILL.md b/agent-ops/skills/common/check-roadmap-dependency/SKILL.md index e9a0917..50c6531 100644 --- a/agent-ops/skills/common/check-roadmap-dependency/SKILL.md +++ b/agent-ops/skills/common/check-roadmap-dependency/SKILL.md @@ -22,7 +22,7 @@ Milestone identity 역검색과 개별 lock 판별은 `agent-ops/bin/roadmap-dep ## 입력 - `lock-id`: 확인할 lock entry id. 예: `oto:oto-agent-registration`. 명시되면 이 id만 판별한다 (선택) -- `target-milestone`: 확인할 Milestone path 또는 `:agent-ops/roadmap/phase/.../milestones/.md`. 없으면 현재 프로젝트 `current.md`의 활성 Milestone 단일 후보를 사용한다 (선택) +- `target-milestone`: 확인할 Milestone path 또는 `:agent-roadmap/phase/.../milestones/.md`. 없으면 현재 프로젝트 `current.md`의 활성 Milestone 단일 후보를 사용한다 (선택) - `direction`: `locked` / `rely-on` / `both`. 기본값은 `both`다. `locked`는 대상 Milestone이 잠긴 entry만, `rely-on`은 대상 Milestone을 선행 조건으로 삼는 entry만 확인한다 (선택) - `locks-file`: 기본값은 프로젝트 상위 `.agent-roadmap-sync/locks.yaml`이며, 다른 파일을 검사할 때만 지정한다 (선택) @@ -39,10 +39,10 @@ Milestone identity 역검색과 개별 lock 판별은 `agent-ops/bin/roadmap-dep - `locks-file`이 명시되지 않았으면 프로젝트 상위 `.agent-roadmap-sync/locks.yaml`을 사용한다. - `locks-file`이 없거나 읽을 수 없으면 결과를 `error`로 보고한다. 이를 미충족 의존성으로 해석하지 않는다. - `lock-id`가 있으면 그 id만 판별한다. - - `lock-id`가 없으면 `target-milestone` 또는 현재 프로젝트 `agent-ops/roadmap/current.md`의 활성 Milestone 단일 후보로 Milestone identity를 만든다. - - Milestone identity는 `:agent-ops/roadmap/phase//milestones/.md` 형식이다. - - `target-milestone`이 `agent-ops/roadmap/...` 상대 경로이면 현재 프로젝트명을 prefix로 붙인다. - - `target-milestone`이 workspace 하위 절대/상대 경로이면 workspace 바로 아래 디렉터리명을 project로 삼고, 그 뒤 `agent-ops/roadmap/...` 경로를 붙인다. + - `lock-id`가 없으면 `target-milestone` 또는 현재 프로젝트 `agent-roadmap/current.md`의 활성 Milestone 단일 후보로 Milestone identity를 만든다. + - Milestone identity는 `:agent-roadmap/phase//milestones/.md` 형식이다. + - `target-milestone`이 `agent-roadmap/...` 상대 경로이면 현재 프로젝트명을 prefix로 붙인다. + - `target-milestone`이 workspace 하위 절대/상대 경로이면 workspace 바로 아래 디렉터리명을 project로 삼고, 그 뒤 `agent-roadmap/...` 경로를 붙인다. - `target-milestone`이 archive 경로이면 일반 의존 판별 후보로 쓰지 말고 사용자에게 활성 Milestone 선택을 요청한다. - 활성 Milestone 후보가 없거나 둘 이상이면 추정하지 말고 사용자에게 lock id 또는 Milestone 선택을 요청한다. - `lock-id`가 없으면 `agent-ops/bin/roadmap-dependency-checker.sh --find-milestone "" "" ""`로 Milestone identity와 일치하는 entry를 찾는다. diff --git a/agent-ops/skills/common/code-review/SKILL.md b/agent-ops/skills/common/code-review/SKILL.md index 87c8d73..2b82775 100644 --- a/agent-ops/skills/common/code-review/SKILL.md +++ b/agent-ops/skills/common/code-review/SKILL.md @@ -80,7 +80,7 @@ Milestone task group contract: - `agent-task/m-/` is reserved for Milestone-linked work created by the plan skill. - Do not treat normal task groups that do not start with `m-` as runtime milestone completion targets. - For a selected task path, parse only the first path segment as `{task_group}`. If it matches `^m-[a-z0-9][a-z0-9-]*$`, strip `m-` to get ``. -- Do not read or modify `agent-ops/roadmap/**` for milestone routing during code-review finalization. +- Do not read or modify `agent-roadmap/**` for milestone routing during code-review finalization. - Do not call `update-roadmap` from this skill. The runtime consumes the PASS completion event, checks current state, resolves the active Milestone, and calls `update-roadmap` if needed. - For `m-` PASS tasks, report the original active task path, final archive path, complete log path, task group, and milestone slug so the runtime has deterministic event inputs. @@ -358,7 +358,7 @@ After Step 6: - Do not overwrite an existing archive directory. If `agent-task/archive/YYYY/MM/{task_name}/` already exists, append the next numeric suffix to the final path segment: single-plan `agent-task/archive/YYYY/MM/{task_group}_1/`, split-plan `agent-task/archive/YYYY/MM/{task_group}/{subtask_dir}_1/`, and so on. - After moving a split subtask, remove the active parent `agent-task/{task_group}/` only if it is empty. If sibling subtask directories or other files remain, leave the parent task group in place. - If verdict is `PASS` and `{task_group}` matches `m-`, do not resolve the roadmap target and do not call `update-roadmap`. Report completion event metadata after the task archive move: `origin-task=agent-task/{task_name}` from the original active task path, `task-group={task_group}`, `milestone-slug=`, final archive path, `complete.log` path, and archived plan/review log paths. -- The runtime consumes that completion event, checks current state, resolves `agent-ops/roadmap/phase/*/milestones/.md`, and calls `update-roadmap` if needed. +- The runtime consumes that completion event, checks current state, resolves `agent-roadmap/phase/*/milestones/.md`, and calls `update-roadmap` if needed. - `WARN` and `FAIL` do not update the roadmap Milestone; the follow-up plan remains under the same `m-` task group when the original task was Milestone-linked. - `USER_REVIEW` does not update the roadmap Milestone and does not produce PASS completion metadata. Keep the active task directory in place with `USER_REVIEW.md` and archived plan/review logs until the user decides how to resume, replan, defer, or abandon the task. - If `USER_REVIEW.md` is later resolved as complete/PASS by user decision and evidence, write `complete.log`, move the task directory to archive, and report `m-*` PASS completion metadata just like a normal `PASS`. diff --git a/agent-ops/skills/common/create-readme/SKILL.md b/agent-ops/skills/common/create-readme/SKILL.md index fe9875f..9a56647 100644 --- a/agent-ops/skills/common/create-readme/SKILL.md +++ b/agent-ops/skills/common/create-readme/SKILL.md @@ -76,7 +76,7 @@ README는 프로젝트 특성에 맞게 필요한 섹션만 사용하되, 기본 - README 상단에는 프로젝트가 무엇을 해결하는지와 현재 사용할 수 있는 범위를 먼저 쓴다. - AI가 작업을 이어받을 때 필요한 경로, 명령, 검증 방법, 주요 문서를 명확한 제목과 표로 정리한다. - `agent-ops/`가 있으면 규칙, 로드맵, 스킬 문서를 참고 문서나 작업 맥락에 연결한다. -- `agent-ops/roadmap/current.md`가 있으면 README에 현재 작업 위치를 복사하지 말고, 로드맵을 확인할 문서 경로만 적는다. +- `agent-roadmap/current.md`가 있으면 README에 현재 작업 위치를 복사하지 말고, 로드맵을 확인할 문서 경로만 적는다. - README는 제품 소개 문서이면서 작업 진입점이다. 마케팅 문구보다 실행 가능한 정보와 프로젝트 경계를 우선한다. - 불확실한 내용은 단정하지 않고 `TODO` 또는 "확인 필요"로 남긴다. @@ -85,7 +85,7 @@ README는 프로젝트 특성에 맞게 필요한 섹션만 사용하되, 기본 - [ ] 루트 `README.md` 존재 여부와 기존 내용 확인 - [ ] `package.json`, `pyproject.toml`, `Cargo.toml`, `go.mod`, `Makefile`, `docker-compose.yml` 등 실행/검증 명령 근거 확인 - [ ] `agent-ops/rules/project/rules.md`가 있으면 프로젝트 개요, 기술 스택, 도메인 매핑 확인 -- [ ] `agent-ops/roadmap/ROADMAP.md` 또는 `agent-ops/roadmap/current.md`가 있으면 제품 방향과 활성 Milestone 문서 경로만 확인 +- [ ] `agent-roadmap/ROADMAP.md` 또는 `agent-roadmap/current.md`가 있으면 제품 방향과 활성 Milestone 문서 경로만 확인 - [ ] 주요 소스 디렉터리와 테스트 디렉터리를 `rg --files`로 가볍게 확인 ## 실행 절차 diff --git a/agent-ops/skills/common/create-roadmap/SKILL.md b/agent-ops/skills/common/create-roadmap/SKILL.md index c294a1f..33322f0 100644 --- a/agent-ops/skills/common/create-roadmap/SKILL.md +++ b/agent-ops/skills/common/create-roadmap/SKILL.md @@ -8,7 +8,7 @@ description: AI-first 개인/소규모 프로젝트의 전체 목표, Phase scaf ## 목적 -`agent-ops/roadmap/` 하위에 `Roadmap -> Phase -> Milestone` 기반 한국어 로드맵 구조를 처음 생성한다. +`agent-roadmap/` 하위에 `Roadmap -> Phase -> Milestone` 기반 한국어 로드맵 구조를 처음 생성한다. 전체 로드맵은 전체 방향과 Phase index만 담당하고, 일반 작업에서는 `current.md`의 활성 Phase/Milestone 링크와 관련 문서만 읽도록 만든다. Milestone은 구현 계획이 아니라 방향성, 범위, 위험, 확인 필요 사항을 기록하는 협업 문서다. Epic과 Task는 별도 파일로 분리하지 않고 Milestone 문서의 `기능` 안에서 관리한다. 별도 `완료 기준` 섹션은 만들지 않고, 검증이 필요한 기능에만 같은 Task 안의 `검증:` 문구로 통합한다. @@ -17,7 +17,7 @@ Epic과 Task는 별도 파일로 분리하지 않고 Milestone 문서의 `기능 - 프로젝트에 파일 기반 로드맵을 처음 만들 때 - 사용자가 "로드맵 만들어줘", "마일스톤 설계해줘", "goal/phase 구조 잡아줘"라고 요청할 때 -- 기존 README나 메모에 흩어진 계획을 `agent-ops/roadmap/` 구조로 분리할 때 +- 기존 README나 메모에 흩어진 계획을 `agent-roadmap/` 구조로 분리할 때 ## 입력 @@ -30,8 +30,7 @@ Epic과 Task는 별도 파일로 분리하지 않고 Milestone 문서의 `기능 ## 생성 구조 ```text -agent-ops/ - roadmap/ +agent-roadmap/ ROADMAP.md current.md phase/ @@ -49,11 +48,11 @@ agent-ops/ | 파일 | 역할 | |------|------| -| `agent-ops/roadmap/ROADMAP.md` | 전체 목표와 Phase 흐름만 담는 최상위 지도. 로드맵 생성/갱신/Phase 전환 때만 읽는다 | -| `agent-ops/roadmap/current.md` | 활성 Phase와 활성 Milestone 후보, 선택 규칙을 담는 얇은 포인터 | -| `agent-ops/roadmap/phase//PHASE.md` | Phase 목표, 상태, Milestone 흐름, Phase 경계를 담는 문서 | -| `agent-ops/roadmap/phase//milestones/.md` | 일반 작업 시 읽는 Milestone 단위 목표, 스케치 승격 조건, 구현 잠금, 범위, 기능 Epic/Task 체크리스트, 범위 제외 항목 | -| `agent-ops/roadmap/archive/phase//...` | 완료 또는 폐기되어 현재 후보에서 제외한 과거 Phase/Milestone. 일반 작업에서는 읽지 않는다 | +| `agent-roadmap/ROADMAP.md` | 전체 목표와 Phase 흐름만 담는 최상위 지도. 로드맵 생성/갱신/Phase 전환 때만 읽는다 | +| `agent-roadmap/current.md` | 활성 Phase와 활성 Milestone 후보, 선택 규칙을 담는 얇은 포인터 | +| `agent-roadmap/phase//PHASE.md` | Phase 목표, 상태, Milestone 흐름, Phase 경계를 담는 문서 | +| `agent-roadmap/phase//milestones/.md` | 일반 작업 시 읽는 Milestone 단위 목표, 스케치 승격 조건, 구현 잠금, 범위, 기능 Epic/Task 체크리스트, 범위 제외 항목 | +| `agent-roadmap/archive/phase//...` | 완료 또는 폐기되어 현재 후보에서 제외한 과거 Phase/Milestone. 일반 작업에서는 읽지 않는다 | ## 템플릿 @@ -73,8 +72,8 @@ agent-ops/ - `[계획]`은 목표, 범위, 기능 Task, 구현 잠금, 결정 필요 항목이 정리되어 구현 계획을 만들 수 있는 상태다. - Phase와 Milestone 이름, 파일명에는 `1`, `2`, `M01`, `P1` 같은 순번을 붙이지 않는다. - 진행 순서는 `ROADMAP.md`와 각 `PHASE.md`의 위에서 아래 순서로 표현한다. -- Phase 파일명은 `agent-ops/roadmap/phase//PHASE.md`로 만든다. -- Milestone 파일명은 `agent-ops/roadmap/phase//milestones/.md`로 만든다. +- Phase 파일명은 `agent-roadmap/phase//PHASE.md`로 만든다. +- Milestone 파일명은 `agent-roadmap/phase//milestones/.md`로 만든다. - ``와 ``는 소문자 영문, 숫자, 하이픈만 사용하고, 공백/언더스코어/순번 prefix를 넣지 않는다. - 중간에 Phase나 Milestone을 끼워 넣을 수 있도록 기존 항목의 이름과 파일명을 불필요하게 바꾸지 않는다. @@ -98,7 +97,7 @@ agent-ops/ ## 먼저 확인할 것 -- [ ] `agent-ops/roadmap/ROADMAP.md` 또는 `agent-ops/roadmap/current.md`가 이미 존재하는지 확인 +- [ ] `agent-roadmap/ROADMAP.md` 또는 `agent-roadmap/current.md`가 이미 존재하는지 확인 - [ ] 이미 존재하면 덮어쓰지 말고 `update-roadmap` 스킬 사용을 안내 - [ ] `README.md`, `agent-ops/GUIDE.md`, `agent-ops/rules/project/rules.md` 등 프로젝트 방향을 설명하는 문서를 확인 - [ ] `rg --files`로 현재 프로젝트의 주요 구조를 가볍게 확인 @@ -108,7 +107,7 @@ agent-ops/ ## 실행 절차 1. **기존 로드맵 확인** - - `agent-ops/roadmap/` 하위 기존 파일 존재 여부를 확인한다. + - `agent-roadmap/` 하위 기존 파일 존재 여부를 확인한다. - 기존 로드맵이 있으면 새로 만들지 않고 `update-roadmap`을 사용하도록 안내한다. 2. **프로젝트 방향 분석** @@ -133,7 +132,7 @@ agent-ops/ 5. **검증** - 생성한 링크가 실제 파일을 가리키는지 확인한다. - - `current.md` 활성 항목에 `agent-ops/roadmap/archive/**` 경로가 없는지 확인한다. + - `current.md` 활성 항목에 `agent-roadmap/archive/**` 경로가 없는지 확인한다. - Epic heading과 Task 체크리스트 id가 형식을 따르는지 확인한다. - 상태 표기가 `[진행중]`처럼 공백 없는 표준값인지 확인한다. - `[스케치]` Milestone에 `승격 조건` 섹션이 있고 `구현 잠금`이 `잠금`인지 확인한다. @@ -144,8 +143,8 @@ agent-ops/ ```markdown ## 생성 완료 -- 로드맵: agent-ops/roadmap/ROADMAP.md -- 현재 컨텍스트: agent-ops/roadmap/current.md +- 로드맵: agent-roadmap/ROADMAP.md +- 현재 컨텍스트: agent-roadmap/current.md - Phase 문서: - Milestone 문서: - 활성 Phase: @@ -156,8 +155,8 @@ agent-ops/ ## 활성 항목 -- Phase: : agent-ops/roadmap/phase//PHASE.md -- Milestone: : agent-ops/roadmap/phase//milestones/.md +- Phase: : agent-roadmap/phase//PHASE.md +- Milestone: : agent-roadmap/phase//milestones/.md ## TODO 항목 @@ -166,9 +165,9 @@ agent-ops/ ## 금지 사항 -- 기존 `agent-ops/roadmap/` 파일을 덮어쓰지 않는다. +- 기존 `agent-roadmap/` 파일을 덮어쓰지 않는다. - 일반 작업마다 전체 `ROADMAP.md`를 읽도록 규칙을 만들지 않는다. -- `current.md`에 `agent-ops/roadmap/archive/**` 경로를 넣지 않는다. +- `current.md`에 `agent-roadmap/archive/**` 경로를 넣지 않는다. - Phase와 Milestone 이름 또는 파일명에 순번을 강제하지 않는다. - `ROADMAP.md`에 Milestone 상세 작업 체크리스트를 넣지 않는다. - Epic과 Task를 별도 파일로 분리하지 않는다. diff --git a/agent-ops/skills/common/init-agent-ops/SKILL.md b/agent-ops/skills/common/init-agent-ops/SKILL.md index 7fb0964..36d4b54 100644 --- a/agent-ops/skills/common/init-agent-ops/SKILL.md +++ b/agent-ops/skills/common/init-agent-ops/SKILL.md @@ -71,8 +71,8 @@ description: 프로젝트 상태를 판별하고 agent-ops 기본 스캐폴드 | `agent-ops/rules/project/domain//rules.md` | 도메인 분석 후 생성 | | `agent-ops/rules/private/` | 폴더만 생성 (내용은 개인이 작성) | | `.gitignore`에 `agent-ops/rules/private/` 추가 | git 추적 제외 | -| `.geminiignore`, `.aiexclude`, `.cursorignore`, `.clineignore` | 사용자 항목은 보존하고 Agent-Ops 관리 block에 `agent-task/archive/**`, `agent-ops/roadmap/archive/**` 추가 | -| `.claude/settings.json`, `opencode.json` | `agent-task/archive/**` 읽기/검색 제외 설정을 생성 또는 병합한다. `agent-ops/roadmap/archive/**`는 필요 시 링크로 읽을 수 있어야 하므로 hard read/glob deny에서 제거한다 | +| `.geminiignore`, `.aiexclude`, `.cursorignore`, `.clineignore` | 사용자 항목은 보존하고 Agent-Ops 관리 block에 `agent-task/archive/**`, `agent-roadmap/archive/**` 추가 | +| `.claude/settings.json`, `opencode.json` | `agent-task/archive/**` 읽기/검색 제외 설정을 생성 또는 병합한다. `agent-roadmap/archive/**`는 필요 시 링크로 읽을 수 있어야 하므로 hard read/glob deny에서 제거한다 | 에이전트별 파일명: @@ -178,12 +178,12 @@ common/rules.md와 내용이 중복되지 않도록 한다. 3. **AI ignore / permission 기본 설정** - `.geminiignore`, `.aiexclude`, `.cursorignore`, `.clineignore`에는 사용자 항목을 건드리지 않고 Agent-Ops 관리 block만 추가하거나 교체한다 - - Agent-Ops 관리 block에는 `agent-task/archive/**`와 `agent-ops/roadmap/archive/**`를 넣는다 + - Agent-Ops 관리 block에는 `agent-task/archive/**`와 `agent-roadmap/archive/**`를 넣는다 - `.claude/settings.json`, `opencode.json`이 없으면 `agent-task/archive/**` 읽기/검색 제외 설정을 생성하고, 있으면 가능한 경우 기존 설정을 보존하며 필요한 제외 설정만 병합한다 - - `agent-ops/roadmap/archive/**`는 일반 작업에서 읽지 않도록 AI ignore와 로드맵 규칙으로 제한하되, `.claude/settings.json`이나 `opencode.json`의 hard read/glob deny에는 두지 않는다 - - 기존 `.claude/settings.json`이나 `opencode.json`에 `agent-ops/roadmap/archive/**` hard read/glob deny가 있으면 init-agent-ops 표준에 맞게 제거한다 + - `agent-roadmap/archive/**`는 일반 작업에서 읽지 않도록 AI ignore와 로드맵 규칙으로 제한하되, `.claude/settings.json`이나 `opencode.json`의 hard read/glob deny에는 두지 않는다 + - 기존 `.claude/settings.json`이나 `opencode.json`에 `agent-roadmap/archive/**` hard read/glob deny가 있으면 init-agent-ops 표준에 맞게 제거한다 - 대상 루트에 `.agent-ops-source`가 있으면 AI ignore / permission 파일은 보강하지 않는다 - - `agent-task/archive/**`와 `agent-ops/roadmap/archive/**` 제외는 `.gitignore`에 추가하지 않는다 + - `agent-task/archive/**`와 `agent-roadmap/archive/**` 제외는 `.gitignore`에 추가하지 않는다 4. **agent-ops 폴더 구조 복사** - 공통 관리 레포의 `agent-ops/` 공통 폴더(bin, rules/common, skills/common)를 복사한다 @@ -237,17 +237,17 @@ common/rules.md와 내용이 중복되지 않도록 한다. - [ ] 생성된 domain rules.md가 `domain-rule-template.md` 형식을 따르는가 - [ ] `rules/project/rules.md`의 도메인 매핑 테이블에 생성된 도메인이 모두 등록되어 있는가 - [ ] `.gitignore`에 `agent-ops/rules/private/` 항목이 추가되어 있는가 -- [ ] `.geminiignore`, `.aiexclude`, `.cursorignore`, `.clineignore`에 Agent-Ops 관리 block이 있고 그 안에 `agent-task/archive/**`와 `agent-ops/roadmap/archive/**`가 포함되어 있는가 +- [ ] `.geminiignore`, `.aiexclude`, `.cursorignore`, `.clineignore`에 Agent-Ops 관리 block이 있고 그 안에 `agent-task/archive/**`와 `agent-roadmap/archive/**`가 포함되어 있는가 - [ ] `.claude/settings.json`, `opencode.json`에 `agent-task/archive/**` 제외 설정이 있거나, 병합 불가 시 수동 병합 안내를 출력했는가 -- [ ] `.claude/settings.json`, `opencode.json`에 `agent-ops/roadmap/archive/**` hard read/glob deny가 남아 있지 않은가 -- [ ] 기존 `agent-ops/roadmap/archive/**` hard deny가 있으면 init-agent-ops 표준에 맞게 제거했는가 -- [ ] `.gitignore`에 `agent-task/archive/**` 또는 `agent-ops/roadmap/archive/**`를 추가하지 않았는가 +- [ ] `.claude/settings.json`, `opencode.json`에 `agent-roadmap/archive/**` hard read/glob deny가 남아 있지 않은가 +- [ ] 기존 `agent-roadmap/archive/**` hard deny가 있으면 init-agent-ops 표준에 맞게 제거했는가 +- [ ] `.gitignore`에 `agent-task/archive/**` 또는 `agent-roadmap/archive/**`를 추가하지 않았는가 - 검증 실패 시: 누락된 파일/항목을 사용자에게 알리고 해당 부분만 보완한다 ## 금지 사항 - 진입 파일에 rules/common/rules.md 외 내용을 추가하지 않는다. -- `agent-task/archive/**`와 `agent-ops/roadmap/archive/**` 제외를 `.gitignore`에 추가하지 않는다. +- `agent-task/archive/**`와 `agent-roadmap/archive/**` 제외를 `.gitignore`에 추가하지 않는다. - 실제 구조보다 앞선 추상 구조를 강요하지 않는다. - 처음부터 많은 domain / skill을 만들지 않는다. - rules/common/rules.md를 프로젝트에서 직접 수정하지 않는다. diff --git a/agent-ops/skills/common/plan/SKILL.md b/agent-ops/skills/common/plan/SKILL.md index ac4b9d7..78cd2a1 100644 --- a/agent-ops/skills/common/plan/SKILL.md +++ b/agent-ops/skills/common/plan/SKILL.md @@ -65,7 +65,7 @@ Task directory naming rules: - A normal single-plan task uses `agent-task/{task_group}/` with a short snake_case category name, e.g. `agent-task/refactoring/`. - If the plan is based on a selected active Milestone, use `agent-task/m-/` as the task group. Do not include the Phase slug, Epic id, Task id, or a separate task slug in the task group. - `m-` is a reserved top-level task group namespace for Milestone-linked work. Non-roadmap tasks must not use `m-`. -- Runtime completion-event routing for `m-*` reads only the top-level `{task_group}` name. It resolves `` by matching exactly one active file at `agent-ops/roadmap/phase/*/milestones/.md`; archive paths are not target candidates. +- Runtime completion-event routing for `m-*` reads only the top-level `{task_group}` name. It resolves `` by matching exactly one active file at `agent-roadmap/phase/*/milestones/.md`; archive paths are not target candidates. - When split gates require decomposition, create one shared category folder and multiple subtask directories under it. Each subtask directory owns exactly one normal active plan file and one normal active review stub. - Multi-plan output is a set of independent `PLAN-{build_lane}-GNN.md` + `CODE_REVIEW-{review_lane}-GNN.md` pairs across `agent-task/{task_group}/{subtask_dir}/` folders, not multiple plan files inside one folder. - Multi-plan subtask directory names must start with a stable two-digit task index. The index must increase across sibling subtask directories for sorting, but it is not a serial execution dependency. @@ -133,8 +133,8 @@ If a selected task directory contains both `USER_REVIEW.md` and active `PLAN-*-G 로드맵 확인: -- `agent-ops/roadmap/current.md`가 있으면 구현 계획 파일을 만들기 전에 읽고, 사용자 요청, 브랜치, 변경 경로를 기준으로 관련 Phase와 Milestone을 선택한다. -- `current.md`가 `agent-ops/roadmap/archive/**`를 가리키면 해당 문서는 읽지 말고 활성 Phase/Milestone이 아니라고 보고한다. +- `agent-roadmap/current.md`가 있으면 구현 계획 파일을 만들기 전에 읽고, 사용자 요청, 브랜치, 변경 경로를 기준으로 관련 Phase와 Milestone을 선택한다. +- `current.md`가 `agent-roadmap/archive/**`를 가리키면 해당 문서는 읽지 말고 활성 Phase/Milestone이 아니라고 보고한다. - 선택한 Phase를 한 번 읽어 Phase 목표, Milestone 흐름, Phase 경계를 확인한다. - 선택한 Milestone을 한 번 읽어 목표, 상태, 승격 조건, 범위, 기능 Task, 완료 리뷰, 범위 제외, 구현 잠금을 확인한다. `승격 조건`은 `[스케치]`에서만 필수이며, `[계획]` 이상에서 섹션이 없으면 `없음`으로 본다. `구현 잠금` 섹션이 없거나 상태가 `잠금`이면 현재 요청에 직접 영향을 주는 `결정 필요` 항목만 확인하고, 그 결정 없이는 `PLAN-*-G??.md`, `CODE_REVIEW-*-G??.md`, file/API/package 수준 구현 단계를 확정하지 않는다. - 선택한 Milestone에 legacy `필수 기능`/`완료 기준`이 분리되어 있으면 plan 작성 전에 roadmap preflight로 정규화한다. 흡수 가능한 기준은 관련 기능 Task 안의 선택적 `검증:` 또는 Task 설명으로 즉시 흡수하고, 어느 기능에도 붙지 않는 기준이 남으면 plan 파일을 만들지 말고 남은 기준과 필요한 사용자 판단을 구체적으로 보고한다. diff --git a/agent-ops/skills/common/sync-pull/SKILL.md b/agent-ops/skills/common/sync-pull/SKILL.md index 9afc008..cbcc00b 100644 --- a/agent-ops/skills/common/sync-pull/SKILL.md +++ b/agent-ops/skills/common/sync-pull/SKILL.md @@ -30,9 +30,9 @@ agent-ops/bin/sync.sh --pull - [ ] sync.sh 가 오류 없이 완료됐는가 - [ ] 현재 프로젝트 버전이 framework 버전과 일치하는가 - [ ] `agent-ops/bin/entry-files.sh`의 모든 진입 파일이 갱신됐고, 내용이 framework의 `agent-ops/rules/common/rules.md`와 일치하는가 -- [ ] `.geminiignore`, `.aiexclude`, `.cursorignore`, `.clineignore`에 Agent-Ops 관리 block이 있고 그 안에 `agent-task/archive/**`와 `agent-ops/roadmap/archive/**`가 포함되어 있는가 -- [ ] `.claude/settings.json`, `opencode.json`에 `agent-task/archive/**` hard deny가 있고 `agent-ops/roadmap/archive/**` hard read/glob deny가 남아 있지 않은가 -- [ ] 현재 프로젝트에 기존 `agent-ops/roadmap/archive/**` hard deny가 있으면 init-agent-ops 표준에 맞게 제거했는가 +- [ ] `.geminiignore`, `.aiexclude`, `.cursorignore`, `.clineignore`에 Agent-Ops 관리 block이 있고 그 안에 `agent-task/archive/**`와 `agent-roadmap/archive/**`가 포함되어 있는가 +- [ ] `.claude/settings.json`, `opencode.json`에 `agent-task/archive/**` hard deny가 있고 `agent-roadmap/archive/**` hard read/glob deny가 남아 있지 않은가 +- [ ] 현재 프로젝트에 기존 `agent-roadmap/archive/**` hard deny가 있으면 init-agent-ops 표준에 맞게 제거했는가 - [ ] agentic-framework의 AI ignore / permission 파일은 수정되거나 stage되지 않았는가 ## 금지 사항 diff --git a/agent-ops/skills/common/sync-push/SKILL.md b/agent-ops/skills/common/sync-push/SKILL.md index 67fe9bf..d20e580 100644 --- a/agent-ops/skills/common/sync-push/SKILL.md +++ b/agent-ops/skills/common/sync-push/SKILL.md @@ -68,15 +68,15 @@ description: 현재 프로젝트의 agent-ops를 공통 원본 repo로 올리거 ```text # BEGIN Agent-Ops managed ignore agent-task/archive/** -agent-ops/roadmap/archive/** +agent-roadmap/archive/** # END Agent-Ops managed ignore ``` - 관리 block 밖의 기존 ignore 항목은 사용자 소유로 보고 삭제, 정렬, 중복 제거하지 않는다. - `.claude/settings.json`과 `opencode.json`은 기존 사용자 설정을 보존하고 `agent-task/archive/**` hard read/glob deny만 보강한다. -- `agent-ops/roadmap/archive/**`는 필요한 경우 링크로 읽을 수 있어야 하므로 `.claude/settings.json`이나 `opencode.json`의 hard read/glob deny로 두지 않는다. -- 대상 프로젝트에 기존 `agent-ops/roadmap/archive/**` hard read/glob deny가 있으면 init-agent-ops 표준에 맞게 제거한다. -- `opencode.json`의 watcher ignore에는 `agent-task/archive/**`와 `agent-ops/roadmap/archive/**`를 둘 수 있다. +- `agent-roadmap/archive/**`는 필요한 경우 링크로 읽을 수 있어야 하므로 `.claude/settings.json`이나 `opencode.json`의 hard read/glob deny로 두지 않는다. +- 대상 프로젝트에 기존 `agent-roadmap/archive/**` hard read/glob deny가 있으면 init-agent-ops 표준에 맞게 제거한다. +- `opencode.json`의 watcher ignore에는 `agent-task/archive/**`와 `agent-roadmap/archive/**`를 둘 수 있다. ```bash agent-ops/bin/sync.sh [target] @@ -90,9 +90,9 @@ agent-ops/bin/sync.sh [target] - [ ] 버전 충돌 경고가 없었는가 — 있었다면 사용자에게 수동 머지 필요함을 알린다 - [ ] 대상 repo의 `agent-ops/rules/common/rules.md`가 현재 공통 원본 repo의 `agent-ops/rules/common/rules.md`와 일치하는가 - [ ] 공통 원본 repo에서 대상 프로젝트로 push한 경우, `agent-ops/bin/entry-files.sh`의 모든 진입 파일 내용이 현재 공통 원본 repo의 `agent-ops/rules/common/rules.md`와 일치하는가 -- [ ] 공통 원본 repo에서 대상 프로젝트로 push한 경우, `.geminiignore`, `.aiexclude`, `.cursorignore`, `.clineignore`에 Agent-Ops 관리 block이 있고 그 안에 `agent-task/archive/**`와 `agent-ops/roadmap/archive/**`가 포함되어 있는가 -- [ ] 공통 원본 repo에서 대상 프로젝트로 push한 경우, `.claude/settings.json`과 `opencode.json`에 `agent-task/archive/**` hard deny가 있고 `agent-ops/roadmap/archive/**` hard read/glob deny가 남아 있지 않은가 -- [ ] 대상 프로젝트에 기존 `agent-ops/roadmap/archive/**` hard deny가 있으면 init-agent-ops 표준에 맞게 제거했는가 +- [ ] 공통 원본 repo에서 대상 프로젝트로 push한 경우, `.geminiignore`, `.aiexclude`, `.cursorignore`, `.clineignore`에 Agent-Ops 관리 block이 있고 그 안에 `agent-task/archive/**`와 `agent-roadmap/archive/**`가 포함되어 있는가 +- [ ] 공통 원본 repo에서 대상 프로젝트로 push한 경우, `.claude/settings.json`과 `opencode.json`에 `agent-task/archive/**` hard deny가 있고 `agent-roadmap/archive/**` hard read/glob deny가 남아 있지 않은가 +- [ ] 대상 프로젝트에 기존 `agent-roadmap/archive/**` hard deny가 있으면 init-agent-ops 표준에 맞게 제거했는가 - [ ] 일반 프로젝트에서 공통 원본 repo로 push한 경우, AI ignore / permission 파일이 공통 원본 repo에 유입되지 않았는가 - [ ] 대상 repo에 commit/push 된 path가 방향별 허용 범위로 제한되었는가 diff --git a/agent-ops/skills/common/update-roadmap/SKILL.md b/agent-ops/skills/common/update-roadmap/SKILL.md index 129042e..008eaa5 100644 --- a/agent-ops/skills/common/update-roadmap/SKILL.md +++ b/agent-ops/skills/common/update-roadmap/SKILL.md @@ -8,7 +8,7 @@ description: 로드맵 업데이트, 로드맵에 추가, 마일스톤 추가/ ## 목적 -기존 `agent-ops/roadmap/` 구조를 현재 프로젝트 방향과 진행 상태에 맞게 갱신한다. +기존 `agent-roadmap/` 구조를 현재 프로젝트 방향과 진행 상태에 맞게 갱신한다. 표준 구조는 `ROADMAP.md -> phase//PHASE.md -> phase//milestones/.md`다. archive도 같은 Phase scaffold를 유지하며 `archive/phase//...` 아래에 둔다. 로드맵 전체를 매 작업마다 읽지 않도록 유지하면서, `current.md`의 활성 Phase와 활성 Milestone 창이 실제 작업 후보 목록으로 동작하게 한다. @@ -52,7 +52,7 @@ Epic과 Task는 별도 파일로 분리하지 않고 Milestone 문서의 `기능 ## 표준 구조 ```text -agent-ops/roadmap/ +agent-roadmap/ ROADMAP.md current.md phase/ @@ -101,7 +101,7 @@ agent-ops/roadmap/ - 일반 갱신은 `current.md`, 관련 활성 Phase, 관련 활성 Milestone을 우선 읽는다. - `ROADMAP.md`는 Phase 흐름, 전체 구조, 활성 범위 밖 작업, 전체 재계획, archive 링크 갱신이 필요할 때 읽는다. -- `agent-ops/roadmap/archive/**`는 일반 작업이나 sync에서 읽지 않는다. +- `agent-roadmap/archive/**`는 일반 작업이나 sync에서 읽지 않는다. - archive 모드에서 이동 대상이 아직 활성 경로에 있으면 그 대상 문서는 읽을 수 있다. - 과거 완료 내용, 완료 근거, 복원, 비교가 필요한 요청이면 `ROADMAP.md` 또는 `PHASE.md`의 archive 링크를 따라 필요한 archive 문서만 읽는다. @@ -127,17 +127,17 @@ agent-ops/roadmap/ - entry는 `id`, `locked`, `rely-on[].target`, `rely-on[].status`, `rely-on[].note`만 사용한다. - `locks.yaml`은 root sequence block style을 기본으로 작성한다. 예: `- id: ...` 아래에 `locked`, `rely-on`을 둔다. - `id`는 기본적으로 `<잠긴-project>:<잠긴-milestone-slug>`로 만든다. -- `locked`와 `rely-on[].target`은 `:agent-ops/roadmap/phase//milestones/.md` 형식으로 기록한다. -- Milestone 경로가 `agent-ops/roadmap/...` 상대 경로이면 현재 프로젝트명을 prefix로 붙인다. workspace 하위 절대/상대 경로이면 workspace 바로 아래 디렉터리명을 project로 삼고, 그 뒤 `agent-ops/roadmap/...` 경로를 붙인다. +- `locked`와 `rely-on[].target`은 `:agent-roadmap/phase//milestones/.md` 형식으로 기록한다. +- Milestone 경로가 `agent-roadmap/...` 상대 경로이면 현재 프로젝트명을 prefix로 붙인다. workspace 하위 절대/상대 경로이면 workspace 바로 아래 디렉터리명을 project로 삼고, 그 뒤 `agent-roadmap/...` 경로를 붙인다. - `locked`는 잠긴 Milestone, `rely-on.target`은 선행 조건 Milestone이다. 둘 다 같은 workspace의 어느 활성 Phase 하위 Milestone이어도 된다. 의존 대상이 `current.md`에 있어야 한다고 가정하지 않는다. - 의존 Milestone 확정 순서: - 1. 사용자가 명시한 `:agent-ops/roadmap/phase/.../milestones/.md` 또는 파일 경로 + 1. 사용자가 명시한 `:agent-roadmap/phase/.../milestones/.md` 또는 파일 경로 2. 사용자가 명시한 프로젝트와 Milestone slug 3. 사용자가 명시한 프로젝트와 Milestone 제목의 정규화 일치 4. 잠긴 Milestone 문서의 `선행 Milestone: ...`, `관련 Milestone: ...`, `외부 의존 잠금: ...`에 적힌 slug/제목 힌트 5. 프로젝트명만 있고 Milestone 힌트가 없을 때만 해당 프로젝트 `current.md`의 활성 Milestone 단일 후보 - 정규화 비교는 소문자 변환, backtick/따옴표 제거, 영문/숫자가 아닌 연속 문자를 `-` 하나로 치환, 앞뒤 `-` 제거 후 비교한다. 정규화한 힌트는 Milestone 파일 slug와 정규화한 제목 둘 다에 대조한다. -- 2-4번 탐색은 대상 프로젝트의 `agent-ops/roadmap/phase/*/milestones/*.md` 활성 문서만 대상으로 한다. archive 문서는 사용자가 archive 경로를 명시한 경우 외에는 읽거나 후보로 삼지 않는다. +- 2-4번 탐색은 대상 프로젝트의 `agent-roadmap/phase/*/milestones/*.md` 활성 문서만 대상으로 한다. archive 문서는 사용자가 archive 경로를 명시한 경우 외에는 읽거나 후보로 삼지 않는다. - 후보가 없거나 둘 이상이면 `locks.yaml`을 만들거나 고치지 말고 사용자에게 대상 Milestone 선택을 요청한다. - 외부 의존 잠금 요청이 있거나, 갱신 대상 Milestone이 `구현 잠금: 잠금`이며 문서에 외부 의존 잠금/선행 Milestone 컨텍스트가 있으면 `.agent-roadmap-sync/locks.yaml`을 upsert한다. resolvable한 외부 의존 문구를 Milestone에 남기고 lock entry를 누락하지 않는다. - 외부 의존 잠금을 만들 때 대상 Milestone의 `구현 잠금`은 `잠금`으로 둔다. @@ -161,7 +161,7 @@ agent-ops/roadmap/ ## Milestone task group 연동 - 런타임 완료 이벤트의 `origin-task`에서 `agent-task/` 다음 첫 path segment가 `m-`이면 Milestone 기반 plan/review 완료에서 온 요청으로 본다. `origin-task`는 archive 이동 전 active task 경로 또는 런타임이 그 형태로 정규화한 경로를 사용한다. -- ``는 활성 `agent-ops/roadmap/phase/*/milestones/.md`에서 정확히 하나만 찾아야 한다. archive Milestone은 target 후보가 아니다. +- ``는 활성 `agent-roadmap/phase/*/milestones/.md`에서 정확히 하나만 찾아야 한다. archive Milestone은 target 후보가 아니다. - target이 없거나 둘 이상이면 Milestone 내용을 추정해 수정하지 말고 target 불명확으로 보고한다. - target이 확정되면 PASS evidence, `complete.log`, final archive path, archived plan/review log 경로, code-review 결과 요약을 근거로 해당 Milestone의 기능 Task를 갱신한다. target routing 자체는 완료 이벤트의 `m-` task group으로만 결정한다. - 갱신 후 모든 기능 Task와 Task 안에 명시된 검증이 충족되면 `[검토중]` 전환과 `완료 리뷰` 요청 규칙을 적용한다. @@ -232,7 +232,7 @@ target 없는 신규 추가 요청은 append가 아니라 upsert로 처리한다 - 대상 Milestone이 `[완료]` 또는 `[폐기]`인지 확인한다. - `[검토중]` Milestone은 archive하지 않는다. 사용자 완료 승인 또는 폐기 지시가 있으면 먼저 `[완료]` 또는 `[폐기]`로 바꾼 뒤 archive한다. -- 대상 파일을 `agent-ops/roadmap/phase//milestones/.md`에서 `agent-ops/roadmap/archive/phase//milestones/.md`로 이동한다. +- 대상 파일을 `agent-roadmap/phase//milestones/.md`에서 `agent-roadmap/archive/phase//milestones/.md`로 이동한다. - 활성 `PHASE.md`의 Milestone 흐름에는 `[완료]` 또는 `[폐기]` 항목을 남기고, 경로는 archive 경로로 바꾼다. - `current.md`의 활성 Milestone에서는 제거한다. - `ROADMAP.md`는 Phase 상태나 경로가 바뀌지 않으면 수정하지 않는다. @@ -242,7 +242,7 @@ target 없는 신규 추가 요청은 append가 아니라 upsert로 처리한다 - Phase 전체가 `[완료]` 또는 `[폐기]`인지 확인한다. - `[검토중]` Phase는 archive하지 않는다. 사용자 완료 승인 또는 폐기 지시가 있으면 먼저 `[완료]` 또는 `[폐기]`로 바꾼 뒤 archive한다. -- `agent-ops/roadmap/phase//PHASE.md`를 `agent-ops/roadmap/archive/phase//PHASE.md`로 이동한다. +- `agent-roadmap/phase//PHASE.md`를 `agent-roadmap/archive/phase//PHASE.md`로 이동한다. - 해당 Phase의 하위 Milestone도 `archive/phase//milestones/` 아래로 이동한다. - `ROADMAP.md`의 Phase 흐름에는 해당 Phase 항목을 남기고, 상태와 경로를 archive `PHASE.md`로 바꾼다. - `current.md`의 활성 Phase와 활성 Milestone에서는 해당 Phase와 하위 Milestone을 제거한다. @@ -349,11 +349,11 @@ target 없는 신규 추가 요청은 append가 아니라 upsert로 처리한다 - 모드: - 수정 파일: - - agent-ops/roadmap/ROADMAP.md - - agent-ops/roadmap/current.md - - agent-ops/roadmap/phase//PHASE.md - - agent-ops/roadmap/phase//milestones/.md - - agent-ops/roadmap/archive/phase//... (archive 모드) + - agent-roadmap/ROADMAP.md + - agent-roadmap/current.md + - agent-roadmap/phase//PHASE.md + - agent-roadmap/phase//milestones/.md + - agent-roadmap/archive/phase//... (archive 모드) ## 변경 사항 @@ -388,7 +388,7 @@ target 없는 신규 추가 요청은 append가 아니라 upsert로 처리한다 - 전체 `ROADMAP.md`를 모든 작업의 필수 로딩 파일로 만들지 않는다. - `ROADMAP.md`에 Milestone 상세 작업 체크리스트를 남기지 않는다. - `current.md`에 개인별 현재 작업 위치나 완료 상태를 남기지 않는다. -- `current.md`에 `agent-ops/roadmap/archive/**` 경로를 남기지 않는다. +- `current.md`에 `agent-roadmap/archive/**` 경로를 남기지 않는다. - archive 문서를 명시 요청 없이 읽거나 최신 템플릿으로 재포맷하지 않는다. - 완료된 Phase/Milestone 기록을 삭제하지 않는다. - Epic과 Task를 별도 파일로 분리하지 않는다. diff --git a/agent-ops/roadmap/ROADMAP.md b/agent-roadmap/ROADMAP.md similarity index 86% rename from agent-ops/roadmap/ROADMAP.md rename to agent-roadmap/ROADMAP.md index 01b5602..3af83c9 100644 --- a/agent-ops/roadmap/ROADMAP.md +++ b/agent-roadmap/ROADMAP.md @@ -22,38 +22,38 @@ RAG, context 구성/압축, web search, MCP 정책, tool policy, output validati 완료, 검토중, 진행중, 계획 순서로 두어 아래로 갈수록 미래 작업에 가까워지게 정렬한다. - [완료] Edge-Node 실행 기반 - - 경로: `agent-ops/roadmap/archive/phase/edge-node-execution-foundation/PHASE.md` + - 경로: `agent-roadmap/archive/phase/edge-node-execution-foundation/PHASE.md` - 요약: Edge-Node 소켓 실행 경로, Node adapter execution, CLI session, 최소 외부 입력 표면을 안정화한 단계다. - [진행중] Ollama 서빙 안정화 기반 - - 경로: `agent-ops/roadmap/phase/serving-routing-optimization/PHASE.md` + - 경로: `agent-roadmap/phase/serving-routing-optimization/PHASE.md` - 요약: Edge OpenAI-compatible API에서 Node의 Ollama adapter를 호출하는 E2E 경로를 실제 Ollama endpoint와 split-host 환경에서 안정화하는 단계다. 추가 provider, 표준화, 후속 최적화 계층은 포함하지 않는다. - [계획] 추론 서버 provider 확장 - - 경로: `agent-ops/roadmap/phase/inference-provider-extension/PHASE.md` + - 경로: `agent-roadmap/phase/inference-provider-extension/PHASE.md` - 요약: Ollama 경로가 안정화된 뒤 그 결과를 기준선으로 삼아 SGLang 같은 추가 추론 서버 provider를 붙이고, provider별 adapter/config/target/model 매핑 표준선을 정리하는 단계다. - [계획] Automation Runtime과 Bridge 확장 - - 경로: `agent-ops/roadmap/phase/automation-runtime-bridge/PHASE.md` + - 경로: `agent-roadmap/phase/automation-runtime-bridge/PHASE.md` - 요약: Runtime과 Automation 실행 흐름을 공통화하고, agent 설치형/비설치형 대상 제어 경로를 분리해 확장하는 단계다. - [계획] Control Plane과 Client 운영 - - 경로: `agent-ops/roadmap/phase/control-plane-portal-ops/PHASE.md` + - 경로: `agent-roadmap/phase/control-plane-portal-ops/PHASE.md` - 요약: 여러 Edge를 관찰하고 운영하는 중앙 제어면과 Flutter client 운영면을 구축하는 단계다. - [계획] 지식과 도구 최적화 확장 - - 경로: `agent-ops/roadmap/phase/knowledge-tool-optimization-extension/PHASE.md` + - 경로: `agent-roadmap/phase/knowledge-tool-optimization-extension/PHASE.md` - 요약: Ollama serving 경로, 추가 provider 경로, 운영 기반이 안정화된 뒤 RAG, context 구성/압축, web search, MCP/tool policy, output validation, retry/fallback을 IOP 추론 최적화 계층으로 확장하는 단계다. ## 로딩 정책 -- 일반 작업에서는 `agent-ops/roadmap/ROADMAP.md`를 매번 읽지 않는다. -- 기능 추가, 구조 변경, 스킬 추가/수정, 문서 구조 변경 작업을 수행할 때는 `agent-ops/roadmap/current.md`를 먼저 읽는다. +- 일반 작업에서는 `agent-roadmap/ROADMAP.md`를 매번 읽지 않는다. +- 기능 추가, 구조 변경, 스킬 추가/수정, 문서 구조 변경 작업을 수행할 때는 `agent-roadmap/current.md`를 먼저 읽는다. - `current.md`는 현재 작업 위치가 아니라 활성 Phase와 활성 Milestone 후보 목록이다. - `current.md`에는 개인별 현재 작업 위치나 완료 상태를 기록하지 않는다. - `current.md`의 활성 Phase는 실제 활성 Phase 문서 경로를 가리킨다. - `current.md`의 활성 Milestone은 실제 활성 Phase 하위의 Milestone 문서 경로를 가리킨다. -- `current.md`는 `agent-ops/roadmap/archive/**` 경로를 활성 항목으로 포함하지 않는다. +- `current.md`는 `agent-roadmap/archive/**` 경로를 활성 항목으로 포함하지 않는다. - 요청 내용, 현재 브랜치, 변경 파일, 관련 코드 경로를 보고 가장 관련 있는 활성 Phase와 Milestone 문서를 같은 세션에서 1회 읽는다. - 활성 Phase 또는 Milestone 밖의 작업이면 이 문서의 Phase 흐름을 확인하고 사용자에게 진행 또는 전환 여부를 확인한다. - 이 문서는 로드맵 생성/갱신, Phase 전환, Phase 추가/수정, 전체 구조 변경 요청이 있을 때만 읽는다. @@ -62,7 +62,7 @@ RAG, context 구성/압축, web search, MCP 정책, tool policy, output validati - 완료된 Phase는 archive Phase 문서 경로로 이동하고, 하위 Milestone도 같은 archive Phase scaffold 아래에 둔다. - 진행중 Phase 안에서 완료된 Milestone은 활성 Phase 문서에 짧은 링크를 남기고, 상세 문서는 해당 archive Phase 하위 `milestones/` 경로로 이동한다. - archive `PHASE.md`는 Phase 자체가 완료 또는 폐기될 때만 만들며, 진행중 Phase의 완료 Milestone만 archive된 경우 archive Phase 디렉터리에 `milestones/`만 있을 수 있다. -- `agent-ops/roadmap/archive/**`는 일반 작업에서 읽지 않는다. 과거 완료 내용, 완료 근거, 복원, 비교가 필요한 경우에만 `ROADMAP.md` 또는 `PHASE.md`의 archive 링크를 따라가서 읽는다. +- `agent-roadmap/archive/**`는 일반 작업에서 읽지 않는다. 과거 완료 내용, 완료 근거, 복원, 비교가 필요한 경우에만 `ROADMAP.md` 또는 `PHASE.md`의 archive 링크를 따라가서 읽는다. - 아카이브된 Phase/Milestone 문서는 최신 템플릿이나 스킬 규약에 맞춰 재포맷하지 않는다. - 선택된 Milestone의 `구현 잠금` 섹션이 없거나 상태가 `잠금`이면 코드 구현, `agent-task` 구현 계획 생성, 세부 API/파일 구조 확정을 시작하기 전에 현재 요청에 직접 영향을 주는 `결정 필요` 항목만 확인한다. - 현재 요청과 직접 관련 없는 미정 항목은 잠금 상태로 남겨도 되며, 기존 구조/도메인 rule/플랫폼 관례로 정할 수 있는 작업은 표준선으로 기록하고 진행할 수 있다. diff --git a/agent-ops/roadmap/archive/phase/automation-runtime-bridge/milestones/cli-automation-runtime-stabilization.md b/agent-roadmap/archive/phase/automation-runtime-bridge/milestones/cli-automation-runtime-stabilization.md similarity index 100% rename from agent-ops/roadmap/archive/phase/automation-runtime-bridge/milestones/cli-automation-runtime-stabilization.md rename to agent-roadmap/archive/phase/automation-runtime-bridge/milestones/cli-automation-runtime-stabilization.md diff --git a/agent-ops/roadmap/archive/phase/control-plane-portal-ops/milestones/flutter-first-portal-migration.md b/agent-roadmap/archive/phase/control-plane-portal-ops/milestones/flutter-first-portal-migration.md similarity index 100% rename from agent-ops/roadmap/archive/phase/control-plane-portal-ops/milestones/flutter-first-portal-migration.md rename to agent-roadmap/archive/phase/control-plane-portal-ops/milestones/flutter-first-portal-migration.md diff --git a/agent-ops/roadmap/archive/phase/edge-node-execution-foundation/PHASE.md b/agent-roadmap/archive/phase/edge-node-execution-foundation/PHASE.md similarity index 80% rename from agent-ops/roadmap/archive/phase/edge-node-execution-foundation/PHASE.md rename to agent-roadmap/archive/phase/edge-node-execution-foundation/PHASE.md index ed8cda5..9d3333a 100644 --- a/agent-ops/roadmap/archive/phase/edge-node-execution-foundation/PHASE.md +++ b/agent-roadmap/archive/phase/edge-node-execution-foundation/PHASE.md @@ -21,9 +21,9 @@ Edge와 Node 사이의 등록, 설정 전달, adapter execution, event streaming ## Milestone 흐름 - [완료] Edge-Node 실행 스켈레톤 - - 경로: `agent-ops/roadmap/archive/phase/edge-node-execution-foundation/milestones/edge-node-execution-skeleton.md` + - 경로: `agent-roadmap/archive/phase/edge-node-execution-foundation/milestones/edge-node-execution-skeleton.md` - 요약: Edge와 Node 사이의 token 등록, 설정 전달, adapter execution, event streaming, command 응답이 하나의 실행 흐름으로 검증됐다. - [완료] Edge 입력 표면 - - 경로: `agent-ops/roadmap/archive/phase/edge-node-execution-foundation/milestones/edge-input-surfaces.md` + - 경로: `agent-roadmap/archive/phase/edge-node-execution-foundation/milestones/edge-input-surfaces.md` - 요약: OpenAI-compatible API와 A2A JSON-RPC API가 Edge 내부 `adapter + target` 실행 경로로 수렴됐다. diff --git a/agent-ops/roadmap/archive/phase/edge-node-execution-foundation/milestones/edge-input-surfaces.md b/agent-roadmap/archive/phase/edge-node-execution-foundation/milestones/edge-input-surfaces.md similarity index 100% rename from agent-ops/roadmap/archive/phase/edge-node-execution-foundation/milestones/edge-input-surfaces.md rename to agent-roadmap/archive/phase/edge-node-execution-foundation/milestones/edge-input-surfaces.md diff --git a/agent-ops/roadmap/archive/phase/edge-node-execution-foundation/milestones/edge-node-execution-skeleton.md b/agent-roadmap/archive/phase/edge-node-execution-foundation/milestones/edge-node-execution-skeleton.md similarity index 100% rename from agent-ops/roadmap/archive/phase/edge-node-execution-foundation/milestones/edge-node-execution-skeleton.md rename to agent-roadmap/archive/phase/edge-node-execution-foundation/milestones/edge-node-execution-skeleton.md diff --git a/agent-ops/roadmap/archive/phase/serving-routing-optimization/milestones/model-serving-load-routing.md b/agent-roadmap/archive/phase/serving-routing-optimization/milestones/model-serving-load-routing.md similarity index 99% rename from agent-ops/roadmap/archive/phase/serving-routing-optimization/milestones/model-serving-load-routing.md rename to agent-roadmap/archive/phase/serving-routing-optimization/milestones/model-serving-load-routing.md index 240b207..528e111 100644 --- a/agent-ops/roadmap/archive/phase/serving-routing-optimization/milestones/model-serving-load-routing.md +++ b/agent-roadmap/archive/phase/serving-routing-optimization/milestones/model-serving-load-routing.md @@ -2,8 +2,8 @@ ## 위치 -- Roadmap: `agent-ops/roadmap/ROADMAP.md` -- Phase: `agent-ops/roadmap/phase/serving-routing-optimization/PHASE.md` +- Roadmap: `agent-roadmap/ROADMAP.md` +- Phase: `agent-roadmap/phase/serving-routing-optimization/PHASE.md` ## 목표 diff --git a/agent-ops/roadmap/archive/phase/serving-routing-optimization/milestones/ollama-field-validation-follow-up.md b/agent-roadmap/archive/phase/serving-routing-optimization/milestones/ollama-field-validation-follow-up.md similarity index 97% rename from agent-ops/roadmap/archive/phase/serving-routing-optimization/milestones/ollama-field-validation-follow-up.md rename to agent-roadmap/archive/phase/serving-routing-optimization/milestones/ollama-field-validation-follow-up.md index f1cb504..0996567 100644 --- a/agent-ops/roadmap/archive/phase/serving-routing-optimization/milestones/ollama-field-validation-follow-up.md +++ b/agent-roadmap/archive/phase/serving-routing-optimization/milestones/ollama-field-validation-follow-up.md @@ -2,8 +2,8 @@ ## 위치 -- Roadmap: `agent-ops/roadmap/ROADMAP.md` -- Phase: `agent-ops/roadmap/phase/serving-routing-optimization/PHASE.md` +- Roadmap: `agent-roadmap/ROADMAP.md` +- Phase: `agent-roadmap/phase/serving-routing-optimization/PHASE.md` ## 목표 diff --git a/agent-ops/roadmap/current.md b/agent-roadmap/current.md similarity index 79% rename from agent-ops/roadmap/current.md rename to agent-roadmap/current.md index 43aeb25..d92c5be 100644 --- a/agent-ops/roadmap/current.md +++ b/agent-roadmap/current.md @@ -3,13 +3,13 @@ ## 활성 Phase - [진행중] Ollama 서빙 안정화 기반 - - 경로: `agent-ops/roadmap/phase/serving-routing-optimization/PHASE.md` + - 경로: `agent-roadmap/phase/serving-routing-optimization/PHASE.md` ## 활성 Milestone - [진행중] Field Bootstrap UX와 테스트 포트 정비 - - Phase: `agent-ops/roadmap/phase/serving-routing-optimization/PHASE.md` - - 경로: `agent-ops/roadmap/phase/serving-routing-optimization/milestones/field-bootstrap-test-port-readiness.md` + - Phase: `agent-roadmap/phase/serving-routing-optimization/PHASE.md` + - 경로: `agent-roadmap/phase/serving-routing-optimization/milestones/field-bootstrap-test-port-readiness.md` ## 선택 규칙 @@ -21,6 +21,6 @@ - `[완료]` 또는 `[폐기]` Phase/Milestone은 활성 항목에 남기지 않는다. - 요청 내용, 현재 브랜치, 변경 파일, 관련 코드 경로를 보고 가장 관련 있는 Phase와 Milestone을 선택하고 같은 세션에서 1회 읽는다. - 활성 Phase 또는 Milestone 둘 이상에 걸치면 필요한 문서를 모두 읽고 작업 범위를 좁힌다. -- 활성 범위 밖의 작업이면 `agent-ops/roadmap/ROADMAP.md`의 Phase 흐름을 확인하고 사용자에게 진행 또는 전환 여부를 확인한다. +- 활성 범위 밖의 작업이면 `agent-roadmap/ROADMAP.md`의 Phase 흐름을 확인하고 사용자에게 진행 또는 전환 여부를 확인한다. - 완료된 과거 내용이 필요할 때만 `ROADMAP.md` 또는 `PHASE.md`에 있는 archive 링크를 따라가서 읽는다. - 선택된 Milestone의 `구현 잠금` 섹션이 없거나 상태가 `잠금`이면 구현이나 구현 계획을 시작하기 전에 현재 요청에 직접 영향을 주는 `결정 필요` 항목만 확인한다. 관련 결정이 없고 표준선으로 처리 가능하면 잠금을 유지한 채 진행할 수 있으며, Milestone 전체에서 사용자만 결정할 항목이 더 이상 없을 때만 `구현 잠금` 상태를 `해제`로 둔다. diff --git a/agent-ops/roadmap/phase/automation-runtime-bridge/PHASE.md b/agent-roadmap/phase/automation-runtime-bridge/PHASE.md similarity index 80% rename from agent-ops/roadmap/phase/automation-runtime-bridge/PHASE.md rename to agent-roadmap/phase/automation-runtime-bridge/PHASE.md index 8154d60..6297a50 100644 --- a/agent-ops/roadmap/phase/automation-runtime-bridge/PHASE.md +++ b/agent-roadmap/phase/automation-runtime-bridge/PHASE.md @@ -15,19 +15,19 @@ CLI 실행, specialized agent 등록, bootstrap/enrollment, 원격 터미널 브 완료, 검토중, 진행중, 계획 순서로 두어 아래로 갈수록 미래 작업에 가까워지게 정렬한다. - [완료] CLI Automation Runtime 안정화 - - 경로: `agent-ops/roadmap/archive/phase/automation-runtime-bridge/milestones/cli-automation-runtime-stabilization.md` + - 경로: `agent-roadmap/archive/phase/automation-runtime-bridge/milestones/cli-automation-runtime-stabilization.md` - 요약: one-shot, persistent terminal, opencode SSE, codex exec 계열 CLI 실행 모드와 운영 command 응답을 같은 adapter execution 모델 안에서 안정화했다. - [검토중] Specialized Agent proto-socket 연결 기반 - - 경로: `agent-ops/roadmap/phase/automation-runtime-bridge/milestones/specialized-agent-proto-socket-foundation.md` + - 경로: `agent-roadmap/phase/automation-runtime-bridge/milestones/specialized-agent-proto-socket-foundation.md` - 요약: OTO의 node-compatible proto-socket registration smoke를 바탕으로 Edge의 specialized agent kind, registry/config, message boundary, reconnect 정책과 runtime 경로 구분을 완료 후보로 정리했다. - [계획] Agent Bootstrap과 OTO 등록 - - 경로: `agent-ops/roadmap/phase/automation-runtime-bridge/milestones/agent-bootstrap-oto-enrollment.md` + - 경로: `agent-roadmap/phase/automation-runtime-bridge/milestones/agent-bootstrap-oto-enrollment.md` - 요약: specialized domain agent의 bootstrap command 발급, 설치, 등록, 장기 credential 흐름을 설계한다. - [계획] 원격 터미널 브리지 POC - - 경로: `agent-ops/roadmap/phase/automation-runtime-bridge/milestones/remote-terminal-bridge-poc.md` + - 경로: `agent-roadmap/phase/automation-runtime-bridge/milestones/remote-terminal-bridge-poc.md` - 요약: Agent를 설치하기 어려운 host/device를 위해 Edge broker와 Node terminal transport 기반 원격 터미널 브리지 POC를 만든다. ## Phase 경계 diff --git a/agent-ops/roadmap/phase/automation-runtime-bridge/milestones/agent-bootstrap-oto-enrollment.md b/agent-roadmap/phase/automation-runtime-bridge/milestones/agent-bootstrap-oto-enrollment.md similarity index 94% rename from agent-ops/roadmap/phase/automation-runtime-bridge/milestones/agent-bootstrap-oto-enrollment.md rename to agent-roadmap/phase/automation-runtime-bridge/milestones/agent-bootstrap-oto-enrollment.md index 9bbaa55..82e7874 100644 --- a/agent-ops/roadmap/phase/automation-runtime-bridge/milestones/agent-bootstrap-oto-enrollment.md +++ b/agent-roadmap/phase/automation-runtime-bridge/milestones/agent-bootstrap-oto-enrollment.md @@ -2,8 +2,8 @@ ## 위치 -- Roadmap: `agent-ops/roadmap/ROADMAP.md` -- Phase: `agent-ops/roadmap/phase/automation-runtime-bridge/PHASE.md` +- Roadmap: `agent-roadmap/ROADMAP.md` +- Phase: `agent-roadmap/phase/automation-runtime-bridge/PHASE.md` ## 목표 @@ -73,7 +73,7 @@ OTO는 build/deploy domain agent의 대표 후보로 둔다. ## 작업 컨텍스트 -- 관련 경로: `apps/edge`, `docs/deploy-dev.md`, `docs/architecture.md`, `../oto/agent-ops/roadmap/phase/edge-direct-oto-agent/milestones/oto-agent-registration.md`, `../oto/agent-ops/roadmap/phase/message-based-build-agent/milestones/agent-message-protocol.md`, `../oto/assets/script/shell/oto_agent_bootstrap.sh` +- 관련 경로: `apps/edge`, `docs/deploy-dev.md`, `docs/architecture.md`, `../oto/agent-roadmap/phase/edge-direct-oto-agent/milestones/oto-agent-registration.md`, `../oto/agent-roadmap/phase/message-based-build-agent/milestones/agent-message-protocol.md`, `../oto/assets/script/shell/oto_agent_bootstrap.sh` - 전환 상태: Ollama 실테스트와 후속 안정화를 우선 열어두는 동안 이 마일스톤은 계획 후보로 대기한다. 구현 시작 전 `enrollment_token` 범위와 HTTP local/insecure bootstrap 정책 결정을 먼저 해소한다. - 표준선(선택): OTO agent는 `iop-node` 하위 프로세스가 아니라 Edge에 직접 outbound 연결하는 specialized domain agent로 둔다. - 표준선(선택): Edge는 `oto-agent` record를 만들고, agent id/alias/enrollment token/release base URL/bootstrap script URL을 포함한 one-line command를 발급한다. diff --git a/agent-ops/roadmap/phase/automation-runtime-bridge/milestones/remote-terminal-bridge-poc.md b/agent-roadmap/phase/automation-runtime-bridge/milestones/remote-terminal-bridge-poc.md similarity index 96% rename from agent-ops/roadmap/phase/automation-runtime-bridge/milestones/remote-terminal-bridge-poc.md rename to agent-roadmap/phase/automation-runtime-bridge/milestones/remote-terminal-bridge-poc.md index d3d7d0f..0a48bed 100644 --- a/agent-ops/roadmap/phase/automation-runtime-bridge/milestones/remote-terminal-bridge-poc.md +++ b/agent-roadmap/phase/automation-runtime-bridge/milestones/remote-terminal-bridge-poc.md @@ -2,8 +2,8 @@ ## 위치 -- Roadmap: `agent-ops/roadmap/ROADMAP.md` -- Phase: `agent-ops/roadmap/phase/automation-runtime-bridge/PHASE.md` +- Roadmap: `agent-roadmap/ROADMAP.md` +- Phase: `agent-roadmap/phase/automation-runtime-bridge/PHASE.md` ## 목표 diff --git a/agent-ops/roadmap/phase/automation-runtime-bridge/milestones/specialized-agent-proto-socket-foundation.md b/agent-roadmap/phase/automation-runtime-bridge/milestones/specialized-agent-proto-socket-foundation.md similarity index 92% rename from agent-ops/roadmap/phase/automation-runtime-bridge/milestones/specialized-agent-proto-socket-foundation.md rename to agent-roadmap/phase/automation-runtime-bridge/milestones/specialized-agent-proto-socket-foundation.md index 7ff3d5a..f4ebbfd 100644 --- a/agent-ops/roadmap/phase/automation-runtime-bridge/milestones/specialized-agent-proto-socket-foundation.md +++ b/agent-roadmap/phase/automation-runtime-bridge/milestones/specialized-agent-proto-socket-foundation.md @@ -2,8 +2,8 @@ ## 위치 -- Roadmap: `agent-ops/roadmap/ROADMAP.md` -- Phase: `agent-ops/roadmap/phase/automation-runtime-bridge/PHASE.md` +- Roadmap: `agent-roadmap/ROADMAP.md` +- Phase: `agent-roadmap/phase/automation-runtime-bridge/PHASE.md` ## 목표 @@ -77,7 +77,7 @@ OTO 쪽 Dart `proto_socket` 연결과 iop Edge 등록 smoke가 이미 시작된 ### OTO Responsibility Boundary -- OTO의 직접 연결 기준은 `../oto/agent-ops/roadmap/phase/edge-direct-oto-agent/PHASE.md`와 완료된 `../oto/agent-ops/roadmap/archive/phase/edge-direct-oto-agent/milestones/oto-iop-proto-socket-foundation.md`를 참조한다. +- OTO의 직접 연결 기준은 `../oto/agent-roadmap/phase/edge-direct-oto-agent/PHASE.md`와 완료된 `../oto/agent-roadmap/archive/phase/edge-direct-oto-agent/milestones/oto-iop-proto-socket-foundation.md`를 참조한다. - iop는 Edge-side registration, token/agent kind 판별, config 전달, reconnect policy, envelope 재사용 기준을 소유한다. - OTO는 Dart `proto_socket` client, Linux agent 설치 산출물, OTO build/deploy domain config와 event 의미를 소유한다. - registration 이후 run/command는 이번 마일스톤에서 envelope compatibility 확인 기준까지만 요구하고, OTO build/deploy payload 상세는 후속 OTO agent message protocol로 넘긴다. @@ -112,7 +112,7 @@ OTO 쪽 Dart `proto_socket` 연결과 iop Edge 등록 smoke가 이미 시작된 ## 작업 컨텍스트 -- 관련 경로: `proto/iop/runtime.proto`, `apps/edge/internal/transport/server.go`, `apps/node/internal/transport/client.go`, `apps/node/internal/transport/session.go`, `apps/edge/internal/node/registry.go`, `../oto/agent-ops/roadmap/phase/edge-direct-oto-agent/PHASE.md`, `../oto/agent-ops/roadmap/phase/edge-direct-oto-agent/milestones/oto-agent-registration.md`, `../oto/agent-ops/roadmap/phase/message-based-build-agent/milestones/agent-message-protocol.md`, `../oto/test/oto_iop_connection_smoke_test.dart`, `../proto-socket/` +- 관련 경로: `proto/iop/runtime.proto`, `apps/edge/internal/transport/server.go`, `apps/node/internal/transport/client.go`, `apps/node/internal/transport/session.go`, `apps/edge/internal/node/registry.go`, `../oto/agent-roadmap/phase/edge-direct-oto-agent/PHASE.md`, `../oto/agent-roadmap/phase/edge-direct-oto-agent/milestones/oto-agent-registration.md`, `../oto/agent-roadmap/phase/message-based-build-agent/milestones/agent-message-protocol.md`, `../oto/test/oto_iop_connection_smoke_test.dart`, `../proto-socket/` - 표준선(선택): 기존 Edge-Node proto-socket transport와 `RegisterRequest/RegisterResponse`를 우선 재사용하고, agent kind는 Edge-side registration record에서 판별한다. - 선행 작업: Edge-Node 실행 스켈레톤, CLI Automation Runtime 안정화 - 후속 작업: Agent Bootstrap과 OTO 등록 diff --git a/agent-ops/roadmap/phase/control-plane-portal-ops/PHASE.md b/agent-roadmap/phase/control-plane-portal-ops/PHASE.md similarity index 79% rename from agent-ops/roadmap/phase/control-plane-portal-ops/PHASE.md rename to agent-roadmap/phase/control-plane-portal-ops/PHASE.md index 6e548f2..4587cc7 100644 --- a/agent-ops/roadmap/phase/control-plane-portal-ops/PHASE.md +++ b/agent-roadmap/phase/control-plane-portal-ops/PHASE.md @@ -14,23 +14,23 @@ 완료, 검토중, 진행중, 계획 순서로 두어 아래로 갈수록 미래 작업에 가까워지게 정렬한다. - [완료] Flutter-first Portal 마이그레이션 - - 경로: `agent-ops/roadmap/archive/phase/control-plane-portal-ops/milestones/flutter-first-portal-migration.md` + - 경로: `agent-roadmap/archive/phase/control-plane-portal-ops/milestones/flutter-first-portal-migration.md` - 요약: Next.js `apps/web` scaffold를 제거하고 `apps/portal` Flutter 앱, Flutter Web compose 배포 흐름, Portal-Control Plane proto-socket WS hello 기반을 세웠다. - [계획] Client Integration Clone Adoption - - 경로: `agent-ops/roadmap/phase/control-plane-portal-ops/milestones/client-integration-clone-adoption.md` + - 경로: `agent-roadmap/phase/control-plane-portal-ops/milestones/client-integration-clone-adoption.md` - 요약: NomadCode client 표준을 IOP client에 복제하기 위한 모듈명, bootstrap, proto-socket, Mattermost push host integration 기준을 정리한다. - [계획] Control Plane과 Client - - 경로: `agent-ops/roadmap/phase/control-plane-portal-ops/milestones/control-plane-portal.md` + - 경로: `agent-roadmap/phase/control-plane-portal-ops/milestones/control-plane-portal.md` - 요약: 여러 Edge를 연결하고 관찰하며 Edge 설정 변경, 명령 전달, 이벤트 수신을 담당하는 중앙 제어면과 Flutter client 운영면을 구축한다. - [계획] 정책, 이력, 감사 - - 경로: `agent-ops/roadmap/phase/control-plane-portal-ops/milestones/policy-history-audit.md` + - 경로: `agent-roadmap/phase/control-plane-portal-ops/milestones/policy-history-audit.md` - 요약: 권한, 정책, 실행 이력, 감사 로그를 제품 운영에 필요한 수준으로 확장한다. - [계획] Multi-Edge 운영 - - 경로: `agent-ops/roadmap/phase/control-plane-portal-ops/milestones/multi-edge-operations.md` + - 경로: `agent-roadmap/phase/control-plane-portal-ops/milestones/multi-edge-operations.md` - 요약: 여러 Edge group을 관찰하고 운영하는 fleet-level 기능을 구축한다. ## Phase 경계 diff --git a/agent-ops/roadmap/phase/control-plane-portal-ops/milestones/client-integration-clone-adoption.md b/agent-roadmap/phase/control-plane-portal-ops/milestones/client-integration-clone-adoption.md similarity index 97% rename from agent-ops/roadmap/phase/control-plane-portal-ops/milestones/client-integration-clone-adoption.md rename to agent-roadmap/phase/control-plane-portal-ops/milestones/client-integration-clone-adoption.md index 2c0ab4b..e7bec6f 100644 --- a/agent-ops/roadmap/phase/control-plane-portal-ops/milestones/client-integration-clone-adoption.md +++ b/agent-roadmap/phase/control-plane-portal-ops/milestones/client-integration-clone-adoption.md @@ -2,8 +2,8 @@ ## 위치 -- Roadmap: `agent-ops/roadmap/ROADMAP.md` -- Phase: `agent-ops/roadmap/phase/control-plane-portal-ops/PHASE.md` +- Roadmap: `agent-roadmap/ROADMAP.md` +- Phase: `agent-roadmap/phase/control-plane-portal-ops/PHASE.md` ## 목표 diff --git a/agent-ops/roadmap/phase/control-plane-portal-ops/milestones/control-plane-portal.md b/agent-roadmap/phase/control-plane-portal-ops/milestones/control-plane-portal.md similarity index 97% rename from agent-ops/roadmap/phase/control-plane-portal-ops/milestones/control-plane-portal.md rename to agent-roadmap/phase/control-plane-portal-ops/milestones/control-plane-portal.md index 0c38a77..9005787 100644 --- a/agent-ops/roadmap/phase/control-plane-portal-ops/milestones/control-plane-portal.md +++ b/agent-roadmap/phase/control-plane-portal-ops/milestones/control-plane-portal.md @@ -2,8 +2,8 @@ ## 위치 -- Roadmap: `agent-ops/roadmap/ROADMAP.md` -- Phase: `agent-ops/roadmap/phase/control-plane-portal-ops/PHASE.md` +- Roadmap: `agent-roadmap/ROADMAP.md` +- Phase: `agent-roadmap/phase/control-plane-portal-ops/PHASE.md` ## 목표 diff --git a/agent-ops/roadmap/phase/control-plane-portal-ops/milestones/multi-edge-operations.md b/agent-roadmap/phase/control-plane-portal-ops/milestones/multi-edge-operations.md similarity index 96% rename from agent-ops/roadmap/phase/control-plane-portal-ops/milestones/multi-edge-operations.md rename to agent-roadmap/phase/control-plane-portal-ops/milestones/multi-edge-operations.md index 2ca7612..4ec6a72 100644 --- a/agent-ops/roadmap/phase/control-plane-portal-ops/milestones/multi-edge-operations.md +++ b/agent-roadmap/phase/control-plane-portal-ops/milestones/multi-edge-operations.md @@ -2,8 +2,8 @@ ## 위치 -- Roadmap: `agent-ops/roadmap/ROADMAP.md` -- Phase: `agent-ops/roadmap/phase/control-plane-portal-ops/PHASE.md` +- Roadmap: `agent-roadmap/ROADMAP.md` +- Phase: `agent-roadmap/phase/control-plane-portal-ops/PHASE.md` ## 목표 diff --git a/agent-ops/roadmap/phase/control-plane-portal-ops/milestones/policy-history-audit.md b/agent-roadmap/phase/control-plane-portal-ops/milestones/policy-history-audit.md similarity index 96% rename from agent-ops/roadmap/phase/control-plane-portal-ops/milestones/policy-history-audit.md rename to agent-roadmap/phase/control-plane-portal-ops/milestones/policy-history-audit.md index 365025d..ceed919 100644 --- a/agent-ops/roadmap/phase/control-plane-portal-ops/milestones/policy-history-audit.md +++ b/agent-roadmap/phase/control-plane-portal-ops/milestones/policy-history-audit.md @@ -2,8 +2,8 @@ ## 위치 -- Roadmap: `agent-ops/roadmap/ROADMAP.md` -- Phase: `agent-ops/roadmap/phase/control-plane-portal-ops/PHASE.md` +- Roadmap: `agent-roadmap/ROADMAP.md` +- Phase: `agent-roadmap/phase/control-plane-portal-ops/PHASE.md` ## 목표 diff --git a/agent-ops/roadmap/phase/inference-provider-extension/PHASE.md b/agent-roadmap/phase/inference-provider-extension/PHASE.md similarity index 92% rename from agent-ops/roadmap/phase/inference-provider-extension/PHASE.md rename to agent-roadmap/phase/inference-provider-extension/PHASE.md index 45f6934..d3f38cc 100644 --- a/agent-ops/roadmap/phase/inference-provider-extension/PHASE.md +++ b/agent-roadmap/phase/inference-provider-extension/PHASE.md @@ -15,7 +15,7 @@ Ollama 경로가 안정화된 뒤, 그 결과를 기준선으로 삼아 SGLang 완료, 검토중, 진행중, 계획 순서로 두어 아래로 갈수록 미래 작업에 가까워지게 정렬한다. - [계획] SGLang provider 서빙 경로 추가 - - 경로: `agent-ops/roadmap/phase/inference-provider-extension/milestones/sglang-provider-serving-validation.md` + - 경로: `agent-roadmap/phase/inference-provider-extension/milestones/sglang-provider-serving-validation.md` - 요약: Ollama 경로가 안정화된 뒤 추가 추론 서버 provider로 SGLang을 붙이고, 같은 Edge OpenAI-compatible 입력 표면에서 모델 조회와 non-streaming/streaming chat을 검증한다. ## Phase 경계 diff --git a/agent-ops/roadmap/phase/inference-provider-extension/milestones/sglang-provider-serving-validation.md b/agent-roadmap/phase/inference-provider-extension/milestones/sglang-provider-serving-validation.md similarity index 96% rename from agent-ops/roadmap/phase/inference-provider-extension/milestones/sglang-provider-serving-validation.md rename to agent-roadmap/phase/inference-provider-extension/milestones/sglang-provider-serving-validation.md index 2a69ed4..c25db87 100644 --- a/agent-ops/roadmap/phase/inference-provider-extension/milestones/sglang-provider-serving-validation.md +++ b/agent-roadmap/phase/inference-provider-extension/milestones/sglang-provider-serving-validation.md @@ -2,8 +2,8 @@ ## 위치 -- Roadmap: `agent-ops/roadmap/ROADMAP.md` -- Phase: `agent-ops/roadmap/phase/inference-provider-extension/PHASE.md` +- Roadmap: `agent-roadmap/ROADMAP.md` +- Phase: `agent-roadmap/phase/inference-provider-extension/PHASE.md` ## 목표 diff --git a/agent-ops/roadmap/phase/knowledge-tool-optimization-extension/PHASE.md b/agent-roadmap/phase/knowledge-tool-optimization-extension/PHASE.md similarity index 92% rename from agent-ops/roadmap/phase/knowledge-tool-optimization-extension/PHASE.md rename to agent-roadmap/phase/knowledge-tool-optimization-extension/PHASE.md index ad1d87e..2c8bc0e 100644 --- a/agent-ops/roadmap/phase/knowledge-tool-optimization-extension/PHASE.md +++ b/agent-roadmap/phase/knowledge-tool-optimization-extension/PHASE.md @@ -15,7 +15,7 @@ Ollama serving 경로와 운영 기반이 안정화된 뒤, RAG, context 구성/ 완료, 검토중, 진행중, 계획 순서로 두어 아래로 갈수록 미래 작업에 가까워지게 정렬한다. - [계획] 지식, 도구 정책, 검증 최적화 - - 경로: `agent-ops/roadmap/phase/knowledge-tool-optimization-extension/milestones/knowledge-tool-validation-optimization.md` + - 경로: `agent-roadmap/phase/knowledge-tool-optimization-extension/milestones/knowledge-tool-validation-optimization.md` - 요약: RAG, context 구성/압축, web search, MCP/tool policy, output validation, retry/fallback을 IOP 최적화 계층으로 확장한다. ## Phase 경계 diff --git a/agent-ops/roadmap/phase/knowledge-tool-optimization-extension/milestones/knowledge-tool-validation-optimization.md b/agent-roadmap/phase/knowledge-tool-optimization-extension/milestones/knowledge-tool-validation-optimization.md similarity index 92% rename from agent-ops/roadmap/phase/knowledge-tool-optimization-extension/milestones/knowledge-tool-validation-optimization.md rename to agent-roadmap/phase/knowledge-tool-optimization-extension/milestones/knowledge-tool-validation-optimization.md index 8468d2f..3d86a54 100644 --- a/agent-ops/roadmap/phase/knowledge-tool-optimization-extension/milestones/knowledge-tool-validation-optimization.md +++ b/agent-roadmap/phase/knowledge-tool-optimization-extension/milestones/knowledge-tool-validation-optimization.md @@ -2,8 +2,8 @@ ## 위치 -- Roadmap: `agent-ops/roadmap/ROADMAP.md` -- Phase: `agent-ops/roadmap/phase/knowledge-tool-optimization-extension/PHASE.md` +- Roadmap: `agent-roadmap/ROADMAP.md` +- Phase: `agent-roadmap/phase/knowledge-tool-optimization-extension/PHASE.md` ## 목표 @@ -59,7 +59,7 @@ NomadCode는 이 계층의 소비자 중 하나이며, 이 Milestone은 특정 A ## 작업 컨텍스트 -- 관련 경로: `apps/edge`, `apps/node`, `apps/control-plane`, `packages/policy`, `packages/observability`, `proto/iop`, `docs/architecture.md`, `agent-ops/roadmap/archive/phase/serving-routing-optimization/milestones/model-serving-load-routing.md` +- 관련 경로: `apps/edge`, `apps/node`, `apps/control-plane`, `packages/policy`, `packages/observability`, `proto/iop`, `docs/architecture.md`, `agent-roadmap/archive/phase/serving-routing-optimization/milestones/model-serving-load-routing.md` - 표준선(선택): 기본 모델 serving/load routing이 먼저 안정화된 뒤 최적화 계층을 붙인다. - 선행 작업: Ollama 서빙 안정화, Control Plane과 Client 운영 - 후속 작업: 정책/이력/감사와 품질 기반 routing/fallback 고도화 diff --git a/agent-ops/roadmap/phase/serving-routing-optimization/PHASE.md b/agent-roadmap/phase/serving-routing-optimization/PHASE.md similarity index 86% rename from agent-ops/roadmap/phase/serving-routing-optimization/PHASE.md rename to agent-roadmap/phase/serving-routing-optimization/PHASE.md index 3c629b9..9be98af 100644 --- a/agent-ops/roadmap/phase/serving-routing-optimization/PHASE.md +++ b/agent-roadmap/phase/serving-routing-optimization/PHASE.md @@ -16,15 +16,15 @@ Edge OpenAI-compatible API에서 Node의 Ollama adapter까지 이어지는 단 완료, 검토중, 진행중, 계획 순서로 두어 아래로 갈수록 미래 작업에 가까워지게 정렬한다. - [완료] Ollama E2E 서빙 안정화 - - 경로: `agent-ops/roadmap/archive/phase/serving-routing-optimization/milestones/model-serving-load-routing.md` + - 경로: `agent-roadmap/archive/phase/serving-routing-optimization/milestones/model-serving-load-routing.md` - 요약: Edge OpenAI-compatible API를 통해 Node에서 serving 중인 Ollama를 일반 OpenAI/Ollama client 경험에 가깝게 조회, 선택, 호출하는 E2E 한 사이클과 Ollama option/API passthrough를 완료했다. 자동 라우팅, cloud fallback, 품질 평가는 후속으로 미룬다. - [완료] Ollama 실테스트와 후속 안정화 - - 경로: `agent-ops/roadmap/archive/phase/serving-routing-optimization/milestones/ollama-field-validation-follow-up.md` + - 경로: `agent-roadmap/archive/phase/serving-routing-optimization/milestones/ollama-field-validation-follow-up.md` - 요약: Apple Silicon Node와 실제 Ollama endpoint를 split-host 환경에서 검증했고, 모델 조회, non-streaming/streaming chat, reasoning/content 분리, option/API passthrough를 확인했다. `edge serve` lifecycle 보완은 후속 Milestone으로 분리했다. - [진행중] Field Bootstrap UX와 테스트 포트 정비 - - 경로: `agent-ops/roadmap/phase/serving-routing-optimization/milestones/field-bootstrap-test-port-readiness.md` + - 경로: `agent-roadmap/phase/serving-routing-optimization/milestones/field-bootstrap-test-port-readiness.md` - 요약: code-server field 테스트 포트와 Node artifact/bootstrap 경로를 정리해, 사용자가 Jenkins agent처럼 한 줄 명령으로 Node 다운로드와 Edge 접속을 끝낼 수 있게 만든다. ## Phase 경계 diff --git a/agent-ops/roadmap/phase/serving-routing-optimization/milestones/field-bootstrap-test-port-readiness.md b/agent-roadmap/phase/serving-routing-optimization/milestones/field-bootstrap-test-port-readiness.md similarity index 71% rename from agent-ops/roadmap/phase/serving-routing-optimization/milestones/field-bootstrap-test-port-readiness.md rename to agent-roadmap/phase/serving-routing-optimization/milestones/field-bootstrap-test-port-readiness.md index 106a35f..85c92bf 100644 --- a/agent-ops/roadmap/phase/serving-routing-optimization/milestones/field-bootstrap-test-port-readiness.md +++ b/agent-roadmap/phase/serving-routing-optimization/milestones/field-bootstrap-test-port-readiness.md @@ -2,8 +2,8 @@ ## 위치 -- Roadmap: `agent-ops/roadmap/ROADMAP.md` -- Phase: `agent-ops/roadmap/phase/serving-routing-optimization/PHASE.md` +- Roadmap: `agent-roadmap/ROADMAP.md` +- Phase: `agent-roadmap/phase/serving-routing-optimization/PHASE.md` ## 목표 @@ -38,16 +38,18 @@ code-server 컨테이너는 외부 테스트용 web/bootstrap, Node transport, O field 테스트를 매번 수동 터널과 임시 명령 조합으로 만들지 않고, 재현 가능한 외부 포트와 한 줄 bootstrap 명령으로 수렴시킨다. - [x] [compose-ports] code-server compose가 field 테스트용 web/bootstrap, Node transport, OTO/specialized agent 포트를 외부에 노출한다. 검증: `docker compose config`에서 `18080`, `18081`, `19090`, `19190` 계열 포트 매핑이 확인된다. -- [ ] [artifact-layout] Node field build 산출물의 고정 위치와 URL 규칙이 정리되어 있다. 검증: Apple Silicon용 `iop-node`를 정해진 URL에서 다운로드할 수 있다. +- [x] [artifact-layout] Node field build 산출물의 고정 위치와 URL 규칙이 정리되어 있다. 검증: Apple Silicon용 `iop-node`를 정해진 URL에서 다운로드할 수 있다. - [ ] [one-line-node] 사용자가 한 줄 명령으로 Apple Silicon Node를 다운로드하고 Edge에 접속할 수 있다. 검증: Mac 테스트 환경에서 command 한 줄 실행 후 Edge에서 node registration을 확인한다. - [ ] [serve-lifecycle] `edge serve`가 field bootstrap에 사용할 node/openai listener를 안정적으로 유지한다. 검증: `edge serve --config ` 실행 후 Node registration과 `/v1/models` 호출이 통과한다. - [x] [runbook] field bootstrap runbook에 직접 포트 방식과 터널 fallback 방식이 구분되어 있다. +- [x] [llm-test-runbook] LLM/작업자가 사용자 직접 테스트를 준비하고 실패 지점을 분리할 수 있는 상세 runbook이 문서화되어 있다. 검증: `docs/deploy-dev.md`에 포트 확인, Edge config, artifact 생성, HTTP 노출, Mac one-line bootstrap, OpenAI-compatible 확인, 실패 시 확인 순서가 있다. +- [x] [user-test-guide] 사용자가 field bootstrap을 직접 테스트할 수 있는 짧은 가이드가 분리되어 있다. 검증: `docs/field-bootstrap-user-test.md`에 Mac 준비, one-line bootstrap, 호출 확인, 문제 발생 시 공유할 출력이 정리되어 있다. ## 완료 리뷰 - 상태: 없음 - 요청일: 없음 -- 완료 근거: 테스트 환경 포트 개방과 one-line bootstrap UX가 아직 충족되지 않았다. +- 완료 근거: artifact layout, LLM/작업자용 runbook, 사용자용 직접 테스트 가이드는 정리됐으나, one-line bootstrap UX와 field serve 실구동 검증이 아직 충족되지 않았다. - 리뷰 필요: - [ ] 사용자가 완료 결과를 확인했다 - [ ] archive 이동을 승인했다 @@ -69,5 +71,9 @@ field 테스트를 매번 수동 터널과 임시 명령 조합으로 만들지 - 선행 작업: Ollama 실테스트와 후속 안정화 - 진행 기록: 원격 `~/docker/services/code-server/compose/docker-compose.yml`에 `18080:18080`, `18081:8080`, `19190:9190`을 추가하고 기존 `19090:9090`, `19092:9092`를 역할 주석으로 정리했다. `/usr/local/bin/docker compose config --quiet` 검증은 통과했으며, 실제 포트 적용은 사용자가 정한 code-server compose 재기동 시점 이후 확인한다. - 진행 기록: `agent-ops/rules/project/rules.md`에서 field 테스트 환경 작업을 `docs/deploy-dev.md`와 이 Milestone으로 라우팅하도록 보강했고, `docs/deploy-dev.md`에 code-server compose 원본, 기준 포트, 직접 포트/터널 fallback, Apple Silicon `darwin/arm64` 기준을 기록했다. +- 진행 기록: `VERSION=field-check APPS=node TARGETS="darwin/arm64" ... DIST_DIR=/tmp/... ./bin/build/field-binaries.sh`로 Apple Silicon용 `iop-node`, `iop-node.sha256`, `SHA256SUMS`, `manifest.env`, `bootstrap/node-darwin-arm64.sh` 생성과 layout을 확인했다. +- 진행 기록: `docs/deploy-dev.md`의 상세 절차를 LLM/작업자용 runbook으로 명명하고, 사용자가 직접 볼 짧은 가이드를 `docs/field-bootstrap-user-test.md`로 분리했다. +- 계획 작성: `agent-task/m-field-bootstrap-test-port-readiness/01_serve_lifecycle/PLAN-cloud-G07.md`에서 `edge serve` listener 유지와 field-like Node registration, `/v1/models` 검증을 선행 작업으로 분리했다. +- 계획 작성: `agent-task/m-field-bootstrap-test-port-readiness/02+01_one_line_node/PLAN-cloud-G07.md`에서 Apple Silicon one-line bootstrap 실기기 등록 검증을 `01_serve_lifecycle` 의존 작업으로 분리했다. - 후속 작업: Agent Bootstrap과 OTO 등록, Control Plane 기반 enrollment -- 확인 필요: 재부팅 후 code-server compose 포트 적용 확인, one-line bootstrap 명령의 최종 URL/토큰 수명 정책 +- 확인 필요: 재부팅 후 code-server compose 포트 적용 확인, `01_serve_lifecycle` plan 완료, `02+01_one_line_node` plan 완료