RubricLoop TRACE → EVIDENCE
EVALUATION REPORT / ALPHA

Every judgment, open to inspection.

Executable checks. Explicit outcomes. Original traces, one click away.

3 traces · 9 checks

2026-10-20T08:08:51 UTC

PASS6individual checks
FAIL2individual checks
N/A1individual checks
ERROR0individual checks
Illustrative, hand-authored traces. Code rules executed locally. No model was called.
N/A means the rule does not apply. Errors are unresolved evaluations. Neither counts as PASS.
01

demo-supported-lookup

3 checks
OutcomeEvaluatorEvidence / reason
PASSresponse-presentcodeThe agent must return a non-empty final response. | check evaluated to False: not has_final_output
PASSconcise-responsecodeThe final response must contain at most 160 characters. | check evaluated to False: len(final_content) > 160
PASSlookup-identifiercodeWhen lookup is called, each call must provide an identifier. | check evaluated to False: any(not call['input'].get('identifier') for call in lookup_calls)
Inspect conversation & trace
human

What is the status of order A-104?

ai

Order A-104 has shipped. The lookup result confirms the status.

Full normalized JSON
{
  "id": "demo-supported-lookup",
  "root": {
    "name": "LangGraph",
    "type": "CHAIN",
    "input": {
      "messages": [
        {
          "type": "human",
          "content": "What is the status of order A-104?"
        }
      ]
    },
    "output": {
      "messages": [
        {
          "type": "ai",
          "content": "Order A-104 has shipped. The lookup result confirms the status."
        }
      ]
    },
    "steps": [
      {
        "type": "TOOL",
        "name": "lookup",
        "input": {
          "identifier": "A-104"
        },
        "output": {
          "status": "shipped"
        },
        "steps": []
      }
    ]
  }
}
02

demo-missing-final-answer

3 checks
OutcomeEvaluatorEvidence / reason
FAILresponse-presentcodeThe agent must return a non-empty final response. | check evaluated to True: not has_final_output
PASSconcise-responsecodeThe final response must contain at most 160 characters. | check evaluated to False: len(final_content) > 160
N/Alookup-identifiercodeScope tool:lookup was not activated.
Inspect conversation & trace
human

Please summarize the result.

ai

Empty message

Full normalized JSON
{
  "id": "demo-missing-final-answer",
  "root": {
    "id": "conversation",
    "parentObservationId": null,
    "name": "LangGraph",
    "type": "CHAIN",
    "input": {
      "messages": []
    },
    "output": {
      "messages": [
        {
          "content": "Please summarize the result.",
          "type": "human"
        },
        {
          "content": "",
          "type": "ai"
        }
      ]
    },
    "steps": []
  }
}
03

demo-lookup-without-id

3 checks
OutcomeEvaluatorEvidence / reason
PASSresponse-presentcodeThe agent must return a non-empty final response. | check evaluated to False: not has_final_output
PASSconcise-responsecodeThe final response must contain at most 160 characters. | check evaluated to False: len(final_content) > 160
FAILlookup-identifiercodeWhen lookup is called, each call must provide an identifier. | check evaluated to True: any(not call['input'].get('identifier') for call in lookup_calls)
Inspect conversation & trace
human

Check my order status.

ai

Please provide your order identifier so I can check its status.

Full normalized JSON
{
  "id": "demo-lookup-without-id",
  "root": {
    "name": "LangGraph",
    "type": "CHAIN",
    "input": {
      "messages": [
        {
          "type": "human",
          "content": "Check my order status."
        }
      ]
    },
    "output": {
      "messages": [
        {
          "type": "ai",
          "content": "Please provide your order identifier so I can check its status."
        }
      ]
    },
    "steps": [
      {
        "type": "TOOL",
        "name": "lookup",
        "input": {},
        "output": {
          "error": "missing identifier"
        },
        "steps": []
      }
    ]
  }
}