Skip to content

Configuration Reference

Complete reference for ATIF adapter configuration options.

The ATIF adapter uses a standardised JobSpec structure:

{
"id": "string",
"provider_id": "atif",
"benchmark_id": "atif_trajectory_default",
"benchmark_index": 0,
"experiment_name": "string",
"model": {
"name": "string",
"url": "string"
},
"callback_url": "string",
"parameters": {
// ATIF-specific configuration
}
}

model configures the judge, not the agent that produced the trajectories. The agent and its model are recorded inside each trajectory file.

ParameterTypeDescriptionExample
idstringUnique job identifier"atif-regression-001"
benchmark_idstringBenchmark identifier"atif_trajectory_default"
experiment_namestringMLflow experiment name; required for durable artifacts"agent-regressions"
model.namestringJudge model name"microsoft-phi-4"
model.urlstringOpenAI-compatible judge endpoint (local mode)"http://localhost:8000/v1"
callback_urlstringSDK callback URL"http://localhost:8081"
ParameterTypeDefaultDescription
trajectory_pathstring/test_dataATIF file or directory, scanned recursively in deterministic order
scoring_modestringautoauto, benchmark, reference, or custom — see Scoring Modes
benchmark_namestringunsetBuilt-in rubric for benchmark mode: swebench-verified, terminal-bench, or humanevalfix
reference_registry_pathstringunsetJSON rubric registry, required in reference mode
reference_rubricstringdefaultRubric name selected from the reference registry
provider_params.rubricobjectunsetInline custom rubric object or YAML/JSON document string, required in custom mode
custom_rubricobjectunsetLegacy inline rubric alias
custom_rubric_pathstringunsetLegacy mounted rubric path alias

Limits protect the job against pathologically large or malformed collections. Collection-wide byte and step budgets are fatal regardless of the invalid-input policy.

ParameterTypeDefaultDescription
max_file_bytesinteger10485760Maximum size of an individual ATIF JSON file
max_trajectory_filesinteger10000Maximum number of JSON files discovered
max_collection_bytesinteger67108864Collection-wide input byte budget, including ignored and invalid files
max_steps_per_trajectoryinteger500Maximum steps per trajectory, including nested subagents
max_total_stepsinteger10000Maximum steps across all accepted roots and embedded descendants
invalid_input_policystringskip_invalidskip_invalid records invalid candidates and continues; fail_fast aborts

Symlink paths and non-regular files are rejected; rubric files follow the same policy.

ParameterTypeDefaultDescription
subagent_aggregationstringflatflat, hierarchical, or separate — see Metrics
max_subagent_depthinteger3Root depth is zero; deeper descendants remain explicitly unscored and make ancestors incomplete
failure_thresholdfloat0.5Scores strictly below this trigger failure categorization
completion_thresholdfloat0.5Aggregate score at or above this marks a trajectory passed
training_thresholdfloatunsetOptional threshold for complete node-level training selections — see Artifacts
partial_result_policystringfail_fastfail_fast or skip_failed_trajectory when a trajectory cannot be scored
ParameterTypeDefaultDescription
concurrency_limitinteger10Maximum trajectories scored concurrently (steps within a trajectory are sequential)
judge_timeout_secondsfloat30Timeout for each judge HTTP attempt
judge_max_attemptsinteger3Maximum attempts per judge request, including the initial attempt (1–10)
judge_initial_backoff_secondsfloat0.5Initial exponential backoff delay for retryable failures
max_judge_requestsintegerunsetOptional job-wide budget on judge HTTP attempts, including derivation, categorization, and retries
job_timeout_secondsfloat3600Deadline for the complete scoring phase; cancels outstanding workers when exceeded
max_context_bytesinteger65536Maximum serialized judge request size; history gets half this budget and drops oldest frames first (minimum 1024)

HTTP 429/5xx and transport timeouts are retried with exponential backoff. Other HTTP failures and invalid score responses are not retried. When the scoring deadline is reached, outstanding workers are cancelled and the client closed.

The adapter sends judge requests to the runtime sidecar (http://localhost:8080 by default, overridden by EVALHUB_JUDGE_PROXY_URL). With model.auth configured it sends only a redacted Bearer placeholder; the sidecar owns upstream authentication and TLS. The adapter does not read cluster credential files.

In local mode the adapter calls model.url directly:

  • model.auth.secret_ref must be an absolute file:/// directory URL
  • The directory must contain an api-key file; an optional ca_cert file enables custom CA verification
  • The directory must be a regular directory with no symlinks anywhere in its path
{
"model": {
"name": "microsoft-phi-4",
"url": "https://judge.internal.example.com/v1",
"auth": {
"secret_ref": "file:///mnt/judge-auth"
}
}
}
Terminal window
# Prepare the auth directory (example)
install -d -m 750 ~/.config/atif-judge-auth
install -m 640 /path/to/key ~/.config/atif-judge-auth/api-key

trajectory_path accepts a single JSON file or a directory scanned recursively in deterministic order:

  • trajectory.json and *.atif.json are explicit candidates
  • Other JSON objects with ATIF-like fields (schema_version, atif_schema_version, agent, or steps) are also candidates
  • Unrelated JSON in collections is ignored; malformed JSON is recorded as invalid rather than guessed to be unrelated

Schema versions ATIF-v1.0 through ATIF-v1.8 are validated by the pinned SDK. schema_version must be explicit, including in embedded nodes; atif_schema_version is accepted as a root alias only if it agrees with the canonical field. Sequential step IDs, embedded references, and trajectory identity uniqueness are SDK-validated; duplicate non-null IDs across accepted trees are invalid.

Producer trajectory IDs are preserved. ID-less roots receive a stable source-qualified SHA-256 evaluation ID. Each node records the original producer ID, input SHA-256, local path, source URI, and a JSON Pointer selector (empty for a root, e.g. /subagent_trajectories/0 for an embedded child).

The adapter reads runtime settings from environment variables:

VariableDescriptionRequiredDefault
EVALHUB_MODEExecution mode (k8s or local)Nok8s
EVALHUB_JOB_SPEC_PATHPath to job spec JSONYes (local mode)/meta/job.json (k8s)
EVALHUB_JUDGE_PROXY_URLSidecar judge proxy URL (k8s)Nohttp://localhost:8080
TEST_DATA_S3_BUCKETS3 bucket for source URI reconstructionNounset
TEST_DATA_S3_KEYS3 prefix for source URI reconstructionNounset
{
"id": "atif-regression-001",
"provider_id": "atif",
"benchmark_id": "atif_trajectory_default",
"benchmark_index": 0,
"experiment_name": "agent-regressions",
"model": {
"name": "microsoft-phi-4",
"url": "https://judge.internal.example.com/v1",
"auth": {
"secret_ref": "file:///mnt/judge-auth"
}
},
"callback_url": "http://localhost:8081",
"parameters": {
"trajectory_path": "/test_data",
"scoring_mode": "auto",
"concurrency_limit": 2,
"max_judge_requests": 24,
"judge_timeout_seconds": 60,
"partial_result_policy": "skip_failed_trajectory",
"training_threshold": 0.8
}
}