The oversight primitive. Humans run work on a kanban of discrete, addressable tickets — not a flat activity log (an infinite, indistinguishable stream you can't point at or interrogate). Every unit of agent work should be a Ticket on the board.
The Ticket (three properties — flat, no epics for now)
- Granular. One ticket per unit of work. Deliberately no parent/epic hierarchy for now (keep it simple — revisit only if a real need appears). Fine-grained is fine; the board just holds many tickets.
- Status / lifecycle. Flows through the kanban columns (what tasks already do).
- Reasoning. Each ticket carries why — the decision/audit — shown in the ticket, not buried in Data.
- Conversational. Open a ticket → a chat thread scoped to that ticket: ask why a decision was made, request changes, get more info. The agent answers with that ticket's reasoning + data as context.
What today's system lacks (verified)
AgentTask = {id,title,description,status,assignedBy,timestamps} — no structured reasoning, no per-ticket conversation. The board (lib/board.ts + BoardTab.tsx) already renders flat task cards, so granularity is free; the two new pieces are reasoning + the per-ticket thread.
Plan (no hierarchy → smaller)
- P1 — Reasoning on tickets. Add a
reasoning field to the task model; BoardTab shows it in the card/detail. (Board already renders flat tickets, so this is the only structural change.)
- P2 — Per-ticket conversation. Open a ticket → a scoped chat thread; agent answers with the ticket's reasoning/data as context.
- P3 — Agents emit tickets. e.g. the lead-finder creates one ticket per business (carrying its 5-step
audit as reasoning). The board fills with real, interrogable tickets.
Supersedes the flat "Activity" tab (PR 5af86ed) as the oversight surface. First-party platform primitive (tasks live in the AgentDO + lib/board.ts).
The oversight primitive. Humans run work on a kanban of discrete, addressable tickets — not a flat activity log (an infinite, indistinguishable stream you can't point at or interrogate). Every unit of agent work should be a Ticket on the board.
The Ticket (three properties — flat, no epics for now)
What today's system lacks (verified)
AgentTask={id,title,description,status,assignedBy,timestamps}— no structuredreasoning, no per-ticket conversation. The board (lib/board.ts+BoardTab.tsx) already renders flat task cards, so granularity is free; the two new pieces are reasoning + the per-ticket thread.Plan (no hierarchy → smaller)
reasoningfield to the task model;BoardTabshows it in the card/detail. (Board already renders flat tickets, so this is the only structural change.)auditas reasoning). The board fills with real, interrogable tickets.Supersedes the flat "Activity" tab (PR 5af86ed) as the oversight surface. First-party platform primitive (tasks live in the AgentDO +
lib/board.ts).