Developer Guide (WIP)
This guide captures engineering processes and expands as the project marches through Alpha and beyond.
Repository Standards
Follow the architecture decisions recorded in
docs/adrs.Use type hints and keep
mypyclean under thestrictsettings defined inpyproject.toml.Write tests alongside features; prefer
pytestparametrisation to cover edge cases.Keep documentation updates in the same change set so Sphinx builds stay accurate.
Coding Workflow
Fork the repository or create a feature branch from
dev.Create a Python 3.11 virtual environment stored in
.venvwith a prompt labeldevand activate it:python3.11 -m venv .venv --prompt dev source .venv/bin/activate
Run
pip install -e .[dev]to install dependencies. This editable install ensuresabssctlis importable in tests and CLI executions without tweakingPYTHONPATH.Implement your changes following the roadmap priorities.
Run linting, typing, tests, and Sphinx builds:
ruff check src tests mypy src pytest sphinx-build -b html docs/source docs/_build/html
Open a pull request targeting
devand request review.
Testing Registry Data
Commands such as
version listandinstance listread from<state_dir>/registry/versions.ymlandinstances.yml. During testing, create these files under a temporarystate_dir(see the CLI tests for an example helper) to simulate installed versions or provisioned instances.JSON flags (
--json) make assertions easier when validating command output in automated tests.version list --remoteuses the npm CLI when available. During testing you can avoid network access by settingABSSCTL_VERSIONS_CACHEto a JSON file containing an array of version strings or by exportingABSSCTL_SKIP_NPM=1.
Open Questions
Release engineering automation will be defined once the PyPI project name is secured.
Integration test strategy on TurnKey Linux appliances is captured in
docs/adrs/ADR-030-ci-integration-tests.md.