Files
git.stella-ops.org/docs/modules/release-orchestrator/ui/dashboard.md

7.1 KiB

Dashboard Specification

Main dashboard layout and metrics specification for the Release Orchestrator UI.

Status: Planned (not yet implemented) Source: Architecture Advisory Section 12.1 Related Modules: WebSocket APIs, Metrics Sprint: 111_001 Dashboard Overview

Overview

The dashboard provides a real-time overview of security posture, release operations, estate health, and compliance status.


Dashboard Layout

+-----------------------------------------------------------------------------+
|                           STELLA OPS SUITE                                  |
|  +-----+                                                    [User Menu v]  |
|  |Logo |  Dashboard  Releases  Environments  Workflows  Integrations       |
+-----------------------------------------------------------------------------+
|                                                                             |
|  +-------------------------------+  +-----------------------------------+  |
|  |     SECURITY POSTURE          |  |     RELEASE OPERATIONS            |  |
|  |                               |  |                                   |  |
|  |  +---------+  +---------+    |  |  +---------+  +---------+        |  |
|  |  |Critical |  |  High   |    |  |  |In Flight|  |Completed|        |  |
|  |  |   0 *   |  |   3 *   |    |  |  |    2    |  |   47    |        |  |
|  |  |reachable|  |reachable|    |  |  |deploys  |  | today   |        |  |
|  |  +---------+  +---------+    |  |  +---------+  +---------+        |  |
|  |                               |  |                                   |  |
|  |  Blocked: 2 releases         |  |  Pending Approval: 3              |  |
|  |  Risk Drift: 1 env           |  |  Failed (24h): 1                  |  |
|  |                               |  |                                   |  |
|  +-------------------------------+  +-----------------------------------+  |
|                                                                             |
|  +-------------------------------+  +-----------------------------------+  |
|  |     ESTATE HEALTH             |  |     COMPLIANCE/AUDIT              |  |
|  |                               |  |                                   |  |
|  |  Agents: 12 online, 1 offline|  |  Evidence Complete: 98%           |  |
|  |  Targets: 45/47 healthy      |  |  Policy Changes: 2 (this week)    |  |
|  |  Drift Detected: 2 targets   |  |  Audit Exports: 5 (this month)    |  |
|  |                               |  |                                   |  |
|  +-------------------------------+  +-----------------------------------+  |
|                                                                             |
|  +-----------------------------------------------------------------------+ |
|  |                    RECENT ACTIVITY                                    | |
|  |                                                                       | |
|  |  * 14:32  myapp-v2.3.1 deployed to prod (jane@example.com)           | |
|  |  o 14:28  myapp-v2.3.1 promoted to stage (auto)                      | |
|  |  * 14:15  api-v1.2.0 blocked: critical vuln CVE-2024-1234           | |
|  |  o 13:45  worker-v3.0.0 release created (john@example.com)           | |
|  |  * 13:30  Target prod-web-03 health: degraded                        | |
|  |                                                                       | |
|  +-----------------------------------------------------------------------+ |
|                                                                             |
+-----------------------------------------------------------------------------+

Dashboard Metrics

TypeScript Interfaces

interface DashboardMetrics {
  // Security Posture
  security: {
    criticalReachable: number;
    highReachable: number;
    blockedReleases: number;
    riskDriftEnvironments: number;
    digestsAnalyzedToday: number;
    digestQuota: number;
  };

  // Release Operations
  operations: {
    deploymentsInFlight: number;
    deploymentsCompletedToday: number;
    deploymentsFailed24h: number;
    pendingApprovals: number;
    averageDeployTime: number;  // seconds
  };

  // Estate Health
  estate: {
    agentsOnline: number;
    agentsOffline: number;
    agentsDegraded: number;
    targetsHealthy: number;
    targetsUnhealthy: number;
    targetsDrift: number;
  };

  // Compliance/Audit
  compliance: {
    evidenceCompleteness: number;  // percentage
    policyChangesThisWeek: number;
    auditExportsThisMonth: number;
    lastExportDate: DateTime;
  };
}

Dashboard Panels

1. Security Posture Panel

Displays current security state across all releases:

Metric Description
Critical Reachable Critical vulnerabilities with confirmed reachability
High Reachable High severity vulnerabilities with confirmed reachability
Blocked Releases Releases blocked by security gates
Risk Drift Environments with changed risk since deployment

2. Release Operations Panel

Shows active deployment operations:

Metric Description
In Flight Deployments currently in progress
Completed Today Successful deployments in last 24h
Pending Approval Promotions awaiting approval
Failed (24h) Failed deployments in last 24h

3. Estate Health Panel

Displays agent and target health:

Metric Description
Agents Online Number of agents reporting healthy
Agents Offline Agents that missed heartbeats
Targets Healthy Targets passing health checks
Drift Detected Targets with version drift

4. Compliance/Audit Panel

Shows audit and compliance status:

Metric Description
Evidence Complete % of deployments with full evidence
Policy Changes Policy modifications this week
Audit Exports Evidence exports this month

Real-Time Updates

WebSocket Integration

interface DashboardStreamMessage {
  type: "metric_update" | "activity" | "alert";
  timestamp: DateTime;
  payload: MetricUpdate | ActivityEvent | Alert;
}

// Subscribe to dashboard stream
const ws = new WebSocket("/api/v1/dashboard/stream");

ws.onmessage = (event) => {
  const message: DashboardStreamMessage = JSON.parse(event.data);

  switch (message.type) {
    case "metric_update":
      updateMetrics(message.payload);
      break;
    case "activity":
      addActivityItem(message.payload);
      break;
    case "alert":
      showAlert(message.payload);
      break;
  }
};

Performance Targets

Metric Target
Initial Load < 2 seconds
Metric Refresh Every 30 seconds
WebSocket Reconnect Exponential backoff (1s, 2s, 4s, ... 30s max)
Activity History Last 50 events

See Also