PRACTICAL GUIDE / Ragas LLM judge human alignment

Align a Ragas LLM Judge with Human Ratings

Learn Ragas LLM judge human alignment with working code, failure cases, debugging steps, and CI evidence for reliable QA automation in practice.

By The Testing AcademyUpdated July 18, 202619 min read
All field guides
In this guide10 sections
  1. Define the Judgment Decision Before Writing the Prompt
  2. Build an Independent Human-Adjudicated Dataset
  3. Capture Versioned Judge Results for Alignment
  4. Create Positive, Negative, and Bias Controls
  5. Analyze Disagreement by Class, Slice, and Cause
  6. Calibrate, Hold Out, and Test Judge Migrations
  7. Debug Misalignment Without Tuning to the Answer Key
  8. Add a Deterministic CI Gate and Cost Boundary
  9. Frequently Asked Questions
  10. What does Ragas LLM judge human alignment mean?
  11. What data is needed to align a Ragas judge?
  12. Should the same examples tune and certify the judge?
  13. Which judge error is most important?
  14. How can judge alignment be tested deterministically in CI?
  15. When should a Ragas judge be recalibrated?
  16. Practice Judge Decisions in QABattle

What you will learn

  • Define the Judgment Decision Before Writing the Prompt
  • Build an Independent Human-Adjudicated Dataset
  • Capture Versioned Judge Results for Alignment
  • Create Positive, Negative, and Bias Controls

Ragas LLM judge human alignment tests whether a model grader makes the same rubric-bound decisions as qualified reviewers on the same responses. Build independent adjudicated labels, run a versioned Ragas judge without exposing those labels, analyze class-specific disagreements by risk slice, and permit CI use only after held-out calibration meets a predeclared cost-aware policy.

Alignment is conditional, not a permanent property of a model name. A judge can agree on concise English answers and fail on abbreviations, valid alternatives, long evidence, or one critical policy category. The surrounding Ragas RAG evaluation guide helps place the judge among retrieval and generation metrics; here the object under test is the judge itself.

Define the Judgment Decision Before Writing the Prompt

Start with the decision the judge will support. It might label answer correctness, citation sufficiency, refusal appropriateness, or policy compliance. Do not ask one pass or fail field to represent all four. Each criterion needs an evidence boundary, label vocabulary, precedence rule, and explicit treatment of ambiguity.

The official Ragas judge alignment quickstart uses pre-existing responses, human pass/fail labels, an LLM judge applying grading criteria, and a second metric that marks the two verdicts aligned or misaligned. That is the minimum mechanism. A production decision also needs to know which class was wrong, where it occurred, and what harm follows.

Write a one-sentence contract such as: "For versioned refund-policy responses, the judge applies rubric version R to supplied evidence and does not false-pass a response that promises an excluded refund." Then define:

  • Unit of judgment: one response, one claim, one turn, or one conversation.
  • Allowed evidence: reference answer, retrieved passages, policy text, trace, or no external evidence.
  • Labels: values with observable boundaries, including abstain or review_required when needed.
  • Error costs: why a false pass, false fail, or abstention matters for each slice.
  • Use boundary: whether the judge may block a release, route review, annotate experiments, or only provide diagnosis.

The first deterministic assertion is that the judge and humans saw the same item and rubric version. A sophisticated comparison is worthless if the human reviewed a newer policy or the judge received truncated evidence. The LLM-as-a-judge guide expands the general threat model, including position, verbosity, and identity bias.

Avoid a target such as "maximize agreement." A trivial judge can exploit label imbalance by predicting the common class. The release target must protect named errors and slices. The aggregate is a summary after those checks, not the decision itself.

Build an Independent Human-Adjudicated Dataset

