Skip to content

cayu.evals.assertions

Public Cayu API. Definitions are grouped by their public source module, and definitions from private implementation modules appear on their package’s page; adding a symbol does not move existing links. The import shown at each entry is a supported public namespace. Read the Python API overview and install the required extra.

from cayu.evals import ArtifactCreated

Bases: EvalAssertion.

ArtifactCreated.name() -> str
ArtifactCreated.assertion_revision() -> str | None

Stable definition revision carried by results when one exists.

ArtifactCreated.evaluates_failed_session() -> bool

Whether a failed root session is assertion evidence instead of a runner error.

ArtifactCreated.reads_final_output_only() -> bool

Whether this assertion reads nothing but the run’s final output.

Override to return True only when evaluate reads context.final_output (and, for workflows, the projected structured output) and no events, transcript, usage, children, probes, or memory evidence. Such assertions still score a completed workflow whose child evidence exceeded its capture bounds; undeclared assertions are unavailable on that partial evidence.

async ArtifactCreated.evaluate(context: EvalContext) -> EvalAssertionResult
ArtifactCreated.required_probes() -> ProbeRequirements
ArtifactCreated.passed(message: str='', *, metadata: dict[str, Any] | None=None, cost_summary: SessionCostSummary | None=None) -> EvalAssertionResult
ArtifactCreated.failed(message: str, *, metadata: dict[str, Any] | None=None, cost_summary: SessionCostSummary | None=None) -> EvalAssertionResult
ArtifactCreated.unavailable(message: str, *, metadata: dict[str, Any] | None=None, cost_summary: SessionCostSummary | None=None) -> EvalAssertionResult
ArtifactCreated.error(message: str, *, metadata: dict[str, Any] | None=None) -> EvalAssertionResult
ArtifactCreated.score_result(score: float, *, threshold: float=1.0, message: str='', metadata: dict[str, Any] | None=None) -> EvalAssertionResult
ArtifactCreated.__init__(*, filename: str | None=None, content_type: str | None=None, scope: ArtifactScope | str | None=None, min_count: int=1) -> None

Release source · Runtime guarantees · Capability guides

from cayu.evals import ChildSessionCompleted

Bases: EvalAssertion.

ChildSessionCompleted.name() -> str
ChildSessionCompleted.assertion_revision() -> str | None

Stable definition revision carried by results when one exists.

ChildSessionCompleted.evaluates_failed_session() -> bool

Whether a failed root session is assertion evidence instead of a runner error.

ChildSessionCompleted.reads_final_output_only() -> bool

Whether this assertion reads nothing but the run’s final output.

Override to return True only when evaluate reads context.final_output (and, for workflows, the projected structured output) and no events, transcript, usage, children, probes, or memory evidence. Such assertions still score a completed workflow whose child evidence exceeded its capture bounds; undeclared assertions are unavailable on that partial evidence.

async ChildSessionCompleted.evaluate(context: EvalContext) -> EvalAssertionResult
ChildSessionCompleted.required_probes() -> ProbeRequirements

Live-environment data this assertion needs captured into the Trajectory.

Default: none. Workspace/artifact assertions override this so the runner snapshots exactly what they read while the environment is still live, keeping evaluation offline.

ChildSessionCompleted.passed(message: str='', *, metadata: dict[str, Any] | None=None, cost_summary: SessionCostSummary | None=None) -> EvalAssertionResult
ChildSessionCompleted.failed(message: str, *, metadata: dict[str, Any] | None=None, cost_summary: SessionCostSummary | None=None) -> EvalAssertionResult
ChildSessionCompleted.unavailable(message: str, *, metadata: dict[str, Any] | None=None, cost_summary: SessionCostSummary | None=None) -> EvalAssertionResult
ChildSessionCompleted.error(message: str, *, metadata: dict[str, Any] | None=None) -> EvalAssertionResult
ChildSessionCompleted.score_result(score: float, *, threshold: float=1.0, message: str='', metadata: dict[str, Any] | None=None) -> EvalAssertionResult
ChildSessionCompleted.__init__(*, agent_name: str | None=None, min_count: int=1) -> None

Release source · Runtime guarantees · Capability guides

from cayu.evals import EvalAssertion

Assertion over a completed Cayu eval case.

Bases: ABC.

EvalAssertion.name() -> str
EvalAssertion.assertion_revision() -> str | None

Stable definition revision carried by results when one exists.

EvalAssertion.evaluates_failed_session() -> bool

Whether a failed root session is assertion evidence instead of a runner error.

EvalAssertion.reads_final_output_only() -> bool

Whether this assertion reads nothing but the run’s final output.

Override to return True only when evaluate reads context.final_output (and, for workflows, the projected structured output) and no events, transcript, usage, children, probes, or memory evidence. Such assertions still score a completed workflow whose child evidence exceeded its capture bounds; undeclared assertions are unavailable on that partial evidence.

async EvalAssertion.evaluate(context: EvalContext) -> EvalAssertionResult

Evaluate this assertion against a Cayu runtime context.

EvalAssertion.required_probes() -> ProbeRequirements

Live-environment data this assertion needs captured into the Trajectory.

Default: none. Workspace/artifact assertions override this so the runner snapshots exactly what they read while the environment is still live, keeping evaluation offline.

EvalAssertion.passed(message: str='', *, metadata: dict[str, Any] | None=None, cost_summary: SessionCostSummary | None=None) -> EvalAssertionResult
EvalAssertion.failed(message: str, *, metadata: dict[str, Any] | None=None, cost_summary: SessionCostSummary | None=None) -> EvalAssertionResult
EvalAssertion.unavailable(message: str, *, metadata: dict[str, Any] | None=None, cost_summary: SessionCostSummary | None=None) -> EvalAssertionResult
EvalAssertion.error(message: str, *, metadata: dict[str, Any] | None=None) -> EvalAssertionResult
EvalAssertion.score_result(score: float, *, threshold: float=1.0, message: str='', metadata: dict[str, Any] | None=None) -> EvalAssertionResult

