Skip to main content
Are you a large language model? This page is available as raw markdown at /autoresearch/runs-and-results.md. The full docset is at /llms-full.md and the index is at /llms.md.

Runs and results

A run ID identifies a remote experiment. Exiting Python, closing a notebook or closing the browser does not cancel it. Reconnect with the same C3 account:

from c3 import C3

with C3() as client:
run = client.research.get("ar_your_run_id")
print(run.status, run.url)
print(run.progress())
print(run.results())
print(run.configuration())

Understand the run page

Open Autoresearch in the dashboard sidebar to find runs. Ordinary compute jobs have their own Jobs section. Each research evaluation remains accessible through its parent run's private compute link.

The run page identifies the engine and version, selected language model and inference service, compute provider, hardware, and configured limits. A selected provider records the submission choice. With no provider selected, C3 routes the job automatically; inspect the compute job for its actual placement.

The engine adapter supplies the overview diagram, which marks the current state. Open Run settings to inspect requested and effective engine/C3 configuration and the adapter version. Detailed steps show measured outcomes. The completed evaluation count excludes generation and scoring steps, and the OpenEvolve best score uses combined_score, where higher is better. Improvement is the absolute difference from a valid baseline. An invalid baseline has no score, even if later candidates succeed.

Program logs show setup messages and the program's stdout and stderr. Host diagnostics belong to verbose debugging streams rather than the normal output. Artifacts use authenticated access; sharing a research URL does not grant access to its run, child jobs or files.

Collect results

run.results() returns a result that can be null. On success it contains the selected evaluation, program code, metrics and artifact/checkpoint references. Use the page's result download or follow an evaluation to download its files.

When a run fails, is cancelled or loses its controller, completed step metrics and evaluation artifacts remain available. A final best-program bundle is not guaranteed for such a run. The page distinguishes partial results from a completed best result and retains the last reported state of unfinished work.

Wait or cancel

run.wait(timeout=300) waits locally for up to five minutes. A local TimeoutError ends that wait and does not stop remote work. The campaign's own limits are independent. You can instead inspect progress whenever convenient.

To stop the campaign explicitly:

with C3() as client:
run = client.research.get("ar_your_run_id")
run.cancel()
print(run.refresh().status)

The page also offers cancellation with confirmation. Cancellation prevents new work and stops active child jobs. Repeated cancellation is safe. Previously incurred charges remain, and accounting can settle after the terminal state appears. Unused reservations are released through the normal billing process.

Handle failures

An invalid candidate can fail its evaluation while the engine continues its search. A campaign deadline stops further work and cancels active evaluations. Credit or campaign-budget exhaustion can prevent the next evaluation or model call from being admitted.

The current pilot does not automatically resume an engine after controller loss. C3 detects a stale heartbeat, marks the run interrupted and cancels its active compute. Detection uses a three-minute stale-heartbeat threshold plus scheduled reconciliation. Completed results remain readable. Reconnecting or replaying the original submission does not launch the engine again.

Create a new submission with a new idempotency key only when you want a new campaign. Contact your pilot operator if reservations remain unresolved; another submission does not repair an uncertain charge.