PRD-72: Activity Command Centre v2

Version: 2.0 Status: Draft Priority: P1 Author: Gar Kavanagh + Auto CTO Created: 2026-03-07 Updated: 2026-03-11 Dependencies: PRD-10 (Workflow Engine — COMPLETE), PRD-55 (Agent Heartbeats — COMPLETE), PRD-06 (Monitoring & Analytics — COMPLETE), PRD-76 (Agent Reporting — COMPLETE), PRD-77 (Agent Self-Scheduling — IN PROGRESS) Branch: feat/activity-command-centre-v2 Inspiration: crshdn/mission-controlarrow-up-right — Kanban patterns, @hello-pangea/dnd, SSE real-time


Executive Summary

The Activity page is the nerve centre of Automatos — but v1 was a list-based feed that required clicking through multiple pages to understand what's happening. Users couldn't track task progress, manage workload, review agent output, or see their schedule without navigating 3-4 different views.

v2 rebuilds Activity as a five-tab operational dashboard that replaces the need for Jira, combines Feed + Reports into a Kanban board, adds a Calendar for scheduled tasks, enhances Memory with a daily journal view, and introduces a Projects page for multi-agent initiatives.

What's Changing

v1 Tab
v2 Tab
What Changed

Dashboard

Summary

Rename + new analytics widgets (status donut, priority breakdown, workload, types of work)

Feed

Board

List → Kanban board with drag-and-drop, agent sidebar, unified task viewer

Reports

(merged into Board)

Reports are now viewable inside task cards at Review/Done stages

Memory

Memory

Enhanced: two-panel layout, daily journal, organized by day/agent/type

Missions

Projects

Evolved from placeholder into project cards with progress tracking

(new)

Calendar

Full scheduler view: always-running tasks, week grid, next-up list

What's New (Cross-Cutting)

  • Global Search (Cmd+K) — spotlight-style overlay searching tasks, memories, documents, agents

  • SSE real-time updates — Board receives live task status changes via Server-Sent Events instead of polling

  • Unified Task Viewer — one slide-over component replaces separate Feed detail, Reports viewer, and Execution detail

What We're NOT Building

  • New execution engine (existing recipe executor + heartbeat service are sufficient)

  • Agent Zero / Orchestrator rename (separate effort, out of scope)

  • Chat entries on the Board (chat history stays at /chat)

  • Analytics replacement (Analytics page stays for cost/performance trends)


1. Naming Convention

User-Facing Terminology

UI displays "Task" — backend remains "Recipe". No backend rename.

Technical Concept
User-Facing Name
Icon
Description

Recipe execution (single/multi-step)

Task

CheckSquare

A unit of work — one step or many

Agent heartbeat

Routine

RefreshCw

Recurring background check

Complex dynamic workflow

Project

FolderKanban

Multi-task initiative with progress tracking

Chat + tool calls

Chat

MessageCircle

Conversations (not shown on Board)

Task Status Labels (Board Columns)

Status
Column
Badge Colour
CSS Variable

inbox

Inbox

--muted

bg-muted/10 text-muted-foreground

assigned

Assigned

--agent

bg-[hsl(var(--agent))]/10 text-[hsl(var(--agent))]

in_progress

In Progress

--info

bg-[hsl(var(--info))]/10 text-[hsl(var(--info))]

review

Review

--warning

bg-[hsl(var(--warning))]/10 text-[hsl(var(--warning))]

done

Done

--success

bg-[hsl(var(--success))]/10 text-[hsl(var(--success))]

failed

Done (with error)

--destructive

bg-destructive/10 text-destructive

Priority Levels

Priority
Colour
Indicator

urgent

--destructive

Red dot / border

high

--warning

Amber badge

medium

--info

Blue badge

low

--muted

Gray badge


2. Design System Compliance

All components follow the established Automatos design language from globals.css. No custom colours or one-off styling.

Required Patterns

Pattern
Class / Token
Used By

Page header

<PageHeader> shared component

Title with gradient-text accent

Stat cards

<StatsBar> shared component

4-up hero stats, glass-card + card-glow

Tab navigation

<FilterTabs> shared component

Icon + label tabs, bg-secondary/40 backdrop-blur

Content cards

glass-card class

All card surfaces

Drill-down panels

glass-panel class

Task viewer slide-over

Status badges

Semantic Badge variants

Using CSS variable palette above

Charts

Recharts with MODEL_COLORS palette

Donut, bar charts on Summary

