From 7206921a8e40d3d4411a93956de366db06bf3157 Mon Sep 17 00:00:00 2001 From: toki Date: Mon, 25 May 2026 15:31:16 +0900 Subject: [PATCH] update roadmap: adjust platform expansion milestones for iOS/Desktop --- agent-ops/roadmap/ROADMAP.md | 6 +- .../release-consumption-workflow.md | 2 +- .../roadmap/phase/platform-expansion/PHASE.md | 22 +++--- .../milestones/apple-platform-decision.md | 78 ------------------ .../milestones/apple-runtime-parity.md | 79 ------------------- .../milestones/ios-desktop-expansion-scope.md | 78 ++++++++++++++++++ .../milestones/ios-desktop-runtime-parity.md | 79 +++++++++++++++++++ 7 files changed, 172 insertions(+), 172 deletions(-) delete mode 100644 agent-ops/roadmap/phase/platform-expansion/milestones/apple-platform-decision.md delete mode 100644 agent-ops/roadmap/phase/platform-expansion/milestones/apple-runtime-parity.md create mode 100644 agent-ops/roadmap/phase/platform-expansion/milestones/ios-desktop-expansion-scope.md create mode 100644 agent-ops/roadmap/phase/platform-expansion/milestones/ios-desktop-runtime-parity.md diff --git a/agent-ops/roadmap/ROADMAP.md b/agent-ops/roadmap/ROADMAP.md index 1440593..ec46d0e 100644 --- a/agent-ops/roadmap/ROADMAP.md +++ b/agent-ops/roadmap/ROADMAP.md @@ -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 기준을 정의한다. ## 로딩 정책 diff --git a/agent-ops/roadmap/phase/consumer-adoption/milestones/release-consumption-workflow.md b/agent-ops/roadmap/phase/consumer-adoption/milestones/release-consumption-workflow.md index 956c14a..9b23963 100644 --- a/agent-ops/roadmap/phase/consumer-adoption/milestones/release-consumption-workflow.md +++ b/agent-ops/roadmap/phase/consumer-adoption/milestones/release-consumption-workflow.md @@ -81,5 +81,5 @@ - 관련 경로: `pubspec.yaml`, `CHANGELOG.md`, `README.md`, `.github/**` - 표준선(선택): 배포 채널이 결정되기 전에는 Git tag와 changelog 중심의 보수적 운영을 가정한다 - 선행 작업: 통합 계약 문서화 -- 후속 작업: 플랫폼 확장 판단 +- 후속 작업: iOS/Desktop 플랫폼 확장 - 확인 필요: 배포 방식, versioning 정책 diff --git a/agent-ops/roadmap/phase/platform-expansion/PHASE.md b/agent-ops/roadmap/phase/platform-expansion/PHASE.md index 84b7e8b..f82cd41 100644 --- a/agent-ops/roadmap/phase/platform-expansion/PHASE.md +++ b/agent-ops/roadmap/phase/platform-expansion/PHASE.md @@ -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 지원 여부와 순서는 별도 결정 항목으로 남긴다. diff --git a/agent-ops/roadmap/phase/platform-expansion/milestones/apple-platform-decision.md b/agent-ops/roadmap/phase/platform-expansion/milestones/apple-platform-decision.md deleted file mode 100644 index 4ff34a3..0000000 --- a/agent-ops/roadmap/phase/platform-expansion/milestones/apple-platform-decision.md +++ /dev/null @@ -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 실제 지원 요구와 우선순위 diff --git a/agent-ops/roadmap/phase/platform-expansion/milestones/apple-runtime-parity.md b/agent-ops/roadmap/phase/platform-expansion/milestones/apple-runtime-parity.md deleted file mode 100644 index 07eb68a..0000000 --- a/agent-ops/roadmap/phase/platform-expansion/milestones/apple-runtime-parity.md +++ /dev/null @@ -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 처리 범위 diff --git a/agent-ops/roadmap/phase/platform-expansion/milestones/ios-desktop-expansion-scope.md b/agent-ops/roadmap/phase/platform-expansion/milestones/ios-desktop-expansion-scope.md new file mode 100644 index 0000000..1495770 --- /dev/null +++ b/agent-ops/roadmap/phase/platform-expansion/milestones/ios-desktop-expansion-scope.md @@ -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차 기능 범위 diff --git a/agent-ops/roadmap/phase/platform-expansion/milestones/ios-desktop-runtime-parity.md b/agent-ops/roadmap/phase/platform-expansion/milestones/ios-desktop-runtime-parity.md new file mode 100644 index 0000000..14b02d1 --- /dev/null +++ b/agent-ops/roadmap/phase/platform-expansion/milestones/ios-desktop-runtime-parity.md @@ -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 처리 범위