Evaluation context
Explain the science to every agent
Declare what each quantity means, its units, and which direction is better. Agents use the same rules when proposing, implementing, and interpreting models.
Reference · v1.1.0
Define what scientific progress means before running experiments. The optional evaluation: section in task.yaml describes your metrics, requirements, and trade-offs. Every research agent reads the same rules.
Source of truth: the v1.1.0 evaluation guide (opens in a new tab)
Keep three decisions separate: Health checks whether a result is valid, constraints check whether it meets your requirements, and selection ranks the eligible results.
Evaluation context
Declare what each quantity means, its units, and which direction is better. Agents use the same rules when proposing, implementing, and interpreting models.
Weighted formula
Combine normalized metrics or measurements using positive weights and explicit bounds. For example, balance signal recovery with model size. The framework computes the score.
Hard constraints
Require accuracy of at least 90% before comparing speed. A candidate that violates a requirement cannot become the best result; a missing or non-finite required value also fails.
Candidate measurements
Measure trainable or total parameters, model bytes, and inference latency. Latency uses a declared batch shape, warm-up, and repeated forward passes on the training device; it excludes data loading.
Rubric components
Give agents explicit criteria for interpretability, scientific evidence, or practical usefulness. These guide their work; they do not automatically produce numerical scores for trained models.
Rubric balancing
Tell agents, for example, to favor a simpler model when accuracy is similar. Numerical selection still uses your declared primary metric or weighted formula; the rubric adds no separate judging calls.
These capabilities are available in SIDERIUS v1.1.0. See the evaluation guide (opens in a new tab) for declarations and examples.
Formulas, constraints, and candidate measurements use native task-owned scoring. Measurement failures make a candidate unscoreable. Rubric guidance is separate from automated model judging and the paper’s offline behavior review.
For example: require balanced accuracy of at least 90%, then prefer a faster model. Health checks reject invalid outputs; constraints enforce the accuracy requirement; selection ranks the remaining candidates.
If a single metric is enough, leave evaluation: out. Candidates are ranked by the main metric in its declared direction. Otherwise, ask your coding agent to describe the quantities and implement the evaluation contract:
My scientific goal is [goal]. Define a primary metric, useful secondary metrics, validity checks, and any non-negotiable requirements. Use the SIDERIUS v1.1.0 evaluation guide to implement them. Explain what ranks candidates automatically and what is guidance for the agents. Check the task declaration before running experiments.This example assumes both metrics are declared by the task. The ranges describe the quantities; they do not enforce constraints or normalize a formula.
evaluation:
components:
- kind: metric
id: balanced_accuracy # your name for this component
metric: balanced_accuracy # a declared metric id
meaning: Mean per-class recall on validation.csv; each species counts equally.
units: fraction (0 to 1), mean over classes
range: {lower: 0.0, upper: 1.0} # descriptive only
- kind: metric
id: worst_class_error
metric: worst_class_error # declared under secondary_metrics:
meaning: Error rate on the hardest species.
units: fraction (0 to 1) of the hardest class's rows
range: {lower: 0.0, upper: 1.0}
selection:
kind: primary # still rank by the main metricFor weighted formulas, constraints, measurement declarations, and rubric examples, follow the versioned evaluation guide (opens in a new tab). Formula ranking uses normalized utility, not a raw sum of incompatible units.
Ask your agent to save this script outside the SIDERIUS checkout as check_evaluation.py, then run it from the checkout with the task manifest path. It checks composition and runtime support without training or calling an LLM. Success ends with Launch check: admitted; this checks the declaration, not the scientific quality of a result.
import json
import sys
from agent.evaluation_context import build_evaluation_prompt_context
from agent.prompt_templates.evaluation import render_evaluation_spec
from workflows.evaluation_composition import require_evaluation_runtime
from workflows.task_composition import TaskCompositionError, compose_run_task_bindings
try:
task = compose_run_task_bindings(sys.argv[1])
except TaskCompositionError as error:
sys.exit(f"Composition refused: {error}")
if task.evaluation is None:
print("No evaluation section: candidates are ranked by the main metric.")
sys.exit(0)
context = build_evaluation_prompt_context(task.evaluation, task.metric.spec, task.judge_task)
print(render_evaluation_spec(context))
print(json.dumps(task.evaluation.inspect(), indent=2))
try:
require_evaluation_runtime(task.evaluation)
except TaskCompositionError as error:
sys.exit(f"Launch check: {error}")
print("Launch check: admitted").venv/bin/python /absolute/project/check_evaluation.py /absolute/project/tasks/iris/task.yaml