{# Per-process client token; mutating fetches echo it as the
X-Attune-Client header (see static/js/client_token.js and
docs/specs/ops-mutating-endpoint-auth/). #}
{% block title %}attune ops{% endblock %} · attune ops
{# Release-keyed cache-bust: version pinning lets browsers cache the
file BETWEEN requests within a release while busting reliably on
upgrade. Replaces the previous ``random`` dev-iteration hack
(which busted every page render and defeated browser caching in
production). For dev work where the random buster was useful,
Cmd+Shift+R / DevTools "Disable cache" still does the job. #}
attuneopsv{{ attune_version }}
{% if current_run %}
{# data-tooltip + data-tooltip-position=bottom: fast CSS tooltip
positioned below the topbar so it doesn't render above the
viewport. aria-label keeps the cue accessible to screen readers. #}
running{{ current_run.workflow }}
{% endif %}
project
{# project_name reads ``[project].name`` from
``/pyproject.toml`` so worktree-launched
dashboards display the package name (``attune-ai``)
instead of the worktree directory's slug
(``reverent-brown-937823``). Falls back to the basename
when no pyproject is present. Tooltip + aria-label still
expose the full path for users who need it. #}
{{ project_name }}
{% block content %}{% endblock %}
{# Loaded before per-page scripts so every mutating fetch can read
the client token (window.attuneClientHeaders). #}
{% block scripts %}{% endblock %}