{% extends "base.html" %} {% block title %}Freigabe #{{ a.id }}{% endblock %} {% block content %} {% set pre = a.preconditions %}

{{ a.arguments.get('title') or a.tool }}

{{ labels[a.status] }} Antrag #{{ a.id }} · {{ users.get(a.requested_by) }} · {{ a.requested_at.strftime('%d.%m.%Y %H:%M') }}

{% include "_flash.html" %}
Workspace
{{ workspaces.get(a.workspace_id) }}
Quelle
{{ sources.get(a.source_id, 'entfernt') }}
Tool
{{ a.tool }} · Risikoklasse {{ a.risk_class }} · {{ a.reason }}
Entscheidet
{{ 'globaler Approver' if a.approval_level == 'global_approver' else 'Workspace-Admin oder Freigeber' }}{% if a.four_eyes %} · Vier-Augen-Prinzip{% endif %}
{% if pre.get('base') %}
Ziel
Branch {{ pre.branch }} → Pull Request nach {{ pre.target }}
Vorbedingung
Basis-Commit {{ pre.base[:12] }}; bei der Ausführung wird geprüft, ob sich die Änderung noch konfliktfrei auf den aktuellen Stand von {{ pre.target }} anwenden lässt.
{% endif %} {% if a.status == 'pending' %}
Läuft ab
{{ a.expires_at.strftime('%d.%m.%Y %H:%M') }}
{% endif %} {% if a.decided_at and a.status != 'pending' %}
Entschieden
{{ users.get(a.decided_by, 'automatisch') }} · {{ a.decided_at.strftime('%d.%m.%Y %H:%M') }}{% if a.self_approved %} · Selbstfreigabe{% endif %}
{% endif %} {% if a.comment %}
Kommentar
{{ a.comment }}
{% endif %}
Snapshot
{{ a.hash[:16] }}
{% if a.result %}

Ergebnis

{{ a.result.get('output') }}

{% set pr = a.result.get('pull_request') %} {% if pr and pr.url and pr.url.startswith('https://') %}

Pull Request #{{ pr.id }} öffnen

{% endif %}
{% endif %}
{% if pre.get('base') %}

Änderung

Aus den echten Parametern erzeugt: genau dieser Diff wird nach der Freigabe gepusht.

{% else %}

Aufruf

Geprüfte Argumente: genau so wird {% if pre.get('server') %}der Aufruf nach der Freigabe an {{ pre.get('server') }} gesendet{% else %}{{ a.tool }} nach der Freigabe ausgeführt; das Ergebnis erhält die KI{% endif %}.

{% endif %}
{% for line in a.preview.splitlines() %}{{ line }}
{% endfor %}
{% if a.model_summary %}

Beschreibung der KI (nicht geprüft, maßgeblich ist der Diff):

{{ a.model_summary }}

{% endif %}
{% if a.status == 'pending' and may_decide %}

Entscheiden

{% if a.requested_by == p.user_id %}

Du hast diese Aktion selbst ausgelöst; eine Freigabe wird im Audit als Selbstfreigabe vermerkt.

{% endif %}
{% elif a.status == 'pending' %}

Wartet auf die Entscheidung {{ 'eines globalen Approvers' if a.approval_level == 'global_approver' else 'eines Workspace-Admins oder Freigebers' }}.{% if blocked and (may_approve or a.approval_level == 'global_approver') %} {{ blocked }}{% endif %}

{% elif a.status == 'expired' %}
{% if replaced_by %}

Erneut beantragt als Antrag #{{ replaced_by }}.

{% elif may_approve or a.requested_by == p.user_id %}

Abgelaufen ohne Entscheidung. Der Vorschlag kann erneut beantragt werden; Basis-Commit und Diff werden dabei gegen den aktuellen Stand neu gebaut.

{% endif %}
{% endif %} {% if run and run.chat_session_id %}

Zum Chat

{% endif %} {% endblock %}