{# The app chrome — the kit's .mgf-console shell (mgf/console.html, M1 P4.2) with fed-web's chrome in its blocks: last-check line + the global sync pill + the global actions in the top bar; the federation/project nav + the state-language legend in the rail. The shell markup/CSS live in mgf-brand-web (one source of truth); only fed-web content lives here. #} {% extends "mgf/console.html" %} {% block title %}mgf-fed-web — federation control surface{% endblock %} {% block mark_title %}mgf-fed-web{% endblock %} {% block mark_sub %}federation control surface{% endblock %} {% block topbar %} {{ chrome.check_mode }} check · {{ chrome.last_checked }} {{ chrome.pill.label }} {% if chrome.pill.counts %}{{ chrome.pill.counts }}{% endif %} {# Global sync actions — fan out across every project, aggregate into the pill (spec §5.5). Check all is safe (deep, non-mutating); Force-sync all is the affirmative mutation (gold) behind a confirm disclosure. #}
Force-sync all

Rebuilds generated/ for every drifting project in the working tree — uncommitted; you commit project-side.

{% endblock %} {% block rail_label %}Federation navigation{% endblock %} {% block rail %} {% import "macros.html" as m %}
Federation
Federation overview all projects combined
Projects
{% for p in chrome.projects %} {{ p.name }} {{ p.kind }} {% else %}

no projects discovered

{% endfor %}
State language
{% for state, desc in chrome.legend %}
{{ state }}
{{ desc }}
{% endfor %}

Provenance (commits · hashes · times) is mono. {{ m.derived() }} = inferred by mgf-fed-web, never project-reported fact.

{% endblock %} {% block scripts %} {# Progressive enhancement (no framework): keep a sync action's name through the flow — Force-sync → "Force-syncing…" — and flip the acted chip to its transient CHECKING/SYNCING state while the POST round-trips (spec §1.5, §5.9). Degrades to a plain POST with JS off; never load-bearing — the server re-renders the resolved state regardless, and a cancelled confirm() (defaultPrevented) is left untouched. #} {% endblock %}