Skip to content
Tracon

EvalCase

Namespace Tracon · Assembly Tracon.Abstractions.dll

A single test case inside an EvalSuite.

public sealed record EvalCase : IEquatable<EvalCase>
Inheritance
object ← EvalCase
Implements
IEquatable<EvalCase>
Inherited Members
object.GetType(), object.ToString(), object.Equals(object?), object.Equals(object?, object?), object.ReferenceEquals(object?, object?), object.GetHashCode()
public EvalCase()

Text given to the model as extra context.

public string? Context { get; init; }

string?

The agent receives it through the document channel, ahead of EvalCase.Query: the case run builds the messages a production run with documents sends (see AgentRunDocument). Plain text goes as one document named context. Text made only of document channel blocks - what promoting a run with documents stores here, one -----BEGIN TRACON DOCUMENT----- block per document - goes back as one document per block, unchanged, so the case repeats the run’s messages.

The evaluator receives the same text as its context, for checks that judge an answer against reference material.

The expected output. Referenced by the containsExpected check.

public string? ExpectedOutput { get; init; }

string?

The tool calls this case expects, by name and optionally by arguments.

public IReadOnlyList<EvalExpectedToolCall> ExpectedToolCalls { get; init; }

IReadOnlyList<EvalExpectedToolCall>

Referenced by the toolCallArgsMatch check. An empty list expects nothing, so that check passes. The toolCalled check does not read this field: it takes its tool names from its own tools field in the suite’s checks definition.

The case identifier.

public Guid Id { get; init; }

Guid

Values for the target agent’s AgentDefinition.Parameters schema. null for an agent that declares no parameters.

public IReadOnlyDictionary<string, string>? Parameters { get; init; }

IReadOnlyDictionary<string, string>?

Evaluating a parameterized agent without this field would run every case against unresolved {{name}} placeholders left literally in the instructions text - the same missing-parameter check that POST /api/agents/{name}/run applies also runs here, and a case missing a required value fails outright rather than running with a broken prompt.

The promotion time. null when hand-written.

public DateTimeOffset? PromotedAt { get; init; }

DateTimeOffset?

The query text sent to the agent.

public required string Query { get; init; }

string

The sequence number within the suite (starts at 0).

public required int Seq { get; init; }

int

The reason for promotion. null when hand-written.

public EvalCaseSource? SourceKind { get; init; }

EvalCaseSource?

The run the case was generated from. null when hand-written.

public Guid? SourceRunId { get; init; }

Guid?

The identifier of the suite this case belongs to.

public required Guid SuiteId { get; init; }

Guid

public override bool Equals(object? obj)

obj object?

bool

public bool Equals(EvalCase? other)

other EvalCase?

bool

public override int GetHashCode()

int

public override string ToString()

string

public static bool operator ==(EvalCase? left, EvalCase? right)

left EvalCase?

right EvalCase?

bool

public static bool operator !=(EvalCase? left, EvalCase? right)

left EvalCase?

right EvalCase?

bool