{% if manifest %}
{{ manifest.status or "unknown" }}
Triggered by
{{ manifest.triggered_by or "—" }}
Events
{{ manifest.n_events if manifest.n_events is not none else "—" }}
Users w/ recs
{{ manifest.n_users_with_recommendations if manifest.n_users_with_recommendations is not none else "—" }}
Models
{{ manifest.models or "—" }}
{% if manifest.status == "failed" and manifest.error %}
{{ manifest.error }}
{% endif %}
{% else %}
No job runs recorded yet.
{% endif %} {% if events_enabled %}

Incremental events

kind={{ events_kind or "—" }}
{% if incremental %}
Last flush
{% if incremental.last_incremental_at %} {% else %} — {% endif %}
Status
{{ incremental.status or "—" }}
Events applied
{{ incremental.events if incremental.events is not none else "—" }}
{% if incremental.status == "failed" and incremental.error %}
{{ incremental.error }}
{% endif %}

Last successful flush from manifests. Live lag is on serve /metrics (cicerone_events_source_lag).

{% else %}

No incremental flushes recorded in recent manifests yet.

Live lag/backlog is on serve /metrics.

{% endif %}
{% endif %} {% if manifest %} {% if staleness.is_stale %}
Stale: expected another run by {{ staleness.expected_next_run }}, none seen yet.
{% elif staleness.error %}
Can't determine staleness: job.cron_schedule is misconfigured ({{ staleness.error }}).
{% endif %} {% endif %} {% if history %} {% for run in history %} {% endfor %}
Recent job runs
When Status Triggered by Error
{{ run.generated_at or "—" }} {{ run.status or "unknown" }} {{ run.triggered_by or "—" }} {{ run.error or "—" }}
{% if history|length == 1 %}

Only the latest run is available for this output backend (a "dataset" output overwrites manifest.json every run -- switch to a "db" output for full history).

{% endif %} {% endif %}