the differentiator
A policy is trusted only once it survives traffic it never saw.
Every incumbent learns least privilege from observed traffic. It scores perfectly on the window it watched, and silently blocks the failover. This is the part of Themis that exists because that is not good enough.
0100 the held-out test
Learning from observed traffic is a trap with a name.
Learning a policy from observed traffic looks perfect on the traffic it watched. Then the failover runs, the 02:14 batch runs, someone breaks glass at 3am — and the flow that was never in the window gets dropped.
So the policy is scored against a held-back set and an adversarial set before it goes anywhere near enforcement. A pass enforces on one slice and widens only by declaration. A fail returns a gap list, never an outage.
The separation is mechanical, not procedural: the drafting stage has no path to the held-back set, and that is checkable by walking the closed set of files it opened. It is not a promise that someone remembered to be careful. That is what makes a pass mean anything.
Observed traffic is evidence, never authority.
0200 classify & own
A verdict without an owner is a finding nobody acts on.
Verification tells you whether a flow is legitimate. It does not tell you what the flow is for, or who gets to decide about it. Both of those are still needed long after the person who knew has moved on.
So classification is part of the method, not a reporting feature bolted on afterwards. Every flow that survives verification carries three things beyond its verdict.
A class
What kind of flow this is — a tier boundary, a batch dependency, an egress to a third party, a break-glass path. The class is what makes a policy readable by someone who did not write it, and what lets a rule be judged against its peers rather than one at a time.
A story
Why it exists: the declaration that covers it, the change that introduced it, the date it was first observed. A rule with a reason attached can be retired on evidence. A rule without one survives every review, because nobody dares be the person who removed it.
An owner and an approver
A named team accountable for the flow, and a named human who signs any widening of it. Not a mailing list, not a ticket queue — the person whose name appears in the event log next to approve.
The next person inherits the reason, not just the rule.
0300 limits
What this does not do.
e000 End.DT6 deliver
See it against your own kit.
30–60 minutes. Read-only. We compare your declared intent to what is actually running, and hand back the gap list.
Nothing is installed to have this conversation.