{# One stored forensics manifest, rendered into #memory-shell-forensics-detail. The raw JSON is shown verbatim as well: a manifest is evidence, and the operator must be able to compare what the page shows with what was written to disk. #}
{{ _('Manifest') }} {{ artifact_id }}
{% if not available %}
{{ _('No stored manifest exists for this artifact: the index has no entry, or the manifest file is unreadable. The artifact directory may have been moved or deleted outside Anteumbra.') }}
{% else %}
{{ _('Kind') }}{{ manifest.kind or _('Unknown') }}
{{ _('Name') }}{{ manifest.name or _('Unknown') }}
{{ _('Class name') }}{{ manifest.class_name or _('Unknown') }}
{{ _('Class loader') }}{{ manifest.class_loader or _('Unknown') }}
{{ _('Loader identity') }}{{ manifest.class_loader_identity or _('Unknown') }}
{{ _('URL patterns') }}{{ manifest.urls|join(', ') if manifest.urls else _('None') }}
{{ _('Code source') }}{{ manifest.code_source or _('None') }}
{{ _('On disk') }} {% if manifest.on_disk %}{{ _('Yes') }}{% else %}{{ _('No') }}{% endif %} {% if manifest.on_disk_path %} {{ manifest.on_disk_path }}{% endif %}
{{ _('Protection domain') }}{{ manifest.protection_domain or _('Unknown') }}
{{ _('Context path') }}{{ manifest.context_path or _('None') }}
{{ _('Probe URL') }}{{ manifest.probe_url or _('None') }}
{{ _('JVM self-attach') }}{{ manifest.attach_self or _('Unknown') }}
{% if container %}
{{ _('Container') }}
{% endif %} {% if jvm_arguments %}
{{ _('JVM input arguments') }}
{% endif %}
{{ _('Class bytes') }}
{% if manifest.class_bytes_available %} {{ _('Stored') }} {{ manifest.class_bytes_file }} ({{ manifest.class_bytes_source or _('source unknown') }}) {% else %} {{ _('Not available') }} {{ manifest.class_bytes_unavailable_reason or _('Reason not reported.') }} {% endif %}
{% if heap and heap.path %}
{{ _('Heap dump') }}
{{ heap.path }}
{{ heap.bytes }} {{ _('bytes') }} ยท sha256 {{ heap.sha256 or _('unknown') }}
{% elif manifest.heap_error %}
{{ _('Heap dump:') }} {{ manifest.heap_error }}
{% endif %} {% if methods %}
{{ _('Declared methods') }} ({{ methods|length }})
{% endif %} {% if fields %}
{{ _('Declared fields') }} ({{ fields|length }})
{% endif %}
{{ _('Raw manifest.json') }}
{{ json_text }}
{% endif %}