From 61dad3bd7b327eb0cf5bb3a6a0421a7055ed126b Mon Sep 17 00:00:00 2001 From: Craig Jennings Date: Sun, 24 May 2026 16:30:20 -0500 Subject: docs(load-graph): classify dev, diff, help, lint, and VC modules MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Fifth classification batch: the development-workflow entry points and package config — coverage-core, coverage-elisp, dev-fkeys, diff-config, help-config, help-utils, flycheck-config, test-runner, vc-config. I annotated each header, added a Batch 5 table to the inventory, and extended the validation allowlist. 42 of 102 modules are now classified. Two more hidden dependencies turned up, both about cj/custom-keymap. dev-fkeys repeats the custom-buffer-file boundp shim for its C-; P binding. flycheck-config binds (:map cj/custom-keymap ...) through use-package without requiring keybindings, so it fails to load standalone. Both recorded for the Phase 2 dependency pass. --- docs/design/module-inventory.org | 37 ++++++++++++++++++++++++++----------- modules/coverage-core.el | 9 +++++++++ modules/coverage-elisp.el | 9 +++++++++ modules/dev-fkeys.el | 12 ++++++++++++ modules/diff-config.el | 11 ++++++++++- modules/flycheck-config.el | 13 ++++++++++++- modules/help-config.el | 9 +++++++++ modules/help-utils.el | 9 +++++++++ modules/test-runner.el | 10 +++++++++- modules/vc-config.el | 10 ++++++++++ tests/test-init-module-headers.el | 12 +++++++++++- 11 files changed, 126 insertions(+), 15 deletions(-) diff --git a/docs/design/module-inventory.org b/docs/design/module-inventory.org index 9a6a147f..dbde1557 100644 --- a/docs/design/module-inventory.org +++ b/docs/design/module-inventory.org @@ -27,7 +27,8 @@ This inventory is independent from the helper inventory owned by - Batch 2 (Text/editing command modules, Layer 2): classified. 9 modules. - Batch 3 (Core libraries and command modules): classified. 7 modules. - Batch 4 (UI / core-UX modules, Layer 2): classified. 10 modules. -- 33 of 102 modules classified. +- Batch 5 (Dev entry-points, diff, help, lint, VC, Layer 2): classified. 9 modules. +- 42 of 102 modules classified. - No load-order changes have been made; =init.el= keeps its current eager order. * Legend @@ -118,6 +119,23 @@ eager reason and stay eager. | =dashboard-config= | 2 | C/S | eager | eager | none | builds/opens dashboard buffer at startup | conditional | | =nerd-icons-config= | 2 | C/P | eager | eager | none | package config | yes | +** Batch 5 — Dev entry-points, diff, help, lint, VC (Layer 2) + +Command entry points and package config for the development workflow: coverage +(F7), F-keys (F4/F6), diff, help, lint, the ERT runner, and Magit. + +| Module | Layer | Cat | Current | Target | Runtime requires | Top-level side effects | Direct load | +|--------+-------+-----+---------+--------+------------------+------------------------+-------------| +| =coverage-core= | 2 | C/L | eager | eager | seq, subr-x, system-lib | 1 global key (F7) | yes | +| =coverage-elisp= | 2 | C/P | eager | eager | coverage-core | backend registration | yes | +| =dev-fkeys= | 2 | C | eager | eager | cl-lib, system-lib | 6 F-key bindings; C-; P boundp-guarded | conditional | +| =diff-config= | 2 | C/P | eager | eager | none | package config | yes | +| =help-config= | 2 | C/P | eager | eager | none | 2 global keys, package config | yes | +| =help-utils= | 2 | L/D | eager | command | none | 1 global key, package config | yes | +| =flycheck-config= | 2 | C/P | eager | hook | none (needs keybindings for :map) | package config; cj/custom-keymap :map binding | conditional | +| =test-runner= | 2 | C/L | eager | eager | ert, cl-lib, keybindings | test keymap under cj/custom-keymap | yes | +| =vc-config= | 2 | C/P | eager | eager | user-constants, keybindings | 2 keymaps under cj/custom-keymap, package config | yes | + * Hidden dependencies found Discoveries that belong to Phase 2 (make dependencies explicit). Recorded here, @@ -137,10 +155,16 @@ not fixed here. is nil and the binding silently drops. That guard is the "define-if-not-present" shim the spec warns against. Phase 2/3 fix: require keybindings (or use the registration API once it exists) and drop the guard. +- =dev-fkeys= uses the same =(when (boundp 'cj/custom-keymap) ...)= shim plus an + =eval-when-compile= declaration for its =C-; P= binding, so the binding + silently drops when loaded without keybindings. Same Phase 2/3 fix. +- =flycheck-config= binds =(:map cj/custom-keymap ...)= through use-package but + does not require keybindings, so the binding fails when the module loads + standalone. Phase 2 fix: require keybindings (or move to the registration API). * Pending classification -The remaining 69 modules required by =init.el=, awaiting per-module inspection. +The remaining 60 modules required by =init.el=, awaiting per-module inspection. Each batch reads these against their source and moves them into [[*Classified modules][Classified modules]] with a load-graph header. Suggested batch order follows the spec: text/editing command modules, then UI, then programming, then @@ -152,22 +176,15 @@ Org, then optional integrations. - [ ] calendar-sync - [ ] calibredb-epub-config - [ ] chrono-tools -- [ ] coverage-core -- [ ] coverage-elisp -- [ ] dev-fkeys -- [ ] diff-config - [ ] dirvish-config - [ ] dwim-shell-config - [ ] elfeed-config - [ ] erc-config - [ ] eshell-config - [ ] eww-config -- [ ] flycheck-config - [ ] flyspell-and-abbrev - [ ] games-config - [ ] gloss-config -- [ ] help-config -- [ ] help-utils - [ ] httpd-config - [ ] hugo-config - [ ] jumper @@ -207,10 +224,8 @@ Org, then optional integrations. - [ ] slack-config - [ ] system-commands - [ ] telega-config -- [ ] test-runner - [ ] tramp-config - [ ] transcription-config -- [ ] vc-config - [ ] video-audio-recording - [ ] vterm-config - [ ] weather-config diff --git a/modules/coverage-core.el b/modules/coverage-core.el index 47e891e6..0a8b2464 100644 --- a/modules/coverage-core.el +++ b/modules/coverage-core.el @@ -2,6 +2,15 @@ ;; author: Craig Jennings ;;; Commentary: +;; +;; Layer: 2 (Core UX). +;; Category: C/L. +;; Load shape: eager. +;; Eager reason: the F7 coverage entry point and the backend registry. +;; Top-level side effects: one global key (F7). +;; Runtime requires: seq, subr-x, system-lib. +;; Direct test load: yes. +;; ;; Language-agnostic core for diff-aware coverage reporting. ;; ;; Reads an LCOV file, invokes git diff at a selectable scope, diff --git a/modules/coverage-elisp.el b/modules/coverage-elisp.el index 048c81dd..0c640c50 100644 --- a/modules/coverage-elisp.el +++ b/modules/coverage-elisp.el @@ -2,6 +2,15 @@ ;; author: Craig Jennings ;;; Commentary: +;; +;; Layer: 2 (Core UX). +;; Category: C/P. +;; Load shape: eager. +;; Eager reason: registers the elisp coverage backend after coverage-core; cheap. +;; Top-level side effects: backend registration via use-package. +;; Runtime requires: coverage-core. +;; Direct test load: yes. +;; ;; Registers the `elisp' coverage backend with `coverage-core'. ;; ;; Detection: a project root with a Makefile / Eask / Cask plus any diff --git a/modules/dev-fkeys.el b/modules/dev-fkeys.el index 3b0a818c..02e8a72e 100644 --- a/modules/dev-fkeys.el +++ b/modules/dev-fkeys.el @@ -1,6 +1,18 @@ ;;; dev-fkeys.el --- Developer F-key dispatchers -*- lexical-binding: t -*- ;;; Commentary: +;; +;; Layer: 2 (Core UX). +;; Category: C. +;; Load shape: eager. +;; Eager reason: the F4/F6 developer command entry points. +;; Top-level side effects: six global F-key bindings; conditionally registers a +;; C-; P binding. +;; Runtime requires: cl-lib, system-lib. keybindings is needed for the C-; P +;; binding but is declared only via eval-when-compile and guarded by `boundp', +;; so that binding silently drops standalone. Phase 2 fix. +;; Direct test load: conditional (C-; P registration skipped without keybindings). +;; ;; Project-aware F-key block for developer workflows: ;; ;; F4 completing-read of compile/run candidates filtered by project type diff --git a/modules/diff-config.el b/modules/diff-config.el index 45c2a778..75869a73 100644 --- a/modules/diff-config.el +++ b/modules/diff-config.el @@ -2,7 +2,16 @@ ;; author Craig Jennings ;;; Commentary: - +;; +;; Layer: 2 (Core UX). +;; Category: C/P. +;; Load shape: eager. +;; Eager reason: Ediff and diff UX defaults; eager only by init order, a +;; package-load deferral candidate. +;; Top-level side effects: package configuration via use-package. +;; Runtime requires: none. +;; Direct test load: yes. +;; ;; I've configured Ediff for a clean and efficient diff experience. ;; • Ediff will use a plain control window, horizontal splits, ignore whitespace, and only highlight the current change. diff --git a/modules/flycheck-config.el b/modules/flycheck-config.el index f064cb13..8932a3ac 100644 --- a/modules/flycheck-config.el +++ b/modules/flycheck-config.el @@ -2,7 +2,18 @@ ;; author Craig Jennings ;;; Commentary: - +;; +;; Layer: 2 (Core UX). +;; Category: C/P. +;; Load shape: eager. +;; Eager reason: general linting setup; spec target is hook-loaded, a deferral +;; candidate. +;; Top-level side effects: package configuration via use-package, binds into +;; cj/custom-keymap through use-package :map. +;; Runtime requires: keybindings is needed for the cj/custom-keymap :map binding +;; but is not required here; the binding fails standalone. Phase 2 fix. +;; Direct test load: conditional (needs cj/custom-keymap for the :map binding). +;; ;; This file configures Flycheck for on-demand syntax and grammar checking. ;; - Flycheck starts automatically only in sh-mode and emacs-lisp-mode diff --git a/modules/help-config.el b/modules/help-config.el index cfe67bf0..ce9fd861 100644 --- a/modules/help-config.el +++ b/modules/help-config.el @@ -3,6 +3,15 @@ ;;; Commentary: ;; +;; Layer: 2 (Core UX). +;; Category: C/P. +;; Load shape: eager. +;; Eager reason: help/info/man configuration and its keybindings; eager only by +;; init order, a deferral candidate. +;; Top-level side effects: two global keys, package configuration via use-package. +;; Runtime requires: none. +;; Direct test load: yes. +;; ;; This module enhances Emacs' built-in help system and documentation features. ;; It configures: ;; diff --git a/modules/help-utils.el b/modules/help-utils.el index 91ac8947..f9f5d142 100644 --- a/modules/help-utils.el +++ b/modules/help-utils.el @@ -3,6 +3,15 @@ ;; ;;; Commentary: ;; +;; Layer: 2 (Core UX). +;; Category: L/D. +;; Load shape: eager. +;; Eager reason: documentation-search commands; eager only by init order, a +;; deferral candidate (autoload commands) for Phase 4. +;; Top-level side effects: one global key, package configuration via use-package. +;; Runtime requires: none. +;; Direct test load: yes. +;; ;; This module provides various utilities for accessing documentation and help resources ;; directly within Emacs. ;; DevDocs for programming documentation diff --git a/modules/test-runner.el b/modules/test-runner.el index 1c993446..2a6f25e7 100644 --- a/modules/test-runner.el +++ b/modules/test-runner.el @@ -2,7 +2,15 @@ ;; author: Craig Jennings ;; ;;; Commentary: - +;; +;; Layer: 2 (Core UX). +;; Category: C/L. +;; Load shape: eager. +;; Eager reason: the test keymap entry point and project-scoped runner state. +;; Top-level side effects: defines a test keymap, registers it under cj/custom-keymap. +;; Runtime requires: ert, cl-lib, keybindings. +;; Direct test load: yes (requires keybindings explicitly). +;; ;; This module provides a powerful ERT test runner with focus/unfocus workflow ;; for efficient test-driven development in Emacs Lisp projects. ;; diff --git a/modules/vc-config.el b/modules/vc-config.el index 45aec73b..8b82b4cc 100644 --- a/modules/vc-config.el +++ b/modules/vc-config.el @@ -1,6 +1,16 @@ ;;; vc-config.el --- Version Control Configuration -*- lexical-binding: t; coding: utf-8; -*- ;; author: Craig Jennings ;;; Commentary: +;; +;; Layer: 2 (Core UX). +;; Category: C/P. +;; Load shape: eager. +;; Eager reason: the C-x g Magit entry point and the git keymap. +;; Top-level side effects: defines two keymaps, registers under cj/custom-keymap, +;; package configuration via use-package. +;; Runtime requires: user-constants, keybindings. +;; Direct test load: yes (requires keybindings explicitly). +;; ;; C-x g is my general entry to Magit's version control via the status page. ;; Navigating changes in file happens via git gutter diff --git a/tests/test-init-module-headers.el b/tests/test-init-module-headers.el index df3df728..f6c8e7ba 100644 --- a/tests/test-init-module-headers.el +++ b/tests/test-init-module-headers.el @@ -57,7 +57,17 @@ "mousetrap-mode" "popper-config" "dashboard-config" - "nerd-icons-config") + "nerd-icons-config" + ;; Batch 5 — Dev entry-points, diff, help, lint, VC (Layer 2) + "coverage-core" + "coverage-elisp" + "dev-fkeys" + "diff-config" + "help-config" + "help-utils" + "flycheck-config" + "test-runner" + "vc-config") "Modules annotated with the load-graph header contract. Grows one batch at a time. Parity with the init.el require set is the Phase 1 exit criterion.") -- cgit v1.2.3