chore: bootstrap trellis workspace and sync deployment settings
This commit is contained in:
@@ -0,0 +1,62 @@
|
||||
# Quality Guidelines
|
||||
|
||||
> Frontend quality baseline for `apps/**` changes.
|
||||
|
||||
---
|
||||
|
||||
## Practical Conventions
|
||||
|
||||
1. Run Flutter analyzer/tests for touched scope before finalizing changes.
|
||||
2. Keep error logging explicit at catch sites using project logger (`getLogger(...)`).
|
||||
3. Prioritize regression tests for high-risk modules: auth/session, home viewport, cache/repository, agent SSE flows.
|
||||
4. Keep docs/protocol/frontend mappings aligned for API-contract changes.
|
||||
|
||||
---
|
||||
|
||||
## Real File Path Examples
|
||||
|
||||
- Lint/static analysis configuration:
|
||||
- `apps/analysis_options.yaml`
|
||||
- `apps/pubspec.yaml` (dev dependencies: `flutter_test`, `bloc_test`, `mocktail`)
|
||||
- Test suites for high-risk modules:
|
||||
- `apps/test/app/router/app_router_redirect_test.dart`
|
||||
- `apps/test/core/chat/ag_ui_service_test.dart`
|
||||
- `apps/test/data/cache/cached_repository_test.dart`
|
||||
- Logging usage examples:
|
||||
- `apps/lib/features/auth/presentation/bloc/auth_bloc.dart`
|
||||
- `apps/lib/features/auth/presentation/cubits/login_cubit.dart`
|
||||
- `apps/lib/features/settings/presentation/cubits/automation_jobs_cubit.dart`
|
||||
|
||||
---
|
||||
|
||||
## Review Checklist
|
||||
|
||||
1. **Layering and ownership**
|
||||
- No feature business logic moved into shared `data/**` infra.
|
||||
2. **Error handling**
|
||||
- Exceptions are either propagated or converted to typed user-safe errors.
|
||||
- Catch branches include context logging where actionable.
|
||||
3. **Contract alignment**
|
||||
- If API/error/event contracts changed, protocol docs and mapping updates are in the same change.
|
||||
4. **Regression coverage**
|
||||
- Add/adjust tests for changed behavior in critical flows.
|
||||
|
||||
---
|
||||
|
||||
## Anti-patterns (with evidence)
|
||||
|
||||
- Error swallowing branches that silently downgrade behavior.
|
||||
- Existing examples to avoid extending:
|
||||
- `apps/lib/app/di/injection.dart` refresh callback catch returns `false`.
|
||||
- `apps/lib/core/chat/ag_ui_service.dart` malformed SSE payload parse catch ignores payload.
|
||||
- Feature code bypassing shared feedback/loading primitives.
|
||||
- Project standard primitives exist in `apps/lib/shared/widgets/toast/`, `apps/lib/shared/widgets/banner/`, `apps/lib/shared/widgets/app_loading_indicator.dart`.
|
||||
- Protocol changes implemented only in one layer.
|
||||
- Contract source of truth is under `docs/protocols/**` and must stay synchronized.
|
||||
|
||||
---
|
||||
|
||||
## Uncertainties / Gaps
|
||||
|
||||
- The repository does not currently enforce all frontend rules via CI (for example, no strict automated checker for protocol-mapper parity).
|
||||
- `analysis_options.yaml` is currently close to Flutter defaults; stricter lint rules may still be introduced incrementally.
|
||||
Reference in New Issue
Block a user