SMC operates the platform we sell. The controls SMC leads on client engagements — least privilege, separation of duties, audit trail, defense in depth, data minimization, encryption at rest, MFA — are the same controls the platform enforces on itself. This page lists them, as of 2026-09-29.
The authoritative source is docs/SECURITY-MODEL.md in the platform's repository. If this page and that doc disagree, the doc wins — please flag it to jvenuto@securitymedic.com.
operator | client-admin | client-viewer. Client-portal users are tenant-scoped to their own client's data; operators never cross into a client's portal view.clientId. Cross-tenant queries either filter explicitly by client OR are wrapped in crossTenant(rationale, …) with a documented reason. An audit script scans the codebase; a lint rule blocks unscoped queries in client-portal code.audit_event row (actor, action, entity, before/after snapshot, source metadata). CI blocks any mutating action lacking an audit call.npm audit --omit=dev --audit-level=high blocks every PR via CI (.github/workflows/security-checks.yml). A high or critical production-dependency finding fails the build.npm run sbom — Cyclone-DX-style JSON listing every production package + version + resolved integrity hash.docs/access-reviews/.Questions? Comments? jvenuto@securitymedic.com. For security-relevant reports, please include [security] in the subject.