{% extends "base.html" %} {% block title %}{{ step }} · {{ slug }} · Gauntlet Console{% endblock %} {% block body %} {# FR-3.1: step transcript drill-down. Read-only — lists the step's on-disk artifacts and renders the selected one (transcript.md as markdown by default). The ?artifact= choice is allowlisted server-side (store.read_step_artifact). #}

← {{ slug }}

{{ step }}{% if record and record.iteration is not none %}[{{ record.iteration }}]{% endif %}

run {{ run_id }} {% if record %} {% if record.type %}{{ record.type }}{% endif %} {{ record.status }} agent {{ record.agent or "—" }} {% if duration_s is not none %}{{ "%.0f"|format(duration_s) }}s{% endif %} {% if record.usage and record.usage.cost_usd is not none %}${{ "%.2f"|format(record.usage.cost_usd) }}{% endif %} {% else %} (no manifest record) {% endif %}
started
{{ record.started if record else "—" }}
ended
{{ record.ended if record else "—" }}
{% if record and record.notes %}
notes
{{ record.notes }}
{% endif %}
{# A file links by its path relative to the step dir (the ?artifact= value); a recursive macro renders nested round / sub-step dirs (a cycle's review/triage rounds and their per-finding dirs, the retrospective's builder/reviewer/ synthesis) so every nested file is viewable, not just listed. #} {% macro artifact_link(a) %}
  • {{ a.name }} {{ a.size }} B
  • {% endmacro %} {% macro render_round(r) %}
    {{ r.name }} ({{ r.artifacts|length }} file(s){% if r.rounds %}, {{ r.rounds|length }} subdir(s){% endif %}) {% if r.artifacts %}{% endif %} {% for sub in r.rounds %}{{ render_round(sub) }}{% endfor %}
    {% endmacro %}

    Artifacts

    {% if detail.artifacts %} {% elif detail.rounds %}

    no top-level files for this step — see the rounds below

    {% else %}

    no artifacts on disk for this step yet

    {% endif %} {% if detail.rounds %}

    Rounds

    {% for r in detail.rounds %}{{ render_round(r) }}{% endfor %} {% endif %} {% if selected %}

    {{ selected }}

    {% if content_error %}

    could not read artifact: {{ content_error }}

    {% elif content is not none %} {% if selected.endswith(".md") %}
    {{ content | markdown }}
    {% else %}
    {{ content }}
    {% endif %} {% endif %} {% endif %} {% endblock %}