Skip to content

Semantic diff

culprit diff REF_A REF_B --eval-set FILE reads the configured prompt at both revisions without checking either one out.

An eval set supports exact, case-insensitive containment, regular expression, and LLM-judge assertions:

cases:
  - id: concise-greeting
    input: Say hello to Ada.
    assertions:
      - type: exact
        value: Hello, Ada!
      - type: contains
        value: Ada
      - type: regex
        value: "^Hello"
      - type: llm_judge
        value: The answer is friendly and concise.
        threshold: 0.8

The empirical layer shows each case's before/after score and output. The judge layer summarizes that evidence, but is explicitly advisory. Cache keys include prompt contents, the complete eval-set bytes, provider, model, and case ID.

The command prints its worst-case call estimate before executing and asks for confirmation above the configured threshold. --yes is intended for deliberate automation.