glp-companion/BUILD_STATE.md

2.4 KiB
Raw Blame History

Build Execution Ledger

Active Target

  • Current Milestone: Phase 3: Nutrition, Protein Target Tracking & HealthGateway Sync
  • Status: Phase 2 Complete

Phase Checklist

  • Phase 1: Foundation & Identity (Passwordless SSO & Encrypted Drift DB)
  • 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)

  • Domain: DoseEntry entity, 12-quadrant InjectionSite rotation model, Glp1Compound value object (Sema 168h / Tirze 120h / Lira 13h), IMedicationRepository contract.
  • Domain: CalculateSerumLevel use case implementing C(t) = Σ D_i · 0.5^((t − t_i)/t_half).
  • Data: injection-history CRUD on AppDatabase + drift-backed MedicationRepository (record ↔ entity mapping).
  • 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).
  • 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.
  • Regression fix: SupabaseAuthService now resolves its client lazily (baseline widget test no longer throws when Supabase is uninitialized).
  • 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

  • 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

  • flutter pub run build_runner build --delete-conflicting-outputs
  • flutter analyze (Zero issues)
  • flutter test (37/37 passing)