From 670223af81f51be6d5fbcf6b158a6375b0f1063f Mon Sep 17 00:00:00 2001 From: toki Date: Sat, 30 May 2026 12:00:42 +0900 Subject: [PATCH] archive: mattermost-nexo-messaging-alignment milestone to archive and update roadmaps --- .../mattermost-nexo-messaging-alignment.md | 16 ++-- agent-roadmap/current.md | 5 +- .../phase/external-integration/PHASE.md | 6 +- agent-roadmap/phase/workflow-core/PHASE.md | 2 +- .../roadmap-driven-agent-ops-automation.md | 3 +- .../01_runner_preflight/USER_REVIEW.md | 80 +++++++++++++++++++ 6 files changed, 95 insertions(+), 17 deletions(-) rename agent-roadmap/{ => archive}/phase/external-integration/milestones/mattermost-nexo-messaging-alignment.md (78%) create mode 100644 agent-task/archive/2026/05/m-mattermost-nexo-messaging-alignment/01_runner_preflight/USER_REVIEW.md diff --git a/agent-roadmap/phase/external-integration/milestones/mattermost-nexo-messaging-alignment.md b/agent-roadmap/archive/phase/external-integration/milestones/mattermost-nexo-messaging-alignment.md similarity index 78% rename from agent-roadmap/phase/external-integration/milestones/mattermost-nexo-messaging-alignment.md rename to agent-roadmap/archive/phase/external-integration/milestones/mattermost-nexo-messaging-alignment.md index 4e58608..6b63b3a 100644 --- a/agent-roadmap/phase/external-integration/milestones/mattermost-nexo-messaging-alignment.md +++ b/agent-roadmap/archive/phase/external-integration/milestones/mattermost-nexo-messaging-alignment.md @@ -11,7 +11,7 @@ ## 상태 -[진행중] +[완료] ## 구현 잠금 @@ -33,17 +33,17 @@ - [x] [host-identifier] NomadCode host가 optional Mattermost server identifier를 `MattermostPushClient`와 `nexo_messaging`의 `setAuthToken(..., identifier:)` 경계로 전달한다. 검증: `cd apps/client && flutter test`. - [x] [docs-boundary] `agent-test/local/mattermost-server-generated-push-smoke.md`, `apps/client/push-notification-todo.md`, contracts note, External Integration context가 nexo package의 Android-first/stub-platform 상태와 server-generated signed push smoke 기준을 일관되게 설명한다. 검증: 문서에서 raw token/password/signing key/FCM token 값을 기록하지 않는다. -- [ ] [signed-smoke-refresh] 실제 Android runner에서 server-generated signed push smoke를 재실행해 FCM receipt, valid signature, ACK, notification display, opened event, inline reply, dismiss evidence를 redaction 상태로 남긴다. 검증: `agent-test/local/mattermost-server-generated-push-smoke.md`의 Evidence Checklist가 PASS/PARTIAL/BLOCKED로 기록된다. +- [x] [signed-smoke-refresh] 실제 Android runner에서 server-generated signed push smoke를 재실행해 FCM receipt, valid signature, ACK, notification display, opened event, inline reply, dismiss evidence를 redaction 상태로 남긴다. 검증: `agent-test/local/mattermost-server-generated-push-smoke.md`의 Evidence Checklist가 PASS/PARTIAL/BLOCKED로 기록된다. ## 완료 리뷰 -- 상태: 없음 -- 요청일: 없음 -- 완료 근거: [진행중] FCM 수신, signature 검증, ACK 전송, system notification display는 PASS이나, opened event, channel navigation, inline reply, dismiss/clear, device token prefix는 실제 동작 및 접두사 증적 수집 대기 중으로 부분 완료(PARTIAL) 상태입니다. +- 상태: 승인됨 +- 요청일: 2026-05-30 +- 완료 근거: Android remote runner에서 Mattermost REST server-generated DM -> FCM -> `nexo_messaging` 수신, signature 처리, ACK, notification display, opened/channel navigation, inline reply, dismiss/clear, device token prefix evidence를 redaction 상태로 확인했다. `agent-test/local/mattermost-server-generated-push-smoke.md` Evidence Checklist 11개 항목은 PASS 또는 N/A로 기록됐고, signed smoke task는 `agent-task/archive/2026/05/m-mattermost-nexo-messaging-alignment/02+01_signed_smoke/complete.log`로 PASS 완료됐다. - 리뷰 필요: - - [ ] 사용자가 완료 결과를 확인했다 - - [ ] archive 이동을 승인했다 -- 리뷰 코멘트: 없음 + - [x] 사용자가 완료 결과를 확인했다 + - [x] archive 이동을 승인했다 +- 리뷰 코멘트: 사용자가 메시지/푸시 정상 수신 확인 후 "마일스톤 업데이트하고 다음단계로 넘겨 현지점도 업데이트"를 요청했다. ## 범위 제외 diff --git a/agent-roadmap/current.md b/agent-roadmap/current.md index e072ca6..00bc36e 100644 --- a/agent-roadmap/current.md +++ b/agent-roadmap/current.md @@ -9,10 +9,7 @@ ## 활성 Milestone -- [진행중] Mattermost Nexo Messaging Alignment - - Phase: `agent-roadmap/phase/external-integration/PHASE.md` - - 경로: `agent-roadmap/phase/external-integration/milestones/mattermost-nexo-messaging-alignment.md` -- [계획] Roadmap Driven Agent-Ops Automation +- [진행중] Roadmap Driven Agent-Ops Automation - Phase: `agent-roadmap/phase/workflow-core/PHASE.md` - 경로: `agent-roadmap/phase/workflow-core/milestones/roadmap-driven-agent-ops-automation.md` - [계획] Workflow Core diff --git a/agent-roadmap/phase/external-integration/PHASE.md b/agent-roadmap/phase/external-integration/PHASE.md index 7d1584e..f527d71 100644 --- a/agent-roadmap/phase/external-integration/PHASE.md +++ b/agent-roadmap/phase/external-integration/PHASE.md @@ -17,9 +17,9 @@ Work Item Provider Pipeline Design과 Workflow Core 이후 Plane/Jira 확장, Ma - 경로: `agent-roadmap/archive/phase/external-integration/milestones/mattermost-messaging-android-smoke.md` - 요약: `../nexo/packages/messaging_flutter` 전환 이후 원격 Android SDK build, emulator runtime, Mattermost FCM 알림 도착, 웹 채널 메시지 도착을 확인했다. -- [진행중] Mattermost Nexo Messaging Alignment - - 경로: `agent-roadmap/phase/external-integration/milestones/mattermost-nexo-messaging-alignment.md` - - 요약: Workflow Core 재개 전에 Mattermost 메시지/알림 경계를 `../nexo/packages/messaging_flutter` 구조와 맞추고 server-generated signed push smoke 기준을 선행 검증한다. +- [완료] Mattermost Nexo Messaging Alignment + - 경로: `agent-roadmap/archive/phase/external-integration/milestones/mattermost-nexo-messaging-alignment.md` + - 요약: Mattermost 메시지/알림 경계를 `../nexo/packages/messaging_flutter` 구조와 맞추고 Android runner에서 server-generated signed push 수신, ACK, notification, opened, inline reply, dismiss evidence를 redaction 상태로 확인했다. - [계획] External Integration - 경로: `agent-roadmap/phase/external-integration/milestones/external-integration.md` diff --git a/agent-roadmap/phase/workflow-core/PHASE.md b/agent-roadmap/phase/workflow-core/PHASE.md index a6d04b9..3c74304 100644 --- a/agent-roadmap/phase/workflow-core/PHASE.md +++ b/agent-roadmap/phase/workflow-core/PHASE.md @@ -13,7 +13,7 @@ Plane 통신 토대와 provider-neutral pipeline 설계 이후, 로드맵 기반 완료된 Milestone은 archive 경로를 가리키고, 검토중, 진행중, 계획, 스케치 또는 보류 Milestone은 이 Phase 하위 `milestones/` 경로를 가리킨다. 완료, 검토중, 진행중, 계획, 스케치 순서를 기본으로 하되, 이번 Phase에서는 `Roadmap Driven Agent-Ops Automation`이 `Workflow Core` 구현의 선행 조건이므로 먼저 둔다. -- [계획] Roadmap Driven Agent-Ops Automation +- [진행중] Roadmap Driven Agent-Ops Automation - 경로: `agent-roadmap/phase/workflow-core/milestones/roadmap-driven-agent-ops-automation.md` - 요약: Workflow Core 구현 전에 사용자가 입력과 출력 검토를 NomadCode 라인에서 해결하고, 외부 에이전트는 MCP를 통해 roadmap/action core를 제어하는 운영 방향을 구현 가능한 계획으로 정리한다. diff --git a/agent-roadmap/phase/workflow-core/milestones/roadmap-driven-agent-ops-automation.md b/agent-roadmap/phase/workflow-core/milestones/roadmap-driven-agent-ops-automation.md index 529c6da..6164cff 100644 --- a/agent-roadmap/phase/workflow-core/milestones/roadmap-driven-agent-ops-automation.md +++ b/agent-roadmap/phase/workflow-core/milestones/roadmap-driven-agent-ops-automation.md @@ -11,7 +11,7 @@ NomadCode가 로드맵을 중심으로 사용자 입력, 실행 상태, 출력 ## 상태 -[계획] +[진행중] ## 승격 조건 @@ -70,4 +70,5 @@ NomadCode 내부 core logic이 roadmap 기반 작업 운영을 소유하고, 외 - 로컬 제어 표면 후보: `http://127.0.0.1:8080/v1` - 선행 작업: Work Item Provider Pipeline Design, 로드맵 스킬 운영 복잡도 평가, Core/MCP-first 방향성 합의 - 후속 작업: Workflow Core, Roadmap Operations Control Plane 첫 구현 slice, MCP tool contract 작성 +- 현재 지점: Mattermost Nexo Messaging Alignment가 완료되어 Workflow Core 재개 전 선행 정합성 작업이 닫혔다. 다음 실행 단위는 roadmap/action core 책임과 MCP-first 제어 표면을 구현 가능한 Core action 후보로 정리하는 것이다. - 확인 필요: 없음 diff --git a/agent-task/archive/2026/05/m-mattermost-nexo-messaging-alignment/01_runner_preflight/USER_REVIEW.md b/agent-task/archive/2026/05/m-mattermost-nexo-messaging-alignment/01_runner_preflight/USER_REVIEW.md new file mode 100644 index 0000000..1bfdaba --- /dev/null +++ b/agent-task/archive/2026/05/m-mattermost-nexo-messaging-alignment/01_runner_preflight/USER_REVIEW.md @@ -0,0 +1,80 @@ +# User Review Required - m-mattermost-nexo-messaging-alignment/01_runner_preflight + +## 요청 일시 + +2026-05-30 + +## 상태 + +RESOLVED_PASS + +## 사유 + +- 유형: environment-blocked +- 현재 리뷰 회차: 1 +- 최종 판정: FAIL +- 요약: remote Android runner의 `~/works/nomadcode`에 `.git`을 세팅하고 `origin/main`을 현재 로컬 HEAD `55e0139cca82d9c88308207bcece0c151d4c2da9`로 맞춘 뒤, login shell 기준 preflight가 통과했다. +- 해소 판정: PASS + +## 루프 이력 + +| Plan | Review | Verdict | 메모 | +|------|--------|---------|------| +| `agent-task/m-mattermost-nexo-messaging-alignment/01_runner_preflight/plan_cloud_G07_0.log` | `agent-task/m-mattermost-nexo-messaging-alignment/01_runner_preflight/code_review_cloud_G07_0.log` | FAIL | remote `~/works/nomadcode` exists but is not a git repository/worktree; Flutter/Android runner setup also needs environment preparation. | + +## 차단 근거 + +- 문제: remote runner에 `/config/workspace/nomadcode`는 없고 `$HOME/works/nomadcode`는 존재하지만 git repository/worktree가 아니어서 `[TEST-1]` remote Android runner preflight의 branch/commit 확인을 완료하지 못했다. 추가 진단상 `../nexo/packages/messaging_flutter`와 `../proto-socket/dart`는 존재하지만, `flutter` command가 PATH에 없고 `ANDROID_HOME`/`ANDROID_SDK_ROOT`도 비어 있다. +- 현재 archive plan: `agent-task/m-mattermost-nexo-messaging-alignment/01_runner_preflight/plan_cloud_G07_0.log` +- 현재 archive review: `agent-task/m-mattermost-nexo-messaging-alignment/01_runner_preflight/code_review_cloud_G07_0.log` +- 검증 명령: `ssh -o ConnectTimeout=15 -o BatchMode=yes toki@toki-labs.com ''` +- 실제 출력: + +```text +nomadcode checkout missing +EXIT_CODE=2 +``` + +추가 진단 출력: + +```text +pwd=/Users/toki/works/nomadcode +git-worktree: fatal: not a git repository (or any of the parent directories): .git +nexo messaging: present +proto-socket dart: present +flutter: zsh:8: command not found: flutter +ANDROID_HOME= +ANDROID_SDK_ROOT= +zsh:11: command not found: flutter +``` + +- 차단 판단 근거: SSH 연결과 인증은 성공했고 remote script도 실행되었다. 다만 검증 대상 branch/commit, Flutter/Android SDK, device 환경은 remote runner 상태에 속한다. 임의로 원격 checkout/device 환경을 생성하거나 동기화하면 범위를 넘어설 수 있으므로 사용자 결정이 필요하다. + +## 해소 내용 + +- remote bare repo `/Users/toki/git/nomadcode.git`에 로컬 HEAD를 `main` branch로 push했다. +- remote `~/works/nomadcode`에서 `git init -b main`, `origin=/Users/toki/git/nomadcode.git`, `git fetch origin main`, `git reset --mixed FETCH_HEAD`로 `.git`과 branch/head 기준을 세팅했다. +- tracked 파일은 `git restore --source=HEAD --worktree --staged -- .`로 현재 HEAD와 맞췄고, ignored secret 파일은 보존했다. +- remote checkout evidence: `main`, `55e0139cca82d9c88308207bcece0c151d4c2da9`. +- login shell preflight evidence: Flutter 3.44.0, Android SDK 36.0.0, `ANDROID_HOME=/Users/toki/Library/Android/sdk`, `ANDROID_SDK_ROOT=/Users/toki/Library/Android/sdk`, Android emulator `emulator-5554` detected. + +## 사용자 결정 필요 + +- [ ] 자동 follow-up plan/review를 계속 진행한다. +- [ ] 계획을 재작성한다. +- [ ] 테스트 환경, secret, 외부 서비스, SDK, 장비 조건을 준비한 뒤 재시도한다. +- [ ] 작업 범위를 줄이거나 보류/폐기한다. + +## 재개 조건 + +- 충족됨. 단, SSH remote command는 non-login shell에서 `flutter` PATH를 못 볼 수 있으므로 Flutter/Android command는 `zsh -lc ''`로 실행한다. + +## 다음 실행 힌트 + +- runner 준비 후 `agent-task/m-mattermost-nexo-messaging-alignment/01_runner_preflight`에서 새 plan/review 루프를 시작해 remote preflight를 재실행한다. +- 대체 runner를 사용할 경우 checkout 경로와 host를 사용자 결정으로 먼저 남긴다. + +## 종료 규칙 + +- 사용자가 이 stop state를 완료/PASS로 해소하면 `USER_REVIEW.md`를 해소 상태로 갱신하고, `agent-ops/skills/common/code-review/templates/complete-log-template.md` 기준 `complete.log`를 작성한 뒤 task directory를 archive로 이동한다. +- 새 구현이 필요하면 `plan` 스킬이 `USER_REVIEW.md`를 `user_review_N.log`로 아카이브한 뒤 새 `PLAN-*-G??.md` / `CODE_REVIEW-*-G??.md`를 작성한다.