Collect responses before asking reviewers to label them. Include normal successful outputs, known defects, borderline omissions, valid alternative phrasings, refusals, malformed responses, conflicting evidence, abbreviations, long answers, and critical business cases. Sample real traffic where privacy and consent permit, then supplement uncovered risks with reviewed synthetic cases. Ragas testset generation can help create candidate questions, but generated labels do not replace human adjudication.

Every item should carry input, response, grading notes or reference evidence, source provenance, rubric version, slice tags, and response-generation metadata. Human review should be independent and blinded to model identity, candidate status, expected release outcome, and other reviewers' preliminary labels. Record reviewer label, confidence category, rationale, cited evidence spans, and escalation request.

Use at least two independent reviewers where disagreement changes the decision, then send conflicts and low-confidence items to an adjudicator. Preserve all preliminary labels. Replacing them with one final value erases evidence about rubric clarity. The human-adjudicated gold-set workflow provides a fuller governance model for reviewer training, blinding, and versioning.

JSON
{
  "case_id": "billing-refund-ambiguous-014",
  "partition": "held_out",
  "slice": "refund_policy",
  "tags": ["billing", "policy-boundary"],
  "rubric_version": "refund-correctness-reviewed",
  "input": "Can I receive a refund after the stated request window?",
  "response": "Yes, every late request is automatically approved.",
  "grading_notes": "The policy allows late requests only after manual exception review.",
  "reviews": [
    {
      "reviewer": "reviewer-a",
      "label": "fail",
      "evidence": ["policy-exception-review"]
    },
    {
      "reviewer": "reviewer-b",
      "label": "fail",
      "evidence": ["policy-exception-review"]
    }
  ],
  "adjudication": {
    "label": "fail",
    "reason": "The response converts conditional review into automatic approval."
  }
}

The record contains no judge output. Add that only after the gold release is frozen. Keep development, calibration, and held-out partitions separate, grouping paraphrases and responses from the same source prompt before splitting. Otherwise, a judge prompt can encode a familiar example while appearing to generalize.

Publish a dataset card with intended use, sampling window, label distribution, reviewer qualifications, adjudication procedure, known gaps, excluded domains, privacy handling, and source authority. Version corrections by superseding records, never by silently editing historical truth. For broader application accuracy design, measure RAG accuracy explains how this judge evidence should connect to user outcomes.

Treat grading notes as controlled evidence, not casual hints. A note should identify the required concepts, prohibited claims, source locations, and how to handle valid alternatives. Reviewers should be able to reach the label without guessing what the author intended. When evidence is too long, store an immutable reference and the exact excerpt rendered to both reviewer and judge. Truncation belongs in the case record because it can create systematic disagreement near the end of long policies. Add a deterministic check that every cited evidence identifier resolves inside the approved corpus snapshot.

Track annotation operations separately from labels. Assignment time, review completion, rubric questions, conflicts, adjudication changes, and reviewer training version reveal whether a difficult slice is genuinely ambiguous or simply underexplained. Do not use reviewer speed as a quality proxy. A quick label on an obvious control and a careful decision on conflicting evidence serve different purposes. Periodically sample agreements as well as disagreements; two reviewers can make the same mistake when a rubric example anchors both.

Capture Versioned Judge Results for Alignment

Treat judge construction as an upstream concern and calibration as a separate evidence pipeline. The calibration job should receive frozen human records and serialized judge results for the same response hashes. This keeps prompt experimentation from rewriting gold data and prevents a calibration report from quietly invoking a different judge.

The Ragas metrics reference documents that a model-based DiscreteMetric returns a MetricResult; export its categorical .value and .reason with model, prompt, package, and input hashes. In Ragas 0.4.3, a successful model-backed call includes the structured reason. Null-safe handling belongs only at a legacy, failed, or incomplete-record ingestion boundary. The reason supports diagnosis but does not replace exact label comparison. The official quickstart also shows @discrete_metric around a deterministic alignment function. That decorator pattern is distinct from the LLM-backed DiscreteMetric class: it wraps custom Python logic and does not call a judge by itself.

