{% import "_macros.html" as m %}

{{ op.summary }}

{{ op.status }} {{ m.actor_badge(op.actor) }} {{ op.tool }} {{ m.confidence(op.confidence) }} {{ op.proposed_at }}
{{ op.id }}
Reasoning
{{ op.reasoning }}
{% if op.evidence %}

Evidence: {% for ev in op.evidence %}{{ ev.filename }} ({{ ev.sha256[:10] }}…){% if not loop.last %}, {% endif %}{% endfor %}

{% endif %} {% for change in op.changes %}
{{ change.kind }}
{% if change.rationale %}
{{ change.rationale }}
{% endif %} {% if change.kind == "entry" %} {{ m.postings(change.data) }} {% for line in change.lines %}
matches statement line {{ m.record_link(line.id) }}: {{ line.date }} {{ line.amount }} {{ line.commodity }} “{{ line.description }}”
{% endfor %} {% elif change.kind == "correction" %}

Correcting {{ m.record_link(change.data.target) }} — {{ change.data.reason }}

Current

{% if change.before %}{{ m.postings(change.before) }}{% else %}not a current entry{% endif %}

{{ "Proposed" if change.after else "Voided" }}

{% if change.after %}{{ m.postings(change.after) }}{% else %}The entry will no longer count toward any balance. It stays in the log.{% endif %}
{% else %}
{% for key, value in change.data.items() %}
{{ key }}
{% if value is string or value is number %}{{ value }}{% else %}{{ value | tojson }}{% endif %}
{% endfor %}
{% endif %}
{% endfor %} {% if error %}{% endif %} {% if op.status == "pending" %}
{% if op.stale %}The book changed since this was proposed; approval re-checks it.{% endif %}
{% elif op.decision %}
{{ op.decision.data.verdict }}d by {{ m.actor_badge(op.decision.actor) }} at {{ op.decision.recorded_at }}{% if op.decision.data.note %} — “{{ op.decision.data.note }}”{% endif %} {% if op.results %}· results: {% for r in op.results %}{{ m.record_link(r) }}{% if not loop.last %}, {% endif %}{% endfor %}{% endif %}
{% endif %}