Motion

framer-motion staggered entrance

initial → animate with delay: index * 0.08

Empty states

Centered icon + two-line text

Muted icon (30% opacity) + description

Loading

<Skeleton> matching card layout

Skeleton grid matching real content shape

Mobile

Reduced backdrop-blur(8px)

Per globals.css @media (max-width: 767px)

Typography Scale

  • Page title: text-2xl md:text-3xl font-bold

  • Stat value: text-2xl font-bold leading-none

  • Stat label: text-sm text-muted-foreground

  • Card title: CardTitle with icon + gap-2

  • Table header: text-[11px] font-medium text-muted-foreground uppercase tracking-wider

  • Body text: text-sm

  • Timestamps: text-xs text-muted-foreground

Colour Semantics (DO NOT hardcode hex)


3. Page Layout

Route

Tab Structure

Deep-link support: ?tab=board&task_id=123 opens Board with task viewer for that task.


4. Summary Tab (Default)

Renamed from "Dashboard". Draggable widget grid using react-grid-layout (already installed).

4.1 Existing Widgets (Keep)

Widget
Component
Description

Active Now

active-now-widget.tsx

Top 5 currently running tasks with progress bars

Schedule

schedule-widget.tsx

Week calendar dots + upcoming 5 items. Click "View All" → Calendar tab

Agent Reports

agent-reports-widget.tsx

Pinned agent report cards

Recent Activity

recent-activity-widget.tsx

Last 5 completed + 3 failed. Click "View All" → Board tab

4.2 New Widgets

Status Overview (Donut Chart)

  • Recharts PieChart with innerRadius for donut

  • Counts from Board data (GET /api/activity/board/stats)

  • Click segment → navigates to Board tab filtered by that status

  • Click "View all" → Board tab

Priority Breakdown (Bar Chart)

  • Recharts BarChart

  • Shows task count by priority level

  • Colour-coded bars using priority colours from Section 1

Types of Work (Horizontal Bar)

  • Shows distribution of work items by type

  • Horizontal stacked bars

Team Workload (Agent Distribution)

  • Horizontal bars per agent

  • Click agent row → Board filtered by that agent

4.3 Widget Grid

All 8 widgets rendered via react-grid-layout with drag-to-reorder. Layout persisted in localStorage (automatos:dashboard-layout). "Customize" toggle + "Reset Layout" button (existing pattern from v1).

Default layout (2-column on desktop):


5. Board Tab (Replaces Feed + Reports)

The centrepiece of v2. A Kanban board with agent sidebar, drag-and-drop task management, and a unified task viewer that replaces the separate Feed detail and Reports pages.

5.1 Layout

5.2 Agent Sidebar

Left panel showing all workspace agents:

  • Agent avatar, name, role badge (LEAD/INT/SPC), status dot

  • Click agent → filters board to show only that agent's tasks

  • Active filter shown as highlighted agent row

  • Click again to clear filter

  • Collapsible on mobile (hamburger toggle)

Data source: GET /api/agents?workspace_id=X (existing endpoint)

5.3 Board Columns

5 columns using @hello-pangea/dnd (fork of react-beautiful-dnd, actively maintained):

Column
Status
Header Colour
Description

Inbox

inbox

--muted

New tasks not yet assigned

Assigned

assigned

--agent

Assigned to an agent, waiting to start

In Progress

in_progress

--info

Currently executing

Review

review

--warning

Awaiting human or LLM review

Done

done

--success

Completed (success or failure)

Each column header shows: ● COLUMN NAME (count)

Columns are scrollable vertically. Cards within a column are ordered by priority (urgent first), then by updated_at DESC.

5.4 Board Card

Each task is a draggable card:

Card fields:

  • Task name (line-clamp-2)

  • Description snippet (line-clamp-2, text-sm text-muted-foreground)

  • Agent avatar + name (bottom-left)

  • Time ago (bottom-right)

  • Tags as pills (text-xs badges)

  • Priority indicator: left border colour or small dot next to title

  • Arrow button → opens Task Viewer

  • For "In Progress": mini progress bar showing step X of Y

Drag behaviour:

  • @hello-pangea/dnd <DragDropContext> wrapping the board

  • Each column is a <Droppable>

  • Each card is a <Draggable>

  • On drag end: optimistic UI update → PATCH /api/activity/tasks/{id}/status

  • On API failure: revert to previous position + toast error

  • Cards in "In Progress" with running backend status: draggable (user can force-move to Review/Done)

  • Cards in "Done" with completed status: draggable back to Inbox for re-run