Release source · Runtime guarantees · Capability guides

from cayu.evals import EventNotOccurred

Bases: EventOccurred.

EventNotOccurred.name() -> str
EventNotOccurred.assertion_revision() -> str | None

Stable definition revision carried by results when one exists.

EventNotOccurred.evaluates_failed_session() -> bool

Whether a failed root session is assertion evidence instead of a runner error.

EventNotOccurred.reads_final_output_only() -> bool

Whether this assertion reads nothing but the run’s final output.

Override to return True only when evaluate reads context.final_output (and, for workflows, the projected structured output) and no events, transcript, usage, children, probes, or memory evidence. Such assertions still score a completed workflow whose child evidence exceeded its capture bounds; undeclared assertions are unavailable on that partial evidence.

async EventNotOccurred.evaluate(context: EvalContext) -> EvalAssertionResult
EventNotOccurred.required_probes() -> ProbeRequirements

Live-environment data this assertion needs captured into the Trajectory.

Default: none. Workspace/artifact assertions override this so the runner snapshots exactly what they read while the environment is still live, keeping evaluation offline.

EventNotOccurred.passed(message: str='', *, metadata: dict[str, Any] | None=None, cost_summary: SessionCostSummary | None=None) -> EvalAssertionResult
EventNotOccurred.failed(message: str, *, metadata: dict[str, Any] | None=None, cost_summary: SessionCostSummary | None=None) -> EvalAssertionResult
EventNotOccurred.unavailable(message: str, *, metadata: dict[str, Any] | None=None, cost_summary: SessionCostSummary | None=None) -> EvalAssertionResult
EventNotOccurred.error(message: str, *, metadata: dict[str, Any] | None=None) -> EvalAssertionResult
EventNotOccurred.score_result(score: float, *, threshold: float=1.0, message: str='', metadata: dict[str, Any] | None=None) -> EvalAssertionResult
EventNotOccurred.__init__(event_type: EventType | str) -> None

Release source · Runtime guarantees · Capability guides

from cayu.evals import EventOccurred

Bases: EvalAssertion.

EventOccurred.name() -> str
EventOccurred.assertion_revision() -> str | None

Stable definition revision carried by results when one exists.

EventOccurred.evaluates_failed_session() -> bool

Whether a failed root session is assertion evidence instead of a runner error.

EventOccurred.reads_final_output_only() -> bool

Whether this assertion reads nothing but the run’s final output.

Override to return True only when evaluate reads context.final_output (and, for workflows, the projected structured output) and no events, transcript, usage, children, probes, or memory evidence. Such assertions still score a completed workflow whose child evidence exceeded its capture bounds; undeclared assertions are unavailable on that partial evidence.

async EventOccurred.evaluate(context: EvalContext) -> EvalAssertionResult
EventOccurred.required_probes() -> ProbeRequirements

Live-environment data this assertion needs captured into the Trajectory.

Default: none. Workspace/artifact assertions override this so the runner snapshots exactly what they read while the environment is still live, keeping evaluation offline.

EventOccurred.passed(message: str='', *, metadata: dict[str, Any] | None=None, cost_summary: SessionCostSummary | None=None) -> EvalAssertionResult
EventOccurred.failed(message: str, *, metadata: dict[str, Any] | None=None, cost_summary: SessionCostSummary | None=None) -> EvalAssertionResult
EventOccurred.unavailable(message: str, *, metadata: dict[str, Any] | None=None, cost_summary: SessionCostSummary | None=None) -> EvalAssertionResult
EventOccurred.error(message: str, *, metadata: dict[str, Any] | None=None) -> EvalAssertionResult
EventOccurred.score_result(score: float, *, threshold: float=1.0, message: str='', metadata: dict[str, Any] | None=None) -> EvalAssertionResult
EventOccurred.__init__(event_type: EventType | str, *, min_count: int=1, max_count: int | None=None) -> None

Release source · Runtime guarantees · Capability guides

from cayu.evals import EventPayloadContains

Bases: EvalAssertion.

EventPayloadContains.name() -> str
EventPayloadContains.assertion_revision() -> str | None

Stable definition revision carried by results when one exists.

EventPayloadContains.evaluates_failed_session() -> bool

Whether a failed root session is assertion evidence instead of a runner error.

EventPayloadContains.reads_final_output_only() -> bool

Whether this assertion reads nothing but the run’s final output.

Override to return True only when evaluate reads context.final_output (and, for workflows, the projected structured output) and no events, transcript, usage, children, probes, or memory evidence. Such assertions still score a completed workflow whose child evidence exceeded its capture bounds; undeclared assertions are unavailable on that partial evidence.

async EventPayloadContains.evaluate(context: EvalContext) -> EvalAssertionResult
EventPayloadContains.required_probes() -> ProbeRequirements

Live-environment data this assertion needs captured into the Trajectory.

Default: none. Workspace/artifact assertions override this so the runner snapshots exactly what they read while the environment is still live, keeping evaluation offline.

EventPayloadContains.passed(message: str='', *, metadata: dict[str, Any] | None=None, cost_summary: SessionCostSummary | None=None) -> EvalAssertionResult
EventPayloadContains.failed(message: str, *, metadata: dict[str, Any] | None=None, cost_summary: SessionCostSummary | None=None) -> EvalAssertionResult
EventPayloadContains.unavailable(message: str, *, metadata: dict[str, Any] | None=None, cost_summary: SessionCostSummary | None=None) -> EvalAssertionResult
EventPayloadContains.error(message: str, *, metadata: dict[str, Any] | None=None) -> EvalAssertionResult
EventPayloadContains.score_result(score: float, *, threshold: float=1.0, message: str='', metadata: dict[str, Any] | None=None) -> EvalAssertionResult
EventPayloadContains.__init__(event_type: EventType | str, expected: Mapping[str, Any], *, min_count: int=1) -> None

Release source · Runtime guarantees · Capability guides

from cayu.evals import FinalOutputContains

Bases: EvalAssertion.

FinalOutputContains.name() -> str
FinalOutputContains.assertion_revision() -> str | None

