"""Unit: the per-source name/label/tags editor on the Sources page (phase 191, task 03). ``TODO.md`` L4: "Sources need a name, a label, tag(s) so you can focus the model when prompting if you have a project name or a standard name you reference things by." Tasks 01/02 stored that (``source_labels``, migration 0030) and exposed it (``/api/source-labels``); this task is the surface the owner types into — a SECOND list on ``/git-sources.html`` whose row list is the catalogue ``GET /api/source-labels`` (the union of every registry row's DERIVED name and every indexed document source, so git, local AND upload sources all get an editor without a second API): * the markup — the ``#source-labels-section`` card inside the admin-gated ``#git-sources-content`` (the page's gate is this list's gate: the anonymous path returns at the gate and never fetches it), its own ``.table-wrap`` (the phase-156 bounded panel + sticky header — the class alone, no divergent card rule), its ``role="alert"`` load-error line, its empty state, and ONE shared ``