30 lines
2.4 KiB
Markdown
30 lines
2.4 KiB
Markdown
# Build Execution Ledger
|
||
|
||
## Active Target
|
||
- **Current Milestone:** Phase 3: Nutrition, Protein Target Tracking & HealthGateway Sync
|
||
- **Status:** Phase 2 Complete
|
||
|
||
## Phase Checklist
|
||
- [x] Phase 1: Foundation & Identity (Passwordless SSO & Encrypted Drift DB)
|
||
- [x] Phase 2: Medication Domain, Injection Rotation, Serum Modeling
|
||
- [ ] Phase 3: Nutrition, Protein Target Tracking, HealthGateway Sync
|
||
- [ ] Phase 4: Recipe Web Scraper Engine & Meal Planning Calendar
|
||
- [ ] Phase 5: Pantry Delta Engine & Auto-Shopping Generator
|
||
- [ ] Phase 6: Hardening, Native Desktop/Web Polish, CI/CD
|
||
|
||
## Phase 2 Deliverables (2026-10-16)
|
||
- [x] Domain: `DoseEntry` entity, 12-quadrant `InjectionSite` rotation model, `Glp1Compound` value object (Sema 168h / Tirze 120h / Lira 13h), `IMedicationRepository` contract.
|
||
- [x] Domain: `CalculateSerumLevel` use case implementing `C(t) = Σ D_i · 0.5^((t − t_i)/t_half)`.
|
||
- [x] Data: injection-history CRUD on `AppDatabase` + drift-backed `MedicationRepository` (record ↔ entity mapping).
|
||
- [x] Presentation: `MedicationController` (Riverpod StateNotifier) with serum estimation, least-recently-used site rotation, and reminder scheduling; refactored `MedicationScreen` (serum card, rotation suggestion, interactive log dialog, history with delete).
|
||
- [x] Platform: `INotificationService` / `PlatformNotificationService` (flutter_local_notifications 17.x; Android/iOS/macOS scheduled reminders, graceful no-op on Web/Windows/Linux); Android boot-receiver manifest entries; `timezone` dependency added.
|
||
- [x] Regression fix: `SupabaseAuthService` now resolves its client lazily (baseline widget test no longer throws when Supabase is uninitialized).
|
||
- [x] Tests: 33 new unit/widget-fake tests (PK calculator, rotation policy, repository w/ in-memory drift, controller); baseline smoke test green.
|
||
|
||
## Post-Phase-2 Additions
|
||
- [x] Development auth bypass (2026-10-16): debug-only "Continue Without Signing In" button on the login screen (`kDebugMode`-gated, in-memory `devAuthBypassProvider`) lets reviewers enter the app without a Supabase session; the router guard honors the flag and the shell shows an orange "Development mode - not signed in" banner while active. Covered by `test/features/auth/dev_auth_bypass_test.dart` (3 tests).
|
||
|
||
## Active Verification Gates
|
||
- [x] `flutter pub run build_runner build --delete-conflicting-outputs`
|
||
- [x] `flutter analyze` (Zero issues)
|
||
- [x] `flutter test` (37/37 passing) |