Skip to content

Summary Tasks and WBS Rollup

Summary tasks are parent nodes in the Work Breakdown Structure (WBS). Their duration, dates, and progress are computed by the scheduler from their children — a summary is never edited directly.

Use summary tasks to group related work into phases, deliverables, or work packages.

FieldRollup rule
startEarliest start among children
finishLatest finish among children
durationSpan from start to finish (working days, per project calendar)
percent_completeDuration-weighted average of children’s percent_complete
is_criticalTrue if any descendant is on the critical path

Summary tasks cannot hold resource assignments, time entries, or direct dependencies. Add those on leaf tasks; the rollup will update on the next scheduler run.

Summary bars render as an 8px-tall filled bar with filled-diamond end-caps at the start and finish dates — the same diamond geometry used for milestones, rotated 45°. The end-caps disambiguate a summary from a regular task bar at a glance.

A chevron in the WBS column collapses and expands the subtree:

  • — collapsed (children hidden)
  • — expanded (children visible)

Collapsing a summary only hides its descendants from the list; it does not affect the schedule or the rollup.

When a task row is focused in the WBS view:

ShortcutAction
TabIndent — make this task a child of the task above it
Shift + TabOutdent — move this task up one level in the hierarchy
Alt + / Alt + Reorder within the current parent
/ Move focus to the previous / next visible task
Enter on chevronToggle expand / collapse of the focused summary

Indent and outdent call the useIndentTask / useOutdentTask mutations. A one-line aria-live announcement (“Task indented”, “Cannot outdent: task is already at root level”, etc.) is emitted for screen reader users on every action.

Expanding or collapsing a summary announces "<Name> expanded, N children visible." or "<Name> collapsed.".

Dragging a task row onto a summary row in the WBS view re-parents the dragged task under that summary. A drop-zone indicator highlights the target summary, and an aria-live region announces "<Task> will become child of <Summary>" on hover before the drop commits.

Dropping onto the empty area below a summary’s children inserts at the end of that subtree. The scheduler recomputes the rollup on the next tick.

GET /api/v1/projects/{id}/tasks/?include_summary=true

Returns the full hierarchy with each task’s wbs_path (ltree) and parent_id. Summary rows include a computed child_count field so clients can render the chevron without a second query.

See the API reference for the complete schema.

PathPurpose
src/features/wbs/WbsView.tsxWBS table with keyboard + DnD handlers
src/features/schedule/engine/GanttRenderer.tsdrawSummaryBar — 8px bar with diamond end-caps
src/features/schedule/wbsAnnouncement.tsExpand / collapse aria-live formatter
src/hooks/useTaskMutations.tsuseIndentTask, useOutdentTask, useReorderTasks
src/stores/wbsStore.tsExpanded / collapsed state per summary