Stable definition revision carried by results when one exists.

FinalOutputContains.evaluates_failed_session() -> bool

Whether a failed root session is assertion evidence instead of a runner error.

FinalOutputContains.reads_final_output_only() -> bool
async FinalOutputContains.evaluate(context: EvalContext) -> EvalAssertionResult
FinalOutputContains.required_probes() -> ProbeRequirements

Live-environment data this assertion needs captured into the Trajectory.

Default: none. Workspace/artifact assertions override this so the runner snapshots exactly what they read while the environment is still live, keeping evaluation offline.

FinalOutputContains.passed(message: str='', *, metadata: dict[str, Any] | None=None, cost_summary: SessionCostSummary | None=None) -> EvalAssertionResult
FinalOutputContains.failed(message: str, *, metadata: dict[str, Any] | None=None, cost_summary: SessionCostSummary | None=None) -> EvalAssertionResult
FinalOutputContains.unavailable(message: str, *, metadata: dict[str, Any] | None=None, cost_summary: SessionCostSummary | None=None) -> EvalAssertionResult
FinalOutputContains.error(message: str, *, metadata: dict[str, Any] | None=None) -> EvalAssertionResult
FinalOutputContains.score_result(score: float, *, threshold: float=1.0, message: str='', metadata: dict[str, Any] | None=None) -> EvalAssertionResult
FinalOutputContains.__init__(text: str) -> None

Release source · Runtime guarantees · Capability guides

from cayu.evals import FinalOutputMatches

Bases: EvalAssertion.

FinalOutputMatches.name() -> str
FinalOutputMatches.assertion_revision() -> str | None

Stable definition revision carried by results when one exists.

FinalOutputMatches.evaluates_failed_session() -> bool

Whether a failed root session is assertion evidence instead of a runner error.

FinalOutputMatches.reads_final_output_only() -> bool
async FinalOutputMatches.evaluate(context: EvalContext) -> EvalAssertionResult
FinalOutputMatches.required_probes() -> ProbeRequirements

Live-environment data this assertion needs captured into the Trajectory.

Default: none. Workspace/artifact assertions override this so the runner snapshots exactly what they read while the environment is still live, keeping evaluation offline.

FinalOutputMatches.passed(message: str='', *, metadata: dict[str, Any] | None=None, cost_summary: SessionCostSummary | None=None) -> EvalAssertionResult
FinalOutputMatches.failed(message: str, *, metadata: dict[str, Any] | None=None, cost_summary: SessionCostSummary | None=None) -> EvalAssertionResult
FinalOutputMatches.unavailable(message: str, *, metadata: dict[str, Any] | None=None, cost_summary: SessionCostSummary | None=None) -> EvalAssertionResult
FinalOutputMatches.error(message: str, *, metadata: dict[str, Any] | None=None) -> EvalAssertionResult
FinalOutputMatches.score_result(score: float, *, threshold: float=1.0, message: str='', metadata: dict[str, Any] | None=None) -> EvalAssertionResult
FinalOutputMatches.__init__(pattern: str) -> None

Release source · Runtime guarantees · Capability guides

from cayu.evals import MaxEstimatedCost

Bases: EvalAssertion.

MaxEstimatedCost.name() -> str
MaxEstimatedCost.assertion_revision() -> str | None

Stable definition revision carried by results when one exists.

MaxEstimatedCost.evaluates_failed_session() -> bool

Whether a failed root session is assertion evidence instead of a runner error.

MaxEstimatedCost.reads_final_output_only() -> bool

Whether this assertion reads nothing but the run’s final output.

Override to return True only when evaluate reads context.final_output (and, for workflows, the projected structured output) and no events, transcript, usage, children, probes, or memory evidence. Such assertions still score a completed workflow whose child evidence exceeded its capture bounds; undeclared assertions are unavailable on that partial evidence.

async MaxEstimatedCost.evaluate(context: EvalContext) -> EvalAssertionResult
MaxEstimatedCost.required_probes() -> ProbeRequirements

Live-environment data this assertion needs captured into the Trajectory.

Default: none. Workspace/artifact assertions override this so the runner snapshots exactly what they read while the environment is still live, keeping evaluation offline.

MaxEstimatedCost.passed(message: str='', *, metadata: dict[str, Any] | None=None, cost_summary: SessionCostSummary | None=None) -> EvalAssertionResult
MaxEstimatedCost.failed(message: str, *, metadata: dict[str, Any] | None=None, cost_summary: SessionCostSummary | None=None) -> EvalAssertionResult
MaxEstimatedCost.unavailable(message: str, *, metadata: dict[str, Any] | None=None, cost_summary: SessionCostSummary | None=None) -> EvalAssertionResult
MaxEstimatedCost.error(message: str, *, metadata: dict[str, Any] | None=None) -> EvalAssertionResult
MaxEstimatedCost.score_result(score: float, *, threshold: float=1.0, message: str='', metadata: dict[str, Any] | None=None) -> EvalAssertionResult
MaxEstimatedCost.__init__(maximum: Decimal | str | int | float, pricing: PriceBook, *, currency: str='USD') -> None

Release source · Runtime guarantees · Capability guides

from cayu.evals import MaxModelSteps

Bases: EvalAssertion.

MaxModelSteps.name() -> str
MaxModelSteps.assertion_revision() -> str | None

Stable definition revision carried by results when one exists.

MaxModelSteps.evaluates_failed_session() -> bool

Whether a failed root session is assertion evidence instead of a runner error.

MaxModelSteps.reads_final_output_only() -> bool

Whether this assertion reads nothing but the run’s final output.

Override to return True only when evaluate reads context.final_output (and, for workflows, the projected structured output) and no events, transcript, usage, children, probes, or memory evidence. Such assertions still score a completed workflow whose child evidence exceeded its capture bounds; undeclared assertions are unavailable on that partial evidence.

async MaxModelSteps.evaluate(context: EvalContext) -> EvalAssertionResult
MaxModelSteps.required_probes() -> ProbeRequirements

