aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--todo.org17
1 files changed, 17 insertions, 0 deletions
diff --git a/todo.org b/todo.org
index 2a5d03e6c..d64246c0a 100644
--- a/todo.org
+++ b/todo.org
@@ -60,6 +60,23 @@ From the 2026-06-15 lint-org sweep. Each needs a human read — these are judgme
- obsolete-properties-drawer — incorrect PROPERTIES drawer contents (lines 8392, 4201, 4023, 65, 55).
- misplaced-heading — possibly misplaced heading (line 8116).
+** TODO [#C] Reproducible face-coverage generator + coverage diff :feature:solo:
+=scripts/theme-studio/face-coverage.org= is hand-regenerated by a throwaway /tmp script each time. Commit a self-contained generator so the worklist regenerates with one command, plus a diff that names what coverage changed between runs.
+
+Generator — two pieces plus a Makefile target:
+- =face-coverage-dump.el= — batch elisp run via =emacsclient= against the live daemon (captures actually-loaded packages), with an =emacs --batch -l init.el= fallback for a clean checkout. For every face in =(face-list)= emit name, first-line docstring, and =(symbol-file f 'defface)=. One JSON/TSV out.
+- =face_coverage.py= — read that dump plus the studio's managed set (font-lock map from =build-theme.el=, =UI_FACES= from =generate.py=, =package-inventory.json=); classify each face core/general/package by where its defface lives (=/usr/share/emacs= = built-in, =elpa= = package); group; write =face-coverage.org= with the TODO/DONE tree, =[d/t]= cookies, per-face docstrings, and per-bucket descriptions (group-documentation / package summary).
+- =make face-coverage= runs both and writes the file.
+
+Carry over the manual logic already worked out: the CORE_HINT core-face set; the subsystem/package family buckets (including abbrev, which-func, git-gutter, git-commit, twentyfortyeight, yas, edit-indirect); the erc-ansi and =bg:erc=/=fg:erc= routing; and the separator-aware prefix match (=-=, =:=, =/=).
+
+Compare mode (=make face-coverage-diff=):
+- Parse the committed (HEAD) =face-coverage.org= and the freshly generated one into face→state maps via =^\*+ (TODO|DONE) name=. Report newly covered (TODO→DONE), newly present (new package or Emacs upgrade), disappeared (package removed), and net coverage with per-tier deltas.
+- =git diff face-coverage.org= already gives the raw line delta; this is the friendlier summary.
+- Optional: append a dated =covered/total= line to a small coverage-log for progress over time.
+
+Dump from the live daemon by default (reflects the packages actually run); the batch fallback won't see lazily-loaded packages until required.
+
** TODO [#B] Un-pin ghostel from 0.33.0 once upstream fixes #422/#423 :bug:
ghostel is held at 0.33.0 (=ghostel-20260604.2049=, commit 5779a2adceb2) in =modules/term-config.el= to dodge the 0.35.x native-PTY crash. When dakra/ghostel ships a fix for #422 (Linux malloc/signal reentrancy) and #423 (macOS recursive lock), restore =:ensure t= (drop the pin comment) and =package-upgrade ghostel=, then re-run the open-ghostel-in-a-GUI-frame survival check. Watch the two issues for the fixing commit.