Read AGENTS.md first. It defines the design principles, layer rules, and what must not be changed.
<type>/<short-description>
Examples: feat/decision-trust-capsule, fix/epd-help-crash, docs/readme-reorganize
<type>(<scope>): <summary>
- type:
feat/fix/refactor/test/docs/chore/security - scope:
arbiter/evaluator/evidence/ai/web/rust/runbook/installer/notify/audit/demo/mio
- 1 PR = 1 purpose. Do not mix unrelated changes.
- Every PR must include:
-
PYTHONPATH=. pytest -qpasses -
cd rust/azazel-edge-core && cargo testpasses (if Rust touched or validation scope includes Rust) - Related documentation updated in the same PR
- If API surface or runtime configuration changed, update
docs/API_REFERENCE.mdand/ordocs/CONFIGURATION.mdin the same PR - Deterministic First principle not violated
- Raspberry Pi constraints not broken
-
See AGENTS.md §3.4 for the full list. The short version:
- Do not touch
installer/,systemd/, orsecurity/without explicit approval - Do not set
AZAZEL_AUTH_FAIL_OPEN=1orAZAZEL_DEFENSE_ENFORCE=true - Do not disable
requires_approvalon any Runbook
python3 -m venv .venv
. .venv/bin/activate
pip install -r requirements/dev.txt
PYTHONPATH=py:. .venv/bin/pytest -q
cd rust/azazel-edge-core && cargo test
# unified helper
bin/azazel-edge-dev test-all