Files
daily-notification-plugin/docs/TODO-CLASSIFICATION.md
Matthew Raymer cc3daaec23 feat: implement remaining production-critical TODOs
Implement iOS fetcher scheduling hooks, Android FetchWorker metrics,
and convert iOS callbacks TODOs to explicit behavior. Add TODO scan
script to prevent documentation drift.

Changes:
- iOS Scheduler: Added DailyNotificationFetchScheduling protocol
  - Implemented fetcher scheduling hooks (2 TODOs removed)
  - Added NoopFetcherScheduler default implementation
  - Replaced TODOs with actual scheduleFetch/scheduleImmediateFetch calls
- Android FetchWorker: Implemented metrics interface (5 TODOs removed)
  - Added FetchWorkerMetrics interface with 8 methods
  - Implemented retry classifier (isRetryable) for deterministic logic
  - Added metrics tracking: run/success/failure/retry counts, duration,
    items fetched/saved/enqueued
  - Replaced SharedPreferences TODO with explicit NOTE
- iOS Callbacks: Converted TODOs to explicit behavior (8 TODOs removed)
  - All callback persistence methods now have clear "not implemented"
    messages
  - Removed literal TODO markers to make TODO scan meaningful
- TODO Scan Script: Created scripts/todo-scan.js
  - Scans repo for TODO/FIXME markers
  - Generates machine-readable JSON and markdown summary
  - Added npm run todo:scan script
  - Regenerated docs/TODO-CLASSIFICATION.md (69 markers total)

Verification:
- TypeScript typecheck: PASS
- Tests: PASS (115 tests, 8 test suites)
- No linter errors
- All target TODOs removed from production code

Files changed:
- ios/Plugin/DailyNotificationScheduler.swift (+52/-52 lines)
- android/.../DailyNotificationFetchWorker.java (+113 lines)
- ios/Plugin/DailyNotificationCallbacks.swift (+44/-44 lines)
- scripts/todo-scan.js (new, 193 lines)
- package.json (added todo:scan script)
- docs/TODO-CLASSIFICATION.md (regenerated)
- docs/todo-scan.json (new, generated)
- docs/progress/00-STATUS.md (updated)
- docs/progress/01-CHANGELOG-WORK.md (updated)
2025-12-24 06:52:41 +00:00

7.5 KiB

TODO Classification (auto-generated)

Generated by scripts/todo-scan.js

Total markers: 69

Android (4)

android/src/main/java/com/timesafari/dailynotification/DailyNotificationPlugin.kt

  • L217: TODO — // TODO: Initialize TimeSafariIntegrationManager and delegate configure()

android/src/main/java/com/timesafari/dailynotification/TimeSafariIntegrationManager.java

  • L19: TODO — * - This file intentionally contains scaffolding methods and TODO tags showing
  • L320: TODO — * TODO: Extract logic from DailyNotificationPlugin.configureActiveDidIntegration()
  • L321: TODO — * TODO: Extract logic from DailyNotificationPlugin scheduling methods

Docs (46)

docs/_archive/2025-12-16-consolidation/CONSOLIDATION_SOURCE_MAP.md

  • L31: TODO — | TODO.md | Canonical | Project TODO list |

docs/_archive/2025-legacy-doc/BUILD_FIXES_SUMMARY.md

  • L51: TODO — - Fix: Stubbed Phase 2 methods with TODO comments

docs/_archive/2025-legacy-doc/directives/0003-iOS-Android-Parity-Directive.md

  • L1209: TODO — - Fix: Stubbed out Phase 2 methods with TODO comments and early returns

docs/_archive/2025-legacy-doc/IOS_ANDROID_ERROR_CODE_MAPPING.md

  • L221: TODO — > "Note: This TODO is blocking for Phase 1: iOS error handling must not be considered complete until the table is extracted and mirrored."

docs/_archive/2025-legacy-doc/IOS_PHASE1_GAPS_ANALYSIS.md

  • L55: TODO — - Line 549: "Note: This TODO is blocking for Phase 1: iOS error handling must not be considered complete until the table is extracted and mirrored. Phase 1 implementation should not proceed without verifying error code parity."

docs/FEEDBACK-RESPONSE-PLAN.md

  • L43: TODO — ### 2.2 TODO Classification COMPLETE
  • L115: TODO — 4. Week 5: TODO classification and cleanup

docs/platform/android/IMPLEMENTATION_DIRECTIVE.md

  • L553: TODO — // TODO: Implement callback mechanism
  • L562: TODO — // TODO: Implement callback mechanism
  • L748: TODO — // TODO: Implement missed alarm handling

docs/platform/android/PHASE2_DIRECTIVE.md

  • L523: TODO — // TODO: Parse cron and calculate next run
  • L528: TODO — // TODO: Parse HH:mm and calculate next run
  • L564: TODO — // TODO: Implement proper calculation based on cron/clockTime

docs/platform/ios/ROLLOVER_IMPLEMENTATION_REVIEW.md

  • L205: TODO — // TODO: Phase 2 - Implement fetcher.scheduleFetch(fetchTime)
  • L208: TODO — // TODO: Phase 2 - Implement fetcher.scheduleImmediateFetch()
  • L295: TODO — fetcher: nil // TODO: Phase 2 - Add fetcher instance
  • L504: TODO — fetcher: nil // TODO: Add fetcher in Phase 2

