This repository is part of the ACES CAGE-2 replication program and is driven
from ACES issues and requirements (ACES ADR-069 §8). Contributions land through
the Ground Control /implement workflow.
main— production. PRs only (fromdev). No direct pushes, no force-push.dev— integration. PRs only; feature branches targetdev;devPRs targetmain.- Feature branches embed the governing requirement UID, e.g.
12-REP-004-cyborg-provisioner— CI reads the UID from the branch via the[A-Z]{3}-[0-9]{3}pattern.
uv(Python 3.12+).- Activate git hooks on every fresh clone (they are not versioned):
uv run --project . pre-commit install --install-hooks
uv tool run --from 'nox[uv]==2026.4.10' nox -s verifyThe graph runs, in order: hygiene (file checks), policy (requirement
governance, repo policy, ADR pins), lint (ruff), typecheck (mypy per
adapter), and tests (pytest + coverage per adapter, each in its isolated
environment).
- Create
packages/<adapter>/with its ownpyproject.toml,uv.lock,src/, andtests/(copy an existing adapter as a template). - Add a matrix row in
.github/workflows/ci.yml(path, Python version, extras, conformance profile id, seed suite, source-ledger id). - Add its
src/testsdirs andcoverage.xmlpath tosonar-project.properties. - Keep adapter dependencies inside that package — never introduce a shared adapter lockfile (ACES ADR-069 §5).
Every user-visible change adds a towncrier fragment under changelog.d/
(see changelog.d/README.md). Do not edit
CHANGELOG.md directly.
Repo-local architectural decisions are recorded as ADRs under
docs/decisions/adrs/ and pinned in adr-index.yaml. Amending an accepted ADR
requires a ## Amendments row and a regenerated pin
(uv run --project . python tools/check_adr_immutability.py --update).
Do not add agent/tool attribution to commits, PRs, issues, code, or docs.