Live-environment data this assertion needs captured into the Trajectory.

Default: none. Workspace/artifact assertions override this so the runner snapshots exactly what they read while the environment is still live, keeping evaluation offline.

MaxModelSteps.passed(message: str='', *, metadata: dict[str, Any] | None=None, cost_summary: SessionCostSummary | None=None) -> EvalAssertionResult
MaxModelSteps.failed(message: str, *, metadata: dict[str, Any] | None=None, cost_summary: SessionCostSummary | None=None) -> EvalAssertionResult
MaxModelSteps.unavailable(message: str, *, metadata: dict[str, Any] | None=None, cost_summary: SessionCostSummary | None=None) -> EvalAssertionResult
MaxModelSteps.error(message: str, *, metadata: dict[str, Any] | None=None) -> EvalAssertionResult
MaxModelSteps.score_result(score: float, *, threshold: float=1.0, message: str='', metadata: dict[str, Any] | None=None) -> EvalAssertionResult
MaxModelSteps.__init__(maximum: int) -> None

Release source · Runtime guarantees · Capability guides

from cayu.evals import MaxToolCalls

Bases: EvalAssertion.

MaxToolCalls.name() -> str
MaxToolCalls.assertion_revision() -> str | None

Stable definition revision carried by results when one exists.

MaxToolCalls.evaluates_failed_session() -> bool

Whether a failed root session is assertion evidence instead of a runner error.

MaxToolCalls.reads_final_output_only() -> bool

Whether this assertion reads nothing but the run’s final output.

Override to return True only when evaluate reads context.final_output (and, for workflows, the projected structured output) and no events, transcript, usage, children, probes, or memory evidence. Such assertions still score a completed workflow whose child evidence exceeded its capture bounds; undeclared assertions are unavailable on that partial evidence.

async MaxToolCalls.evaluate(context: EvalContext) -> EvalAssertionResult
MaxToolCalls.required_probes() -> ProbeRequirements

Live-environment data this assertion needs captured into the Trajectory.

Default: none. Workspace/artifact assertions override this so the runner snapshots exactly what they read while the environment is still live, keeping evaluation offline.

MaxToolCalls.passed(message: str='', *, metadata: dict[str, Any] | None=None, cost_summary: SessionCostSummary | None=None) -> EvalAssertionResult
MaxToolCalls.failed(message: str, *, metadata: dict[str, Any] | None=None, cost_summary: SessionCostSummary | None=None) -> EvalAssertionResult
MaxToolCalls.unavailable(message: str, *, metadata: dict[str, Any] | None=None, cost_summary: SessionCostSummary | None=None) -> EvalAssertionResult
MaxToolCalls.error(message: str, *, metadata: dict[str, Any] | None=None) -> EvalAssertionResult
MaxToolCalls.score_result(score: float, *, threshold: float=1.0, message: str='', metadata: dict[str, Any] | None=None) -> EvalAssertionResult
MaxToolCalls.__init__(maximum: int) -> None

Release source · Runtime guarantees · Capability guides

from cayu.evals import MaxTotalTokens

Bases: EvalAssertion.

MaxTotalTokens.name() -> str
MaxTotalTokens.assertion_revision() -> str | None

Stable definition revision carried by results when one exists.

MaxTotalTokens.evaluates_failed_session() -> bool

Whether a failed root session is assertion evidence instead of a runner error.

MaxTotalTokens.reads_final_output_only() -> bool

Whether this assertion reads nothing but the run’s final output.

Override to return True only when evaluate reads context.final_output (and, for workflows, the projected structured output) and no events, transcript, usage, children, probes, or memory evidence. Such assertions still score a completed workflow whose child evidence exceeded its capture bounds; undeclared assertions are unavailable on that partial evidence.

async MaxTotalTokens.evaluate(context: EvalContext) -> EvalAssertionResult
MaxTotalTokens.required_probes() -> ProbeRequirements

Live-environment data this assertion needs captured into the Trajectory.

Default: none. Workspace/artifact assertions override this so the runner snapshots exactly what they read while the environment is still live, keeping evaluation offline.

MaxTotalTokens.passed(message: str='', *, metadata: dict[str, Any] | None=None, cost_summary: SessionCostSummary | None=None) -> EvalAssertionResult
MaxTotalTokens.failed(message: str, *, metadata: dict[str, Any] | None=None, cost_summary: SessionCostSummary | None=None) -> EvalAssertionResult
MaxTotalTokens.unavailable(message: str, *, metadata: dict[str, Any] | None=None, cost_summary: SessionCostSummary | None=None) -> EvalAssertionResult
MaxTotalTokens.error(message: str, *, metadata: dict[str, Any] | None=None) -> EvalAssertionResult
MaxTotalTokens.score_result(score: float, *, threshold: float=1.0, message: str='', metadata: dict[str, Any] | None=None) -> EvalAssertionResult
MaxTotalTokens.__init__(maximum: int) -> None

Release source · Runtime guarantees · Capability guides

from cayu.evals import SessionCompleted

Bases: SessionStatusIs.

SessionCompleted.name() -> str
SessionCompleted.assertion_revision() -> str | None

Stable definition revision carried by results when one exists.

SessionCompleted.evaluates_failed_session() -> bool
SessionCompleted.reads_final_output_only() -> bool

Whether this assertion reads nothing but the run’s final output.

Override to return True only when evaluate reads context.final_output (and, for workflows, the projected structured output) and no events, transcript, usage, children, probes, or memory evidence. Such assertions still score a completed workflow whose child evidence exceeded its capture bounds; undeclared assertions are unavailable on that partial evidence.

async SessionCompleted.evaluate(context: EvalContext) -> EvalAssertionResult
SessionCompleted.required_probes() -> ProbeRequirements

Live-environment data this assertion needs captured into the Trajectory.

Default: none. Workspace/artifact assertions override this so the runner snapshots exactly what they read while the environment is still live, keeping evaluation offline.

