- Restore forwardedItems/lastTeamItemByGroup/newItems to ephemeral
table (code depends on them, stage G decides fate)
- Note grokChat also needs apiGetChat wrapper (bot.ts:1222)
- Add state.ts deletion to stage B
- Add config/CLI arg rename table to stage D
- Expand stage G with specific maps, messages.ts templates, formatting
- Fix stage H: 232 existing tests (not zero), split into existing
coverage and new tests to add
- Mark A (Haskell API + TS wrappers) as done with PR link
- Add B: switch to typed API + define sum types
- Add D: abstract agent architecture (pluggable AI provider)
- Add G: notification & formatting cleanup
- Reorder: B → C → D → E → F → G → H
(typed API → persistence → agent abstraction → robustness →
regular contacts → notification cleanup → tests)