{% extends "mirrorwall/base.html" %} {% from "mirrorwall/components.html" import badge, card, empty_state, table %} {% from "_macros.html" import trajectory_link %} {% block title %}Dashboard — PromptCadence{% endblock %} {% block content %}

Dashboard

What is running, what is waiting for a person, and today's spend. Every figure links to the page that owns it.

Trajectories

Counts are capped at the page size: they answer "is anything stuck", not "how many were there ever". Trajectories · System

Waiting for a person

{% if report.pending_approvals %}

The oldest has waited {{ report.oldest_approval_age_seconds | round(0) | int }} s.

{% set columns = [{"label": "Trajectory"}, {"label": "Kind"}, {"label": "Reason"}, {"label": "Age", "numeric": true}] %} {% set rows = [] %} {% for one in report.pending_approvals %} {% set _ = rows.append([ trajectory_link(one.trajectory_id), badge(one.kind, tone="warning"), one.reason, (one.age_seconds | round(0) | int) ~ " s" ]) %} {% endfor %} {{ table(columns, rows, caption="Pending approval requests", row_count=rows | length) }}

Open the approvals inbox

{% else %} {{ empty_state("Nothing is waiting for a person.", "Approvals", "/approvals") }} {% endif %}

Today's ledger

Ledger · Egress decisions

Recent trajectories

{% if report.recent %} {% set columns = [{"label": "Trajectory"}, {"label": "State"}, {"label": "Task"}, {"label": "Created"}] %} {% set rows = [] %} {% for one in report.recent %} {% set _ = rows.append([ trajectory_link(one.trajectory_id), badge(one.state, tone=state_tone(one.state)), one.task, one.created_at ]) %} {% endfor %} {{ table(columns, rows, caption="The ten most recent trajectories", row_count=rows | length) }} {% else %} {{ empty_state("No trajectories yet.", "How to submit one", "/system") }} {% endif %}

Models are LoadCoach's. This console shows what was asked of it and what came back, and links every turn to the job that answered; LoadCoach is at {{ report.loadcoach_base_url }}.

{% endblock %}