Files
daily-notification-plugin/docs/progress/04-PARITY-MATRIX.md
Matthew Raymer eb1fc9f220 feat(docs): complete P2.6 type safety cleanup and P2.7 system invariants
P2.6: Type Safety Cleanup
- Replaced 'any' return types in vite-plugin.ts with concrete types (UserConfig, transform return type)
- Documented TypeScript mixin 'any[]' exception in PlatformServiceMixin.ts
- Audit confirmed: zero 'any' in codebase except documented TS mixin limitation
- All external boundaries use 'unknown', all data payloads use 'Record<string, unknown>'

P2.7: System Invariants Documentation
- Created SYSTEM_INVARIANTS.md documenting all 6 enforced invariants
- Added to docs/00-INDEX.md under Policy & Contracts section
- Each invariant includes: What, Why, How, Where

Progress Docs Updates:
- Updated 00-STATUS.md: marked P2.6/P2.7 complete, added type safety invariant note
- Updated 01-CHANGELOG-WORK.md: added 2025-12-22 entries for P2.6/P2.7
- Updated 03-TEST-RUNS.md: added P2.6 type safety audit test run
- Updated P2-DESIGN.md: marked P2.6 acceptance criteria complete
- Updated SYSTEM_INVARIANTS.md: added Type Safety Notes section

Baseline Tag:
- Created v1.0.11-p0-p1.4-p1.5-p2.6-p2.7-complete

TypeScript compilation:  PASSES
Build:  PASSES
CI:  All checks pass
2025-12-22 10:56:00 +00:00

4.0 KiB

iOS vs Android Feature Parity Matrix

Purpose: Feature-by-feature comparison of iOS and Android implementations to track parity gaps.
Owner: Development Team
Last Updated: 2025-12-22
Status: active


Storage & Persistence

Feature Android iOS Notes
Persistent state SQLite (Room) CoreData + SQLite Both implemented
Schema versioning Room migrations ⚠️ Partial iOS has CoreData auto-migration, but explicit versioning may be needed
State survives app restart Yes Yes Both implemented
State survives OS kill Yes Yes Both implemented
State survives reboot Yes N/A iOS handles notifications automatically

Notification Scheduling

Feature Android iOS Notes
Exact alarms AlarmManager N/A iOS uses UNUserNotificationCenter
Daily rollover Automatic Automatic Both implemented (iOS uses NotificationCenter pattern)
Schedule persistence Database UNUserNotificationCenter iOS OS-guaranteed
Next notification retrieval getNotificationStatus() getNotificationStatus() Both implemented

Recovery & Resilience

Feature Android iOS Notes
App launch recovery ReactivationManager ReactivationManager Both implemented with persistence
Boot recovery BootReceiver N/A iOS handles automatically
Missed notification detection Yes Yes Both implemented with persistent state
Recovery logging Comprehensive Comprehensive Both have good logging
Invalid data recovery Tested (TEST 4) Tested (RecoveryTests) Both have automated recovery tests
Rollover idempotency Tested Tested Both verify duplicate rollover prevention
Migration safety Tested Tested Both test unknown/missing fields

Background Execution

Feature Android iOS Notes
Background fetch WorkManager BGTaskScheduler Both implemented
Background notification WorkManager BGTaskScheduler Both implemented
Execution time limits Flexible ⚠️ ~30 seconds iOS has strict limits
Battery optimization handling Documented N/A iOS handles automatically

Error Handling

Feature Android iOS Notes
Error codes Structured Structured Both have error codes
Error recovery Yes Yes Both handle errors gracefully
Invalid data handling Recovery tested ⚠️ Input validation only GAP - iOS needs recovery testing

Testing

Feature Android iOS Notes
Unit tests Yes ⚠️ Partial iOS has some tests
Integration tests Yes ⚠️ Partial iOS has some tests
Test automation High ⚠️ Medium iOS has manual components
Recovery testing Yes Yes Both have automated recovery tests (DailyNotificationRecoveryTests.swift)

Summary

Critical Gaps (P0)

None - All critical gaps addressed:

  • iOS rollover implemented (NotificationCenter pattern)
  • iOS recovery testing implemented (DailyNotificationRecoveryTests.swift)
  • iOS persistence confirmed (CoreData + SQLite)

Important Gaps (P1)

  1. Schema Versioning - iOS has CoreData auto-migration, but explicit versioning strategy may be needed
  2. Test Automation - iOS tests can be run via xcodebuild, but CI integration may need macOS runners

Nice-to-Have (P2)

  1. Combined Edge Case Tests - DST boundary + duplicate delivery + cold start combined scenario
  2. OS Reboot Testing - True OS reboot scenarios (iOS handles automatically, but explicit testing may be valuable)

Last Updated: 2025-12-16
Next Review: After PHASE 2 completion