Companion:
COMPLIANCE-OVERLAYS-DESIGN.md,COMPLIANCE-PROOF.md.
A use-case primitive is a typed values fragment in /usecases/ that
composes the right overlay set + workload-shape defaults for a
recurring compliance posture. The user-facing pattern is one line:
helm install my-service oci://ghcr.io/pleme-io/charts/pleme-microservice \
-f usecases/dod-il5-microservice.yaml \
-f my-service-overrides.yamlmy-service-overrides.yaml is small (image, ports, ingress hosts).
The use-case file does the heavy compliance lifting.
A use-case primitive has two parts:
- Overlay declaration:
compliance.overlays: [...]— composing proven overlays from the registry. - Workload-shape defaults: replicas, resources, persistence, ingress shape sensible for the use-case.
The compliance proof for a use-case is the union of the proofs of its declared overlays. There is no per-use-case proof work because the overlays are individually proven and compose by union.
usecases/
README.md # consumer-facing index
fedramp-high-microservice.yaml # civilian regulated SaaS
dod-il5-microservice.yaml # DoD CUI national-security
hipaa-microservice.yaml # ePHI-handling SaaS
cmmc-l3-microservice.yaml # DoD contractor CUI
regulated-microservice.yaml # fedramp-moderate (lightest)
Each file pairs with a smoke test in
tests/usecases/usecases_test.yaml that asserts:
- The use-case applies cleanly to a workload chart
data.overlaysin the rendered compliance manifest contains the expected overlay names (after closure resolution)data.controlscontains the expected NIST/HIPAA/CMMC/DoD control IDs
- Pick the regimes that apply (FedRAMP level + DoD/HIPAA/CMMC/PCI/NIS2/...).
- Look up the overlays in
pleme-lib.overlay.registry(declared in_overlay_dispatch.tpl). - Create
usecases/<name>.yaml:compliance: overlays: [overlay-1, overlay-2, ...] enforce: true # required overlay configuration (audit retention, OIDC, mTLS, …) # workload defaults sensible for the use-case replicaCount: 3 resources: requests: { cpu: 100m, memory: 128Mi } limits: { memory: 512Mi } image: pullPolicy: Always monitoring: enabled: true ingress: enabled: true className: nginx attestation: enabled: true
- Add a row to
usecases/README.md's library table. - Add a smoke test in
tests/usecases/usecases_test.yaml:- it: "[usecase] <name> — <regimes>" values: - ../../usecases/<name>.yaml set: image.repository: ghcr.io/pleme-io/example image.tag: "sha256:..." # other minimum overrides asserts: - matchRegex: path: data.overlays pattern: "<expected overlay>" - matchRegex: path: data.controls pattern: "<expected control ID>"
- Commit. The next consumer chart that wants this use-case is one
helm install -fline away.
- One overlay = one use-case:
fedramp-high-microservicedeclares only[fedramp-high]; the cascade pulls infedramp-moderate. Don't pre-declare cascaded overlays — let the registry handle closure. - Overlay configuration goes in the use-case file: things like
compliance.audit.retentionDays,compliance.fips.runtime,compliance.airgap.role— values an overlay needs to be valid. - Workload-specific values go in operator overrides: image repo, service ports, ingress hosts, replica count if it differs from the use-case's default.
- Use-case files are NOT installed directly: they're values
fragments. The consumer chart is one of
pleme-microservice/pleme-statefulset/pleme-cronjob/pleme-worker.
Helm's multi--f deep-merges, so an operator can stack:
helm install -f usecases/dod-il5-microservice.yaml \
-f usecases/regional-eu.yaml \ # hypothetical: forces EU residency
-f my-overrides.yamlThe right side wins on conflicts. This means use-cases are layered: a base regime (DoD-IL5) + a regional/customer overlay (EU residency, specific tenancy) + workload-specific values. Each layer is a small typed file.
fedramp-high-statefulset.yaml— for databases / persistence layersdod-il5-database.yaml— StatefulSet variant of dod-il5regulated-cronjob.yaml— batch workload regimepci-dss-payment-gateway.yaml— adds PCI-DSS overlay (when available)nis2-eu-sovereign.yaml— adds NIS2 + EU residency overlayscmmc-l2-microservice.yaml— CMMC L2 (lighter than L3)iso27001-microservice.yaml— ISO 27001 Annex A controls
Each is one YAML file. The mechanical proof inherits from the overlay registry.