# roles/ Local Ansible roles. **No Galaxy roles** — every role is written and maintained here (ADR-003). Scaffold new ones with `make new-role NAME=`; never create the directory structure by hand. Each role must have: a `molecule/default/` scenario (Debian 13), a populated `README.md`, and a filled-in `meta/main.yml`. Conventions: CLAUDE.md and `docs/runbooks/new-role.md`. Current state: `base` is **partially built** — its `firewall` (nftables) and `hardening` (SSH key-only + fail2ban) concerns are implemented, tested, and the hardening concern is applied to `askari`; the remaining concerns (auditd, packages, users) are not yet built. `docker_host` (Docker engine + Compose), `reverse_proxy` (Caddy), `public_dns` (Gandi), and `dev_env` are built. See `STATUS.md` for the authoritative breakdown.