Tenant isolation is an invariant, not a guard rail
Every query that touches tenant data takes the tenant id from the authenticated session, never from a URL parameter, body field, or query string. Cross-tenant reads are not just unauthorised — they are unreachable by construction. Each release runs a grep gate against the services tree to catch any regression that tries to source tenant from request input.
Role-based access enforced twice
RBAC checks run at the API gateway and inside each service. A cashier session cannot reach the backoffice reports endpoint, the VAT-config endpoint, the user-management endpoint, or the audit-log endpoint — and removing the front-end gate would not unlock any of them. The matrix lives in agents.md and updates flow into both layers in the same PR.
Auth & session model
Sessions are JWT-bearer, device-bound, and short-lived. Refresh requires re-attesting the device identifier issued at activation. Manager overrides on the POS (refund > €X, void above threshold, force-close shift) require a fresh PIN, not just an existing session.
EU data residency
Production runs in AWS eu-central-1 (Frankfurt). Daily database snapshots stay inside the same region. We do not ship customer rows to a US-region analytics warehouse; the first-party marketing analytics endpoint is the only beacon and its log sink is the same region.
What we are working on
- SOC-2 Type I — targeting Q4 2026. Labelled “targeting”, not “achieved”. When we have a report, it will say so.
- Penetration test cadence. Annual third-party pentest with remediation tracked in the audit log.
- Secret management. AWS Secrets Manager + KMS-encrypted env injection at deploy. No secrets in source, no secrets in
.envfiles shipped to production. - Backup & restore drills. Quarterly restore exercise — we measure the time from “snapshot picked” to “POS register transacts again.”
Honest gaps
- We are not ISO 27001 certified today. We follow the operational practices but have not gone through certification.
- We do not offer customer-managed encryption keys (CMEK) in v1.
- We do not currently publish SSO (SAML / OIDC) for the backoffice — it is on the roadmap.
Honesty about today’s posture is more useful than a marketing claim that breaks on the first compliance questionnaire.