SessionCompleted.passed(message: str='', *, metadata: dict[str, Any] | None=None, cost_summary: SessionCostSummary | None=None) -> EvalAssertionResult
SessionCompleted.failed(message: str, *, metadata: dict[str, Any] | None=None, cost_summary: SessionCostSummary | None=None) -> EvalAssertionResult
SessionCompleted.unavailable(message: str, *, metadata: dict[str, Any] | None=None, cost_summary: SessionCostSummary | None=None) -> EvalAssertionResult
SessionCompleted.error(message: str, *, metadata: dict[str, Any] | None=None) -> EvalAssertionResult
SessionCompleted.score_result(score: float, *, threshold: float=1.0, message: str='', metadata: dict[str, Any] | None=None) -> EvalAssertionResult
SessionCompleted.__init__() -> None

Release source · Runtime guarantees · Capability guides

from cayu.evals import SessionFailed

Bases: SessionStatusIs.

SessionFailed.name() -> str
SessionFailed.assertion_revision() -> str | None

Stable definition revision carried by results when one exists.

SessionFailed.evaluates_failed_session() -> bool
SessionFailed.reads_final_output_only() -> bool

Whether this assertion reads nothing but the run’s final output.

Override to return True only when evaluate reads context.final_output (and, for workflows, the projected structured output) and no events, transcript, usage, children, probes, or memory evidence. Such assertions still score a completed workflow whose child evidence exceeded its capture bounds; undeclared assertions are unavailable on that partial evidence.

async SessionFailed.evaluate(context: EvalContext) -> EvalAssertionResult
SessionFailed.required_probes() -> ProbeRequirements

Live-environment data this assertion needs captured into the Trajectory.

Default: none. Workspace/artifact assertions override this so the runner snapshots exactly what they read while the environment is still live, keeping evaluation offline.

SessionFailed.passed(message: str='', *, metadata: dict[str, Any] | None=None, cost_summary: SessionCostSummary | None=None) -> EvalAssertionResult
SessionFailed.failed(message: str, *, metadata: dict[str, Any] | None=None, cost_summary: SessionCostSummary | None=None) -> EvalAssertionResult
SessionFailed.unavailable(message: str, *, metadata: dict[str, Any] | None=None, cost_summary: SessionCostSummary | None=None) -> EvalAssertionResult
SessionFailed.error(message: str, *, metadata: dict[str, Any] | None=None) -> EvalAssertionResult
SessionFailed.score_result(score: float, *, threshold: float=1.0, message: str='', metadata: dict[str, Any] | None=None) -> EvalAssertionResult
SessionFailed.__init__() -> None

Release source · Runtime guarantees · Capability guides

from cayu.evals import SessionInterrupted

Bases: SessionStatusIs.

SessionInterrupted.name() -> str
SessionInterrupted.assertion_revision() -> str | None

Stable definition revision carried by results when one exists.

SessionInterrupted.evaluates_failed_session() -> bool
SessionInterrupted.reads_final_output_only() -> bool

Whether this assertion reads nothing but the run’s final output.

Override to return True only when evaluate reads context.final_output (and, for workflows, the projected structured output) and no events, transcript, usage, children, probes, or memory evidence. Such assertions still score a completed workflow whose child evidence exceeded its capture bounds; undeclared assertions are unavailable on that partial evidence.

async SessionInterrupted.evaluate(context: EvalContext) -> EvalAssertionResult
SessionInterrupted.required_probes() -> ProbeRequirements

Live-environment data this assertion needs captured into the Trajectory.

Default: none. Workspace/artifact assertions override this so the runner snapshots exactly what they read while the environment is still live, keeping evaluation offline.

SessionInterrupted.passed(message: str='', *, metadata: dict[str, Any] | None=None, cost_summary: SessionCostSummary | None=None) -> EvalAssertionResult
SessionInterrupted.failed(message: str, *, metadata: dict[str, Any] | None=None, cost_summary: SessionCostSummary | None=None) -> EvalAssertionResult
SessionInterrupted.unavailable(message: str, *, metadata: dict[str, Any] | None=None, cost_summary: SessionCostSummary | None=None) -> EvalAssertionResult
SessionInterrupted.error(message: str, *, metadata: dict[str, Any] | None=None) -> EvalAssertionResult
SessionInterrupted.score_result(score: float, *, threshold: float=1.0, message: str='', metadata: dict[str, Any] | None=None) -> EvalAssertionResult
SessionInterrupted.__init__() -> None

Release source · Runtime guarantees · Capability guides

from cayu.evals import SessionStatusIs

Bases: EvalAssertion.

SessionStatusIs.name() -> str
SessionStatusIs.assertion_revision() -> str | None

Stable definition revision carried by results when one exists.

SessionStatusIs.evaluates_failed_session() -> bool
SessionStatusIs.reads_final_output_only() -> bool

Whether this assertion reads nothing but the run’s final output.

Override to return True only when evaluate reads context.final_output (and, for workflows, the projected structured output) and no events, transcript, usage, children, probes, or memory evidence. Such assertions still score a completed workflow whose child evidence exceeded its capture bounds; undeclared assertions are unavailable on that partial evidence.

async SessionStatusIs.evaluate(context: EvalContext) -> EvalAssertionResult
SessionStatusIs.required_probes() -> ProbeRequirements

Live-environment data this assertion needs captured into the Trajectory.

Default: none. Workspace/artifact assertions override this so the runner snapshots exactly what they read while the environment is still live, keeping evaluation offline.

SessionStatusIs.passed(message: str='', *, metadata: dict[str, Any] | None=None, cost_summary: SessionCostSummary | None=None) -> EvalAssertionResult
SessionStatusIs.failed(message: str, *, metadata: dict[str, Any] | None=None, cost_summary: SessionCostSummary | None=None) -> EvalAssertionResult
SessionStatusIs.unavailable(message: str, *, metadata: dict[str, Any] | None=None, cost_summary: SessionCostSummary | None=None) -> EvalAssertionResult
SessionStatusIs.error(message: str, *, metadata: dict[str, Any] | None=None) -> EvalAssertionResult
SessionStatusIs.score_result(score: float, *, threshold: float=1.0, message: str='', metadata: dict[str, Any] | None=None) -> EvalAssertionResult
SessionStatusIs.__init__(status: SessionStatus | str) -> None

