aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorCraig Jennings <c@cjennings.net>2026-05-24 16:34:16 -0500
committerCraig Jennings <c@cjennings.net>2026-05-24 16:34:16 -0500
commit02baa68063f02cc571789c03b1101c28d139200d (patch)
tree5b793809ed281b4341127a60da9a5572a3e67369
parent219018602f817bffedbb3d157fd9267d21f97098 (diff)
downloaddotemacs-02baa68063f02cc571789c03b1101c28d139200d.tar.gz
dotemacs-02baa68063f02cc571789c03b1101c28d139200d.zip
docs(load-graph): classify Org modules
Seventh classification batch: the thirteen Org modules — config, agenda, babel, capture, contacts, drill, export, noter, refile, reveal, roam, webclipper, hugo. I annotated each header, added a Batch 7 table to the inventory, and extended the validation allowlist. 65 of 102 modules are now classified. The daily workflows (config, agenda, capture, refile, roam) keep their eager reason per the spec's Phase 6 target. Babel and contacts move to after-load; export, reveal, drill, noter, webclipper, and hugo become command-loaded. The agenda and refile idle-timer caches are recorded as the side effects the spec already tracks for cache-lifecycle work. No new hidden dependencies.
-rw-r--r--docs/design/module-inventory.org41
-rw-r--r--modules/hugo-config.el10
-rw-r--r--modules/org-agenda-config.el10
-rw-r--r--modules/org-babel-config.el10
-rw-r--r--modules/org-capture-config.el11
-rw-r--r--modules/org-config.el11
-rw-r--r--modules/org-contacts-config.el10
-rw-r--r--modules/org-drill-config.el9
-rw-r--r--modules/org-export-config.el10
-rw-r--r--modules/org-noter-config.el10
-rw-r--r--modules/org-refile-config.el11
-rw-r--r--modules/org-reveal-config.el10
-rw-r--r--modules/org-roam-config.el11
-rw-r--r--modules/org-webclipper.el9
-rw-r--r--tests/test-init-module-headers.el16
15 files changed, 172 insertions, 17 deletions
diff --git a/docs/design/module-inventory.org b/docs/design/module-inventory.org
index ea9ecda3..aa6d3c1f 100644
--- a/docs/design/module-inventory.org
+++ b/docs/design/module-inventory.org
@@ -29,7 +29,8 @@ This inventory is independent from the helper inventory owned by
- 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.
- Batch 6 (Programming modules, Layer 2-4): classified. 10 modules.
-- 52 of 102 modules classified.
+- Batch 7 (Org modules, Layer 3-4): classified. 13 modules.
+- 65 of 102 modules classified.
- No load-order changes have been made; =init.el= keeps its current eager order.
* Legend
@@ -156,6 +157,29 @@ by major mode (Phase 6); prog-training is optional and already autoloads.
| =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 |
+** Batch 7 — Org modules (Layer 3-4)
+
+The daily Org workflows (config, agenda, capture, refile, roam) stay eager per
+the spec's Phase 6 target. Babel and contacts move to after-load; export,
+reveal, drill, noter, webclipper, and hugo become command-loaded. The agenda
+and refile idle-timer caches are the side effects the spec tracks separately.
+
+| Module | Layer | Cat | Current | Target | Runtime requires | Top-level side effects | Direct load |
+|--------+-------+-----+---------+--------+------------------+------------------------+-------------|
+| =org-config= | 3 | C/D/P | eager | eager | keybindings | org-protocol, cj/custom-keymap binding, package config | yes |
+| =org-agenda-config= | 3 | D/S | eager | eager | user-constants, system-lib, cj-cache-lib | add-hook, idle-timer agenda cache | yes |
+| =org-babel-config= | 3 | D/P | eager | after-load | none | 1 global key, package config | yes |
+| =org-capture-config= | 3 | D/P | eager | eager | none | capture templates, org-protocol handlers | yes |
+| =org-contacts-config= | 3 | D/P | eager | after-load | user-constants | 1 global key, package config | yes |
+| =org-drill-config= | 4 | O/D/P | eager | command | user-constants, keybindings | drill keymap under cj/custom-keymap | yes |
+| =org-export-config= | 3 | D/P | eager | command | system-lib | package config | yes |
+| =org-noter-config= | 4 | O/D/P | eager | command | cl-lib, user-constants, keybindings | add-hook, keymap under cj/custom-keymap | yes |
+| =org-refile-config= | 3 | D/S | eager | eager | system-lib, cj-cache-lib | idle-timer refile cache | yes |
+| =org-reveal-config= | 4 | O/D/P | eager | command | none | package config | yes |
+| =org-roam-config= | 3 | D/P/S | eager | eager | user-constants | 1 global key, roam db setup, package config | yes |
+| =org-webclipper= | 4 | O/D/P | eager | command | none | org-protocol handler | yes |
+| =hugo-config= | 3 | D/P | eager | command | user-constants, host-environment | package config | yes |
+
* Hidden dependencies found
Discoveries that belong to Phase 2 (make dependencies explicit). Recorded here,
@@ -184,7 +208,7 @@ not fixed here.
* Pending classification
-The remaining 50 modules required by =init.el=, awaiting per-module inspection.
+The remaining 37 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
@@ -206,7 +230,6 @@ Org, then optional integrations.
- [ ] games-config
- [ ] gloss-config
- [ ] httpd-config
-- [ ] hugo-config
- [ ] jumper
- [ ] latex-config
- [ ] linear-config
@@ -215,18 +238,6 @@ Org, then optional integrations.
- [ ] mail-config
- [ ] markdown-config
- [ ] music-config
-- [ ] org-agenda-config
-- [ ] org-babel-config
-- [ ] org-capture-config
-- [ ] org-config
-- [ ] org-contacts-config
-- [ ] org-drill-config
-- [ ] org-export-config
-- [ ] org-noter-config
-- [ ] org-refile-config
-- [ ] org-reveal-config
-- [ ] org-roam-config
-- [ ] org-webclipper
- [ ] pdf-config
- [ ] quick-video-capture
- [ ] reconcile-open-repos
diff --git a/modules/hugo-config.el b/modules/hugo-config.el
index 1feaa452..94be9dd5 100644
--- a/modules/hugo-config.el
+++ b/modules/hugo-config.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; blog publishing is a command-loaded deferral candidate
+;; for Phase 4.
+;; Top-level side effects: package configuration via use-package.
+;; Runtime requires: user-constants, host-environment.
+;; Direct test load: yes.
+;;
;; Integrates ox-hugo for publishing Org files to a Hugo website.
;;
;; One-file-per-post workflow:
diff --git a/modules/org-agenda-config.el b/modules/org-agenda-config.el
index 231eff8a..3fa09708 100644
--- a/modules/org-agenda-config.el
+++ b/modules/org-agenda-config.el
@@ -3,6 +3,16 @@
;;
;;; Commentary:
;;
+;; Layer: 3 (Domain Workflow).
+;; Category: D/S.
+;; Load shape: eager.
+;; Eager reason: daily agenda workflow; the user expects agenda available at the
+;; first session.
+;; Top-level side effects: one add-hook and an idle timer that builds the agenda
+;; file cache 10s after startup (guarded; spec tracks the cache lifecycle).
+;; Runtime requires: user-constants, system-lib, cj-cache-lib.
+;; Direct test load: yes.
+;;
;; Performance:
;; - Caches agenda file list to avoid scanning projects directory on every view
;; - Cache builds asynchronously 10 seconds after Emacs startup (non-blocking)
diff --git a/modules/org-babel-config.el b/modules/org-babel-config.el
index b3a3036a..821403a0 100644
--- a/modules/org-babel-config.el
+++ b/modules/org-babel-config.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; Babel language setup belongs after Org loads
+;; (after-load deferral candidate).
+;; Top-level side effects: one global key, package configuration via use-package.
+;; Runtime requires: none (configures packages via use-package).
+;; Direct test load: yes.
+;;
;; All Org-Babel and Org-Tempo Packages, Settings, and Languages.
;;; Code:
diff --git a/modules/org-capture-config.el b/modules/org-capture-config.el
index 39cafe03..43b42b5e 100644
--- a/modules/org-capture-config.el
+++ b/modules/org-capture-config.el
@@ -2,6 +2,17 @@
;; author: Craig Jennings <c@cjennings.net>
;;; Commentary:
+;;
+;; Layer: 3 (Domain Workflow).
+;; Category: D/P.
+;; Load shape: eager.
+;; Eager reason: capture is a daily hot path; org-protocol capture handlers must
+;; be registered for external capture to work.
+;; Top-level side effects: capture templates and org-protocol handlers via
+;; use-package.
+;; Runtime requires: none (configures packages via use-package).
+;; Direct test load: yes.
+;;
;; Customizations related to org-capture and org-refile.
;; Includes capture templates for tasks, links, PDFs, EPUBs, emails, and drill questions.
diff --git a/modules/org-config.el b/modules/org-config.el
index a2615b0c..8ebfdbdb 100644
--- a/modules/org-config.el
+++ b/modules/org-config.el
@@ -1,7 +1,16 @@
;;; org-config --- Settings and Enhancements to Org Mode -*- lexical-binding: t; coding: utf-8; -*-
;; author Craig Jennings <c@cjennings.net>
;;; Commentary:
-
+;;
+;; Layer: 3 (Domain Workflow).
+;; Category: C/D/P.
+;; Load shape: eager.
+;; Eager reason: core Org behavior and org-protocol setup; a daily-driver hot path.
+;; Top-level side effects: org-protocol setup, a cj/custom-keymap binding,
+;; package configuration via use-package.
+;; Runtime requires: keybindings.
+;; Direct test load: yes (requires keybindings explicitly).
+;;
;; note: org-archive-location is set in the :config section after org loads
;;; Code:
diff --git a/modules/org-contacts-config.el b/modules/org-contacts-config.el
index ff14629b..bd39b6e8 100644
--- a/modules/org-contacts-config.el
+++ b/modules/org-contacts-config.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; belongs after Org/mail load (after-load
+;; deferral candidate).
+;; Top-level side effects: one global key, package configuration via use-package.
+;; Runtime requires: user-constants.
+;; Direct test load: yes.
+;;
;; Configuration for org-contacts, providing contact management within org-mode.
;; Integrates with mu4e for email address completion and org-roam for linking
;; contacts to projects and notes.
diff --git a/modules/org-drill-config.el b/modules/org-drill-config.el
index c3852ed1..b695619c 100644
--- a/modules/org-drill-config.el
+++ b/modules/org-drill-config.el
@@ -2,6 +2,15 @@
;; author: Craig Jennings <c@cjennings.net>
;;; Commentary:
;;
+;; Layer: 4 (Optional).
+;; Category: O/D/P.
+;; Load shape: eager.
+;; Eager reason: none; optional flashcard workflow, a command-loaded deferral
+;; candidate for Phase 4.
+;; Top-level side effects: defines a drill keymap, registers it under cj/custom-keymap.
+;; Runtime requires: user-constants, keybindings.
+;; Direct test load: yes (requires keybindings explicitly).
+;;
;; Notes: Org-Drill
;; `C-; D s' picks a flashcard file from `drill-dir' and starts a session;
;; `C-u C-; D s' lets you pick the directory first. `C-; D f' drills
diff --git a/modules/org-export-config.el b/modules/org-export-config.el
index 0cf0af15..493316f9 100644
--- a/modules/org-export-config.el
+++ b/modules/org-export-config.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; export backends/processes are a command-loaded deferral
+;; candidate for Phase 4.
+;; Top-level side effects: package configuration via use-package.
+;; Runtime requires: system-lib.
+;; Direct test load: yes.
+;;
;; This module configures Org mode's export capabilities, providing multiple
;; backend options for converting Org documents to various formats.
;;
diff --git a/modules/org-noter-config.el b/modules/org-noter-config.el
index ca8432a2..6504550f 100644
--- a/modules/org-noter-config.el
+++ b/modules/org-noter-config.el
@@ -2,6 +2,16 @@
;;; Commentary:
;;
+;; Layer: 4 (Optional).
+;; Category: O/D/P.
+;; Load shape: eager.
+;; Eager reason: none; PDF/EPUB note-taking is a command-loaded deferral
+;; candidate for Phase 4.
+;; Top-level side effects: one add-hook, defines a keymap, registers under
+;; cj/custom-keymap.
+;; Runtime requires: cl-lib, user-constants, keybindings.
+;; Direct test load: yes (requires keybindings explicitly).
+;;
;; Org-noter configuration for taking notes on PDF and EPUB documents.
;;
;; Workflow:
diff --git a/modules/org-refile-config.el b/modules/org-refile-config.el
index 3c3cc7da..a6b7ac3a 100644
--- a/modules/org-refile-config.el
+++ b/modules/org-refile-config.el
@@ -1,6 +1,17 @@
;;; org-refile-config.el --- Org Refile Customizations -*- lexical-binding: t; coding: utf-8; -*-
;; author: Craig Jennings <c@cjennings.net>
;;; Commentary:
+;;
+;; Layer: 3 (Domain Workflow).
+;; Category: D/S.
+;; Load shape: eager.
+;; Eager reason: daily refile workflow; the user expects refile targets ready at
+;; the first session.
+;; Top-level side effects: an idle timer that builds the refile-target cache
+;; (guarded; spec tracks the cache lifecycle).
+;; Runtime requires: system-lib, cj-cache-lib.
+;; Direct test load: yes.
+;;
;; Configuration and custom functions for org-mode refiling.
;;
;; Performance:
diff --git a/modules/org-reveal-config.el b/modules/org-reveal-config.el
index 89d5480e..bc002276 100644
--- a/modules/org-reveal-config.el
+++ b/modules/org-reveal-config.el
@@ -2,6 +2,16 @@
;; author: Craig Jennings <c@cjennings.net>
;;; Commentary:
+;;
+;; Layer: 4 (Optional).
+;; Category: O/D/P.
+;; Load shape: eager.
+;; Eager reason: none; presentation export is a command-loaded deferral
+;; candidate for Phase 4.
+;; Top-level side effects: package configuration via use-package.
+;; Runtime requires: none (configures packages via use-package).
+;; Direct test load: yes.
+;;
;; Integrates ox-reveal for creating reveal.js presentations from Org files.
;;
;; Fully offline workflow using a local reveal.js clone (managed by
diff --git a/modules/org-roam-config.el b/modules/org-roam-config.el
index c6e8977f..fdd9e1fc 100644
--- a/modules/org-roam-config.el
+++ b/modules/org-roam-config.el
@@ -1,6 +1,17 @@
;;; org-roam-config.el --- Org-Roam Config -*- lexical-binding: t; coding: utf-8; -*-
;; author: Craig Jennings <c@cjennings.net>
;;; Commentary:
+;;
+;; Layer: 3 (Domain Workflow).
+;; Category: D/P/S.
+;; Load shape: eager.
+;; Eager reason: daily knowledge-management workflow; capture/finalize hooks and
+;; the roam database.
+;; Top-level side effects: one global key, org-roam database setup, package
+;; configuration via use-package.
+;; Runtime requires: user-constants.
+;; Direct test load: yes.
+;;
;; Configuration and utilities for org-roam knowledge management.
;;
;; Key features:
diff --git a/modules/org-webclipper.el b/modules/org-webclipper.el
index 2a6d7164..9c2f1061 100644
--- a/modules/org-webclipper.el
+++ b/modules/org-webclipper.el
@@ -2,6 +2,15 @@
;;; Commentary:
;;
+;; Layer: 4 (Optional).
+;; Category: O/D/P.
+;; Load shape: eager.
+;; Eager reason: none; web clipping runs via org-protocol/command, a Phase 4
+;; protocol/command-loaded deferral candidate.
+;; Top-level side effects: org-protocol handler registration via use-package.
+;; Runtime requires: none (configures packages via use-package).
+;; Direct test load: yes.
+;;
;; This package provides a seamless "fire-and-forget" workflow for clipping
;; web pages from the browser directly into an Org file using org-protocol
;; and org-web-tools.
diff --git a/tests/test-init-module-headers.el b/tests/test-init-module-headers.el
index 7ab99448..267a9155 100644
--- a/tests/test-init-module-headers.el
+++ b/tests/test-init-module-headers.el
@@ -78,7 +78,21 @@
"prog-json"
"prog-yaml"
"prog-shell"
- "prog-training")
+ "prog-training"
+ ;; Batch 7 — Org modules (Layer 3-4)
+ "org-config"
+ "org-agenda-config"
+ "org-babel-config"
+ "org-capture-config"
+ "org-contacts-config"
+ "org-drill-config"
+ "org-export-config"
+ "org-noter-config"
+ "org-refile-config"
+ "org-reveal-config"
+ "org-roam-config"
+ "org-webclipper"
+ "hugo-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.")