Signals
Each signal is one piece of evidence. Valid JSON allows flexible shapes:- Numeric:
{ "metric": "accuracy", "value": 0.94 } - With context:
{ "component": "retrieval", "metric": "context_relevance", "value": 0.85 } - Presence-only:
{ "metric": "human_reviewed" }— no score; existence can drive a rule withoperator: presence.
name and version on the signals file support audit (bump when your pipeline schema changes). See Versioning.
How rules use signals
Rules address signals by metric and optionally component (and otherwhen fields supported by your Geval version).
| Operator | Meaning |
|---|---|
presence | At least one signal exists for that metric (and component if specified). Ignores numeric value. |
>, <, >=, <=, == | Uses the first numeric value matching the metric (and component). Signals without a numeric value do not satisfy numeric comparisons. |
Priorities
Within one policy, every rulepriority must be unique. Lower number = higher precedence (e.g. 1 wins over 3 when both match).
Geval evaluates all rules, keeps all matches, and the winning rule for the policy is the match with the smallest priority value.
Outcomes (then)
pass— policy contribution tends toward pass for that policy’s merge step.block— severity BLOCK.require_approval— severity REQUIRE_APPROVAL (human gate).