{% extends "_base.html" %} {% from "_macros.html" import modal, action_label %} {% block title %}{{ (experiment.name or experiment.experiment_id) | humanize }} · Urika{% endblock %} {% block heading %}{{ (experiment.name or experiment.experiment_id) | humanize }}{% endblock %} {% block breadcrumb %} {% endblock %} {% block content %}
{{ experiment.hypothesis }}
{{ experiment_status }} {{ experiment.experiment_id }} {{ experiment.created_at }} {% if experiment_status in ("failed", "paused", "stopped") %} {# Resume runs ``urika run --experiment --resume`` for this experiment. Only visible when there's something to resume; otherwise the user uses the new-experiment modal. #}
{% endif %}

Outputs

Report
{% if has_report %} View report {% endif %} {% set rp = running_by_exp.get(("report", experiment.experiment_id)) %} {% if rp %} Report running… view log {% else %} {% endif %}
Presentation
{% if has_presentation %} Open presentation ↗ {% endif %} {% set pr = running_by_exp.get(("present", experiment.experiment_id)) %} {% if pr %} Presentation running… view log {% else %} {% endif %}
Run log
{% if has_log %} View live log {% else %} No log yet — start a run {% endif %}
Evaluation
{% set ev = running_by_exp.get(("evaluate", experiment.experiment_id)) %} {% if ev %} Evaluate running… view log {% else %} {% endif %}
{% if artifact_files %}
Files
    {% for f in artifact_files %}
  • {{ f.name }} {{ f.size }} bytes
  • {% endfor %}
{% endif %}

Runs

{% if runs %} {% for run in runs %} {% endfor %}
Run Method Metrics Observation
{{ run.run_id }} {{ run.method }} {% set metric_items = (run.metrics or {}).items() | list %} {% if metric_items %} {% for key, value in metric_items %} {{ key }}={% if value is number %}{{ '%.3f' | format(value) }}{% else %}{{ value }}{% endif %}{% if not loop.last %}, {% endif %} {% endfor %} {% else %} {% endif %} {{ (run.observation or '')[:80] }}{% if run.observation and run.observation|length > 80 %}…{% endif %}
{% else %}

No runs yet.

{% endif %}
{# ---- Danger zone ----------------------------------------------------- Move-to-trash for the experiment. Mirrors the project-settings Danger zone (commit 511dc075): type-name confirm + HX-Redirect on success. Active-lock guard renders a disabled button with the blocking lock path so the user knows what to stop first. #}

Danger zone

Moving the experiment to trash removes it from the experiments list and moves its folder to {{ project.path }}/trash/{{ experiment.experiment_id }}-<timestamp>/. Files are preserved; empty the trash folder manually when you're sure.

{% if active_lock_path %}

Stop the running process first — lock file present at {{ active_lock_path }}.

{% else %}
{% endif %}
{% call modal('present', action_label("Generate", "presentation", has_presentation)) %}
{% endcall %} {% call modal('report', action_label("Generate", "report", has_report)) %}
{% endcall %} {% call modal('evaluate', 'Run evaluator') %}
{% endcall %} {% endblock %}