5.5 Task Viewer (Slide-Over)

Replaces: activity-feed-item.tsx detail, report-viewer.tsx, execution-detail.tsx

Opens as a right slide-over panel when clicking a card's arrow button or double-clicking a card.

Content adapts based on the task's current column:

Inbox / Assigned View

  • Editable fields: assignee (agent dropdown), priority, due date, tags, review mode

  • "Start Task" moves to In Progress and triggers execution

In Progress View

  • Reuses internals from existing execution-detail.tsx

  • Live log streaming via SSE

  • Step pipeline with stage-completed, stage-active, stage-pending CSS classes

  • "Stop" button cancels execution

  • "Move to Review" manually advances (or auto-advances on completion)

Review View

  • Renders report content as markdown (reuses report-viewer.tsx internals)

  • Grade form with star rating + notes (reuses report-grade-form.tsx)

  • Review mode selector: Human / LLM / Auto

    • Human: requires manual approve/reject

    • LLM: another agent reviews and auto-approves/rejects based on quality threshold

    • Auto: moves to Done automatically on completion (no review step)

  • Reject sends back to Inbox with rejection notes

  • Approve moves to Done with grade saved

Done View

  • Full report content rendered

  • Execution metadata: duration, tokens, steps, trigger

  • Re-run creates a new execution of the same recipe

  • Download as markdown

  • Failed tasks show error message + stack trace in collapsible section

5.6 Creating Tasks

"New Task" button in Board header → opens existing create-recipe-modal.tsx:

  • 1-step recipe = simple task

  • N-step recipe = multi-step workflow

  • No backend changes needed — recipe model already supports both

Task can also be created by:

  • Agents spawning sub-tasks via platform_schedule_task tool (PRD-77)

  • QA agent adding bug-fix tasks to Inbox

  • Redis queue pushing new tasks (existing infrastructure)

5.7 Board Filters

Filter bar above the board:

  • Agent: multi-select dropdown of workspace agents

  • Priority: multi-select (Urgent/High/Medium/Low)

  • Type: Routine / Task (single-step) / Workflow (multi-step)

  • Date Range: Today / This Week / This Month / Custom

  • Search: instant filter by task name/description

Filters persist in URL query params for shareability.

5.8 Real-Time Updates (SSE)

Board uses Server-Sent Events instead of polling:

SSE Event Types:

Event
Payload
UI Effect

task_created

Full task object

Card appears in Inbox with log-slide-in animation

task_updated

{ id, status, agent_id, ... }

Card moves to new column with animation

task_progress

{ id, step_current, step_total, log_line }

Progress bar updates, log line appends

task_completed

{ id, status, duration, report_id }

Card moves to Review or Done

task_failed

{ id, error_message }

Card shows error badge, moves to Done

Fallback: If SSE connection drops, fall back to 60s polling via useActivityFeed() (existing hook). Reconnect SSE with exponential backoff (1s, 2s, 4s, max 30s).

Backend implementation:

  • New SSE endpoint in orchestrator/api/activity.py

  • Publishes events from: recipe executor, heartbeat service, manual status changes

  • Uses Redis pub/sub as event bus (existing Redis infrastructure)


6. Calendar Tab

Full-page scheduler view showing all of Automatos's scheduled and recurring tasks. Lets users verify what's running proactively, spot unwanted schedules, and click through to task details.

6.1 Layout

6.2 Three Sections

Always Running

  • Shows high-frequency routines (interval < 1 hour)

  • Pill badge: {name} • Every {interval}

  • Click → opens task viewer

Week Grid

  • 7-column day grid (Sun-Sat)

  • Task pills colour-coded per agent (consistent colours from agent config)

  • Shows task name (truncated) + scheduled time

  • Parsed from cron expressions in schedule_config

  • Current day column highlighted (today indicator)

  • Click pill → opens task viewer slide-over

Next Up

  • Sorted list of upcoming tasks by soonest

  • Shows task name + relative time ("In 30 min", "In 1 hours")

  • Colour-coded text matching agent colour

  • Click row → opens task viewer

6.3 Data Source

Extend existing useActivitySchedule() hook:

  • Already returns next_run_at, frequency, agent_name, agent_id

  • Add: cron expression parsing to plot recurring items on week grid

  • Add: "always running" filter for sub-hourly intervals

  • Endpoint: GET /api/activity/schedule?range=7d (existing)

