Thank you for your interest in contributing to RunUpdates!
This project is part of the Linktech Engineering Tools Suite and follows a deterministic, operator‑grade engineering philosophy.
We welcome contributions that improve clarity, correctness, maintainability, and reproducibility.
RunUpdates is built around:
- deterministic behavior
- clean, structured logging
- predictable execution
- minimal dependencies
- audit‑friendly output
- explicit configuration (no magic)
- stable, documented interfaces
Please keep these principles in mind when proposing changes.
git clone https://github.com/Linktech-Engineering-LLC/RunUpdates.git
cd RunUpdatesgit checkout -b feature/my-improvementPlease ensure:
- no breaking changes to the inventory schema
- no hidden behavior or implicit defaults
- logging remains structured and operator‑grade
- code is deterministic and reproducible
- functions remain small and explicit
- no unnecessary dependencies are introduced
- new features include documentation updates where appropriate
- vault‑related environment variables ([RUNUPDATES_VAULT_PATH], [RUNUPDATES_VAULT_PASSWORD_FILE]) continue to work correctly
ruff check .Your PR should include:
- a clear description of the change
- why it improves the project
- any relevant test cases or examples
- confirmation that it does not break existing inventories
- notes on any new configuration fields or schema changes
The inventory schema is considered stable. Changes to the schema require:
- discussion in an issue
- version bump
- migration notes
- README updates
Please avoid adding complexity unless it provides clear operational value.
Do not include:
- real hostnames
- real addresses
- real ports
- real usernames
- real passwords
- real SSH keys
- vault files
Use placeholders in examples.
When adding new features:
- test both local execution (via [sudo_run]) and SSHSession paths
- LocalSession exists architecturally but is not yet implemented
- test dry‑run mode
- test inventory normalization (not flattening — handled by the loader)
- test host selection logic
- test error handling and logging output
- test per‑host summary generation (always generated)
- test behavior on multiple distros (Debian-family, openSUSE, RedHat-family)
Key components:
code
operations/
selector.py
connector.py
executor.py
orchestrator.py
sessions.py
inventory/
sample-inventory.yaml
main.py
Please keep new modules consistent with this structure.
This project follows the Code of Conduct.
Please be respectful, constructive, and collaborative.
By contributing, you agree that your contributions will be licensed under the MIT License.