aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorCraig Jennings <c@cjennings.net>2026-05-24 16:32:07 -0500
committerCraig Jennings <c@cjennings.net>2026-05-24 16:32:07 -0500
commit219018602f817bffedbb3d157fd9267d21f97098 (patch)
treef940ea51e3be586686fa456d790a581959e64d03
parent61dad3bd7b327eb0cf5bb3a6a0421a7055ed126b (diff)
downloaddotemacs-219018602f817bffedbb3d157fd9267d21f97098.tar.gz
dotemacs-219018602f817bffedbb3d157fd9267d21f97098.zip
docs(load-graph): classify programming modules
Sixth classification batch: prog-general plus the language modules — prog-c, prog-go, prog-lisp, prog-python, prog-webdev, prog-json, prog-yaml, prog-shell, prog-training. I annotated each header, added a Batch 6 table to the inventory, and extended the validation allowlist. 52 of 102 modules are now classified. prog-general owns the shared defaults and tree-sitter/LSP policy and stays eager. The language modules are eager only by init order and should load by major mode, so they're tagged Phase 6 deferral candidates. prog-shell's after-save executable hook is the one side effect worth scoping. No new hidden dependencies.
-rw-r--r--docs/design/module-inventory.org34
-rw-r--r--modules/prog-c.el10
-rw-r--r--modules/prog-general.el10
-rw-r--r--modules/prog-go.el10
-rw-r--r--modules/prog-json.el10
-rw-r--r--modules/prog-lisp.el10
-rw-r--r--modules/prog-python.el11
-rw-r--r--modules/prog-shell.el11
-rw-r--r--modules/prog-training.el10
-rw-r--r--modules/prog-webdev.el11
-rw-r--r--modules/prog-yaml.el10
-rw-r--r--tests/test-init-module-headers.el13
12 files changed, 137 insertions, 13 deletions
diff --git a/docs/design/module-inventory.org b/docs/design/module-inventory.org
index dbde1557..ea9ecda3 100644
--- a/docs/design/module-inventory.org
+++ b/docs/design/module-inventory.org
@@ -28,7 +28,8 @@ This inventory is independent from the helper inventory owned by
- Batch 3 (Core libraries and command modules): classified. 7 modules.
- Batch 4 (UI / core-UX modules, Layer 2): classified. 10 modules.
- Batch 5 (Dev entry-points, diff, help, lint, VC, Layer 2): classified. 9 modules.
-- 42 of 102 modules classified.
+- Batch 6 (Programming modules, Layer 2-4): classified. 10 modules.
+- 52 of 102 modules classified.
- No load-order changes have been made; =init.el= keeps its current eager order.
* Legend
@@ -136,6 +137,25 @@ Command entry points and package config for the development workflow: coverage
| =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 |
+** Batch 6 — Programming modules (Layer 2-4)
+
+prog-general owns the shared programming defaults and tree-sitter/LSP policy and
+stays eager. The language modules are eager only by init order and should load
+by major mode (Phase 6); prog-training is optional and already autoloads.
+
+| Module | Layer | Cat | Current | Target | Runtime requires | Top-level side effects | Direct load |
+|--------+-------+-----+---------+--------+------------------+------------------------+-------------|
+| =prog-general= | 2 | C/P/S | eager | eager | none | 4 add-hook, package config | yes |
+| =prog-c= | 3 | D/P | eager | mode | none | 6 add-hook, package config | yes |
+| =prog-go= | 3 | D/P | eager | mode | none | package config | yes |
+| =prog-lisp= | 3 | D/P | eager | mode | none | 2 add-hook, package config | yes |
+| =prog-python= | 3 | D/P | eager | mode | system-lib | package config; warns if pyright missing | yes |
+| =prog-webdev= | 3 | D/P | eager | mode | system-lib | package config; warns if prettier missing | yes |
+| =prog-json= | 3 | D/P | eager | mode | none | 1 add-hook, package config | yes |
+| =prog-yaml= | 3 | D/P | eager | mode | none | 1 add-hook, package config | yes |
+| =prog-shell= | 3 | D/P/S | eager | mode | none | 5 add-hook (after-save executable hook flagged) | yes |
+| =prog-training= | 4 | O/D/P | eager | command | none | package config (autoloaded) | yes |
+
* Hidden dependencies found
Discoveries that belong to Phase 2 (make dependencies explicit). Recorded here,
@@ -164,7 +184,7 @@ not fixed here.
* Pending classification
-The remaining 60 modules required by =init.el=, awaiting per-module inspection.
+The remaining 50 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
@@ -208,16 +228,6 @@ Org, then optional integrations.
- [ ] org-roam-config
- [ ] org-webclipper
- [ ] pdf-config
-- [ ] prog-c
-- [ ] prog-general
-- [ ] prog-go
-- [ ] prog-json
-- [ ] prog-lisp
-- [ ] prog-python
-- [ ] prog-shell
-- [ ] prog-training
-- [ ] prog-webdev
-- [ ] prog-yaml
- [ ] quick-video-capture
- [ ] reconcile-open-repos
- [ ] restclient-config
diff --git a/modules/prog-c.el b/modules/prog-c.el
index dbc11899..dd5d7ace 100644
--- a/modules/prog-c.el
+++ b/modules/prog-c.el
@@ -2,6 +2,16 @@
;; author Craig Jennings <c@cjennings.net>
;;; Commentary:
+;;
+;; Layer: 3 (Domain Workflow).
+;; Category: D/P.
+;; Load shape: eager.
+;; Eager reason: none necessary; currently eager but should load by C major mode
+;; (Phase 6 deferral candidate).
+;; Top-level side effects: six add-hook, package configuration via use-package.
+;; Runtime requires: none (configures packages via use-package).
+;; Direct test load: yes.
+;;
;; Modern C programming environment with LSP, tree-sitter, debugging, and formatting.
;;
;; Installation:
diff --git a/modules/prog-general.el b/modules/prog-general.el
index e7dd4989..dedf8a80 100644
--- a/modules/prog-general.el
+++ b/modules/prog-general.el
@@ -2,6 +2,16 @@
;; author: Craig Jennings <c@cjennings.net>
;;; Commentary:
+;;
+;; Layer: 2 (Core UX).
+;; Category: C/P/S.
+;; Load shape: eager.
+;; Eager reason: generic programming defaults, projectile, and the tree-sitter /
+;; LSP policy shared across every language mode.
+;; Top-level side effects: four add-hook, package configuration via use-package.
+;; Runtime requires: none (configures packages via use-package).
+;; Direct test load: yes.
+;;
;; This module provides general programming functionality not related to a
;; specific programming language, such as code-folding, project management,
;; highlighting symbols, snippets, and whitespace management.
diff --git a/modules/prog-go.el b/modules/prog-go.el
index 0d271617..0edfc206 100644
--- a/modules/prog-go.el
+++ b/modules/prog-go.el
@@ -2,6 +2,16 @@
;; author Craig Jennings <c@cjennings.net>
;;; Commentary:
+;;
+;; Layer: 3 (Domain Workflow).
+;; Category: D/P.
+;; Load shape: eager.
+;; Eager reason: none necessary; currently eager but should load by Go major
+;; mode (Phase 6 deferral candidate).
+;; Top-level side effects: package configuration via use-package (hooks via :hook).
+;; Runtime requires: none (configures packages via use-package).
+;; Direct test load: yes.
+;;
;; Configuration for Go programming using go-ts-mode (tree-sitter based).
;; Requires go-mode package for gofmt and related commands.
;;
diff --git a/modules/prog-json.el b/modules/prog-json.el
index 6dba6dee..7b49dff1 100644
--- a/modules/prog-json.el
+++ b/modules/prog-json.el
@@ -2,6 +2,16 @@
;; Author: Craig Jennings <c@cjennings.net>
;;; Commentary:
+;;
+;; Layer: 3 (Domain Workflow).
+;; Category: D/P.
+;; Load shape: eager.
+;; Eager reason: none necessary; currently eager but should load by JSON major
+;; mode (Phase 6 deferral candidate).
+;; Top-level side effects: one add-hook, package configuration via use-package.
+;; Runtime requires: none (configures packages via use-package).
+;; Direct test load: yes.
+;;
;; JSON editing with tree-sitter highlighting, one-key formatting, and
;; interactive jq queries against the current buffer.
;;
diff --git a/modules/prog-lisp.el b/modules/prog-lisp.el
index f82af40c..a5111669 100644
--- a/modules/prog-lisp.el
+++ b/modules/prog-lisp.el
@@ -2,6 +2,16 @@
;; author Craig Jennings <c@cjennings.net>
;;; Commentary:
+;;
+;; Layer: 3 (Domain Workflow).
+;; Category: D/P.
+;; Load shape: eager.
+;; Eager reason: none necessary; currently eager but should load by Lisp major
+;; modes (Phase 6 deferral candidate).
+;; Top-level side effects: two add-hook, package configuration via use-package.
+;; Runtime requires: none (configures packages via use-package).
+;; Direct test load: yes.
+;;
;; Configuration for Emacs Lisp, Common Lisp (SLIME), and Scheme (Guile).
;; ==== Common Lisp Setup (SLIME + Quicklisp) ====
diff --git a/modules/prog-python.el b/modules/prog-python.el
index 5f9a4175..d8556c4d 100644
--- a/modules/prog-python.el
+++ b/modules/prog-python.el
@@ -2,6 +2,17 @@
;; author Craig Jennings <c@cjennings.net>
;;; Commentary:
+;;
+;; Layer: 3 (Domain Workflow).
+;; Category: D/P.
+;; Load shape: eager.
+;; Eager reason: none necessary; currently eager but should load by Python major
+;; mode (Phase 6 deferral candidate).
+;; Top-level side effects: package configuration via use-package; warns at load
+;; if pyright is missing.
+;; Runtime requires: system-lib.
+;; Direct test load: yes.
+;;
;; Python programming environment with LSP, tree-sitter, and formatting.
;;
;; Installation:
diff --git a/modules/prog-shell.el b/modules/prog-shell.el
index 57347cc6..ca990c61 100644
--- a/modules/prog-shell.el
+++ b/modules/prog-shell.el
@@ -2,6 +2,17 @@
;; author Craig Jennings <c@cjennings.net>
;;; Commentary:
+;;
+;; Layer: 3 (Domain Workflow).
+;; Category: D/P/S.
+;; Load shape: eager.
+;; Eager reason: none necessary; currently eager but should load by shell major
+;; mode (Phase 6 deferral candidate).
+;; Top-level side effects: five add-hook, including an after-save executable hook
+;; the spec flags as needing opt-in/scoping; package config via use-package.
+;; Runtime requires: none (configures packages via use-package).
+;; Direct test load: yes.
+;;
;; Modern shell scripting environment with LSP, tree-sitter, linting, and formatting.
;;
;; Installation:
diff --git a/modules/prog-training.el b/modules/prog-training.el
index 9eb5a9a3..41f3053b 100644
--- a/modules/prog-training.el
+++ b/modules/prog-training.el
@@ -1,6 +1,16 @@
;;; prog-training.el --- Training -*- lexical-binding: t; coding: utf-8; -*-
;; author: Craig Jennings <c@cjennings.net>
;;; Commentary:
+;;
+;; Layer: 4 (Optional).
+;; Category: O/D/P.
+;; Load shape: eager.
+;; Eager reason: none; the C-h E / C-h L bindings already autoload their
+;; packages, so the eager require can drop to autoloads in Phase 4.
+;; Top-level side effects: package configuration via use-package (autoloaded).
+;; Runtime requires: none (configures packages via use-package).
+;; Direct test load: yes.
+;;
;; Use C-h E to launch Exercism when you want to fetch or submit practice problems.
;; Use C-h L for LeetCode sessions; the package drops solved files under ~/code/leetcode in Go format.
;; Both bindings autoload their packages, so invoking the key is the whole workflow.
diff --git a/modules/prog-webdev.el b/modules/prog-webdev.el
index fbe3825c..74cff732 100644
--- a/modules/prog-webdev.el
+++ b/modules/prog-webdev.el
@@ -2,6 +2,17 @@
;; Author: Craig Jennings <c@cjennings.net>
;;
;;; Commentary:
+;;
+;; Layer: 3 (Domain Workflow).
+;; Category: D/P.
+;; Load shape: eager.
+;; Eager reason: none necessary; currently eager but should load by web major
+;; modes (Phase 6 deferral candidate).
+;; Top-level side effects: package configuration via use-package; warns at load
+;; if prettier is missing.
+;; Runtime requires: system-lib.
+;; Direct test load: yes.
+;;
;; TypeScript, JavaScript, and HTML development with tree-sitter, LSP, and
;; prettier formatting.
;;
diff --git a/modules/prog-yaml.el b/modules/prog-yaml.el
index 8411f04c..6bb11a62 100644
--- a/modules/prog-yaml.el
+++ b/modules/prog-yaml.el
@@ -2,6 +2,16 @@
;; author: Craig Jennings <c@cjennings.net>
;;; Commentary:
+;;
+;; Layer: 3 (Domain Workflow).
+;; Category: D/P.
+;; Load shape: eager.
+;; Eager reason: none necessary; currently eager but should load by YAML major
+;; mode (Phase 6 deferral candidate).
+;; Top-level side effects: one add-hook, package configuration via use-package.
+;; Runtime requires: none (configures packages via use-package).
+;; Direct test load: yes.
+;;
;; YAML editing with tree-sitter highlighting and one-key formatting.
;;
;; Features:
diff --git a/tests/test-init-module-headers.el b/tests/test-init-module-headers.el
index f6c8e7ba..7ab99448 100644
--- a/tests/test-init-module-headers.el
+++ b/tests/test-init-module-headers.el
@@ -67,7 +67,18 @@
"help-utils"
"flycheck-config"
"test-runner"
- "vc-config")
+ "vc-config"
+ ;; Batch 6 — Programming modules (Layer 2-4)
+ "prog-general"
+ "prog-c"
+ "prog-go"
+ "prog-lisp"
+ "prog-python"
+ "prog-webdev"
+ "prog-json"
+ "prog-yaml"
+ "prog-shell"
+ "prog-training")
"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.")