2. Constraints¶
Constraints limit the solution space for HermesBaby's architecture and implementation. They are not open for negotiation within the project.
2.1. Technical Constraints¶
Constraint |
Background |
|---|---|
Python 3 runtime required on every host that runs HermesBaby |
HermesBaby is distributed as a Python package. A compatible Python 3 interpreter must be available on the workstation, devcontainer, or CI runner. The exact minimum version is declared in |
Sphinx and MyST-Parser are the document rendering engine |
HermesBaby delegates all source-to-HTML/PDF conversion to Sphinx. MyST-Parser extends Sphinx to accept MyST Markdown source files. Both are mandatory runtime dependencies with their own release cycles, which can introduce breaking changes. |
PlantUML requires a Java Runtime Environment on the build host |
Sequence diagrams and other UML diagrams are authored as |
draw.io CLI required for block diagram rendering |
Block diagrams are authored as |
Git executable required on build hosts that inject metadata |
HermesBaby injects build-time metadata (commit hash, branch name, tags) from the local Git repository into the generated documentation. The |
SSH client and configured key required for |
Publishing transfers artefacts to a remote host via SCP/SSH. A compatible SSH client and a private key file must be present and configured in |
Windows 10+ and Linux (Debian/Ubuntu) are the supported operating systems |
HermesBaby is tested on these two platforms. macOS may work but is not an officially supported target. CI runners are assumed to be Linux-based. |
Build must succeed without internet access after initial dependency installation |
Engineering organisations often run CI in restricted or air-gapped networks. After |
2.2. Organisational Constraints¶
Constraint |
Background |
|---|---|
Distributed as a pip-installable PyPI package |
Installation must work with |
Open source; all dependencies must have compatible licences |
HermesBaby is published under an open-source licence. Every dependency must carry a licence that is compatible with this. Proprietary or copyleft-only dependencies are not permitted. |
Source code and issue tracking hosted on GitHub |
Repository, issue tracking, pull requests, and CI/CD pipelines all run on GitHub. Contributions follow the standard GitHub pull-request workflow. |
No breaking changes to the CLI or |
Engineering teams embed |
No dependency on proprietary or commercial tool licences for reading, reviewing, or building |
Regulated engineering mandates traceability, auditability, and rigor — not specific tools [MW26]. Every part of the HermesBaby workflow must be accessible with free, open-source tools. No contributor or reviewer should need a commercial licence to open, diff, or review any documentation artefact. |
2.3. Conventions¶
Convention |
Background |
|---|---|
|
All project metadata, build paths, publishing targets, and styling settings live in a single |
Documentation source files are authored in MyST Markdown |
All user-facing documentation content is written in |
Block diagrams are DrawIO files; sequence diagrams are PlantUML files |
|
Semantic versioning (MAJOR.MINOR.PATCH) |
HermesBaby releases follow semantic versioning. A MAJOR bump signals breaking changes in the CLI interface or |