update roadmap: adjust platform expansion milestones for iOS/Desktop

This commit is contained in:
toki 2026-05-25 15:31:16 +09:00
parent 196a7162ee
commit 7206921a8e
7 changed files with 172 additions and 172 deletions

View file

@ -2,7 +2,7 @@
## 전체 목표
여러 Flutter 프로젝트에서 공통으로 사용할 수 있는 Mattermost 알림 기반 플러그인을 만든다. 이 플러그인은 소비 프로젝트의 인증, 라우팅, UI에 과도하게 결합되지 않으면서 Android push runtime을 안정적으로 제공하고, 자체 `example/` 테스트 하네스와 자동/수동 검증 체계로 기능 신뢰도를 유지한다.
여러 Flutter 프로젝트에서 공통으로 사용할 수 있는 Mattermost 알림 기반 플러그인을 만든다. 이 플러그인은 소비 프로젝트의 인증, 라우팅, UI에 과도하게 결합되지 않으면서 Android push runtime을 먼저 안정화하고, 같은 검증 기준을 바탕으로 iOS/Desktop runtime까지 확장한다.
## Phase 흐름
@ -19,9 +19,9 @@
- [계획] 소비 프로젝트 도입 안정화
- 경로: `agent-ops/roadmap/phase/consumer-adoption/PHASE.md`
- 요약: 여러 프로젝트가 같은 플러그인을 예측 가능하게 설치, 설정, 업그레이드할 수 있는 도입 계약을 정리한다.
- [계획] 플랫폼 확장 판단
- [계획] iOS/Desktop 플랫폼 확장
- 경로: `agent-ops/roadmap/phase/platform-expansion/PHASE.md`
- 요약: 현재 stub 상태인 iOS/macOS를 어떤 수준까지 지원할지 결정하고, 확장 시 필요한 parity 기준을 정의한다.
- 요약: Android 안정화 이후 iOS와 Desktop runtime으로 확장하기 위한 범위, 순서, parity 기준을 정의한다.
## 로딩 정책

View file

@ -81,5 +81,5 @@
- 관련 경로: `pubspec.yaml`, `CHANGELOG.md`, `README.md`, `.github/**`
- 표준선(선택): 배포 채널이 결정되기 전에는 Git tag와 changelog 중심의 보수적 운영을 가정한다
- 선행 작업: 통합 계약 문서화
- 후속 작업: 플랫폼 확장 판단
- 후속 작업: iOS/Desktop 플랫폼 확장
- 확인 필요: 배포 방식, versioning 정책

View file

@ -1,4 +1,4 @@
# Phase: 플랫폼 확장 판단
# Phase: iOS/Desktop 플랫폼 확장
## 상태
@ -6,22 +6,22 @@
## 목표
현재 scaffold 상태인 iOS와 macOS 지원 범위를 명확히 결정한다. Android 전용 플러그인으로 안정화할지, Apple platform도 단계적으로 runtime parity를 맞출지 판단하고 필요한 기준을 문서화한다.
Android runtime 안정화 이후 iOS와 Desktop runtime으로 확장한다. 현재 scaffold 상태인 iOS/macOS를 출발점으로 삼되, Desktop 범위가 macOS만인지 Windows/Linux까지 포함하는지 정리하고 Android에서 세운 알림 계약과 테스트 기준을 platform별로 이식한다.
## Milestone 흐름
완료된 Milestone은 archive 경로를 가리키고, 검토중, 진행중, 계획 또는 보류 Milestone은 이 Phase 하위 `milestones/` 경로를 가리킨다.
완료, 검토중, 진행중, 계획 순서로 두어 아래로 갈수록 미래 작업에 가까워지게 정렬한다.
- [계획] Apple 플랫폼 지원 결정
- 경로: `agent-ops/roadmap/phase/platform-expansion/milestones/apple-platform-decision.md`
- 요약: iOS/macOS를 stub으로 유지할지, 제한 지원할지, Android와 parity를 맞출지 결정한다.
- [계획] Apple 런타임 parity 기준
- 경로: `agent-ops/roadmap/phase/platform-expansion/milestones/apple-runtime-parity.md`
- 요약: Apple platform 구현을 시작할 경우 필요한 API, native capability, 테스트 기준을 정의한다.
- [계획] iOS/Desktop 확장 범위 정렬
- 경로: `agent-ops/roadmap/phase/platform-expansion/milestones/ios-desktop-expansion-scope.md`
- 요약: Android 안정화 이후 iOS와 Desktop으로 확장할 범위, 순서, platform별 책임 경계를 정리한다.
- [계획] iOS/Desktop 런타임 parity 기준
- 경로: `agent-ops/roadmap/phase/platform-expansion/milestones/ios-desktop-runtime-parity.md`
- 요약: iOS/Desktop runtime 구현에 필요한 API, native capability, 테스트 기준을 정의한다.
## Phase 경계
- 이 Phase는 Android 안정화 이후에 진행하는 미래 계획으로 둔다.
- iOS/macOS에서 구현되지 않은 기능을 Dart public API가 성공한 것처럼 보이게 만들지 않는다.
- Apple platform 범위는 제품 요구와 운영 비용을 함께 보고 결정한다.
- 이 Phase는 Android 안정화 이후에 진행하는 확장 계획으로 둔다.
- iOS/Desktop에서 아직 구현되지 않은 기능을 Dart public API가 성공한 것처럼 보이게 만들지 않는다.
- Desktop은 우선 현재 scaffold가 있는 macOS를 기준으로 정리하되, Windows/Linux 지원 여부와 순서는 별도 결정 항목으로 남긴다.

