Skip to main content

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 with operator: presence.
Optional top-level 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 other when fields supported by your Geval version).

Priorities

Within one policy, every rule priority 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).
Final contract and multi-contract merging uses severity order (see How Geval works).

Example (minimal)

signals.json
policy.yaml (illustrative — see Policy rules for full schema)

Next

Policy rules · geval check