This runbook covers dashboard-specific operations: proving that a project surface is current, bootstrapping notifications, preserving reproducible saved views, and comparing history. Host and service telemetry belongs in Monitoring.
Run commands from the CodeGraph repository with the same runtime configuration and project scope as the API instance.
1. Establish the project basis
python -m src.cli dashboard health <project> --format json
python -m src.cli dashboard basis <project> --format json
Check the project identity, evidence revision, analysis basis, score
availability, and freshness together. A successful command with a stale,
missing, failed, or unknown surface is a diagnostic result, not readiness
evidence.
When a surface supplies a recommended command, first verify that
refresh_supported is true and action_availability is available. If the
state is updating, observe the current job instead of starting duplicate work.
For failed, retain the job and reason evidence before retrying.
2. Bootstrap a project notification
The project argument is required:
python -m src.cli dashboard notifications bootstrap <project> --format json
Set --channel, --delivery-mode, --events, and --minimum-severity only
when they match the approved receiver policy. Sensitive details are excluded
unless --include-sensitive-details is both necessary and permitted.
The bootstrap response proves configuration. Full operational evidence also needs a delivery-success event from the live notification pipeline; a test delivery alone is insufficient.
3. Preserve and inspect saved views
python -m src.cli dashboard saved-views list --format json
Before a recurring comparison or export, record the saved-view identifier, owner, scope, filters, and period. Saved views are user-scoped; do not assume that another authenticated user can read or reuse them.
The current REST reads are:
GET /api/v1/traceability/saved-views;GET /api/v1/traceability/subscriptions.
Both require API authentication and the applicable project/user scope.
4. Compare history
For one project:
python -m src.cli dashboard compare-periods <project> --format json
For portfolio automation, use
GET /api/v1/traceability/portfolio/compare-periods with the same filters,
baseline period, and comparison period as the saved view. The endpoint is a
read operation. Retain those selectors with the result so the comparison can be
reproduced.
5. Incident handoff
Capture:
- project and group scope;
- current commit or deployed image identity;
- route or command and sanitized parameters;
- freshness state and reason;
- active job identifier and stage, when present;
- saved-view and period selectors;
- notification delivery event, when the incident concerns notifications.
Do not include access tokens, receiver secrets, raw private findings, or storage paths in the handoff.
Sources of truth
src/cli/dashboard_commands.py— dashboard command parser and dispatch.src/api/routers/dashboard_core/dashboard_v2_history.py— project and portfolio period comparison.src/api/routers/dashboard_domains/dashboard_v2_notifications.py— saved views and subscriptions.src/api/services/dashboard/surface_state/surface_freshness.py— recovery state and supported-action metadata.
For route navigation, use the Dashboard user guide.