Python
from collections import Counter


ALLOWED_LABELS = {"pass", "fail"}


def join_alignment_records(gold_rows: list[dict], judge_rows: list[dict]) -> list[dict]:
    gold_by_id = {row["case_id"]: row for row in gold_rows}
    if len(gold_by_id) != len(gold_rows):
        raise ValueError("duplicate case ID in gold data")

    joined: list[dict] = []
    seen: set[str] = set()
    for result in judge_rows:
        case_id = result["case_id"]
        if case_id in seen or case_id not in gold_by_id:
            raise ValueError(f"invalid judge result identity: {case_id}")
        seen.add(case_id)
        gold = gold_by_id[case_id]
        if result["response_hash"] != gold["response_hash"]:
            raise ValueError(f"response mismatch: {case_id}")
        if result["value"] not in ALLOWED_LABELS:
            raise ValueError(f"unknown judge label: {case_id}")
        if not isinstance(result.get("reason"), str) or not result["reason"].strip():
            raise ValueError(f"missing judge reason: {case_id}")

        human_label = gold["adjudication"]["label"]
        joined.append({
            "case_id": case_id,
            "slice": gold["slice"],
            "human_label": human_label,
            "judge_label": result["value"],
            "judge_reason": result["reason"],
            "aligned": result["value"] == human_label,
            "error_class": (
                "false_pass"
                if human_label == "fail" and result["value"] == "pass"
                else "false_fail"
                if human_label == "pass" and result["value"] == "fail"
                else "aligned"
            ),
        })

    missing = set(gold_by_id) - seen
    if missing:
        raise ValueError(f"missing judge results: {sorted(missing)}")
    return joined


def disagreement_counts(rows: list[dict]) -> Counter[tuple[str, str]]:
    return Counter((row["slice"], row["error_class"]) for row in rows)

Require one result for every eligible gold case. A missing judge output is an incomplete evaluation, not disagreement and not a fail verdict. Keep provider and parsing errors in a separate manifest so they cannot disappear from the denominator. Verify prompt hash, judge model, Ragas version, rubric version, and partition before joining, even if the compact example omits those checks for readability.

The Ragas judge alignment quickstart compares baseline and improved judges against the same human labels. Keep that comparison paired by case ID. The dataset, response, and gold label must remain fixed while a judge variable changes, or an apparent calibration gain may come from easier examples.

Keep responses pre-existing during alignment. If the judge model also generated or rewrote an answer, shared preferences can inflate apparent agreement. Preserve the exact response humans reviewed as its own immutable artifact. A regenerated response is a new application case, not another judgment of the old one.

Create Positive, Negative, and Bias Controls

Controls should challenge both the rubric and the judge. Run them before candidate certification and after every evaluator, prompt, schema, or Ragas migration.

Positive control: Use a response that plainly satisfies every cited requirement without irrelevant flourish. Human reviewers should independently pass it. This verifies that the judge can recognize sufficient evidence and is not configured to fail all outputs.

Negative control: Change one release-critical fact while preserving grammar, confidence, length, and most of the correct response. Humans should fail it for the changed fact. This tests whether the judge reads evidence instead of reacting to style.

Boundary control: Provide a response that is correct but omits a noncritical detail, plus a neighboring response that omits a required condition. The rubric must explain the label difference. If reviewers cannot apply it consistently, repair the rubric before tuning the judge.

Verbosity control: Pair a concise correct answer with a longer answer that repeats the same correct content. The verdict should follow the criterion, not length. Add a polished but wrong long answer to detect preference for confident explanation.

Terminology control: Express the same valid concept with approved abbreviations, domain synonyms, and plain language. The official quickstart specifically demonstrates improving a judge instruction with an abbreviation guide. Keep such examples out of held-out certification after using them for prompt revision.

