Product
Five capabilities, one decision contract
Each could have been a product on its own. Because they share one decision contract they do more together: the signal a guardrail produces is policy's input, policy's constraint intersects routing's candidate list, and the decision that comes out is written to a trace.
The shared contract
These are not five loosely coupled services. All of them read the same request context and write into the same decision pool; constraints intersect and obligations union. No layer can widen a boundary another layer drew — the ordering and the merge rules are defined in one place.
- 1The guardrail pipeline reads the prompt and writes signals
- 2Policy consumes the signals and makes the decision
- 3Routing intersects the candidate list with the decision's constraint
- 4The prompt version becomes part of the decision
- 5Everything that results is written to the decision trace
If you don't know which to start with
We usually start with the policy engine: running your own rule set in shadow mode and measuring divergence is the fastest way to see where everything else fits.