{# Shared body for the atomic-service page (full render + HTMX refresh). #}
{{ cycle.now }}
{{ cycle.cycle_start or "—" }}
{{ cycle.cycle_end or "—" }}
| Position | Runner | Slot Start | Slot End | State | Decision Reason |
|---|---|---|---|---|---|
| {{ row.position if row.position is not none else "—" }} | {{ row.runner_id }} |
{{ row.slot_start or "—" }} |
{{ row.slot_end or "—" }} |
{% if row.is_current_owner %} Owns slot {% else %} Waiting {% endif %} | {{ row.reason }} |
No active runners are eligible for atomic-service scheduling.
{% endif %}| Runner | Created | Last Heartbeat | Eligible | Last Service Start | Last Service End | Decision |
|---|---|---|---|---|---|---|
{{ row.runner_id }} |
{{ row.creation_time }} |
{{ row.last_heartbeat }} |
{% if row.allow_to_run_atomic_service %}
yes
{% if row.in_membership_grace %}
grace
{% elif row.in_runnable_set %}
runnable
{% endif %} {% else %}
no
{% endif %}
|
{{ row.last_service_start or "—" }}
|
{{ row.last_service_end or "—" }}
|
{% if row.decision %} {% if row.decision.should_try_start %}
try-start
{% else %}
skip
{% endif %}
{{ row.decision.reason }}
{% else %} — {% endif %}
|
No active runners.
{% endif %}| Created (UTC) | Reason | Cycle Start | Slot Start | Slot End | Observer | Message |
|---|---|---|---|---|---|---|
{{ event.created_at }} |
{{ event.reason }} | {{ event.cycle_start or "—" }} |
{{ event.slot_start or "—" }} |
{{ event.slot_end or "—" }} |
{{ event.runner_id }} |
{{ event.message or "—" }} |
No skip events recorded yet (derived from BLOCKED execution rows).
{% endif %}