View file

@ -1,78 +0,0 @@
# Milestone: Apple 플랫폼 지원 결정
## 위치
- Roadmap: `agent-ops/roadmap/ROADMAP.md`
- Phase: `agent-ops/roadmap/phase/platform-expansion/PHASE.md`
## 목표
iOS와 macOS를 현재처럼 stub으로 유지할지, 제한 지원할지, Android와 기능 parity를 맞출지 결정한다. 지원 수준을 결정하지 않은 상태에서 public API가 Apple platform에서도 완전 동작한다고 오해되지 않게 한다.
## 상태
[계획]
## 구현 잠금
- 상태: 잠금
- 결정 필요: 아래 체크리스트
- [ ] iOS 지원이 실제 소비 프로젝트 요구사항인지 결정한다
- [ ] macOS 지원이 실제 소비 프로젝트 요구사항인지 결정한다
- [ ] Apple platform에서 push notification, signing, ACK, reply 중 어떤 기능 범위를 우선할지 결정한다
## 범위
- 현재 iOS/macOS scaffold 상태 점검
- Apple platform support matrix 정리
- Android-only 제약의 public documentation 보강
- 구현 시작 전 요구사항과 운영 비용 판단
## 필수 기능
### Epic: [decision] 지원 수준 결정
Apple platform을 어떤 수준으로 다룰지 결정한다.
- [ ] [ios-need] iOS 지원 필요성을 확인한다
- [ ] [macos-need] macOS 지원 필요성을 확인한다
- [ ] [support-level] stub, limited, parity 중 지원 수준을 결정한다
### Epic: [docs] 제약 문서화
결정 전후로 소비 프로젝트가 platform 상태를 오해하지 않게 한다.
- [ ] [matrix] README platform status를 최신 결정과 맞춘다
- [ ] [api-behavior] unsupported platform에서 public API가 보이는 동작을 문서화한다
- [ ] [risk] Apple platform 미지원으로 인한 소비 프로젝트 위험을 정리한다
## 완료 기준
- [ ] iOS 지원 여부와 범위가 결정되어 있다
- [ ] macOS 지원 여부와 범위가 결정되어 있다
- [ ] README와 roadmap에 Apple platform 상태가 일관되게 표현되어 있다
- [ ] 결정된 지원 수준에 따라 후속 Milestone이 유지, 수정, 또는 폐기된다
## 완료 리뷰
- 상태: 없음
- 요청일: 없음
- 완료 근거: 없음
- 리뷰 필요:
- [ ] 사용자가 완료 결과를 확인했다
- [ ] archive 이동을 승인했다
- 리뷰 코멘트: 없음
## 범위 제외
- Apple native push runtime 구현
- APNs 인증서 또는 provisioning 설정
- Android runtime 변경
## 작업 컨텍스트
- 관련 경로: `ios/**`, `macos/**`, `README.md`, `pubspec.yaml`
- 표준선(선택): 결정 전까지 iOS/macOS는 명시적인 stub으로 유지한다
- 선행 작업: 소비 프로젝트 도입 안정화
- 후속 작업: Apple 런타임 parity 기준
- 확인 필요: iOS/macOS 실제 지원 요구와 우선순위

View file

