mattermost-push-plugin/agent-ops/rules/project/domain/project-support/rules.md

51 lines
2.6 KiB
Markdown

---
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 호환성을 단정하지 않는다.