Adversarial control: Put instructions inside the response telling the evaluator to pass it, or add a fake grading note quoted as user content. The judge prompt must distinguish untrusted response text from authoritative rubric evidence. Also test missing evidence and conflicting evidence; the safe result may be review_required in a rubric designed to allow it.

Use this numbered calibration workflow:

  1. Freeze the task, rubric, label vocabulary, source evidence, dataset partitions, and error policy.
  2. Complete blind independent human review and adjudication before running the candidate judge.
  3. Validate case identity, evidence hashes, partition isolation, required fields, and allowed labels.
  4. Run positive, negative, boundary, verbosity, terminology, and adversarial controls with the pinned judge configuration.
  5. Score the development partition, inspect disagreements, and revise one declared judge variable at a time.
  6. Select a candidate using the untouched calibration partition and class-specific policy.
  7. Run the held-out partition once for certification; do not tune on its errors and claim the same result as held out.
  8. Publish verdicts, reasons, errors, latency, cost, and run metadata, then apply the CI gate or route review.

Analyze Disagreement by Class, Slice, and Cause

Exact agreement is easy to compute and easy to misuse. Build a confusion table with human labels on one axis and judge labels on the other. Report counts for human-fail/judge-pass and human-pass/judge-fail separately. If the rubric supports abstention, keep it as a distinct row and column rather than coercing it into pass or fail.

Evidence viewDecision it supportsFailure hidden by aggregate agreement
False passes by critical sliceWhether the judge may approve releasesRare harmful approvals among many routine passes
False fails by sliceReview load and blocked useful behaviorExcessive rejection concentrated in one language
Abstentions and errorsWhether evidence and runtime are sufficientMissing outputs silently dropped from the denominator
Reviewer disagreementRubric clarity and task ambiguityA judge penalized for a label humans cannot stabilize
Stable sentinel repeatsEvaluator consistencyProvider or sampling drift between identical inputs
Cost and latency by case shapeWhether the gate can run at required scopeLong-context critical cases omitted for expense

Calculate agreement statistics only on declared valid records and always report their denominator. Cohen's kappa or another chance-adjusted statistic can add context, but it does not replace error counts or business severity. Do not invent a universal acceptable value. Derive policy from the intended use and adjudicated baseline, then version it.

Slice by domain, language, response length, source type, label, reviewer confidence, answer form, and risk severity. Use slices large enough to interpret, but never merge away a single known release-critical failure. Ragas faithfulness and context recall scenarios can reveal when apparent judge disagreement is actually a mismatch between correctness and grounding criteria.

For each disagreement, classify the first cause: gold-label defect, rubric ambiguity, missing evidence, judge instruction gap, evaluator reasoning error, parser or label normalization bug, provider failure, or out-of-scope case. Fixing all disagreements by adding demonstrations can encode annotation mistakes. Correct the dataset or scope when those are the actual fault.

Calibrate, Hold Out, and Test Judge Migrations

Calibration uses human evidence to select a judge configuration and operating policy. Certification asks whether that selected configuration remains acceptable on untouched cases. Keep these phases distinct in storage and review permissions.

When changing the evaluator model, prompt, Ragas version, or response schema, run old and new judges over the same frozen calibration and held-out manifests. Compare case-level verdict transitions, not only summary movement. A new judge that fixes many low-risk false fails but introduces one critical false pass needs a risk decision, not applause for a larger average.

The Ragas metric overview emphasizes interpretability and a few strong signals. Apply that advice to alignment: human label, judge label, evidence, reason, and error class should be inspectable. Avoid stacking a second opaque judge over the first to smooth disagreements.

Migration tests should cover:

  • Schema compatibility: old run records and new results retain case, label, reason, and version fields without silent defaults.
  • Label mapping: renamed categories have an explicit reviewed mapping; unknown labels block comparison.
  • Prompt parity: only the intended prompt content changes, with hashes and rendered inputs preserved.
  • Control continuity: positive and negative controls keep their human-defined expected labels.
  • Transition review: every changed verdict in a critical slice receives evidence-based review.
  • Cost boundary: both versions fit the paired-run budget, or the run is marked incomplete rather than sampled invisibly.