@ -1,79 +0,0 @@
# Milestone: Apple 런타임 parity 기준
## 위치
- Roadmap: `agent-ops/roadmap/ROADMAP.md`
- Phase: `agent-ops/roadmap/phase/platform-expansion/PHASE.md`
## 목표
Apple platform 구현을 시작하기로 결정된 경우 필요한 capability와 테스트 기준을 정의한다. Android와 동일해야 하는 계약과 Apple platform 특성 때문에 다르게 가야 하는 계약을 구분한다.
## 상태
[계획]
## 구현 잠금
- 상태: 잠금
- 결정 필요: 아래 체크리스트
- [ ] Apple 플랫폼 지원 결정 Milestone에서 limited 또는 parity 지원이 승인되어야 한다
- [ ] APNs 기반 push와 Mattermost payload 처리 범위를 결정해야 한다
## 범위
- iOS/macOS native runtime capability mapping
- Dart API platform behavior 기준
- APNs, notification tap, ACK, token registration 테스트 기준
- Apple platform에서 불가능하거나 다르게 처리해야 하는 기능 식별
## 필수 기능
### Epic: [capability] Capability Mapping
Android runtime 기능을 Apple platform 기준으로 재분류한다.
- [ ] [push] APNs 수신과 payload 처리 가능 범위를 정의한다
- [ ] [token] device token format과 registration 기준을 정의한다
- [ ] [notification] notification display와 tap handling 기준을 정의한다
- [ ] [ack] ACK delivery 가능 범위를 정의한다
- [ ] [reply] inline reply 가능 여부와 대체 정책을 정의한다
### Epic: [tests] 테스트 기준
Apple platform 구현을 검증할 방법을 정한다.
- [ ] [unit] Swift unit test 범위를 정한다
- [ ] [integration] Flutter integration test 범위를 정한다
- [ ] [manual] 실제 APNs가 필요한 manual smoke 범위를 정한다
## 완료 기준
- [ ] Apple platform 기능별 parity 여부가 표로 정리되어 있다
- [ ] Dart API가 platform별로 어떤 동작을 보장하는지 문서화되어 있다
- [ ] Apple runtime 구현 전 필요한 테스트 기준이 명확하다
- [ ] 지원하지 않을 기능은 unsupported behavior로 명확히 표현되어 있다
## 완료 리뷰
- 상태: 없음
- 요청일: 없음
- 완료 근거: 없음
- 리뷰 필요:
- [ ] 사용자가 완료 결과를 확인했다
- [ ] archive 이동을 승인했다
- 리뷰 코멘트: 없음
## 범위 제외
- 실제 Apple runtime 구현
- APNs 인증 인프라 구축
- Android API breaking change
## 작업 컨텍스트
- 관련 경로: `ios/**`, `macos/**`, `lib/**`, `example/ios/**`, `example/macos/**`
- 표준선(선택): Android의 public Dart API contract를 기준으로 삼되 Apple platform 특성상 다른 동작은 명시적으로 문서화한다
- 선행 작업: Apple 플랫폼 지원 결정
- 후속 작업: 없음
- 확인 필요: Apple platform 지원 승인, APNs 처리 범위

View file

@ -0,0 +1,78 @@
# Milestone: iOS/Desktop 확장 범위 정렬
## 위치
- Roadmap: `agent-ops/roadmap/ROADMAP.md`
- Phase: `agent-ops/roadmap/phase/platform-expansion/PHASE.md`
## 목표
Android runtime 안정화 이후 iOS와 Desktop으로 확장하기 위한 범위와 순서를 정리한다. iOS와 macOS는 현재 scaffold를 출발점으로 삼고, Desktop 범위에 Windows/Linux까지 포함할지 여부를 분리해 결정한다.
## 상태
[계획]
## 구현 잠금
- 상태: 잠금
- 결정 필요: 아래 체크리스트
- [ ] Desktop 1차 범위를 macOS로 한정할지, Windows/Linux까지 포함할지 결정한다
- [ ] Android 안정화 완료 후 iOS와 Desktop 중 어떤 platform을 먼저 구현할지 결정한다
- [ ] 각 platform에서 push notification, signing, ACK, reply 중 어떤 기능 범위를 1차로 구현할지 결정한다
## 범위
- 현재 iOS/macOS scaffold 상태 점검
- Desktop platform 범위 정리
- iOS/Desktop support matrix 정리
- Android 안정화 이후 platform 확장 순서와 운영 비용 판단
## 필수 기능
### Epic: [scope] 확장 범위 정렬
iOS/Desktop 확장의 platform 범위와 구현 순서를 정렬한다.
- [ ] [ios-scope] iOS 1차 지원 범위를 정의한다
- [ ] [desktop-scope] Desktop 1차 지원 범위가 macOS인지 Windows/Linux까지인지 정의한다
- [ ] [rollout-order] Android 안정화 이후 iOS/Desktop 구현 순서를 정의한다
### Epic: [docs] 확장 상태 문서화
확장 전환 과정에서 소비 프로젝트가 platform 상태를 오해하지 않게 한다.
- [ ] [matrix] README platform status를 최신 결정과 맞춘다
- [ ] [api-behavior] unsupported platform에서 public API가 보이는 동작을 문서화한다
- [ ] [risk] platform별 미구현 기능과 소비 프로젝트 위험을 정리한다
## 완료 기준
- [ ] iOS 1차 지원 범위가 결정되어 있다
- [ ] Desktop 1차 지원 범위와 platform 순서가 결정되어 있다
- [ ] README와 roadmap에 iOS/Desktop 확장 방향이 일관되게 표현되어 있다
- [ ] 결정된 범위에 따라 runtime parity Milestone의 세부 항목이 유지 또는 수정된다
## 완료 리뷰
- 상태: 없음
- 요청일: 없음
- 완료 근거: 없음
- 리뷰 필요:
- [ ] 사용자가 완료 결과를 확인했다
- [ ] archive 이동을 승인했다
- 리뷰 코멘트: 없음
## 범위 제외
- iOS/Desktop native push runtime 구현
- APNs 인증서 또는 provisioning 설정
- Android runtime 변경
## 작업 컨텍스트
- 관련 경로: `ios/**`, `macos/**`, `README.md`, `pubspec.yaml`
- 표준선(선택): Android를 먼저 안정화한 뒤 iOS/Desktop으로 확장한다. 현재 구현 전까지 iOS/macOS는 명시적인 scaffold/stub 상태로 유지한다
- 선행 작업: 소비 프로젝트 도입 안정화
- 후속 작업: iOS/Desktop 런타임 parity 기준
- 확인 필요: Desktop 1차 범위, iOS/Desktop 구현 순서, platform별 1차 기능 범위

