sdlc_dashboard
Live HTML dashboard with stage timeline and cumulative metrics.
sdlc_trace
Chronological CLI event trace per task.
Webhook Notifications
Slack, Teams, and Discord with auto-format conversion.
metrics.json
Cost, duration, and tool-call budget per stage.
sdlc_dashboard
Generates dashboard.html inside the run directory and starts a local HTTP server (default port 3008) that auto-refreshes every 2 seconds.
| Parameter | Type | Required | Description |
|---|---|---|---|
run_id | string | — | Target run (default: most recent) |
| Panel | Contents |
|---|---|
| Stage Execution Timeline | All 15 canonical stages with READY / PENDING / PASS / FAIL status pills |
| Cumulative Time | Total elapsed milliseconds across the run |
| API Cost Cap | cumulative_cost_usd from metrics.json |
| Tool Call Buffer | cumulative_tool_calls / 40 (max per task) |
| Traceability Explorer | Link to inspect traceability.json |
| Harness Guardrail Limits | Live view of enforced policy values |
/api/metrics — a lightweight local endpoint that serves metrics.json, tasks.json, and manifest.json in a single response.
Output file: .rstack/runs/<run_id>/dashboard.html
sdlc_trace
Prints a human-readable chronological event stream for the current or a specific task, compiled from events.jsonl and per-task builder.json / validation.json.
| Parameter | Type | Required | Description |
|---|---|---|---|
task_id | string | — | Target a specific task (default: most recent) |
Webhook Notifications
Set one environment variable to activate notifications. RStack auto-detects the platform from the URL and converts the payload:Notification events
| Event | Trigger | Color |
|---|---|---|
| Stage START | sdlc_start initializes a stage | Blue |
| Stage PASS | Validator contract approved | Green |
| Stage FAIL | Harness contract check failed | Red |
| Stage BLOCKED | Approval gate or guardrail blocked | Amber |
| Stage APPROVAL_PENDING | Waiting on sdlc_approve | Purple |
| Task Execution Report | After every sdlc_validate | Green / Red |
Platform auto-conversion
| Platform | Detection | Format |
|---|---|---|
| Slack | hooks.slack.com | Native Block Kit with color-coded attachment and field grid |
| Discord | discord.com | { embeds: [] } with hex color, description, and footer |
| Microsoft Teams | webhook.office.com | Office MessageCard with themeColor and sections |
Task Execution Report payload
The report fires after everysdlc_validate and includes:
- Task ID and run ID
- Final status (PASS / FAIL)
- Tool call count
- Guardrail hits
- Memory actions (recalled / written / failed)
- Full per-check validation checklist with PASS/FAIL per check name
metrics.json
metrics.json is updated by updateRunMetrics() after each task and read by the dashboard /api/metrics endpoint.
Location: .rstack/runs/<run_id>/metrics.json
Schema:
| Field | Description |
|---|---|
cumulative_duration_ms | Total wall-clock time across all completed tasks |
cumulative_cost_usd | Accumulated API cost (if cost events are emitted) |
cumulative_tool_calls | Total tool calls fired across all tasks |
stage_elapsed_ms | Per-stage elapsed time map |
stage_status | Per-stage final status map |
RunReport
buildRunReport(runDir) in src/harness/reporter.js compiles a typed RunReport from events.jsonl, evidence.jsonl, tasks.json, and per-task validation.json. It is used internally by sdlc_trace and sdlc_dashboard.
The report surfaces:
- Task count, PASS / FAIL breakdown
- Guardrail hit count and types
- Memory event totals (recalled, written, failed)
- Evidence path index for compliance auditing
- Per-stage status summary