{% extends "base.html" %} {% import "macros.html" as m %} {% block title %}Federation overview — mgf-fed-web{% endblock %} {% block main %}
{{ 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.
| 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 }} | {# 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. #}{% 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.") }} | ||||