6.4 View Toggle

  • Week (default): 7-day grid view

  • Today: single-day view with hourly timeline

  • Refresh button: re-fetches schedule data

6.5 Library Decision

Build custom (no external calendar library needed). The design is a simple week grid with pills — @fullcalendar is overkill. A CSS grid with mapped cron data is sufficient. If we later need month view or drag-to-reschedule, we can add @fullcalendar then.


7. Memory Tab

Two-panel layout inspired by daily journal apps. Browse and search through all of Automatos's memories, organized chronologically with rich content rendering.

7.1 Layout

7.2 Left Sidebar

  • Full-text search across all memories

  • Fix required: verify Mem0Client.search() POST fix merged from fix-memory branch

  • Results replace the journal list with search results, ranked by relevance score

  • Keyboard: Enter to search, Esc to clear

Long-Term Memory Card

  • Shows total word count, last updated timestamp

  • Click → displays consolidated long-term memory in right panel

  • Badge: 🧠 emoji or Brain icon

Daily Journal

  • Grouped by time period:

    • Yesterday (collapsible)

    • This Week (collapsible)

    • {Month Year} (collapsible) — e.g., "February 2026 (25)"

  • Each entry row: 📅 {Day, Mon DD} + {size} • {word count}

  • Click entry → loads full content in right panel

  • Active entry highlighted with indicator and bg-primary/10 background

7.3 Right Content Panel

  • Renders selected memory entry as rich markdown

  • Header: {date} — {day name} + metadata (date, size, word count, modified time)

  • Content sections with timestamp headers: ⏰ 9:00 AM — {Topic}

  • Structured entries with: "What we discussed", "Key findings", "Recommendations", "Decision"

  • Code blocks syntax-highlighted

  • Images rendered inline

7.4 Organize By (Toggle)

Above the journal list, a segmented control:

  • By Day (default): grouped by date as shown above

  • By Agent: grouped by agent name, each agent section shows their memories

  • By Type: grouped by category (conversation, task, document, insight, research)

7.5 Enhanced Filters

  • Agent dropdown (multi-select)

  • Date range picker

  • Type/Category filter (global / agent-specific)

  • Sort: Newest (default) / Oldest / Relevance (when searching)

7.6 API Changes

Endpoint
Change

GET /api/memory/browse

Add group_by param: day / agent / type

GET /api/memory/browse

Add date_from, date_to params

POST /api/memory/search

Verify working (Mem0 POST fix)

GET /api/memory/health

Existing — no changes

GET /api/memory/journal/{date}

New — returns full day's memory content as structured markdown


8. Projects Tab

Evolved from the v1 "Missions" placeholder into a project management view. Projects are multi-task initiatives with progress tracking, assigned agents, and priority.

8.1 Layout

8.2 Project Card

Card fields:

  • Project name

  • Status badge: Active (green) / Planning (blue) / Complete (muted) / On Hold (amber)

  • Description (line-clamp-3)

  • Progress bar: completed tasks / total tasks, percentage

  • Lead agent avatar + name

  • Priority badge

  • Time since creation

8.3 Project Detail (Click-Through)

Clicking a project card opens a detail view:

  • Lists all tasks belonging to this project

  • Each task row links to the Board task viewer

  • "Add Task" creates a new task pre-linked to this project

  • "Open in Board" navigates to Board tab filtered by this project's tasks

8.4 Data Model

Projects are a new concept — a group of recipes/tasks with shared metadata:

Link table for project ↔ task (recipe execution) relationship:

8.5 API Endpoints

Method
Path
Description

GET

/api/projects

List projects for workspace

POST

/api/projects

Create project

GET

/api/projects/{id}

Project detail with tasks

PATCH

/api/projects/{id}

Update project

POST

/api/projects/{id}/tasks

Link task to project

DELETE

/api/projects/{id}/tasks/{exec_id}

Unlink task


9. Global Search (Cmd+K)

Spotlight-style search overlay accessible from anywhere in the app.

9.1 Trigger

  • Keyboard: Cmd+K (Mac) / Ctrl+K (Windows/Linux)

  • Click: Search icon in top navigation bar

9.2 Layout

9.3 Search Categories

Results grouped by type:

Category
Icon
Source

Tasks

CheckSquare

Recipe executions (name, description)

Memories

Brain

Memory search (content)

Documents

FileText

Document metadata (name)

Agents

Bot

Agent names, roles

Projects

FolderKanban

