diff --git a/.planning/ROADMAP.md b/.planning/ROADMAP.md index 0614963..7a24814 100644 --- a/.planning/ROADMAP.md +++ b/.planning/ROADMAP.md @@ -16,6 +16,7 @@ Decimal phases appear between their surrounding integers in numeric order. - [x] **Phase 2: Backend Services** - Health probers, alert trigger, email sender, analytics collector, scheduler, retention cleanup (completed 2026-02-24) - [x] **Phase 3: API Layer** - Admin-gated routes exposing all services, instrumentation hooks in existing processors (completed 2026-02-24) - [x] **Phase 4: Frontend** - Admin dashboard page, health panel, processing metrics, alert notification banner (completed 2026-02-24) +- [ ] **Phase 5: Tech Debt Cleanup** - Config-driven admin email, consolidate retention cleanup, remove hardcoded defaults ## Phase Details @@ -86,11 +87,26 @@ Plans: ## Progress **Execution Order:** -Phases execute in numeric order: 1 → 2 → 3 → 4 +Phases execute in numeric order: 1 → 2 → 3 → 4 → 5 | Phase | Plans Complete | Status | Completed | |-------|----------------|--------|-----------| | 1. Data Foundation | 2/2 | Complete | 2026-02-24 | -| 2. Backend Services | 4/4 | Complete | 2026-02-24 | -| 3. API Layer | 2/2 | Complete | 2026-02-24 | -| 4. Frontend | 2/2 | Complete | 2026-02-25 | +| 2. Backend Services | 4/4 | Complete | 2026-02-24 | +| 3. API Layer | 2/2 | Complete | 2026-02-24 | +| 4. Frontend | 2/2 | Complete | 2026-02-25 | +| 5. Tech Debt Cleanup | 0/0 | Not Planned | — | + +### Phase 5: Tech Debt Cleanup +**Goal**: All configuration values are env-driven (no hardcoded emails), retention cleanup is consolidated into a single function, and deployment defaults use placeholders +**Depends on**: Phase 4 +**Requirements**: None (tech debt from v1.0 audit) +**Gap Closure**: Closes tech debt items from v1.0-MILESTONE-AUDIT.md +**Success Criteria** (what must be TRUE): + 1. Frontend `adminService.ts` reads admin email from `import.meta.env.VITE_ADMIN_EMAIL` instead of a hardcoded literal + 2. Only one retention cleanup function exists in `index.ts` (the model-layer `runRetentionCleanup`), with the pre-existing raw SQL `cleanupOldData` consolidated or removed + 3. `defineString('EMAIL_WEEKLY_RECIPIENT')` default in `index.ts` uses a placeholder (not a personal email address) +**Plans:** 0 plans + +Plans: +- [ ] TBD (run /gsd:plan-phase 5 to break down) diff --git a/.planning/STATE.md b/.planning/STATE.md index 2065024..f26d2ab 100644 --- a/.planning/STATE.md +++ b/.planning/STATE.md @@ -5,14 +5,14 @@ See: .planning/PROJECT.md (updated 2026-02-24) **Core value:** When something breaks — an API key expires, a service goes down, a credential needs reauthorization — the admin knows immediately and knows exactly what to fix. -**Current focus:** Phase 4 — Frontend +**Current focus:** Phase 5 — Tech Debt Cleanup ## Current Position -Phase: 4 of 4 (Frontend) -Plan: 2 of 2 in current phase -Status: Complete (pending visual verification at checkpoint) -Last activity: 2026-02-24 — Completed 04-02 (AlertBanner and AdminMonitoringDashboard wired into App.tsx Dashboard) +Phase: 5 of 5 (Tech Debt Cleanup) +Plan: 0 of 0 in current phase +Status: Not planned yet +Last activity: 2026-02-25 — Phase 5 added for tech debt closure from v1.0 audit Progress: [██████████] 100%