Why a closed vocabulary
There are nine clause types and you cannot write a tenth without changing the platform. That is deliberate, and it costs less than it sounds. A general policy language — Rego, Cedar, CEL — would buy expressiveness and lose three things this product is built on:Nobody can sign a policy module
Nobody can sign a policy module
A signature over 200 lines of policy is not an attestation, because the
person signing cannot hold the whole of it in their head. Every clause here
renders as one line a manager can be held to, and that line is what they
sign.
Comparison stops being decidable
Comparison stops being decidable
A revision has to be checkable against the contract in force. For numbers
and sets that is arithmetic. For arbitrary predicates it is implication
testing, which is not decidable in general — so “is this revision weaker?”
would become a question with no answer.
You lose the third state
You lose the third state
A predicate returns true or false. That collapses held, breached and
not demonstrated into “no errors were raised”, which is the vacuous signal
this platform refuses everywhere.
What a clause is not
A clause is distributional. It describes a population of decisions over a window, not a single action. “No single refund above 500” is not a clause — it is a bound, evaluated at the moment of the decision, and the platform already enforces it there. “Refuses at most 5% of the time” cannot be evaluated at the moment of a decision at all; there is no population yet. That split is why a breach is a finding, not a refusal. Acting on a contract at decision time would refuse an action because of a population it had not yet joined. What refuses at decision time is the grant.The three states
held
The evidence shows the clause was kept.
breached
The evidence shows it was not.
not demonstrated
This window cannot tell those apart. Not a pass.
never_tools. “Never” is
not a rate. A single call to a forbidden tool is a breach on its own evidence.
Revising a contract
Contracts are never edited. A revision supersedes the one in force, and the old one stays readable — what was promised in March has to survive April tightening it. Tightening is free. A manager who committed to “at most 5%” is not harmed by “at most 2%”, so no fresh declaration is needed. Loosening must say so. A revision that weakens a clause is refused unless it is declared deliberately, in somebody’s name. So is a revision that simply omits a clause the contract carries: silence is not a promise, and treating an omission as inheritance would let any revision drop any commitment by saying nothing.Declaring one
basis is required. A contract with no stated basis is a signature on a blank
page, and the question an auditor asks is not whether somebody signed but what
they thought they were signing.
The nine clause types
Every one reads a measure the platform already computes for
behavioural drift. That is not a convenience: it is what
makes a clause assessable against history, so the first question anybody asks
about a new control — what would this have said last month? — has an answer.