Release source · Runtime guarantees · Capability guides

from cayu.evals import ToolArgsContain

Bases: EvalAssertion.

ToolArgsContain.name() -> str
ToolArgsContain.assertion_revision() -> str | None

Stable definition revision carried by results when one exists.

ToolArgsContain.evaluates_failed_session() -> bool

Whether a failed root session is assertion evidence instead of a runner error.

ToolArgsContain.reads_final_output_only() -> bool

Whether this assertion reads nothing but the run’s final output.

Override to return True only when evaluate reads context.final_output (and, for workflows, the projected structured output) and no events, transcript, usage, children, probes, or memory evidence. Such assertions still score a completed workflow whose child evidence exceeded its capture bounds; undeclared assertions are unavailable on that partial evidence.

async ToolArgsContain.evaluate(context: EvalContext) -> EvalAssertionResult
ToolArgsContain.required_probes() -> ProbeRequirements

Live-environment data this assertion needs captured into the Trajectory.

Default: none. Workspace/artifact assertions override this so the runner snapshots exactly what they read while the environment is still live, keeping evaluation offline.

ToolArgsContain.passed(message: str='', *, metadata: dict[str, Any] | None=None, cost_summary: SessionCostSummary | None=None) -> EvalAssertionResult
ToolArgsContain.failed(message: str, *, metadata: dict[str, Any] | None=None, cost_summary: SessionCostSummary | None=None) -> EvalAssertionResult
ToolArgsContain.unavailable(message: str, *, metadata: dict[str, Any] | None=None, cost_summary: SessionCostSummary | None=None) -> EvalAssertionResult
ToolArgsContain.error(message: str, *, metadata: dict[str, Any] | None=None) -> EvalAssertionResult
ToolArgsContain.score_result(score: float, *, threshold: float=1.0, message: str='', metadata: dict[str, Any] | None=None) -> EvalAssertionResult
ToolArgsContain.__init__(tool_name: str, expected: Mapping[str, Any]) -> None

Release source · Runtime guarantees · Capability guides

from cayu.evals import ToolCalled

Bases: EvalAssertion.

ToolCalled.name() -> str
ToolCalled.assertion_revision() -> str | None

Stable definition revision carried by results when one exists.

ToolCalled.evaluates_failed_session() -> bool

Whether a failed root session is assertion evidence instead of a runner error.

ToolCalled.reads_final_output_only() -> bool

Whether this assertion reads nothing but the run’s final output.

Override to return True only when evaluate reads context.final_output (and, for workflows, the projected structured output) and no events, transcript, usage, children, probes, or memory evidence. Such assertions still score a completed workflow whose child evidence exceeded its capture bounds; undeclared assertions are unavailable on that partial evidence.

async ToolCalled.evaluate(context: EvalContext) -> EvalAssertionResult
ToolCalled.required_probes() -> ProbeRequirements

Live-environment data this assertion needs captured into the Trajectory.

Default: none. Workspace/artifact assertions override this so the runner snapshots exactly what they read while the environment is still live, keeping evaluation offline.

ToolCalled.passed(message: str='', *, metadata: dict[str, Any] | None=None, cost_summary: SessionCostSummary | None=None) -> EvalAssertionResult
ToolCalled.failed(message: str, *, metadata: dict[str, Any] | None=None, cost_summary: SessionCostSummary | None=None) -> EvalAssertionResult
ToolCalled.unavailable(message: str, *, metadata: dict[str, Any] | None=None, cost_summary: SessionCostSummary | None=None) -> EvalAssertionResult
ToolCalled.error(message: str, *, metadata: dict[str, Any] | None=None) -> EvalAssertionResult
ToolCalled.score_result(score: float, *, threshold: float=1.0, message: str='', metadata: dict[str, Any] | None=None) -> EvalAssertionResult
ToolCalled.__init__(tool_name: str, *, min_count: int=1, max_count: int | None=None) -> None

Release source · Runtime guarantees · Capability guides

from cayu.evals import ToolNotCalled

Bases: ToolCalled.

ToolNotCalled.name() -> str
ToolNotCalled.assertion_revision() -> str | None

Stable definition revision carried by results when one exists.

ToolNotCalled.evaluates_failed_session() -> bool

Whether a failed root session is assertion evidence instead of a runner error.

ToolNotCalled.reads_final_output_only() -> bool

Whether this assertion reads nothing but the run’s final output.

Override to return True only when evaluate reads context.final_output (and, for workflows, the projected structured output) and no events, transcript, usage, children, probes, or memory evidence. Such assertions still score a completed workflow whose child evidence exceeded its capture bounds; undeclared assertions are unavailable on that partial evidence.

async ToolNotCalled.evaluate(context: EvalContext) -> EvalAssertionResult
ToolNotCalled.required_probes() -> ProbeRequirements

Live-environment data this assertion needs captured into the Trajectory.

Default: none. Workspace/artifact assertions override this so the runner snapshots exactly what they read while the environment is still live, keeping evaluation offline.

ToolNotCalled.passed(message: str='', *, metadata: dict[str, Any] | None=None, cost_summary: SessionCostSummary | None=None) -> EvalAssertionResult
ToolNotCalled.failed(message: str, *, metadata: dict[str, Any] | None=None, cost_summary: SessionCostSummary | None=None) -> EvalAssertionResult
ToolNotCalled.unavailable(message: str, *, metadata: dict[str, Any] | None=None, cost_summary: SessionCostSummary | None=None) -> EvalAssertionResult
ToolNotCalled.error(message: str, *, metadata: dict[str, Any] | None=None) -> EvalAssertionResult
ToolNotCalled.score_result(score: float, *, threshold: float=1.0, message: str='', metadata: dict[str, Any] | None=None) -> EvalAssertionResult
ToolNotCalled.__init__(tool_name: str) -> None

