# TODO Classification

**Purpose:** Classify all TODOs/FIXMEs/HACKs into actionable categories  
**Owner:** Development Team  
**Last Updated:** 2025-12-23  
**Status:** active

---

## Classification Categories

### Must Ship (Critical)
**Definition:** Items that affect correctness, rate-limits, TTL, scheduling, or core functionality. Must be completed before production release.

**Action:** Create GitHub issues, assign milestones, prioritize in sprint planning.

### Nice-to-Have (Enhancement)
**Definition:** Performance metrics, statistics, diagnostics, or quality-of-life improvements. Non-blocking for core functionality.

**Action:** Add to backlog, prioritize based on user feedback and metrics.

### Future (Phase 2)
**Definition:** Planned features or architectural improvements that are explicitly deferred. Not wired into current runtime code paths.

**Action:** Move behind feature flags, document in planning docs, or clearly mark as "not implemented yet".

---

## TODO Inventory

**Total TODOs Found:** 34

### Must Ship (Critical) - 6 items

These affect correctness, rate-limits, TTL, or core functionality:

1. **`ios/Plugin/DailyNotificationRollingWindow.swift:299`** - `return 0 // TODO: Implement actual counting logic`
   - **Impact:** Rolling window rate limiting not functional
   - **Priority:** HIGH - Affects rate limiting correctness
   - **Action:** Create issue, implement counting logic

2. **`ios/Plugin/DailyNotificationRollingWindow.swift:317`** - `return 0 // TODO: Implement actual counting logic`
   - **Impact:** Rolling window rate limiting not functional
   - **Priority:** HIGH - Affects rate limiting correctness
   - **Action:** Create issue, implement counting logic

3. **`ios/Plugin/DailyNotificationRollingWindow.swift:335`** - `return [] // TODO: Implement actual retrieval logic`
   - **Impact:** Rolling window retrieval not functional
   - **Priority:** HIGH - Affects rate limiting correctness
   - **Action:** Create issue, implement retrieval logic

4. **`ios/Plugin/DailyNotificationScheduler.swift:148`** - `// TODO: Implement TTL validation`
   - **Impact:** TTL validation missing, could cause stale content delivery
   - **Priority:** HIGH - Affects content freshness
   - **Action:** Create issue, implement TTL validation

5. **`ios/Plugin/DailyNotificationDatabase.swift:218`** - `// TODO: Implement database persistence`
   - **Impact:** Database persistence not implemented
   - **Priority:** CRITICAL - Core functionality missing
   - **Action:** Create issue, implement persistence

6. **`ios/Plugin/DailyNotificationDatabase.swift:229`** - `// TODO: Implement database deletion`
   - **Impact:** Database deletion not implemented
   - **Priority:** HIGH - Core functionality missing
   - **Action:** Create issue, implement deletion

7. **`ios/Plugin/DailyNotificationDatabase.swift:237`** - `// TODO: Implement database clearing`
   - **Impact:** Database clearing not implemented
   - **Priority:** MEDIUM - Utility functionality
   - **Action:** Create issue, implement clearing

### Nice-to-Have (Enhancement) - 2 items

Performance metrics, statistics, diagnostics:

1. **`ios/Plugin/DailyNotificationPerformanceOptimizer.swift:179`** - `// TODO: Phase 2 - Implement database statistics`
   - **Impact:** Missing performance diagnostics
   - **Priority:** LOW - Diagnostic feature
   - **Action:** Add to backlog

2. **`ios/Plugin/DailyNotificationPerformanceOptimizer.swift:187`** - `// TODO: Phase 2 - Implement metrics recording`
   - **Impact:** Missing performance metrics
   - **Priority:** LOW - Diagnostic feature
   - **Action:** Add to backlog

### Future (Phase 2/3) - 19 items

Explicitly deferred features, not wired into current runtime:

1. **Phase 2 CoreData Integration (8 items):**
   - History with CoreData
   - Callback system with CoreData
   - Callback registration/unregistration/retrieval
   - Content cache retrieval/clearing
   - History retrieval
   - Health status

2. **Phase 2 Fetcher Integration (3 items):**
   - `fetcher.scheduleFetch(fetchTime)`
   - `fetcher.scheduleImmediateFetch()`
   - Fetcher instance addition

3. **Phase 2 State Management (3 items):**
   - Rolling window maintenance
   - TTL validation (in StateActor)
   - TTL enforcer validation call

4. **Phase 3 Features (2 items):**
   - ActiveDidIntegration configuration
   - JWT-signed fetcher replacement

5. **Other Phase 2 (3 items):**
   - DeliveryStatus property addition
   - LastDeliveryAttempt property addition
   - Track notify execution

### TypeScript Stubs - 3 items

iOS-specific initialization stubs (expected, not critical):

1. **`ios/Plugin/index.ts:26`** - `// TODO: Implement iOS-specific initialization`
2. **`ios/Plugin/index.ts:37`** - `// TODO: Implement iOS-specific permission check`
3. **`ios/Plugin/index.ts:52`** - `// TODO: Implement iOS-specific permission request`

**Note:** These are in TypeScript stub files and may be intentional placeholders.

---

## Summary

- **Must Ship:** 7 items (rolling window logic, TTL validation, database operations)
- **Nice-to-Have:** 2 items (performance metrics/statistics)
- **Future (Phase 2/3):** 19 items (explicitly deferred features)
- **TypeScript Stubs:** 3 items (iOS-specific stubs, may be intentional)
- **Android:** 0 items found (all TODOs are in iOS code)

## Next Steps

1. ✅ Complete TODO inventory scan
2. ✅ Classify each TODO into one of the three categories
3. **Create GitHub issues for "Must Ship" items** (7 issues needed)
4. **Move "Phase 2" items to planning docs** or behind feature flags
5. **Update code comments** to reflect classification and link to issues
6. **Document Phase 2 features** in a dedicated planning document

---

**See also:**
- [Feedback Response Plan](./FEEDBACK-RESPONSE-PLAN.md) — Overall action plan
- [System Invariants](../SYSTEM_INVARIANTS.md) — Enforced invariants

