<feed xmlns='http://www.w3.org/2005/Atom'>
<title>dotemacs/todo.org, branch load-graph-classify-end</title>
<subtitle>My Emacs configuration
</subtitle>
<id>https://git.cjennings.net/dotemacs/atom?h=load-graph-classify-end</id>
<link rel='self' href='https://git.cjennings.net/dotemacs/atom?h=load-graph-classify-end'/>
<link rel='alternate' type='text/html' href='https://git.cjennings.net/dotemacs/'/>
<updated>2026-05-24T21:57:56+00:00</updated>
<entry>
<title>docs(load-graph): classify domain, integration, and optional modules</title>
<updated>2026-05-24T21:57:56+00:00</updated>
<author>
<name>Craig Jennings</name>
<email>c@cjennings.net</email>
</author>
<published>2026-05-24T21:57:56+00:00</published>
<link rel='alternate' type='text/html' href='https://git.cjennings.net/dotemacs/commit/?id=cad351ec00c3f78cfb6e203d87c7309a620e485c'/>
<id>urn:sha1:cad351ec00c3f78cfb6e203d87c7309a620e485c</id>
<content type='text'>
Eighth classification batch: 17 domain/integration/optional modules — ai-config, ai-vterm, browser-config, calendar-sync, calibredb-epub-config, chrono-tools, dirvish-config, dwim-shell-config, erc-config, eshell-config, eww-config, flyspell-and-abbrev, games-config, gloss-config, httpd-config, jumper, latex-config. I annotated each header, added a Batch 8 table to the inventory, and extended the validation allowlist. 82 of 102 modules are now classified.

Almost all are eager only by init order and become command/hook/mode-loaded. calendar-sync stays eager when its .local.el is present. One new hidden dependency: calendar-sync guards its C-; g registration with a boundp shim and doesn't require keybindings, so the binding drops standalone.

I deferred elfeed-config rather than annotate it. Its header edit triggers byte-compilation, and the existing tests only pass when the module loads as interpreted source — the compiled cj/elfeed-process-entries inlines an elfeed struct accessor the stubs can't intercept, and the batch test environment has no elfeed package to build real structs. It needs its tests rewritten first, recorded in the inventory and a new todo task.