Release source · Runtime guarantees · Capability guides

from cayu.evals import ToolResultContains

Bases: EvalAssertion.

ToolResultContains.name() -> str
ToolResultContains.assertion_revision() -> str | None

Stable definition revision carried by results when one exists.

ToolResultContains.evaluates_failed_session() -> bool

Whether a failed root session is assertion evidence instead of a runner error.

ToolResultContains.reads_final_output_only() -> bool

Whether this assertion reads nothing but the run’s final output.

Override to return True only when evaluate reads context.final_output (and, for workflows, the projected structured output) and no events, transcript, usage, children, probes, or memory evidence. Such assertions still score a completed workflow whose child evidence exceeded its capture bounds; undeclared assertions are unavailable on that partial evidence.

async ToolResultContains.evaluate(context: EvalContext) -> EvalAssertionResult
ToolResultContains.required_probes() -> ProbeRequirements

Live-environment data this assertion needs captured into the Trajectory.

Default: none. Workspace/artifact assertions override this so the runner snapshots exactly what they read while the environment is still live, keeping evaluation offline.

ToolResultContains.passed(message: str='', *, metadata: dict[str, Any] | None=None, cost_summary: SessionCostSummary | None=None) -> EvalAssertionResult
ToolResultContains.failed(message: str, *, metadata: dict[str, Any] | None=None, cost_summary: SessionCostSummary | None=None) -> EvalAssertionResult
ToolResultContains.unavailable(message: str, *, metadata: dict[str, Any] | None=None, cost_summary: SessionCostSummary | None=None) -> EvalAssertionResult
ToolResultContains.error(message: str, *, metadata: dict[str, Any] | None=None) -> EvalAssertionResult
ToolResultContains.score_result(score: float, *, threshold: float=1.0, message: str='', metadata: dict[str, Any] | None=None) -> EvalAssertionResult
ToolResultContains.__init__(tool_name: str, text: str) -> None

Release source · Runtime guarantees · Capability guides

from cayu.evals import ToolsCalledInOrder

Require exact model-requested tool names in transcript order.

Bases: EvalAssertion.

ToolsCalledInOrder.name() -> str
ToolsCalledInOrder.assertion_revision() -> str | None

Stable definition revision carried by results when one exists.

ToolsCalledInOrder.evaluates_failed_session() -> bool

Whether a failed root session is assertion evidence instead of a runner error.

ToolsCalledInOrder.reads_final_output_only() -> bool

Whether this assertion reads nothing but the run’s final output.

Override to return True only when evaluate reads context.final_output (and, for workflows, the projected structured output) and no events, transcript, usage, children, probes, or memory evidence. Such assertions still score a completed workflow whose child evidence exceeded its capture bounds; undeclared assertions are unavailable on that partial evidence.

async ToolsCalledInOrder.evaluate(context: EvalContext) -> EvalAssertionResult
ToolsCalledInOrder.required_probes() -> ProbeRequirements

Live-environment data this assertion needs captured into the Trajectory.

Default: none. Workspace/artifact assertions override this so the runner snapshots exactly what they read while the environment is still live, keeping evaluation offline.

ToolsCalledInOrder.passed(message: str='', *, metadata: dict[str, Any] | None=None, cost_summary: SessionCostSummary | None=None) -> EvalAssertionResult
ToolsCalledInOrder.failed(message: str, *, metadata: dict[str, Any] | None=None, cost_summary: SessionCostSummary | None=None) -> EvalAssertionResult
ToolsCalledInOrder.unavailable(message: str, *, metadata: dict[str, Any] | None=None, cost_summary: SessionCostSummary | None=None) -> EvalAssertionResult
ToolsCalledInOrder.error(message: str, *, metadata: dict[str, Any] | None=None) -> EvalAssertionResult
ToolsCalledInOrder.score_result(score: float, *, threshold: float=1.0, message: str='', metadata: dict[str, Any] | None=None) -> EvalAssertionResult
ToolsCalledInOrder.__init__(tool_names: Iterable[str]) -> None

Release source · Runtime guarantees · Capability guides

from cayu.evals import TranscriptContains

Bases: EvalAssertion.

TranscriptContains.name() -> str
TranscriptContains.assertion_revision() -> str | None

Stable definition revision carried by results when one exists.

TranscriptContains.evaluates_failed_session() -> bool

Whether a failed root session is assertion evidence instead of a runner error.

TranscriptContains.reads_final_output_only() -> bool

Whether this assertion reads nothing but the run’s final output.

Override to return True only when evaluate reads context.final_output (and, for workflows, the projected structured output) and no events, transcript, usage, children, probes, or memory evidence. Such assertions still score a completed workflow whose child evidence exceeded its capture bounds; undeclared assertions are unavailable on that partial evidence.

async TranscriptContains.evaluate(context: EvalContext) -> EvalAssertionResult
TranscriptContains.required_probes() -> ProbeRequirements

Live-environment data this assertion needs captured into the Trajectory.

Default: none. Workspace/artifact assertions override this so the runner snapshots exactly what they read while the environment is still live, keeping evaluation offline.

TranscriptContains.passed(message: str='', *, metadata: dict[str, Any] | None=None, cost_summary: SessionCostSummary | None=None) -> EvalAssertionResult
TranscriptContains.failed(message: str, *, metadata: dict[str, Any] | None=None, cost_summary: SessionCostSummary | None=None) -> EvalAssertionResult
TranscriptContains.unavailable(message: str, *, metadata: dict[str, Any] | None=None, cost_summary: SessionCostSummary | None=None) -> EvalAssertionResult
TranscriptContains.error(message: str, *, metadata: dict[str, Any] | None=None) -> EvalAssertionResult
TranscriptContains.score_result(score: float, *, threshold: float=1.0, message: str='', metadata: dict[str, Any] | None=None) -> EvalAssertionResult
TranscriptContains.__init__(text: str) -> None

Release source · Runtime guarantees · Capability guides

from cayu.evals import UsageRecorded

Bases: EvalAssertion.