View file

@ -0,0 +1,79 @@
# Milestone: iOS/Desktop 런타임 parity 기준
## 위치
- Roadmap: `agent-ops/roadmap/ROADMAP.md`
- Phase: `agent-ops/roadmap/phase/platform-expansion/PHASE.md`
## 목표
iOS/Desktop runtime 구현에 필요한 capability와 테스트 기준을 정의한다. Android와 동일해야 하는 계약과 iOS/Desktop platform 특성 때문에 다르게 가야 하는 계약을 구분한다.
## 상태
[계획]
## 구현 잠금
- 상태: 잠금
- 결정 필요: 아래 체크리스트
- [ ] iOS/Desktop 확장 범위 정렬 Milestone에서 1차 platform 범위와 구현 순서가 결정되어야 한다
- [ ] APNs와 Desktop notification 기반 push 처리 범위를 결정해야 한다
## 범위
- iOS/Desktop native runtime capability mapping
- Dart API platform behavior 기준
- APNs, Desktop notification, notification tap, ACK, token registration 테스트 기준
- iOS/Desktop platform에서 불가능하거나 다르게 처리해야 하는 기능 식별
## 필수 기능
### Epic: [capability] Capability Mapping
Android runtime 기능을 iOS/Desktop 기준으로 재분류한다.
- [ ] [push] APNs/Desktop notification 수신과 payload 처리 가능 범위를 정의한다
- [ ] [token] platform별 device token format과 registration 기준을 정의한다
- [ ] [notification] platform별 notification display와 tap handling 기준을 정의한다
- [ ] [ack] ACK delivery 가능 범위를 정의한다
- [ ] [reply] inline reply 가능 여부와 대체 정책을 정의한다
### Epic: [tests] 테스트 기준
iOS/Desktop 구현을 검증할 방법을 정한다.
- [ ] [unit] Swift와 Desktop native unit test 범위를 정한다
- [ ] [integration] iOS/Desktop Flutter integration test 범위를 정한다
- [ ] [manual] 실제 APNs 또는 Desktop notification이 필요한 manual smoke 범위를 정한다
## 완료 기준
- [ ] iOS/Desktop 기능별 parity 여부가 표로 정리되어 있다
- [ ] Dart API가 platform별로 어떤 동작을 보장하는지 문서화되어 있다
- [ ] iOS/Desktop runtime 구현 전 필요한 테스트 기준이 명확하다
- [ ] 지원하지 않을 기능은 unsupported behavior로 명확히 표현되어 있다
## 완료 리뷰
- 상태: 없음
- 요청일: 없음
- 완료 근거: 없음
- 리뷰 필요:
- [ ] 사용자가 완료 결과를 확인했다
- [ ] archive 이동을 승인했다
- 리뷰 코멘트: 없음
## 범위 제외
- 실제 iOS/Desktop runtime 구현
- APNs 인증 인프라 구축
- Android API breaking change
## 작업 컨텍스트
- 관련 경로: `ios/**`, `macos/**`, `lib/**`, `example/ios/**`, `example/macos/**`
- 표준선(선택): Android의 public Dart API contract를 기준으로 삼되 iOS/Desktop platform 특성상 다른 동작은 명시적으로 문서화한다
- 선행 작업: iOS/Desktop 확장 범위 정렬
- 후속 작업: 없음
- 확인 필요: iOS/Desktop 1차 platform 범위, APNs/Desktop notification 처리 범위