---
title: Overview — Reference
---

# Overview — Reference

The Overview page is the operational home screen of the Custodian State Hub.
It shows the live health of the entire ecosystem at a glance — active work,
blocking decisions, and system-derived next-step suggestions.

---

## Sections

### Open Workstreams by Repository

A horizontal stacked bar chart showing workstreams grouped by domain and then
by repository. Each bar is broken into four task-status segments:

| Colour | Segment |
|--------|---------|
| green | done |
| purple | progress |
| orange | wait |
| light grey | todo |

The left axis shows the `domain / repository` label once per repository group.
The `done/total` count is printed to the right of each bar. Workstreams with no
tasks yet show a grey "— no tasks yet" label.

Hovering a bar shows the repository, domain, and backing workplan filename when
the workstream is file-backed. Clicking a bar or its label opens the workstream
drilldown page with the attached task list.

### Contribution & SBOM Health

Three summary cards linked to the Contributions and SBOM pages:

| Card | Shows |
|------|-------|
| **Contributions** | Total artifact count; orange warning if any are awaiting upstream response |
| **Licence Risk** | Count of SBOM packages with copyleft licences in direct dependencies |
| **SBOM** | Breakdown by contribution type (BR / FR / EP / UPR) |

### Status

Four metric cards:

| Card | Meaning |
|------|---------|
| **Active Workstreams** | Count of active/blocked execution workstreams |
| **Blocking Decisions** | Pending decisions with status `open` or `escalated` — orange border if > 0 |
| **Blocked Tasks** | Click to expand the list with blocking reasons |
| **Events Today** | Progress events created on today's date |

### What's next?

System-derived action suggestions from `GET /state/next_steps`. Suggestions are
generated when a decision is resolved or a workstream dependency is cleared, and
they point to the first open task in the relevant workstream. These are derived
on request and never persisted.

### Blocking Decisions

Inline resolution form for each pending decision. Expand a card, enter a
rationale and "decided by" name, and click **Record & close**. The decision is
resolved via `POST /decisions/{id}/resolve` and disappears from the list
without a page reload.

### Registered Projects

Table of projects registered with `make register-project`, sourced from
`milestone` progress events whose summary starts with
`"Project registered with State Hub:"`.

### Recent Activity

Last 20 progress events across all domains, showing time, event type, author,
and summary.

---

## Data source

Polls `GET /state/overview` every **60 seconds**. This endpoint is a bounded
dashboard read model: it returns summary totals, recent activity, registration
milestones, SBOM totals, and chart-ready workplan rows with task counts already
aggregated server-side.

The page keeps the last successful overview response visible if a refresh times
out, and marks the view stale instead of clearing the dashboard. Blocking
decisions are fetched separately via `GET /decisions/?decision_type=pending`
and only re-fetched after a successful resolve action — this prevents the inline
form from being wiped on every poll.
