diff --git a/CLAUDE.md b/CLAUDE.md index 97bcfbe..2389b1d 100644 --- a/CLAUDE.md +++ b/CLAUDE.md @@ -82,6 +82,7 @@ Full design rationale: `docs/decisions/` - Every role must have a populated `README.md` - Every role must have `meta/main.yml` filled in - Every **service** role must have a populated `SECURITY.md` (ADR-002/004) — copy `docs/security/service-security-template.md` +- Every **service** role must have a populated `VERIFY.md` (ADR-008/017) — copy `docs/testing/service-verify-template.md` - One service = one self-contained role; no shared multi-service roles (ADR-004) - Role names: `snake_case`, descriptive nouns (`base`, `docker_host`, `reverse_proxy`) - Use `make new-role NAME=` to scaffold — never create role structure by hand @@ -204,6 +205,7 @@ Single-contributor, trunk-based (no merge requests / approval gates): | Network topology | `docs/decisions/007-network.md` | | Mesh VPN (NetBird, self-hosted) | `docs/decisions/016-mesh-vpn.md` | | Testing methodology | `docs/decisions/008-testing.md` | +| Service-UI verification (Level 4) | `docs/decisions/017-service-ui-verification.md` | | TF ↔ Ansible handoff | `docs/decisions/009-provisioning-handoff.md` | | Forgejo & CI | `docs/decisions/010-forgejo-ci.md` | | Update management | `docs/decisions/011-update-management.md` |