Project names, descriptions

9.4 Result Item

Each result shows:

  • Category icon

  • Title (highlighted match)

  • Subtitle (agent name, category, or date)

  • Status dot (colour = current status for tasks)

  • Arrow → navigates to item

9.5 Keyboard Navigation

  • ↑↓ — move selection

  • Enter — open selected item

  • Esc — close search

  • Type to filter in real-time (debounced 300ms)

9.6 API

Returns results grouped by type, ordered by relevance. Backend searches across:

  • recipe_executions (name, description via ILIKE)

  • memories (Mem0 vector search)

  • documents (name, metadata via ILIKE)

  • agents (name, role via ILIKE)

  • projects (name, description via ILIKE)


10. API Endpoints (Complete)

10.1 Existing Endpoints (No Changes)

Method
Path
Used For

GET

/api/recipes

Recipe list (used by Board internally)

GET

/api/recipes/{id}/executions

Recipe execution history

POST

/api/recipes/{id}/execute

Manual recipe run

GET

/api/activity/feed

Feed data (fallback for Board polling)

GET

/api/activity/stats

Stats for hero cards

GET

/api/activity/schedule

Calendar data source

GET

/api/agents

Agent list for sidebar

GET

/api/memory/health

Memory health stats

DELETE

/api/memory/{id}

Delete memory

POST

/api/memory/consolidate

Merge/summarize memories

10.2 Modified Endpoints

Method
Path
Change

GET

/api/activity/feed

Add status filter for board columns (inbox, assigned, in_progress, review, done)

GET

/api/memory/browse

Add group_by, date_from, date_to params

10.3 New Endpoints

Method
Path
Description

PATCH

/api/activity/tasks/{id}/status

Update task status (drag-and-drop)

PATCH

/api/activity/tasks/{id}

Update task fields (assignee, priority, tags, due_date, review_mode)

GET

/api/activity/board/stats

Board column counts + priority/type/agent breakdowns for Summary widgets

GET

/api/activity/board/stream

SSE — real-time task events stream

GET

/api/memory/journal/{date}

Full day's memory as structured markdown

GET

/api/projects

List projects

POST

/api/projects

Create project

GET

/api/projects/{id}

Project detail + linked tasks

PATCH

/api/projects/{id}

Update project

POST

/api/projects/{id}/tasks

Link task to project

DELETE

/api/projects/{id}/tasks/{exec_id}

Unlink task

GET

/api/search

Global search across all entity types

10.4 Database Migrations

Migration 1: Board statuses + task fields

Migration 2: Projects table

10.5 Key Type Definitions


11. File Structure


12. Implementation Phases

Phase 1: Tab Restructure + Summary Widgets (PR1 + PR2)

  1. Rename tabs in activity-page.tsx: Summary | Board | Calendar | Memory | Projects

  2. Change polling from 15s → 60s across all activity hooks

  3. Update deep-link support for new tab names

  4. Build 4 new Summary widgets: status donut, priority breakdown, types of work, team workload

  5. Add GET /api/activity/board/stats endpoint

  6. Wire "View All" click-throughs: Schedule widget → Calendar, Recent Activity → Board

Phase 2: Board — Backend (PR3)

  1. Database migration: add priority, tags, assignee_agent_id, review_mode, due_date to recipe_executions

  2. Add inbox, assigned, review as valid status values

  3. Create PATCH /api/activity/tasks/{id}/status endpoint

  4. Create PATCH /api/activity/tasks/{id} endpoint (update fields)

  5. Extend GET /api/activity/feed with board status filters

  6. Implement SSE endpoint GET /api/activity/board/stream using Redis pub/sub

Phase 3: Board — Frontend (PR4)

  1. Install @hello-pangea/dnd

  2. Build board-view.tsx — DragDropContext + 5 columns

  3. Build board-column.tsx — Droppable column with header + count

  4. Build board-card.tsx — Draggable card with task details

  5. Build board-agent-sidebar.tsx — agent roster with filter-on-click

  6. Build board-filters.tsx — filter bar

  7. Implement optimistic drag-and-drop with revert on failure

  8. Build use-board-sse.ts hook with reconnect + 60s polling fallback

Phase 4: Task Viewer (PR5)

  1. Build board-task-viewer.tsx — slide-over with 4 context-aware views

  2. Inbox/Assigned view: editable fields (assignee, priority, due date, tags, review mode)

  3. In Progress view: live logs + step pipeline (reuse execution-detail.tsx internals)

  4. Review view: report content + grade form + approve/reject (reuse report-viewer.tsx + report-grade-form.tsx)

  5. Done view: results + execution summary + re-run/download actions

  6. Wire task viewer to board card clicks