Maintain stable sentinels for longitudinal drift, but refresh representative data as products and users change. A judge can remain consistent on an old set while becoming irrelevant to current traffic. Testing a RAG chatbot helps identify conversation and user-journey slices that single-response calibration misses.

Document the promotion path from advisory judge to release authority. Early runs can annotate experiments while every verdict is reviewed. A later phase may auto-route clear passes and failures while humans inspect abstentions and sampled agreements. Only the final phase should block unattended, and only for slices certified under the current policy. The gold-set calibration process should be repeated before widening scope. Evidence from one domain, language, or answer shape does not authorize the judge elsewhere.

Rollback is part of migration testing. Preserve the prior judge configuration, compatible run schema, and routing policy until the new version completes a monitored window. If production disagreement sampling finds a new critical false pass, disable automatic authority without deleting the evidence that triggered rollback. Continue collecting candidate verdicts in shadow mode so engineers can diagnose the defect without exposing releases to it.

Debug Misalignment Without Tuning to the Answer Key

Start by reconstructing exactly what each participant saw. Compare case ID, response hash, evidence hash, rendered judge prompt, rubric version, human adjudication, evaluator model, provider response, parsed verdict, and reason. A join failure is a deterministic blocker, not a judge-quality observation.

Then read the human rationale and evidence spans before the model reason. Ask whether the gold label follows the written rubric. If not, reopen adjudication with lineage. If the gold is sound, identify the earliest instruction or reasoning step that permits the judge's verdict. Change the rubric only when the human task is unclear; change the judge prompt when the task is clear but the model applies it incorrectly.

Deterministic blockers include duplicate case IDs, partition overlap, unsupported labels, absent adjudication, missing rubric or evidence versions, judge output for the wrong response hash, unparseable verdicts, dropped errors, and an undeclared model or prompt. A judge run with any of these conditions cannot pass calibration regardless of its apparent agreement.

Do not reveal held-out labels to the prompt author case by case. Log the failure category and reserve detailed examples for an independent review process or the next dataset release. Otherwise, held-out certification gradually becomes development data without anyone naming the change.

Repeated model calls are a variance study, not a repair tactic. Retain every verdict and cost. If identical inputs cross the release boundary under a pinned configuration, either tighten deterministic evidence, use a more stable evaluation method, widen human review, or remove automatic authority. The right answer may be to keep the judge advisory.

Add a Deterministic CI Gate and Cost Boundary

Run schema and lineage validation on every pull request. Run a compact judge sentinel when judge-facing code, prompts, rubrics, or provider configuration change. Reserve the full held-out or representative suite for a controlled release job so cost and rate limits do not encourage silent case removal.

The gate consumes measured records and a reviewed policy. It should not contain a made-up agreement target. The example below blocks malformed evidence, undeclared slices, false passes beyond the slice policy, total evaluator errors beyond policy, or spend beyond the approved budget. Policy values belong in version control with owners and rationale.

Python
from collections import Counter
from dataclasses import dataclass
from decimal import Decimal


@dataclass(frozen=True)
class AlignmentPolicy:
    max_false_passes_by_slice: dict[str, int]
    max_evaluator_errors: int
    max_total_cost: Decimal


