# mgf-fed-web

**The Magogi Foundation federation dashboard** — a read-mostly web tool that, **per
project**, composes and displays the schema-governed `fed-resources/generated/` state
that the **`mgf-fedres`** spine produces: status, roadmap, architecture, focus,
suggestions, sync state, feedback rounds, and live activity. Part of the Magogi
Foundation federation, under the `mgf.*` namespace.

```
mgf-brand-web 0.2        CSS tokens + the operator-instrument layer (mounted at /static/brand)
        |
mgf-fedres   0.1         the shared spine — schemas + version-aware reader + sync engine
        |                + SourceProvider seam + live NDJSON + run-records + the `fedres` CLI
        |
mgf-fed-web  <-- you are here   the federation console (FastAPI + Jinja, htmx-optional)
            composes + displays generated/ · NEVER authors project state
            8 lenses · sync matrix · feedback rounds · Follow-live
```

## What this is

A federated, **read-mostly** dashboard. The one rule that makes it trustworthy: **the
web is never a second source of truth.** Each project *generates* its
`fed-resources/generated/` set from its own real artifacts; `mgf-fed-web` only
**composes and displays** them, tags anything it computes itself `derived`, and relies
on the spine's freshness gate (`regenerate → byte-identical`) so "in sync" is real.

- **The lenses** — the same render code at either scope (one project, or the federation
  overview): **Roadmap · In progress · Stalled · Next best · Decisions · Changed ·
  Coupling · Architecture**, each answering a question from reported facts.
- **The sync matrix** — every project × its first-class sync state
  (`IN_SYNC / STALE / TAMPERED / UNKNOWN / UNREADABLE / CHECKING / SYNCING / ERROR`),
  with `Check sync` (non-mutating) and `Force-sync` (regenerate-only on governed repos).
- **Feedback rounds** — a non-operative human↔AI loop: compose + deliver `feedback.json`
  into a project's inbox; render its `response.json`; never auto-commit into a governed repo.
- **Follow-live** — a telemetry-tagged mode on the In-progress lens that tails the spine's
  `live/` NDJSON; ephemeral, never gated, never styled as provenance.
- **Honest-absence everywhere** — a missing / stale / unreadable resource renders the
  explicit state with the one action that fixes it; never a blank, never stale-as-current.

All the read / sync / live logic lives in **`mgf-fedres`**; this distribution is a thin
presentation layer over it, rendered with the **`mgf-brand-web`** instrument kit.

## Status

**Skeleton / pre-implementation (0.1.0, Pre-Alpha).** Only the DOC-01 documentation
baseline + the packaging shape (the FastAPI/Jinja distribution + the `mgf.fed_web`
namespace package) exist. The FastAPI app — the routes, templates, lenses, sync UI,
feedback loop, and Follow-live — is **M2+ and not yet built** (the spine, `mgf-fedres`,
is built first).

The authoritative contract for this tool — the spec, the build brief, and the working
dashboard wireframe — lives in the spine repo under
[`mgf-fedres/docs/planning/mgf-fed-web/`](https://codeberg.org/magogi-admin/mgf-fedres/src/branch/main/docs/planning/mgf-fed-web/),
alongside the end-to-end [`PLAN.md`](https://codeberg.org/magogi-admin/mgf-fedres/src/branch/main/docs/planning/PLAN.md)
(this tool is Phase B).

## License

MIT © The Magogi Foundation
