{{ shown.headline }}

{# What the job changed elsewhere on the page: its own parts, then the strip's status and the pane, which any job may have changed (#457). `progress.js` redraws each only where the page has it. #} {% for element, route in shown.redraws + shell_redraws + branch_redraws %}{% endfor %} {% macro item_row(item) %}
  • {{ item.marker }} {{ item.name }} {% if item.detail %}- {{ item.detail }}{% endif %} {% for remedy in item.remedies %}

    {{ remedy }}

    {% endfor %} {% if item.ways %} {# A place to go: outside kennis in a tab that cannot reach back and is told nothing of where the reader came from; inside, the dialog. #}

    {% for way in item.ways %}{% if way.outside %}{{ icon("arrow-up-right") }}{{ way.label }}{% else %}{{ way.label }}{% endif %} {% endfor %}

    {% endif %} {% if item.repairs %} {# The repairs, and Skip beside them. A repair posts to the route every Add tab posts to, with and without a script. No candidate is checked: choosing would be kennis deciding which paper this is, so the browser asks instead. Each candidate links to its registry's page, in a tab that cannot reach back into kennis and is not told where the reader came from (11e). #}
    {% for repair in item.repairs %}
    {% for name, value in repair.fields %}{% endfor %} {% for choice, address in repair.candidates %} {% if address %} {{ icon("arrow-up-right") }}{% endif %} {% endfor %}
    {% endfor %}
    {% endif %}
  • {% endmacro %} {# What asks something of the reader first, one by one: a repair to choose, a command to run. Then everything else grouped by what happened and why, failures first: a group of one is its line, more is folded under the reason and the count, with the folder the names share said once (Brian, 2026-10-16). #} {% if shown.single %} {% endif %} {% for group in shown.groups %} {% if group.items | length == 1 %} {% else %}
    {{ icon("chevron-right") }}{{ group.marker }} {{ group.label }} {{ group.items | length }} {% if group.base %}

    {{ group.base }}

    {% endif %}
    {% endif %} {% endfor %} {% for note in shown.notes %}

    {{ note }}

    {% endfor %} {# The step the note above names, as a control. #} {% if shown.index_after %}
    {% endif %} {% if shown.sync_after %}{% set pane = pane_now(request) %}
    {% endif %} {% for step in shown.next_steps %}

    {{ step }}

    {% endfor %}