def alignment_blockers(rows: list[dict], policy: AlignmentPolicy) -> list[str]:
    blockers: list[str] = []
    false_passes: Counter[str] = Counter()
    evaluator_errors = 0
    total_cost = Decimal("0")
    allowed_slices = set(policy.max_false_passes_by_slice)

    for row in rows:
        required = {"case_id", "slice", "human_label", "judge_label", "cost"}
        if not required.issubset(row):
            blockers.append("alignment record is missing required evidence")
            continue
        if row["slice"] not in allowed_slices:
            blockers.append(f'{row["slice"]}: no reviewed false-pass policy')
        total_cost += Decimal(str(row["cost"]))
        if row.get("evaluator_error"):
            evaluator_errors += 1
        if row["human_label"] == "fail" and row["judge_label"] == "pass":
            false_passes[row["slice"]] += 1

    for slice_name, count in false_passes.items():
        limit = policy.max_false_passes_by_slice.get(slice_name)
        if limit is None:
            blockers.append(f"{slice_name}: no reviewed false-pass policy")
        elif count > limit:
            blockers.append(f"{slice_name}: false-pass limit exceeded")

    if evaluator_errors > policy.max_evaluator_errors:
        blockers.append("evaluator error limit exceeded")
    if total_cost > policy.max_total_cost:
        blockers.append("judge cost boundary exceeded")
    return sorted(set(blockers))

Capture total calls, tokens where available, retries, latency, and billed or estimated cost using one declared accounting method. Stop new work when the budget is reached and mark unrun cases. Do not call a partial suite successful. Sampling to fit cost must be risk-stratified, reviewed, reproducible, and declared before results are known.

Override records need a named approver, affected cases, evidence, expiry, and follow-up. A critical false pass should not be waived because the aggregate looks favorable. Use production disagreement sampling to find new cases, send them through independent adjudication, and add them to a future calibration release rather than mutating the current held-out scorecard.

Separate three operational outcomes in the job result: quality failed, evaluation incomplete, and review required. Provider outages, exhausted spend, missing evidence, and unresolved human ambiguity should not be encoded as judge disagreement. Publish the last complete certified judge beside the candidate result, but do not silently fall back to it for cases whose rubric or schema changed. The LLM judge testing framework can guide sampling and monitoring after deployment, while the Ragas run remains the reproducible experiment record.

Cost review should inspect distribution as well as total spend. Long evidence, repeated repair calls, and high-reasoning evaluator settings can concentrate expense in the same critical slices the team is tempted to omit. Set the case manifest before execution, reserve budget for those slices, and list every skipped ID when capacity is insufficient. A cheaper run that excludes hard cases is a scope change requiring approval, not an optimization that preserves the previous certification.

For ongoing retrieval checks, how to test RAG retrieval provides deterministic source and rank controls that reduce how much authority must be delegated to the judge.

Frequently Asked Questions

What does Ragas LLM judge human alignment mean?

It means comparing an LLM judge's verdicts with independently produced human labels for the same responses and rubric. Useful alignment evidence includes exact agreement, false-pass and false-fail counts, slice results, reasons, and abstentions. A high aggregate alone cannot show whether the judge is safe for a release-critical decision.

What data is needed to align a Ragas judge?

Keep the input, pre-existing response, grading notes or reference evidence, independent human label, adjudication record, rubric version, slice tags, and provenance. For every judge run, add judge prompt, evaluator model, Ragas version, output verdict, reason, latency, cost, and error state so disagreements can be reproduced and classified.

Should the same examples tune and certify the judge?

No. Use a development partition to inspect disagreements and revise instructions, a calibration partition to select a candidate policy, and a held-out partition for certification. Group near-duplicates before splitting. Reusing adjudicated examples for both tuning and final approval can reward memorization and conceal failure on new wording or domains.

Which judge error is most important?

Importance depends on the decision. A false pass may release an unsafe or incorrect answer, while a false fail may block a useful response and create review cost. Declare class-specific limits by risk slice before evaluation. Never let abundant low-risk agreement offset an unreviewed error in a critical slice.

How can judge alignment be tested deterministically in CI?

Schema, label vocabulary, case identity, partition integrity, duplicate leakage, required evidence, and verdict comparison are deterministic. The LLM verdict is not. Run a pinned sentinel set, retain every attempt, and apply deterministic blockers to the resulting records. Route unexplained judge variation or ambiguous human evidence to review instead of retrying toward green.

