{% extends "base.html" %} {% import "macros.html" as m %} {% block title %}Federation overview — mgf-fed-web{% endblock %} {% block main %}

Federation overview

{{ chrome.projects|length }} project{{ '' if chrome.projects|length == 1 else 's' }} · combined

{{ summary }} The overview opens on the sync matrix — every project × its state, source@commit vs HEAD@commit. States are read {{ check_mode }}{% if check_mode == 'shallow' %} (manifest + HEAD) on load — run Check all for the authoritative deep verdict{% else %} (regenerate → diff) — authoritative{% endif %}; a project with no resources reads UNKNOWN, never blank.

Sync

Sync matrix

{{ m.derived() }} aggregate = worst project state
{% for p in matrix %} {# Per-row actions (spec §5.3): Check is safe; Force-sync confirms, then routes to the project so its settled state + result line are shown in full. #} {% else %} {% endfor %}
Project State Generated from → HEAD Checked Actions
{{ p.name }}{{ p.kind }} {{ m.sync_chip(p.sync_state) }} {% if p.source_commit %} {{ p.source_short }}{% if p.behind %}{{ p.head_short }}{% else %}{{ p.head_short }}{% endif %} {% if p.behind %} (behind){% endif %} {% else %}{% endif %}
{{ p.sync_detail }}
{{ chrome.check_mode }} · {{ chrome.last_checked }} {% if p.sync_state in ('UNKNOWN', 'UNREADABLE') %} can't check {% else %}
{% endif %}
{{ m.empty_inline("No projects discovered", "No sibling project carries a fed-resources/generated/manifest.json yet.") }}
{% endblock %}