Concrete commitments
The architectural decisions, on the record.
Each commitment references the architecture decision record it was written down in.
01ADR 0001
Tenant isolation
Every PHI-bearing model carries a tenant FK at the database schema level. Queries route through a tenant-scoped manager exclusively. Cross-tenant data access is impossible without explicit code paths that don't exist in the API surface.
Reference: ADR 0001
02ADR 0003
Role-based permissions
A 36-permission catalog resolved per request. Six default roles — owner, manager, front desk, provider, bookkeeper, marketing — each with a defensible default permission set. Per-user overrides are explicit and audit-logged. Locked permissions cannot be granted ad-hoc.
Reference: ADR 0003
03ADR 0004
Append-only audit logging
Every PHI read, every state transition, every report run, every CSV export writes an audit log entry. Production enforces append-only via a Postgres trigger that rejects UPDATE and DELETE on the audit table. Satisfies HIPAA §164.312(b) and maps to the SOC 2 CC 6.1 control criteria.
Reference: ADR 0004
04ADR 0013
PHI containment
Audit metadata records what happened, never the PHI itself — a customer name appears in the chart, never in the audit log. Email addresses are reduced to their domain in the audit trail. Reports that surface per-customer data require explicit confirmation before CSV export.
Reference: ADR 0013
05ADR 0011
Tokenized public flows
256-bit URL-path tokens (never query string) for the public form-fill page and similar customer-facing surfaces. Single-use for state-changing actions. The rest of the application is session-cookie authenticated with CSRF protection.
Reference: ADR 0011
06ADR 0012
BAA-eligible infrastructure
AWS under a signed Business Associate Agreement: Fargate compute, RDS Postgres encrypted at rest with KMS, SES for email with DKIM/SPF/DMARC. Email containing PHI sends only on operator action with the customer's request on file.
Reference: ADR 0012