Also made the header allowlist scoping test durable: it used games-config (now classified) as its unclassified example; switched to a sentinel name plus a duplicate-entry guard.
</content>
</entry>
<entry>
<title>docs(init): retire stale module comments and track follow-ups</title>
<updated>2026-05-24T21:13:08+00:00</updated>
<author>
<name>Craig Jennings</name>
<email>c@cjennings.net</email>
</author>
<published>2026-05-24T21:13:08+00:00</published>
<link rel='alternate' type='text/html' href='https://git.cjennings.net/dotemacs/commit/?id=09d51da39d01843011ab8e1206da5fe90de8d8f9'/>
<id>urn:sha1:09d51da39d01843011ab8e1206da5fe90de8d8f9</id>
<content type='text'>
Three init.el requires carried vague comments: latex-config "WIP need to fix", prog-shell "combine elsewhere", and a "Modules In Test" banner. I replaced them with descriptive comments and moved the real follow-up work into todo.org tasks: investigate the latex-config state, and decide whether prog-shell config folds into prog-general. I also marked the module-classification task DOING.
</content>
</entry>
<entry>
<title>docs(todo): close coverage backlog after assessing the sub-60% cluster</title>
<updated>2026-05-24T20:33:04+00:00</updated>
<author>
<name>Craig Jennings</name>
<email>c@cjennings.net</email>
</author>
<published>2026-05-24T20:33:04+00:00</published>
<link rel='alternate' type='text/html' href='https://git.cjennings.net/dotemacs/commit/?id=6479f122c3544d29fefedd749f6adaf29aca04af'/>
<id>urn:sha1:6479f122c3544d29fefedd749f6adaf29aca04af</id>
<content type='text'>
Read each remaining sub-60% module to separate real untested logic from interactive/config glue. Filled the three genuine gaps (markdown-html, media-utils select-media-player, elfeed helpers — committed separately). The rest — flyspell, dashboard, ai-quick-ask — already have their pure logic tested with Normal/Boundary/Error; their low percentages come entirely from interactive commands. prog-general, restclient, vc-config, quick-video-capture are config/interactive-only with no pure logic to cover. Backlog cleared: every module's testable logic is covered; residual low % is code the testing rules say not to chase.
</content>
</entry>
<entry>
<title>docs(todo): refresh stale coverage backlog against a clean run</title>
<updated>2026-05-24T20:29:10+00:00</updated>
<author>
<name>Craig Jennings</name>
<email>c@cjennings.net</email>
</author>
<published>2026-05-24T20:29:10+00:00</published>
<link rel='alternate' type='text/html' href='https://git.cjennings.net/dotemacs/commit/?id=810665a72ddb7721585e045113a82a8c218072e7'/>
<id>urn:sha1:810665a72ddb7721585e045113a82a8c218072e7</id>
<content type='text'>
The per-module percentages in the coverage audit were stale — this session's test-writing covered most of the listed modules (prog-python 0%-&gt;100%, hugo-config 17.7%-&gt;91.7%, undead-buffers 5.7%-&gt;85.7%, and selection-framework / keyboard-compat / system-utils / system-defaults / ui-navigation / prog-go now ~100%). Re-measured against a clean make-coverage run and replaced the ~75 stale entries with current numbers for only the modules genuinely below ~60%. Modules in the 60-80% band are adequately covered and dropped. vc-config and quick-video-capture are flagged config/interactive-only (their pure logic is tested; the uncovered lines are use-package/interactive glue), so they're recorded as no-action rather than chased.
</content>
</entry>
<entry>
<title>docs(todo): log the third solo-hardening batch (move-branch, keymaps, export, elfeed/eww, capture tests)</title>
<updated>2026-05-24T19:44:14+00:00</updated>
<author>
<name>Craig Jennings</name>
<email>c@cjennings.net</email>
</author>
<published>2026-05-24T19:44:14+00:00</published>
<link rel='alternate' type='text/html' href='https://git.cjennings.net/dotemacs/commit/?id=7619d8a47c5f26f73b9cd4ab1c5c41f7aa76ef03'/>
<id>urn:sha1:7619d8a47c5f26f73b9cd4ab1c5c41f7aa76ef03</id>
<content type='text'>
</content>
</entry>
<entry>
<title>docs(todo): log the second solo-hardening batch (webclip, qvc timers, dir scans, vc cache, region scope)</title>
<updated>2026-05-24T12:27:26+00:00</updated>
<author>
<name>Craig Jennings</name>
<email>c@cjennings.net</email>
</author>
<published>2026-05-24T12:27:26+00:00</published>
<link rel='alternate' type='text/html' href='https://git.cjennings.net/dotemacs/commit/?id=8a57184a7307fdbe2b1b9bd2435b96dfa872d3f2'/>
<id>urn:sha1:8a57184a7307fdbe2b1b9bd2435b96dfa872d3f2</id>
<content type='text'>
</content>
</entry>
<entry>
<title>docs(todo): log the org-drill, git-clone, and video-capture hardening</title>
<updated>2026-05-24T09:31:03+00:00</updated>
<author>
<name>Craig Jennings</name>
<email>c@cjennings.net</email>
</author>
<published>2026-05-24T09:31:03+00:00</published>
<link rel='alternate' type='text/html' href='https://git.cjennings.net/dotemacs/commit/?id=5ca32b40cb54f8ae2800d304d5bbe53cbb760804'/>
<id>urn:sha1:5ca32b40cb54f8ae2800d304d5bbe53cbb760804</id>
<content type='text'>
</content>
</entry>
<entry>
<title>docs(dwim-shell): record accepted 7z password-on-argv tradeoff</title>
<updated>2026-05-24T09:20:48+00:00</updated>
<author>
<name>Craig Jennings</name>
<email>c@cjennings.net</email>
</author>
<published>2026-05-24T09:20:48+00:00</published>
<link rel='alternate' type='text/html' href='https://git.cjennings.net/dotemacs/commit/?id=175aad0b1a3dfec37f189ba0dcf34d3ba61b50eb'/>
<id>urn:sha1:175aad0b1a3dfec37f189ba0dcf34d3ba61b50eb</id>
<content type='text'>
7-Zip 26.01 reads the encryption password only from its controlling TTY, not stdin or a file — a piped password silently becomes an empty one — so it has to go on argv and is briefly visible in the process list. Rather than switch off the .7z format to gpg-wrapped tar, the exposure is accepted: single-user workstation, short-lived process, password already kept out of shell history by the mode-600 temp file. Documented the evaluated tradeoff in both encrypt/decrypt docstrings so it's visible at the call site.
</content>
</entry>
<entry>
<title>docs(todo): log the defensive restart/shutdown hardening</title>
<updated>2026-05-24T09:15:51+00:00</updated>
<author>
<name>Craig Jennings</name>
<email>c@cjennings.net</email>
</author>
<published>2026-05-24T09:15:51+00:00</published>
<link rel='alternate' type='text/html' href='https://git.cjennings.net/dotemacs/commit/?id=6b30734991a8b696562b01c7932bd93cb633e528'/>
<id>urn:sha1:6b30734991a8b696562b01c7932bd93cb633e528</id>
<content type='text'>
</content>
</entry>
<entry>
<title>docs(todo): log the three video-audio-recording hardening fixes</title>
<updated>2026-05-24T09:10:43+00:00</updated>
<author>
<name>Craig Jennings</name>
<email>c@cjennings.net</email>
</author>
<published>2026-05-24T09:10:43+00:00</published>
<link rel='alternate' type='text/html' href='https://git.cjennings.net/dotemacs/commit/?id=c60b6962341293c50139646367ce567dc6cf200b'/>
<id>urn:sha1:c60b6962341293c50139646367ce567dc6cf200b</id>
<content type='text'>
Closed the X11/audio shell-quoting, the scoped wf-recorder stop signal, and the selected-directory creation as dated event-log entries under the recording hardening tree.
</content>
</entry>
</feed>
