<feed xmlns='http://www.w3.org/2005/Atom'>
<title>dotemacs/todo.org, branch load-graph-classify-start</title>
<subtitle>My Emacs configuration
</subtitle>
<id>https://git.cjennings.net/dotemacs/atom?h=load-graph-classify-start</id>
<link rel='self' href='https://git.cjennings.net/dotemacs/atom?h=load-graph-classify-start'/>
<link rel='alternate' type='text/html' href='https://git.cjennings.net/dotemacs/'/>
<updated>2026-05-24T20:33:04+00:00</updated>
<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>
<entry>
<title>docs(todo): close C-s isearch task — verified non-bug on Emacs 30.2</title>
<updated>2026-05-24T09:01:30+00:00</updated>
<author>
<name>Craig Jennings</name>
<email>c@cjennings.net</email>
</author>
<published>2026-05-24T09:01:30+00:00</published>
<link rel='alternate' type='text/html' href='https://git.cjennings.net/dotemacs/commit/?id=746e770ade412c8e7992b2a98441aebde000db3c'/>
<id>urn:sha1:746e770ade412c8e7992b2a98441aebde000db3c</id>
<content type='text'>
While isearch is active, overriding-terminal-local-map is isearch-mode-map, so C-s resolves to isearch-repeat-forward and the global cj/consult-line-or-repeat binding can't shadow it. isearch-mode-map already binds C-s to that default, so I left selection-framework.el unchanged.
</content>
</entry>
<entry>
<title>docs(ai-kb): fold in review 6 and resolve the build-time decisions</title>
<updated>2026-05-24T08:54:09+00:00</updated>
<author>
<name>Craig Jennings</name>
<email>c@cjennings.net</email>
</author>
<published>2026-05-24T08:54:09+00:00</published>
<link rel='alternate' type='text/html' href='https://git.cjennings.net/dotemacs/commit/?id=6ebd0314c880c4f9fc15936618ad412cef6ea309'/>
<id>urn:sha1:6ebd0314c880c4f9fc15936618ad412cef6ea309</id>
<content type='text'>
The latest design review was a UX and performance pass, and I folded its findings into the spec and the implementation tasks. The important one: human Emacs edits now use the same write path as agent writes. An ai-kb minor mode runs index, full lint, and commit under flock on after-save, so a hand edit can't quietly skip the safety gate. The rest: the generated index.org is now invisible to backlink and orphan logic (excluded from the scan, referenced as plain text rather than id-links), a required :SUMMARY: property feeds the index and query without inference, query gains lexical ranking with recency only as a tie-break, the switch installs a full org-roam profile rather than a two-variable swap, and the browsing surface (dashboard, find, search, show, backlinks, map) is named.

I also answered the six build-time decisions: concrete raw and curation limits, performance budgets for the perf fixtures, the lexical scoring weights, org-roam-graph as the first map implementation, the after-save failure UX (the save always lands, the commit is gated, and a failure shows without trapping the buffer), and the after-save recursion guard. The numeric limits and budgets are starting points to calibrate. The rest are firm. Step 1 stays buildable.
</content>
</entry>
</feed>