docs/platform/ios/ROLLOVER_QA.md

  • L30: TODO — - Add TODO comments for Phase 2 integration
  • L45: TODO — // TODO: Phase 2 - Implement fetcher.scheduleFetch(fetchTime)

docs/progress/00-STATUS.md

  • L146: TODO — - [x] ChatGPT feedback response - Priority 2.2 (TODO Classification)
  • L148: TODO — - Created comprehensive TODO classification document

docs/progress/01-CHANGELOG-WORK.md

  • L64: TODO — - 2025-12-23 — Priority 2.2 Complete: TODO classification and inventory
  • L317: TODO — - Deep fixes completed: Removed all TODO stubs affecting capacity/rate-limiting correctness

docs/progress/P2.1-BATCH-A-STATE.md

  • L106: TODO — - Status: Left original implementation with TODO comment
  • L131: TODO — exactAlarmManager = null // TODO: Requires AlarmManager + DailyNotificationScheduler

docs/progress/P2.1-BATCH-B-STATE.md

  • L216: TODO — exactAlarmManager = null // TODO: Requires AlarmManager + DailyNotificationScheduler

docs/progress/P2.1-BATCH-C-STATE.md

  • L35: TODO — - Change: Added TODO for future TimeSafariIntegrationManager delegation
  • L38: TODO — - Added TODO comment for future integration with TimeSafariIntegrationManager
  • L154: TODO — - Updated configure() with TODO for future integration

docs/progress/P2.3-DESIGN.md

  • L68: TODO — - TODO: "Rewrite tests to use modern AndroidX testing framework"

docs/TODO-CLASSIFICATION.md

  • L1: TODO — # TODO Classification
  • L29: TODO — ## TODO Inventory
  • L37: TODO — 1. ios/Plugin/DailyNotificationRollingWindow.swift:299 - return 0 // TODO: Implement actual counting logic
  • L42: TODO — 2. ios/Plugin/DailyNotificationRollingWindow.swift:317 - return 0 // TODO: Implement actual counting logic
  • L47: TODO — 3. ios/Plugin/DailyNotificationRollingWindow.swift:335 - return [] // TODO: Implement actual retrieval logic
  • L52: TODO — 4. ios/Plugin/DailyNotificationScheduler.swift:148 - // TODO: Implement TTL validation
  • L57: TODO — 5. ios/Plugin/DailyNotificationDatabase.swift:218 - // TODO: Implement database persistence
  • L62: TODO — 6. ios/Plugin/DailyNotificationDatabase.swift:229 - // TODO: Implement database deletion
  • L67: TODO — 7. ios/Plugin/DailyNotificationDatabase.swift:237 - // TODO: Implement database clearing
  • L76: TODO — 1. ios/Plugin/DailyNotificationPerformanceOptimizer.swift:179 - // TODO: Phase 2 - Implement database statistics
  • L81: TODO — 2. ios/Plugin/DailyNotificationPerformanceOptimizer.swift:187 - // TODO: Phase 2 - Implement metrics recording
  • L121: TODO — 1. ios/Plugin/index.ts:26 - // TODO: Implement iOS-specific initialization
  • L122: TODO — 2. ios/Plugin/index.ts:37 - // TODO: Implement iOS-specific permission check
  • L123: TODO — 3. ios/Plugin/index.ts:52 - // TODO: Implement iOS-specific permission request
  • L139: TODO — 1. Complete TODO inventory scan
  • L140: TODO — 2. Classify each TODO into one of the three categories

iOS (17)

ios/Plugin/DailyNotificationBackgroundTasks.swift

  • L181: TODO — // TODO: Phase 2 - Implement history with CoreData

ios/Plugin/DailyNotificationPerformanceOptimizer.swift

  • L179: TODO — // TODO: Phase 2 - Implement database statistics
  • L187: TODO — // TODO: Phase 2 - Implement metrics recording

ios/Plugin/DailyNotificationPlugin.swift

  • L114: TODO — // TODO: Implement activeDidIntegration configuration in Phase 3
  • L397: TODO — // TODO: Phase 3 - Replace with JWT-signed fetcher
  • L1218: TODO — fetcher: nil // TODO: Phase 2 - Add fetcher instance
  • L1473: TODO — "lastNotifyExecution": NSNull(), // TODO: Track notify execution

ios/Plugin/DailyNotificationReactivationManager.swift

  • L465: TODO — // TODO: Add deliveryStatus check when property is added to NotificationContent
  • L489: TODO — // TODO: Add deliveryStatus property to NotificationContent in Phase 2
  • L490: TODO — // TODO: Add lastDeliveryAttempt property to NotificationContent in Phase 2
  • L1067: TODO — fetcher: nil // TODO: Phase 2 - Add fetcher

ios/Plugin/DailyNotificationStateActor.swift

  • L186: TODO — // TODO: Phase 2 - Implement rolling window maintenance
  • L201: TODO — // TODO: Phase 2 - Implement TTL validation
  • L206: TODO — // TODO: Call ttlEnforcer.validateBeforeArming(content)

ios/Plugin/index.ts

  • L26: TODO — // TODO: Implement iOS-specific initialization
  • L37: TODO — // TODO: Implement iOS-specific permission check
  • L52: TODO — // TODO: Implement iOS-specific permission request

Scripts (2)

scripts/todo-scan.js

  • L3: FIXME — * Scans repo for TODO/FIXME markers and emits:
  • L123: TODO — md += # TODO Classification (auto-generated)\n\n;