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
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,ProvidertypesnormalizeKey/extractKeyresolvePersonWorkItem[]→Ticket[]by key) +deriveStatusSee
TASK_MANAGER_INTEGRATION.md§1–§4 for the exact shapes and thederiveStatus/extractKeylogic to implement.Acceptance criteria
extractKeycovers all three sources (jira,github,discord)deriveStatuscovers the merged/open/fallback-to-jira casesWorkItem[]arrays (no real STORE dataneeded for this issue)