# LESSON_LEARNED — mgf-fed-web

> Append-only, dated log of non-obvious lessons learned working in this repo.
> Newest first. One entry per lesson. Supersede a wrong past entry with a new
> one — never rewrite history. Federation rule: **DOC-19**.

---

## 2026-06-29 — The conformance ledger's table format is parser-load-bearing

- **Context:** the DOC-15 ledger (`docs/inprogress/MGF_STANDARDS_CONFORMANCE.md`) is
  scored by `mgf.fed._status._VERDICT_RE`, which matches
  `| <RULE-ID> | <✅|⏳|N/A|🚫> | …`.
- **What I learned:** the verdict glyph MUST be the **column immediately after** the rule
  id — i.e. the `| Rule | Verdict | Evidence |` layout. The newer
  `| Rule | Family | Evidence | Status |` layout (used by some seeded ledgers) puts a
  family name where the regex expects the glyph, so it matches **zero** MUSTs and the repo
  silently scores 0/0.
- **Why it matters:** a 0-MUST parse looks like "no conformance data" to the federation
  tooling, masking real coverage.
- **How to apply:** keep §Z (and §SHOULD) in `| Rule | Verdict | Evidence |` order; put
  the family in the row's evidence/prose, not in a second column.
- **Generalizes?:** yes — any machine-scored markdown table: pin the column order to the
  parser, and put human context in the free-text cell, not a new column.

---

## 2026-06-29 — File seeded (repo creation)

- **Context:** `mgf-fed-web` scaffolded as a conformant federation sibling — the
  read-mostly federation dashboard over the `mgf-fedres` spine (Phase B).
- **What I learned:** (seed entry) — the tool is a **thin presentation layer**; resist
  putting read/sync/live logic here (it belongs in the spine) and resist authoring project
  state (the dashboard is read-only + honest-absence).
- **Why it matters:** lessons left only in chat transcripts evaporate.
- **How to apply:** add a dated entry when you hit a gotcha or reusable technique.
- **Generalizes?:** n/a (seed entry).

---