Phase 5: Calendar (PR6)

  1. Build activity-calendar.tsx — container with view toggle

  2. Build calendar-always-running.tsx — sub-hourly routines

  3. Build calendar-week-grid.tsx — CSS grid with cron-parsed task pills

  4. Build calendar-next-up.tsx — upcoming sorted list

  5. Wire calendar events to task viewer slide-over

  6. Wire Schedule widget "View All" → Calendar tab

Phase 6: Memory Enhancement (PR7)

  1. Verify Mem0 search POST fix is merged

  2. Rewrite activity-memory.tsx → two-panel layout

  3. Build memory-sidebar.tsx — search + grouped journal list

  4. Build memory-viewer.tsx — right panel markdown renderer

  5. Add group_by param to GET /api/memory/browse

  6. Create GET /api/memory/journal/{date} endpoint

  7. Add organize-by toggle (Day / Agent / Type)

  8. Enhanced filters: agent, date range, type, sort

Phase 7: Projects (PR8)

  1. Database migration: projects + project_tasks tables

  2. Create projects.py API with CRUD endpoints

  3. Build activity-projects.tsx — card grid with stats header

  4. Build project-card.tsx — card with progress bar + agent + priority

  5. Build project-detail.tsx — detail view with linked task list

  6. Wire "Open in Board" → Board tab filtered by project

Phase 8: Global Search (PR9)

  1. Create GET /api/search endpoint — cross-entity search

  2. Build global-search.tsx — Cmd+K overlay with keyboard navigation

  3. Build search-result-item.tsx — categorized result rows

  4. Wire results to navigation (Board task viewer, Memory entry, Agent page, Project detail)

  5. Add Cmd+K listener to app layout

Phase 9: Cleanup (PR10)

  1. Delete deprecated components: activity-feed.tsx, activity-feed-item.tsx, activity-reports.tsx, report-card.tsx

  2. Update all internal links referencing old Feed/Reports tabs

  3. Mobile responsive pass for all new components

  4. Loading skeletons for Board, Calendar, Memory, Projects

  5. Empty states for each tab

  6. prefers-reduced-motion compliance


13. Dependencies

New npm Packages

Package
Purpose
Size

@hello-pangea/dnd

Drag-and-drop for Kanban board

~45KB gzipped

Existing Packages (Already Installed)

Package
Used For

react-grid-layout

Summary widget drag grid

recharts

Donut, bar charts on Summary

framer-motion

Animations

lucide-react

Icons

No @fullcalendar needed — Calendar is custom CSS grid.


14. Success Metrics

Metric
Target
How to Measure

Time to answer "what's running?"

< 3 seconds (one click from sidebar)

User testing

Task status visibility

100% of active tasks visible on Board

Compare DB count vs UI count

Drag-and-drop latency

< 200ms perceived (optimistic update)

Performance testing

SSE delivery latency

< 2s from event to UI update

Instrumentation

Calendar shows all schedules

100% of cron jobs visible

Compare scheduler DB vs Calendar

Memory search returns results

> 0 results for any known topic

Regression test

Global search response time

< 500ms

API monitoring

Page load time

< 1.5s initial, < 500ms tab switch

Lighthouse + RUM

Mobile usability

All tabs functional on 375px width

Manual test


15. Open Questions

  1. SSE vs WebSocket: SSE is simpler and sufficient for server→client push. If we later need client→server streaming (e.g., collaborative editing), upgrade to WebSocket. For now, SSE.

  2. Board pagination: If a column has 100+ cards, do we paginate or virtual-scroll? Recommendation: show latest 50 per column with "Load More" button. Virtual scrolling is a future optimization.

  3. Project ↔ Mission relationship: Projects in this PRD are the UI evolution of Missions. The backend projects table is new. Do we migrate existing mission data or start fresh? Recommendation: start fresh — Missions tab was a placeholder with no data.

  4. Review mode "LLM": Which agent performs LLM review? Options: (a) dedicated QA agent, (b) any agent with "reviewer" skill, (c) configurable per-task. Recommendation: configurable per-task with a workspace-level default.

  5. Calendar — month view? v2 ships with Week and Today views only. Month view is a future enhancement if users request it. Keeps scope manageable.

Last updated