--- domain: project-support last_rule_review_commit: 678302bc3ea1b8ad31b03bbe0b5f3630f7169555 last_rule_updated_at: 2026-05-25 --- # project-support ## 목적 / 책임 패키지 메타데이터, 문서, Flutter analysis 설정, example app, smoke/integration 검증 흐름을 관리한다. ## 포함 경로 - `pubspec.yaml` — package metadata, Flutter plugin platform mapping, Dart/Flutter dependency contract를 포함한다. - `analysis_options.yaml` — Dart analysis/lint 설정을 포함한다. - `README.md`, `CHANGELOG.md` — support matrix, API usage, host integration 책임, manual smoke checklist를 포함한다. - `example/` — plugin consumer app scaffold와 integration/widget test를 포함한다. - `.metadata`, root project files — Flutter package scaffold metadata를 포함한다. ## 제외 경로 - `lib/` — public Dart API 구현 도메인이다. - `android/src/main/` — Android native runtime 구현 도메인이다. - `ios/`, `macos/` — Apple scaffold 도메인이다. ## 주요 구성 요소 - `README.md` — plugin 책임, platform support, host app integration, manual smoke checklist의 기준 문서다. - `example/lib/main.dart` — consumer-side API 사용과 manual verification 보조 화면을 제공한다. - `example/integration_test/` — host integration 흐름 검증 scaffold를 둔다. - `pubspec.yaml` — plugin platform registration과 dependency version을 관리한다. ## 유지할 패턴 - README support matrix는 실제 구현 상태와 맞춘다. Android는 production-ready, iOS/macOS는 no-op scaffold로 명시한다. - dependency 변경은 Flutter/Dart API, Android Gradle dependency, example app 영향을 함께 확인한다. - generated build output, `.dart_tool`, Gradle build cache, IDE workspace 파일은 수동 변경 대상으로 삼지 않는다. - manual smoke checklist는 headless test로 검증되지 않는 FCM/notification/reply/ACK 흐름을 보완한다. ## 다른 도메인과의 경계 - **dart-api**: example과 문서는 public API 사용 방식을 보여주되 API 계약 변경은 `lib/`와 테스트에서 확정한다. - **android-push-runtime**: support 문서는 Android runtime의 실제 동작을 반영하지만 native helper 구현은 수정하지 않는다. - **apple-stubs**: support matrix와 platform 설명은 Apple scaffold의 no-op 상태를 과장하지 않는다. ## 금지 사항 - build/generated 산출물을 의도된 소스 변경처럼 커밋하지 않는다. - 문서에서 자동화되지 않은 FCM end-to-end 검증을 테스트 완료로 단정하지 않는다. - package metadata 변경 시 example lock/build 상태만 보고 dependency 호환성을 단정하지 않는다.