nomadcode/agent-roadmap/phase/external-integration/milestones/mattermost-nexo-messaging-alignment.md

3.9 KiB

Milestone: Mattermost Nexo Messaging Alignment

위치

  • Roadmap: agent-roadmap/ROADMAP.md
  • Phase: agent-roadmap/phase/external-integration/PHASE.md

목표

현재 workflow/core 작업을 계속 확장하기 전에 Mattermost 메시지/알림 경계를 ../nexo/packages/messaging_flutter 기준으로 먼저 고정한다. NomadCode core는 Mattermost REST 메시지 발송과 task notification 발행을 담당하고, nexo messaging package는 client-side FCM 수신, signature 검증, ACK, notification display, opened-routing, inline reply, dismiss를 담당한다는 선을 구현과 검증 문서에 맞춘다.

상태

[진행중]

구현 잠금

  • 상태: 해제
  • 결정 필요: 없음

범위

  • NomadCode host의 MattermostPushClient 경계를 현재 nexo_messaging public API와 맞춘다.
  • ignored Mattermost credential asset에서 optional server identifier를 전달할 수 있게 한다.
  • server-generated signed push smoke 절차와 External Integration 검증 기준 nexo 구조에 맞춰 유지한다.
  • Android native push 처리 로직이 apps/client/android로 되돌아오지 않도록 책임 경계를 문서화한다.

기능

Epic: [nexo-boundary] Mattermost host and nexo package alignment

현재 작업보다 먼저 Mattermost messaging/notification 경계를 nexo-owned package 기준으로 정렬한다.

  • [host-identifier] NomadCode host가 optional Mattermost server identifier를 MattermostPushClientnexo_messagingsetAuthToken(..., identifier:) 경계로 전달한다. 검증: cd apps/client && flutter test.
  • [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로 기록된다.

완료 리뷰

  • 상태: 없음
  • 요청일: 없음
  • 완료 근거: [진행중] FCM 수신, signature 검증, ACK 전송, system notification display는 PASS이나, opened event, channel navigation, inline reply, dismiss/clear, device token prefix는 실제 동작 및 접두사 증적 수집 대기 중으로 부분 완료(PARTIAL) 상태입니다.
  • 리뷰 필요:
    • 사용자가 완료 결과를 확인했다
    • archive 이동을 승인했다
  • 리뷰 코멘트: 없음

범위 제외

  • Plane/Jira adapter 확장
  • Agent Integrator 또는 A2A 도입 결정
  • core Mattermost REST 메시지 발송 adapter의 전체 구현
  • iOS/macOS native push runtime 구현
  • Mattermost 제품 UX 또는 채널 화면 구현

작업 컨텍스트

  • 관련 경로: apps/client/lib/src/integrations/mattermost/, apps/client/push-notification-todo.md, agent-test/local/mattermost-server-generated-push-smoke.md, packages/contracts/notes/flutter-core-api-candidates.md, ../nexo/packages/messaging_flutter
  • 표준선(선택): ../nexo/packages/messaging_flutter는 Android-first client-side messaging/notification SDK이고, NomadCode host는 Firebase 설정, credential handoff, signing key, optional server identifier, navigation callback만 전달한다.
  • 선행 작업: Mattermost Messaging Android Smoke
  • 후속 작업: Workflow Core 재개, External Integration의 [mattermost-adapter] 구현
  • 확인 필요: signed push smoke 재실행 시 private input은 agent-test/local/rules.mdagent-test/local/mattermost-server-generated-push-smoke.md가 라우팅하는 ignored secret 파일에서만 읽는다.