Documentation Standards & Authoring¶
Authoring with Org-mode¶
We use orgmode as our primary authoring format. It provides a structured
environment for capturing technical notes, code snippets, and mathematical
notation.
- Syntax Reference
If you are new to Org-mode, consult the Org Mode Manual for basic syntax.
- Definition Lists :: Use the format: ~- Term
Definition~.
- Source Blocks
Use
#+BEGIN_SRCblocks for code samples.
Documentation Framework¶
While the Diátaxis framework informs the content categories, we organize the physical files as follows:
- Root
High-level project state like
index.org,changelog.org,devnotes.org.- Contributing
Logistical guides for developers like
contributing/index.org,test_requirements.org.- Tools
Practical tool documentation organized by submodule like
tools/eon/,tools/geom/.
Writing Style¶
To ensure the build pipeline handles your contribution correctly, follow these authoring rules:
- Command Line Reference
Use the
.. click::directive inside a#+BEGIN_EXPORT rstblock to automatically generate CLI documentation.- External References
Use the
@@rst::...@@syntax for specific intersphinx links (e.g., pointing to the eOn schema).- Source Code Links
Link to the internal API reference using
@@rst::mod:`rgpycrumbs.path.to.module`@@.
Content Structure Template for Tools¶
Every new tool documentation should follow this approximate structure:
- Title
A clear heading for the tool.
- CLI Export
The
clickdirective for automated help output.- Usage
A
#+BEGIN_SRC shellblock showing a real-world example.- Integration
Context on how the tool interacts with external software (e.g., eOn config snippets).
- API Reference
A link to the developer source documentation.
Verifying Changes¶
While the build happens automatically, you should verify the rendered output to ensure your Org-mode syntax translates correctly to Sphinx.
Pull Request Previews¶
Every Pull Request triggers an automated build. Once completed, a bot posts a comment with a link to a live preview.
- Review checklist
You must check this preview before requesting a review. Pay close attention to cross-references and table rendering.
Local Build¶
If you need to verify changes locally before pushing:
pixi run r docbld
Outputs to docs/build/, served with:
python -m http.server -d docs/build
# visit localhost:8000 in the browser
For a clean rebuild:
pixi run r docdel
README and Branch Structure¶
The README.md is generated from readme_src.org via Emacs batch export.
- Pre-commit hook
A
prekhook (gen-readme) regeneratesREADME.mdwheneverreadme_src.orgis staged. Requiresemacs; skips silently if unavailable.- CI workflow
The
Generate READMEworkflow pushes the renderedREADME.mdandbranding/assets to the orphanreadmebranch on every push tomainthat touchesreadme_src.org.- Authoritative copy
The
readmebranch is the GitHub default and always holds the latest rendered README. The copy onmainis a local convenience; thereadmebranch is the source of truth for what GitHub displays.
All source code and development happens on main. The readme branch should
never be edited directly.
Release notes and changelog¶
The changelog entries stem from newsfragments handled by
towncrier.
News fragments¶
Every Pull Request must include a news fragment. These small text files in
markdown format, within docs/newsfragments/ describe the changes for the
final user.
Creating a Fragment¶
We recommend uvx to generate a fragment. This ensures the use of the correct
tool version without polluting the local environment.
uvx towncrier create -c "Refactored internal import helper to use importlib." +core.fixed
Fragment Categories¶
The system recognizes specific keywords to organize the changelog:
+addedNew features or tools.
+fixedBug resolutions.
+changedModifications to existing logic.
+devInternal developer-facing updates.
+security,+removed,+deprecatedSpecific lifecycle updates.