Depends on: none Add the core types and pure functions the rest of the read-only aggregator builds on — no I/O, no STORE calls, no providers yet. - `WorkItem`, `Ticket`, `Comment`, `Person`, `PersonRef`, `ProjectScope`, `Provider` types - `normalizeKey` / `extractKey` - `resolvePerson` - grouping (`WorkItem[]` → `Ticket[]` by key) + `deriveStatus` See `TASK_MANAGER_INTEGRATION.md` §1–§4 for the exact shapes and the `deriveStatus`/`extractKey` logic to implement. **Acceptance criteria** - [ ] All types compile, exported from one module - [ ] `extractKey` covers all three sources (`jira`, `github`, `discord`) - [ ] `deriveStatus` covers the merged/open/fallback-to-jira cases - [ ] Unit tests against fixture `WorkItem[]` arrays (no real STORE data needed for this issue)
Activity