Threat modelling, not posture marketing
Every new surface is threat-modelled in writing before code. We use STRIDE plus a money-movement extension; the document lives next to the code.
- STRIDE table per surface, with assumed attacker and assumed insider scenarios.
- Money-movement features add an explicit dishonest-operator row; no exceptions.
- Threat model is reviewed by Security partner on /decision-rights and refreshed each major version.