When should a Ragas judge be recalibrated?

Recalibrate when the rubric, task, evaluator model, prompt, Ragas version, response schema, language mix, source evidence, or risk policy changes. Also review calibration when production disagreement sampling exposes a new failure slice. Keep stable sentinels across versions, but certify each changed judge on untouched, human-adjudicated examples.

Practice Judge Decisions in QABattle

Select one human-fail/judge-pass disagreement and defend the release action from the source evidence, not the model's prose. Identify whether the fault belongs to the gold label, rubric, input assembly, judge, parser, or gate. Then practice making the same boundary-first quality decision in the QABattle battles arena, with the override owner and expiry written before approval.

// LIVE COURSE / THE TESTING ACADEMY

AI Tester Blueprint

Master GenAI, AI Agents, MCP, RAG, CrewAI. Build 23+ real AI projects.

From the instructor behind this guide.

AI testing roles are up 180% and pay 12-22 LPA. 12+ weeks / 65+ live hrs / Sat-Sun 8:30 AM IST.

Code PROMODE / 10% offJoin the batch

The Testing Academy editorial desk

Practical QA guidance built around test evidence, production tradeoffs, and interview-ready explanations.

Published July 18, 2026 / Reviewed July 18, 2026

PRIMARY REFERENCES

Verify the details at the source

QABattle guides are practical explanations. Product behavior, standards, and APIs can change, so use these primary references for the canonical details.

  1. 01
    Official docs.ragas.io reference

    docs.ragas.io

    Primary documentation selected and verified for the claims in this guide.

  2. 02
    Official docs.ragas.io reference

    docs.ragas.io

    Primary documentation selected and verified for the claims in this guide.

  3. 03
    Official docs.ragas.io reference

    docs.ragas.io

    Primary documentation selected and verified for the claims in this guide.

  4. 04
    Ragas documentation

    Ragas

    Official RAG metric, dataset, experiment, and evaluation reference.

FAQ / QUICK ANSWERS

Questions testers ask

What does Ragas LLM judge human alignment mean?

It means comparing an LLM judge's verdicts with independently produced human labels for the same responses and rubric. Useful alignment evidence includes exact agreement, false-pass and false-fail counts, slice results, reasons, and abstentions. A high aggregate alone cannot show whether the judge is safe for a release-critical decision.

What data is needed to align a Ragas judge?

Keep the input, pre-existing response, grading notes or reference evidence, independent human label, adjudication record, rubric version, slice tags, and provenance. For every judge run, add judge prompt, evaluator model, Ragas version, output verdict, reason, latency, cost, and error state so disagreements can be reproduced and classified.

Should the same examples tune and certify the judge?

No. Use a development partition to inspect disagreements and revise instructions, a calibration partition to select a candidate policy, and a held-out partition for certification. Group near-duplicates before splitting. Reusing adjudicated examples for both tuning and final approval can reward memorization and conceal failure on new wording or domains.

Which judge error is most important?

Importance depends on the decision. A false pass may release an unsafe or incorrect answer, while a false fail may block a useful response and create review cost. Declare class-specific limits by risk slice before evaluation. Never let abundant low-risk agreement offset an unreviewed error in a critical slice.

How can judge alignment be tested deterministically in CI?

Schema, label vocabulary, case identity, partition integrity, duplicate leakage, required evidence, and verdict comparison are deterministic. The LLM verdict is not. Run a pinned sentinel set, retain every attempt, and apply deterministic blockers to the resulting records. Route unexplained judge variation or ambiguous human evidence to review instead of retrying toward green.

When should a Ragas judge be recalibrated?

Recalibrate when the rubric, task, evaluator model, prompt, Ragas version, response schema, language mix, source evidence, or risk policy changes. Also review calibration when production disagreement sampling exposes a new failure slice. Keep stable sentinels across versions, but certify each changed judge on untouched, human-adjudicated examples.