61 lines
7.7 KiB
Markdown
61 lines
7.7 KiB
Markdown
# NomadCode 로드맵
|
|
|
|
## 전체 목표
|
|
|
|
NomadCode는 Flutter 기반 앱, core 서비스, 공유 계약, agent-operation 규칙을 하나의 원레포로 묶어 AI-assisted development workflow를 조율하는 프로젝트다.
|
|
|
|
현재 로드맵은 기존 `services/core/README.md`의 단계별 다음 작업을 `agent-ops/roadmap/` 구조로 옮긴 뒤, 클라이언트 전략을 Flutter-first로 재정렬한 것이다. React/Vite 웹 콘솔 제거와 Flutter 앱 기준 클라이언트 정리, provider-neutral work item pipeline 설계는 완료되었다. 현재는 Flutter 앱에 섞인 Mattermost push notification migration을 별도 `mattermost-push-plugin` Flutter plugin repo로 분리하는 작업을 최상위 진행 항목으로 둔다. 이후 core 백엔드 오케스트레이션의 workflow 상태 전이 안정화, 외부 통합, Flutter-first 프로젝트 제어 UX를 이어간다. IOP 연결은 NomadCode가 직접 모델 런타임을 소유하지 않고 IOP의 외부 입력 표면을 호출하는 방향으로 정리한다.
|
|
|
|
## Phase 흐름
|
|
|
|
- Client Platform Consolidation: React/Vite 웹 콘솔을 제품 UI 경로에서 걷어내고 Flutter 앱을 NomadCode 클라이언트 source of truth로 정리한다.
|
|
- Mattermost Push Plugin Extraction: Flutter 앱에 직접 들어간 Mattermost push notification Dart/API, Android native service, Room DB, notification resource를 `../mattermost-push-plugin` Flutter plugin repo로 분리하고 앱 통합 경계를 정리한다.
|
|
- Server Skeleton: 서버 실행 골격, task 저장 구조, 비동기 job 실행, Adapter stub을 구성한다.
|
|
- Plane Communication Foundation: Plane self-hosted 인스턴스와 통신하기 위한 인증, API client, 외부 참조 저장, smoke 검증 토대를 만든다.
|
|
- Work Item Provider Pipeline Design: Plane/Jira 등 work item provider와 core task 사이의 생성, enqueue, 상태 투영, 결과 발행 계약을 provider-neutral하게 정리한다.
|
|
- Workflow Core: Plane task pipeline 설계가 정리된 뒤 상태 전이, retry, timeout, notification event의 기본 구조를 안정화한다.
|
|
- External Integration: Plane 통신 토대와 workflow core 이후 Mattermost, Agent Integrator, IOP OpenAI API Responses-compatible 호출을 실제 통합 흐름으로 확장한다.
|
|
- Project Workspace Management UX: Flutter-first 클라이언트 구조 위에서 Project/Session/Workspace 방향을 유지하면서 앱 기반 프로젝트 단위 제어 화면을 정리한다.
|
|
|
|
## Milestone 목록
|
|
|
|
### Mattermost Push Plugin Extraction
|
|
|
|
- [Mattermost Push Plugin Extraction](milestones/mattermost-push-plugin-extraction.md) - 상태: 진행 중; 목표: Flutter 앱에 섞인 Mattermost push notification migration을 `../mattermost-push-plugin` 독립 Flutter plugin repo로 분리하고 NomadCode 앱은 plugin consumer로 전환한다.
|
|
|
|
### Workflow Core
|
|
|
|
- [Workflow Core](milestones/workflow-core.md) - 상태: 진행 중; 목표: 실제 e2e 흐름을 기준으로 task lifecycle, retry, timeout, notification event를 안정화한다.
|
|
|
|
### External Integration
|
|
|
|
- [External Integration](milestones/external-integration.md) - 상태: 계획; 목표: Plane 확장, Mattermost, Agent Integrator, IOP OpenAI API Responses-compatible 호출을 실제 통합 흐름으로 확장한다.
|
|
|
|
### Project Workspace Management UX
|
|
|
|
- [Project Workspace Management UX](milestones/project-workspace-management-ux.md) - 상태: 계획; 목표: Flutter-first 클라이언트 구조 위에서 프로젝트 단위 제어 UX를 앱 기반 desktop/mobile layout 기준으로 정리한다.
|
|
|
|
## 아카이브 Milestone 요약
|
|
|
|
- Server Skeleton - 상태: 완료; 아카이브일: 2026-05-24; 요약: core 서버 실행 골격, task 저장, 비동기 job, 초기 외부 Adapter stub을 구성했다.; 핵심 산출물/근거: 모든 필수 기능과 완료 기준이 체크되어 있으며 server 실행, task API/storage, River job, Plane/Mattermost stub이 기록되어 있다.; 후속 영향: Plane Communication Foundation과 후속 workflow/provider 작업의 기반이 되었다.
|
|
- Plane Communication Foundation - 상태: 완료; 아카이브일: 2026-05-24; 요약: Plane self-hosted 인스턴스와의 인증/API 통신, 외부 참조 저장, 수동 smoke 검증 토대를 만들었다.; 핵심 산출물/근거: 모든 필수 기능과 완료 기준이 체크되어 있으며 Plane adapter 테스트, external ref 저장, 실제 comment/state smoke, README/운영 문서 근거가 기록되어 있다.; 후속 영향: Work Item Provider Pipeline Design과 Workflow Core의 선행 기반이 되었다.
|
|
- Flutter-first Client Consolidation - 상태: 완료; 아카이브일: 2026-05-25; 요약: Flutter 앱을 제품 UI 기준 구현으로 세우고 React/Vite 웹 콘솔 scaffold를 제거했다.; 핵심 산출물/근거: `apps/web` 제거, root `bin/*`의 Flutter-first 검증 흐름, Flutter code-server 직접 실행 표면, `packages/contracts` 계약 후보 문서가 반영되어 있다.; 후속 영향: Project Workspace Management UX와 사용자-facing task state UX의 기반이 되었다.
|
|
- Work Item Provider Pipeline Design - 상태: 완료; 아카이브일: 2026-05-25; 요약: Plane/Jira 등 work item provider와 core task 사이의 생성, enqueue, 상태 투영, 결과 발행 계약을 provider-neutral하게 정리했다.; 핵심 산출물/근거: 모든 필수 기능과 완료 기준이 체크되어 있으며 provider-neutral adapter, task mapper, pipeline service, projection/idempotency/retry 정책이 기록되어 있다.; 후속 영향: Workflow Core가 상태 전이 구현을 시작할 수 있는 기준이 되었다.
|
|
|
|
## 로딩 정책
|
|
|
|
- 일반 작업에서는 `agent-ops/roadmap/ROADMAP.md`를 매번 읽지 않는다.
|
|
- 기능 추가, 구조 변경, 스킬 추가/수정, 문서 구조 변경 작업을 수행할 때는 `agent-ops/roadmap/current.md`를 먼저 읽는다.
|
|
- `current.md`는 현재 작업 위치가 아니라 활성 Milestone 후보 목록이다.
|
|
- `current.md`에는 개인별 현재 작업 위치나 완료 상태를 기록하지 않는다.
|
|
- `current.md`의 활성 Milestone은 `agent-ops/roadmap/milestones/` 하위 문서만 가리키며, `agent-ops/roadmap/archive/**`는 포함하지 않는다.
|
|
- 요청 내용, 현재 브랜치, 변경 파일, 관련 코드 경로를 보고 가장 관련 있는 활성 Milestone 문서를 같은 세션에서 1회 읽는다.
|
|
- 활성 Milestone 밖의 작업이면 이 문서의 Milestone 목록을 확인하고 사용자에게 진행 또는 전환 여부를 확인한다.
|
|
- 이 문서는 로드맵 생성/갱신, Phase 전환, Milestone 추가/수정 요청이 있을 때만 읽는다.
|
|
- 상세 작업과 완료 기준은 각 Milestone 문서의 체크리스트로 관리한다.
|
|
- 완료 또는 폐기되어 아카이브된 Milestone은 이 문서의 `아카이브 Milestone 요약`에 당시 요약만 남기고, 아카이브 문서 링크나 상세 경로는 남기지 않는다.
|
|
- 상세 문서가 있는 `agent-ops/roadmap/archive/**`는 사용자가 명시적으로 요청한 경우에만 읽는다.
|
|
- 아카이브된 Milestone 문서는 최신 템플릿이나 스킬 규약에 맞춰 재포맷하지 않는다.
|
|
- 선택된 Milestone의 `구현 잠금` 섹션이 없거나 상태가 `잠금`이면 코드 구현, `agent-task` 구현 계획 생성, 세부 API/파일 구조 확정을 시작하기 전에 현재 요청에 직접 영향을 주는 `결정 필요` 항목만 확인한다.
|
|
- 현재 요청과 직접 관련 없는 미정 항목은 잠금 상태로 남겨도 되며, 기존 구조/도메인 rule/플랫폼 관례로 정할 수 있는 작업은 표준선으로 기록하고 진행할 수 있다.
|
|
- Milestone 전체에서 사용자만 결정할 항목이 더 이상 없고 에이전트가 표준선에 따라 실행하면 되는 상태라면 `구현 잠금` 상태를 `해제`로 둔다.
|