{# One meeting's storage panel (ADR-0024). `_detail.html` fetches it per meeting (htmx `load`), so a project render never walks a workspace. Every fact is the service's own accounting (`managed.meeting_storage`): the resolved workspace path, the workspace and tape sizes, the managed root, the root's free space and the tapes. Retention is **manual only** (owner, 2026-09-15): nothing here suggests the node will clean up on its own, and every delete names the archive as the durable copy. #}
{% if storage.managed %} {{ tr("managed workspace") }} {% elif storage.workspace_path %} {{ tr("user-chosen workspace") }} {% else %} {{ tr("no workspace yet") }} {% endif %} {% if storage.workspace_path %} {{ storage.workspace_path }} {% endif %}
{% if error %} {% endif %} {% if storage.workspace_path %}

{{ tr("Workspace size: {size}", size=storage.meeting_size) }} · {{ tr("Uploaded tapes: {size}", size=storage.tapes_size) }} {% if storage.free_size %} · {{ tr("Free on the managed disk: {free}", free=storage.free_size) }} {% endif %}

{% endif %} {% if storage.managed %}

{{ tr("Managed root") }}: {{ storage.managed_root }}

{{ tr("clear-record never deletes tapes on its own; deleting here is manual, and the archive is the durable copy.") }}

{% endif %} {% if storage.tapes %} {% for tape in storage.tapes %} {% endfor %}
{{ tr("Tape") }} {{ tr("Size") }} {{ tr("SHA-256") }}
{{ tape.name }}
{{ tape.path }}
{{ tape.size }} {{ tape.sha256_short }} {% if storage.managed %} {% endif %}
{% else %}
{{ tr("No tapes uploaded yet.") }}
{% endif %} {% if storage.can_upload %} {% include "_upload.html" %} {% endif %} {% if storage.upload_refusal %}
{{ storage.upload_refusal.label }}
{{ storage.upload_refusal.reason }}
{% endif %} {% if storage.managed and storage.tapes %} {% endif %}