# Milestone: ACK와 네트워크 회복성 검증 ## 위치 - Roadmap: `agent-ops/roadmap/ROADMAP.md` - Phase: `agent-ops/roadmap/phase/android-runtime-confidence/PHASE.md` ## 목표 Mattermost ACK와 inline reply delivery가 예측 가능한 요청을 만들고 실패 상황을 안전하게 처리하도록 검증한다. 네트워크 의존 로직은 mock server 또는 fake client로 분리해 소비 프로젝트 없이 확인할 수 있게 한다. ## 상태 [계획] ## 구현 잠금 - 상태: 잠금 - 결정 필요: 아래 체크리스트 - [ ] ACK 실패 시 retry, drop, local queue 중 어떤 정책을 우선할지 결정한다 - [ ] inline reply 실패 시 사용자에게 표시할 책임이 plugin인지 소비 앱인지 결정한다 ## 범위 - ACK request 생성과 auth token 사용 검증 - reply delivery request 생성 검증 - network failure, auth failure, server error 처리 기준 정의 - fake HTTP client 또는 mock server 기반 테스트 추가 ## 필수 기능 ### Epic: [ack] ACK 전송 계약 Mattermost 서버로 보내는 receipt ACK 경로를 검증한다. - [ ] [request-shape] ACK URL, method, header, body shape를 테스트한다 - [ ] [auth] 저장된 auth token 사용 여부를 테스트한다 - [ ] [success] 200/201 성공 응답 처리 기준을 테스트한다 ### Epic: [failure] 실패 처리 네트워크 실패가 plugin runtime을 불안정하게 만들지 않도록 한다. - [ ] [network-error] timeout 또는 connection failure 처리 기준을 테스트한다 - [ ] [auth-error] 401/403 처리 기준을 정리한다 - [ ] [server-error] 5xx 응답 처리 기준을 정리한다 ### Epic: [reply] Inline Reply Delivery Inline reply 요청 흐름의 입력과 실패 경계를 명확히 한다. - [ ] [reply-request] reply text와 context가 Mattermost API 요청으로 변환되는지 테스트한다 - [ ] [reply-failure] reply 실패 시 저장, 재시도, 노출 정책을 결정된 기준대로 구현한다 ## 완료 기준 - [ ] ACK 요청 생성이 네트워크 없이 테스트된다 - [ ] 성공과 실패 응답 처리 기준이 테스트 또는 문서로 명확하다 - [ ] inline reply delivery 실패 정책이 결정되고 구현에 반영되어 있다 - [ ] 외부 Mattermost 서버 없이 기본 네트워크 로직을 검증할 수 있다 ## 완료 리뷰 - 상태: 없음 - 요청일: 없음 - 완료 근거: 없음 - 리뷰 필요: - [ ] 사용자가 완료 결과를 확인했다 - [ ] archive 이동을 승인했다 - 리뷰 코멘트: 없음 ## 범위 제외 - 소비 앱의 사용자-facing error UI - Mattermost 서버 자체 동작 검증 - 장기 offline queue 제품 정책 확정 전 대규모 queue 구현 ## 작업 컨텍스트 - 관련 경로: `android/src/main/java/**`, `android/src/main/kotlin/**`, `android/src/test/**` - 표준선(선택): HTTP 테스트는 fake client 또는 mock server를 사용하고 실제 서버에 의존하지 않는다 - 선행 작업: Native 단위 테스트 확장 - 후속 작업: 소비 프로젝트 도입 안정화 - 확인 필요: ACK 실패 정책, inline reply 실패 책임 경계