UsageRecorded.name() -> str
UsageRecorded.assertion_revision() -> str | None

Stable definition revision carried by results when one exists.

UsageRecorded.evaluates_failed_session() -> bool

Whether a failed root session is assertion evidence instead of a runner error.

UsageRecorded.reads_final_output_only() -> bool

Whether this assertion reads nothing but the run’s final output.

Override to return True only when evaluate reads context.final_output (and, for workflows, the projected structured output) and no events, transcript, usage, children, probes, or memory evidence. Such assertions still score a completed workflow whose child evidence exceeded its capture bounds; undeclared assertions are unavailable on that partial evidence.

async UsageRecorded.evaluate(context: EvalContext) -> EvalAssertionResult
UsageRecorded.required_probes() -> ProbeRequirements

Live-environment data this assertion needs captured into the Trajectory.

Default: none. Workspace/artifact assertions override this so the runner snapshots exactly what they read while the environment is still live, keeping evaluation offline.

UsageRecorded.passed(message: str='', *, metadata: dict[str, Any] | None=None, cost_summary: SessionCostSummary | None=None) -> EvalAssertionResult
UsageRecorded.failed(message: str, *, metadata: dict[str, Any] | None=None, cost_summary: SessionCostSummary | None=None) -> EvalAssertionResult
UsageRecorded.unavailable(message: str, *, metadata: dict[str, Any] | None=None, cost_summary: SessionCostSummary | None=None) -> EvalAssertionResult
UsageRecorded.error(message: str, *, metadata: dict[str, Any] | None=None) -> EvalAssertionResult
UsageRecorded.score_result(score: float, *, threshold: float=1.0, message: str='', metadata: dict[str, Any] | None=None) -> EvalAssertionResult
UsageRecorded.__init__(*, min_total_tokens: int=1) -> None

Release source · Runtime guarantees · Capability guides

from cayu.evals import WorkspaceFileContains

Assert a workspace file contains expected text when the case finishes.

Like WorkspaceFileExists, this reads the workspace as it stands at case end, not “produced by this case”: a file left by an earlier case in a shared workspace counts. Register an environment factory for per-case isolation. See docs/evals.md “Workspace isolation”.

Bases: EvalAssertion.

WorkspaceFileContains.name() -> str
WorkspaceFileContains.assertion_revision() -> str | None

Stable definition revision carried by results when one exists.

WorkspaceFileContains.evaluates_failed_session() -> bool

Whether a failed root session is assertion evidence instead of a runner error.

WorkspaceFileContains.reads_final_output_only() -> bool

Whether this assertion reads nothing but the run’s final output.

Override to return True only when evaluate reads context.final_output (and, for workflows, the projected structured output) and no events, transcript, usage, children, probes, or memory evidence. Such assertions still score a completed workflow whose child evidence exceeded its capture bounds; undeclared assertions are unavailable on that partial evidence.

async WorkspaceFileContains.evaluate(context: EvalContext) -> EvalAssertionResult
WorkspaceFileContains.required_probes() -> ProbeRequirements
WorkspaceFileContains.passed(message: str='', *, metadata: dict[str, Any] | None=None, cost_summary: SessionCostSummary | None=None) -> EvalAssertionResult
WorkspaceFileContains.failed(message: str, *, metadata: dict[str, Any] | None=None, cost_summary: SessionCostSummary | None=None) -> EvalAssertionResult
WorkspaceFileContains.unavailable(message: str, *, metadata: dict[str, Any] | None=None, cost_summary: SessionCostSummary | None=None) -> EvalAssertionResult
WorkspaceFileContains.error(message: str, *, metadata: dict[str, Any] | None=None) -> EvalAssertionResult
WorkspaceFileContains.score_result(score: float, *, threshold: float=1.0, message: str='', metadata: dict[str, Any] | None=None) -> EvalAssertionResult
WorkspaceFileContains.__init__(path: str, text: str, *, encoding: str='utf-8') -> None

Release source · Runtime guarantees · Capability guides

from cayu.evals import WorkspaceFileExists

Assert a path is present in the workspace when the case finishes.

This means “present now”, not “this case created it”: cases in a suite share the app’s workspace unless the caller registers an environment factory (fresh workspace per case), so a file left by an earlier case will satisfy this. See docs/evals.md “Workspace isolation”.

Bases: EvalAssertion.

WorkspaceFileExists.name() -> str
WorkspaceFileExists.assertion_revision() -> str | None

Stable definition revision carried by results when one exists.

WorkspaceFileExists.evaluates_failed_session() -> bool

Whether a failed root session is assertion evidence instead of a runner error.

WorkspaceFileExists.reads_final_output_only() -> bool

Whether this assertion reads nothing but the run’s final output.

Override to return True only when evaluate reads context.final_output (and, for workflows, the projected structured output) and no events, transcript, usage, children, probes, or memory evidence. Such assertions still score a completed workflow whose child evidence exceeded its capture bounds; undeclared assertions are unavailable on that partial evidence.

async WorkspaceFileExists.evaluate(context: EvalContext) -> EvalAssertionResult
WorkspaceFileExists.required_probes() -> ProbeRequirements
WorkspaceFileExists.passed(message: str='', *, metadata: dict[str, Any] | None=None, cost_summary: SessionCostSummary | None=None) -> EvalAssertionResult
WorkspaceFileExists.failed(message: str, *, metadata: dict[str, Any] | None=None, cost_summary: SessionCostSummary | None=None) -> EvalAssertionResult
WorkspaceFileExists.unavailable(message: str, *, metadata: dict[str, Any] | None=None, cost_summary: SessionCostSummary | None=None) -> EvalAssertionResult
WorkspaceFileExists.error(message: str, *, metadata: dict[str, Any] | None=None) -> EvalAssertionResult
WorkspaceFileExists.score_result(score: float, *, threshold: float=1.0, message: str='', metadata: dict[str, Any] | None=None) -> EvalAssertionResult
WorkspaceFileExists.__init__(path: str) -> None

Release source · Runtime guarantees · Capability guides