Skip to content
Tracon

RunJudgment

Namespace Tracon · Assembly Tracon.Abstractions.dll

The judge’s verdict: the named scores it produced.

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

A judge that reports one overall verdict returns a single JudgeScore named after itself. A judge that bridges a metric catalog returns one entry per metric. Each entry becomes its own RunScore row.

An empty list means the judge reached no decision, and nothing is written. It is not an error and it is not a score of zero.

public RunJudgment()

The greatest stored reason length.

public const int MaxReasonLength = 4000

int

The version of the component that produced this judgment, when the judge knows one. Written onto every score row as RunScore.EvaluatorVersion.

public string? EvaluatorVersion { get; init; }

string?

null — the default — means no version is reported, which is what a judge whose verdict depends on no versioned component should return. It never means “version zero”.

A judge that grades through a package scores against that package’s prompt, so upgrading the package moves the scores while the model stays the same. Reporting the version here is what lets a reader tell a real regression from a changed judge. Resolve it once, when the judge is constructed, rather than on each call.

At most RunScoreRules.MaxEvaluatorVersionLength characters; a longer value is a contract failure and the judge’s scores are not written.

The scores the judge produced. Empty when it reached no decision.

public IReadOnlyList<JudgeScore> Scores { get; init; }

IReadOnlyList<JudgeScore>

Names must be distinct within one judgment; JudgeScore.Name is part of the stored uniqueness key, so a repeated name would overwrite the earlier row. A duplicate is reported as a contract failure and nothing is written for that judge.

public override bool Equals(object? obj)

obj object?

bool

public bool Equals(RunJudgment? other)

other RunJudgment?

bool

public override int GetHashCode()

int

public override string ToString()

string

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

left RunJudgment?

right RunJudgment?

bool

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

left RunJudgment?

right RunJudgment?

bool